不同VLAN之间的通信可以通过两种方式:单臂路由和三层交换机。其中,单臂路由是通过路由子接口,交换机的某个端口以trunk的方式与路由器的某个端口相连,同时路由器的链接端口配置子接口,配置子接口承载的vlan,此时链接在交换机不同vlan接口上的设备即可相互通信;三层交换机路由属于直通路由. 在交换机的ip route table中的vlan可以直接通信,只需要开启路由器的路由功能即可。
区别在于,单臂路由的方式会由多个VLAN共享同一个物理端口和路由器的带宽,如果你的流量很大,同时接口带宽很小,比如100M,正好路由器的性能也很一般,不能做到线速转发,这种解决方案的问题在于其性能很糟糕,在大流量的情况下,会给路由器带来很大的负荷。而三层交换机的VLAN间路由由交换机的三层转发引擎完成,其性能取决于交换机的背板转发速率,注意,因为一般的三层交换机都可以在多个端口上(注意:不是全部端口同时线速转发)轻松实现线速转发,可以获得很好的性能,VLAN间流量不必经过路由器,网络延时和抖动都很小,同时也极大程度的减轻上层接入路由器的负载。
好了,说了这些之后,接下来我主要说一下单臂路由实验。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
单臂路由只是在路由器的一个接口上通过配置子接口(或逻辑接口,并不存在真正物理接口)的方式,实现原来相互隔离的不同VLAN之间的互联互通。实验拓扑图如下:
配置命令如下:
交换机:
int gi0/0/1
port link-type access
vlan 2
port gi0/0/1 #使交换机的GE0/0/1端口属于VLAN2
int gi0/0/2
port link-type access
vlan 3
port gi0/0/2 #使交换机的GE0/0/1端口属于VLAN3
int gi0/0/3 #交换机的GE0/0/3端口默认属于VLAN1
port link-type trunk
port trunk allow-pass vlan all #交换机的GE0/0/3端口允许通过所有VLAN
=================================================================
路由器:
int e0/0/0
ip add 10.0.0.1 24
int e0/0/0.1
ip add 192.168.0.1 24
vlan-type dot1q 2 #给子接口e0/0/0.1封装dot1q协议,并指定属于VLAN2
int e0/0/0.2
ip add 192.168.2.1 24
vlan-type dot1q 3 #给子接口e0/0/0.2封装dot1q协议,并指定属于VLAN3
quit
int e0/0/0
shutdown
undo shutdown
========================================================================
测试结果:
好了,做到这里,单臂路由的实验是over了,但是不知道小伙伴们有没有一些疑问呢。
我之前学到单臂路由的配置时就立刻想到了一个问题,就是我们上述实验配置中,对于路由器,我们只是用了它的Ethernet0/0/0的子接口而已,那么配置Ethernet0/0/0物理接口的IP地址有什么意义呢?于是我就想到不配Ethernet0/0/0接口的地址,直接配置它的两个子接口,这样的话其他命令配置完成后,两主机是不会通的哦,你这时用“display interface brief”命令会查看Ethernet0/0/0端口状态时UP,但是它的协议状态总是DOWN,你可能会说那就把Ethernet0/0/0接口先shutdown再undo shutdown嘛,脑子转得快哦,但是这样它仍然Proto状态为DOWN,如果你不相信可以自己做实验试试看啦。
OK,那我们再想一下,如果我只配Ethernet0/0/0物理接口,再加一个子接口Ethernet0/0/0.1,分别让这一个物理接口一个逻辑接口处于VLAN2和VLAN3下,会怎么样呢?这时候你呀就会发现在Ethernet0/0/0接口下根本不支持vlan-type dot1q这个命令,这个命令只能在路由器的子接口下可用。
怎么样,这个奇特的现象是不是之前从未发现过呢?涨知识了吧23333333,希望对大家有所帮助