PROGRAMMING SDNs
NORTHBOUND APPLICATION PROGRAMMING INTERFACE ,
CURRENT LANGUAGES AND TOOLS
INTRODUCTION TO SDN APIs
•Software-Defined Networking (SDN) APIs allow applications and network devices to
interact with SDN controllers.
•APIs provide programmability, automation, and flexibility in managing networks.
Two main categories:
•Northbound APIs: Connect SDN controllers with applications.
•Southbound APIs: Connect SDN controllers with network devices.
Importance of SDN APIs
• Network Automation: Enables dynamic configuration without
manual intervention.
• Custom Application Development: Businesses can develop
applications to optimize network behavior.
• Interoperability: APIs standardize communication between different
SDN components.
• Improved Network Management: Simplifies traffic monitoring,
security, and policy enforcement.
Key SDN API Protocols
•OpenFlow: The most widely used SDN protocol, allowing direct control over
network devices.
•RESTful APIs: Enable applications to interact with SDN controllers over HTTP.
•gRPC: A modern, high-performance API for real-time network communication.
•NETCONF & YANG: Used for device configuration and network automation.
•BGP-LS & PCEP: Used for traffic engineering and route control in SDN networks.
Introduction to Northbound APIs
• Enable communication between SDN applications and SDN controller.
•Allow applications to define network policies, traffic flows, and security rules
dynamically.
•Examples of controllers supporting Northbound APIs: ONOS, OpenDaylight, Ryu.
•Common protocols used: RESTful APIs, gRPC, Java APIs.
Importance of Northbound APIs in
SDN
✔ Network Automation – Enables dynamic reconfiguration of
network policies.
✔ Application Development – Developers can create custom
networking applications.
✔ Scalability & Flexibility – Networks adapt to changing traffic
patterns without manual intervention.
✔ Interoperability – Supports various applications (security, QoS,
monitoring).
Types of Northbound APIs
1. RESTful APIs
• Web-based API using HTTP methods (GET, POST, PUT, DELETE).
• Widely used for SDN applications due to its simplicity.
2. gRPC (Google Remote Procedure Call)
• Faster and more efficient than REST, uses Protocol Buffers instead
of JSON.
• Ideal for real-time network control and monitoring.
3. Java APIs
• Used in controllers like OpenDaylight, provides direct
programmatic control over the network
Use Cases of Northbound APIs
✅ Traffic Engineering –
Dynamically adjust network
paths to avoid congestion.
✅ Security Applications –
Implement firewalls and
Intrusion Detection Systems
(IDS).
✅ Load Balancing – Distribute
traffic across multiple servers
for better performance.
✅ QoS (Quality of Service) –
Prioritize critical applications
like VoIP and video streaming.
Introduction to SDN Programming
Languages & Tools
•SDN programming requires specialized languages and
tools for network automation, control, and management.
•Languages are categorized into:
Control Plane Programming (for writing SDN controller applications).
Data Plane Programming (for defining how switches handle packets).
•Tools help with simulation, debugging, and deployment of SDN-based networks.
Popular SDN Programming
Languages
Python
• Used in SDN controllers like Ryu, OpenDaylight (via Flask/REST APIs).
• Simple and powerful for writing network automation scripts.
2. P4 (Programming Protocol-Independent Packet Processors)
• Language for data plane programming, allows defining how packets are
processed.
• Works with programmable switches like BMv2, Tofino, Netronome.
3. Java
• Used in OpenDaylight SDN controller.
• Supports modular SDN application development.
4. C/C++
• Used in low-level switch programming and SDN controller core development.
SDN Development Tools
Mininet
• Network emulator to test SDN applications.
• Simulates an entire network topology on a single machine.
2. OpenFlow Wireshark Plugin
• Helps in analyzing OpenFlow messages between switches and
controllers.
3. P4 Behavioral Model (BMv2)
• Simulates and tests P4-programmed switches before deploying
them.
4. ONOS and OpenDaylight
• Open-source SDN controllers that support custom application
development.
Comparison of SDN Programming
Languages and Tools