不管在学习过程还是在实际的项目工作中,大家对 vlan 技术都不陌生而且都可以灵活运用,虽然会用但对于数据帧在何时打上 vlan tag,如何在 trunk 链路上传输、何时剥离 vlan tag 以及在华为交换机的交换机制又是怎样的呢?大家可能有这方面的困惑,今天有我和大家一块儿探讨一下数据帧交换的详细过程:
特别简单的环境:如上图所示有两台华为的 S3700 交换机分别是 SW1 和 SW2,各创建一个vlan 10,然后起一个 vlanif 10,它们在同一个网段互联地址为 10.1.12.1 和 10.1.12.2,现在问题来了,要想让这两个地址相互通信,SW1 和 SW2 的 E0/0/1 口的链路类型因为配置成哪种模式呢?
我这有三个选项:
具体哪个可以实现通信以及是如何实现通信的呢,我们通过实验验证来分析一下:
通过测试两端的链路类型都为 access 时可以相互通信,分析通信过程:SW1 向 SW2 发ping 包,假如 SW1 已知 SW2 的 MAC 地址,在这里我们不去过多讨论 ARP,SW1 和 SW2在同一个网段可以完成三层封装,创建了 vlan 并起了 vlanif 10,二层封装时就由Ethernet2 帧添加了 vlan tag 10 变成了 802.1q 的帧格式,交换机查找 MAC 地址表需要从 SW1 的 E0/0/1 口发出,E0/0/1 的链路类型为 access 在发送数据帧时需要剥离 tag,这时在链路上传输时二层帧是 Ethernet2 型(如图 2),到达 SW2 的 E0/0/1 口,此端口的链路的类型也为 access,access 在接收到没有打 tag 的数据帧时打上接口的 PVID 10,再交由 vlanif 10 的三层接口剥离 vlan tag 10 数据包到达了 SW2,通信是一个双向的过程一去一回,反之毅然,从而实现了双方通信。
“ 注:华为交换机 access 口的 vlan id 就是端口的 PVID ; ”
图 2:
通过测试两端的链路类型都为 trunk 时可以相互通信,分析通信过程:SW1 向 SW2 发ping 包,假如 SW1 已知 SW2 的 MAC 地址,在这里我们不去过多讨论 ARP,SW1 和 SW2在同一个网段可以完成三层封装,创建了 vlan 并起了 vlanif 10,二层封装时就由Ethernet2 帧添加了 vlan tag 10 变成了 802.1q 的帧格式,交换机查找 MAC 地址表需要从 SW1 的 E0/0/1 口发出,E0/0/1 的链路类型为 trunk 在发送数据帧时查看该帧的 VLANID 10 在 Trunk 的允许发送列表中,在我们没有修改 trunk 端口 pvid 时默认为 1,则直接发送,这时在链路上传输时二层帧是打上 vlan tag 的 802.1q 帧格式(如图 3),到达 SW2的 E0/0/1 口,此端口的链路的类型也为 trunk,trunk 口在接收到打 tag 的数据帧时不做改变,再交由 vlanif 10 的三层接口剥离 vlan tag 10 数据包到达了 SW2,通信是一个双向的过程一去一回,反之毅然,从而实现了双方通信。
图 3:
通过测试一端为 access 一端为 trunk 不能相互通信,分析原因:SW1 向 SW2 发 ping 包,由于 SW1 不知道 SW2 的 MAC 地址,需要发送 ARP 请求,创建了 vlan 并起了 vlanif 10,ARP 的封装在 Ethernet2 帧添加了 vlan tag 10 变成了 802.1q 的帧格式,从 SW1 的 E0/0/1口发出,E0/0/1 的链路类型为 trunk 在发送数据帧时查看该帧的 VLAN ID 10 在 Trunk 的允许发送列表中,在我们没有修改 trunk 端口 pvid 时默认为 1,则直接发送,这时在链路上传输时二层帧是打上 vlan tag 的 802.1q 帧格式(如图 4),到达 SW2 的 E0/0/1 口,此端口的链路的类型access,access口在收到一个打vlan tag的数据帧时会丢弃此数据帧,所以双方无法通信。
图 4:
当 trunk 口的 PVID 为 10 时,SW1 在从 trunk 口发送数据帧时查看该帧的 VLAN ID 10 在Trunk 的允许发送列表中,而端口的 pvid 和 vlan tag 一致时,则剥离 vlan tag 发送,这时在链路上传输时二层帧是 Ethernet2 型(如图 5),到达 SW2 的 E0/0/1 口,此端口的链路的类型也为 access,access 在接收到没有打 tag 的数据帧时打上接口的 PVID 10,再交由 vlanif 10 的三层接口剥离 vlan tag 10 数据包到达了 SW2,通信是一个双向的过程一去一回,反之毅然,从而实现了双方通信。
图 5:
上述实验里提到了 PVID,大家对 PVID 了解多少呢,通过以下实验来巩固一下吧!
情况一、
AR1 可以和 AR2 通信吗?
答案是不通,分析原因:
AR1 上首次和 AR2 通信没有对端的 MAC 地址无法完成二层封装,首先由 AR1 发起 ARP请求,到达 SW1 的 E0/0/2 口,E0/0/2 口为 access 在收到一个没有打 vlan tag 的数据帧是打上端口的 pvid 10,在交换机内泛洪,从 E0/0/1 口发出,E0/0/1 口的链路类型为 trunk在发送数据帧时查看该帧的 VLAN ID 10 在 Trunk 的允许发送列表中, trunk 端口 pvid 为20,则直接发送,到达 SW2 的 E0/0/1 口,此端口的链路的类型也为 trunk,trunk 口在接收到打 tag 的数据帧时不做改变,交换机内部需要交由 vlan10 的端口去处理,SW2上 E0/0/2 不属于 vlan10 不做处理,最终是 ARP 请求失败无法通信(如图 6)
图 6:
情况二、
答案是不通,但可以实现 AR1 到 AR2 的单向通信.
分析原因:AR1 上首次和 AR2 通信没有对端的 MAC 地址无法完成二层封装,首先由 AR1 发起 ARP请求,到达 SW1 的 E0/0/2 口,E0/0/2 口为 access 在收到一个没有打 vlan tag 的数据帧是打上端口的 pvid 10,在交换机内泛洪,从 E0/0/1 口发出,E0/0/1 口的链路类型为 trunk在发送数据帧时查看该帧的 VLAN ID 10 在 Trunk 的允许发送列表中, trunk 端口 pvid 为20,则直接发送,到达 SW2 的 E0/0/1 口,此端口的链路的类型也为 trunk,trunk 口在接收到打 tag 的数据帧时不做改变,交换机内部需要交由 vlan10 的端口去处理,E0/0/2端口类型为 access,在发送数据帧是剥离 vlan tag 到达 AR2,实现了单向通信,但是 AR2在 ARP 请求时以单播形式到达 SW2 的 E0/0/2 口打上 pvid 10 ,从 E0/0/1 口发出时查看该帧的VLAN ID 10在Trunk的允许发送列表中, trunk端口pvid和vlan tag相同,剥离vlantag 发送,到达 SW1 的 E0/0/1 口为 trunk,该帧不包含 Tag,将打上端口的 PVID 20,交换机内部需要交由 vlan20 的端口去处理,SW1 上 E0/0/2 不属于 vlan20 不做处理,最终是 ARP reply 失败,无法通信。(如图 7)
“ 注:华为交换机 access 口的 vlan id 就是端口的 PVID ; ”
图 7: R1 的接口 MAC 地址为:
AR2 收到了 AR1 的 ARP 请求
情况三、
答案是可以互通,分析原因:
假设 AR1 已知 AR2 的 MAC 地址,AR1 发送 ping 包,到达 SW1 的 E0/0/2 为 access,在收到一个没有打 vlan tag 的数据帧打上端口的 pvid 10,交换机内部交由 E0/0/1 口发送,E0/0/1 为 trunk 链路,该帧的 VLAN ID 10 在 Trunk 的允许发送列表中, trunk 端口 pvid 和vlan tag 相同,剥离 vlan tag 发送,在 trunk 链路上传输时此数据帧为 Ethernet2 型(如图 8),到达 SW2 的 E0/0/1 口时,E0/0/1 口为 trunk 链路,该帧不包含 Tag,将打上端口的 PVID 20,交换机内部需要交由 vlan20 的端口去处理,SW2 上 E0/0/2 为 access,在发送数据帧时剥离 tag 发送,数据成功到达 AR2,通信是一个双向的过程一去一回,反之毅然,从而实现了双方通信。
“ 注:华为交换机 access 口的 vlan id 就是端口的 PVID ”
图 8:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有