分类:
2012-02-09 22:56:24
原文地址: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地址转发表
目的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地址转发表
目的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)。
(7)Switch以“mac_2+VLAN 5”为条件(因为原来的广播报文中的源MAC地址为mac_a)去查询MAC地址表,找到出接口Ethernet1/2,并将报文去VLAN标记后发送给Host 2。这样就实现了Host 2和Device之间的报文交互。