VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接互通,从而将广播报文限制在一个VLAN内。
以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。
当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。
通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量。
在这种情况下出现了VLAN技术,这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。
使用VLAN能给用户带来以下受益:
在物理vlan中,各主机可以直接通过网络体系结构中的第二层(数据链路层)进行通信,但划分vlan后,不同vlan中的主机不可用直接通过第二层进行通信,必须通过第三层(网络层)才能通信。
从物理来看待vlan:
Vlan中继:
一台交换机上的vlan配置信息可以传播、复制到网络中相连的其他交换机上,采用GVRP自动注册来实现
中继端口:
trunk(中继)端口指在一个交换机端口允许一个或多个vlan通信到达网络中相连的另一台交换机上相同的vlan中。
vlanID取值范围0-4095,0和4095为协议保留。
传统的以太网数据帧在目的MAC地址和源MAC地址之后封装的是上层协议的类型字段,如下图1所示。
图1 传统的以太网数据帧格式
IEEE 802.1Q是虚拟桥接局域网的正式标准,对Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag,如下图2所示。
图2 802.1Q帧格式
802.1Q Tag包含4个字段,各字段解释如下所示:
每台支持802.1Q协议的交换机发送的数据包都会包含VLAN ID,以指明交换机属于哪一个VLAN。因此,在一个VLAN交换网络中,以太网帧有以下两种形式:
常用设备中:
为了提高处理效率,设备内部处理的数据帧一律都是Tagged帧。
如下图3所示,VLAN中有以下两种链路类型:
图3 链路类型示意图
1、接入链路(Access Link):
用于连接用户主机和交换机的链路。
通常情况下,主机并不需要知道自己属于哪个VLAN,主机硬件通常也不能识别带有VLAN标记的帧。因此,主机发送和接收的帧都是untagged帧。
2、干道链路(Trunk Link):
用于交换机间的互连或交换机与路由器之间的连接。
干道链路可以承载多个不同VLAN数据,数据帧在干道链路传输时,干道链路的两端设备需要能够识别数据帧属于哪个VLAN,所以在干道链路上传输的帧都是Tagged帧。
说明:
对于主机来说,它不需要知道VLAN的存在。主机发出的是untagged报文。
交换设备接收到报文后,根据配置规则(如接口信息)判断出报文所属的VLAN后,再进行处理。
如果报文需要通过另一台交换机转发,则该报文必须通过干道链路透传到对端交换设备上。为了保证其它交换设备能够正确处理报文中的VLAN信息,在干道链路上传输的报文必须都打上了VLAN标记。
当交换设备最终确定报文出接口后,将报文发送给主机前,需要将VLAN标记从帧中删除,这样主机接收到的报文都是不带VLAN标记的以太网帧。
所以,一般情况下,干道链路上传输的都是tagged帧,接入链路上传送到的都是untagged帧。这样处理的好处是:网络中配置的VLAN信息可以被所有交换设备正确处理,而主机不需要了解VLAN信息。
根据接口连接对象以及对收发数据帧处理的不同,以太网接口分为:
Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同VLAN成员时使用。它只能收发Untagged帧,且只能为Untagged帧添加唯一VLAN的Tag。
Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。它可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。
Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器等)和网络设备(如Hub),也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。它可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag(即不剥除Tag)、某些VLAN的帧不带Tag(即剥除Tag)。
Hybrid接口和Trunk接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口。比如一个接口连接不同VLAN网段的场景中,因为一个接口需要给多个Untagged报文添加Tag,所以必须使用Hybrid接口。
缺省VLAN又称PVID(Port Default VLAN ID)。前面提到,设备处理的数据帧都带Tag,当设备收到Untagged帧时,就需要给该帧添加Tag,添加什么Tag,就由接口上的缺省VLAN决定。
接口收发数据帧时,对Tag的添加或剥除过程。
因此,Access接口发出的数据帧肯定不带Tag,Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签,Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag。
同一VLAN内用户互访(简称VLAN内互访)会经过如下三个环节。
从以太网交换原理可以看出,划分VLAN后,广播报文只在同一VLAN内二层转发,因此同一VLAN内的用户可以直接二层互访。根据属于同一VLAN的主机是否连接在不同的设备,VLAN内互访有两种场景:同设备VLAN内互访和跨设备VLAN内互访。
如下图所示,用户主机Host_1和Host_2连接在同台设备上,属于同一VLAN2,且位于相同网段,连接接口均设置为Access接口。(假设Router上还未建立任何转发表项)。
https://img-blog.csdnimg.cn/20190728184155873.gif
后续Host_1与Host_2的互访,由于彼此已学习到对方的MAC地址,报文中的目的MAC地址直接填写对方的MAC地址。
此组网场景下,当同一VLAN的用户处于不同网段时,主机将在报文中封装网关的MAC地址,可借助VLANIF技术(需配置主从IP地址)实现互访。
如下图,用户主机Host_1和Host_2连接在不同的设备上,属于同一个VLAN2,且位于相同网段。为了识别和发送跨越设备的数据帧,设备间通过干道链路连接。
https://img-blog.csdnimg.cn/20190728184222892.gif
当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设Router_1和Router_2上还未建立任何转发表项):
可见,干道链路除可传输多个VLAN的数据帧外,还起到透传VLAN的作用,即干道链路上,数据帧只会转发,不会发生Tag的添加或剥离。
划分VLAN后,由于广播报文只在同VLAN内转发,所以不同VLAN的用户间不能二层互访,这样能起到隔离广播的作用。但实际应用中,不同VLAN的用户又常有互访的需求,此时就需要实现不同VLAN的用户互访,简称VLAN间互访。
同VLAN间互访一样,VLAN间互访也会经过用户主机的报文转发、设备内部的以太网交换、设备之间交互时VLAN标签的添加和剥离三个环节。同样,根据以太网交换原理,广播报文只在同一VLAN内转发,不同VLAN内的用户则不能直接二层互访,需要借助三层路由技术或VLAN转换技术才能实现互访。
华为提供了多种技术实现VLAN间互访,常用的两种技术为VLANIF接口和Dot1q终结子接口。
VLANIF接口是一种三层的逻辑接口。在VLANIF接口上配置IP地址后,设备会在MAC地址表中添加VLANIF接口的MAC地址+VID表项,并且为表项的三层转发标志位置位。当报文的目的MAC地址匹配该表项后,会进行三层转发,进而实现VLAN间的三层互通。
VLANIF配置简单,是实现VLAN间互访最常用的一种技术。但每个VLAN需要配置一个VLANIF,并在接口上指定一个IP子网网段,比较浪费IP地址。
子接口也是一种三层的逻辑接口。跟VLANIF接口一样,在子接口上配置Dot1q终结功能和IP地址后,设备也会添加相应的MAC表项并置位三层转发标志位,进而实现VLAN间的三层互通。
Dot1q终结子接口适用于通过一个三层以太网接口下接多个VLAN网络的环境。由于不同VLAN的数据流会争用同一个以太网主接口的带宽,网络繁忙时,会导致通信瓶颈。
通过VLANIF接口实现VLAN间互访,必须要求VLAN间的用户都只能处于不同的网段(因为相同网段,主机会封装目的主机的MAC地址,设备判断进行二层交换,二层交换只在同VLAN内,广播报文无法到达不同的VLAN,获取不到目的主机的MAC地址,也就无法实现互通)。现网中,也存在不同VLAN相同网段的组网需求,此时可通过VLAN聚合实现。
VLAN聚合(又称Super VLAN)通过引入Super-VLAN和Sub-VLAN,将一个Super-VLAN和多个Sub-VLAN关联,多个Sub-VLAN共享Super-VLAN的IP地址作为其网关IP,实现与外部网络的三层互通;并通过在Sub-VLAN间启用Proxy ARP,实现Sub-VLAN间的三层互通,进而即节约IP地址资源,又实现VLAN间的三层互通。
VLAN聚合通常用于多个VLAN共用一个网关的组网场景。
如下图:互访的源主机Host_1和目的主机Host_2连接在同一台设备Router上,分别属于VLAN2和VLAN3,并位于不同的网段。在Router上分别创建VLANIF2和VLANIF3并配置其IP地址,然后将用户主机的缺省网关设置为所属VLAN对应VLANIF接口的IP地址。
当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设Router上还未建立任何转发表项):
至此,Host_1完成对Host_2的单向访问。Host_2访问Host_1的过程与此类似。这样,后续Host_1与Host_2之间的往返报文,都先发送给网关Router,由Router查三层转发表进行三层转发。
由于VLANIF接口的IP地址只能在设备上生成直连路由,当不同VLAN的用户跨多台设备互访时,除配置VLANIF接口的IP地址外,还需要配置静态路由或运行动态路由协议。
如下图所示,互访的源主机Host_1和目的主机Host_2连接在不同的设备Router_1和Router_2上,分别属于VLAN2和VLAN3,并位于不同的网段。在Router_1上分别创建VLANIF2和VLANIF4,配置其IP地址为10.1.1.1和10.1.4.1;在Router_2上分别创建VLANIF3和VLANIF4,配置其IP地址为10.1.2.1和10.1.4.2,并在Router_1和Router_2上分别配置静态路由。Router_1上静态路由的目的网段是10.1.2.0/24,下一跳是10.1.4.2;Router_2上静态路由的目的网段是10.1.1.0/24,下一跳是10.1.4.1。
当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设Router_1和Router_2上还未建立任何转发表项):
如果指定VLAN已经创建对应的VLANIF接口,当VLAN中所有接口状态变为Down而引起VLAN状态变为Down时,VLAN会向VLANIF接口上报接口Down状态,从而引起VLANIF接口状态变化。
为避免由于VLANIF接口状态变化引起的网络震荡,可以在VLANIF接口上启动VLAN Damping功能,抑制VLANIF接口状态变为Down的时间。
当使能VLAN Damping功能,VLAN中最后一个处于Up状态的接口变为Down后,会抑制一定时间(抑制时间可配置)再上报给VLANIF接口。如果在抑制时间内VLAN中有接口Up,则VLANIF接口状态保持Up状态不变。即VLAN Damping功能可以适当延迟VLAN向VLANIF接口上报接口Down状态的时间,从而抑制不必要的路由震荡。
为了实现用户之间的二层隔离,可以将不同的用户加入不同的VLAN。但若企业规模很大,拥有大量的用户,那么就要为不能互相访问的用户都分配VLAN,这不但需要耗费大量的VLAN,还增加了网络管理者配置和维护的工作量。
为此,华为提供了一些VLAN内二层隔离技术,如端口隔离、MUX VLAN和基于MQC的VLAN内二层隔离等。
端口隔离可实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间的二层隔离,不同隔离组的端口之间或者不属于任何隔离组的端口与其他端口之间都能进行正常的数据转发。同时,用户还可以通过配置实现端口的单向隔离,为用户提供更安全、更灵活的组网方案。
MUX VLAN(Multiplex VLAN)提供了一种通过VLAN进行网络资源控制的机制。它既可实现VLAN间用户通信,也可实现VLAN内的用户相互隔离。
比如,企业有如下需求:
此种场景,通过部署MUX-VLAN就可以实现。
流策略是将流分类和流行为关联后形成的完整的QoS策略。基于流策略的VLAN内二层隔离指用户可以根据匹配规则对报文进行流分类,然后通过流策略将流分类与permit/deny动作相关联,使符合流分类的报文被允许或被禁止通过,从而实现灵活的VLAN内单向或双向隔离。
VLAN间实现三层互通后,两VLAN内的所有用户之间都可以互相访问,但某些场景中,需要禁止部分用户之间的互访或者只允许用户单向访问,比如用户主机和服务器之间一般是单向访问、企业的访客一般只允许上网和访问部分服务器等。此时,就需要配置VLAN间互访控制。
VLAN间互访控制一般通过流策略实现。用户可根据实际需求定义匹配规则对报文进行流分类,然后通过流策略将流分类与permit/deny动作相关联,使符合流分类的报文被允许或禁止通过,从而实现灵活的VLAN间互访控制。
当用户通过远端网管集中管理设备时,需要在设备上通过VLANIF接口配置IP地址作为设备管理IP,通过管理IP来STelnet到设备上进行管理。若设备上其他接口相连的用户加入该VLAN,也可以访问该设备,增加了设备的不安全因素。
这种情况下可以配置VLAN为管理VLAN(与管理VLAN对应,没有指定为管理VLAN的VLAN称为业务VLAN),不允许Access类型和Dot1q-tunnel类型接口加入该VLAN。由于Access类型和Dot1q-tunnel类型通常用于连接用户,限制这两种类型接口加入管理VLAN后,与该接口相连的用户就无法访问该设备,从而增加了设备的安全性。