NOX——現代網絡操作系統
本系列前面的三篇文章《OpenFlow – 打造彈性化的可控互聯網》、《Open vSwitch – 開放虛擬交換標準》和《Mininet – “懶惰”網絡研究者的福音》中,介紹了軟件定義網絡(SDN)的基本概念和相關平臺。按照SDN的觀點,網絡的智能/管理實際上是通過控制器來實現的。本篇將介紹一個代表性的控制器實現——NOX。
現代大規模的網絡環境十分復雜,給管理帶來較大的難度。特別對于企業網絡來說,管控需求繁多,應用、資源多樣化,安全性、擴展性要求都特別高。因此,網絡管理始終是研究的熱點問題。
從操作系統到網絡操作系統
早期的計算機程序開發者直接用機器語言編程。因為沒有各種抽象的接口來管理底層的物理資源(內存、磁盤、通信),使得程序的開發、移植、調試等費時費力。而現代的操作系統提供更高的抽象層來管理底層的各種資源,極大的改善了軟件程序開發的效率。
同樣的情況出現在現代的網絡管理中,管理者的各種操作需要跟底層的物理資源直接打交道。例如通過ACL規則來管理用戶,需要獲取用戶的實際IP地址。更復雜的管理操作甚至需要管理者事先獲取網絡拓撲結構、用戶實際位置等。隨著網絡規模的增加和需求的提高,管理任務實際上變成巨大的挑戰。
而NOX則試圖從建立網絡操作系統的層面來改變這一困境。網絡操作系統(Network Operating System)這個術語早已經被不少廠家提出,例如Cisco的IOS、Novell的NetWare等。這些操作系統實際上提供的是用戶跟某些部件(例如交換機、路由器)的交互,因此稱為交換機/路由器操作系統可能更貼切。而從整個網絡的角度來看,網絡操作系統應該是抽象網絡中的各種資源,為網絡管理提供易用的接口。
實現技術探討
模型
NOX的模型主要包括兩個部分。
一是集中的編程模型。開發者不需要關心網絡的實際架構,在開發者看來整個網絡就好像一臺單獨的機器一樣,有統一的資源管理和接口。
二是抽象的開發模型。應用程序開發需要面向的是NOX提供的高層接口,而不是底層。例如,應用面向的是用戶、機器名,但不面向IP地址、MAC地址等。
通用性標準
正如計算機操作系統本身并不實現復雜的各種軟件功能,NOX本身并不完成對網絡管理任務,而是通過在其上運行的各種“應用”(Application)來實現具體的管理任務。管理者和開發者可以專注到這些應用的開發上,而無需花費時間在對底層細節的分析上。為了實現這一目的,NOX需要提供盡可能通用(General)的接口,來滿足各種不同的管理需求。
架構
組件
下圖給出了使用NOX管理網絡環境的主要組件。包括交換機和控制(服務)器(其上運行NOX和相應的多個管理應用,以及1個Network View),其中Network View提供了對網絡物理資源的不同觀測和抽象解析。注意到NOX通過對交換機操作來管理流量,因此,交換機需要支持相應的管理功能。此處采用支持OpenFlow的交換機。
操作
流量經過交換機時,如果發現沒有對應的匹配表項,則轉發到運行NOX的控制器,NOX上的應用通過流量信息來建立Network View和決策流量的行為。同樣的,NOX也可以控制哪些流量需要轉發給控制器。
多粒度處理
NOX對網絡中不同粒度的事件提供不同的處理。包括網包、網流、Network View等。
應用實現
NOX上的開發支持Python、C++語言,NOX核心架構跟關鍵部分都是使用C++實現以保證性能。代碼可以從http://www.noxrepo.org獲取,遵循GPL許可。
系統庫
提供基本的高效系統庫,包括路由、包分類、標準的網絡服務(DHCP、DNS)、協議過濾器等。
相關工作
NOX項目主頁在http://noxrepo.org。
其他類似的項目包括SANE、Ethane、Maestro、onix、difane等,有興趣的同學可以進一步研究參考。
【編輯推薦】
- 紅帽企業版6.0 KVM虛擬機實戰攻略
- 怎樣選擇虛擬機安全的管理工具
- 故障恢復 兩大虛擬機快速備份方法
- Hyper-V與VMware不同的虛擬機備份策略
- 四大方式實現私有云 看虛擬機管理器前景
- 為虛擬機增加網絡可用帶寬的三大途徑
- 網絡虛擬化對數據中心資源整合的意義
- 網絡虛擬化成為未來IP網絡演進的方向