三层交换机完美地解决了VLAN间的互通,不过还有个问题:网络中VLAN的数量如果很多,那就需要给每个VLAN配置一个SVI接口!

这可不是件轻松的活,如果有1000个VLAN,那你就要弄出1000个SVI接口,配置1000个IP地址作为每个VLAN的网关!!!

我的天呐!

虽然大多数企业网可能没有使用那么多VLAN,但既然有这样的可能,就要有解决办法,总不能到时真的去弄1000个网关吧,会吐血的。

超级虚拟局域网(Super VLAN)就可以解决这个问题!

简单来说,Super VLAN是一个可以给很多VLAN当网关的SVI接口。对,它只是一个虚拟接口,除此之外和别的VLAN没有半点相同的地方:既不能做接口的PVID,Trunk接口也不允许它通过。

它唯一的作用就是:当很多人的网关!

Super VLAN可以有很多Sub VLAN,Sub VLAN和普通VLAN唯一的区别是不能有SVI接口,网关由Super VLAN提供,除此之外和普通VLAN没啥区别。你想啊,如果Sub VLAN也有SVI接口,那还弄Super VLAN干啥呀。




虚拟vlan软件 vlan虚拟网关_svi虚拟vlan


图中,三台PC的网关都是Super VLAN10的SVI接口地址10.1.0.1,也就是说它们仨要访问其他网段,把数据扔给网关就行了,由网关去路由。如果要访问其他交换机的相同VLAN,那就没Super VLAN什么事,人家相同VLAN就互通了,比如Sub VLAN2通过Trunk接口访问其他交换机上的VLAN2。

那这三台PC之间呢?能互通吗?

当然不能啦!虽然它们在同一个网段,但还是在不同的VLAN里,和普通VLAN一样不能通!

那怎么办?VLAN间路由?这三个Sub VLAN可不允许有SVI接口。用路由器?那你PC的网关写啥,如果写路由器的接口地址,那还用Super VLAN干啥;如果写Super VLAN的SVI接口地址,那你弄个路由器干啥。

所以,要让Sub VLAN间互通,得另想办法。

仔细看看三台PC的IP地址和掩码,是不是在同一个网段?只不过,我们用Sub VLAN把它们分开了(为啥要分开?控制广播域呗),它们之间不通的根本原因,是因为你发的ARP请求另两人听不见,不理你。

那这个ARP请求谁能听见?

不错,Super VLAN是所有Sub VLAN的网关,肯定能听见。

既然能听见,就别再装傻了:我们给Super VLAN的SVI接口加个功能,让它承担起各个Sub VLAN间互通的任务。

这个神奇的功能,叫本地代理ARP(Local Proxy ARP)。

本地代理ARP的意思是:Super VLAN的SVI接口如果收到Sub VLAN的ARP Request请求,用自己的MAC回复,然后再去问目标的MAC地址,并把这些信息写进交换机ASIC的MLS条目或邻接关系表中(在上一篇《网络工程师(18):"牛气冲天"的三层交换机》里讨论过)。

比如,PCA访问PCB,PCA在封装报文时发现PCB的IP地址与自己在同一个网段,认为PCB和自己在同一个广播域,发ARP Request直接问PCB的MAC地址,Sender IP写自己的10.1.1.1,Target IP写PCB的10.1.2.1。

其实PCB根本听不见,但Super VLAN的SVI接口可以收到,于是把自己的MAC地址MAC_SV10单播回复给PCA,然后向其他Sub VLAN广播ARP Request,Sender IP写自己的10.1.0.1,Target IP写刚才收到的PCA发的ARP中的Target IP,即10.1.2.1。

PCB收到后,单播回复网关自己的MAC地址。

至此,网关知道了通信双方的IP地址、MAC地址和接口信息,写入ASIC,以后由ASIC执行快速交换。

PCA收到的ARP Reply中的MAC_SV10,以为这个地址就是PCB的,于是用这个地址封装成帧,SMAC为MAC_PCA,DMAC为MAC_SV10,发给了网关(PCA认为是发给了PCB)。

网关收到后,由交换机ASIC重新封装帧,SMAC为MAC_SV10,DMAC为MAC_PCB,由连接PCB的端口发给了PCB。

本地代理ARP其实是个小骗局,欺骗了"单纯"的PCA,让他误以为MAC_SV10是PCB的MAC地址。不过本地代理ARP没有恶意,能很好地解决各个Sub VLAN间的互通问题,是个"善意的欺骗"。

小Q:如果PCA和PCB在同一个Sub VLAN,Super VLAN如何处理?

欢迎大家留言讨论。