matlab搭建sdn,软件定义网络SDN简介和简单仿真实验
閱讀:
11,620
SDN是在2009年左右出現的一種新型網絡結構,它將數據層面與控制層面分離,使用中央控制器完成網絡的操作和管理,并通常采用OpenFlow協議作為其核心通信協議,擁有著集中式控制、可編程、部署靈活性和數據層面與控制層面相互分離等多種優勢。并且作為一種新型的網絡結構,其通信協議、三層體系結構和仿真實驗都非常有意思。
SDN體系結構
典型的SDN架構定義如下圖所示。
SDN體系結構由下到上分別為轉發層(又稱為基礎設施層)、控制層和業務層(又稱為應用層)。其中轉發層表示網絡底層的物理轉發設備,維護著流表結構,數據流中的分組則按照流表中的規則進行轉發;中間的控制層集中維護和控制網絡的各種狀態,并負責流表的生成、配置和維護,同時需要為業務層提供易用的北向接口;最上面的業務層根據不同的應用需求來實現不同功能的應用程序。控制層通過南向接口(例如OpenFlow協議)與轉發層進行通信,并獲取轉發層的網絡設備的信息;控制層與業務層之間由可擴展的北向接口完成交互,北向接口由各個控制器的Rest API提供,并允許開發者根據實際網絡需求開發。
在SDN體系結構中,開發者能夠獲取轉發層中網路設備的實時狀態信息,通過調用控制層的北向Rest API接口,編程實現不同功能的應用程序;最后通過控制器和南向接口(OpenFlow)以流表的形式下發到網絡設備中,從而完成網絡的配置。OpenFlow協議介紹
OpenFlow協議是SDN架構中第一個定義在控制層和轉發層之間的標準通信接口,基于OpenFlow的SDN技術可以使開發者動態管理網絡拓撲結構。
最常見的OpenFlow流表主要由三個部分組成:匹配域(Match Fields)、計數器域(Counters)和指令域(Instructions),如下圖所示。
(1)匹配域,如下圖所示:一共包含12個域,每個域內包含一個值,分別對應TCP/IP體系結構中:
一層物理層中入端口(Ingress Port);
二層數據鏈路層中源MAC地址(Ether source)、目的MAC地址(Ether dst)、以太網類型(EtherType)、VLAN標簽(VLAN id)、VLAN優先級(VLAN priority);
三層網絡層中源IP(IP src)、目的IP(IP dst)、IP協議字段(IP proto)、IP服務類型IP ToS bits);
四層傳輸層中TCP/UDP源端口號(TCP/UDP src port)、 TCP/UDP目的端口號(TCP/UDP dst port)。
(2)計數器域,可以用來統計每個端口、每條流、每張表和每個隊列上的流量信息。
(3)指令域,為每條流表項對應的行動,表示對匹配該流表項處理方法,其中可以有0或者多個行動。若一條流表項的指令域為空,則默認操作是丟棄數據包。若一個流表項的指令域內有多個行動,則按照行動的優先級順序執行。行動分為必選行動和可選行動,必選行動中包括轉發或者丟棄,可選行動中則包括按照傳統交換機處理、泛洪(除去入端口)、入隊和修改匹配域等。
如上圖所示數據包匹配流程:當數據包到達后,從流表中的第一個流表項開始匹配,若有匹配域相符合的流表項,接著更新該條流表項對應的統計數據,然后根據流表項對應指令域內的指令進行相應操作;若沒有流表項被成功匹配,則轉發給控制器請求進一步處理。基于OpenFlow的SDN工作流程
上圖為基于OpenFlow的SDN工作流程:
終端PC機向網絡中發送一系列數據包;
數據包到達OpenFlow交換機,若交換機中無匹配的流表,則通過第2步向控制器發送Packet-In消息,請求控制器下發處理流表,若交換機中有匹配的流表,則直接執行第4步;
控制器下發流表(或Packet-Out消息)到交換機中;
交換機根據流表的信息將數據包轉發到下一個交換機中;
交換機若有匹配流表,執行第7步,若無匹配流表,執行類似第2步;
類似第3步;
交換機轉發數據包到另一個終端PC機。SDN網絡仿真小實驗
SDN網絡仿真實驗只需要一臺PC機就可以完成,不任何需要其他額外設備。Mininet就是一個輕量級的SDN網絡仿真平臺,Floodlight是一款開源的SDN控制器。本次的仿真小實驗的系統、控制器和仿真平臺信息如下圖所示。軟件名稱和類型功能
Ubuntu 12.0464 bit系統環境
控制器Floodlight控制交換機,下發流表,控制數據轉發
虛擬仿真平臺Mininet搭建虛擬網絡拓撲
(1)Floodlight安裝和運行安裝Java、python的運行與開發環境
下載和安裝Floodlight
編譯Floodlight
運行Floodlight
在瀏覽器中輸入地址http://localhost:8080/ui/index.html,打開Floodlight的Web界面,此時Switchs與Hosts都為0。
(2)Mininet安裝和運行
將Mininet鏡像文件導入到VirutalBox中,配置網卡信息,
第一塊網卡信息:
第二塊網卡信息:
啟動Mininet,賬戶和密碼均為mininet
產生如下圖所示的拓撲結構,并連接控制器
我們在Floodlight的Web界面可以查看拓撲結構、以及交換機和節點信息。
(3)下發流表交換機和默認流表如下圖所示:
目前Host1可以ping通Host2:
在Controller上修改流表項。添加一條流表,使得Host流的出端口和入端口為同一端口。
Host1流表修改:
Host2流表修改:
修改流表項后,進行Host1 Ping Host2的操作。結果是Host1無法Ping通Host2
實驗結果如下表所示:流表項實驗操作實驗結果
默認流表Host1 Ping Host2Ping通
修改后流表Host1 Ping Host2無法Ping通
在SDN網絡中,通過控制器簡單的修改交換機上的流表就可以完成特定需求的網絡環境配置,SDN非常有趣。
參考鏈接:
http://archive.openflow.org/documents/openflow-spec-v1.1.0.pdf
http://www.opendaylight.org/
https://www.opennetworking.org/sdn-resources/sdn-definition/
如果您需要了解更多內容,可以
加入QQ群:570982169
直接詢問:010-68438880
總結
以上是生活随笔為你收集整理的matlab搭建sdn,软件定义网络SDN简介和简单仿真实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 中session与cookies
- 下一篇: php dimage加上域名,PHP全功