字段概覽
備註:由於歷史原因,某些字段會有多個名字,如下表,/後面表示該字段的其他名字
字段名 | 長度 | 格式 | 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
參考資料: