VLAN和 Trunk是企业局域网最基本和最核心的网络技术,在部著和实施局域网时应用广泛。VLAN技术可以很容易地控制广播域的大小。有了VLAN,交换机之间的级联链路就需要Trunk技术来保证该链路可以同时传输多个VLAN的数据。管理员可以手动配置交换机之间链路上的Trunk,也可以让交换机自动协商。一个VLAN就是一个广播域或者单独的子网,因此要通过路由功能实现不同VLAN间主机的通信。本章主要介绍VLAN和Trunk 技术的概念、原理、配置与实现,然后介绍用单臂路由实VLAN间路由。
8.1 VLAN概述
8.1.1 VLAN简介
交换机能够隔离冲突域,然而不能隔离广播域,通过多个交换机连接在一起的所有计算机都在一个广播域中,任何一台计算机发送广播包,其他计算机都会收到,广播信息不仅消耗了大量的网络带宽而且收到广播信息的计算机还要消耗一部分CPU时间来对其进行处理。
虚拟局域网(Virtual Local Area Network,VLAN)是通过软件功能将物理交换机端口划分成一组逻辑上的设备或用户,这些设备和用户并不受物理网段的限制,可以根据功能、部门及应用等因素将它们组织起来,从而实现虚拟工作组的技术。VLAN工作在OSI的第二层,是交换机端口的逻辑组合,可以把在同一交换上的端口组合成一个 VLAN,也可以把在不同交换上的端口组合成一个 VLAN。一个 VLAN就是一个广播域,VLAN之间的通信必须通过第三层路由功能来实现,与传统的局域网技术相比较,VLAN技术更加灵活和高效,具有增强网络安全、降低成本、提高网络性能、减小广播域大小、提高管理效率和简化项目管理和应用管理等优点。
Cisco交换机上 VLAN分为普通VLAN和扩展VLAN,VLANID 范围为1~4094。普通VLAN用于中小型商业网络和企业网络,VLAN ID 的范围为1~1005,其中 1002~1005保留给令牌环VLAN和 FDDI VLAN使用。VLAN1和VLAN1002~1005是自动创建的,不能删除。普通VLAN信息存储在名为vlan.dat的 VLAN数据库文件中,该文件付干夺换机的Flas中。VTP (VLAN Trunk Protocol)只能识别普通范围VLAN,扩展 VLAN 可社耶各提供商扩展自己的基础架构以适应更多的客户。某些企业的规榄很大,从而箸更街田扩星节围的VLANID,VLAN ID的范围为1006~4094。扩展VLAN支持的VIAN Th能比业适VNI扩展VLAN信息保存在运行配置文件中。VTP(版本1和2)无法识别扩展VLAN。
8.1.2 VLAN类型
VLAN类型可以按流量类别或者特定功能进行定义,常见的VLAN米型如下所述。
- 数据VLAN:用于传送用户的数据流量。
- 默认 VLAN:交换机加载默认配置进行初始启动后,所有交换机端口都成为默认VLAN的成员。Cisco交换机的默认VLAN是 VLAN1,它不能重命名或删除。
- 本征VLAN:本征 VLAN分配给IEEE 802.1q Trunk端口。Trunk端口是交换机之间互联的端口,支持单一物理链路传输多个VLAN的流量,在这些流量中,其中有一个VLAN的流量可以不携带VLAN标记,这个VLAN就是本征(Native) VLAN。Cisco交换机的默认本征VLAN是VLAN1 。
- 管理 VLAN:用于访问交换机管理功能的 VLAN。 Cisco交换机的默认管理VLAN是VLAN1。要创建管理 VLAN,需要为该VLAN的交换机虚拟接口(SVI)分配IP地址和子网掩码,用户就可以通过HTTP、Telnet、SSH 或SNMP管理交换机。IOS 15版本可以有多个活动SVI.
- Voice VLAN:用于单独传送I语音(VolP)的VLAN。VolP流量要求网络中有足够的带宽来保证语音质量。一般通过QoS为其分配较高的IP优先级(通常为5),并且应该绕过网络中的拥塞区域进行路由,传输延时要求小于150毫秒。
8.1.3 VLAN划分
VLAN的划分方法通常包括基于端口划分VLAN和基于MAC地址划分VLAN两种。
1、基于端口划分VLAN
基于端口的VLAN划分是最简单、有效的VLAN划分方法。管理员以手动方式把交换机某一端口指定为某一VLAN的成员。基于端口划分VLAN的缺点是当用户从一个端口移动到另一个端口时,网络管理员必须对交换机端口所属VLAN成员进行重新配置。
2、基于MAC地址划分VLAN
该方法使用 VLAN成员策略服务器(VLAN Membership Policy Server,VMPS)根据连接到交换机端口的设备的源MAC地址,动态地将端口分配给 VLAN。当设备移动时,交换机能够自动识别其 MAC 地址并将其所连端口配置到相应的 VLAN。这种 VLAN属于动态VLAN。基于MAC地址划分VLAN可以允许网络设备从一个物理位置移动到另一个物理位置,并且自动保留其所属VLAN的成员身份。
8.2 Trunk概述
8.2.1 Trunk简介
当一个 VLAN跨过不同的交换机时,连接在不同交换机端口的同一VLAN的计算机如何实现通信?可以在交换机之间为每一个VLAN都增加连线。然而这样在有多个VLAN时会占用交换机太多的端口,而且扩展性很差。主流的方案是采用Trunk 技术实现跨交换机的VLAN内主机通信。Trunk 技术使得在一条物理线路上可以传送多个VLAN的信息,交换机从属于某一VLAN的端口接收到数据,在Trunk链路上进行传输前,会加上一个标记,标识该数据所属的 VLAN,数据到了对方交换机,交换机会把该标记去掉,只发送到属于对应VLAN端口的主机。
有2种常见的Trunk帧标记技术:ISL (Inter-Switch Link)和IEEE 802.1q.
ISL技术为Cisco私有,对原有的帧进行重新封装,新添加一个26字节帧头和4字节的帧校验序列(FCS),即 ISL封装增加了30字节。由于ISL的私有性,实际中很少使用,Cisco的低端交换机如2960也不支持。
IEEE 802.1q技术是国际标准,得到所有厂家的支持。该技术在原有以太帧的源MAC地址字段后插入4字节的标记(Tag)字段,同时用新的FCS字段替代了原有的FCS字段,IEEE802.1q帧格式如图8-1所示,插入4字节标记的各个字段的含义如下所述。
- 标记协议ID(Tag Protocol Identifier,TPID):16位,该字段为固定值0x8100。
- 优先级(Priority,PRI):3位,IEEE 802.1p优先级。
- 规范格式标识符(Canonical Format Indicator,CFI): 1位,对于以太网,该位为0。
- VLAN ID (VID):12位,标识帧的所属VLAN ID。
Trunk 链路上无论是 ISL 的重新封装还是 IEEE 802.1q 的插入标记,都将直接导致帧头变大,从而影响链路传输效率,可以在 Trunk 链路上指定一个本证 VLAN(Native VLAN),来自 Native VLAN 的数据帧通过 Trunk 链路时将不重新封装,以原有的帧格式传输。显然 Trunk 链路的两端指定的本证 VLAN 要一致,否则将有可能导致数据帧从一个 VLAN 发送到另一个 VLAN,还可能导致 CDP 信息报错以及交换机环路等问题。但是本证 VLAN 有可能导致 VLAN 跳跃攻击,因此在实际应用中,通常把本证 VLAN 设置为一个不存在的 VLAN,即所有经过 Trunk 链路的 VLAN 数据帧都插入标记。
8.2.2 Voice VLAN
现代网络中IP电话普遍使用。IP电话可以被想象为内置了一台3个端口的交换机。为了保证IP语音质量,通常用单独的VLAN来承载IP语音流量,这样IP电话和交换机之间的链路上存在语音VLAN和数据VLAN(计算机发送的)的流量,这个链路似乎应该配置为Trunk链路才对。然而为了安全等原因,交换机上的端口通常配置为Access模式。然而Access模式端口是不会接收进行了Trunk封装的数据帧的。Voice VLAN可以解决这个矛盾。在交换机
端口上配置了Voice VLAN后,IP电话把语音数据进行Trunk封装(标签为Voice VLAN的ID)发给交换机,交换机端口虽然为Access模式端口,但是会正常接收该数据帧;对于计算机发送的数据流量则保持原有的帧格式,经过I电话后发送到交换机。
8.3 VLAN间路由概述
在交换机上划分VLAN后,VLAN间的计算机就无法通信了。VLAN间的通信需要借助第三层路由功能来实现。实现路由功能的设备可以是路由器,也可以是三层交换机。在实际应用中,VLAN间的路由大多是通过三层交换机实现的,因为采用硬件转发,其数据处理能力比路由器要强。三层交换实现VLAN间路由将在第13章中介绍。
8.3.1 传统VLAN间路由
传统VLAN间路由的实现方法是通过将不同的物理路由器接口连接至不同的物理交换机端口来执行VLAN间路由。传统VLAN间路由如图8-2所示,图中两台PC虽然在同一交换机上,但是处于不同VLAN中,所以它们之间的通信也必须使用路由器。要实现它们之间的通信,可以在每个VLAN上都有一个以太网接口和路由器连接。在路由器的以太网接口上配置IP地址,PC上的默认网关指向同一VLAN中的路由器以太网接口地址即可。采用这种方法,如果要实现N个VLAN间通信,则路由器需要N个以太网接口,同时也会占用交换机N个端口,扩展性很差,在实际应用中并不可行。
8.3.2 单臂路由
单臂路由通过单个物理接口实现网络中多个VLAN之间数据流量的传递,单臂路由实现VLAN间通信如图8-3所示。路由器只需要一个以太网接口和交换机连接,交换机的这个端口被设置为Trunk端口。在路由器上创建多个子接口作为不同的VLAN主机的默认网关。子接口是基于软件的虚拟接口,与单个物理接口相关联。路由器的软件中配置了子接口,并且每个子接口上都分别配置了IP地址和IEEE 802.1q封装的VLAN,实现子接口和VLAN的对应关系。根据各自的VLAN分配,子接口被配置到不同的子网中。可使用路由器物理接口和子接口实现VLAN间路由,路由器物理接口和子接口对比如表8-1所示。
表8-1路由器物理接口和子接口对比
物理接口 | 子接口 |
每个VLAN流量占用一个物理接口 | 多个VLAN流量占用一个物理接口 |
无带宽争用 | 带宽怎用 |
连接到access模式交换机接口 | 连接到Trunk模式交换机接口 |
成本高 | 成本低 |
连接配置较复杂 | 连接配置较简单 |
单臂路由的工作原理如图8-4所示,当交换机收到 VLAN2的计算机发送的数据帧后,从Trunk端口发送数据给路由器,由于该链路是Trunk链路,帧中带有VLAN2的标签,数据帧到达路由器后,路由器对其进行解封装并查找路由表,如果数据要转发到VLAN3,路由器将把数据帧重新用VLAN3的标签进行封装,通过Trunk链路发送到交换机上的Tnunk端口,交换机收到该帧后去掉VLAN3标签,发送给VLAN3上的计算机,从而实现了VLAN间通信。