Open vSwitch ETHERNET相关字段详解(eth_src/dl_src、eth_dst/dl_dst、eth_type/dl_type)

字段概览

备注:由于历史原因,某些字段会有多个名字,如下表,/后面表示该字段的其他名字

字段名 长度 格式 Masking 前置项 访问权限 OpenFlow 1.0 OpenFlow 1.1 NXM/OXM Support 描述
eth_src/dl_src 48位 以太网地址 支持任意位掩码 Ethernet 读/写 exact match only yes OF 1.2+ and OVS 1.1+ 以太网帧的源MAC地址
eth_dst/dl_dst 48位 以太网地址 支持任意位掩码 Ethernet 读/写 exact match only yes OF 1.2+ and OVS 1.1+ 以太网帧的目的MAC地址
eth_type/dl_type 16位 十六进制 不支持 Ethernet 只读 exact match only exact match only OF 1.2+ and OVS 1.1+ 表示装在这个以太网帧里的数据的类型

字段详解

以太网是Open vSwitch唯一一个支持的2层网络协议。eth_src/dl_src、eth_dst/dl_dst比较简单,分别匹配数据包的源MAC地址和目的MAC地址,以下重点解释eth_type/dl_type这个字段。

eth_type/dl_type

最常见的以太网帧的报文头格式为“Ethernet II”,如下:
在这里插入图片描述
在这种格式中,最后两个字节表示以太网的类型,并且值大于等于0x600 (1536),用于表示装在这个Frame里面数据的类型,此时eth_type/dl_type的值就取自这两个字节。
当最后两个字节<0x600时,则表示该帧不是Ethernet II格式,此时在Ethernet头后面一般会有一个802.2 LLC的头,OpenFlow和Open vSwitch只支持IEEE 802.3 SNAP格式的LLC头,即DSAP=0xaa、SSAP=0xaa、cntl=0x03,LLC后面会跟一个5个字节大小的SNAP,OpenFlow和OVS只支持org=0x000000的SNAP,在这个格式的以太网帧中,eth_type/dl_type的值取自SNAP的后两个字节的值。
在这里插入图片描述
当一个802.1Q头插入到Ethernet之后时,如下:
在这里插入图片描述
eth_type/dl_type取自Ethertype。
当在802.3 SNAP格式中插入802.1Q头时,如下:
在这里插入图片描述
此时eth_type/dl_type也取自Ethertype。
当一个数据包的报文头不满足上述格式时,OVS和OpenFlow把eth_type/dl_type设为0x5ff(OFP_DL_TYPE_NOT_ETH_TYPE)。

eth_type/dl_type各个取值的含义参考:EtherType

参考资料:

  1. IEEE 802.2 LLC协议
  2. 以太网帧格式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章