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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論