在交换机上划分VLAN 后,VLAN 间的计算机就无法通信了。VLAN 间的通信需要借助第三层设备,我们可以使用路由器来实现这个功能,如果使用路由器通常会采用单臂路由模式。实践上,VLAN 间的路由大多是通过三层交换机实现的,三层交换机可以看成是路由器加交换机,然而因为采用了特殊的技术,其数据处理能力比路由器要大得多。VLAN间路由主要有单臂路由和三层交换两种解决方案。
物理接口和子接口
使用物理接口的传统 VLAN 间路由具有一定的局限性。随着网络中 VLAN 数量的增加,每个 VLAN 配置一个路由器接口的物理方式将受到路由器物理硬件的局限。路由器用于连接不同 VLAN 的物理接口数量有限。因此子接口便是最好的选择。
物理接口和字接口的区别:
单臂路由
处于不同VLAN 的计算机即使它们是在同一交换机上,它们之间的通信也必须使用路由器。可以在每个VLAN 上都有一个以太网口和路由器连接。采用这种方法,如果要实现N 个VLAN 间的通信,则路由器需要N 个以太网接口,同时也会占用了N 个交换上的以太网接口。单臂路由提供了一种解决方案。路由器只需要一个以太网接口和交换机连接,交换机的这个接口设置为Trunk 接口。在路由器上创建多个子接口和不同的VLAN 连接,子接口是路由器物理接口上的逻辑接口。如图11-1,当交换机收到VLAN1 的计算机发送的数据帧后,从它的Trunk 接口发送数据给路由器,由于该链路是Trunk 链路,帧中带有VLAN1的标签,帧到了路由器后,如果数据要转发到VLAN2 上,路由器将把数据帧的VLAN1 标签去掉,重新用VLAN2 的标签进行封装,通过Trunk 链路发送到交换机上的Trunk 接口;交换机收到该帧,去掉VLAN2 标签,发送给VLAN2 上的计算机,从而实现了VLAN 间的通信。
单臂路由的缺点:
VLAN 之间的通信需要路由器来完成
数据量增大,路由器与交换机之间的通道会成为整个网络的瓶颈:
单臂路由配置中用到的命令:
创建子接口
Interface F0/0.1
指明子接口承载哪个VLAN 的流量以及封装类型,同时该VLAN 是native vlan
encapture dot1q 1 native
#p#
三层交换
采用单臂路由实现VLAN 间的路由时转发速率较慢,在实际工作中多在局域网内部采用三层交换的方式实现VLAN间路由。由于三层交换机采用硬件来实现路由,所以其路由数据包的速率是普通路由器的几十倍。从使用者的角度可以把三层交换机看成是二层交换机和路由器的组合,现在Cisco 主要采用CEF 的三层交换技术。在CEF 技术中,交换机利用路由表形成转发信息库(FIB),FIB 和路由表是同步的,关键的是它的查询是硬件化,查询速度快得多。除了FIB,还有邻接表(Adjacency Table),该表和ARP 表有些类似,主要放置了第二层的封装信息。FIB 和邻接表都是在数据转发之前就已经建立准备好了,这样一有数据要转发,交换机就能直接利用它们进行数据转发和封装,不需要查询路由表和发送ARP 请求,所以VLAN 间的路由速率大大提高。如下图所示:
三层交换解决VLAN间路由中用到的命令:
打开路由功能: ip routing
接口不作为交换机接: no switchport
实验:普通VLAN间路由配置
1. 实验目的
(1) 路由器以太网接口上的子接口
(2) 单臂路由实现VLAN 间路由的配置
2. 实验拓扑
普通VLAN间路由配置
3. 实验步骤
步骤1:在S1 上划分VLAN
S1(config)#vlan 2
S1(config-vlan)#exit
S1(config)#int f0/5
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 1
S1(config-if)#int f0/6
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 2
步骤2:要先把交换机上的以太网接口配置成Trunk 接口
S1(config)#int f0/1
S1(config-if)#switch trunk encap dot1q
S1(config-if)#switch mode trunk
在路由器的物理以太网接口下创建子接口,并定义封装类型
R1(config)#int g0/0
R1(config-if)#no shutdown
R1(config)#int g0/0.1
R1(config-subif)#encapture dot1q 1 native
//以上是定义该子接口承载哪个VLAN 流量,由于交换机上的native vlan 是VLAN 1,所以
我们这里也要指明该VLAN 就是native vlan。实际上默认时 native vlan 就是vlan 1。
R1 (config-subif)#ip address 172.16.1.254 255.255.255.0
//在子接口上配置IP 地址,这个地址就是VLAN 1 的网关了
R1(config)#int g0/0.2
R1(config-subif)#encapture dot1q 2
R1 (config-subif)#ip address 172.16.2.254 255.255.255.0
4. 实验调试
在PC1 和PC2 上配置IP 地址和网关,PC1 的网关指向:17.16.1.254, PC1 的网关指向:17. 16.2.254。测试PC1 和PC2 的通信。注意:如果计算机有两个网卡,请去掉另一网卡上设置的网关。
注意事项:
S1 实际上是catalyst 3560 交换机,该交换机具有三层功能,我们这里把它当作二层交换机使用了,有点大材小用。
三层交换实现VLAN 间路由
1. 实验目的
(1) 理解三层交换的概念
(2) 配置三层交换
2. 实验拓扑
实验拓扑图
3. 实验步骤
步骤1:在S1 上划分VLAN
S1(config)#vlan 2
S1(config-vlan)#exit
S1(config)#int f0/5
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 1
S1(config-if)#int f0/6
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 2
步骤2:配置三层交换
S1(config)#ip routing
//以上开启S1 的路由功能,这时S1 就启用了三层功能。
S1(config)#int vlan 1
S1(config-if)#no shutdown
S1(config-if)#ip address 172.16.1.254 255.255.255.0
S1(config)#int vlan 2
S1(config-if)#no shutdown
S1(config-if)#ip address 172.16.2.254 255.255.255.0
//在vlan 接口上配置IP 地址即可,VLAN 1 接口上的地址就是PC1 的网关了,VLAN 2 接口
上的地址就是PC2 的网关了。
注意事项:
要在三层交换机上启用路由功能,还需要启用CEF(命令为:ip cef),不过这是默认值。和路由器一样,三层交换机上同样可以运行路由协议。
4. 实验调试
(1) 检查S1 上的路由表
S1#show ip route
172.16.0.0/24 is subnetted, 2 subnets
C 172.16.1.0 is directly connected, Vlan1
C 172.16.2.0 is directly connected, Vlan2
//和路由器一样,三层交换机上也有路由表。
(2) 测试PC1 和PC2 间的通信
在PC1 和PC2 上配置IP 地址和网关,PC1 的网关指向:17.16.1.254, PC2 的网关指向:
17. 16.2.254。测试PC1 和PC2 的通信。注意:如果计算机有两个网卡,请去掉另一网卡上设置的网关。
注意事项:
我们也可以把f0/5 和f0/6 接口作为路由接口使用,这时它们就和路由器的以太网接口一样了,可以在接口上配置IP 地址。如果S1 上的全部以太网都这样设置,S1 实际上成了具有24 个以太网接口的路由器了,我们不建议这样做,这样太浪费接口了,。配置示例:
S1(config)#int f0/10
S1(config-if)#no switchport
//该接口不再是交换接口了,成为了路由接口
S1(config-if)#ip address 10.0.0.254 255.255.255.0