OpenFlow協議及其簡單模擬
OpenFlow協議及其簡單模擬
在講述本文的主旨之前,先來說一說SDN的三大要素:
1. 轉發與控制分離,這使得網路交換機的資料轉發變得更加簡單、快速;同時,控制變成了網路作業系統中一個相對集中的邏輯功能。
2. OpenFlow協議,它向交換機傳送轉發表,交換機依此轉發報文。這種做法與傳統網路完全不同。在傳統網路架構中,交換機和路由器需要自己決定報文的轉發路徑,這可能會給網路運營商帶來一些不可預知的負面影響,包括成本增加、效能降低、上市時間延緩 等。有了SDN,控制軟體決定報文的轉發路徑,使得運營商可以“隨心所欲”地控制網路。
3. 具有一致性的、全系統範圍的網路作業系統可程式設計介面,它能讓網路實現真正意義上的可程式設計或者軟體定義。如果不能實現轉發與控制分離,那麼幾乎所有
以上可以看出OpenFlow對於SDN的重要性不言而喻,本文將就OpenFlow的相關內容做一定總結,以及簡單的OpenFlow模擬平臺的搭建.
1 .OpenFlow簡介
OpenFlow是由斯坦福大學的Nick McKeown教授在2008年4月ACM Communications Review上發表的一篇論文OpenFlow: enabling innovation in campus networks首先詳細論述了
OpenFlow的思路很簡單,網路裝置維護一個FlowTable並且只按照FlowTable進行轉發,FlowTable本身的生成、維護、下發完全由外接的Controller來實現,注意這裡的FlowTable並非是指IP
2.OpenFlow協議的四個規範
2.1 OpenFlow的埠:
物理埠:即裝置上物理可見的埠
邏輯埠:在物理埠的基礎上由switch裝置抽象出來的邏輯埠,如為tunnel或者聚合等功能而實現的邏輯埠:
OpenFlow定義的埠:OpenFlow目前總共定義了ALL,CONTROLLER TABLE IN_PORT,ANY LOCAL 和FLOOD等8種埠,其中後3種為非必須的埠,只在混合型的OpenFlow Switch中存在.
2.2流表
OpenFlow通過使用者定義的或者預設的規則來匹配和處理網路包.一條OpenFlow的規則由匹配域(Match Fields)\優先(Priority)\處理指令(Instructions)和統計資料(如Counters)等欄位組成,如下圖所示.
Ingress Port |
Ether Source |
Ether Dst |
Ether Type |
Vlan Id |
IP Src |
IP dst |
IP Tos Bits |
TCP/UDP Src Port |
TCP/UDP Dst Port |
在一條規則中,可以根據網路報在L2 L3 或者L4等網路報文頭的任意欄位進行匹配,比如乙太網的源MAC地址,IP包的協議型別和IP地址,或者TCP/UDP的埠號等.目前OpenFlow的規範中還規定了Switch廠商可以選擇性地支援萬用字元進行匹配.
2.3 通訊通道
OpenFlow規範定義了一個OpenFlow Switch如何與Controller建立連線、通訊以及相關訊息型別等。
OpenFlow規範中定義了三種訊息型別:
a) Controller/Switch訊息,是指由Controller發起、Switch接收並處理的訊息,主要包括Features、Configuration、Modify-State、Read-State、Packet-out、Barrier和Role-Request等訊息。這些訊息主要由Controller用來對Switch進行狀態查詢和修改配置等操作
b) 非同步(Asynchronous)訊息,是由Switch傳送給Controller、用來通知Switch上發 生的某些非同步事件的訊息,主要包括Packet-in、Flow-Removed、Port-status和Error等。例如,當某一條規則因為超時而被刪除時,Switch將自動傳送一條Flow-Removed訊息通知Controller,以方便Controller作出相應的操作,如重新設定相關規則等。
c) 對稱(Symmetric)訊息,顧名思義,這些都是雙向對稱的訊息,主要用來建立連線、檢測對方是否線上等,包括Hello、Echo和Experimenter三種訊息。
3.OpenFlow模擬平臺mininet的搭建
Mininet是一個輕量級軟體定義網路(SDN)和測試平臺;它採用輕量級的徐立華技術使一個單一的系統看起來像一個王錚的網路執行相關的系統核心和使用者程式碼,也可以理解為SDN網路系統中的一種基於程序虛擬化平臺,它支援OpenFlow OpenvSwith等各種協議,Mininet也可以魔力一個完整的網路主機,連結和交換機在同一臺計算機上且有助於互動開發、測試和演示,尤其是那些使用 OpenFlow 和 SDN 技術;同時也可將此程序虛擬化的平臺下程式碼遷移到真實的環境中。
3.1 mininet的安裝
本文所採用的系統環境為Ubuntu14.04,具體安裝流程如下:
# git clone git://github.com/mininet/mininet
# cd mininet/util/
# ./install.sh -a
# ls
mininet of-dissector oflops oftest OpenFlow pox
3.2建立網路
由於 Mininet 支援自定義網路,這裡先引用一個簡單網路示例如圖 1,在 Mininet 網路系統中直接輸入 mn 命令,可以在此係統中建立單層的拓撲網路,從中預設建立了兩臺 host 和一個交換機,並且激活了控制器和交換機。同時也可以通過命令 net 檢視到鏈路情況,先簡單列出了示例,如在 Mininet 系統中啟用 Web 伺服器與客戶端。
使用的命令為:
mininet> h1 python -m SimpleHTTPServer 80 &
#在主機 h1 開啟 Web 服務
mininet> h2 wget -O - h1
執行結果如下圖所示:
在mininet系統上,實現兩主機互連測試.
檢視節點和連結
輸出各個節點的資訊:
測試主機之間的連通性:
兩個主機相互ping:
名字空間 namespace
通常情況下,主機介面有用獨立的名字空間 namespace,而控制節點跟交換節點都在根名字空間(root namespace)中。如果想要讓所有節點擁有各自的名字空間,需要新增 --innamespace 引數,即執行:mn --innamespace
另外一個例子:
網路的拓撲結構如下:
命令很簡單:[email protected]:~$ sudo mn --topo single,3 --mac --switch ovsk --controller remote
表明拓撲有三個虛機host,h1,h2,h3分別有獨立的IP地址,三個host分別連線到本地kernel裡的OpenFlow交換機的三個埠,然後OpenFlow交換機連線到remote的controller,其實就是在本地。
通過mininet net命令可以檢視拓撲:
啟動wireshark抓包軟體,選擇的埠為loopback,開啟抓包,可以看到很多資料包,我們只想看OpenFlow的,就在filter裡輸入’of’來過濾一下,啟動controller。
[email protected]:~$ controller ptcp:
就可以在wireshark介面中得到如下的結果:
4.小結
本文主要是對SDN中採用的協議OpenFlow進行了簡單的介紹,闡述了一下OpenFlow協議的幾個規範,主要部分是在linux下搭建了OpenFlow的模擬平臺mininet,並在此平臺中搭建了簡單的網路,進行了模擬。OpenFlow協議和該模擬平臺的研究還可以進一步的深入研究。
相關推薦
OpenFlow協議及其簡單模擬
OpenFlow協議及其簡單模擬 在講述本文的主旨之前,先來說一說SDN的三大要素: 1. 轉發與控制分離,這使得網路交換機的資料轉發變得更加簡單、快速;同時,控制變成了網路作業系統中一個相對集中的邏輯功能。 2. OpenFlow協議,它向交換機傳送轉發
SONY VISCA協議及其簡單認識
最近在搞visca協議,在這裡寫寫,算是個記錄。 visca是索尼公司搞出來的,用來控制相機的協議,一般通過rs232來通訊(看了些資料,也有用rs485的)。 一、命令格式 命令通訊的基本單元稱為包(Packet)。一個包的長度為3到16位元組,由頭部、訊息體和結束符三部分組成。命令包的第一個位元組稱為命
php 使用curl 進行簡單模擬提交表單
8.0 bin field this class chrom 提交表單 bsp alt //初始化curl $ch = curl_init(); $url = ‘xxx‘; $option = [ CURLOPT_URL => $url, CURLO
python簡單模擬:把樹存儲在數據表中
數據庫 __main__ __name__ com clas list lis 數據表 name 在數據庫中建立一個表,有Id, fatherId, value 三個字段,就可以存儲一個樹。 如何把該表中的數據以樹的形式呈現出來,下面小弟用python簡單模擬一下。 初學p
【滲透課程】第二篇上-http請求協議的簡單描述
html 文章 ont tp服務器 交互 .exe 打開 路徑 什麽 HTTP協議剖析 什麽是HTTP協議?如何發起請求?我認為這樣講大家能夠理解: 瀏覽器訪問網站也是http請求的一個過程。當你打開瀏覽器,訪問一個URL (協議://服務器IP:端口/路徑/文件)的時候,
python3實現TCP協議的簡單服務器和客戶端
由於 轉載 while encoding ont ans 令行 cti 數據 利用python3來實現TCP協議,和UDP類似。UDP應用於及時通信,而TCP協議用來傳送文件、命令等操作,因為這些數據不允許丟失,否則會造成文件錯誤或命令混亂。下面代碼就是模擬客戶端通過命令行
python3實現UDP協議的簡單服務器和客戶端
開始 turn lose () rec 交流 cnblogs 無連接 簡單的 利用python中的socket模塊中的來實現UDP協議,這裏寫一個簡單的服務器和客戶端。為了說明網絡編程中UDP的應用,這裏就不寫圖形化了,在兩臺電腦上分別打開UDP的客戶端和服務端就可以了。
多線程練習(簡單模擬火車站多窗口同時售票)
火車 thread art this 模擬 練習 lis span 對象 模擬火車站售票窗口同時售票 public class xianchenglianxi { public static void main(String arg[]){
大魚吃小魚(簡單模擬)
一個 入棧 nco http spa println code tar pre 題目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1289 從左往右將數字壓入棧裏(想象成一個水平向右的棧),如果
HihoCoder1052基因工程(簡單模擬題)
修改方法 ace lib stream 方法 div 最小 mes 大寫 描述 小Hi和小Ho正在進行一項基因工程實驗。他們要修改一段長度為N的DNA序列,使得這段DNA上最前面的K個堿基組成的序列與最後面的K個堿基組成的序列完全一致。 例如對於序列"ATCGA
網絡啟動一:之IPXE初識及其簡單應用
releases 依賴包 放置 art 配置 ces sdi ftw bootsect IPXE初識及其簡單應用 最近迷上了網絡啟動這回事,查詢了部分文檔,做了基本測試和總結,以供以後參考。 概述:PXE(preboot execute environm
7-18 銀行業務隊列簡單模擬(25 分)
時間間隔 int fin scanf 就是 偶數 static log 辦理 設某銀行有A、B兩個業務窗口,且處理業務的速度不一樣,其中A窗口處理速度是B窗口的2倍 —— 即當A窗口每處理完2個顧客時,B窗口處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出
Java簡單模擬Android中Handler-Message機制
就是 示例代碼 pri 技術分享 android ble [] handle @override 在Android中主線程與子線程的通信十分重要,Google工程師為我們提供了Handler-Message機制來解決他們之間的交互問題。今天,我們就來簡單理解Handler-
使用原生ajax及其簡單封裝
rom OS encode chang file 使用 ie6 afa 簡單 原生ajax配置詳解 // 原生ajax // 1. 創建ajax對象 if(window.XMLHttpRequest){ // // IE7+, Firef
spring中的工廠原理簡單模擬
spring中的工廠原理簡單模擬 package service; import dao.User;import factory.Factory; public class Test {// private static User user = new UserImpl();//耦合度太高 private
簡單模擬jQuery創建對象的方法,以及封裝一個js動畫框架
動畫框架 dst nts 創建 pro 以及 原型 time parse 今天無事點開了N年未點開的慕課網,看了一個js動畫框架的視頻,心血來潮用jQuery的方法封裝了一下,雖然不如jQuery,但是還是有點點所獲。 什麽都不說,直接上代碼: /** * 這是框架的
http協議的簡單介紹
Linuxhttp:伯納斯·李{1994年,伯納斯李在MIT網絡中心成立萬維網中心,代表互聯網誕生,伯納斯李被稱為萬維網之父;}http/0.9:只有get或put功能;http的原型版本;http/1.0(1998年);引入郵件中的MIME機制:Mutipurpose Internet Mail Exten
網絡層 協議及其原理 路由器工作原理
網絡層 路由器網絡層(IP ICMP RAP)1.網絡層功能: 尋址+路由定義了基於IP協議的邏輯地址連接不同的媒介類型選擇數據包通過網絡的最佳路徑2.IP包頭的格式3.ICMP協議:(ping請求)internet 控制消息協議,主要用於在ip網絡中發送控制消息,提供可能發生在通信環境中各種問題的反饋。IC
應用層協議及其功能詳解
應用層應用層協議及其功能詳解 DNS: 域名服務,用於將名稱解析為IP地址,反之亦然 DNS是一個倒置的樹形結構。最頂部是根域,用英文句點(.)表示。全球有13個根域服務器,一臺主服務器在美國,9臺輔助服務器在美國,2臺在歐州,一臺在日本。 根域服務器以下是一級域(頂級域)、二級域、三級域……最多127級
http 協議的簡單學習 雖然有點老但是 還不錯
http協議版本 常見 fan 編碼 sdc 適合 管道 協議 char HTTP簡介 HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳