文章目录
- VLAN
- What-VLAN是什么
- When-VLAN是什么时候出现的
- Why-为什么需要VLAN
- How-VLAN是如何工作
- 预备知识
- VLAN通信简述流程
- 相同的VLAN间通信
- 不同的VLAN间通信
- VLAN的访问链接
- VLAN tag
- VLAN的接口类型和VLAN 标签的处理机制
- Access接口
- Trunk接口
- Hybrid接口
- 接口对比区别
- VLAN间路由
- 预备知识
- 同一VLAN内的通信时数据的流程
- 不同VLAN间通信时数据的流程
- 思考
- 扩展
- VLAN间访问控制列表(Inter-VLAN ACL)
- VLAN间服务质量(QoS)策略
- 总结
- REF
VLAN
What-VLAN是什么
VLAN(Virtual Local Area Network
,虚拟局域网)是一种网络技术,它在逻辑上将一个物理的局域网(LAN)划分为多个独立的广播域,即多个虚拟局域网。每个VLAN是一个逻辑上的隔离网络,其内部的设备可以像在独立的物理网络中一样进行通信,而不同VLAN之间的通信则需要通过路由器或三层交换机进行。
- 逻辑划分:
VLAN通过软件配置,根据网络策略(如业务需求、安全要求、地理位置等)将同一物理网络中的设备划分到不同的逻辑组(即VLAN)
。这些设备可以是计算机、服务器、打印机、交换机端口等。 - 广播域隔离: 每个VLAN构成了一个独立的广播域。广播、多播等流量仅限于同一VLAN内部传播,
不会跨越到其他VLAN,从而减少了不必要的网络流量,提高了网络效率,也增强了网络安全性。
- 基于标签的通信: VLAN中的数据帧在传输时会附加一个VLAN标签(IEEE 802.1Q标签),用于标识该帧所属的VLAN。
交换机根据标签进行数据帧的转发,确保同一VLAN内的设备可以相互通信,不同VLAN之间的通信则需要通过三层设备(如路由器、三层交换机)进行路由。
When-VLAN是什么时候出现的
VLAN(Virtual Local Area Network,虚拟局域网)这一概念最早出现在1990年代初,作为一种网络管理技术被提出,旨在解决传统以太网中广播域过大、网络资源难以有效隔离和管理的问题。
1. 1990年代初: VLAN概念被提出,最初的实现依赖于网络设备厂商的私有协议。
这些早期的VLAN解决方案主要由Cisco、3Com等网络设备制造商推出,用于在他们的交换机产品上实现网络分段。
2. 1990年代中期: IEEE(Institute of Electrical and Electronics Engineers)开始着手制定关于VLAN标准化的草案,旨在为不同厂商的网络设备提供统一的VLAN实现框架,增强不同设备间的互操作性。
3. 1998年: IEEE正式发布了802.1Q标准,这是关于VLAN标签规范的正式标准。
802.1Q标准定义了一种在以太网帧中插入4字节VLAN标签(VLAN Tag)的方法,使得交换机可以基于标签识别和处理属于不同VLAN的数据帧。这一标准的出台标志着VLAN技术进入了标准化和广泛普及的阶段。
Why-为什么需要VLAN
-
网络管理与资源分配: VLAN使得网络管理员可以根据业务需求、部门划分、地理位置等因素灵活地组织网络资源,简化网络管理,提高资源利用率。
-
广播风暴抑制: 通过将设备划分到不同的VLAN,可以有效控制广播域的范围,防止广播风暴的发生,保证网络稳定运行。
-
网络安全增强: VLAN提供了逻辑上的隔离,不同VLAN之间的通信需经由三层设备进行,可以实施更细粒度的安全策略,如访问控制列表(ACL)、防火墙规则等,防止非法访问和数据泄露。
-
QoS(Quality of Service)保障: VLAN可以为不同类型的网络流量(如语音、视频、数据等)分配独立的VLAN,实施差异化的QoS策略,确保关键业务的服务质量。
说人话就是,为了更灵活的管理设备,并且灵活的隔离广播域,避免频繁广播(ARP、DHCP、RIP等)对整个网络的影响。
注:所谓灵活,指的是软件层面进行广播域的分割,而不是通过端口的个数(硬件层面)进行分割!
How-VLAN是如何工作
预备知识
其实在知道其为什么引入的时候,我们其实可以自己设计一下VALN(如果让你来开发,你如何来设计)。
我能想到的就是:1.肯定要用不同的标识符去标识不同的ID;2.交换机内与交换机之间的处理肯定是不一样的。(我只能想这么多了,你可以思考你想到的)
在此之前,我们需要思考没有VALN的二层交换机:不同的PC的广播信息,都会无脑转发其他的所有端口。
所以当使用到VLAN后,他就不会按照硬件端口来转发广播信息了,而是通过区分不同的VLAN的标识符来转发广播信息。而这个VLAN的标识符就称之为“VLAN ID”。
VLAN通信简述流程
相同的VLAN间通信
在同一交换机下: 同一VLAN内设备直接通过交换机进行二层交换,交换机根据目的MAC地址在内部MAC地址表中查找并转发数据帧。无需VLAN标签或路由介入。
在不同交换机下: 同一VLAN内设备通过中继链路(Trunk Link)连接的交换机进行通信。数据帧携带VLAN标签,各交换机根据标签识别所属VLAN并依据内部MAC地址表进行二层转发,直至到达目的设备所在交换机。中继链路确保了VLAN信息在整个转发过程中得以保留和正确处理。
不同的VLAN间通信
在同一交换机下: 不同VLAN间设备无法直接通信,因为交换机根据VLAN划分隔离广播域。若需通信,需通过三层设备(如路由器)进行路由,或使用其他跨VLAN通信技术(如VLAN间路由、单臂路由、多层VLAN等)。
在不同交换机下: 不同VLAN间设备同样无法直接通信,需通过中继链路上传递至连接各交换机的三层设备(如路由器、三层交换机),由三层设备进行路由或使用相应的跨VLAN通信技术实现数据转发。中继链路确保VLAN标签传递到三层设备,以便正确识别和处理不同VLAN间的通信请求。
注:VLAN是广播域。而通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称作“VLAN间路由”。VLAN间路由,可以使用普通的路由器,也可以使用三层交换机。
VLAN的访问链接
VLAN tag
从上面的"VLAN通信简述流程"可以看出VLAN的实现至少是需要VLAN ID信息的表示标识的,但是在传统数据链路层首部字段中并未有相关的字段信息。所以需要引入VLAN相关的信息标识(这其实也就说明VLAN是后面网络发展中的产物)
字段 | 含义 |
---|---|
TPID(Tag Protocol Identifier) | 表示数据帧类型,如IEEE 802.1Q。 |
PRI(Priority) | 表示数据帧的802.1p优先级。 |
CFI(Canonical Format Indicator) | 表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。在以太网中,CFI的值为0。 |
VID(VLAN ID) | 标识了该数据帧所属的VLAN,数据帧只能在其所属VLAN内进行传输。 |
交换机内部处理的数据帧都带有VLAN标签。而交换机连接的部分设备(如用户主机、服务器)只会收发不带VLAN tag的传统以太网数据帧。因此,要与这些设备交互,就需要交换机的接口能够识别传统以太网数据帧,并在收发时给帧添加、剥除VLAN标签。添加什么VLAN标签,由接口上的缺省VLAN(Port Default VLAN ID,PVID)决定。
VLAN的接口类型和VLAN 标签的处理机制
现网中属于同一个VLAN的用户可能会被连接在不同的交换机上,且跨越交换机的VLAN可能不止一个,如果需要用户间的互通,就需要交换机间的接口能够同时识别和发送多个VLAN的数据帧。根据接口连接对象以及对收发数据帧处理的不同,当前有VLAN的多种接口类型,以适应不同的连接和组网。
不同厂商对VLAN接口类型的定义可能不同。对于华为设备来说,常见的VLAN接口类型有三种,包括:Access、Trunk和Hybrid。
预备知识:
在一个VLAN交换网络中,以太网数据帧主要有以下两种形式:
无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的帧。
有标记帧(Tagged帧):加入了4字节VLAN标签的帧。
Access接口
Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器)相连
,或者不需要区分不同VLAN成员时使用。
Access接口大部分情况只能收发Untagged帧,且只能为Untagged帧添加唯一VLAN的Tag。交换机内部只处理Tagged帧,所以Access接口需要给收到的数据帧添加VLAN Tag,也就必须配置缺省VLAN。配置缺省VLAN后,该Access接口也就加入了该VLAN。
当Access接口收到带有Tag的帧,并且帧中VID与PVID相同时,Access接口也能接收并处理该帧。
在发送带有Tag的帧前,Access接口会剥离Tag。
发送or接收 | 数据帧类型 | 处理行为 |
---|---|---|
接收 | 无tag | 添加VLAN tag(VID=PVID),加入 |
接收 | 有tag | 判断VID和PVID是否匹配,匹配则加入;不匹配则丢弃 |
发送 | 无tag | access接口则直接发送;trunk接口则添加VLAN tag(VID=PVID)再发送 |
发送 | 有tag | access接口则剥离VLAN tag再发送;trunk接口则直接发送 |
Trunk接口
Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。
它可以允许多个VLAN的帧带Tag通过,但只允许属于缺省VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。
Trunk接口上的缺省VLAN,有的厂商也将它定义为native VLAN。当Trunk接口收到Untagged帧时,会为Untagged帧打上Native VLAN对应的Tag。
Trunk接口是交换机上的一种特殊端口类型,设计用于承载多个VLAN的流量
发送or接收 | 数据帧类型 | 处理行为 |
---|---|---|
接收 | 无tag | 添加VLAN tag(VID=PVID),通过列表检查,在则转发;不在则丢弃 |
接收 | 有tag | 判断VID是否在允许通过VLAN列表中,在则根据内部MAC地址表决定是本地VALN内转发还是通过trunk接口转发到其他交换机或设备;不在则丢弃 |
发送 | 无tag | 添加VLAN tag(VID=PVID)转发 |
发送 | 有tag | 直接转发 |
Hybrid接口
Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器)和网络设备(如Hub),也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。
它可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag(即不剥除Tag)、某些VLAN的帧不带Tag(即剥除Tag)。
Hybrid接口和Trunk接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口。比如在灵活QinQ中,服务提供商网络的多个VLAN的报文在进入用户网络前,需要剥离外层VLAN Tag,此时Trunk接口不能实现该功能,因为Trunk接口只能使该接口缺省VLAN的报文不带VLAN Tag通过。
Hybrid接口是交换机上的一种端口类型,它结合了Access接口和Trunk接口的特点,提供了更为灵活的VLAN处理能力。
发送or接收 | 数据帧类型 | 处理行为 |
---|---|---|
接收 | 无tag | 添加VLAN tag(VID=PVID),通过列表检查,在则转发;不在则丢弃 |
接收 | 有tag | 判断VID是否在允许通过VLAN列表中,在则根据内部MAC地址表决定是本地VALN内转发还是通过trunk接口或Hybrid接口转发到其他交换机或设备;不在则丢弃 |
发送 | 无tag | 可以根据配置,选择是否为特定VLAN的Untagged帧添加VLAN标签(即Tagged发送),或者保持Untagged状态发送。 |
发送 | 有tag | 直接转发 |
接口对比区别
接口 | 目的 | untagged帧处理 | 发送数据帧灵活性 |
---|---|---|---|
Access | 主要用于连接终端设备,如工作站、打印机等,实现单个VLAN的接入。 | Access接口接收Untagged帧并认为属于PVID指定的VLAN | Access接口不支持发送Tagged帧 |
Trunk | 主要用于连接交换机之间或交换机与路由器、三层交换机等设备,实现多个VLAN的流量在同一物理链路上同时传输。 | Trunk接口通常不接收Untagged帧(除非特殊配置) | Trunk接口通常不发送Untagged帧(除非特殊配置) |
Hybrid | 提供更精细的VLAN控制,既能连接交换机间,也可连接终端设备,实现对Tagged和Untagged帧更灵活的处理。 | Hybrid接口可以接收更多配置的Untagged帧。 | Hybrid接口可以根据配置选择是否为Untagged帧添加VLAN标签。 |
VLAN间路由
预备知识
不同VLAN间不通过路由就无法通信。在LAN内的通信,必须在数据帧头中指定通信目标的MAC地址。而为了获取MAC地址,TCP/IP协议下使用的是ARP。ARP解析MAC地址的方法,则是通过广播。也就是说,如果广播报文无法到达,那么就无从解析MAC地址,亦即无法直接通信。
计算机分属不同的VLAN,也就意味着分属不同的广播域,自然收不到彼此的广播报文。因此,属于不同VLAN的计算机之间无法直接互相通信。
为了能够在VLAN间通信,需要利用OSI参照模型中更高一层——网络层的信息(IP地址)来进行路由。路由功能,一般主要由路由器提供。但在今天的局域网里,我们也经常利用带有路由功能的交换机——三层交换机(Layer 3 Switch)来实现。
同一VLAN内的通信时数据的流程
路由器与交换机都只用一条网线连接,使用trunk接口连接。
具体实现过程为:首先将用于连接路由器的交换机端口设为汇聚链接,而路由器上的端口也必须支持汇聚链路。双方用于汇聚链路的协议自然也必须相同。接着在路由器上定义对应各个VLAN的“子接口(Sub Interface)”。尽管实际与交换机连接的物理端口只有一个,但在理论上我们可以把它分割为多个虚拟端口。
计算机A与同一VLAN内的计算机B之间通信时的情形。
- 计算机A发出ARP请求信息,请求解析B的MAC地址。
- 交换机收到数据帧后,检索MAC地址列表中与收信端口同属一个VLAN的表项。
- 结果发现,计算机B连接在端口2上,于是交换机将数据帧转发给端口2,最终计算机B收到该帧。
收发信双方同属一个VLAN之内的通信,一切处理均在交换机内完成。
不同VLAN间通信时数据的流程
- 计算机A从通信目标的IP地址(192.168.2.1)得出C与本机不属于同一个网段。因此会向设定的默认网关(Default Gateway,GW)转发数据帧。在发送数据帧之前,需要先用ARP获取路由器的MAC地址。
- 得到路由器的MAC地址R后,接下来就是按图中所示的步骤发送往C去的数据帧。①的数据帧中,目标MAC地址是路由器的地址R、但内含的目标IP地址仍是最终要通信的对象C的地址。这一部分的内容,涉及到局域网内经过路由器转发时的通信步骤,有机会再详细解说吧。
- 交换机在端口1上收到①的数据帧后,检索MAC地址列表中与端口1同属一个VLAN的表项。由于汇聚链路会被看作属于所有的VLAN,因此这时交换机的端口6也属于被参照对象。这样交换机就知道往MAC地址R发送数据帧,需要经过端口6转发。
从端口6发送数据帧时,由于它是汇聚链接,因此会被附加上VLAN识别信息。由于原先是来自红色VLAN的数据帧,因此如图中②所示,会被加上红色VLAN的识别信息后进入汇聚链路。
4. 路由器收到②的数据帧后,确认其VLAN识别信息,由于它是属于红色VLAN的数据帧,因此交由负责红色VLAN的子接口接收。
接着,根据路由器内部的路由表,判断该向哪里中继。
由于目标网络192.168.2.0/24是蓝色VLAN,且该网络通过子接口与路由器直连,因此只要从负责蓝色VLAN的子接口转发就可以了。这时,数据帧的目标MAC地址被改写成计算机C的目标地址;并且由于需要经过汇聚链路转发,因此被附加了属于蓝色VLAN的识别信息。这就是图中③的数据帧。
5. 交换机收到③的数据帧后,根据VLAN标识信息从MAC地址列表中检索属于蓝色VLAN的表项。由于通信目标——计算机C连接在端口3上、且端口3为普通的访问链接,因此交换机会将数据帧除去VLAN识别信息后(数据帧④)转发给端口3,最终计算机C才能成功地收到这个数据帧。
进行VLAN间通信时,即使通信双方都连接在同一台交换机上,也必须经过:“发送方——交换机——路由器——交换机——接收方”这样一个流程。
详情参考REF:[图文并茂VLAN详解,让你看一遍就理解VLAN]
思考
其实VLAN的路由通信和无VLAN是差不多的,只是多了VLAN ID的判断。对吗?
- 相同点:
- 路由原理: 无论是有VLAN还是无VLAN环境,路由通信的基本原理都是基于IP地址进行路由决策。路由器根据数据包的目的IP地址查找路由表,确定下一跳地址,然后将数据包转发到相应的接口。
- 三层处理: 在路由器内部,对IP数据包的处理逻辑(如IP头部校验、TTL减一、路由表查找、IP选项处理等)在有VLAN和无VLAN环境下是相同的。
- 不同点:
- 数据帧的封装与解封装: 在有VLAN环境中,数据帧在进入路由器时需要解析VLAN标签(802.1Q标签),提取VLAN ID信息;在离开路由器时,根据需要可能需要重新封装VLAN标签。而在无VLAN环境中,数据帧无需处理VLAN标签。
- 接口与VLAN关联: 在有VLAN环境中,路由器上的接口(尤其是连接交换机的接口)通常与一个或多个VLAN关联,形成子接口。数据包的接收和发送需根据VLAN ID与接口(子接口)的关联情况进行。而在无VLAN环境中,接口直接对应物理网络,无需考虑VLAN关联。
- 路由表项与VLAN关联: 在有VLAN环境中,路由表项可能与特定VLAN相关联,尤其是在使用VLAN间路由(Inter-VLAN Routing)时。路由器在进行路由决策时,需要考虑数据包的源VLAN和目标VLAN,选择合适的路由表项。而在无VLAN环境中,路由表项与VLAN无关,仅基于目的IP地址进行路由决策。
- 访问控制与策略: 在有VLAN环境中,可能需要基于VLAN ID实施更细致的访问控制策略,如VLAN间访问控制列表(ACL)、VLAN间服务质量(QoS)策略等。这些策略在无VLAN环境中通常无需考虑VLAN ID。
其实VLAN就是引入VLAN tag字段,增加了软件标识虚拟LAN口的能力,灵活替换和扩展了硬件LAN口的限。
扩展
VLAN间访问控制列表(Inter-VLAN ACL)和VLAN间服务质量(QoS)策略是VLAN环境中用于控制不同VLAN间通信行为和网络流量的重要工具。以下是这两者概念的详细介绍:
VLAN间访问控制列表(Inter-VLAN ACL)
- 访问控制列表(ACL): 访问控制列表(Access Control List)是一种网络安全机制,用于定义允许或拒绝网络流量的规则。ACL规则通常基于数据包的源IP地址、目的IP地址、源端口、目的端口、协议类型等信息进行匹配。
- VLAN间ACL: 在VLAN环境中,VLAN间ACL(Inter-VLAN ACL)特指应用于不同VLAN间通信的ACL规则。这些规则用于控制来自一个VLAN的数据包能否访问另一个VLAN,以及访问的具体条件。
通过VLAN间ACL,网络管理员可以精细地管理不同VLAN间的访问权限,实现网络安全隔离、流量过滤和访问控制。例如,可以设置一个VLAN间ACL规则,禁止VLAN 10中的主机访问VLAN 20中的特定服务器端口,或者只允许VLAN 30中的特定IP地址与VLAN 40进行通信。
VLAN间服务质量(QoS)策略
- 服务质量(QoS): 服务质量(Quality of Service)是一种网络管理机制,旨在确保关键业务流量在网络中得到优先处理,避免非关键流量过度占用网络资源,从而保证网络性能和应用响应时间。QoS通过为不同类型的流量分配不同的优先级、带宽限制、丢弃策略等,实现对网络流量的差异化处理。
- VLAN间QoS: 在VLAN环境中,VLAN间QoS策略(Inter-VLAN QoS)特指应用于不同VLAN间通信的QoS规则。这些规则用于对跨越VLAN边界的流量进行分类、标记、优先级设置、带宽限制、拥塞控制等操作,以确保跨VLAN通信的质量。
例如,可以设置一个VLAN间QoS策略,对来自VLAN 50的视频会议流量标记为高优先级,并为其预留一定的带宽,以保证视频会议的流畅性,同时限制来自VLAN 60的普通网页浏览流量在跨VLAN传输时不超过一定的带宽。
总结
帮助理解记忆由来:软件层面隔离广播域 => VLAN ID => 数据帧增加VLAN tag =>传统数据帧和VLAN数据帧兼容 => VLAN 接口类型(Access、Trunk和Hybrid) => VLAN标签处理机制
REF
图文并茂VLAN详解,让你看一遍就理解VLAN
什么是VLAN?
VLAN数据帧格式