深入剖析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地址表项在各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标记)。 图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允许通过的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 2、VLAN 3、VLAN 5的报文以untagged方式通过Eth1/2Hybrid2 Secondary VLAN允许VLAN 2、VLAN 5的报文以untagged方式通过Eth1/3Hybrid3 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同时发送出去。表20-3 同步前的MAC地址转发表目的MAC地址对应VLAN对应出端口mac_22Eth1/2mac_33Eth1/3mac_a5Eth1/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_22Eth1/2mac_25Eth1/2mac_33Eth1/3mac_35Eth1/3mac_a5Eth1/5mac_a2Eth1/5mac_a3Eth1/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之间的报文交互。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮