在局域网内,我们会用 VLAN 对不同的用户、不同的部门、不同用途的区域进行分组,一个 VLAN 区分一组用户,便于管理和使用。
什么是 VLAN ?
VLAN 技术能够在逻辑上把一个物理局域网分隔为多个广播域,每个广播域称为一个虚拟局域网(即 VLAN )。每台主机只能属于一个 VLAN ,同属一个 VLAN 的主机通过二层直接通信。划分 VLAN ,并不是为了彻底隔绝通信,而是减小广播域传播的范围,过滤多余的包,提高网络的传输效率。
如何实现不同 VLAN 间的主机通信呢?
VLAN 隔离二层网络,必须通过三层网络设备实现。这些设备根据 IP 地址为不同 VLAN 间的流量执行路由转发的操作,称为 VLAN 间路由。
实现 VLAN 间路由的方法有哪些?
按照时间和技术发展的顺序,介绍三种 VLAN 间路由的方法。
路由器的作用是在不同网络之间转发数据包,VLAN 则是在一台或一组交换机上划分不同的局域网,将它们隔离为不同的网段。因此,不同 VLAN 之间的通信需要路由器来进行转发,也就顺理成章了。
不同的 VLAN 连接不同的路由器接口,一个路由器接口连接一个 VLAN 的交换机端口。
假设 PC 和路由器都有同网段中所有设备的 ARP 缓存表,交换机的 MAC 地址表也有各个设备的 MAC 地址信息。那么 PC1 向 PC5 发送数据时,整个过程如下:
PC1 查询路由表,发现 PC5 的 IP 地址在另一个网段,需要通过默认网关进行数据转发;
PC1 以 PC5 的 IP 地址为目的 IP 地址,以默认网关的 MAC 地址为目的 MAC 地址,封装数据帧后发送给交换机;
交换机收到数据帧后,查询 MAC 地址表,找到目的 MAC 地址对应的端口,于是将数据帧从这个端口转发出去,即转发给路由器;
路由器收到数据帧后,查看数据帧的目的 MAC 地址是自己,于是解封装查看目的 IP 地址。根据目的 IP 地址的网络号查询路由表,发现目的网段的直连路由,以及对应的出接口;
路由器以 PC5 的 IP 地址作为目的 IP 地址,以 PC5 的 MAC 地址作为目的 MAC 地址封装报文,并从出接口转发出去,即转发给交换机;
交换机查看数据帧的目的 MAC 地址,并根据目的 MAC 地址,将数据帧转发给 PC5 。
相同 VLAN 的主机如何互相通信?
PC1 向 PC2 发送数据时,由于目的 IP 地址与自己处于同一个网段,PC1 会使用 PC2 的 MAC 地址作为目的 MAC 地址封装数据帧;交换机也会直接通过 PC2 的端口,将数据帧转发给 PC2 。
如果不同 VLAN 的 PC1 和 PC3 通讯,交换机是否会直接根据 MAC 地址,把 PC1 发送的报文直接转发给 PC3 ?
MAC 地址表不仅记录了交换机端口和 MAC 地址的对应关系,还包括这个端口的 VLAN 。交换机不会通过查询 MAC 地址表,就把数据帧从不同 VLAN 的端口转发出去。
接口列表
进行网络配置前,先梳理出接口列表、接口 IP 地址表和 VLAN 划分表,便于进行设备配置。
路由器用于连接异构网络,特点是有不同类型的物理接口,接口数量少;交换机则是用于组建局域网,特点是物理接口类型少,接口数量多。实际网络环境中,会在一台交换机上创建大量的 VLAN ,每个 VLAN 使用一个路由器接口作为默认网关,路由器接口就不够用了。
为了节省路由器的接口,使用一个接口来连接交换机,无论哪个 VLAN 的流量都通过这一个接口进出路由器,实现所有 VLAN 之间的流量转发,这种方式称为单臂路由。
上面的物理拓扑图可能描述的不太清楚,查看下面单臂路由的逻辑拓扑图可以更好的理解原理。
一个路由器接口能够像多个接口那样工作,同时用来传输多个不同 VLAN 的流量吗?
路由器提供了一种称为子接口的逻辑接口。子接口顾名思义,就是通过逻辑的方式,将一个路由器物理接口划分为多个逻辑子接口,来满足用一个物理接口连接多个网络的需求。
接口列表
由传统 VLAN 间路由的多个路由器接口,变成单臂路由的一个路由器接口,用于连接交换机。其它接口配置不变。
根据接口 IP 地址表,配置路由器的子接口 IP 地址。其余设备配置参考上一个实验的步骤 1 。
命令 interface interface-type interface-number.sub-interface number 创建子接口。子接口编号范围是 1 ~ 4096 ,与 VLAN ID 保持一致。
命令 dot1q termination vid 配置 802.1Q 封装并指定端口的 PVID ,确保路由器子接口与对端的交换机端口封装模式一致。
命令 arp broadcast enable 启动子接口的 ARP 广播功能。默认状态下,ARP 广播功能是禁用的,收到 ARP 广播帧会直接丢弃。
根据 VLAN 划分表,配置 SW 连接路由器端口的 VLAN 。其余设备配置参考上一个实验的步骤 2 。
测试:PC1 ping PC5 成功,通过路由器的子接口实现 VLAN 间路由。
从流量走向上看单臂路由,是舍近求远的,交换机上两个不同 VLAN 的端口流量,无法通过交换机直接完成数据转发,还需要在路由器上绕一下。这是因为二层交换机没有三层转发能力,无法根据数据包的目的 IP 地址查看自己的路由表;二层交换机也无法成为所连主机的网关,需要一台路由器充当网关。
然后出现了一种在传统以太网交换机的基础上,添加专门路由转发硬件的设备。这类设备不仅有传统二层交换机的功能,还可以通过 ASIC(特殊应用集成电路)实现对数据包的路由。这种集成了三层数据包转发功能的交换机称为三层交换机。
一台三层交换机既可以实现将终端隔离在不同的 VLAN 中,同时位这些终端提供 VLAN 间路由的功能,不需要再借助路由器来转发不同 VLAN 之间的流量。
实现 VLAN 间路由需要给每一个 VLAN 分配一个独立的三层接口作为网关,三层交换机并不是使用三层物理接口连接各个 VLAN ,而是通过创建虚拟 VLAN 接口,为每一个 VLAN 分配一个虚拟三层接口。
虚拟 VLAN 接口是由三层交换机创建的,因此三层交换机会作为直连接口,将它们所在的网络作为直连路由填充到路由表中。同时,虚拟 VLAN 接口和对应的 VLAN 中的物理二层端口处于同一个子网中,充当这个 VLAN 的网关。
三层交换机的转发效率和扩展性都远比单臂路由实现 VLAN 间路由更优,管理和配置也更加简单,目前这种方案已成为实现 VLAN 间路由方案的首选。
接口列表
根据接口 IP 地址表,配置交换机的 VLANIF 接口。PC1 ~ PC5 的 IP 地址配置以及对端交换机接口 VLAN 配置,参考上一个实验的步骤 1 和步骤 2 。
命令 interface Vlanif vlan-id 创建 VLANIF 接口。VLANIF 接口的编号必须与 VLAN ID 一致,VLAN 中的主机以 VLANIF 接口 IP 地址作为自己的默认网关。
命令 display ip interface brief 查看 IP 地址信息,检查配置是否正确。
命令 display vlan 查看 VLAN 信息,检查交换机端口的 VLAN 配置是否正确。
命令 display ip routing-table 查看路由表信息,两个 VLANIF 接口的直连网段加入了 IP 路由表,并以此实现 VLAN 间路由。
测试:PC1 ping PC5 成功,通过三层交换机的 VLANIF 接口实现 VLAN 间路由。
三层交换机能取代路由器吗?
三层交换机的路由功能通常比较简单,主要是局域网的连接,包含大量的以太网接口,主要用途是提供快速数据交换功能,满足局域网数据交换频繁的应用特点。
而路由器则不同,是为了满足不同类型的网络连接,如局域网与广域网之间的连接、不同协议的网络之间的连接等。它最主要的功能是路由转发,解决各种复杂路径的网络连接,不仅适用于同种协议的局域网间,更适用于不同协议的局域网与广域网间。具有选择最佳路由、负荷分担、链路备份及和其他网络进行路由信息的交换等等功能。
因此,三层交换机与路由器存在着本质区别,三层交换机并不能完全取代路由器的工作。