Software Defined Networking Concepts
Objective
Understand the architectural separation of control and data planes in SDN, and set up a Mininet simulation environment.
Tools & Technologies
SDNcontrol planedata planeOpenFlowMininet
Key Commands
mn --topo tree,2mn --topo single,3pingallh1 ping h2Architecture Overview
graph TD
subgraph SDN Architecture
APP[Applications\nnorthbound API] --> CTRL[SDN Controller\nControl Plane]
CTRL -->|southbound API\nOpenFlow| SW1[Forwarding\nSwitch 1]
CTRL -->|southbound API\nOpenFlow| SW2[Forwarding\nSwitch 2]
CTRL -->|southbound API\nOpenFlow| SW3[Forwarding\nSwitch 3]
end
SW1 <-->|data plane| SW2
SW2 <-->|data plane| SW3
style CTRL fill:#1a1a2e,stroke:#00d4ff,color:#e0e0e0
style APP fill:#1a1a2e,stroke:#00ff88,color:#e0e0e0
Step-by-Step Process
01
SDN vs Traditional Networking
Traditional switches have both control and data planes on-device. SDN centralises the control plane.
# Traditional: each switch runs its own routing protocol
# SDN: controller decides all forwarding; switches just execute
# Key interfaces:
# Northbound: controller <-> applications (REST APIs)
# Southbound: controller <-> switches (OpenFlow, NETCONF)
# East/West: controller <-> controller (federation)
02
Install Mininet
Mininet creates a virtual network of hosts, switches, and links on a single Linux machine.
# Ubuntu
sudo apt install mininet
# Or from source
git clone https://github.com/mininet/mininet
cd mininet && sudo ./util/install.sh -a
# Verify
sudo mn --test pingall
03
Mininet Basic Topologies
Create and test different network topologies.
# Single switch with 3 hosts
sudo mn --topo single,3
# Tree topology
sudo mn --topo tree,depth=2,fanout=3
# Linear topology
sudo mn --topo linear,4
# In Mininet CLI:
mininet> nodes # list nodes
mininet> net # show links
mininet> pingall # test all-pairs
mininet> h1 ping -c3 h2
Challenges & Solutions
- Mininet requires root — sudo mn
- Default Mininet controller is a learning switch — not OpenFlow
- Mininet cleanup: sudo mn -c after every session
Key Takeaways
- Mininet's virtual hosts share the Linux kernel but have separate network namespaces
- SDN enables programmatic network configuration — changes via API not CLI