VLAN(Virtual Local Area Network)即虚拟局域网,工作在数据链路层。
交换机将通过:接口、MAC、基于子网、协议划分(IPv4和IPv6)、基于策略的方式划分VLAN的方式,将接入的设备进行划分。
- 目的:
- VLAN 可以将同一个物理网络划分为多个逻辑网段,从而减小广播域,节约交换机性能,抑制网络风暴。
- VLAN之间无法二层互通,可以隔离业务,增强网络安全性。
以太网报文
- 在交换机中以太网(EtherNet)有untag和tag两种报文。untag帧即终端可以识别的普通以太网帧。tag帧在源mac地址(SA)和帧负载(Frame Load)之间有一段4Byte的Tag字段。
帧 | 特点 |
Ethernet帧 | untag,一般指端设备可识别 |
802.1q帧 | 在Ethernet帧的基础上加上Tag字段,一般用于交换机之间 |
图1.802.1q帧tag示意图
- 这个Tag字段中主要内容是VLAN ID,保存着VLAN。
- VLAN ID占用12bit,可以记录到4096个数字,去除全0和全1的情况,所以VLAN范围为1-4094。
- CFI占用1bit,0代表以太网,1代表令牌环网(Token Ring)。
PIVD和三种vlan接口工作模式
因为tag的存在,交换机可以识别选择性处理数据帧,但是终端设备是无法正常的识别tag,所以交换机需要为出入端口的数据帧进行处理。
可以这样理解,交换机之间使用含tag的语言交流,终端只懂untag语言,所以需要端口承担不同的工作模式。
PVID
PVID(Port Default VLAN ID)指的是端口缺省VLAN(端口默认VLAN ID),在实际上配置中,我们实际上是给端口配置pvid,pvid可以理解就是这个接口要处理端口的一个参数,在处理报文时候需要使用。
ps:这里的收发是站在交换机的角度出发,即入接口为交换机收,同理出接口为交换机发。发的时候交换机不会检查是否是tag帧还是untag帧,因为从交换机cpu处理过的都是tag帧。
ps:一下简化一下,untag帧即为标准的以太网帧,tag帧为带有vlan的802.1q帧。
Access接口:
- 用于交换机连接终端设备,在配置交换机的时候只需要配置port default vlan id即pvid,用于生成vlan id为tag的,不涉及allowed list和tag list、untag list。
- 收:
- untag帧,打上端口pvid后接收;
- tag帧(话说应该是接错了到交换机),看vlan id是否等于pvid,相同则接受,不相同就丢弃
- 发:
- 将帧中tag字段剔除后发送。
[alittlemcSW]interface GigabitEthernet 0/0/1 [alittlemcSW-GigabitEthernet0/0/1]port link-type access [alittlemcSW-GigabitEthernet0/0/1]port default vlan 10
Trunk接口:
- 用于交换机之间的级联。trunk可以设置多个可以通过的vlan id或范围,即allow-pass list。
- 收:
- untag帧,打上pvid,后转发;
- tag帧,判断vlan id是否是为allow-pass list中允许的vlan id,允许则接收,否则丢弃。
发(必是tag帧):
- 比较帧vlan id和端口pvid是否相同,相同则去掉tag发送,不相同直接发送。
[alittlemcSW]interface GigabitEthernet 0/0/2 [alittlemcSW-GigabitEthernet0/0/2]port link-type trunk [alittlemcSW-GigabitEthernet0/0/2]port trunk allow-pass vlan all [alittlemcSW-GigabitEthernet0/0/2]port trunk pvid vlan 10
Hybrid接口:
注意,Hybrid为华为专有的接口,所以思科锐捷这些是没有的哦,而且默认华为交换机就默认使用此模式。
- 兼容了access和trunk的特点,接在交换机或终端均可。
- 收(其实是和Trunk的接收操作是一样的):
- untag帧,打上pvid,后转发;
- tag帧,判断vlan id是否是为tag list(和trunk中allow-pass list效果一致)中允许的vlan id,允许则接收,否则丢弃。
- 发(在hybrid中有tagged list和untagged list):
- 检查tag帧中的vlan id,属于tag list,直接转发;属于untag list中则剔除tag帧的tag后变为untag帧转发。
[alittlemcSW]interface GigabitEthernet0/0/3 [alittlemcSW-GigabitEthernet0/0/3]port hybrid pvid vlan 10 [alittlemcSW-GigabitEthernet0/0/3]port hybrid tagged vlan 20 30 #允许带vlan20 30的tag直接通过,对应trunk模式 [alittlemcSW-GigabitEthernet0/0/3]port hybrid untagged vlan 10 100 200 #发送时将vlan10 100 200的tag字段剔除,对应access模式
- hybrid和trunk模式其实很相似,在收时候一致。在发时候,因为pvid只有一个,hybrid允许untagged list中多个vlan id帧直接剔除tag发送,而trunk只会对和pvid相同的vlan id帧剔除tag发送。
VLAN IF
vlan if是交换机虚拟出来的三层接口,可以设置ip,每一个vlan对应一个vlan if,主要用作为vlan网关。我们需要通过网络层的路由从而实现不同之间vlan之间数据互访。 同时也可以实现同vlan不同子网的互访。
众所周知,不同vlan可以使用网络层来实现通信,不同网段使用网关的路由来通信。基于此,我整理了两个实验。
使用vlanif IP作为用户网关的情况下都可以实现不同子网、不同VLAN通信。
同vlan不同子网通讯
vlanif甚至可以和路由器ip一样很方便的使用:同VLAN下不同网段之间路由,比如某个项目由不同公司负责,一期项目使用了10.10.10.0/24网段、二期使用10.10.20.0/24网段。
图2.拓扑1
#将1,2,3端口都划分到vlan10 access [alittlemcSW]port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/3 [alittlemcSW-port-group]port link-type access [alittlemcSW-port-group]port default vlan 10
直接设置vlanif sub
[alittlemcSW]interface vlanif 10 [alittlemcSW-Vlanif10]ip address 10.10.10.254 24 [alittlemcSW-Vlanif10]ip adderss 10.10.20.254 24 sub [alittlemcSW-Vlanif10]ip adderss 10.10.31.254 22 sub
不同VLAN通信子网使用
基于上次的实验微调了一下,不同vlan之间的通信的原理也包含其中啦,只要配置了vlanif,vlanif都在本机内可以直同路由。
图3.拓扑2
直接上配置。
# interface Vlanif10 ip address 10.10.10.254 255.255.255.0 ip address 10.10.31.254 255.255.252.0 sub # interface Vlanif20 ip address 10.10.20.254 255.255.255.0 # interface GigabitEthernet0/0/1 port link-type access port default vlan 10 # interface GigabitEthernet0/0/2 port link-type access port default vlan 20 # interface GigabitEthernet0/0/3 port link-type access port default vlan 10 #
如果是不同的交换机之间,配置是一样的,只不过要注意配置静态路由即可。
其他
QinQ
QinQ(802.1Q in 802.1Q)也被称之为VLAN Stacking或Double VLAN。(详细可见什么是QinQ? 为什么需要QinQ? - 华为 (huawei.com))
我们的802.1q帧多了4Byte用于存放Tag,其中VLAN ID占用12bit,即vlan id的范围1到4064。但是某些情况下一个需要大量的vlan就可能不够用,QinQ在以太网帧中插入了两段tag信息,即可以实现存储4064x4064个vlan的效果。
图4.QinQ
更新日志
- 2022年10月21日19:22:40
- 完成了vlan的介绍、三种接口模式、vlanif的应用
- 预告-后面会更新vlan的划分->接口、MAC、基于子网、协议划分(IPv4和IPv6)、基于策略的方式划分VLAN的方式
- 2022年10月21日20:03:20
- 修改了代码块的语法高亮