How OpenFlow Messages Get Routed from Switch to Controller in SDN

openflowsdnswitch

we all know that in SDN when a packet arrives at a switch if there isn't already a flow, matching this packet, the switch will generate a packet_in message and ask the controller for instructions.

my question is that if the openflow switch has absolutely no rules at boot-up, how can it communicate with the controller in the first place.
for example in the following diagram if PC1 wants to communicate with PC2, it will send it's packet to switch 1. since switch1 has no flow matching this packet it will try to consult the controller. the admin has configured each of the switches with IP address of the controller. but there is no flow pre-installed on switches to tell them where to send packets destined for the controller.

enter image description here

in Mininet there is a logical link between each switch and the host system running mininet. so each switch sends out the openflow messages on this logical link and it arrives at controller.

but in real networks we cannot connect each switch directly to the controller.

Best Answer

When the network is set up, the controller on recognizing the switch has been added to the network will install the default rule to ensure it gets messages from that switch that are not resolved by higher priority rules. All subsequent rules installed are considered higher priority.

but in real networks we cannot connect each switch directly to the controller.

In SDN networks all OpenFlow switches are directly connected to controllers. Recall that the routing intelligence is removed from OpenFlow switches and contained in the controller. An OpenFlow switch therefore cannot change its flow rules without that connection.

Traditional switches and routers do not connect to SDN controllers because they contain the routing algorithms that are centralized in SDN.

There are multiple ways to create the controller connection, but the principle remains that every OpenFlow switch talks directly to the controller which sits off the forwarding path.

Related Topic