华为交换机三种端口模式
VLAN数据帧格式
要使交换机能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用于标识数据帧所属的VLAN。
在一个VLAN交换网络中,以太网帧主要有以下两种形式:
-
有标记帧(Tagged帧):加入了4字节VLAN标签的帧。
-
无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的帧。
以太网链路包括接入链路(Access Link)和干道链路(Trunk Link)。接入链路用于连接交换机和用户终端(如用户主机、服务器、傻瓜交换机等),只可以承载1个VLAN的数据帧。干道链路用于交换机间互连或连接交换机与路由器,可以承载多个不同VLAN的数据帧。在接入链路上传输的帧都是Untagged帧,在干道链路上传输的数据帧都是Tagged帧。
交换机内部处理的数据帧一律都是Tagged帧。从用户终端接收无标记帧后,交换机会为无标记帧添加VLAN标签,重新计算帧校验序列(FCS),然后通过干道链路发送帧;向用户终端发送帧前,交换机会去除VLAN标签,并通过接入链路向终端发送无标记帧。
字段 | 长度 | 含义 | 取值 |
TPID | 2Byte |
Tag Protocol Identifier(标签协议标识符),表示数据帧类型。 |
取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。 各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。 |
PRI | 3bit |
Priority,表示数据帧的802.1p优先级。 |
取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧。 |
CFI | 1bit |
Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。 |
CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。 |
VID | 12bit |
VLAN ID,表示该数据帧所属VLAN的编号。 |
VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。
|
QinQ报文封装格式
因为IEEE 802.1Q中定义的VLAN Tag域只有12个比特,仅能表示4096个VLAN,无法满足城域以太网中标识大量用户的需求,于是产生了QinQ技术,拓展VLAN的数量空间。QinQ在原有的802.1Q报文的基础上增加一层802.1Q标签,使得VLAN数量增加到4094×4094。
链路类型:
用户主机和交换机之间的链路为接入链路,交换机与交换机之间的链路为干道链路。
PVID
PVID即Port VLAN ID,代表端口的缺省VLAN。交换机从对端设备收到的帧有可能是Untagged的数据帧,但所有以太网帧在交换机中都是以Tagged的形式来被处理和转发的,因此交换机必须给端口收到的Untagged数据帧添加上Tag。 为了实现此目的,必须为交换机配置端口的缺省VLAN。当该端口收到Untagged数据帧时,交换机将给它加上该缺省VLAN的VLAN Tag。
Access端口:
➢Access 端口是交换机上用来连接用户主机的端口,它只能连接接入链路,并且只能允许唯一的 VLAN ID 通过本端口。
➢Access 端口收发数据帧的规则如下:
➢1.如果该端口从链路上收到的帧是untagged (不带VLAN标签), 交换机将强制加上该端口的PVID。如果该端口从链路上收到的帧是tagged (带 VLAN标签),交换机会检查该标签内的VLANID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文。
➢2.当一个Tagged帧从本交换机其他端口到达Access端口后,交换机检查该Tagged帧的VID与PVID是否相同,如相同则先剥离帧的Tag,然后再发送。如不同则丢弃。
➢Access 端口发往对端设备的以太网帧永远是不带标签的帧。
总结:
Access端口在转发数据前会移除VLAN Tag。
Access端口在收到数据后会添加VLAN Tag,VL AN ID和端口的PVID相同。
实验:
在都是access端口上配置vlan,从pc16 ping pc17 仍然可以通信,实验证明access在转发的时候会剥夺vlan tag,并且受到数据会添加此端口的PVID
相关命令:
# 创建vlan [Huawei]vlan 2 # 进入接口 [Huawei-vlan2]int e0/0/1 # 设置端口类型 [Huawei-Ethernet0/0/1]port link-type access # 设置PVID [Huawei-Ethernet0/0/1]port default vlan 2
Trunk端口:
描述:
PC 18 能ping PC20
PC 19 能ping PC21
PC 18 不能与PC19互ping
PC 20 不能与PC21互ping
●当Trunk端口收到帧时,如果该帧不包含Tag,将添加上端口的PVID;如果该帧包含Tag,则不改变。
●当Trunk端口发送帧时,该帧的VLANID在Trunk的允许发送列表中:若与端口的PVID相同时,则剥离Tag发送;若与端口的PVID不同时,则直接发送。
相关命令:
# 设置接口类型为Access [Huawei-Ethernet0/0/2]port link-type access # 划分vlan [Huawei-Ethernet0/0/2]port default vlan 20 # 设置接口类型为Trunk [Huawei-GigabitEthernet0/0/1]port link-type trunk # 设置Trunk允许通过列表为all [Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan all
◆Trunk端口是交换机上用来和其他交换机连接的端口,它只能连接干道链路。Trunk端口允许多个VLAN的帧(带Tag标记)通过。
◆在本示例中,在两台交换机连接主机的端口为Access端口,PVID 如图所示。SW10和SW11互连的端口为Trunk端口,PVID都为1,此Trunk链路允许所有VLAN的流量通过。
当SWA转发VLAN1的数据帧时会剥离VLAN标签(因为PVID是1 跟PVID一致就会剥夺tag ),然后发送到Trunk链路上。而在转发VLAN20的数据帧时,不剥离VLAN标签直接转发到Trunk链路上。
Hybrid端口:
描述:
PC 22 能ping server
PC 23 能ping server
PC 22 与 PC 23 不能互ping
●Hybrid端口既可以连接主机,又可以连接交换机。
●Hybrid端口可以以Tagged 或Untagged方式加入VLAN 。
●Hybrid端口除了要配置PVID外,还需要配置Untagged VL AN ID列表和TaggedVLAN ID列表,这两个列表中所有VLAN的帧都允许通过这个Hybrid端口 , 华为设备默认的端口类型是Hybrid。
相关命令:
# 快速创建vlan [Huawei]vlan batch 2 3 100 # 设置接口vlan # 需要注意的是华为设备默认是hybrid口,少了一部设置接口的步骤。 # 还有就是如果设置Access口并且设置了除了vlan 1的其他vlan需要先设回vlan 1 再转成hybrid口才能设置成功 [Huawei-Ethernet0/0/1]port hybrid pvid vlan 2 # 设置untag表 允许通过 vlan 2 和vlan 100 ,通过剥夺tag,没有tag发送出去 [Huawei-Ethernet0/0/1]port hybrid untagged vlan 2 100 # 设置交换机与交换机之间的tag表 允许通过vlan 2 3 100 ,通过不剥夺tag,照原tag发送出去,所以PC和交换机之间不能设置tag表,PC不能处理tag [Huawei-GigabitEthernet0/0/1]port hybrid tagged vlan 2 3 100
Hybrid端口收发数据帧的规则如下:
1.当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID 是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
2. Hybrid 端口发送数据帧时,将检查该接口是否允许该VLAN数据帧通过。如果允许通过,则可以通过命令配置发送时是否携带Tag。
其实吧,也没那么复杂,在上面的拓扑图里面,PC22 发往 server的时候,PC是不带tag的,所以e0/0/1接口看他没有tag 就拿自己PVID的给了它,也就是VLAN 2,然后看自己的两个表里面untag跟tag表,发现untag有 vlan 2 和vlan 100 ,包含了,就允许通过,此时它是不会剥夺标签的(交换机内部处理的时候不会剥离标签)。然后再到g0/0/1口出去,发现vlan 2 在tag表里面,就允许通过,也不剥夺,在另一个交换机另一端g0/0/1口也是这种情况,接着到了e0/0/1口发现vlan 2 在untag表里面就剥夺了tag标签,发往server。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)