深入剖析Isolate-user-VLAN工作原理

    自从发布了将于明年3月份出版的目录后,许多读者朋友就迫不及待地希望我发布一些试读内容。为此,从本篇开始,以后将不定期发布一些试读内容,以帮助大家对本书内容的基本了解。

    本篇介绍的是华为/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 作如下配置
配置Ethernet2/0/4 端口为Hybrid 端口,缺省VLAN ID 3 ,该端口同时属于VLAN 3 VLAN 5 ,对VLAN 3 VLAN 5 的报文采取去标记操作;
配置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 标记)。
 

20-2  isolate-user- 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 标记方式通过。

20.1.3  Isolate-user-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 2VLAN 3VLAN 5的报文以untagged方式通过
Eth1/2
Hybrid
2
 
Secondary VLAN
允许VLAN 2VLAN 5的报文以untagged方式通过
Eth1/3
Hybrid
3
 
Secondary VLAN
允许VLAN 3VLAN 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 同时发送出去。
20-3  同步前的MAC地址转发表
目的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 地址和对应的出端口),提高了报文发送效率。
20-4   同步后的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 之间的报文交互。

你可能感兴趣的:(深入剖析Isolate-user-VLAN工作原理)