在开发DLINK交换机的管理端软件时遇到了Asymmetric VLAN这个概念,google了一下发现好像只有DLINK的交换机上才有这个叫法。研究了一下,了解了 Asymmetric VLAN的应用场景以及封包的走向流程,记录在这里给其他还不太清楚Asymmetric VLAN的朋友们一点参考(需要了解VLAN的基本知识和2层数据包转发原理)。
Asymmetric VLAN翻译成中文就是非对称VLAN,为什么叫做非对称呢?它的适用场景是什么?
考虑以下的场景:PC A和PC B之间需要隔离开,但他们又要共享Server C的资源,并且只有一台2层交换机可用,这种情况下能否达到需求?
显然,PC A和PC B应分属不同的VLAN,这样才能做到隔离,共享Server C则还需要另外划分一个VLAN,并且PC A PC B和Server C都要在这个VLAN中。假设PC A PC B和Server C都是VLAN tag un-aware的,我们做如下的配置:
1)PC A连接交换机的port1,PC B连接交换机的port2,Server C连接交换机的port3
2)划分port1 port3 为VLAN 10, port 2 port3为VLAN 20, port 1 port2 port 3为VLAN 30. 显然port1在VLAN 10中必须是untagged port,port2在VLAN 20中必须是untagged port, port3在VLAN 30中必须是untagged port。 前面说了, PC A PC B和Server C都是不认识带VLAN标签的封包的,如果不是untagged port那根本无法通信。
OK,下面分析封包的走向流程。假设交换机的转发表中还没有学习到任何信息,PC A向Server C发送一个请求,封包进入port1,交换机为这个封包打上pvid = 10,交换机学习到一条vid 10 MAC A port 1的信息记录到转发表中,这个封包被转发到port 3(vlan 10),Server C收到这个请求开始回复,Server C发出的封包进入port 3,封包被交换机打上pvid = 30,但转发表中有关vlan 30的目的MAC和port都找不到,因此交换机将这个回复在vlan 30中广播,这样PC A和PC B都收到了Server C的回复(它们都在vlan 30中)。这样就没有做到PC A和PC B的隔离。从这里就可以看出,如果按照这样的方式是不可能在只有一台2层交换机的情况下做到Server C被共享,且PC A和PC B还能隔离开来的。PC B同Server C的通信过程一样,不再赘述。
VLAN 10的PC A发送给PC B的封包由于MAC地址查找结果是port 3而会转发给port 3,但port 3属于VLAN 20,因此这个封包会被丢弃,PC A与PC B的通信会失败。而当MAC B学习到port 2时,VLAN 20的PC D与 PC C之间也会出现同样的通信问题。这样,虽然不同的主机被隔离在了不同的冲突域和广播域中,但是MAC地址却可能导致同一个VLAN内的通信受到影响。而IVL根据vid的匹配能够解决这个问题。
在实际应用中SVL的应用很少,DLINK交换机为了解决前面提到的共享同一个服务器资源,并做到不同VLAN的隔离,采用了SVL方式来解决,这样只用一台2层的交换机就能够实现,节省了设备的费用,3层交换机和路由器可都是价格不菲的哦。