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ù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

評論

0/150

提交評論