跳转至

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