DSP

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

2019-07-13 18:16发布

 自从发布了将于明年3月份出版的目录后,许多读者朋友就迫不及待地希望我发布一些试读内容。为此,从本篇开始,以后将不定期发布一些试读内容,以帮助大家对本书内容的基本了解。    本篇介绍的是华为/H3C交换机隔离用户VLAN工作原理的剖析,这也是许多读者朋友一直弄不明白的。通过本文的介绍,相信你对这类特殊的VLAN工作原理有一个比较基本的了解。20.1.2 Isolate-user-VLAN工作原理    Isolate-user-VLAN是利用Hybrid端口(这是华为和H3C设备上特有的端口类型)允许对多个VLAN的报文去除VLAN标记的特性,通过对MAC地址表项在各VLANMAC地址表间进行复制的方法,实现对网络中VLAN资源的节约。通过设定端口的Hybrid属性,可以使所有Secondary VLAN中包含的端口和交换机的上行端口都属于isolate-user-vlan。同时在上行端口处设定在转发所有Secondary VLAN的报文时都去掉VLAN标记。这样对上层交换机来说,从下层设备收到的报文全部是不携带VLAN标记的,所以不必关心下层的VLAN配置,可以在本地重新规划VLAN结构,节约了VLAN资源。  图20-2Isolate-user-VLAN的典型应用,Isolate-user-VALNVLAN 5Secondary VLANVLAN 3下面以该图为例说明isolate-user-VLAN的报文传输过程。首先Switch B作如下配置配置Ethernet2/0/4端口为Hybrid端口,缺省VLAN ID3,该端口同时属于VLAN 3VLAN 5,对VLAN 3VLAN 5的报文采取去标记操作;配置Ethernet2/0/3端口为Hybrid端口,缺省VLAN ID5,该端口同时属于VLAN 3VLAN 5,对VLAN 3VLAN 5的报文采取去标记操作。  为保证Switch A下发的报文在Switch B上能够按下层设备的VLAN设置进行转发,需要在Switch A上配置与Switch B相连的端口为Hybrid类型,使其在向Switch B转发报文时进行去标记操作(也就是不打VLAN标记)。 20-2  isolate-user-vlan应用基本拓扑结构   下面我们来分析一下连接在Switch BPC用户Switch A发送报文的传输过程1)当PC发出的报文到达Switch BEthernet2/0/4端口后,因为是不带VLAN标记的,所以在Ethernet2/0/4 Hybrid端口会自动打上该端口的缺省VLAN ID,即VLAN 3VLAN标记32Switch B从收到的报文中学习到PCMAC地址,并添加到VLAN 3MAC地址转发表中,同时复制该表项到VLAN 5MAC地址转发表中。3)由于Switch BEthernet2/0/3 Hybrid端口也属于VLAN 3,所以原来打上VLAN 3标记的报文可以从此端口发送,但同时会通过port hybrid vlan untagged命令VLAN标记命令配置去掉报文中的VLAN 3标记(如果不执行此命令,则报文仍是会带有VLAN 3标记的),这样一来到达Switch A的报文是不带有VLAN标记的。  下面是Switch BPC用户接收来自Switch A报文的传输过程1)当Switch A从连接Switch BHybrid端口发出的报文(也事先经过port hybrid vlan untagged命令配置,该报文不携带VLAN标记)到达Switch B的端口Ethernet2/0/3时,因为是不带VLAN标记的,所以在Ethernet2/0/3端口上会自动打上其缺省VLAN ID,即VLAN 5的标记。2)根据前面PCSwitch A发送报文传输过程中复制的VLAN 5MAC地址转发表,系统可以找到该报文的出端口为Switch BEthernet2/0/43)由于Switch BEthernet2/0/4又加入了VLAN 5,因此前面打上了VLAN 5标记的报文可以正常转发VLAN 5的报文,然后同样通过port hybrid vlan untagged命令的去标记配置将报文以不带VLAN标记的方式转发到到目的PC  从以上两个相反方面的报文传输过程可以看出(有关Hybrid端口报文收发规则请参见本书第1616.1.2节),在isolate-user-vlan中最关键的就是两种操作:一是在一些Hybrid端口上要通过port hybrid vlan untagged命令配置发送报文时去VLAN标记操作,二是Secondary VLANisolate-user-vlan之间的MAC地址复制,具体将在下面两小节中介绍。这需要在本端设备进行配置同步和MAC地址同步处理,在上行设备需要进行如下配置:创建VLANVLAN ID等于Isolate-user-VLANVLAN 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-VLANSecondary VLAN的端口进行如下配置同步:l   对于上行端口,会自动将端口类型修改为Hybrid,并允许来自Secondary VLAN的报文以不打VLAN标记方式通过(相当于自动将这个上行Hybrid端口上加入到了所有Secondary VLAN)。而上行设备的入端口(就是与这个上行Hybrid端口相连的对端设备端口)已通过手动配置将端口的缺省VLAN值设置为Isolate-user-VLAN ID,根据Hybird端口发送报文规则可知,在上行设备收到这样的不带VLAN标记的报文后,均认为这些报文来自Isolate-user-VLAN,并给它们打开Isolate-user-VLAN IDVLAN标记,从而屏蔽了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 5Isolate-user-VLANVLAN 2VLAN 3均为Secondary VLAN。配置同步后,端口的相关属性改变了,如表20-2所示。20-1 配置同步前端口的相关属性端口类型端口缺省VLAN允许通过的VLANEth1/5Access5只允许VLAN 5的报文通过Eth1/2Access2只允许VLAN 2的报文通过Eth1/3Access3只允许VLAN 3的报文通过20-2  配置同步后端口的相关属性端口类型端口缺省VLAN Isolate-user-VLAN角 {MOD}允许通过的VLANEth1/5Hybrid5 Isolate-user-VLAN允许VLAN 2VLAN 3VLAN 5的报文以untagged方式通过Eth1/2Hybrid2 Secondary VLAN允许VLAN 2VLAN 5的报文以untagged方式通过Eth1/3Hybrid3 Secondary VLAN允许VLAN 3VLAN 5的报文以untagged方式通过 图20-3 Isolate-user-VLAN配置同步示意图  通过以上的分析,可以得出图20-3所示的示例中,在配置好Isolate-user-VLAN方案后,在VLAN 5的端口成员包括了Isolate-user-VLAN以及它所映射的Secondary VLAN 2Secondary VLAN 3中的所有端口,即Ethernet1/2Ethernet1/3Ethernet1/5这三个端口;Secondary VLAN 2中的端口成员包括Ethernet1/2Ethernet1/5这两个端口;Secondary VLAN 3中的端口成员包括Ethernet1/3Ethernet1/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,目的MACmac_2);交换机会为报文打开该端口的缺省VLAN IDVLAN标记,即5;然后以mac_2+VLAN 5为条件去查询MAC地址表。由于找不到相应的表项,该报文会在VLAN 5内广播,从Eth1/2Eth1/3同时发送出去。20-3 同步前的MAC地址转发表目的MAC地址对应VLAN对应出端口mac_22Eth1/2mac_33Eth1/3mac_a5Eth1/5  同理,每次上行和下行的报文都需要广播才能到达目的地。当Secondary VLANIsolate-user-VLAN包含的端口较多时,这样的处理方式会占用大量的带宽资源,而且不安全(广播报文容易被截获和侦听)。通过Isolate-user-VLANMAC地址同步机制可以解决这个问题。Isolate-user-VLANMAC地址同步机制如下(是一种相互复制关系):l   Secondary VLANIsolate-user-VLAN的同步,即下行端口在Secondary VLAN内学习到的动态MAC地址都会自动同步复制到Isolate-user-VLAN内。l   Isolate-user-VLANSecondary VLAN的同步,即上行端口在Isolate-user-VLAN学习到的动态MAC地址会自动同步复制到所有的Secondary VLAN内。  当Isolate-user-VLAN下面配置了很多Secondary VLAN时,MAC地址同步复制后可能会导致MAC地址表过于庞大,从而影响设备的转发性能。同时考虑到用户的下行流量要远远大于上行流量,下行流量需要进行单播,上行流量可以进行广播,所以Secondary VLANIsolate-user-VLAN的同步复制在所有产品中都支持,而Isolate-user-VLANSecondary VLAN的同步复制仅部分产品(主要是一些中高端交换机系列)支持。  在如图20-3所示网络中,MAC地址同步后各VLAN中的MAC地址表项如表20-4所示。从中可以看出,Isolate-user-VLAN 5中不仅有自己的mac_a表项,还添加了Secondary VLAN 2中的mac_2Secondary 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_22Eth1/2mac_25Eth1/2mac_33Eth1/3mac_35Eth1/3mac_a5Eth1/5mac_a2Eth1/5mac_a3Eth1/5  下面再通过图20-3Host 2的报文流程来阐述Isolate-user-VLAN的实现机制。1Host 2第一次发出单播上行报文,报文为不打VLAN标记的,源MAC地址为mac_2,目的MAC地址为mac_a2Switch通过下行端口Ethernet1/2收到报文后会给报文打上端口缺省VLAN的标记2(因为Ethernet1/2是属于VLAN 2Access端口,并学习报文中的源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_aMAC表项,因此设备会在VLAN 2内广播该报文。5)由于配置了配置同步功能,交换机的上行Ethernet1/5端口允许VLAN 2的报文以不打VLAN标记方式通过,所以报文去掉VLAN标记后通过Ethernet1/5发送出去。6Device 收到报文后,比较发现自己的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)。8Switch以“mac_2+VLAN 5”为条件(因为原来的广播报文中的源MAC地址为mac_a)去查询MAC地址表,找到出接口Ethernet1/2,并将报文去VLAN标记后发送给Host 2。这样就实现了Host 2Device之间的报文交互。