SDN和Openflow詳解+mininet與opendaylight環(huán)境搭建與測試.docx_第1頁
SDN和Openflow詳解+mininet與opendaylight環(huán)境搭建與測試.docx_第2頁
SDN和Openflow詳解+mininet與opendaylight環(huán)境搭建與測試.docx_第3頁
SDN和Openflow詳解+mininet與opendaylight環(huán)境搭建與測試.docx_第4頁
SDN和Openflow詳解+mininet與opendaylight環(huán)境搭建與測試.docx_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于OpenFlow的SDN技術(shù)1. SDN與OpenFlow技術(shù)簡介SDN指的是軟件定義網(wǎng)絡(luò)。你可以這樣去理解SDN:如果將網(wǎng)絡(luò)中所有的網(wǎng)絡(luò)設(shè)備視為被管理的資源,那么參考操作系統(tǒng)的原理,可以抽象出一個網(wǎng)絡(luò)操作系統(tǒng)(Network OS)的概念這個網(wǎng)絡(luò)操作系統(tǒng)一方面抽象了底層網(wǎng)絡(luò)設(shè)備的具體細節(jié),同時還為上層應(yīng)用提供了統(tǒng)一的管理視圖和編程接口。這樣,基于網(wǎng)絡(luò)操作系統(tǒng)這個平臺,用戶可以開發(fā)各種應(yīng)用程序,通過軟件來定義邏輯上的網(wǎng)絡(luò)拓撲,以滿足對網(wǎng)絡(luò)資源的不同需求,而無需關(guān)心底層網(wǎng)絡(luò)的物理拓撲結(jié)構(gòu)。 云計算的發(fā)展,是以虛擬化技術(shù)為基礎(chǔ)的。云計算服務(wù)商以按需分配為原則,為客戶提供具有高可用性、高擴展性的計算、存儲和網(wǎng)絡(luò)等IT資源。虛擬化技術(shù)將各種物理資源抽象為邏輯上的資源,隱藏了各種物理上的限制,為在更細粒度上對其進行管理和應(yīng)用提供了可能性。近些年,計算的虛擬化技術(shù)(主要指x86平臺的虛擬化)取得了長足的發(fā)展;相比較而言,盡管存儲和網(wǎng)絡(luò)的虛擬化也得到了諸多發(fā)展,但是還有很多問題亟需解決,在云計算環(huán)境中尤其如此。OpenFlow和SDN盡管不是專門為網(wǎng)絡(luò)虛擬化而生,但是它們帶來的標(biāo)準化和靈活性卻給網(wǎng)絡(luò)虛擬化的發(fā)展帶來無限可能。 SDN的最重要特征:將傳統(tǒng)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)(data plane)和路由控制(control plane)兩個功能模塊相分離,通過集中式的控制器(Controller)以標(biāo)準化的接口對各種網(wǎng)絡(luò)設(shè)備進行管理和配置,那么這將為網(wǎng)絡(luò)資源的設(shè)計、管理和使用提供更多的可能性,從而更容易推動網(wǎng)絡(luò)的革新與發(fā)展。OpenFlow是實現(xiàn)SDN最常用的的一種協(xié)議,OpenFlow的原理和基本架構(gòu)如下圖。其實,這張圖還很好地表明了OpenFlow Switch規(guī)范所定義的范圍從圖上可以看出,OpenFlow Switch規(guī)范主要定義了Switch的功能模塊以及其與Controller之間的通信信道等方面。OpenFlow幾大應(yīng)用場景,包括:1)校園網(wǎng)絡(luò)中對實驗性通訊協(xié)議的支持(如其標(biāo)題所示);2) 網(wǎng)絡(luò)管理和訪問控制;3)網(wǎng)絡(luò)隔離和VLAN;4)基于WiFi的移動網(wǎng)絡(luò);5)非IP網(wǎng)絡(luò);6)基于網(wǎng)絡(luò)包的處理。2. OpenFlow協(xié)議Openflow規(guī)范主要分為如下四大部分1. OpenFlow的端口(Port)OpenFlow規(guī)范將Switch上的端口分為3種類別:a) 物理端口,即設(shè)備上物理可見的端口;b) 邏輯端口,在物理端口基礎(chǔ)上由Switch設(shè)備抽象出來的邏輯端口,如為tunnel或者聚合等功能而實現(xiàn)的邏輯端口;c) OpenFlow定義的端口。OpenFlow目前總共定義了ALL、CONTROLLER、TABLE、IN_PORT、ANY、LOCAL、NORMAL和FLOOD等8種端口,其中后3種為非必需的端口,只在混合型的OpenFlow Switch(OpenFlow-hybrid Switch,即同時支持傳統(tǒng)網(wǎng)絡(luò)協(xié)議棧和OpenFlow協(xié)議的Switch設(shè)備,相對于OpenFlow-only Switch而言)中存在。2. OpenFlow的FlowTable(流表)OpenFlow通過用戶定義的或者預(yù)設(shè)的規(guī)則來匹配和處理網(wǎng)絡(luò)包。一條OpenFlow的規(guī)則由匹配域(Match Fields)、優(yōu)先級(Priority)、處理指令(Instructions)和統(tǒng)計數(shù)據(jù)(如Counters)等字段組成,如下圖所示。在一條規(guī)則中,可以根據(jù)網(wǎng)絡(luò)包在L2、L3或者L4等網(wǎng)絡(luò)報文頭的任意字段進行匹配,比如以太網(wǎng)幀的源MAC地址,IP包的協(xié)議類型和IP地址,或者TCP/UDP的端口號等。目前OpenFlow的規(guī)范中還規(guī)定了Switch設(shè)備廠商可以選擇性地支持通配符進行匹配。據(jù)說,OpenFlow在未來還計劃支持對整個數(shù)據(jù)包的任意字段進行匹配。所有OpenFlow的規(guī)則都被組織在不同的FlowTable中,在同一個FlowTable中按規(guī)則的優(yōu)先級進行先后匹配。一個OpenFlow的Switch可以包含一個或者多個FlowTable,從0依次編號排列。OpenFlow規(guī)范中定義了流水線式的處理流程,如下圖所示。當(dāng)數(shù)據(jù)包進入Switch后,必須從FlowTable 0開始依次匹配;FlowTable可以按次序從小到大越級跳轉(zhuǎn),但不能從某一FlowTable向前跳轉(zhuǎn)至編號更小的FlowTable。當(dāng)數(shù)據(jù)包成功匹配一條規(guī)則后,將首先更新該規(guī)則對應(yīng)的統(tǒng)計數(shù)據(jù)(如成功匹配數(shù)據(jù)包總數(shù)目和總字節(jié)數(shù)等),然后根據(jù)規(guī)則中的指令進行相應(yīng)操作比如跳轉(zhuǎn)至后續(xù)某一FlowTable繼續(xù)處理,修改或者立即執(zhí)行該數(shù)據(jù)包對應(yīng)的Action Set等。當(dāng)數(shù)據(jù)包已經(jīng)處于最后一個FlowTable時,其對應(yīng)的Action Set中的所有Action將被執(zhí)行,包括轉(zhuǎn)發(fā)至某一端口,修改數(shù)據(jù)包某一字段,丟棄數(shù)據(jù)包等。OpenFlow規(guī)范中對目前所支持的Instructions和Actions進行了完整詳細的說明和定義。另外,OpenFlow規(guī)范中還定義了很多其他功能和行為,比如OpenFlow對于QoS的支持(即MeterTable和Meter Bands的定義等),對于GroupTable的定義,以及規(guī)則的超時處理等。3. OpenFlow的通信通道這一節(jié)中,OpenFlow規(guī)范定義了一個OpenFlow Switch如何與Controller建立連接、通訊以及相關(guān)消息類型等。OpenFlow規(guī)范中定義了三種消息類型:a) Controller/Switch消息,是指由Controller發(fā)起、Switch接收并處理的消息,主要包括Features、Configuration、Modify-State、Read-State、Packet-out、Barrier和Role-Request等消息。這些消息主要由Controller用來對Switch進行狀態(tài)查詢和修改配置等操作。b) 異步(Asynchronous)消息,是由Switch發(fā)送給Controller、用來通知Switch上發(fā)生的某些異步事件的消息,主要包括Packet-in、Flow-Removed、Port-status和Error等。例如,當(dāng)某一條規(guī)則因為超時而被刪除時,Switch將自動發(fā)送一條Flow-Removed消息通知Controller,以方便Controller作出相應(yīng)的操作,如重新設(shè)置相關(guān)規(guī)則等。c) 對稱(Symmetric)消息,顧名思義,這些都是雙向?qū)ΨQ的消息,主要用來建立連接、檢測對方是否在線等,包括Hello、Echo和Experimenter三種消息。下圖展示了OpenFlow和Switch之間一次典型的消息交換過程,出于安全和高可用性等方面的考慮,OpenFlow的規(guī)范還規(guī)定了如何為Controller和Switch之間的信道加密、如何建立多連接等(主連接和輔助連接)。3. Opendaylight與Mininet環(huán)境搭建控制器使用OpenDaylight(以下簡寫為ODL),是現(xiàn)在主流的控制器項目,功能比較完善。模擬OpenFlow設(shè)備使用Mininet,遠比基于KVM的虛擬機應(yīng)用更高效、更簡潔,且更容易理解。1 環(huán)境準備主要的最簡單的環(huán)境準備是:一臺PC及安裝VMware station(或VirtualBox)工作站用來承載VM。2 ODL獲取安裝可直接通過地址鏈接下載ODL的VM鏡像:/wk/index.php?title=OpenDayLight_Tutorial,下載此鏡像后,可用VMware station或者virtualbox直接打開此VM,使用并啟動ODL。打開VM后,先進入OpenDaylight目錄:cd opendaylight/opendaylight/distribution/opendaylight/再進入OpenDaylight啟動目錄:cd target/distribution.opendaylight-package/opendaylight執(zhí)行:run.sh在瀏覽器中(VM環(huán)境或本地環(huán)境)輸入http:/VM_IP:8080可轉(zhuǎn)到如下登錄界面,其中VM_IP替換為控制器IP。登錄用戶名:admin,密碼:admin,登錄進入ODL的Web界面查看并可對ODL操作。如下圖:3 Mininet獲取安裝Mininet主要是虛擬出OpenFlow交換機以及host主機節(jié)點,并且能通過自定義來構(gòu)造用戶想要的拓撲。虛擬OpenFlow交換機主要是使用基于Open vSwitch的應(yīng)用。從/download/下載Mininet的VM鏡像,打開此鏡像后,用戶名為mininet,密碼為mininet。登錄進入Mininet虛擬機,之后即可通過 mn命令來創(chuàng)建拓撲。4.環(huán)境測試和openflow協(xié)議分析這個section是繼環(huán)境搭建完成以后,在此基礎(chǔ)上熟悉平臺操作,以及通過wireshark抓包工具分析OpenFlow(以下簡寫為OF)協(xié)議。1. 打開wireshark并創(chuàng)建拓撲按照章節(jié)一搭建平臺,啟動ODL,并打開wireshark。進入裝有Mininet的VM,通過mn命令指定網(wǎng)絡(luò)拓撲及指定此ODL控制器。Mininet創(chuàng)建網(wǎng)絡(luò)拓撲命令:1sudomn-topolinear,2-switchovsk-controller=remote,ip=03,port=6633此命令通過Mininet模擬創(chuàng)建一個含有兩個交換機(Open vSwitch,以下簡寫為OVS)和兩個主機的網(wǎng)絡(luò)拓撲,其中03為ODL的IP,6633為ODL的默認端口,網(wǎng)絡(luò)拓撲如下圖所示:2. 查看網(wǎng)絡(luò)在Mininet中通過操作網(wǎng)絡(luò)命令,可以查看OVS間及OVS與主機間的連接關(guān)系,也可以查看Mininet是否遠程連接控制器。例如,通過nodes命令可以查看網(wǎng)絡(luò)中所有的節(jié)點。通過net命令可以查看并確認網(wǎng)絡(luò)連接關(guān)系是否與預(yù)期一致以及節(jié)點信息,且可以了解具體的連接端口信息。通過下面的dump命令可以看出,交換機通過遠程方式連接到控制器,且能看到控制器的IP和PORT。3. 抓包并分析協(xié)議通過wireshark抓包可以直接看到控制器與OVS交換機的通信過程,下面分析該流程中的OF消息。此專題應(yīng)用的是直接支持OpenFlow協(xié)議的wireshark官網(wǎng)StableRelease(1.12.1)版本。3.1建立連接控制器與交換機之間的OpenFlow協(xié)議是應(yīng)用于TCP傳輸層上,所以解析應(yīng)用層。他們首先發(fā)送hello消息,建立初始化連接,協(xié)商使用的OpenFlow協(xié)議版本。由下圖可知,ODL與Mininet之間應(yīng)用的是OpenFlow1.0版本協(xié)議(其他1.2、1.3協(xié)議會在協(xié)議OpenFlow后面標(biāo)識)。3.2 能力請求響應(yīng)該消息主要響應(yīng)能力請求feature request消息,回復(fù)連接此控制器的交換機的一些基本設(shè)置信息,包括交換機的能力以及它的一些端口的信息等。3.3 config請求回應(yīng)get config reply消息用于回應(yīng)get config request消息,交換機通過該消息回應(yīng)配置信息,一般是交換機的接口配置等信息。3.4 stats狀態(tài)信息stats reply消息用于回應(yīng)stats request信息,主要是交換機回應(yīng)給控制器的狀態(tài)信息。3.5 flow mod消息flow mod消息涉及到流表項的匹配信息等,下圖顯示的flow mod匹配項的類型信息。3.6 packet_in、packet_out消息在這部分流程中,當(dāng)交換機收到數(shù)據(jù)包后查找流表無匹配項時,將數(shù)據(jù)包封裝在packet_in消息發(fā)給controller,由controller通過packet_out消息下發(fā)決策,使發(fā)送和接收數(shù)據(jù)包的兩主機間進行通信。以上幾種消息類型,可以參照OpenFlow標(biāo)準協(xié)議中的類型,如下圖:我們可以用wireshark觀察到當(dāng)?shù)谝淮斡衟ing包從h1發(fā)到h2時,控制器如何自動添加相應(yīng)的表項到交換機。同時,可以進入ODL的web界面查看發(fā)現(xiàn)設(shè)備的拓撲,如圖所示:4. SDN與OpenFlow學(xué)習(xí)資料1. SDN 聯(lián)合播報 (/sdn-guide) 吐血推薦,初學(xué)SDN的最好選擇,網(wǎng)站的資料很全,有大牛的博客。每天都有更新很好的文章。2. Opendaylight的官方網(wǎng)址(/)3. Wiki上Opendaylight的一個技術(shù)幫助文檔(/wk/index.php?title=OpenDayLight_Tutorial)4. Wiki上Openflow的一個技術(shù)幫助文檔(/wk/index.php/OpenFlow_Tutorial#Mininet_Brief_Intro), 一步一步講解很細。5. SDNLAB(/) 很不錯的中文SDN網(wǎng)站,重點看技術(shù)專欄這一版塊。6. Mininet的官方網(wǎng)址(/),里面有mininet的命令手冊。7. Mininet的中文使用教程 (http:/www

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論