FeatureReq - FeatureRes

When a transport channel (TCP, SCTP, TLS) is established between the switch and controller the first activity is feature determination. The controller will send a FeatureReq to the switch over the transport channel. The feature request consists of just an OpenFlow header message, with the FeatureReq value set in the type field. The switch will then respond to this request with its capabilities. This basic sequence does not change across OF versions.
Initiator
Controller
Acknowledged
Yes

Structure

The FeatureRes is the switch's reply to the controller enumerating its abilities. The datapath-id is a 64 bit field that should be thought of as analogous to a Ethernet Switches bridge MAC, its a unique identifier for the specific packet processing pipeline being managed. One physical switch may have more than one datapath-id (think virtualization of the switch). The n_buffers field identifies how many packets the switch can queue for PacketIn (capture and forward to the controller) activities. The number of tables in the switch is captured by n_tbls. Pads are used to maintain byte alignment where necessary. Capabilities and actions display which general switch capabilities and actions are supported by the switch. Finally, sequence of ports is present in the trailer of message.

Message Structure

Name Bits Byte Ordering Constraints
datapath-id 64 MSBF none
n_buffers 32 MSBF none
n_tables 8 - none
pad 24 - none
capabilities 32 MSBF See below
actions 32 MSBF See below
phy_port[] - - PhyPort Constraints

Message Constraints

Field Name Value
Capabilities FLOW_STATS 0x00000001
TABLE_STATS 0x00000002
PORT_STATS 0x00000004
STP 0x00000008
RESERVED 0x00000010
IP_REASM 0x00000020
QUEUE_STATS 0x00000040
ARP_MATCH_IP 0x00000080
Field Name Value
Actions OUTPUT 0x00000001
SET_VLAN_VID 0x00000002
SET_VLAN_PCP 0x00000004
STRIP_VLAN 0x00000008
SET_DL_SRC 0x00000010
SET_DL_DST 0x00000020
SET_NW_SRC 0x00000040
SET_NW_DST 0x00000080
SET_NW_TOS 0x00000100
SET_TP_SRC 0x00000200
SET_TP_DST 0x00000400
ENQUEUE 0x00000800

References

OpenFlow Switch Specification 1.0.0, pages 25-26

Structure

The FeatureRes is the switch's reply to the controller enumerating its abilities. The datapath-id is a 64 bit field that should be thought of as analogous to a Ethernet Switches bridge MAC, its a unique identifier for the specific packet processing pipeline being managed. One physical switch may have more than one datapath-id (think virtualization of the switch). The n_buffers field identifies how many packets the switch can queue for PacketIn (capture and forward to the controller) activities. The number of tables in the switch is captured by n_tables. Pads are used to maintain byte alignment where necessary. Switch capabilities supported are expressed with the capabilities bitmask. Finally, sequence of ports is present in the trailer of message.

Message Structure

Name Bits Byte Ordering Constraints
datapath-id 64 MSBF none
n_buffers 32 MSBF none
n_tables 8 - none
pad 24 - none
capabilities 32 MSBF see table
reserved 32 - none
port[] - - Port Constraints

Message Constraints

Field Name Value
Capabilities FLOW_STATS 0x00000001
TABLE_STATS 0x00000002
PORT_STATS 0x00000004
GROUP_STATS 0x00000008
IP_REASM 0x00000020
QUEUE_STATS 0x00000040
ARP_MATCH_IP 0x00000080

References

OpenFlow Switch Specification 1.1.0, pages 36-37

Structure

The FeatureRes is the switch's reply to the controller enumerating its abilities. The datapath-id is a 64 bit field that should be thought of as analogous to a Ethernet Switches bridge MAC, its a unique identifier for the specific packet processing pipeline being managed. One physical switch may have more than one datapath-id (think virtualization of the switch). The n_buffers field identifies how many packets the switch can queue for PacketIn (capture and forward to the controller) activities. The number of tables in the switch is captured by n_tbls. Pads are used to maintain byte alignment where necessary. Switch capabilities supported are expressed with the capabilities bitmask. Finally, sequence of ports is present in the trailer of message.

Message Structure

Name Bits Byte Ordering Constraints
datapath-id 64 MSBF none
n_buffers 32 MSBF none
n_tables 8 - none
pad 24 - none
capabilities 32 MSBF see table
reserved 32 - none
port[] - - Port Constraints

Message Constraints

Field Name Value
Capabilities FLOW_STATS 0x00000001
TABLE_STATS 0x00000002
PORT_STATS 0x00000004
GROUP_STATS 0x00000008
IP_REASM 0x00000020
QUEUE_STATS 0x00000040
PORT_BLOCKED 0x00000100

References

OpenFlow Switch Specification 1.2.0, pages 43-44

Structure

The FeatureRes is the switch's reply to the controller enumerating its abilities. The datapath-id is a 64 bit field that should be thought of as analogous to a Ethernet Switches bridge MAC, its a unique identifier for the specific packet processing pipeline being managed. One physical switch may have more than one datapath-id (think virtualization of the switch). The n_buffers field identifies how many packets the switch can queue for PacketIn (capture and forward to the controller) activities. The number of tables in the switch is captured by n_tables. The auxiliary_id is to indicate how the switch is treating the OpenFlow transport channel (master controller, or auxiliary). Pads are used to maintain byte alignment where necessary. Switch capabilities supported are expressed with the capabilities bitmask.

Message Structure

Name Bits Byte Ordering Constraints
datapath-id 64 MSBF none
n_buffers 32 MSBF none
n_tables 8 - none
auxiliary_id 8 - none
pad 16 - none
capabilities 32 - see below
reserved 32 MSBF none

Message Constraints

Field Name Value
Capabilities FLOW_STATS 0x00000001
TABLE_STATS 0x00000002
PORT_STATS 0x00000004
GROUP_STATS 0x00000008
IP_REASM 0x00000020
QUEUE_STATS 0x00000040
PORT_BLOCKED 0x00000100

References

OpenFlow Switch Specification 1.3.0, pages 52-53

Structure

The FeatureRes is the switch's reply to the controller enumerating its abilities. The datapath-id is a 64 bit field that should be thought of as analogous to a Ethernet Switches bridge MAC, its a unique identifier for the specific packet processing pipeline being managed. One physical switch may have more than one datapath-id (think virtualization of the switch). The n_buffers field identifies how many packets the switch can queue for PacketIn (capture and forward to the controller) activities. The number of tables in the switch is captured by n_tables. The auxiliary_id is to indicate how the switch is treating the OpenFlow transport channel (master controller, or auxiliary). Pads are used to maintain byte alignment where necessary. Switch capabilities supported are expressed with the capabilities bitmask.

Message Structure

Name Bits Byte Ordering Constraints
datapath-id 64 MSBF none
n_buffers 32 MSBF none
n_tables 8 - none
auxiliary_id 8 - none
pad 16 - none
capabilities 32 - see below
reserved 32 MSBF none

Message Constraints

Field Name Value
Capabilities FLOW_STATS 0x00000001
TABLE_STATS 0x00000002
PORT_STATS 0x00000004
GROUP_STATS 0x00000008
IP_REASM 0x00000020
QUEUE_STATS 0x00000040
PORT_BLOCKED 0x00000100

References

OpenFlow Switch Specification 1.3.1, pages 61-62

Structure

The FeatureRes is the switch's reply to the controller enumerating its abilities. The datapath-id is a 64 bit field that should be thought of as analogous to a Ethernet Switches bridge MAC, its a unique identifier for the specific packet processing pipeline being managed. One physical switch may have more than one datapath-id (think virtualization of the switch). The n_buffers field identifies how many packets the switch can queue for PacketIn (capture and forward to the controller) activities. The number of tables in the switch is captured by n_tables. The auxiliary_id is to indicate how the switch is treating the OpenFlow transport channel (master controller, or auxiliary). Pads are used to maintain byte alignment where necessary. Switch capabilities supported are expressed with the capabilities bitmask.

Message Structure

Name Bits Byte Ordering Constraints
datapath-id 64 MSBF none
n_buffers 32 MSBF none
n_tables 8 - none
auxiliary_id 8 - none
pad 16 - none
capabilities 32 - see below
reserved 32 MSBF none

Message Constraints

Field Name Value
Capabilities FLOW_STATS 0x00000001
TABLE_STATS 0x00000002
PORT_STATS 0x00000004
GROUP_STATS 0x00000008
IP_REASM 0x00000020
QUEUE_STATS 0x00000040
PORT_BLOCKED 0x00000100

References

OpenFlow Switch Specification 1.3.2, pages 62-63

Structure

The FeatureRes is the switch's reply to the controller enumerating its abilities. The datapath-id is a 64 bit field that should be thought of as analogous to a Ethernet Switches bridge MAC, its a unique identifier for the specific packet processing pipeline being managed. One physical switch may have more than one datapath-id (think virtualization of the switch). The n_buffers field identifies how many packets the switch can queue for PacketIn (capture and forward to the controller) activities. The number of tables in the switch is captured by n_tables. The auxiliary_id is to indicate how the switch is treating the OpenFlow transport channel (master controller, or auxiliary). Pads are used to maintain byte alignment where necessary. Switch capabilities supported are expressed with the capabilities bitmask.

Message Structure

Name Bits Byte Ordering Constraints
datapath-id 64 MSBF none
n_buffers 32 MSBF none
n_tables 8 - none
auxiliary_id 8 - none
pad 16 - none
capabilities 32 - see below
reserved 32 MSBF none

Message Constraints

Field Name Value
Capabilities FLOW_STATS 0x00000001
TABLE_STATS 0x00000002
PORT_STATS 0x00000004
GROUP_STATS 0x00000008
IP_REASM 0x00000020
QUEUE_STATS 0x00000040
PORT_BLOCKED 0x00000100

References

OpenFlow Switch Specification 1.3.3, pages 66-67

Structure

The FeatureRes is the switch's reply to the controller enumerating its abilities. The datapath-id is a 64 bit field that should be thought of as analogous to a Ethernet Switches bridge MAC, its a unique identifier for the specific packet processing pipeline being managed. One physical switch may have more than one datapath-id (think virtualization of the switch). The n_buffers field identifies how many packets the switch can queue for PacketIn (capture and forward to the controller) activities. The number of tables in the switch is captured by n_tables. The auxiliary_id is to indicate how the switch is treating the OpenFlow transport channel (master controller, or auxiliary). Pads are used to maintain byte alignment where necessary. Switch capabilities supported are expressed with the capabilities bitmask.

Message Structure

Name Bits Byte Ordering Constraints
datapath-id 64 MSBF none
n_buffers 32 MSBF none
n_tables 8 - none
auxiliary_id 8 - none
pad 16 - none
capabilities 32 - see below
reserved 32 MSBF none

Message Constraints

Field Name Value
Capabilities FLOW_STATS 0x00000001
TABLE_STATS 0x00000002
PORT_STATS 0x00000004
GROUP_STATS 0x00000008
IP_REASM 0x00000020
QUEUE_STATS 0x00000040
PORT_BLOCKED 0x00000100

References

OpenFlow Switch Specification 1.4.0, pages 69-70