VLAN间通信(单臂路由和SVI)

11 Jul

不同VLAN在二层肯定不能通信,如果要通信只能走三层。例如交换机上接了两台处于不同VLAN的PC,它们间要通信只能走三层。你可以将每个VLAN的 以太口和路由器连接,但VLAN多的话路由器口不够用。所以通常路由器只用一个以太接口和交换机连接,交换机的这个接口设置为trunk接口。这些概念在VLANTRUNK里都有介绍。

那不同VLAN在三层如何通信呢?以下图为例:

20160103152853091

R2要访问R3,但R2和R3处于不同VLAN,因此二层转发肯定是行不通的。要走三层,用单臂路由技术:

单臂路由

在交换机上接一台路由器R1。交换机端的接口配置成Trunk口。路由器端接口根据不同VLAN配置成不同的子接口(因为一个VLAN代表一个子 网,因此子接口IP为VLAN的网关地址)。R2发出数据,交换机收到后,打上VLAN2标签,通过Trunk口发送给R1。路由器查找本地路由表发现该数据要发给VLAN3上的R3,因此用VLAN3重新封装数据帧后,通过Trunk回给交换机。交换机收到后,去掉VLAN3标签,转发给VLAN3上的 R3,这就是VLAN单臂路由,实现了不同VLAN间的通信。

单臂路由优点是配置简单。缺点是有带宽限制,单点故障等问题(如果R1出故障了,那R2就不能访问R3了)。

单臂路由配置

(前提:交换机上设置VLAN2,VLAN3。并将f1/2口划入VLAN2,f1/3口划入VLAN3。交换机连接路由器的端口配成Trunk)

路由器的端口要划分子接口:

20160103154738151

R2和R3的网关ip default-gateway分别设成SW1的两个子接口的IP。这样处于不同VLAN的R2就能ping通R3了。R2的数据包经由R1打上VLAN3的标记后传给交换机,交换机去掉标记后转发给R3。

SVI(Switch Virtual Interface)

因为单臂路由有带宽限制和单点故障问题,所以用的更多的是SVI虚拟交换接口,来让不同VLAN间通信。SVI要用三层交换机。每个VLAN都有且仅有一个SVI口,在SVI口上配置IP,终端的的网关指向三层交换机上本VLAN的IP地址即可。

SVI配置:

20160103162738484

(前提:交换机上设置VLAN2,VLAN3。并将f1/1口划入VLAN2,f1/2口划入VLAN3)

20160103195309941

R1和R2的网关ip default-gateway分别设成两个SVI口的IP。这样处于不同VLAN的R1就能ping通R2了。再来看一下SVI口信息和交换机的路由表(三层交换机开启路由功能后就能像普通路由器一样查看路由表):

20160103200321038

注意点:如果SVI口没有Up,可能是该VLAN下没有任何活动端口

那如果如上面单臂路由的拓扑图,交换机换成三层交换机,即配好单臂路由,又配好SVI口。那R2去ping R3,究竟是走二层单臂路由,还是走三层SVI口呢?问题等价于,三层交换机收到帧时,是走二层交换还是走三层路由?这取决于帧的目标MAC地址究竟是谁?如果帧的目标MAC地址是SVI口地址,那就走三层SVI口。如果帧的目标MAC地址不是SVI口地址,那就走二层单臂路由。

比如R2去ping R3,目标IP地址肯定是R3的IP,但目标MAC地址可不一定是R3的MAC地址,取决于R2和R3是否处于同一网段。如果处于同一网段,发ARP请求 目标R3的MAC地址,如果不是同一网段那就ARP请求网关的MAC地址。拓扑里R2和R3处于不同VLAN,理应是处于不同网段,因此目标MAC地址是 网关(即SVI口)地址,因此走三层SVI口通信。

Leave a Reply

Your email address will not be published. Required fields are marked *