written 5.2 years ago by |
Controller-to-switch messages are initiated by the controller and used to directly manage or inspect the state of the switch. This type of messages may or may not require a response from the switch and are categorized in the following subtypes.
Features
Upon establishment of the TLS session, the controller sends a feature request message to the switch. The switch must reply with a features reply message that specifies the features and capabilities that are supported by the switch.
Configuration
The controller is able to set and query configuration parameters in the switch. The switch only responds to a query from the controller.
Modify-State
These messages are sent by the controller to manage the state of the switches. They are used to add/delete or modify flow table entries or to set switch port priorities.
ADD: For the ADD requests with the OFPFF_CHECK_OVERLAP flag set, the switch must first check for any overlapping flow entries. Two flow entries overlap if a single packet may match both, and both entries have the same priority. If an overlap conflict exists between an existing flow entry and the ADD request.
MODIFY: If a flow entry with an identical header field does not currently reside in the flow table, the MODIFY command acts like an ADD command, and the new flow entry must be inserted with zeroed counters. Otherwise the actions field is changed on the existing entry and its counters and idle timeout fields are left unchanged.
DELETE: For delete requests, if no flow entry matches, no error is recorded and no flow table modification occurs. If a flow entry matches, the entry must be deleted, and then each normal entry with the OFPFF_SEND_FLOW_REM flag set should generate a flow removal message. Deleted emergency flow entries generate no flow removal messages.
Read-State
These messages collect statistics from the switch flow tables, ports, and the individual flow entries.
Send-Packet
These are used by the controller to send packets out of a specified port on the switch.
Barrier
Barrier request/reply messages are used by the controller to ensure message dependencies have been met or to receive notifications for completed operations.