一直困惑于
vlan
的
link
问题,
access link
还稍微可以理解,而
trunk link
和
hybrid link
怎么让
untagged frame
通过,我却一直很迷惑, 终于在 老师的指点下,知道了部分原理(首先得 谢谢 老师)
废话少说,切入正题吧
首先
Vlan
的
link
的三种类型的概念(
h3c
分
3
种,
cisco
就
access
和
trunk link
,但是原理差不多)
|
允许传输的
tagged frame
数据和
untagged frame
数据
|
发送数据
frame
的处理
|
接受数据
frame
的处理
|
Access link
|
1
个
vlan
的
untagged
数据
frame
|
删除
tag
发送
|
根据端口的
pvid
增加
tag
|
Trunk link
|
1
个或多个
vlan
的
tagged
数据
frame
1
个
vlan
(
pvid
)的
untagged
数据
frame
|
如果
vlan id
在
tagged
中,保留
tag
发送,如果
vlan id
等于
pvid
,删除
tag
发送
|
如果是
tagged
数据
Frame
,保留
tag
;
如果是
untagged
数据
Frame
,根据端口的
pvid
增加
tag
|
Hybrid link
|
1
个或多个
vlan
的
tagged
数据
frame
1
个或多个
vlan
的
untagged
数据
frame
|
如果
vlan id
在
tagged list
中,保留
tag
发送;
如果
vlan id
在
untagged list
中,删除
tag
后发送
|
如果是
tagged data frame
,保留
tag
;
如果是
untagged data
Frame
,根据端口的
pvid
增加
tag
|
Access
是连接
host
与
switch
的
link
(一般情况啊),主机是不需要知道
802
。
1q
的
tag
的,所以
access link
在接收
data frame
时会根据
switch
的该端口属于哪个
vlan
(
pvid=port vlan id
),
增加上
tag
,将
802
。
3data frame encapsulation
(封装)成
802
。
1q
的
data frame
然后传播。
发送时一般是
switch
查看自己的
mac
地址表,明确从哪个端口传播,而
host
是不知道
dot1q
的,所以将
tag
删除,
encapsulation
成
802
。
3data frame
传播到
host
。(这是我的个人理解)
我对
trunk link
最困惑的地方就是:允许
1
个
vlan
(
pvid
)的
untagged
数据
frame
传播,每个
access link
都会打上
vlan
的
port id
,那里来的
untagged
数据
frame
?
其实问题很简单(在老师的帮助下),问题就出在
trunk link
两端属于的
vlan id
上(这个是
h3c
概念,
cisco
可是说
trunk link
的
port
不属于任何
vlan
啊)
大家想必都知道
Cisco
中的这条命令:
switchport trunk native vlan [id]
H 3c
中的这条命令:
port trunk pvid vlan [vlan-id]
------
这两条命令都是修改
trunk
端口的缺省
vlan-id
值的
下面将用实验来验证:
图一
3
台
switch
之间是
trunk link
,如下:
先是
switch0
的
Switch0>enable
Switch0# configure terminal
Switch0
(
config
)
# vlan 10
Switch0 (config-vlan)# vlan 20
Switch0(config)# interface fa 0/1
Switch0(config-if)# switchport mode trunk
Switch0(config-if)#int fa 0/23
Switch0(config-if)#switchport mode access
Switch0(config-if)#switchport access vlan 10
Switch0(config-if)# int fa 0/24
Switch0(config-if)#switchport mode access
Switch0(config-if)#switchport access vlan 20
Switch1
的配置文件如下:
Building configuration...
Current configuration : 1106 bytes
!
version 12.1
no service password-encryption
!
hostname Switch
!
!
!
interface FastEthernet0/1
switchport mode trunk
!
interface FastEthernet0/2
switchport trunk native vlan 10
switchport mode trunk
!
……
!
interface FastEthernet0/23
switchport access vlan 10
switchport mode access
!
interface FastEthernet0/24
switchport access vlan 30
switchport mode access
!
interface GigabitEthernet1/1
!
interface GigabitEthernet1/2
!
interface Vlan1
no ip address
shutdown
!
line con 0
!
line vty 0 4
login
line vty 5 15
login
!
!
end
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/3, Fa0/4, Fa0/5, Fa0/6
Fa0/7, Fa0/8, Fa0/9, Fa0/10
Fa0/11, Fa0/12, Fa0/13, Fa0/14
Fa0/15, Fa0/16, Fa0/17, Fa0/18
Fa0/19, Fa0/20, Fa0/21, Fa0/22
Gig1/1, Gig1/2
10 VLAN0010 active Fa0/23
20 VLAN0020 active
30 VLAN0030 active Fa0/24
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
switch2
的配置文件如下:
Building configuration...
Current configuration : 1106 bytes
!
version 12.1
no service password-encryption
!
hostname Switch
!
!
!
interface FastEthernet0/1
switchport mode trunk
!
interface FastEthernet0/2
switchport trunk native vlan 10
switchport mode trunk
!
…..
!
interface FastEthernet0/22
switchport access vlan 10
switchport mode access
!
interface FastEthernet0/23
switchport access vlan 10
switchport mode access
!
interface FastEthernet0/24
switchport access vlan 30
switchport mode access
!
interface GigabitEthernet1/1
!
interface GigabitEthernet1/2
!
interface Vlan1
no ip address
shutdown
!
line con 0
!
line vty 0 4
login
line vty 5 15
login
!
!
End
Switch0
中的
23port
,
switch1
中的
23port
,
switch2
中的
22port
都属于
vlan10
,另外我将
switch1
与
switch2
的
trunk link
之间的缺省端口修改成
vlan10
的了。
现在,所有的
switch
的
mac
地址都已经学习完全,
pc0
要访问
pc6
,(看图一),要经过
2
条
access link
,和
2
条
trunk link
,过程是:
1
、
Switch0
的
23port
接收
pc0
的
802
。
3
的
data frame;
2
、
switch0
查看自己的
mac
地址表,发现从
fa0/1port
发送
data frame
3
、
switch0
的
fa0/1port
查看
data frame
,优先匹配自己的
pvid
,发现不匹配,不做任何改变传播
4
、
switch1
的
fa0/1port
接收到该
data frame
,优先匹配自己的
pvid
,发现不匹配,不做任何改变
5
、
switch1
查看自己的
mac
地址表,发现从
fa0/2port
发送
data frame
6
、
switch1
的
fa0/2port
查看
data frame
,优先匹配自己的
pvid
,发现匹配自己
pvid
(这里
pvid=10
),删除
tagged
传播(这里就是
如果
vlan id
等于
pvid
,删除
tag
发送这句话的意思
),这里就不是
dot1q frame
了而是
802
。
3frame
。
7
、
switch2
的
fa0/2 port
接收到
untagged frame
,解封后发现是
untagged frame
,为其增加自己的
pvid
(
如果是
untagged
数据
Frame
,根据端口的
pvid
增加
tag
,又成为
dot1q frame
)
8
、
switch2
查看自己的
mac
地址表,发现从
fa0/22 port
发送。
9
、
fa0/22 port
删除
tagged
后发送到
pc6
单方面的数据传输完毕,然后
pc6
在逆过程传输
data frame
给
pc0
。两者通信
success
。
不同
vlan
不需要
vlan
间路由也可以访问
------access link
的秘密
先看图
图二
图二上
switch0
所有
up
的
port
都是
access link
,
pc0
属于
vlan10
,
pc2
属于
vlan20
,
sw1
连
sw0
的
port
,
pc1
,
pc3
都属于
vlan30
。所有的
pc
都是同一网段的。
从
pc0 ping pc1
,
pc3
可以通
从
pc2 ping pc1
,
pc3
也可以通(当然要修改
sw0
与
sw1
连接的
port pvid
,而且
pc0 ping
不通
pc2
)
原因及原理是什么呢,其实就是
access link
的概念,
因为从
sw0
接收到
pc0
的
802
。
3
的
data frame
会为其增加
port pvid
(即
vlan10
),但是从两台交换连接的
port
发送时会删除
tagged
,而对端端口接收到该
untagged frame
(即
802
。
3 frame
),会为其增加自己
port
的
pvid
,然后查看
mac
表,确定从哪个端口删除
tagged
后发送。
Hybrid link
混合型链路不太熟悉,需要设置一个
tagged vlan list
和一个
untagged vlan list
,只能在这里说说概念吧:
从功能上,
hybrid link
是
access link
与
trunk link
的结合体(听起来怎么象是
eigrp
啊,是距离矢量与链路状态的结合体),即能传输
tagged frame
,也能传输
untagged frame
。同样可以设置一个端口的
pvid
。当
switch
从
hybrid link
接收
untagged frame
时,认为都属于
pvid
所指示的
vlan
(这句话都不知道在说什么,什么叫属于
pvid
所指示的
vlan
),在发送
data frame
时,则需要根据
data frame
的
vlan id
去匹配
tagged vlan list
和
untagged vlan list
,如果匹配上
tagged vlan list
,则保留
tag
直接发送(其实说不做任何改变更好)到
hybrid
,如果匹配上
untagged list
则删除
tag
后发送。
友情提示:
图好像看不了,我blog等级低,可以直接下载附件看,另外有什么不正确,欢迎大家指出,谢谢!
友情提示:
图好像看不了,我blog等级低,可以直接下载附件看,另外有什么不正确,欢迎大家指出,谢谢!