Software Defined Networking – Was ist das?
Software Defined Networking (SDN) ist ein Konzept zum Netzwerkaufbau. Dabei wird die Kontrolle von der Hardware entkoppelt und an eine Software-Anwendung, dem Controller, übergeben. Das Ziel von SDN ist es, dass Netzwerktechniker und Administratoren schnell auf wechselnde Geschäftsanforderungen reagieren können. In einem Software-Defined-Netzwerk kann ein Netzwerk-Administrator den Datenverkehr über eine zentrale Steuerungskonsole komfortabel verwalten. Der Administrator kann bei Bedarf Netzwerk-Switch-Regeln priorisieren, entpriorisieren oder bestimmte Arten von Paketen blockieren. Ein Blockschaltbild zeigt den prinzipiellen Aufbau:
Application Layer
Zum Steuern und Konfigurieren der Netzwerk-Infrastruktur stehen dem Anwender (Admin) diverse Applikationen zur Verfügung. Eine der flexibelsten Möglichkeiten ist eine Skriptspache wie Python. Wichtige Punkte sind:
- Traffic Engineering
- Network Virtualization
- QoS
- Monitoring
- Routing
Control Layer
Die Control-Software stellt im Software Defined Networking das Herz der Netzwerkinfrastruktur dar. Die Community stellt diverse Controller zur Verfügung, um die Infrastruktur zu definieren und zu konfigurieren. Eine der bekanntesten ist Open Daylight. Die Controller werden von den Applikationen aus dem Application Layer entsprechend simple über die sog. Northbridge gesteuert.
Infrastructure Layer
Dieser Layer beherbergt sämtliche Netzwerkgeräte. Das sind in erster Linie:
- OpenFlow-Switche
- Routers
- Hosts (Server)
- andere Netzwerkgeräte
Mininet
Mininet ist ein Netzwerkemulator, der es erlaubt, Netzwerke aus Hosts, Switches, Routers und Controller miteinander zu verbinden. Auf den Hosts laufen alle Linux-Netzwerkapplikationen und die Switche und Router unterstützen OpenFlow für skalierbare Software Defined Networks. Mininet
- Unterstützt Testmöglichkeiten für die Entwicklung von OpenFlow-Applikationen
- Ermöglicht das Testen komplexer Netzwerktopologien ohne phylikalische Netze
- Beinhaltet ein CLI für Debug- und Testzwecke
- Unterstütz eine sehr große Skalierbarkeit von Netzwerktopologien
- Verfügbare Bandbreite kann skaliert werden
- Paketverlust, doppelte Pakete und Paketverzögerung können skaliert werden
- Python-API ermöglicht eine schnelle Erstellung der Netzwerktopologie
Eine Einordnung von Mininet ist in folgender Abbildung zu sehen:
Application Layer
Es steht eine leistungsfähige und sehr flexible Skriptsprache Python für die Konfiguration der Netzwerkinfrastruktur zur Verfügung. Programmieren muss man an dieser Stelle etwas können!
Control Layer
Mininet bietet die Möglichkeit, den internen Controller für die Konfiguration heranzuziehen. Der reicht i.d.R. für Standard-Konfigurationen aus.
Um Controller selbst aufzubauen, bietet sich das POX-Framework an. Mit dessen Hilfe ist es möglich, eigene Funktionalitäten wie Firewalls, NAT-Bridges, Portblocker, usw. herzustellen. Programmiert wird an dieser Stelle in Python!
Weitere Controller sind in der Community existent. OpenDaylight oder Flootlight sind an dieser Stelle zu nennen.
Infrastructure Layer
Ein Auszug an Netzwerk-Devices:
- Hosts (Linux-OS)
- Switche/Bridge (Spanning Tree, VLAN, NAT/PAT)
- Routers (RIPv2, OSPF, BGP)
- Layer-2/3/4-Firewalls (POX-Framework)
- Server aller Art (abhängig vom OS): DHCP/SSH/Telnet/NTP/HTTP/…
- Cloud-Anwendungen
Ich biete diverse Übungen an, um ein tiefgreifendes Verständnis in der Netzwerktechnik aufzubauen. Alle Übungen setzen Mininet voraus.
Netzwerktechnik
# | Zweck | Aufgabe | Python-Skript/Tarball |
---|---|---|---|
1 | Einführung in Mininet | Einführung in Mininet | Übung01 |
2 | L7 - SSH, Telnet | SSH,Telnet | Übung02 |
3 | L7 - DHCP-Service | DHCP-Service | Übung03 |
4 | L7 - Ping | Ping | Übung04 |
5 | L7 - NTP-Service | NTP-Service | |
6 | L4 - TCP- / UDP-Pakete | TCP-UDP-Pakete | Übung06 |
7 | L4 - TCP Verbindungsauf- und abbau | TCP Auf- und Abbau | Übung07 |
8 | L4 - UDP-Performance | UDP-Performance | Übung08 |
9 | L4 - TCP-Performance 1 mit Delay | TCP-Performance 1 | Übung09 |
10 | L4 - TCP-Performance 2 mit Delay | TCP-Performance 2 | Übung10 |
11 | L4 - TCP-Performance 3 mit Verlust | TCP-Performance 3 | Übung11 |
12 | L4 - TCP-Window-Size | TCP-Window-Size | Übung12 |
13 | L4 - TCP-Congestion-Control | TCP Congestion Control | Übung13 |
13-1 | L4 - TCP-Selective-Ack (SACK) | Selective Ack | Übung13-1 |
14 | L3 - Einfacher Linux-Router | Einfacher Router | Übung14 |
15 | L3 - RIPv2-Router | RIPv2-Router | Übung15 |
16 | L3 - OSPF-Router | OSPF-Router | Übung16 |
17 | L2 - Spanning Tree | Spanning Tree | Übung17 |
18 | L2 - VLAN | VLAN | Übung18 |
19 | L2 - Firewall | Firewall | Übung19 |
20 | Zusatz: L4 - Multipath-TCP | Zusatz: Multipath-TCP | Übung20 |
21 | Zusatz: L4 - IP-TTL-Analyse Linux Router | IP-TTL-Analyse | Übung21 |
22 | Zusatz: L2 - Jumboframes 9000 Bytes | Jumboframes | Übung22 |