1. 背景
一般实现VLAN间通信,要不就用三层交换机,要不就是用单臂路由,这两种方式都很烧钱,所以当有VLAN间通信的需求,并且VLAN间通信的数据量不是很大的话,用50块的SOHO路由搭建网络就很实惠了。
我原始的需求是这样的:
有一个N口的二层交换机,需要为其做一个Test Case,这个Test Case的核心环节是需要一个以太网数据包能经过它所有的N个口。
为了达到这个目的,就要把N个口两两分成一个VLAN,分别为VLAN0,VLAN1,VLAN2…,相邻的VLAN之间能通信,这样数据就能这样走:VLAN0的port1->VLAN0的port2->VLAN1的port1->VLAN1的port2->VLAN2的port1->VLAN2的port2…->VLANn的port1->VLANn的port2。
PS. 这里用的SOHO路由必须支持静态路由表。
2. 原理
首先,在考虑这个问题之前,我看到别人的一个交换机实现VLAN间通信,只需要用一根交叉网线把不同的VLAN连接起来就可以了,然后我就很天真地回去也这么试了,结果很受伤。这是我至今百思都不得其解的一件事情,基于端口的VLAN如果用交叉网线接起来就能通信,那VLAN本身还有什么意义。
扯远了。
先说交换机。
基于端口的VLAN一般是这样工作的,交换机接收到一个以太网帧的时候,会对这个以太网帧进行标记,其中的标记信息就会包含这个以太网帧是哪个端口收到的,如果设置了VLAN,那么交换机就会根据VLAN的配置还有标记里面的端口信息把这包以太网帧转发到特定的端口(同一