Objective

Understand the architectural separation of control and data planes in SDN, and set up a Mininet simulation environment.

Tools & Technologies

  • SDN
  • control plane
  • data plane
  • OpenFlow
  • Mininet

Key Commands

mn --topo tree,2
mn --topo single,3
pingall
h1 ping h2

Architecture 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