Configuring controllers for an OpenFlow switch
A switch can establish connections with multiple controllers. The controller role contains the following types:
Equal—In this role, the controller has full access to the switch and is equal to other controllers in the same role. By default, the controller receives all switch asynchronous messages such as packet-in and flow removed messages. The controller can send controller-to-switch messages to modify the state of the switch.
Master—This role is similar to the Equal role and has full access to the switch. The difference is that up to one controller in this role is allowed for a switch.
Slave—In this role, the controller has read-only access to the switch.
The controller cannot send controller-to-switch messages to perform the following tasks:
Deploy flow entries, group entries, and meter entries.
Modify the port and switch configurations.
Send Packet-out messages.
By default, the controller does not receive switch asynchronous messages except Port-status messages. The controller can send Asynchronous-Configuration messages to set the asynchronous message types it wants to receive.
When OpenFlow operation is initiated, a switch is simultaneously connected to multiple controllers in Equal state. A controller can request its role to be changed at any time.