为什么网络交换机会根据以太网类型/长度丢弃帧?

网络工程 转变 以太网 网络
2021-07-09 06:49:31

我有一个网络交换机 IC,我正在使用发送 BPDU 数据包。我可以发送带有 2 字节以太类型/长度字段的数据包,如下所示:81 00、80 00、91 00 和一些特殊的十六进制数。但是,如果我尝试像这样 00 27 。由于这个“00 27”数字,交换机丢帧。

这是某些特殊开关的规则吗?为什么以太类型/长度字段不能是任何数字来传递开关。我查看了数据表,没有关于此的主题。(顺便说一下 VLAN 功能关闭)

2个回答

有多种类型的以太网帧。当今常见的是 Ethernet-II 和 802.3 以太网。

它们都以相同的方式开始,但在到达 ethertype/length 字段时出现分歧。来自维基百科“以太网框架”

来自维基百科的以太网帧格式

“以太网类型或长度”字段用于判断它是 EthernetII 还是 802.3。如果该字段小于 1500,则表示该帧是 802.3 并且该字段指定长度。

因此,当您在该字段中放置 0x0027 时,您是在说您的帧是 802.3 以太网,并且它的长度是 39 个八位字节。这也意味着您可以在长度字段之后立即看到 LLC 标头。

来自 geeksforgeeks.com 的 802.3 以太网标头格式。DSAP/SSAP 字段指定 802.3 的内容。不是长度字段(您认为是 Ethertype 字段)。

在此处输入图片说明

这是一张wireshark捕获生成树框架的图片。长度字段为 0x0027(十进制 39)。之后是指示生成树的 0x42 的 DSAP 和 SSAP 字段,然后是控制字段,然后再访问数据。

在此处输入图片说明

要实现的另一件事是将LISTEN切换到生成树。他们处理框架。生成树帧用于交换机。因此,如果您向交换机发送格式正确的生成树帧,它将消耗该帧并相应地更新交换机上的生成树应用程序状态(这可能会触发其他生成树 BPDU 的发送)。

如果您向交换机发送错误的生成树 BPDU,它会丢弃它,因为它应该处理它,但这是错误的。

高达 1500 (0x05dc)的 EtherType/ Length值表示帧的有效载荷长度。值 1501-1535 (0x05dd-0x05ff) 未定义,真正的Ethertype值从 1536 (0x600) 开始。

接收交换机可能忽略了帧的其余部分,并且由于假定的 FCS 不匹配,它会丢弃错误帧。

您需要使用更大的值并注意您的私有 EtherType 不会与任何已使用的东西发生冲突。