Lecture 7 Software Defined Network - Control Plane¶
Programing Levels
- Level 1: South-Bound Interface
- Program switches directly through OpenFlow
 
 - Level 2: SDN Controller
- Program with general-purpose language like C, Java, Python
 
 - Level 3: Network Programming Languages
- Program with domain-specific languages for networks
 - A Domain-Specific Language (DSL) is a programming language that offers, through appropriate notations and abstractions, expressive power focused on, and usually restricted to, a particular problem domain
 
 
Level 1: South-Bound Interface¶
Task:
make PC1 and PC2 reachable on layer 2

Use ovs-ofctl

Level 2: Controller¶
Modes
- Reactive vs. Proactive
 - Centralized vs. Distributed
 
Reactive Control vs. Proactive¶


Reactive
- First packet of flow triggers controller to insert flow entries
 - Efficient use of flow table
 - Every flow incurs an additional flow setup time
 - If control connection lost, switch has limited utility
 
Proactive
- Controller pre-populates flow table in switch (预处理)
 - Requires aggregated rules
 - Zero additional flow setup time
 - Loss of control connection does not disrupt traffic
 
Centralized vs. Distributed Control¶

分布式系统的意义是将“压力”分担给多个controller,以防某一个controller出问题导致系统整体出问题
分布式系统并不意味着“隔离”,事实上,每个“区域级”的Controller包含“所有区域整体”的信息,因此不会存在“区域”之间的壁垒
NOX / POX Architecture¶

Topology Discovery¶
How to know the correct "path (topo)"? => use LLDP
def: Link Layer Discovery Protocol (LLDP)
A vendor neutral link layer protocol in the Internet Protocol Suite used by network devices for advertising(公布) their identity, capabilities and neighbors on an IEEE 802 LAN.

Learning Switch¶


Floodlight¶
- An open, free, OpenFlow controller in Java
 - Slowly supporting OpenFlow v1.3
 

ONOS: Open Network Operating System¶
Architecture¶

Scale - Out¶
- An instance is responsible for maintaining a part of network graph.
 - Control capacity can grow with network size or application need
 

Intent Framework¶
Translates intents into device instructions

- Compiler: produce more specific Intents given the environment
 - Installer: transform Intents into device commands
 

OpenDaylight (ODL)¶
- Open-source project hosted by the Linux Foundation
- Language: Java
 - License: Eclipse Public License 1.0
 
 - Releases are named with chemical elements
- Stable release: Chlorine (17) October 2022
 
 
Ryu¶
- Implemented with Python
 - Open source, Apache 2.0 license
 - Support various protocols for managing network devices, such as OpenFlow, Netconf, OF-config, etc.
- For OpenFlow, Ryu supports fully 1.0, 1.2, 1.3, 1.4, 1.5 and Nicira Extensions
 
 
Network Programming Languages¶
Frenetic¶
- High-level language
- On top of NOX
 - Query (询问式) language
 - Composition of forwarding policies
 
 - Program snippet: simple repeater
- When a switch joins the network, install two forwarding rules.
 
 - Query language for traffic monitoring
- Provide a declarative SQL-like query language for classifying and aggregating network traffic
 
 - Program snippet(代码片段): summarize the total volume of traffic arriving on physical port 2, grouped by destination host, every 60 seconds.
 



Other¶
- Pyretic
 - Merlin
 - ......