接下來的五天會分享,軟體定義網路(Software-defined networking)的概念與使用Mininet熟悉軟體定義網路的生態環境,最後透過ONOS控制器撰寫簡單的應用程式
近年來,物聯網的技術越來越火紅,物聯網的設備隨處可見,廣泛的運用於智慧居家、環境監控甚至細部到個人健康監測等。而大部份的物聯網設備皆是透過無線傳輸,將數據傳輸至服務。而在抵達服務前,應會被防火牆或其他網路功能進行處理,也意為著網路應需適應每位用戶的需求。以優化傳輸方式思考應能解決此向問題,可以增加網路負載與減少傳輸時間,但傳統網路受限於體體資源,在動態調配傳輸路徑上,成本顯得更為昂貴,而這時軟體定義網路被提出來了。
Open Networking Foundation(ONF) 將軟體定義網路的架構垂直劃分成三個主要平面
OpenFlow是屬於OSI七層網路模型中的第二資料連結層的協定,控制器接收應用程式上所描述的需求透過OpenFlow協定與底下的轉發設備進行溝通,下達定義的條件規則與相應的轉發動作。
上圖描述了每個package的生命週期,每個package都擁有相同的轉發行為。當抵達時會產生一把鑰匙,會紀錄package的訊息,並用於匹配哪一張規則表與其表內的哪個Flow和相對應的動作。
步驟 | 狀態 | 描述 |
---|---|---|
1 | 封包抵達 | 到達至哪個port,可以是虛擬或實體的,主要是需要紀錄來源port位置以便後續的條件規則 |
2 | 產生密鑰 | 每個packag到達時候,都會建立一小部份的metadata,稱為密鑰。包括header內容、來源port、抵達時間等資訊 |
3 | 搜索規則表 | 使用key來搜索符合條件的規則表,當首次通過時,默認會優先選擇table 0 |
4 | Flow選擇 | 使用key來選擇表中的Flow |
5 | 動作應用 | 每行Flow規則含有一個操作,此項操作可以將該package丟棄,轉發或重新指向到新的規則表中 |
作為基礎設施的網路交換器,必須要支援OpenFlow的協定,常見的虛擬的網路設備(Open vSwitch)
元件 | 描述 |
---|---|
OpenFlow Protocol | 支援OpenFlow Protocol協定 |
核心邏輯 | 根據轉發數據規則的處理與裝置連接的管理 |
裝置卸載 | 負責實做卸載裝置的清除 |
數據平面協定 | 用於配置數據平面內部的協定 |
Reference
http://flowgrammable.org/sdn/openflow/#tab_protocol