一、背景介绍
交换是疏通领域另一个知识块,与路由一样有着举足轻重的地方,本片就通过不同vlan间通信的三个实现方式来讲解交换的通信过程。
二、不同vlan间通信实现方法
1.使用二层设备实现
如下图所示,两个交换机之间使用端口绑定的方式以trunk连接,下联2台同网段的pc,但不属于同一个vlan,大部分的案例都是不同的vlan属于不同网段通过子接口进行通信,本示例则以纯二层网络设备进行通信,顺便说明通信的过程。
(1)创建vlan2,并将连接pc的端口加入vlan2
[SW1]vlan 2
[SW1-vlan2]q
[SW1]int e0/0/1
[SW1-Ethernet0/0/1]port link-type access
[SW1-Ethernet0/0/1]port default vlan 2
(2)创建eth-trunk接口,并将10/11接口加入eth-trunk
[SW1]int Eth-Trunk 1
[SW1-Eth-Trunk1]int e0/0/10
[SW1-Ethernet0/0/10]eth-trunk 1
[SW1-Ethernet0/0/10]int e0/0/11
[SW1-Ethernet0/0/11]eth-trunk 1
(3)将eth-trunk口类型设置为trunk,并将SW1上eth-trunk口pvid改为2
[SW1]int Eth-Trunk 1
[SW1-Eth-Trunk1]port link-type trunk
[SW1-Eth-Trunk1]port trunk pvid vlan 2
(4)通过display interface brief命令查看端口都已激活
(5)再通过display port vlan查看每个端口的vlan信息,此时可以看到eth-trunk1的pvid虽然已经为2,但是默认放通vlan仍为1,1为默认放通的管理vlan,所有端口默认pvid也为1
此时ping操作发现pc1与pc2之间无法正常通信,原因就在于尽管sw1的eth-trunk口pvid是2,但是他并没有放通vlan 2,sw2也是没有放通vlan 3,只有当使用命令
[SW1]int Eth-Trunk 1
[SW1-Eth-Trunk1]undo port trunk allow-pass vlan 1 #取消默认放通的vlan 1,可省略
[SW1-Eth-Trunk1]port trunk allow-pass vlan 2
再查看sw1确认vlan2已经放通,两个pc间才能正查光通信,sw2上的配置类似,不再赘述。
通过本实例可以总结出数据通信的过程为:
(1)pc1发出报文从sw1的e0/0/1口进入,再通过e0/0/1口时被打上该端口的default vlan
(2)报文再通过eth-trunk 1口发出前先判断是否允许通过,如果没有放通,即使tag等于该端口的pvid也会丢弃,本例中pvid与tag相同,所以从eth-trunk 1口出来时剥离tag变为纯以太网帧
(3)报文进入sw2的eth-trunk 1口时打上该端口的pvid
(4)从sw2的e0/0/1流出时,因为tag等于该端口的pvid所以脱掉tag变为纯以太网帧发送给pc2。tag是由交换机添加的信息,pc并不能识别,pc只能识别纯以太网帧
这样,尽管没有借用三层设备但最终pc1和oc2实现了通信。
2.借助路由器子接口
拓扑如下图所示,此时交换机上联路由器,属于不同vlan的pc1和pc2将通过路由器子接口的方式进行通信。
(1) SW1上的配置
创建vlan10,20
[SW1]vlan batch 10 20
将e0/0/1口加入vlan 10
[SW1]int e0/0/1
[SW1-Ethernet0/0/1]port link-type access
[SW1-Ethernet0/0/1]port default vlan 10
将e0/0/1口加入vlan 20
[SW1-Ethernet0/0/1]int e0/0/2
[SW1-Ethernet0/0/2]port link-type access
[SW1-Ethernet0/0/2]port default vlan 20
将g0/0/1口配置成trunk模式,并放通vlan 10/20
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type trunk
[SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20
[SW1-GigabitEthernet0/0/1]undo port trunk allow-pass vlan 1
检查配置,至此SW上配置完成
(2) 路由器上配置
首先能看到,在交换机上并没有三层口,g0/0/1属于二层端口
而在路由器上g0/0/1是三层端口,此时是用交换机的二层口连接路由器的三层口,且tag是二层标签,三层口无法直接识别,所以要先进行dot1q封装
路由器上创建子接口,用dot1q封装用于终结vlan标签,并将网关地址配置在该端口上
[R1]interface g0/0/1.10
[R1-GigabitEthernet0/0/1.10]dot1q termination vid 10
[R1-GigabitEthernet0/0/1.10]ip add 192.168.10.254 24
[R1-GigabitEthernet0/0/1.10]arp broadcast enable
[R1]interface g0/0/1.20
[R1-GigabitEthernet0/0/1.20]dot1q termination vid 10
[R1-GigabitEthernet0/0/1.20]ip add 192.168.20.254 24
[R1-GigabitEthernet0/0/1.20]arp broadcast enable
至此,R1的配置完成,此时pc1与pc2就能正常通信了,需要注意的是:当开启子接口后,物理接口的功能就将小时此时的物理接口只是接收数据,子接口默认情况下不启用arp广播,所以需要手动开启。
3.使用vlanif子接口实现
方法2的方法固然能实现不同vlan间通信,但实际生产环境中很少会用到,原因是:单臂路由引入了单点故障,尽管可以通过eth-trunk的方式将多跟链路绑定做冗余,但vlan的1次间通信会在该链路上一进一出,该链路的负载较大,所以常见的方式是使用三层交换机完成,如下图所示:
创建vlan10/20,并加入对应vlan
SW1]vlan batch 10 20
[SW1]int e0/0/1
[SW1-Ethernet0/0/1]port link-type access
[SW1-Ethernet0/0/1]port default vlan 10
[SW1-Ethernet0/0/1]int e0/0/2
[SW1-Ethernet0/0/2]port link-type access
[SW1-Ethernet0/0/2]port default vlan 20
创建vlanif子接口,并将网关配置到该接口上
[SW1]interface Vlanif 10
[SW1-Vlanif10]ip address 192.168.10.254 24
[SW1-Vlanif10]int vlanif 20
[SW1-Vlanif20]ip add 192.168.20.254 24
至此,SW1配置完成pc1与pc2之间能够正常通信,此时有几个需要注意的地方:
(1)vlanif的子接口必须要跟vlan号保持一致
(2)vlanif是一个三层逻辑端口,使用三层交换机进行多vlan间通信时,不需要进行dot1q封装,因为二层的tag信息在交换机的物理口就已经被剥离