軟件定義網(wǎng)絡(luò)-OpenFlow-和-VxLAN_第1頁(yè)
軟件定義網(wǎng)絡(luò)-OpenFlow-和-VxLAN_第2頁(yè)
軟件定義網(wǎng)絡(luò)-OpenFlow-和-VxLAN_第3頁(yè)
軟件定義網(wǎng)絡(luò)-OpenFlow-和-VxLAN_第4頁(yè)
軟件定義網(wǎng)絡(luò)-OpenFlow-和-VxLAN_第5頁(yè)
已閱讀5頁(yè),還剩185頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章軟件定義網(wǎng)絡(luò) 71.1軟件定義網(wǎng)絡(luò) 7控制平面和數(shù)據(jù)平面的分離 8SDN控制器 8網(wǎng)絡(luò)編程的可擴(kuò)展性 9SDN的邏輯層 9 可行性的技術(shù) 10 OpenFlow組件 11 2.1OpenFlow協(xié)議概述 142.2OpenFlow組件概述 162.2.1OpenFlow控制器(Controller) 162.2.2OpenFlow交換機(jī) 172.2.3流表 17動(dòng)作分類 21 3.4端口狀態(tài)(PortStatus)消息事件 283.5設(shè)置配置(SetConfiguration)事件 313.6獲取配置(GetConfig)請(qǐng)求與答復(fù)事件 323.7修改流(Flow-Modification)事件 333.8流移除(Flow-Removed)事件 363.9端口修改(Port-Modify)事件 38 er 3.12隊(duì)列獲取配置(QueueGetConfiguration)請(qǐng)求和響應(yīng)事件 43 4.1拓?fù)浣Y(jié)構(gòu)的發(fā)現(xiàn) 464.2最短路徑計(jì)算 48 4.4以故障切換為例的流表修改 56 5.1OpenFlow數(shù)據(jù)包概要 60 Asynchronous 60異步 60Symmetric 60對(duì)稱 605.2數(shù)據(jù)包概述 605.3數(shù)據(jù)包詳細(xì)信息 625.3.1通用協(xié)議數(shù)據(jù)頭格式 62 5.3.4Echo請(qǐng)求數(shù)據(jù)包 675.3.5echo響應(yīng)數(shù)據(jù)包 685.3.6各廠商數(shù)據(jù)包 685.3.7特征請(qǐng)求 685.3.8特征響應(yīng) 695.3.9獲取配置請(qǐng)求 775.3.10獲取配置響應(yīng) 775.3.11設(shè)置配置 785.3.12Packet-In 785.3.13流移除通知 805.3.14端口狀態(tài)通知 85 5.3.16流修改 935.3.17端口修改 95 5.3.19狀態(tài)響應(yīng) 97 5.3.22隊(duì)列獲取配置請(qǐng)求 1005.3.23隊(duì)列獲取配置響應(yīng) 100 6.1當(dāng)前服務(wù)器虛擬化設(shè)計(jì)的難題 102 虛擬機(jī)操作 102TOR交換機(jī)的地址表 103多租戶 1036.2VXLAN概述 103-VNI(虛擬網(wǎng)絡(luò)標(biāo)識(shí)符): 104-VTEP(VXLANTunnelEndPoint): 104虛擬機(jī)對(duì)虛擬機(jī)的流量包 104VXLAN實(shí)現(xiàn)的具體方法 1046.3個(gè)案研究 1066.4VxLAN數(shù)據(jù)包 1086.4.1VxLAN數(shù)據(jù)頭 108 6.4.4OuterEthernetHeader 1106.4.5內(nèi)部以太網(wǎng)數(shù)據(jù)頭和有效負(fù)載 110 謝我的妻子(Nandini)和兒子(Vinayak)以及我的印度大家庭,我在撰寫文稿時(shí)未能時(shí)常伴其左方因此,設(shè)計(jì)一個(gè)新的網(wǎng)絡(luò)迫在眉睫。網(wǎng)絡(luò)的發(fā)展需要跟上數(shù)據(jù)通信加速的步伐(從電路/數(shù)據(jù)包交換到基于100G網(wǎng)速的復(fù)雜網(wǎng)絡(luò)協(xié)議),網(wǎng)絡(luò)發(fā)展的下一階段即是軟件定義網(wǎng)絡(luò)(SDN)。從w也涉及到SDN的其他實(shí)現(xiàn):虛擬可擴(kuò)展局域網(wǎng)(VxLAN)。LAN箱:sdnbook@。一章軟件定義網(wǎng)絡(luò)1.1軟件定義網(wǎng)絡(luò)的。把控制平面功能從交換專用集成電路(theswitchingASIC,交換ASIC)中分離出來(通過將控制平面功能移入控制器),并使交換ASIC僅用于數(shù)據(jù)平面功能(這樣,可以就使中央集中控制器和網(wǎng)絡(luò)部署(包括網(wǎng)絡(luò)設(shè)備、服務(wù)器及虛擬機(jī))的中心觀點(diǎn)是將復(fù)雜的網(wǎng)路進(jìn)行具體細(xì)化地抽離(這需要基于復(fù)雜的路由/交換協(xié)議和虛擬機(jī))通過開放標(biāo)準(zhǔn)的驗(yàn)證得出的可擴(kuò)展性能夠借助簡(jiǎn)單的外部應(yīng)用程序進(jìn)行網(wǎng)絡(luò)編程OpenFlow協(xié)議的控制器,一些則試圖從虛擬機(jī)的角度(實(shí)現(xiàn)網(wǎng)絡(luò)交換機(jī)進(jìn)行抽離)對(duì)網(wǎng)絡(luò)進(jìn)行改/虛擬機(jī)(VM))為特征。目前的網(wǎng)絡(luò)部署使用分布式協(xié)議來建立控制通路。一旦控制通路建立完比如決策都由這種實(shí)體決定。決策做出后,控制器將對(duì)交換機(jī)的數(shù)據(jù)平面進(jìn)行編轉(zhuǎn)發(fā)鏈路??刂破矫婧蛿?shù)據(jù)平面的分離SDN的目標(biāo)是保證所有控制層面上的邏輯決策都由一個(gè)中心實(shí)體發(fā)出。而傳統(tǒng)網(wǎng)絡(luò)控制層面上的軟件。任何網(wǎng)絡(luò)軟件的使用都是通過編程,使數(shù)據(jù)通過特定的路徑進(jìn)行傳硬件的逐漸商品化和軟件對(duì)硬件依賴性的減弱,已經(jīng)沒有在所有節(jié)點(diǎn)處都運(yùn)行智能軟件的必要了。SDN概念的實(shí)現(xiàn)是通過在某個(gè)集中部件(比如控制器)進(jìn)行軟件的邏輯運(yùn)行,并通過使用南向協(xié)議/應(yīng)用程序接口(API)對(duì)交換機(jī)(硬件商品)進(jìn)行指令編程。SDN控制器中央控制器(SDN控制器)是一個(gè)軟件實(shí)體,能夠覆蓋整個(gè)網(wǎng)絡(luò)全局(包括虛擬機(jī)和業(yè)務(wù)流為控制器了解整個(gè)網(wǎng)絡(luò)的部署,決定最優(yōu)數(shù)據(jù)轉(zhuǎn)發(fā)路徑并對(duì)硬件中的條目員。過運(yùn)行應(yīng)用程序進(jìn)而控制網(wǎng)絡(luò)的平臺(tái)。這些應(yīng)用程序無需考慮控制器所管理。網(wǎng)絡(luò)編程的可擴(kuò)展性I將減少。SDN的邏輯層的流定義。南向API或協(xié)議是工作在兩個(gè)最底層(交換ASIC或虛擬機(jī))和中間層(控制器)之間一組API和控制器定義基于這些虛擬機(jī)通信的域和流量而實(shí)現(xiàn)的,并不是對(duì)以太網(wǎng)交換機(jī)進(jìn)行編程(這種假議為以太光纖網(wǎng)路提供路徑)。最后,在網(wǎng)絡(luò)端到端視圖方面(包括交換/路由設(shè)備和虛擬機(jī)/端節(jié)點(diǎn)),南向API需要改進(jìn),改進(jìn)后,管理員可以借助單一的SDN控制器對(duì)網(wǎng)絡(luò)設(shè)備(交換ASIC)和虛擬機(jī)進(jìn)行指令控制。程序可以通過北向API與控制器實(shí)現(xiàn)通信,然后控制器將其編譯后發(fā)送至最底層(比如硬件交換層)。到目前為止,還沒有太多關(guān)于北向API的使用,但是隨著SDN的發(fā)展,越來越多的北向APIQuantumAPIOpenFlowSDN可行性的技術(shù)商品化(可編程)的交換機(jī)和服務(wù)器/虛擬機(jī)南向API/協(xié)議(OpenFlow協(xié)議)SDN控制器1.2什么是OpenFlow?在1.1節(jié)中所闡釋的,OpenFlow是一種南向協(xié)議。下面介紹關(guān)于OpenFlow更多的內(nèi)容。連接是通過運(yùn)行在外部電腦/服務(wù)器上的軟件來定義的,而且硬件(交換機(jī))上的指令行策。OpenFlow是一個(gè)開放的,基于一定標(biāo)準(zhǔn)的協(xié)議。它定義了如何由一個(gè)中心部件(控制器)對(duì)控制平面進(jìn)行配置和控制。通過使用OpenFlow,控制器可以管理數(shù)據(jù)包在網(wǎng)絡(luò)中絡(luò)中通過復(fù)雜的交換和路由協(xié)議進(jìn)行計(jì)算才能得到。根據(jù)這些不同是根據(jù)這些流信息表生成的。OpenFlow組件OpenFlow制器流表中。典型的每個(gè)流信息決策的形式可以是:添加、刪除及修改wOpenFlow交換機(jī)的轉(zhuǎn)發(fā)??刂仆酚蒓penFlow控制器控制管理,而數(shù)據(jù)通路則建立在由OpenFlow控制器編制的OpenFlow協(xié)議1.3為什么發(fā)明OpenFlow?。由大量的路由器/交換機(jī)組成的網(wǎng)絡(luò),每個(gè)機(jī)架所有交換機(jī)需要管理和單獨(dú)配置,大量復(fù)雜和服務(wù)器的虛擬化技術(shù)讓數(shù)據(jù)中心網(wǎng)絡(luò)變得更復(fù)雜服務(wù)器的虛擬化直接導(dǎo)致網(wǎng)絡(luò)配置要經(jīng)常地變變化數(shù)是基于硬件與軟件結(jié)構(gòu)夠需要管理不同廠商的設(shè)備,使用不同的網(wǎng)管,相互的兼容性差,故障定位困難,對(duì)接問題ow-由于交換機(jī)不需要分開配置或管理,網(wǎng)絡(luò)自動(dòng)化的花費(fèi)將降低,同時(shí),網(wǎng)絡(luò)的平面化理更為簡(jiǎn)便?;蚪粨Q協(xié)議。ow換機(jī)的時(shí)候會(huì)發(fā)生什么。OpenFlow協(xié)議的工作方式與服務(wù)器-用戶端工作模式很相似,一個(gè)服務(wù)器(運(yùn)行控制器軟件)通過程序指令告訴客戶端(或是交換機(jī))如果處理數(shù)據(jù)流。為了較快地了2.1OpenFlow協(xié)議概述在圖2.1所示的流程圖中,字母代表了步驟,步驟從A開始(步驟0是發(fā)現(xiàn)階段)。為了簡(jiǎn)化該Flow這一步驟表示的是在OpenFlow交換機(jī)與OpenFlow控制器之間建立連接。一個(gè)控制器與一個(gè)交換機(jī)之間的連接是一對(duì)一的(通過網(wǎng)絡(luò)管理可以訪問多個(gè)OpenFlow交換機(jī))。用戶端和服務(wù)器之owenFlownFlow的材質(zhì)(光纖或者銅)。處理完畢后,數(shù)據(jù)包將交給在客戶端交換機(jī)上運(yùn)行的OpenFlow客戶enFlowchAnalingBCble1FNNenFlowchAnalingBCble1FNNbleJ0enFlowntrollerEthernetEthernetlink–BetweenController&OFswicthdthe“packet”toontrollerviaecureChanneltdthe“packet”toontrollerviaecureChanneltingresstoSwitchpacketHpacketandsendittoOpenFlowControllerin)fromNetworkGepacket2.ModifytheexistingflowinOpenFlowSwitch.3.AddtheflowinOpenFlowSwitch.4.DeletetheflowinOpenFlowSwitch.ParseheaderfieldsIDDApplyactiononneEElowTableofOpenflowSwitchUpdateFlowtableif2,3&4.HHw頭至尾對(duì)流表進(jìn)行掃描。流表中的操作在掃描過后就將被提取出來(下一節(jié)做詳細(xì)解釋)??梢酝ㄟ^不同的實(shí)現(xiàn)方式來優(yōu)化掃描,減少掃描使用效率。。這些操作通常包括轉(zhuǎn)發(fā)數(shù)據(jù)包、丟棄數(shù)據(jù)包,或交換。如果沒有針對(duì)流的操作,那么流就會(huì)被后臺(tái)丟棄(從而數(shù)據(jù)包也將被丟棄)。如果流中沒有中)。據(jù)頭步的操作。按照協(xié)議,控制器需要決定對(duì)于這個(gè)新的流應(yīng)該進(jìn)行哪理方式包括丟棄數(shù)據(jù)包(不進(jìn)行任何操作)、安根據(jù)OpenFlow交換機(jī)與OpenFlow控制器的具體實(shí)現(xiàn)對(duì)流進(jìn)行刪除操作。2.2OpenFlow組件概述2.2.1OpenFlow控制器(Controller)網(wǎng)絡(luò)交換機(jī)中的流進(jìn)行指令操作(比如,控制器計(jì)算最短路徑,然后對(duì)交換流表中沒有列出新的事件發(fā)生,OpenFlow交換機(jī)將向控制器尋求幫助?,F(xiàn)在市場(chǎng)上銷售的控用戶界面上為用戶提供整個(gè)網(wǎng)絡(luò)的視圖。很多控制器可以將網(wǎng)絡(luò)中的流量NSDN2.2.2OpenFlow交換機(jī)OpenFlow交換機(jī)運(yùn)行軟件與OpenFlow控制器相連,并進(jìn)行流的安裝和分析。在這一階段,對(duì)OpenFlow交換機(jī)的定義是各廠商特定的。OpenFlow交換機(jī)可以分為兩類:2.混合OpenFlow交換機(jī):這種交換機(jī)同時(shí)支持傳統(tǒng)以太網(wǎng)協(xié)議和OpenFlow協(xié)議。TCP連接。2.2.3流表OpenFlow有進(jìn)入其中的流量進(jìn)行處理。如果流表中沒有關(guān)于某特定流信息則會(huì)被發(fā)往控制器,由控制器做出處理??刂破鳑Q定如何處理之owTuplematchothecorrespondingactionMatchtheTupleIngresspacketMatchbasedon12TupelsflowdefinedinflowTuplematchothecorrespondingactionMatchtheTupleIngresspacketMatchbasedon12Tupelsflowdefinedinflowtablep2.Forward3.Queue4.Sendbackto5.controllerEtc..ActionFwd/dropetcCountersOpenFlowSwitchFlowActionFwd/dropetcCountersUpdateUpdatetheCountersUpdatethecounters.目都包括:-數(shù)據(jù)頭:與進(jìn)入數(shù)據(jù)包或流相匹配(通常稱為元組)-計(jì)數(shù)器:更新已經(jīng)匹配的數(shù)據(jù)包或流字節(jié)-操作:流量匹配后進(jìn)行的一些操作流表數(shù)據(jù)頭(元組)任何進(jìn)入交換機(jī)的數(shù)據(jù)包都需要與數(shù)據(jù)頭12個(gè)元組中的某一特定值進(jìn)行匹配(更精確的匹配可以。字段Bits適用范圍說明IngressPort所有報(bào)文入端口編號(hào)EthernetSourceaddress48所有以太網(wǎng)報(bào)文MAC地址EthernetDestinationaddress48所有以太網(wǎng)報(bào)文以太網(wǎng)目的MAC地址EtherType所有以太網(wǎng)報(bào)文以太類型VlanID以太類型為0x8100的報(bào)文VLANiD,值為0xffff表示untaggedVlanpriority3以太類型為0x8100的報(bào)文VLAN優(yōu)先級(jí),值為0-7IPSourceAddress32ARPIPDestinationAddress32ARPIPProtocol8ARPIP協(xié)議字段IPToSbits6IPTOS值TCP/UDPSourcePortsPUDPICMP源TCP/UDP端口TCP/UDPDestinationportsPUDPICMP表2.1數(shù)據(jù)頭(12個(gè)元組)匹配舉例(基于IPv4目標(biāo)的匹配)如果進(jìn)入的數(shù)據(jù)包能夠與這一流條目匹配,這一流所對(duì)應(yīng)的操作域就會(huì)做出相應(yīng)的操作(如果沒將會(huì)被拋棄)。當(dāng)流表中沒有條目可以匹配的時(shí)候,默認(rèn)操作是封裝數(shù)據(jù)計(jì)數(shù)器這是流表的第二個(gè)組件,根據(jù)OpenFlow規(guī)范1.0.0,計(jì)數(shù)器記錄流、端口、隊(duì)列和表。使用怎樣的計(jì)數(shù)器同樣是由各廠商來決定?,F(xiàn)在主要使用計(jì)數(shù)器將統(tǒng)計(jì)信息發(fā)送至控制器。動(dòng)作(Action)這是流表的第三個(gè)組成部分,指定當(dāng)進(jìn)入數(shù)據(jù)包與流表中條目相匹配后應(yīng)該進(jìn)行怎樣的動(dòng)作(如圖2.3所闡釋的)。流條目可能與零個(gè)或者多個(gè)動(dòng)作相關(guān)聯(lián)。交換機(jī)根據(jù)流表中的動(dòng)作要求對(duì)進(jìn)。如果沒有與流相關(guān)聯(lián)的動(dòng)作,交換機(jī)將拋棄數(shù)據(jù)包。如果有超過一個(gè)的操將按照流表中所給出的順序進(jìn)行執(zhí)行。如果交換機(jī)無法執(zhí)行動(dòng)作,或者無法作,將會(huì)發(fā)送錯(cuò)誤信息到控制器,并不再對(duì)流進(jìn)行操作。Action分類Action參數(shù)說明轉(zhuǎn)發(fā)指定端口(Port)將報(bào)文轉(zhuǎn)發(fā)到指定的物理端口或邏輯端口所有端口(All)將報(bào)文轉(zhuǎn)發(fā)到指定的物理端口或邏輯端口控制器(Controller)將報(bào)文轉(zhuǎn)發(fā)給控制器本地端口(Local)將報(bào)文轉(zhuǎn)發(fā)到指定的本機(jī)非Openflow端口(主要應(yīng)用在Openlfow混合模式交換機(jī)上)流表(Table)將報(bào)文轉(zhuǎn)發(fā)給其它的流表(適用于支持多流表的OpenFlow交換機(jī))入端口(InPort)將報(bào)文轉(zhuǎn)發(fā)到接收此報(bào)文的端口丟棄丟棄此報(bào)文轉(zhuǎn)發(fā)普通的(Normal)將報(bào)文按正常的二層交換機(jī)的方式,查MAC表轉(zhuǎn)發(fā)(主要應(yīng)用在Openlfow混合模式交換機(jī)上)洪泛(Flood)將此報(bào)文轉(zhuǎn)發(fā)到生成樹鏈路上,不包括入端口改變?cè)M值改變報(bào)文中指定字段的值,如果還存在其它的Action,此操作會(huì)被優(yōu)先執(zhí)行。詳細(xì)信息見表2.4入隊(duì)列將報(bào)文轉(zhuǎn)發(fā)到指定端口的接定隊(duì)列中,然后按照端QoS隊(duì)列配置來轉(zhuǎn)發(fā)。動(dòng)作分類轉(zhuǎn)發(fā)數(shù)據(jù)包到已知的物理端口或虛擬端口(注:虛擬端口是一組具有類似特征的端口按照傳統(tǒng)交換機(jī)的第二層或第三層的協(xié)議進(jìn)行數(shù)據(jù)包轉(zhuǎn)發(fā)。如果交換機(jī)支持這一功能,它就可以使用正常的第二層或者第三層的協(xié)議對(duì)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)(比如VLAN轉(zhuǎn)在其他操作采取前對(duì)域進(jìn)行修改將數(shù)據(jù)包入隊(duì)—指定數(shù)據(jù)包進(jìn)入由端口服務(wù)質(zhì)量定義的隊(duì)列修改域Action動(dòng)作需要修改的比特描述ANID該動(dòng)作指定VLANID可以修改(添加新的VLANID或者更改VLANID)。設(shè)置VLAN優(yōu)先級(jí)3該動(dòng)作可以修改指定的VLAN優(yōu)先級(jí)。該操作可以修改VLAN優(yōu)先級(jí),從而為一些特殊應(yīng)用場(chǎng)景提供了解決方案。剝離VLAN數(shù)據(jù)頭剝離VLAN數(shù)據(jù)頭修改源MAC地址48用新MAC地址代替現(xiàn)有的以太網(wǎng)源MAC地址,可以提供更好的數(shù)據(jù)包層面的控制。修改目的MAC地址48用新MAC地址代替現(xiàn)在的以太網(wǎng)目的MAC地址,可以提供更好的數(shù)據(jù)包層面的控制。修改源IPv4地址2用新的IP地址代替現(xiàn)在的IP源地址并更新IP校驗(yàn)和(以及TCP/UDP校驗(yàn)和)。這一操作只適用于IPv4的數(shù)據(jù)包。修改目的IPv4地址2用新的IP地址代替現(xiàn)在的IP目標(biāo)地址并更新IP校驗(yàn)和(以及TCP/UDP校驗(yàn)和)。這一操作只適用于IPv4的數(shù)據(jù)包。PvTOS段6更改IP的TOS域。這一動(dòng)作僅適用于IPv4數(shù)據(jù)包。修改TCP/UDP源端口用新的TCP/UDP端口代替現(xiàn)在的TCP/UDP源端口,并更新TCP/UDP校驗(yàn)和。這一操作僅適用于IPv4數(shù)據(jù)包。DP端口用新的TCP/UDP端口代替現(xiàn)在的TCP/UDP目標(biāo)端口并更新TCP/UDP校驗(yàn)和。這一操作僅適用于IPv4數(shù)據(jù)包。表2.3修改操作(Action)列表種類數(shù)據(jù)包的事件,并對(duì)觸發(fā)條件進(jìn)行詳細(xì)的討論。觸發(fā)條件引起的數(shù)據(jù)是在OpenFlow講述是為了更好的為讀者作出解釋。假設(shè)只有一臺(tái)OpenFlow交換機(jī)與OpenFlow控制器。3.1連接建立事件。圖中的標(biāo)識(shí)標(biāo)注了不同的觸發(fā)條件和過程。我們分步對(duì)于這些標(biāo)簽進(jìn)行現(xiàn)方式,這一連接可以通過控制器的圖形用戶界面或者交換機(jī)的命令BCFFBCFFEthernetEthernetlink–BetweenController&OFswicthOpenFlowOpenOpenFlowSwitchContrSwitchSYNonSYNon6633SYN,ACKACKHelloHello–Verson1 Hello-Version1ConnectionEstablishedFeatureRequestDFeatureReplyEEOpenFlowControlMessages(NormalOperationinasession–Explainedinfurtherdiagrams)EchoEchoRequestEchoEchoReplyEchoEchoRequestEchoEchoReplyw請(qǐng)求(FeatureRequest)。這是控制器發(fā)向交換機(jī)的一條Openflow消息,目的是為了獲取交功能響應(yīng)(Featurereply)。這是由交換機(jī)響應(yīng)功能請(qǐng)求報(bào)文(FeatureRequest)向控制器發(fā)送的功能響應(yīng)(Featurereply)報(bào)文。這一報(bào)文中描述了OpenFlow交換機(jī)的詳細(xì)細(xì)節(jié),內(nèi)容有:-數(shù)據(jù)路徑ID-流表數(shù)-可以緩沖處理的數(shù)據(jù)包數(shù)量-交換機(jī)性能-支持的操作標(biāo)識(shí)-端口描述choEchorequestEchoEchoreplyOpenFlow作為在OpenFlow交換機(jī)和OpenFlow控制器之間保持連接的消息(Keep-alive)來使用。通常w3.2Packet-In事件程進(jìn)行解釋。lowDBEDBEEthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllertablishedAPacketPacket-inCEchoEchoRequesthoReplyketIn-緩沖ID-數(shù)據(jù)包長(zhǎng)度-輸入端口-原因o0:無匹配o1:流表中明確提到將數(shù)據(jù)包發(fā)送至控制器-數(shù)據(jù)結(jié)構(gòu)—OpenFlow交換機(jī)所實(shí)際收到的數(shù)據(jù)包StepE3.3Packet-Out事件程進(jìn)行解釋。-緩沖ID-入口端口編號(hào)-動(dòng)作明細(xì)(添加為動(dòng)作描述符)o輸出動(dòng)作描述符o^TV列^ID動(dòng)作描述符o^TV列bCb動(dòng)作描述符o提取^TV列標(biāo)簽動(dòng)作描述符o以太網(wǎng)地址動(dòng)作描述符oIPv4地址動(dòng)作描述符oIPv4DSCP動(dòng)作描述符oTCP/UDP端口動(dòng)作描述符o隊(duì)列動(dòng)作描述符o各廠商動(dòng)作描述符-數(shù)據(jù)結(jié)構(gòu)BDBDEthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllerConnectionConnectionEstablishedAPacketPacket-outCEchoEchoRequestEchoEchoReplyStepDEchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。3.4端口狀態(tài)(PortStatus)消息事件DD Ethernetlink–BetweenController&OFswicthOpenFlowControllerConnectionConnectionEstablishedAPortPortStatusMessageCEchoEchoRequestEchoEchoReplyOpenFlowSwitchBB圖3.4端口狀態(tài)(PortStatus)消息事件的存在是端口狀態(tài)消息(PortStatus)事件發(fā)生的前提。交換機(jī)端口狀態(tài)發(fā)生改變(端口up/down、增添或移除)或者端口配置標(biāo)志發(fā)生改變時(shí),會(huì)觸發(fā)端口狀態(tài)(PortStatus)消息事件的發(fā)生。這一消息由OpenFlow交換機(jī)觸發(fā),端口狀態(tài)(PortStatus)消息由OpenFlow交換機(jī)發(fā)往控制器,用于通告交換機(jī)端口狀態(tài)的改變。交換機(jī)發(fā)送的端口狀態(tài)(PortStatus)信息包括:原因o0表示增加端口o1表示增加端口o2表示修改端口端口描述符o端口數(shù)o以太網(wǎng)(MAC)地址o端口描述(名稱)o端口配置標(biāo)志管理員故障沒有STP沒有接收沒有接收STP沒有洪泛沒有轉(zhuǎn)發(fā)沒有Packet-Ino端口狀態(tài)標(biāo)志STP狀態(tài)o即時(shí)端口特性標(biāo)志連接速度媒介(連接介質(zhì):銅、光纖,等等)自動(dòng)協(xié)商暫停o通告端口特性標(biāo)志連接速度媒介(連接介質(zhì):銅、光纖,等等)自動(dòng)協(xié)商暫停o支持端口特性標(biāo)志連接速度媒介(連接介質(zhì):銅、光纖,等等)自動(dòng)協(xié)商暫停o鏈路層相鄰?fù)ǜ娑丝谔匦詷?biāo)志連接速度媒介(連接介質(zhì):銅纜、光纖,等等)自動(dòng)協(xié)商暫停EchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。BDBD3.5設(shè)置配置(SetConfiguration)事件這節(jié)將闡述設(shè)置配置(SetConfiguration)信息的觸發(fā)條件和過程。圖3.5展示的是一個(gè)獨(dú)立的設(shè)置配置(SetConfiguration)事件。圖中的標(biāo)識(shí)標(biāo)注了不同的觸發(fā)條件和過程。EthernetEthernetlink–BetweenController&OFswicthOpenFlowOpenFlowSwitchControllerConnectionConnectionEstablishedASetSetConfigCEchoEchoRequestEchoEchoReply圖3.5設(shè)置配置(Setconfiguration)事件的存在是設(shè)置配置(Setconfiguration)事件發(fā)生的前提。on交換機(jī)配置標(biāo)志Misso表示重新配置后發(fā)送至控制器的流的最大8位字節(jié),默認(rèn)值128。EchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。3.6獲取配置(GetConfig)請(qǐng)求與答復(fù)事件當(dāng)控制器想要獲取交換機(jī)中的配置信息時(shí),就會(huì)發(fā)送消息“GetConfig”獲取配置請(qǐng)求的報(bào)文中沒有內(nèi)容(只包含OpenFlow常規(guī)數(shù)據(jù)頭);OpenFlow交換機(jī)通過TypeCodeConnectionEstablishedAGetConfigRequestCGetConfigReplyDEchoRequestEConnectionEstablishedAGetConfigRequestCGetConfigReplyDEchoRequestEEchoReplyOpenFlowControllerEthernetEthernetlink–BetweenController&OFswicthOpenFlowSwitchBB交換機(jī)配置標(biāo)志Miss表示發(fā)送至控制器的新的流的最大8位字節(jié),默認(rèn)值128。EchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。3.7修改流(Flow-Modification)事件BDEchoReplyBDEchoReplyEthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllerConnectionConnectionEstablishedAFlowFlowmodCEchoEchoRequest圖3.7修改流(Flow-Modification)事件候,觸發(fā)該事件。ation流匹配描述符o通常是12個(gè)元組命令o目o匹配的流軟超時(shí)硬超時(shí)優(yōu)先權(quán)數(shù)據(jù)包緩沖ID出口端口號(hào)Ⅱ.端口0x0000–0xff00表示交換機(jī)端口(物理或邏輯定義端口);對(duì)在序列號(hào)令操作口不在0x0000–0xff00序列內(nèi),就意味著端口屬于虛擬端口表3.1不同類型的端口號(hào)范圍說明類型0x0000預(yù)留預(yù)留0x0001-0xff00交換機(jī)端口物理端口0xfff8入端口In-Port0xfff9流表Table0xfffa常規(guī)二層轉(zhuǎn)發(fā)Normal0xfffb洪泛Flood0xfffc所有端口All0xfffd控制器Controller0xfffe本地非OpenFlow端口Local0xffff無效None標(biāo)志o發(fā)送流移除o檢查重復(fù)o緊急流動(dòng)作列表(添加為動(dòng)作描述符)o輸出動(dòng)作描述符oVLANVID動(dòng)作描述符oVLANPCP動(dòng)作描述符o提取VLAN標(biāo)簽動(dòng)作描述符o以太網(wǎng)地址動(dòng)作描述符oIPv4地址動(dòng)作描述符oIPv4DSCP動(dòng)作描述符oTCP/UDP端口動(dòng)作描述符o隊(duì)列動(dòng)作描述符o各廠商Action描述符步驟DEchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。?.8流移除(EIo從-KGmoAGq)事件步驟V除流(Flow-Removed)事件發(fā)生的前提。步驟B交換機(jī)中流表的時(shí)候,就會(huì)觸發(fā)該事件形成數(shù)據(jù)包。只有控制器觸發(fā)移除流(Flow-Removed)事件時(shí)候,這一步才有必要。步驟C數(shù)據(jù)包類似其他修改流數(shù)據(jù)包(在前面已經(jīng)闡述),但是通常該數(shù)據(jù)包還含有另外一個(gè)指令,標(biāo)修改操作是進(jìn)行刪除。BEchoRequestEchoReplyFlowRemovedDBEchoRequestEchoReplyFlowRemovedDEthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllerConnectionConnectionEstablishedAFlowFlowModifyCEE圖3.8流移除(Flow-Removed)事件如果流的刪除是因?yàn)橛布瑫r(shí)(Hardtime-out)或者空閑超時(shí)(Idletime-out),并且發(fā)送流移除目,那么這一步驟就是有必要的。無論刪除流的請(qǐng)求是怎樣觸發(fā)的(步驟B或者步驟B1),在步驟D中,移除流(Flow-Removed)消息被發(fā)送至控制器。這是選擇性的,取決于交換機(jī)中發(fā)送流移除(Flow-Removed)消息的標(biāo)識(shí)是否被設(shè)置。如果設(shè)置,交換機(jī)就會(huì)發(fā)送移除流(Flow-Removed)消息給控制器,用流匹配描述符o不同的流匹配種類優(yōu)先權(quán)o對(duì)于移除流數(shù)據(jù)包來說,該項(xiàng)內(nèi)容僅僅是提供信息,并不在移除流事件中常規(guī)的流表中,優(yōu)先權(quán)的數(shù)值越高,流的優(yōu)先權(quán)就越大原因o0流的空閑超時(shí)超過了軟超時(shí)。o1時(shí)間超過了硬超時(shí)。o2被修改流的刪除操作剔除。壽命持續(xù)時(shí)間(秒)o流在交換機(jī)中的存活持續(xù)時(shí)間(秒)壽命持續(xù)時(shí)間(毫微秒)o流在交換機(jī)中的存活持續(xù)時(shí)間(毫微秒)軟超時(shí)o初始流修改中得出的軟超時(shí)發(fā)送數(shù)據(jù)包數(shù)量o命中流條目的數(shù)據(jù)包數(shù)量發(fā)送字節(jié)數(shù)量o命中流條目的字節(jié)數(shù)量EchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。3.9端口修改(Port-Modify)事件BDBDEthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllerConnectionConnectionEstablishedAPortPortModifyCEchoEchoRequestEchoEchoReply圖3.9端口修改(Port-Modify)事件dify控制器(管理員)試圖修改端口配置標(biāo)志—“admindown,”“noSTP,”“noreceive,”“noreceiveSTP,”“noflood,”“noFWD,”“nopacket-in”的時(shí)候,會(huì)觸發(fā)該事件。StepCTheportmodificationmessagehasthefollowingfieldsinthepacket,and,usingthesefields,theportpropertiescanbemodified:PortModify做出調(diào)整:Portnumber端口號(hào)Ethernetaddress以太網(wǎng)地址Portconfigurationflags端口配置標(biāo)志Portconfigurationflagsmask端口配置標(biāo)志掩碼Advertisement(portfeatureflags)通告(端口特征標(biāo)志)EchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。3.10統(tǒng)計(jì)(Stats)請(qǐng)求和響應(yīng)事件識(shí)標(biāo)注了不同的觸發(fā)條件和過程。。類型o0OpenFlow交換機(jī)描述符o1單個(gè)流消息o2聚合流消息o3流表統(tǒng)計(jì)信息o4端口統(tǒng)計(jì)信息o5隊(duì)列統(tǒng)計(jì)信息BEo65535各廠商擴(kuò)展BE標(biāo)志o值應(yīng)為零狀態(tài)主體o不同類型值具有不同主體EthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllerConnectionConnectionEstablishedAStatsStatsRequestDStatsStatsReplyDEchoEchoRequestEchoEchoReplyEchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。DE3.11Barrier請(qǐng)求和響應(yīng)事件DEEthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllerBBConnectionConnectionEstablishedABarrierBarrierRequestBarrierBarrierReplyEchoEchoRequestEchoEchoReplyStepAowEchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。3.12隊(duì)列獲取配置(QueueGetConfiguration)請(qǐng)求和響應(yīng)事件條件和過程。BDDBDDEthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllerConnectionConnectionEstablishedAQueueQueueGetconfigRequestQueueQueueGetConfigReplyEchoEchoRequestEchoEchoReplyEchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。3.13錯(cuò)誤事件BCDBCDEthernetEthernetlink–BetweenController&OFswicthOpenFlowControllerOpenOpenFlowControllerConnectionConnectionEstablishedAErroneousErroneousControlpacketErrorErrorEventEchoEchoRequestEchoEchoReply如果OpenFlow交換機(jī)不能讀出、支持或者執(zhí)行控制器發(fā)出的OpenFlow控制數(shù)據(jù)包,就會(huì)發(fā)送錯(cuò)息的類型值或者是代碼值。EchoOpenFlowOpenFlow交換機(jī)之間的連接狀態(tài)。第四章OpenFlow案例研究4.1拓?fù)浣Y(jié)構(gòu)的發(fā)現(xiàn)enFlowOpenFlowOpenFlowowlowOpenFlow以及不同OpenFlow交換機(jī)之間連接的實(shí)際鏈路和端口)。這一發(fā)現(xiàn)通過兩個(gè)步驟完成:第一步一個(gè)特性響應(yīng)消息進(jìn)行響應(yīng)。這個(gè)特性響應(yīng)消息會(huì)將交換機(jī)的功交換機(jī)之間發(fā)送的鏈路層發(fā)現(xiàn)協(xié)議(LLDP)報(bào)文來實(shí)現(xiàn)。 中,然后由控制器發(fā)送Packet-Out報(bào)文給交換機(jī),Packet-Out報(bào)文中動(dòng)作(Action)字段為:轉(zhuǎn)發(fā)LLDP報(bào)文由交換機(jī)封裝入Packet-In報(bào)文發(fā)送到控制器中(Packet-In報(bào)文中會(huì)攜帶入端口信息)。當(dāng)控制器收到從交換機(jī)發(fā)來的Packet-In報(bào)文(封裝了LLDP協(xié)議報(bào)文),交換機(jī)就可以了解整個(gè)網(wǎng)絡(luò)的拓?fù)洹?LLDP發(fā)送的頻率是十秒一次。)數(shù)據(jù)包發(fā)起自:數(shù)據(jù)包發(fā)向:數(shù)據(jù)包類型數(shù)據(jù)包有效載荷及細(xì)節(jié)控制器所有交換機(jī)Feature請(qǐng)求控制器向所有交換機(jī)發(fā)送Features請(qǐng)求報(bào)文所有交換機(jī)控制器Feature響應(yīng)所有交換機(jī)發(fā)送Feature響應(yīng)消息(攜帶交換機(jī)支持的所有功能)控制器交換機(jī)-APacket-out控制器要求交換機(jī)-A向端口32、52、41發(fā)送LLDP數(shù)據(jù)包控制器交換機(jī)-BPacket-out控制器要求交換機(jī)-B向端口30、50、41發(fā)送LLDP數(shù)據(jù)包控制器交換機(jī)-CPacket-out控制器要求交換機(jī)-C向端口42、41發(fā)送LLDP數(shù)據(jù)包交換機(jī)-A控制器Packet-in交換機(jī)-A封裝從端口52上收到來自交換機(jī)-B的LLDP數(shù)據(jù)包,并通過Packet-In報(bào)文發(fā)送給控制器交換機(jī)-A控制器Packet-in交換機(jī)-A封裝從端口41上收到來自交換機(jī)-C的LLDP數(shù)據(jù)包,并通過Packet-In報(bào)文發(fā)送給控制器交換機(jī)-B控制器Packet-in交換機(jī)-B封裝從端口50上收到來自交換機(jī)-A的LLDP數(shù)據(jù)包,并通過Packet-In報(bào)文發(fā)送給控制器交換機(jī)-B控制器Packet-in交換機(jī)-B封裝從端口41上收到來自交換機(jī)-C的LLDP數(shù)據(jù)包,并通過Packet-In報(bào)文發(fā)送給控制器交換機(jī)-C控制器Packet-in交換機(jī)-C封裝從端口41上收到來自交換機(jī)-A的LLDP數(shù)據(jù)包,并通過Packet-In報(bào)文發(fā)送給控制器交換機(jī)-C控制器Packet-in交換機(jī)-C封裝從端口42上收到來自交換機(jī)-B的LLDP數(shù)據(jù)包,并通過Packet-In報(bào)文發(fā)送給控制器Src_ip:6Mac:00:1b:21:1b4d:5c30Src_ip:6Mac:00:1b:21:1b4d:5c30024141SW-A:MGMTIP:741SW-B:MGMTIP:810Glink1GlinkMGMTlinkHostlinkController:MGMTIP:9ControllerOpenControllerSrcSrc_ip:5Mac:00:1b:21:1b:4b:e9HostBHostHostB32324242SW-C:MGMTIP:0整個(gè)拓?fù)浒l(fā)現(xiàn)的操作可以列在以下步驟中(對(duì)于圖4.1中解釋的拓?fù)浒l(fā)現(xiàn)):4.2最短路徑計(jì)算路徑。這本書解釋了基于Diskstra的最短路徑計(jì)算 (同傳統(tǒng)STP)。在端節(jié)點(diǎn)之間計(jì)算出最短路徑后,控制會(huì)使用端口修改(Port-Modify)命令為OpenFlow數(shù)設(shè)置。這樣做的目的是使交換機(jī)收到一個(gè)數(shù)據(jù)包時(shí),它也只會(huì)路徑一部分的端口。1.交換機(jī)-A<->交換機(jī)-B=1G2.交換機(jī)-A<->交換機(jī)-C<->交換機(jī)-B=10G1.當(dāng)網(wǎng)絡(luò)發(fā)現(xiàn)完成時(shí),控制器將通過向交換機(jī)-A、交換機(jī)-B、交換機(jī)-C發(fā)送端口改變(Port-Modify息,用來設(shè)置一個(gè)無泛洪的端口標(biāo)志:a.交換機(jī)-A將會(huì)在端口(32、52、41)上收到“端口修改(Port-Modify)”消標(biāo)志b.交換機(jī)-B將會(huì)在端口(30、50、41)上收到“端口修改(Port-Modify)”消標(biāo)志c.交換機(jī)-C將會(huì)在端口(41、42)上收到“端口修改(Port-Modify)”消息—Out交換機(jī)上的幾個(gè)鏈路將通過使用端口修改(Port-Modify)包再次啟用。a.交換機(jī)-A將會(huì)在端口(32、41)上收到“端口修改(Port-Modify)”消息b.交換機(jī)-B將會(huì)在端口(41、30)上收到“端口修改(Port-Modify)”消息—c.交換機(jī)-C將會(huì)在端口(41、42)上收到“端口修改(Port-Modify)”消息—Src_ip:6Mac:00:1b:21:1b4d:5cHostB30ShortestPath024141SW-A:Src_ip:6Mac:00:1b:21:1b4d:5cHostB30ShortestPath024141SW-A:41SW-B:10Glink1GlinkMGMTlinkHostlink32HostAShortestPathController:SrcSrc_ip:5Mac:00:1b:21:1b:4b:e9442SW-C:圖,將會(huì)重新計(jì)算最短路徑,在改變后的拓?fù)浠A(chǔ)上再次觸發(fā)“端口修改(Port-Modify)”消4.3以Ping為例的流表操作Src_ip:6Mac:00:1b:21:1b4d:5c3032204141SW-A:MGMTIP:741SW-B:MGMTIP:8FlowAddSrc_ip:6Mac:00:1b:21:1b4d:5c3032204141SW-A:MGMTIP:741SW-B:MGMTIP:8FlowAddStep-6aFlowAddStep-6b10Glink1GlinkMGMTlinkPingfromHost-AtoHost-BController:MGMTIP:9ControllerOpenControllerSrcSrc_ip:5Mac:00:1b:21:1b:4b:e9HostBHostHostBFlowaddStep-6c4242HostlinkSWHostlinkMGMTIP:0Packet-Out報(bào)文(封裝原始ARP請(qǐng)求)至所有邊緣交換機(jī),動(dòng)作字段(Action)為發(fā)送ARP請(qǐng)求至所有邊緣端口。在拓?fù)渲?,唯一的邊緣交換機(jī)為交換機(jī)-B(交換機(jī)-C是一個(gè)中間傳送交換機(jī)節(jié)的端口。如果交換機(jī)沒有收到發(fā)送至up狀態(tài)的端口的LLDP報(bào)文,便可以知道這些up狀態(tài)的端口沒有連接其它的交換機(jī),為邊緣端口。當(dāng)交換機(jī)B收到Packet-Out報(bào)文后,解析報(bào)文中動(dòng)作(Action)后,將原ARP請(qǐng)求轉(zhuǎn)發(fā)給所有邊Wireshark抓包后解析的Packet-In報(bào)文(封裝了ARPReply報(bào)文)機(jī)A解釋Packet-Out報(bào)文,執(zhí)行動(dòng)作(Action)字段中的操作,將ARPReply報(bào)文發(fā)送給主機(jī)A。主后解析的Packet-Out報(bào)文(封裝了ARPReply報(bào)文)解析的Packet-In報(bào)文(封裝了ICMP請(qǐng)求報(bào)文)C,將流雙向地安裝在每個(gè)交換機(jī)上。此為交換機(jī)A上流修改的例子(類似的數(shù)據(jù)包也會(huì)由控制Src_ip:6Mac:00:1b:21:1b4d:5cNewShortestPath25011SWA:MGMTIP:7Src_ip:6Mac:00:1b:21:1b4d:5cNewShortestPath25011SWA:MGMTIP:71SW-B:MGMTIP:8FlowmodifyFlowmodifynkMGMTlinkstlinkFlowDeleteNewShortestPathPingfromHost-AtoHost-B(由控制器發(fā)送)。4.4以故障切換為例的流表修改Controller:MGMTIP:9OpenFlowControllerSrcSrc_ip:5Mac:00:1b:21:1b:4b:e9HostBHostB2SW-C:MGMTIP:0如圖4.2,最短路徑是基于更好的帶寬(交換機(jī)-A<->交換機(jī)-B<->交換機(jī)-C)。對(duì)于故障切換,中,如以下步驟所示。Step1當(dāng)控制器收到鏈路down消息后,再次計(jì)算最短路徑,隨后會(huì)發(fā)送流修改的信息來安裝一個(gè)新的路徑。(根據(jù)拓?fù)洌侣窂綄?huì)切換到交換機(jī)A和交換機(jī)B之間的GE鏈路。)4.1節(jié)至4.4節(jié)解釋的步驟可以應(yīng)用于任何大型的部署,可以用來了解基于OpenFlow的控制器是傳送延遲;第五章OpenFlow數(shù)據(jù)包詳細(xì)說明s5.1OpenFlow數(shù)據(jù)包概要控制器-至-交換機(jī)Asynchronous異步-在未獲取控制器觸發(fā)這些消息情況下,交換機(jī)即發(fā)送這些消息至控制器。交換機(jī)向控制器誤信息。Symmetric對(duì)稱-在未收到對(duì)端觸發(fā)的情況,交換機(jī)或控制器互相主動(dòng)發(fā)送一些消息。5.2數(shù)據(jù)包概述數(shù)據(jù)包實(shí)現(xiàn)的功能,數(shù)據(jù)包進(jìn)一步的分組已經(jīng)完成。OpenFlow數(shù)據(jù)包類型用數(shù)據(jù)頭中的類型值nFlowhello0error1wechorequest2owechoreply3wvendormessage4OpenFlowFeature請(qǐng)求-交換機(jī)消息5OpenFlowFeature響應(yīng)-交換機(jī)消息6OpenFlowgetconfiguration請(qǐng)求-交換機(jī)消息7OpenFlowgetconfiguration響應(yīng)-交換機(jī)消息8wsetconfiguration-交換機(jī)消息9OpenFlowpacket-inwflowremovedwportstatus器指令消息owpacketout-交換機(jī)消息wflowmodification-交換機(jī)消息portmodification-交換機(jī)消息OpenFlowstats請(qǐng)求-交換機(jī)消息OpenFlowstats響應(yīng)-交換機(jī)消息erOpenFlowbarrier請(qǐng)求-交換機(jī)消息OpenFlowbarrier響應(yīng)-交換機(jī)消息Queuegetconfiguration請(qǐng)求-交換機(jī)消息Queuegetconfiguration響應(yīng)-交換機(jī)消息5.3數(shù)據(jù)包詳細(xì)信息5.3.1通用協(xié)議數(shù)據(jù)頭格式此包是所有數(shù)據(jù)包的通用包,且在所有OpenFlow數(shù)據(jù)包中已被預(yù)先考慮(每個(gè)OpenFlow數(shù)據(jù)包.1。Packet5.3.101234012345678901234567890123456789012+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|version|type|length|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|TransactionID|||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Version(版本)此字段提供OpenFlow協(xié)議的版本。根據(jù)OpenFlow規(guī)范1.0,現(xiàn)有的數(shù)值是(0x1)Type(類型此字段提供在一個(gè)特定OpenFlow數(shù)據(jù)頭中被傳送數(shù)據(jù)包的類型值。在5.2節(jié)中對(duì)不同數(shù)ngthOpenFlowOpenFlow的總長(zhǎng)度。整個(gè)數(shù)據(jù)包的長(zhǎng)度(數(shù)據(jù)頭+有效負(fù)載)使用八位字節(jié)表示。TransactionIDTransactionID響應(yīng)指令相對(duì)應(yīng)。某數(shù)據(jù)包中響應(yīng)指令的事IDID。5.3.2Hello數(shù)據(jù)包Hello類型值為0的OpenFlow數(shù)據(jù)頭。接收者和發(fā)送者通過OpenFlow隔離這些數(shù)據(jù)包。5.3.3Error數(shù)據(jù)包數(shù)據(jù)包5.3.301234012345678901234567890123456789012+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|typevalue|code|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|date|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-“TypeValue(類型值)=0”o原因:?jiǎn)柡騾f(xié)議失效hello包。其可能會(huì)有以下代-“TypeValue(類型值)=1”o原因:請(qǐng)求未被識(shí)別OpenFlowTypeValue會(huì)有以下-“TypeValue(類型值)=2”actionTypeValue差數(shù)據(jù)包。其可-“TypeValue(類型值)=3”o原因:修改flowentry中的問題ntryactionTypeValue-“TypeValue(類型值)=4”o原因:端口修改(portmodification)請(qǐng)求失效當(dāng)端口修改(portmodification)請(qǐng)求指令中有一個(gè)誤差時(shí),則發(fā)送TypeValue為-“TypeValue(類型值)=5”o原因:隊(duì)列操作失效包。其可能會(huì)有以下代碼5.3.4Echo請(qǐng)求數(shù)據(jù)包fset型值將其識(shí)別出。5.3.5echo響應(yīng)數(shù)據(jù)包fsetecho求。在OpenFlow數(shù)據(jù)頭中,可以通過其類型值將其識(shí)別出。這個(gè)數(shù)據(jù)包est5.3.6各廠商數(shù)據(jù)包的唯一性。如果一個(gè)交換機(jī)不理解一個(gè)各廠商ID的有效負(fù)載,它應(yīng)該以誤差數(shù)據(jù)包5.3.601234012345678901234567890123456789012+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|VendorID|||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|[VendorDefinedData]|||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+VendorID一個(gè)各廠商。如果OpenFlow交換機(jī)不理解各廠商ID型=1,代碼=3?!?.3.7特征請(qǐng)求featurerequestOpenFlow頭加一個(gè)數(shù)據(jù)有效負(fù)載用作offset??刂破骱徒粨Q5.3.8特征響應(yīng)包的圖形演示。數(shù)據(jù)包5.3.801234012345678901234567890123456789012+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+||+DatapathID+++||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|AvailableNumberofPacketsCanBeHeld|||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|#ofFlowTabs|Padding|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|SwitchCapabilityFlags|||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|ActionCapabilityFlags|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|[PortDescriptors]|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+DatapathID據(jù)路徑ID從根本上說就是一個(gè)交換機(jī)ID。其用于數(shù)據(jù)路徑辨別。底部的四十八個(gè)比Availablenumberofpacketsthatcanbeheld給出了由數(shù)據(jù)路徑支持的緩沖數(shù)據(jù)包數(shù)量。Numberofflowtables.由數(shù)據(jù)路徑(OpenFlow交換機(jī))支持的流表數(shù)量可在零至254之間。每一個(gè)持的通配符比特及條目數(shù)量??刂破骺蛇x擇使用一個(gè)表類型狀態(tài)請(qǐng)求指令調(diào)Padding于填充。Switchcapabilityflags.此數(shù)據(jù)包描述符中的標(biāo)志給出了交換機(jī)所支持物的消息。以下是數(shù)據(jù)包描述數(shù)據(jù)包5.3.8(i)(交換機(jī)性能標(biāo)志)01234012345678901234567890123456789012+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+數(shù)據(jù)包5.3.8(ii)(Action性能標(biāo)志)01234012345678901234567890123456789012+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+5.3.8.d1端口描述符Followingisthepictorialpresentationofaportdescriptorpacket.數(shù)據(jù)包5.3.8.d1(端口描述符)01234012345678901234567890123456789012+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|[PortNumber]|

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論