control channelnorthbound.10telnet → dropto .20 → port 2any → controllerto .20 → port 3any → controllerto .20 → port 4any → controller.20no matchdrop ✕arrived ✓block tcp 23run 3 as a clusterone policy, many sites
Envelope: a packet or an OpenFlow message on its wayRows: a switch's flow table (match → action), highest priority at the backDotted lanes: the control channel and the northbound APIGold: the controller, the control plane for every switchThree switches lose their own control plane to one controller, which writes rows into their flow tables; the switches then forward on their own. Envelopes are packets and OpenFlow messages; the coloured rows on each switch are its flow table, highest priority at the back. The words control plane, forwarding (data) plane, northbound and southbound interface follow RFC 7426, the IETF’s SDN terminology. Hosts use the private network 192.168.1.0/24 and the switches and controller a separate private control network, 192.168.100.0/24 (RFC 1918). MAC addresses come from the 00:00:5e:00:53:xx documentation block (RFC 7042).

Two planes

  1. A switch or router does two jobs. The control plane decides where traffic should go. The data plane moves each packet out of the right port, very fast. Normally every box does both jobs, on its own.

Flow tables

Apps and policy

Trade-offs

The tables and the messages

;; step 1/11 · two-jobs · local
;; at s1 + s2 + s3
inside a classic switch or router:
  control plane  decides: learns the map, builds the tables
  data plane     forwards: looks up each packet, sends it out a port
3 switches = 3 separate brains, each with its own view
changing a rule means logging in to every box

Flow tables, the table-miss row (priority 0, matches anything), PACKET_IN, FLOW_MOD and PACKET_OUT are from the OpenFlow Switch Specification 1.5.1 (ONF). OpenFlow runs over TCP, optionally TLS, on IANA port 6653. A table-miss row is just a normal row with priority 0. If a switch has none, OpenFlow drops packets that match nothing. How much of the packet goes up is set by the row’s output action (max_len), for example 128 bytes, or the whole packet. SD-WAN is described by MEF 70. Products differ: most use their own control protocols between the controller and the site routers, not OpenFlow.