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
- ......