单臂路由虽然解决了不同vlan间的通信问题,但也有其致命的缺陷:
- 单臂本身是网络的骨干链路,易形成网络瓶颈
- 子接口依托于物理接口,应用不灵活
- 每次vlan转发都需要查看路由表,浪费设备资源
上面的问题因为路由交换能力差引起,为解决vlan间的路由问题,我们引进三层交换概念,它被大家称为二层交换+三层转发。三层交换机相当于多个专门处理vlan间路由的多个单臂路由和交换的集成。
三层交换机的转发原理
三层交换机通过硬件来交换和路由选择数据包。为处理数据包的高层信息,三层交换有两种体系结构:
1> 传统的MLS(Multilayer Switching)
依靠ASIC(Application-Specific Integrated Circuit)对数据流的***个数据包进行路由处理后,第三层引擎对硬件交换组件进行程序处理为后续数据包提供路由。产生MLS条目记录,一次路由多次交换。
2> 基于CEF(Cisco Express Forwarding)的MLS
CEF是基于拓扑的转发模型,它预先将所有路由信息加入到转发信息库(FIB),方便快速路由。基本概念有:
转发信息库(FIB):类似路由表,记录IP与vlan的对应关系
邻接关系表:类似mac地址表,记录相邻接口所连接主机的mac地址
虚接口:不依赖物理接口的子接口,开启vlan配置网关,属于该vlan的物理接口即可动态充当vlan的网关
三层交换机配置
三层交换机的接口默认是二层接口,命令switchport 转换为三层接口,相反no switchport将路由接口转为交换接口。以下面模拟图配置为例。
配置步骤:
1>在二层交换机上创建vlan,并分配端口,f0/0端口配置trunk(命令略)
2>在三层交换机上创建vlan,并配置trunk指定接口封装方式
SW_3L(config)# int f0/0
SW_3L(config-if)# switchport trunk encapsulation dot1q
SW_3L(config-if)# switchport mode trunk
3> 在三层交换机上配置各vlan的ip地址
SW_3L(config)# int vlan 10
SW_3L(config-if)# ip add 192.168.1.1 255.255.255.0
SW_3L(config-if)# no sh
vlan20和vlan30略
4> 三层交换机启用路由,配置接口ip
SW_3L(config)# ip routing
SW_3L(config)# int f1/0
SW_3L(config-if)# no switchport
SW_3L(config-if)# ip add 10.1.1.1 255.255.255.248
SW_3L(config-if)# no sh
5> 为三层交换机配置默认路由
SW_3L(config)# ip route 0.0.0.0 0.0.0.0 10.1.1.2
经过上面配置,在对客户机设置ip和网关,不同vlan间已经可以正常通信。三层交换机上也可以配置DHCP中继转发,方便客户机地址配置,效果是使不同vlan共用一个dhcp服务器,dhcp的广播信息可以在不同vlan间转发。配置过程如下:
首先选择一个vlan配置dhcp服务作为dhcp server。第三讲配置过这里略。
其次为除了dhcp server 所在vlan之外的每个vlan上配置dhcp中继转发。例如dhcp server在vlan2 现在配置vlan3:
SW_3L(config)# int vlan3
SW_3L(config-if)# ip add 192.168.2.1 255.255.255.0 设置vlan3网关地址
SW_3L(config-if)# ip helper-address 192.168.2.100 vlan2中dhcp server主机地址
需要说明的是,像在单臂路由上配置dhcp服务一样,我们需要配置多个地址池,地址池应包含相应vlan的网关地址。