自从发布了将于明年3月份出版的<Cisco/H3C交换机高级配置与管理技术手册>目录后,许多读者朋友就迫不及待地希望我发布一些试读内容。为此,从本篇开始,以后将不定期发布一些试读内容,以帮助大家对本书内容的基本了解。
本篇介绍的是华为/H3C交换机隔离用户VLAN工作原理的剖析,这也是许多读者朋友一直弄不明白的。通过本文的介绍,相信你对这类特殊的VLAN工作原理有一个比较基本的了解。
20.1.2 Isolate-user-VLAN工作原理
Isolate-user-VLAN
是利用Hybrid
端口(这是华为和H3C
设备上特有的端口类型)允许对多个VLAN
的报文去除VLAN
标记的特性,通过对MAC
地址表项在各VLAN
的MAC
地址表间进行复制的方法,实现对网络中VLAN
资源的节约。
通过设定端口的Hybrid
属性,可以使所有Secondary VLAN
中包含的端口和交换机的上行端口都属于isolate-user-vlan
。同时在上行端口处设定在转发所有Secondary VLAN
的报文时都去掉VLAN
标记。这样对上层交换机来说,从下层设备收到的报文全部是不携带VLAN
标记的,所以不必关心下层的VLAN
配置,可以在本地重新规划VLAN
结构,节约了VLAN
资源。
图20-2
是Isolate-user-VLAN
的典型应用,Isolate-user-VALN
为VLAN 5
,Secondary VLAN
为VLAN 3
。
下面以该图为例说明isolate-user-VLAN
的报文传输过程。首先
对Switch B
作如下配置
:
l
配置Ethernet2/0/4
端口为Hybrid
端口,缺省VLAN ID
为3
,该端口同时属于VLAN 3
和VLAN 5
,对VLAN 3
和VLAN 5
的报文采取去标记操作;
l
配置Ethernet2/0/3
端口为Hybrid
端口,缺省VLAN ID
为5
,该端口同时属于VLAN 3
和VLAN 5
,对VLAN 3
和VLAN 5
的报文采取去标记操作。
为保证Switch A
下发的报文在Switch B
上能够按下层设备的VLAN
设置进行转发,需要在Switch A
上配置与Switch B
相连的端口为Hybrid
类型,使其在向Switch B
转发报文时进行去标记操作(也就是不打VLAN
标记)。
下面我们来分析一下连接在Switch B
的PC
用户
向Switch A
发送报文的传输过程
。
(1
)当PC
发出的报文到达Switch B
的Ethernet2/0/4
端口后,因为是不带VLAN
标记的,所以在Ethernet2/0/4 Hybrid
端口会自动打上该端口的缺省VLAN ID
,即VLAN 3
的VLAN
标记3
。
(2
)Switch B
从收到的报文中学习到PC
的MAC
地址,并添加到VLAN 3
的MAC
地址转发表中,同时复制该表项到VLAN 5
的MAC
地址转发表中。
(3
)由于Switch B
的Ethernet2/0/3 Hybrid
端口也属于VLAN 3
,所以原来打上VLAN 3
标记的报文可以从此端口发送,但同时会通过
port hybrid vlan untagged
命令
去VLAN
标记
命令
配置去掉报文中的VLAN 3
标记(如果不执行此命令,则报文仍是会带有VLAN 3
标记的),这样一来到达Switch A
的报文是不带有VLAN
标记的。
下面是Switch B
的PC
用户
接收来自Switch A
报文的传输过程
。
(1
)当Switch A
从连接Switch B
的Hybrid
端口发出的报文(也事先经过
port hybrid vlan untagged
命令
配置,该报文不携带VLAN
标记)到达Switch B
的端口Ethernet2/0/3
时,因为是不带VLAN
标记的,所以在Ethernet2/0/3
端口上会自动打上其缺省VLAN ID
,即VLAN 5
的标记。
(2
)根据前面PC
向Switch A
发送报文传输过程中复制的VLAN 5
的MAC
地址转发表,系统可以找到该报文的出端口为Switch B
的Ethernet2/0/4
。
(3
)由于Switch B
的Ethernet2/0/4
又加入了VLAN 5
,因此前面打上了VLAN 5
标记的报文可以正常转发VLAN 5
的报文,然后同样通过
port hybrid vlan untagged
命令的
去标记配置将报文以不带VLAN
标记的方式转发到到目的PC
。
从以上两个相反方面的报文传输过程可以看出(有关Hybrid
端口报文收发规则请参见本书第16
章16.1.2
节),在isolate-user-vlan
中最关键的就是两种操作:一是在一些Hybrid
端口上要通过
port hybrid vlan untagged
命令
配置发送报文时去VLAN
标记操作,二是Secondary VLAN
和isolate-user-vlan
之间的MAC
地址复制,具体将在下面两小节中介绍。这需要在本端设备
进行配置同步和
MAC
地址同步处理
,在
上行设备需要进行如下配置:
①
创建
VLAN
,
VLAN ID
等于
Isolate-user-VLAN
的
VLAN ID
;
②
配置入端口参数,将端口类型设置为
Hybrid
,将端口缺省
VLAN
值设置为
Isolate-user-VLAN ID
,配置端口允许缺省
VLAN
的报文以不带
VLAN
标记方式通过。
在上节就提到了,配置Isolate-user-VLAN
时需要在本端设备上配置“
配置同步”和“
MAC
地址同步”。本节先介绍Isolate-user-VLAN
的配置同步。配置Isolate-user-VLAN
功能后,系统会自动对同时包含Isolate-user-VLAN
和Secondary VLAN
的端口进行如下配置同步:
l
对于上行端口,会自动将端口类型修改为Hybrid
,并允许来自Secondary VLAN
的报文以不打VLAN
标记方式通过(相当于自动将这个上行
Hybrid
端口上加入到了所有Secondary VLAN
中
)。而上行设备的入端口(就是与这个上行Hybrid
端口相连的对端设备端口)已通过手动配置将端口的缺省VLAN
值设置为Isolate-user-VLAN ID
,根据Hybird
端口发送报文规则可知,在上行设备收到这样的不带VLAN
标记的报文后,均认为这些报文来自Isolate-user-VLAN
,并给它们打开Isolate-user-VLAN ID
的VLAN
标记,从而屏蔽了Secondary VLAN
信息。
l
对于下行端口,也会自动将端口类型修改为Hybrid
,并允许来自Isolate-user-VLAN
的报文以不打VLAN
标记方式通过(相当于自动将这些下行
Hybrid
端口上加入到了Isolate-user-VLAN
中
)。
如图20-3
所示的网络中,端口缺省都为Access
端口,交换机的Ethernet1/2
端口属于VLAN 2
,
Ethernet1/3
端口属于VLAN 3
,
Ethernet1/5
端口属于VLAN 5
,它们的相关属性如表20-1
所示。然后配置VLAN 5
为Isolate-user-VLAN
,VLAN 2
、VLAN 3
均为Secondary VLAN
。配置同步后,端口的相关属性改变了,如表20-2
所示。
表20-1
配置同步前端口的相关属性
端口
|
类型
|
端口缺省VLAN
|
允许通过的VLAN
|
Eth1/5
|
Access
|
5
|
只允许VLAN 5的报文通过
|
Eth1/2
|
Access
|
2
|
只允许VLAN 2的报文通过
|
Eth1/3
|
Access
|
3
|
只允许VLAN 3的报文通过
|
表20-2
配置同步后端口的相关属性
端口
|
类型
|
端口缺省VLAN
|
|
Isolate-user-VLAN角色
|
允许通过的VLAN
|
Eth1/5
|
Hybrid
|
5
|
|
Isolate-user-VLAN
|
允许VLAN 2、VLAN 3、VLAN 5的报文以untagged方式通过
|
Eth1/2
|
Hybrid
|
2
|
|
Secondary VLAN
|
允许VLAN 2、VLAN 5的报文以untagged方式通过
|
Eth1/3
|
Hybrid
|
3
|
|
Secondary VLAN
|
允许VLAN 3、VLAN 5的报文以untagged方式通过
|
图20-3 Isolate-user-VLAN配置同步示意图
通过以上的分析,可以得出图20-3
所示的示例中,在配置好Isolate-user-VLAN
方案后,在VLAN 5
的端口成员包括了Isolate-user-VLAN
以及它所映射的Secondary VLAN 2
和Secondary VLAN 3
中的所有端口,即Ethernet1/2
、Ethernet1/3
和Ethernet1/5
这三个端口;Secondary VLAN 2
中的端口成员包括Ethernet1/2
和Ethernet1/5
这两个端口;Secondary VLAN 3
中的端口成员包括Ethernet1/3
和Ethernet1/5
这两个端口。而且这些端口均自动配置成了Hybird
类型,以不带VLAN
标记方式发送报文,这些都无需手动配置,可通过
display isolate-user-vlan
命令查看相应Isolate-user-VLAN
配置得到验证。这些将在本章后面介绍的具体的Isolate-user-VLAN
配置示例中会得到体现。
20.1.4 Isolate-user-VLAN MAC地址同步
通过上节介绍的Isolate-user-VLAN
配置同步,来自Secondary VLAN
的报文能以不打VLAN
标记方式从上行端口发送出去,来自Isolate-user-VLAN
的报文也能以不打VLAN
标记方式从下行端口发送出去。这些报文是如何找到相应的出端口的呢?那就是通过MAC
地址学习。
在没有配置Isolate-user-VLAN
前,交换机是
通过MAC
地址学习功能来学习目的MAC
地址的。在如图20-3
所示网络中
交换机
会生成并维护一张MAC
地址表(如表20-3
所示)。如果上行的Device
设备
给Host 2
发送报文(源MAC
地址
为mac_a
,目的MAC
为mac_2
);
交换机
会为报文打开该端口的缺省VLAN ID
的VLAN
标记
,即5
;然后以mac_2+VLAN 5
为条件去查询MAC
地址表。由于找不到相应的表项,该报文会在VLAN 5
内广播,从Eth1/2
、Eth1/3
同时发送出去。
目的MAC地址
|
对应VLAN
|
对应出端口
|
mac_2
|
2
|
Eth1/2
|
mac_3
|
3
|
Eth1/3
|
mac_a
|
5
|
Eth1/5
|
同理,每次上行和下行的报文都需要广播才能到达目的地。当Secondary VLAN
和Isolate-user-VLAN
包含的端口较多时,这样的处理方式会占用大量的带宽资源,而且不安全(广播报文容易被截获和侦听)。通过Isolate-user-VLAN
的MAC
地址同步机制可以解决这个问题。Isolate-user-VLAN
的MAC
地址同步机制如下(是一种相互复制关系):
l Secondary VLAN
到Isolate-user-VLAN
的同步,即下行端口在Secondary VLAN
内学习到的动态MAC
地址都会自动同步复制到Isolate-user-VLAN
内。
l Isolate-user-VLAN
到Secondary VLAN
的同步,即上行端口在Isolate-user-VLAN
学习到的动态MAC
地址会自动同步复制到所有的Secondary VLAN
内。
当Isolate-user-VLAN
下面配置了很多Secondary VLAN
时,MAC
地址同步复制后可能会导致MAC
地址表过于庞大,从而影响设备的转发性能。同时考虑到用户的下行流量要远远大于上行流量,下行流量需要进行单播,上行流量可以进行广播,所以Secondary VLAN
到Isolate-user-VLAN
的同步复制在所有产品中都支持,而Isolate-user-VLAN
到Secondary VLAN
的同步复制仅部分产品(主要是一些中高端交换机系列)支持。
在如图20-3
所示网络中,MAC
地址同步后各VLAN
中的MAC
地址表项如表20-4
所示。从中可以看出,Isolate-user-VLAN 5
中不仅有自己的mac_a
表项,还添加了Secondary VLAN 2
中的mac_2
和Secondary VLAN 3
中的mac_3
这两个表项,包括了整个Isolate-user-VLAN
中的所有MAC
地址表项
;在Secondary VLAN 2
中也不仅有自己的mac_2
表项,还添加了Isolate-user-VLAN 5
中的mac_a
表项;在Secondary VLAN 3
中也不仅有自己的mac_3
表项,也添加了Isolate-user-VLAN 5
中的mac_a
表项。每个Secondary VLAN
中除了包括自己的MAC
地址表项,还将包括所映射的Isolate-user-VLAN
中的MAC
地址表项。这样一来,在整个Isolate-user-VLAN
中不会再需要进行MAC
地址广播寻址了,可以直接从自己的MAC
地址表中找到对应的MAC
地址表项(包括目的MAC
地址和对应的出端口),提高了报文发送效率。
目的MAC地址
|
对应VLAN
|
对应出端口
|
mac_2
|
2
|
Eth1/2
|
mac_2
|
5
|
Eth1/2
|
mac_3
|
3
|
Eth1/3
|
mac_3
|
5
|
Eth1/3
|
mac_a
|
5
|
Eth1/5
|
mac_a
|
2
|
Eth1/5
|
mac_a
|
3
|
Eth1/5
|
下面再通过图20-3
中Host 2
的报文流程来阐述Isolate-user-VLAN
的实现机制。
(1
)Host 2
第一次发出单播上行报文,报文为
不打VLAN
标记的
,源MAC
地址为mac_2
,目的MAC
地址为mac_a
。
(2
)Switch
通过下行端口Ethernet1/2
收到报文后会给报文打上端口缺省VLAN
的标记2
(因为Ethernet1/2
是属于VLAN 2
的Access
端口
)
,并学习报文中的源MAC
地址(mac_2
)及相关信息,形成MAC
地址表项(mac_2+VLAN2+Eth1/2
)(此时的mac_2
是作为该端口将来转发报文的目的MAC
地址
,VLAN 2
表示MAC_2
主机在VLAN 2
中,出接口为Ethernet1/2
)。
(3
)根据MAC
地址同步原则,该MAC
地址同时同步学习到VLAN 5
内,设备同时记录MAC
地址表项(mac_2+VLAN5+Eth1/2
)。
(4
)由于Switch
当前没有报文中目的MAC
地址mac_a
的MAC
表项,因此设备会在VLAN 2
内广播该报文。
(5
)由于配置了配置同步功能,交换机的上行Ethernet1/5
端口允许VLAN 2
的报文以不打VLAN
标记方式通过,所以报文去掉VLAN
标记后通过Ethernet1/5
发送出去。
(6
)Device
收到报文后,比较发现自己的MAC
地址正是广播报文中的目的mac_a
,于是进行响应。交换机通过其上行端口Ethernet1/5
收到响应报文,给报文打上该端口缺省VLAN
的标记5
,并学习报文中的源MAC
地址,记录MAC
地址表项(mac_a+VLAN5+Eth1/5
)。通过MAC
地址同步功能,又在两个Secondary VLAN
中生成两条MAC
地址表项(mac_a+VLAN2+Eth1/5
)和(mac_a+VLAN3+Eth1/5
)。
(8
)Switch
以“mac_2+VLAN 5
”为条件(因为原来的广播报文中的源MAC
地址为mac_a
)去查询MAC
地址表,找到出接口Ethernet1/2
,并将报文去VLAN
标记后发送给Host 2
。这样就实现了Host 2
和Device
之间的报文交互。
本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/715642如需转载请自行联系原作者
茶乡浪子