初試 SDN:OpenFlow

我一直有聽過(軟件定義網絡)SDN 這個名詞,但到最近才略略了解到它將網絡交換器的控制集中在一處,將控制層和數據層分離,讓控制器可以用宏觀的角度去監察和管理整個網絡的流量和路由。

SDN 將原本由每台交換器或路由路決定封包的走向,變成將整條路徑統一控制,不必用上傳統的路由協定,這或者可以讓管理簡化和變得更為有效。SDN 也可以讓管理員利用控制器的 API 寫程式,按著業務需要或網絡狀態隨時調整網絡的各個部分。

但我覺得 SDN 仍屬起步階段,它的一系列好處暫時似乎未能完全讓一般公司或校園網絡享受到,反而是一些已經受到傳統網絡設計限制的公司才會適合使用,例如有大量虛擬化、雲端和大數據的企業。

我在測試 OpenFlow 這個協定,它是其中一種 SDN 標準化架構,因此可讓不同廠商一起參與開發。

我下載了 Mininet,它是在 Linux 上運作的網絡模擬器,用以模擬節點和支援 OpenFlow 的交換器之餘,也可以將整個網絡的控制權,利用 OpenFlow 協定交給外面的控制器控制。

我按著這裡的指示,在 Ubuntu Linux 上用「Native Installation from Source」去安裝。之後按 Mininet Walkthrough 去進行實驗。

由於控制器只要符合 OpenFlow 協定就可,所以市面上出現了不少控制器,有開源的,也有商業公司推出的。我試過其中的 FloodlightOpenDaylight 這兩種基於 Java 的 OpenFlow 控制器,我覺得它們不易操控,用上很多系統資料,架構複雜,我亦未能成功設定或在其上寫程式,因此還未領略到 SDN 或 OpenFlow 的用處和優勢。

而且我手上也沒有直接支援 OpenFlow 的硬體交換路,所以都只能在 Mininet 進行模擬。

啟用 Mininet,網絡拓樸呈直線,中間有五台接受 OpenFlow 控制的 Open vSwitch 交換器,在此我選用了在另一台虛擬機器上的 OpenDaylight 控制器:
Capture-openflow1

不同節點之間可以互 ping:
Capture-openflow2

OpenDaylight 控制器所見到的拓樸:
Capture-openflow3

可以用 Wireshark 抓取其中的封包:
Capture-openflow4

參考連結:
Wikipedia - Software-defined_networking
Wikipedia - OpenFlow
OpenFlow
http://archive.openflow.org
Mininet
On the OpenFlow Controllers
SDN Hub
SDN控制器的疑问与初学者对控制器选择问题?
改善硬體限制- OpenFlow
改變網路的常識!直擊網路新潮流「OpenFlow」不為人知的世界
RYU SDN Framework
【心得】如何開發 SDN / OpenFlow 應用程式
RouteFlow
How to use MiniEdit, Mininet’s graphical user interface
Tutorial 1: SDN for Engineers
Slideshare - Introduction to OpenFlow
Slideshare - OpenFlow tutorial
Slideshare - OpenFlow — the key standard of Software-Defined Networks
Slideshare - OpenFlow Overview
Slideshare - Tutorial on SDN and OpenFlow
Slideshare - Tools and Platforms for OpenFlow/SDN
Slideshare - SDN - OpenFlow + OpenVSwitch + Quantum
Slideshare - RouteFlow & IXPs
OpenFlow and SDN: Hype, Useful Tools or Panacea?
Open vSwitch Cheat Sheet
Your SDN Overlay Protocol Cheat Sheet

本文連結