Software-Defined Networking: Control and Data Plane Separation
I built working intuition for SDN by separating the control plane from the data plane on Mininet with Open vSwitch and a remote controller. Decoupling forwarding decisions from forwarding hardware enables programmable, centrally managed networks.
Objective & Context
Traditional switches couple control and forwarding in every box. SDN centralizes control logic and exposes it through northbound APIs to applications and southbound protocols (OpenFlow) to switches. This lab grounds those abstractions in a runnable topology.
Environment & Prerequisites
- Mininet with Open vSwitch; a controller (Ryu/ONOS) reachable.
- Python 3 for controller apps; OpenFlow 1.3 support.
- Basic switching/routing knowledge.
flowchart TB
App[Network App] -->|northbound API| Ctl[SDN Controller]
Ctl -->|southbound OpenFlow| SW1[OVS Switch 1]
Ctl --> SW2[OVS Switch 2]
SW1 --- H[Hosts]
Step-by-Step Execution
1. Launch a Mininet topology with a remote controller
mn --topo tree,2 --controller remote,ip=127.0.0.1 --switch ovsk,protocols=OpenFlow132. Inspect the switch's OpenFlow datapath
ovs-ofctl -O OpenFlow13 dump-flows s1cookie=0x0, table=0, priority=0 actions=CONTROLLER:65535
3. Confirm controller connection
ovs-vsctl get-controller s1Validation & Testing
With the controller down, confirm switches have no proactive flows and traffic fails; bring it up and confirm reactive flows install. Pass criteria: forwarding behaviour visibly depends on the centralized controller.
Advanced: Troubleshooting
- Switch not connecting: verify controller IP/port and matching OpenFlow version.
- No flows install: confirm the controller app is running and reachable on 6653.
- Mininet stale state: run
mn -cto clean before relaunch.
Key Results
- Demonstrated control/data plane separation on a 2-switch topology.
- Observed reactive flow installation driven entirely by the controller.
- Mapped northbound and southbound API roles to concrete components.
- Established the base topology reused in the OpenFlow and controller labs.