Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   ovs-fields    ( 7 )

поля заголовка протокола в OpenFlow и Open vSwitch (protocol header fields in OpenFlow and Open vSwitch)

LAYER 2 (ETHERNET) FIELDS

Summary: Name Bytes Mask RW? Prereqs NXM/OXM Support

───────────────────── ────── ───── ──── ───────── ───────────────────── eth_src aka dl_src 6 yes yes Ethernet OF 1.2+ and OVS 1.1+ eth_dst aka dl_dst 6 yes yes Ethernet OF 1.2+ and OVS 1.1+

eth_type aka dl_type 2 no no Ethernet OF 1.2+ and OVS 1.1+

Ethernet is the only layer-2 protocol that Open vSwitch supports. As with most software, Open vSwitch and OpenFlow regard an Ethernet frame to begin with the 14-byte header and end with the final byte of the payload; that is, the frame check sequence is not considered part of the frame.

Ethernet Source Field

Name: eth_src (aka dl_src)

Width: 48 bits Format: Ethernet Masking: arbitrary bitwise masks

Prerequisites: Ethernet Access: read/write OpenFlow 1.0: yes (exact match only)

OpenFlow 1.1: yes OXM: OXM_OF_ETH_SRC (4) since OpenFlow 1.2 and Open vSwitch 1.7

NXM: NXM_OF_ETH_SRC (2) since Open vSwitch 1.1

The Ethernet source address:

Ethernet <----------> 48 48 16 +---+---+----+ |dst|src|type| ... +---+---+----+

Ethernet Destination Field

Name: eth_dst (aka dl_dst)

Width: 48 bits Format: Ethernet Masking: arbitrary bitwise masks

Prerequisites: Ethernet Access: read/write OpenFlow 1.0: yes (exact match only)

OpenFlow 1.1: yes OXM: OXM_OF_ETH_DST (3) since OpenFlow 1.2 and Open vSwitch 1.7

NXM: NXM_OF_ETH_DST (1) since Open vSwitch 1.1

The Ethernet destination address:

Ethernet <----------> 48 48 16 +---+---+----+ |dst|src|type| ... +---+---+----+

Open vSwitch 1.8 and later support arbitrary masks for source and/or destination. Earlier versions only support masking the destination with the following masks:

01:00:00:00:00:00 Match only the multicast bit. Thus, dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 matches all multicast (including broadcast) Ethernet packets, and dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 matches all unicast Ethernet packets.

fe:ff:ff:ff:ff:ff Match all bits except the multicast bit. This is probably not useful.

ff:ff:ff:ff:ff:ff Exact match (equivalent to omitting the mask).

00:00:00:00:00:00 Wildcard all bits (equivalent to dl_dst=*).

Ethernet Type Field

Name: eth_type (aka dl_type) Width: 16 bits Format: hexadecimal

Masking: not maskable Prerequisites: Ethernet Access: read-only OpenFlow 1.0: yes (exact match only) OpenFlow 1.1: yes (exact match only)

OXM: OXM_OF_ETH_TYPE (5) since OpenFlow 1.2 and Open vSwitch 1.7 NXM: NXM_OF_ETH_TYPE (3) since Open vSwitch 1.1

The most commonly seen Ethernet frames today use a format called ``Ethernet II,'' in which the last two bytes of the Ethernet header specify the Ethertype. For such a frame, this field is copied from those bytes of the header, like so:

Ethernet <----------------> 48 48 16 +---+---+----------+ |dst|src| type | ... +---+---+----------+ ≥0x600

Every Ethernet type has a value 0x600 (1,536) or greater. When the last two bytes of the Ethernet header have a value too small to be an Ethernet type, then the value found there is the total length of the frame in bytes, excluding the Ethernet header. An 802.2 LLC header typically follows the Ethernet header. OpenFlow and Open vSwitch only support LLC headers with DSAP and SSAP 0xaa and control byte 0x03, which indicate that a SNAP header follows the LLC header. In turn, OpenFlow and Open vSwitch only support a SNAP header with organization 0x000000. In such a case, this field is copied from the type field in the SNAP header, like this:

Ethernet LLC SNAP <------------> <------------> <-----------------> 48 48 16 8 8 8 24 16 +---+---+------+ +----+----+----+ +--------+----------+ |dst|src| type | |DSAP|SSAP|cntl| | org | type | ... +---+---+------+ +----+----+----+ +--------+----------+ <0x600 0xaa 0xaa 0x03 0x000000 ≥0x600

When an 802.1Q header is inserted after the Ethernet source and destination, this field is populated with the encapsulated Ethertype, not the 802.1Q Ethertype. With an Ethernet II inner frame, the result looks like this:

Ethernet 802.1Q Ethertype <------> <--------> <--------> 48 48 16 16 16 +----+---+ +------+---+ +----------+ |dst |src| | TPID |TCI| | type | ... +----+---+ +------+---+ +----------+ 0x8100 ≥0x600

LLC and SNAP encapsulation look like this with an 802.1Q header:

Ethernet 802.1Q Ethertype LLC SNAP <------> <--------> <-------> <------------> <-----------------> 48 48 16 16 16 8 8 8 24 16 +----+---+ +------+---+ +---------+ +----+----+----+ +--------+----------+ |dst |src| | TPID |TCI| | type | |DSAP|SSAP|cntl| | org | type | ... +----+---+ +------+---+ +---------+ +----+----+----+ +--------+----------+ 0x8100 <0x600 0xaa 0xaa 0x03 0x000000 ≥0x600

When a packet doesn't match any of the header formats described above, Open vSwitch and OpenFlow set this field to 0x5ff (OFP_DL_TYPE_NOT_ETH_TYPE).