版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
SDN控制平面第5章5.1SDN控制器概述5.2開源控制器5.3商業(yè)控制器5.4基于控制器的編程2.5數(shù)字傳輸系統(tǒng)2.6寬帶接入技術(shù)5.1SDN控制器概述SDN控制平面主要由一個(gè)或者多個(gè)控制器組成。作為數(shù)據(jù)控制分離的SDN的操作系統(tǒng),控制器具有舉足輕重的地位,它是連接底層交換設(shè)備與上層應(yīng)用的橋梁。一方面,控制器通過南向接口協(xié)議對(duì)底層網(wǎng)絡(luò)交換設(shè)備進(jìn)行集中管理、狀態(tài)監(jiān)測、轉(zhuǎn)發(fā)決策以處理和調(diào)度數(shù)據(jù)平面的流量;另一方面,控制器通過北向接口向上層應(yīng)用開放多個(gè)層次的可編程能力,允許網(wǎng)絡(luò)用戶根據(jù)特定的應(yīng)用場景靈活地制定各種網(wǎng)絡(luò)策略??刂破魇荢DN的重要組成部分,其設(shè)計(jì)與實(shí)現(xiàn)是SDN最為關(guān)鍵的技術(shù)環(huán)節(jié)之一,因此理解控制器的體系架構(gòu)對(duì)于深入研究SDN技術(shù)是極其重要的。控制器連接了底層交換設(shè)備與上層業(yè)務(wù)應(yīng)用,可以看作SDN的網(wǎng)絡(luò)操作系統(tǒng)。正如第2章介紹,傳統(tǒng)網(wǎng)絡(luò)的操作系統(tǒng)與硬件設(shè)備在物理上是緊密耦合的,而SDN中數(shù)據(jù)平面和控制平面是完全分離的,這種分離增加了實(shí)現(xiàn)的靈活性??刂破髯鳛镾DN的核心部分,與計(jì)算機(jī)操作系統(tǒng)的功能類似,需要為網(wǎng)絡(luò)開發(fā)人員提供一個(gè)靈活的開發(fā)平臺(tái)、為用戶提供一個(gè)便于操作使用的用戶接口。因此,參考計(jì)算機(jī)操作系統(tǒng)的體系架構(gòu),將更加有助于對(duì)SDN控制器體系架構(gòu)的理解與設(shè)計(jì)。5.1.1SDN控制器體系架構(gòu)基本概念:軟件定義網(wǎng)絡(luò)(SDN)中控制器的角色和重要性。從圖5.1可以看到,在這種層次化的體系結(jié)構(gòu)下,控制器功能被分為基本功能層與網(wǎng)絡(luò)基礎(chǔ)服務(wù)層兩個(gè)層面。(1)基本功能層。這一層主要提供控制器所需要的最基本功能。一個(gè)通用的控制器應(yīng)該能夠方便地添加接口協(xié)議,這對(duì)于動(dòng)態(tài)靈活地部署SDN非常重要,因此在這一層首先要完成的就是協(xié)議適配功能??偨Y(jié)起來,需要適配的協(xié)議主要包含兩類:一類是用來跟底層交換設(shè)備進(jìn)行信息交互的南向接口協(xié)議,第二類是用于控制平面分布式部署的東西向接口協(xié)議。協(xié)議適配工作完成后,控制器需要提供用于支撐上層應(yīng)用開發(fā)的功能。
(2)網(wǎng)絡(luò)基礎(chǔ)服務(wù)層。對(duì)于一個(gè)完善的控制器體系架構(gòu)來說,僅僅實(shí)現(xiàn)基本功能層是遠(yuǎn)遠(yuǎn)不夠的。為使開發(fā)者能夠?qū)W⒂谏蠈拥臉I(yè)務(wù)邏輯,提高開發(fā)效率,需要在控制器中加入網(wǎng)絡(luò)基礎(chǔ)服務(wù)層,以提供基礎(chǔ)的網(wǎng)絡(luò)功能。網(wǎng)絡(luò)基礎(chǔ)服務(wù)層中的模塊作為控制器實(shí)現(xiàn)的一部分,可以通過調(diào)用基本功能層的接口來實(shí)現(xiàn)設(shè)備管理、狀態(tài)監(jiān)測等一系列基本功能。這一層涵蓋的模塊可以有很多,取決于控制器的具體實(shí)現(xiàn)。控制器層次化體系結(jié)構(gòu)圖5.1控制器層次化體系結(jié)構(gòu)
基本功能層協(xié)議適配工作完成后,控制器需要提供用于支撐上層應(yīng)用開發(fā)的功能。這些功能主要包括以下4方面內(nèi)容?!衲K管理:重點(diǎn)完成對(duì)控制器中各模塊的管理。允許在不停止控制器運(yùn)行的情況下加載新的應(yīng)用模塊,實(shí)現(xiàn)上層業(yè)務(wù)變化前后底層網(wǎng)絡(luò)環(huán)境的無縫切換?!袷录C(jī)制:該模塊定義了事件處理相關(guān)的操作,包括創(chuàng)建事件、觸發(fā)事件、事件處理等操作。事件作為消息的通知者,在模塊之間劃定了清晰的界限,提高了應(yīng)用程序的可維護(hù)性和重用性?!袢蝿?wù)日志:該模塊提供了基本的日志功能。開發(fā)者可以用它來快速地調(diào)試自己的應(yīng)用程序,網(wǎng)絡(luò)管理人員可以用它來高效、便捷地維護(hù)SDN.●資源數(shù)據(jù)庫:這個(gè)數(shù)據(jù)庫包含了底層各種網(wǎng)絡(luò)資源的實(shí)時(shí)信息,主要包括交換機(jī)資源、主機(jī)資源、鏈路資源等,方便開發(fā)人員查詢使用。網(wǎng)絡(luò)基礎(chǔ)服務(wù)層有5個(gè)主要的功能模塊。●交換機(jī)管理:控制器從資源數(shù)據(jù)庫中得到底層交換機(jī)信息,并將這些信息以更加直觀的方式提供給用戶以及上層應(yīng)用服務(wù)的開發(fā)者。●主機(jī)管理:與交換機(jī)管理模塊的功能類似,重點(diǎn)負(fù)責(zé)提取網(wǎng)絡(luò)中主機(jī)的信息?!裢?fù)涔芾恚嚎刂破鲝馁Y源數(shù)據(jù)庫中得到鏈路、交換機(jī)和主機(jī)的信息后,就會(huì)形成整個(gè)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)圖?!衤酚伞⑥D(zhuǎn)發(fā)策略:提供數(shù)據(jù)分組的轉(zhuǎn)發(fā)策略,最簡單的策略有根據(jù)二層MAC地址轉(zhuǎn)發(fā)、根據(jù)IP地址轉(zhuǎn)發(fā)數(shù)據(jù)分組。用戶也可以在此基礎(chǔ)上繼續(xù)開發(fā)來實(shí)現(xiàn)自己的轉(zhuǎn)發(fā)策略。●虛擬網(wǎng)劃分:虛擬網(wǎng)劃分可有效利用網(wǎng)絡(luò)資源,實(shí)現(xiàn)網(wǎng)絡(luò)資源價(jià)值的最大化。但出于安全性的考慮,SDN控制器必須能夠通過集中控制和自動(dòng)配置的方式實(shí)現(xiàn)對(duì)虛擬網(wǎng)絡(luò)的安全隔離。5.1.2SDN控制器的基礎(chǔ)功能路由管理:根據(jù)交換機(jī)收集到的路由選擇信息,創(chuàng)建并轉(zhuǎn)發(fā)優(yōu)化的最短路徑信息。通知管理:接收、處理和向服務(wù)事件轉(zhuǎn)發(fā)報(bào)警、安全與狀態(tài)變化信息。安全管理:在應(yīng)用程序與服務(wù)之間提供隔離和強(qiáng)化安全性。拓?fù)涔芾恚航⒑途S護(hù)交換機(jī)互聯(lián)的拓?fù)浣Y(jié)構(gòu)的信息。統(tǒng)計(jì)管理:收集通過交換機(jī)轉(zhuǎn)發(fā)的數(shù)據(jù)量信息。設(shè)備管理:配置交換機(jī)參數(shù)與屬性,管理流表。1、控制器數(shù)量的變化在SDN提出初期,其控制平面的一種設(shè)計(jì)就是將所有的控制功能移到一個(gè)集中控制器上,即單控制器。2、控制器布控問題多控制器解決了單控制器的性能瓶頸問題,但同時(shí)也帶了許多新的問題,其中最相關(guān)的是控制器的數(shù)量和部署以及全局狀態(tài)的一致性問題。5.1.3SDN控制器的擴(kuò)展基本概念:控制器數(shù)量,控制器布控問題等。控制器數(shù)量的變化在SDN提出初期,其控制平面的一種設(shè)計(jì)就是將所有的控制功能移到一個(gè)集中控制器上,即單控制器。然而將來是大數(shù)據(jù)時(shí)代,在對(duì)大規(guī)模網(wǎng)絡(luò)進(jìn)行管控時(shí),控制器中存儲(chǔ)的數(shù)據(jù)量過大,所需處理的請(qǐng)求事件過于頻繁,必將導(dǎo)致SDN控制器流表的爆炸性增長,流的映射及查詢開銷劇烈增加;同時(shí),單一控制器的處理能力及I/0能力均有限,在面對(duì)大規(guī)模網(wǎng)絡(luò)的復(fù)雜應(yīng)用,
必然會(huì)產(chǎn)生系統(tǒng)性能瓶頸。早期關(guān)于SDN的提議均是基于流的,其都會(huì)產(chǎn)生額外的流初始化時(shí)延,文獻(xiàn)中詳細(xì)闡述了單控制器在擴(kuò)展性方面所面臨此的問題,即若網(wǎng)絡(luò)直徑足夠大,控制器的部署位置同樣會(huì)對(duì)流的建立延遲產(chǎn)生影響??刂破鞑伎貑栴}多控制器解決了單控制器的性能瓶頸問題,但同時(shí)也帶了許多新的問題,其中最相關(guān)的是控制器的數(shù)量和部署以及全局狀態(tài)的一致性問題。而控制器的部署,重點(diǎn)是分區(qū)問題,即對(duì)于廣域網(wǎng),需要將其劃分為多個(gè)子網(wǎng),多個(gè)控制器分別管理其域內(nèi)交換機(jī)。相關(guān)文獻(xiàn)中,介紹了更具有普遍性的多控制器管控網(wǎng)絡(luò)的區(qū)域劃分算法,引入了DevolvedController的概念。提出了Path-partition和Partition-path兩種啟發(fā)式算法,前者先路由再劃分區(qū)域;而后者是先劃分區(qū)域再路由。通過測試分析,兩者各有優(yōu)劣,前者能夠使每個(gè)控制器監(jiān)控的鏈路數(shù)更少,但由于其需要考慮每個(gè)控制器中已劃分的鏈路,故其所找到的路徑更長,更適合常規(guī)網(wǎng)絡(luò),而后者更適合非常規(guī)網(wǎng)絡(luò),如fat-tree網(wǎng)絡(luò)等。具體情況需具體分析,恰當(dāng)?shù)剡x取更合適算法。5.1.4SDN控制器的評(píng)估要素本節(jié)詳細(xì)講述SDN控制器的十大評(píng)估要素",便于網(wǎng)絡(luò)管理人員根據(jù)需求進(jìn)行合理的選擇。(1)對(duì)OpenFlow的支持OpenFlow作為最主流的SDN南向接口協(xié)議,也是ONF組織力推的標(biāo)準(zhǔn)化協(xié)議。支持OpenFlow協(xié)議可作為一款SDN控制器是否具有普適性的一個(gè)重要標(biāo)準(zhǔn)。OpenFlow協(xié)議存在多個(gè)版本,本身也在不斷完善中,故在選用控制器時(shí)需重點(diǎn)考量OpenFlow所支持的功能,包括支持可選功能和擴(kuò)展功能。也需要了解網(wǎng)絡(luò)供應(yīng)商的路線圖,能夠支持OpenFlow的新版本。(2)網(wǎng)絡(luò)虛擬化網(wǎng)絡(luò)虛擬化是指多個(gè)邏輯網(wǎng)絡(luò)共享底層網(wǎng)絡(luò)基礎(chǔ)設(shè)施,從而提高網(wǎng)絡(luò)資源利用率,加速業(yè)務(wù)部署,以及提供業(yè)務(wù)QoS保障。SDN控制器擁有全局網(wǎng)絡(luò)視角,其集中式管控的優(yōu)勢可極大地簡化資源的統(tǒng)調(diào)配,能夠動(dòng)態(tài)地創(chuàng)建基于策略的虛擬網(wǎng)絡(luò),這些虛擬的網(wǎng)絡(luò)能夠形成邏輯的網(wǎng)絡(luò)資源池,類似于服務(wù)器虛擬化的計(jì)算資源池。5.1.4SDN控制器的評(píng)估要素(3)網(wǎng)絡(luò)功能云服務(wù)提供商在提供多租戶網(wǎng)絡(luò)服務(wù)時(shí),出于安全考慮,租戶希望其流量和數(shù)據(jù)與其他租戶之間是互相獨(dú)立的,因而SDN控制器在提供網(wǎng)絡(luò)虛擬化能力的同時(shí)需要提供嚴(yán)格隔離性保障功能;同時(shí),OpenFlow1.0提供基于流(12元組)的匹配轉(zhuǎn)發(fā)方式,便于對(duì)流的細(xì)粒度處理,作為SDN控制器可提供基于流的QoS保障功能;此外,SDN控制器擁有全網(wǎng)拓?fù)湟暯?,有能力發(fā)現(xiàn)源端到目的端的多條路徑并提供多徑轉(zhuǎn)發(fā)功能,可打破STP協(xié)議的性能和可擴(kuò)展性限制,相比于傳統(tǒng)的TRILL和SPB方案,SDN控制器可提供相同的能力而無須對(duì)網(wǎng)絡(luò)進(jìn)行任何改動(dòng)。(4)可擴(kuò)展性SDN的集中式架構(gòu)便于網(wǎng)絡(luò)管理員根據(jù)需求,靈活地在控制器中添加、更改和刪除相應(yīng)的網(wǎng)絡(luò)服務(wù)模塊,使得對(duì)全網(wǎng)的管理就如同在一臺(tái)網(wǎng)絡(luò)設(shè)備中一樣。因而SDN可擴(kuò)展性的一個(gè)至關(guān)重要的指標(biāo)是可支持OpenFlow交換機(jī)的數(shù)量。此外,如何減少廣播對(duì)網(wǎng)絡(luò)帶寬和流表規(guī)模的影響,也是評(píng)估SDN控制器可擴(kuò)展性的一個(gè)重要因素。5.1.4SDN控制器的評(píng)估要素(5)性能SDN控制器最重要的功能是將處理每一條流的第一個(gè)數(shù)據(jù)分組的處理結(jié)果,以流表項(xiàng)的方式寫入到交換機(jī)的流表中,便于后續(xù)報(bào)文的處理。因而,控制器對(duì)流的處理時(shí)延以及每秒處理新流的數(shù)目是評(píng)價(jià)控制器性能的最主要性能指標(biāo)。(6)網(wǎng)絡(luò)可編程性在傳統(tǒng)網(wǎng)絡(luò)環(huán)境中,對(duì)網(wǎng)絡(luò)功能的更改需要依次在相關(guān)設(shè)備上進(jìn)行配置,這不僅實(shí)施費(fèi)力還容易出錯(cuò),且無法根據(jù)網(wǎng)絡(luò)的動(dòng)態(tài)變化實(shí)時(shí)調(diào)整,這種原始的靜態(tài)網(wǎng)絡(luò)編程特性使得網(wǎng)絡(luò)性能難以得到保障。作為新興的網(wǎng)絡(luò)技術(shù),SDN的一個(gè)重要特性是擁有網(wǎng)絡(luò)可編程能力,具體包括數(shù)據(jù)流的重定向、精確的報(bào)文過濾以及為網(wǎng)絡(luò)應(yīng)用提供友好的北向可編程接口。5.1.4SDN控制器的評(píng)估要素(7)可靠性可靠性是評(píng)價(jià)網(wǎng)絡(luò)的一個(gè)十分重要的標(biāo)準(zhǔn),SDN控制器作為整個(gè)網(wǎng)絡(luò)的控制中樞,其單點(diǎn)故障將可能引起整個(gè)網(wǎng)絡(luò)的癱瘓。當(dāng)前為提高SDN網(wǎng)絡(luò)的可靠性,主流的做法是利用集群技術(shù),為SDN控制器提供主從熱備份機(jī)制,一旦檢測的主SDN控制器出現(xiàn)故障,可立即切換到備份控制器。此外,相比于從SDN控制器自身提高可靠性,另一種做法是通過控制器計(jì)算源端到目的端的多條轉(zhuǎn)發(fā)路徑,并在組表中存儲(chǔ)備份路徑,當(dāng)網(wǎng)絡(luò)鏈路出現(xiàn)故障時(shí),可自動(dòng)切換到備份路徑,從而提高網(wǎng)絡(luò)可靠性。(8)網(wǎng)絡(luò)安全性為提供網(wǎng)絡(luò)安全性,控制器需要實(shí)現(xiàn)企業(yè)級(jí)身份驗(yàn)證和授權(quán),同時(shí)為了使網(wǎng)絡(luò)管理人員更加靈活地對(duì)網(wǎng)絡(luò)進(jìn)行控制,控制器需要具備實(shí)現(xiàn)對(duì)各種關(guān)鍵流量訪問進(jìn)行管控的能力,如管理流量、控制流量等能力。此外,控制器自身作為網(wǎng)絡(luò)攻擊重點(diǎn)對(duì)象,需在控制平面中限制控制信令的速率以及提供告警機(jī)制。5.1.4SDN控制器的評(píng)估要素(9)集中管理和可視化SDN的一個(gè)優(yōu)勢在于能夠給網(wǎng)絡(luò)管理人員提供物理網(wǎng)絡(luò)和各虛擬網(wǎng)絡(luò)的可視化信息,如流量、拓?fù)涞?。另外,網(wǎng)絡(luò)管理人員通常希望能夠通過標(biāo)準(zhǔn)的協(xié)議與技術(shù)對(duì)SDN控制器進(jìn)行監(jiān)控,因此,在理想情況下,SDN控制器需要通過RESTAPI提供對(duì)網(wǎng)絡(luò)信息訪問的支持。(10)控制器供應(yīng)商SDN技術(shù)作為未來網(wǎng)絡(luò)領(lǐng)域的一片藍(lán)海,近些年來各大網(wǎng)絡(luò)廠商爭相進(jìn)入。考慮到SDN市場的不穩(wěn)定性和特殊性,在選擇SDN控制器時(shí)除了參考上述技術(shù)層面上的指標(biāo)外,還需關(guān)注供應(yīng)商的財(cái)務(wù)、技術(shù)資源、當(dāng)前正在進(jìn)行的SDN研發(fā)和進(jìn)展以及其專注在SDN市場的定位和競爭能力。5.2.1NOX/POX5.2.2Ryu5.2.3Floodlight5.2.4OpenDaylight5.2.5 ONOS5.2開源控制器5.2.1NOX/POXNOX是全球第一個(gè)開源的SDN控制器,2008年由Nicira公司主導(dǎo)開發(fā)。作為SDN網(wǎng)絡(luò)操作系統(tǒng)的先驅(qū),它的出現(xiàn)在SDN發(fā)展進(jìn)程中具有里程碑式的意義。NOX在很大程度上推動(dòng)了OpenFlow
技術(shù)的發(fā)展,也是早期SDN領(lǐng)域眾多研究項(xiàng)目的基礎(chǔ)。NOX底層模塊由C++實(shí)現(xiàn),上層應(yīng)用可以用C++或Python語言編寫。圖5.2展示了其框架結(jié)構(gòu),從圖5.2中可以看出,NOX的核心組件提供了用于與OpenFlow交換機(jī)進(jìn)行交互的API和輔助方法,包括連接處理器和事件引擎,同時(shí)還提供了如主機(jī)跟蹤、路由計(jì)算、拓?fù)浒l(fā)現(xiàn)以及Python接口等在內(nèi)可選擇的附加組件。5.2.1NOX/POX圖5.2NOX的框架在2011年,Nicira
公司重新推出了NOX的兄弟版控制器POX。POX完全采用Python語言編寫,保持與NOX一致的事件處理機(jī)制和編程模式,由于Python編程語言本身簡單易學(xué),因此更加易于被研究人員接受,得到了廣泛關(guān)注和應(yīng)用??偨Y(jié)來看,POX控制器主要包含如下技術(shù)特征:一是基于Python編程語言實(shí)現(xiàn)了OpenFlow接口;二是可以與PyPy(PyPy是Python語言的動(dòng)態(tài)編譯器)進(jìn)行捆綁運(yùn)行,易于部署;三是支持Linux、MacOS、Windows等多種操作系統(tǒng),靈活易操作。5.2.1NOX/POX為了方便用戶開發(fā)基于POX控制器的各種應(yīng)用,POX提供了相應(yīng)的核心API和一系列組件。其中,核心API提供了對(duì)報(bào)文、地址的解析封裝以及對(duì)于事件的操作等基本接口,通過這些基本的接口,可以方便開發(fā)者開發(fā)網(wǎng)絡(luò)控制器的應(yīng)用。在核心API的基礎(chǔ)上,POX控制器提供了一系列組件,表5.1詳細(xì)說明了各組件功能。組件類型及說明組件名功能基礎(chǔ)組件pox.coreobjectPOXAPI的核心,主要用于完成組件的注冊(cè)以及組件之間相關(guān)性和事件的管理pox.lib.addresses主要用于完成對(duì)各類地址(IP地址、Ethermet地址等)的操作pox.lib.revent定義了事件處理相關(guān)的操作,包括創(chuàng)建事件、觸發(fā)事件、事件處理等操作pox.lib.packet主要用于完成對(duì)于報(bào)文的封裝、解析、處理等操作表5.1POX控制器組件功能5.2.1NOX/POX組件類型及說明組件名功能與OpenFlow協(xié)議相關(guān)的組件openflow.of01主要用來與OpenFlow1.0交換機(jī)進(jìn)行通信應(yīng)用類組件forwarding.hub傳統(tǒng)的Hub策略forwarding.12_learning傳統(tǒng)的二層交換機(jī)策略forwarding.l3_learning三層學(xué)習(xí)交換,其主要使用場景是處理ARP響應(yīng)forwarding.12_multi根據(jù)整個(gè)網(wǎng)絡(luò)的拓?fù)鋪硗瓿啥臃纸M的轉(zhuǎn)發(fā)openflow.spanningtree實(shí)現(xiàn)了生成樹策略web.webcorePOX的Web服務(wù)組件messenger基于JSON格式的信息與外部進(jìn)程進(jìn)行交互openflow.discovery使用LLDP報(bào)文來發(fā)現(xiàn)整個(gè)網(wǎng)絡(luò)的拓?fù)鋚roto.dhepd實(shí)現(xiàn)了簡單的DHCP服務(wù)器功能proto.dhep_clientDHCP客戶端組件proto.arpresponder完成查詢、修改、增加ARP表的功能info.packetdump將packetin信息寫入log文件中proto.dnsspy監(jiān)聽DNS應(yīng)答分組并存儲(chǔ)結(jié)果logPOX的日志模塊續(xù)表5.1POX控制器組件功能5.2.2RyuRyu是由日本電報(bào)電話公司(NTT)主導(dǎo)開發(fā)的一個(gè)開源SDN控制器項(xiàng)目,其字面是日語中“Flow"的意思,旨在提供一個(gè)健壯又不失靈活性的SDN網(wǎng)絡(luò)操作系統(tǒng)。Ryu使用Python語言開發(fā),提供了完備、友好的API,目標(biāo)是使得網(wǎng)絡(luò)運(yùn)營者和應(yīng)用商可以高效便捷地開發(fā)新的SDN管理和控制應(yīng)用。當(dāng)前,Ryu提供了非常豐富的協(xié)議支持,如OpenFlow
協(xié)議1.0/1.2/1.3/1.4等多個(gè)版本、OF-CONFIG協(xié)議、NETCONF協(xié)議以及Nicira公司產(chǎn)品中的一些擴(kuò)展功能,同時(shí)它有著豐富的第三方工具,如防火墻App等。5.2.2RyuRyu的整體架構(gòu)如圖5.3所示,最上層的Quantum與OFREST分別為OpenStack和Web提供了編程接口,中間層是Ryu自行研發(fā)的應(yīng)用組件,最下層是Ryu底層實(shí)現(xiàn)的基本組件。圖5.3Ryu整體架構(gòu)5.2.2Ryu尤其值得說明的是,Ryu
基于組件的框架進(jìn)行設(shè)計(jì),這些組件都以Python模塊的形式存在。組件是以一個(gè)或者多個(gè)線程形式存在的,這樣可以便于提供一些接口用于控制組件狀態(tài)和產(chǎn)生事件,事件中封裝了具體的消息數(shù)據(jù),由于事件會(huì)在多個(gè)組件中使用,因此事件對(duì)象是只讀的。目前Ryu中包含的常用組件功能說明見表5.2。表5.2Ryu控制器組件功能組件類型及說明組件名功能基本組件base.appmanager提供了對(duì)其他組件的管理,被ryu-manager自動(dòng)調(diào)用controller.dpset管理OF交換機(jī)的組件,今后的版本中可能會(huì)被ryu/topology代替controller.ofphandler對(duì)控制器、交換機(jī)間握手、協(xié)商過程的處理controller.ofpevent完成OF消息一事件的轉(zhuǎn)化,提供北向接口APIcontroller.controller控制器組件,管理與OF交換機(jī)連接的安全通道,接收OF消息,調(diào)用ofp_event,并發(fā)布相應(yīng)的“事件”,以觸發(fā)訂閱了該“事件”的組件的處理邏輯5.2.2Ryu續(xù)表5.2Ryu控制器組件功能與OpenFlow協(xié)議相關(guān)的組件Ofprotolx(x=0/1/2/3/4)定義了相應(yīng)協(xié)議版本的參數(shù)Ofprotolx_parser(x=0/1/2/3/4)定義了相關(guān)協(xié)議版本消息的封裝格式基本應(yīng)用類組件app.simple_switch傳統(tǒng)的二層交換機(jī)策略app.simple_switchstp無廣播環(huán)路的二層交換機(jī)策略app.simple_isolation基于MAC的過濾策略app.simplevlan實(shí)現(xiàn)了基本的VLANappgretunnel實(shí)現(xiàn)了多種隧道策略topology交換機(jī)與鏈路狀態(tài)監(jiān)測組件,用于拓?fù)鋱D的構(gòu)建基于RESTAPI的應(yīng)用組件(用于Web可視化管理)app.ofctlrest用于管理OVS中的流表功能app.restconfswitch用于配置OF交換機(jī)app.rest_quanturm與Quantum的通信接口app.restrouter路由策略app.resttopology用于對(duì)拓?fù)涞墓芾韆pp.resttunnel隧道策略組件類型及說明組件名功能5.2.3FloodlightFloodlight是一款基于Java語言的開源SDN控制器,遵循Apache2.0軟件許可,支持OpenFlow協(xié)議。Floodlight與NOX、POX等其他控制器類似,也使用了“層次化”架構(gòu)來實(shí)現(xiàn)控制器的功能,同時(shí)提供了非常豐富的應(yīng)用,可以直接在網(wǎng)絡(luò)中部署數(shù)據(jù)轉(zhuǎn)發(fā)、拓?fù)浒l(fā)現(xiàn)等基本功能。Floodlight通過向OpenFlow交換機(jī)下發(fā)流表等方式來實(shí)現(xiàn)數(shù)據(jù)分組轉(zhuǎn)發(fā)決策,以達(dá)到對(duì)交換設(shè)備集中控制的目的。5.2.3FloodlightFloodlight整體架構(gòu)由控制器核心功能以及運(yùn)行其上的應(yīng)用組成,應(yīng)用和控制器之間可以通過Java接口或RESTAPI(RepresentationalStateTransferAPI,表征狀態(tài)轉(zhuǎn)移API)交互,整體架構(gòu)如圖5.4所示。圖5.4FLoodlight系統(tǒng)架構(gòu)5.2.3FloodlightFloodlight使用模塊框架實(shí)現(xiàn)控制器特性和應(yīng)用,在功能上Flodlight可看作由控制器核心服務(wù)模塊、普通應(yīng)用模塊和REST應(yīng)用模塊3部分構(gòu)成:核心服務(wù)模塊為普通應(yīng)用模塊和REST應(yīng)用模塊提供JavaAPI或RESTAPI基礎(chǔ)支撐服務(wù);普通應(yīng)用模塊依賴于核心服務(wù)模塊,并為REST應(yīng)用模塊提供服務(wù);REST應(yīng)用模塊依賴核心服務(wù)模塊和普通應(yīng)用模塊提供的RESTAPI,這類應(yīng)用只需調(diào)用Floodlight控制器提供的RESTAPI就可以完成相應(yīng)的功能,可使用任何編程語言進(jìn)行靈活的開發(fā),但受到RESTAPI的限制,只能完成有限的功能。開發(fā)者可以使用系統(tǒng)提供的API創(chuàng)建應(yīng)用,也可以添加自己開發(fā)的模塊,并將API開放給其他開發(fā)者使用。5.2.3Floodlight這種模塊化、分層次的部署方式有效地實(shí)現(xiàn)了控制器的可擴(kuò)展性。通過表5.3對(duì)Floodlight控制器各模塊進(jìn)行介紹。組件類型及說明組件名功能主要核心服務(wù)模塊FloodlightProvider處理控制器和交換機(jī)連接以及OF消息分發(fā)的模塊DeviceManagerlmpl管理網(wǎng)絡(luò)中的主機(jī)等終端設(shè)備LinkDiscoveryManager負(fù)責(zé)管理網(wǎng)絡(luò)中的鏈路,發(fā)現(xiàn)交換機(jī)之間的連接關(guān)系TopologyService維護(hù)拓?fù)湫畔estApiServer提供RESTAPI服務(wù)ThreadPool為其他模塊分配線程的線程池MemoryStorageSource提供數(shù)據(jù)存儲(chǔ)及變更通知服務(wù)FlowCache流緩存,用于控制器記錄所有有效的流,當(dāng)事件被一個(gè)不同模塊監(jiān)聽或者隨時(shí)查詢交換機(jī)時(shí),流緩存就會(huì)更新,這樣可以整合不同模塊對(duì)流的更新和檢索PacketStreamer提供數(shù)據(jù)分組流服務(wù),使用此項(xiàng)服務(wù)可以讓任何交換機(jī)、控制器和觀察者之間有選擇地交換數(shù)據(jù)表5.3Floodlight控制器組件功能5.2.3Floodlight普通應(yīng)用模塊Firewall通過檢測Packet-in行為使得流在OpenFlow交換機(jī)上強(qiáng)制執(zhí)行ACLLearningSwitch實(shí)現(xiàn)了一個(gè)普通交換機(jī)的二層轉(zhuǎn)發(fā)功能VirtualNetworkFilter實(shí)現(xiàn)在一一個(gè)二層的域中建立多個(gè)邏輯的二層網(wǎng)絡(luò)Forwarding實(shí)現(xiàn)兩個(gè)設(shè)備之間的數(shù)據(jù)分組轉(zhuǎn)發(fā)PortDownReconciliation實(shí)現(xiàn)在端口關(guān)閉的時(shí)候處理網(wǎng)絡(luò)中的流REST應(yīng)用模塊CircuitPusher用于創(chuàng)建2臺(tái)設(shè)備之間的虛鏈路OpenStackQuantum支持FloodlightOpenStack的Quantum插件,用來管理網(wǎng)絡(luò)組件類型及說明組件名功能續(xù)表5.3Floodlight控制器組件功能5.2.4OpenDaylightOpenDaylight項(xiàng)目在2013年初由Linux協(xié)會(huì)聯(lián)合業(yè)內(nèi)18家企業(yè)(包括Cisco、Juniper、Broadcom等多家傳統(tǒng)網(wǎng)絡(luò)巨頭公司)創(chuàng)立,其希望能夠提供開放的北向API,同時(shí)支持包括OpenFlow在內(nèi)的多種南向接口協(xié)議,底層支持傳統(tǒng)交換機(jī)和OpenFlow交換機(jī)。OpenDaylight擁有一套模塊化、可插拔且極為靈活的控制器,能夠被部署在任何支持Java的平臺(tái)上。目前,OpenDaylight
的基本版本已經(jīng)實(shí)現(xiàn)了傳統(tǒng)二/三層交換機(jī)的基本轉(zhuǎn)發(fā)功能,并支持任意網(wǎng)絡(luò)拓?fù)浜妥顑?yōu)路徑轉(zhuǎn)發(fā)。5.2.4OpenDaylightOpenDaylight使用模塊化方式來實(shí)現(xiàn)控制器的功能和應(yīng)用,其最新發(fā)布的“Hydrogen"版本總體架構(gòu)如圖5.5所示。圖5.5OpenDaylight的系統(tǒng)總體架構(gòu)(Hydrogem版本)5.2.4OpenDaylight表5.4簡單介紹了OpenDaylight
控制器幾個(gè)主要模塊的功能。表5.4OpenDaylight控制器模塊功能模塊名功能SAL(服務(wù)抽象層)控制器模塊化設(shè)計(jì)的核心,支持多種南向協(xié)議,屏蔽了協(xié)議間差異,為上層模塊和應(yīng)用提供一致性的服務(wù)TopologyManager(拓?fù)涔芾?負(fù)責(zé)管理節(jié)點(diǎn)、連接、主機(jī)等信息,負(fù)責(zé)拓?fù)溆?jì)算StatsManager(統(tǒng)計(jì)管理)負(fù)責(zé)統(tǒng)計(jì)各種狀態(tài)消息HostTracker(主機(jī)追蹤)負(fù)責(zé)追蹤主機(jī)信息,記錄主機(jī)的IP地址、MAC地址、VLAN以及連接交換機(jī)的節(jié)點(diǎn)和端口信息。該模塊支持ARP請(qǐng)求發(fā)送及ARP消息監(jiān)聽,支持北向接口的主機(jī)創(chuàng)建、刪除及查詢ForwardingRulesManager(轉(zhuǎn)發(fā)規(guī)則管理)負(fù)責(zé)管理流規(guī)則的增加、刪除、更新、查詢等操作,并在內(nèi)存數(shù)據(jù)庫中維護(hù)所有安裝到網(wǎng)絡(luò)節(jié)點(diǎn)的流規(guī)則信息,當(dāng)流規(guī)則發(fā)生變化時(shí)負(fù)責(zé)維護(hù)規(guī)則的一致性SwitchManager(交換機(jī)管理)負(fù)責(zé)維護(hù)網(wǎng)絡(luò)中節(jié)點(diǎn)、節(jié)點(diǎn)連接器、接入點(diǎn)屬性、三層配置、Span配置、節(jié)點(diǎn)配置、網(wǎng)絡(luò)設(shè)備標(biāo)識(shí)ARPHandler(ARP處理器)負(fù)責(zé)處理ARP報(bào)文5.2.4OpenDaylight服務(wù)抽象層(SAL)是整個(gè)控制器模塊化設(shè)計(jì)的核心,它為上層控制模塊屏蔽了各種南向接口協(xié)議的差異。SAL框架如圖5.6所示。圖5.6服務(wù)抽象層(SAL)系統(tǒng)框架5.2.5ONOSONOS是一個(gè)采用OSGI技術(shù)來管理子項(xiàng)目的SDNQ控制器開源項(xiàng)目,在最初設(shè)計(jì)時(shí)有這么幾個(gè)目標(biāo)是明確的:●代碼模塊化:支持把新的功能作為新的獨(dú)立單元引入。●特性可配置:無論是在啟動(dòng)還是運(yùn)行時(shí),支持動(dòng)態(tài)加載和卸載特性?!駞f(xié)議無關(guān):應(yīng)用不需要和具體的協(xié)議庫和實(shí)現(xiàn)綁定。如圖5.7所示,上面的每一層都是分層體系結(jié)構(gòu),其中面向網(wǎng)絡(luò)的模塊通過一個(gè)南向(提供者)API與Core進(jìn)行交互,Core與應(yīng)用程序通過北向(消費(fèi)者)API進(jìn)行交互。南向API定義了協(xié)議中立的手段將網(wǎng)絡(luò)狀態(tài)信息傳遞給核心,Core通過面向網(wǎng)絡(luò)的模塊與網(wǎng)絡(luò)設(shè)備交互。北向API為應(yīng)用程序提供了描述網(wǎng)絡(luò)組件和屬性的抽象,以便它們可以根據(jù)策略定義其所需的動(dòng)作。圖5.7ONOS體系結(jié)構(gòu)5.2.5ONOS模塊化的實(shí)現(xiàn):ONOS項(xiàng)目由一組子項(xiàng)目組成,每個(gè)項(xiàng)目都有自己的源代碼樹,可以獨(dú)立構(gòu)建。為此,ONOS的源碼Q采分層的方式來組織以方便利用Maven的級(jí)聯(lián)POM文件組織。每個(gè)子項(xiàng)目都有自己的pom.xml文件和目錄,子pom.xml文件會(huì)繼承父Pom文件的共享依賴項(xiàng)和配置,使它們能夠獨(dú)立于不相關(guān)的子項(xiàng)目構(gòu)建。Root目錄包含用于建立完整的項(xiàng)目及斯有模塊的頂層POM文件。特性可配置:ONOS使用Karaf作為其OSGI框架,除了在運(yùn)行時(shí)的動(dòng)態(tài)模塊加載和啟動(dòng)時(shí)的依賴解析,Karaf還支持以下幾個(gè)特性。●支持使用標(biāo)準(zhǔn)的JAX-RSAPl來開發(fā)安全的API接口,支持將特性定義為-組Bundle來進(jìn)行集中的自定義設(shè)置。●對(duì)代包有嚴(yán)格的語義版本聲明,包括第三方依賴,有易擴(kuò)展的命令行框架,支持本地和遠(yuǎn)端的SSH控制臺(tái)登陸?!裰С植煌罩炯?jí)別的記錄。協(xié)議無關(guān),ONOS被劃分為以下幾個(gè)部分:●和網(wǎng)絡(luò)交互的協(xié)議感知模塊●協(xié)議無關(guān)的系統(tǒng)Core,跟蹤和服務(wù)網(wǎng)絡(luò)狀態(tài)信息●基于Core提供的系統(tǒng)信息來進(jìn)行消費(fèi)和操作的應(yīng)用5.3.1CiscoXNC控制器5.3.2VMware的NSX-T控制器5.3商業(yè)控制器5.3.1CiscoXNC控制器為了積極應(yīng)對(duì)軟件定義網(wǎng)絡(luò)給傳統(tǒng)網(wǎng)絡(luò)設(shè)備商所帶來的沖擊,Cisco公司于2012年6月推出了ONE(OpenNetworkEnvironment,開放網(wǎng)絡(luò)環(huán)境)戰(zhàn)略。該開放網(wǎng)絡(luò)環(huán)境集合了一組豐富的平臺(tái)API、控制器和代理(Agent)以及底層的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,用戶可以借助于ONE提供的跨層網(wǎng)絡(luò)可編程能力來靈活地管控網(wǎng)絡(luò)。如圖5.8所示,可以看出Cisco開放網(wǎng)絡(luò)環(huán)境ONE是一個(gè)全面的系統(tǒng)框架,主要包括3個(gè)組成部分。圖5.8Cisco開方網(wǎng)絡(luò)環(huán)境(ONE)5.3.1CiscoXNC控制器平臺(tái)API:為開發(fā)人員提供編寫軟件應(yīng)用程序的能力,應(yīng)用程序通過API獲取網(wǎng)絡(luò)設(shè)備中的數(shù)據(jù),在此基礎(chǔ)上,可以對(duì)網(wǎng)絡(luò)元素進(jìn)行操作以達(dá)到管控網(wǎng)絡(luò)的目的。CiscoONE平臺(tái)套件(onePK)是一個(gè)供開發(fā)人員使用的工具套件,包含了大量支持CiscoIOS、IOS-XR和X-OS軟件的平臺(tái)API??刂破骱痛恚菏褂枚喾N工具、技術(shù)和協(xié)議與底層網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行通信,提取所需狀態(tài)信息。虛擬化的網(wǎng)絡(luò)基礎(chǔ)設(shè)施:對(duì)網(wǎng)絡(luò)基礎(chǔ)設(shè)施和服務(wù)資源提供高度抽象的虛擬化能力,使得物理網(wǎng)絡(luò)與邏輯網(wǎng)絡(luò)之間的區(qū)別越來越小。圖5.8Cisco開方網(wǎng)絡(luò)環(huán)境(ONE)5.3.1CiscoXNC控制器Cisco推出的擴(kuò)展網(wǎng)絡(luò)控制器(eXtensibleNetworkController,XNC))是一個(gè)SDN控制器,支持業(yè)界標(biāo)準(zhǔn)的OpenFlow
協(xié)議,同時(shí)使用異構(gòu)、與平臺(tái)無關(guān)的方式提供對(duì)Cisco以及第三方網(wǎng)絡(luò)設(shè)備的可編程能力。表5.5和表5.6分別列出了XNC提供的核心功能和高級(jí)功能。CiscoXNC控制器通過北向接口為開發(fā)者和獨(dú)立軟件供應(yīng)商提供了對(duì)網(wǎng)絡(luò)的可編程能力。為了支持ONF提出的混合集成模式,CiscoXNC的控制平面采用了與傳統(tǒng)控制協(xié)議共存的方式。在混合集成模式中,網(wǎng)絡(luò)設(shè)備繼續(xù)運(yùn)行已有的網(wǎng)絡(luò)控制協(xié)議(如OSPF、IS-IS),CiscoXNC的控制平面則重點(diǎn)實(shí)現(xiàn)其他控制功能(如OpenFlow協(xié)議)。網(wǎng)絡(luò)設(shè)備中的OpenFlow代理廣泛存在于Cisco的網(wǎng)絡(luò)設(shè)備(如CiscoNexus和Catalyst交換機(jī)等),會(huì)對(duì)控制器的OpenFlow請(qǐng)求作出響應(yīng)。就使得網(wǎng)絡(luò)的可編程性具有跨平臺(tái)、跨數(shù)據(jù)中心、跨園區(qū)廣域網(wǎng)的能力。5.3.1CiscoXNC控制器功能名功能簡介多協(xié)議接口支持不僅支持CiscoonePK,同時(shí)提供對(duì)OpenFlow協(xié)議的支持提供可視化能力和可編程能力的功能包括網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)、網(wǎng)絡(luò)設(shè)備管理以及獲取詳細(xì)的網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù)等功能服務(wù)抽象層(SAL)SAL可以通過OpenFlow或CiscoonePK實(shí)現(xiàn)模塊化的設(shè)備支持對(duì)控制器訪問的管理能力上層應(yīng)用可以通過RESTAPI或其他北向編程API來管理訪問控制器安全功能基于角色的訪問控制可以與企業(yè)的認(rèn)證、授權(quán)和計(jì)費(fèi)(AAA)以及其他安全控制協(xié)議進(jìn)行集成功能名功能簡介監(jiān)聽管理用于網(wǎng)絡(luò)挖掘的SDN應(yīng)用實(shí)例拓?fù)錈o關(guān)轉(zhuǎn)發(fā)允許管理員自定義網(wǎng)絡(luò)中數(shù)據(jù)流的傳輸路徑虛擬網(wǎng)劃分通過網(wǎng)絡(luò)切片的方式對(duì)網(wǎng)絡(luò)進(jìn)行邏輯分區(qū)基于高可用性的集群增強(qiáng)網(wǎng)絡(luò)的可擴(kuò)展性和容錯(cuò)能力表5.5XNC控制器提供的核心功能表5.6XNC控制器提供的高級(jí)功能5.3.2VMware的NSX-T控制器NSX-T(Transformer)是VMware的另一個(gè)NSX平臺(tái),NSX-T與VMwarePhoton平臺(tái)集成。VMwareNSX-T專注于處理異構(gòu)endpoint和技術(shù)堆棧的新興應(yīng)用程序框架和架構(gòu)的解決方案。除了vSphere
管理程序之外,這些環(huán)境還可能包括其他hypervisors、容器、裸機(jī)和公共云。NSX-T提供分布式防火墻、邏輯交換和分布式路由。同NSX-V一樣,NSX-T架構(gòu)內(nèi)置了獨(dú)立的數(shù)據(jù)平面、控制平面和管理平面。NSX-TDataCenter的工作方式就是實(shí)現(xiàn)三個(gè)單獨(dú)而集成的工作面:管理、控制和數(shù)據(jù)。這些工作面是作為位于兩種類型的節(jié)點(diǎn)上的一組進(jìn)程、模塊和代理實(shí)現(xiàn)的:NSXManager和傳輸節(jié)點(diǎn)。5.3.2VMware的NSX-T控制器NSX-T架構(gòu)是圍繞四個(gè)基本屬性設(shè)計(jì)的?!癫呗院鸵恢滦裕涸试S通過RESTfulAPI一次性定義策略并實(shí)現(xiàn)最終狀態(tài),以滿足當(dāng)今自動(dòng)化環(huán)境的需求。NSX-T維護(hù)多個(gè)獨(dú)立系統(tǒng)清單信息和控制以實(shí)現(xiàn)不同域中期望結(jié)果?!窬W(wǎng)絡(luò)和連接性:允許與多個(gè)vSphereQ和kvm節(jié)點(diǎn)進(jìn)行一致的邏輯交換和分布式路由,無需綁定到計(jì)算管理器/域。連接通過特定于域的實(shí)現(xiàn)在容器和云之間進(jìn)一步擴(kuò)展,同時(shí)仍然提供跨異構(gòu)端點(diǎn)的連接?!癜踩头?wù):允許與網(wǎng)絡(luò)一樣使用統(tǒng)一的安全策略模型連通性。這樣就可以實(shí)現(xiàn)跨多個(gè)計(jì)算域的負(fù)載均衡器、NAT、EDGEfw和dfw等服務(wù)。安全操作規(guī)定闡述了:提供在虛擬機(jī)和容器工作負(fù)載的一致安全對(duì)于確保整體框架Q的完整性至關(guān)要?!窨梢娦裕涸试S通過跨計(jì)算域的公共工具集進(jìn)行一致的監(jiān)視、指標(biāo)收集和流跟蹤。這對(duì)于混合工作負(fù)載的操作是至關(guān)重要的通常,以虛擬機(jī)和容器為中心的這兩種工作負(fù)載都具有完成類似任務(wù)的截然不同的工具。5.3.2VMware的NSX-T控制器NSX-T將控制平面分為兩部分:CentralControlPlane(CCP:中控室):它實(shí)際就是管理集群中的一臺(tái)vm設(shè)備(多稱為CCP設(shè)備);該設(shè)備(管理網(wǎng)絡(luò))通信邏輯上與所有數(shù)據(jù)平面(業(yè)務(wù)網(wǎng)絡(luò))流量隔離;因此它的流量和故障不會(huì)對(duì)實(shí)際的業(yè)務(wù)流量造成影響,業(yè)務(wù)網(wǎng)絡(luò)里的數(shù)據(jù)也不會(huì)穿入到管理網(wǎng)絡(luò),導(dǎo)致管控風(fēng)險(xiǎn)。LocalControlPlane(LCP:端控):該組件部署在傳輸節(jié)點(diǎn)(數(shù)據(jù)節(jié)點(diǎn))上,負(fù)責(zé)在數(shù)據(jù)平面的傳輸節(jié)點(diǎn)上轉(zhuǎn)發(fā)路由條目和防火墻規(guī)則等;5.4.1基于POX編程5.4.2基于Ryu編程
碼分復(fù)用5.4基于控制器的編程5.4.1基于POX編程POX控制器由內(nèi)核(core)、組件(component)組成,內(nèi)核是所有組件的集結(jié)地,有了內(nèi)核,一個(gè)組件想使用另一個(gè)組件無須通過import,而只需向內(nèi)核注冊(cè),組件之間可以通過內(nèi)核來交互。內(nèi)核主要模塊有:openflow
和of01(與openflow1.0交換機(jī)通信)。1、主要模塊1--of_01運(yùn)行一個(gè)線程,該線程循環(huán)監(jiān)聽與交換機(jī)的tcp
連接,當(dāng)交換機(jī)送來某個(gè)協(xié)議消息時(shí),of__01會(huì)觸發(fā)該消息所對(duì)應(yīng)的事件。of_01在此處會(huì)觸發(fā)兩個(gè)source事件:1)該交換機(jī)的connction,2)任意交換機(jī)傳上來的消息會(huì)觸發(fā)openflow的事件。2、主要模塊2--openflow:openflow是一個(gè)source事件,它能被任何交換機(jī)的任意消息觸發(fā)事件。openflow
可以控制所有已經(jīng)連接到pox上的交換機(jī),而connection只能控制某一個(gè)交換機(jī)。5.4.1基于POX編程POX控制器部分組件說明如下。1)forwarding.hub:該組件每個(gè)交換機(jī)添加洪泛通配符規(guī)則,將所有交換機(jī)等效于ethernet集線器。2)forwarding.l2_learning:該組件使opennflow交換機(jī)實(shí)現(xiàn)L2鏈路層上的地址學(xué)習(xí)(類似網(wǎng)橋)。但當(dāng)該組件學(xué)習(xí)地址學(xué)習(xí)時(shí),向流表下發(fā)的規(guī)則會(huì)盡可能的準(zhǔn)確,而不僅僅是L2層的地址。例如不同的TCP連接將產(chǎn)生不同的表項(xiàng)。3)forwarding.l2_pairs:類似于forwarding.l2_learning,12_pairs讓交換機(jī)進(jìn)行地址學(xué)習(xí),但該組件是盡可能的簡化規(guī)則學(xué)習(xí),所有安裝的表項(xiàng)時(shí)只使用L2層信息(如Mac地址)。4)forwarding.l3_learning:組件并不是一個(gè)完整的Router,該組件是可POX的packetlibrary(代碼)的一個(gè)實(shí)現(xiàn)樣例,可以構(gòu)造ARP請(qǐng)求和回復(fù)。13_learning關(guān)心IP從哪來,但并不關(guān)心IP的填充域,如子網(wǎng)等。5.4.1基于POX編程POX中的部分API說明如下。1)event.connection.send()方法:控制器通過這個(gè)方法能夠向OpenFlow交換機(jī)下發(fā)消息。2)ofp_action_output類:通常用在ofp_packet__out和ofp_flow_mod中,ofp_packet_out類代表packet_out報(bào)文,ofp_flow_mod代表flow_mod報(bào)文。ofp_action_output指定了數(shù)據(jù)包要發(fā)往哪個(gè)端口。3)ofp_match類:描述了所需要匹配的包頭字段以及入端口。不過所有的字段都是可選的。以下是部分常用匹配字段:i.dl__src-源MAC地址ii.dl_dst-目的MAC地址iii.in_port-入端口號(hào)4)ofp_flow_mod():能夠?qū)粨Q機(jī)上的流表進(jìn)行修改流表項(xiàng)的內(nèi)容包括指定的匹配域,以及為流表所指定的動(dòng)作actions。actions中包括了output、drop、set_vlan_vid等等。5.4.2基于Ryu編程Ryu是一個(gè)基于組件的軟件定義網(wǎng)絡(luò)框架。Ryu為軟件組件提供定義良好的API,使開發(fā)人員可以輕松創(chuàng)建新的網(wǎng)絡(luò)管理和控制應(yīng)用程序。Ryu支持各種用于管理網(wǎng)絡(luò)設(shè)備的協(xié)議,例如OpenFlow,Netconf,OF-config等。關(guān)于OpenFlow,Ryu支持完全支持1.0,1.2,1.3,1.4,1.5和NiciraExtensions。Ryu目錄結(jié)構(gòu)如圖5.9所示。圖5.9Ryu目錄結(jié)構(gòu)5.4.2基于Ryu編程base中有一個(gè)非常重要的文件:app_manager.py,其作用是RYU應(yīng)用的管理中心。用于加載RYU應(yīng)用程序,接受從APP發(fā)送過來的信息,同時(shí)也完成消息的路由。其主要的函數(shù)有app注冊(cè)、注銷、查找、并定義了RYUAPP基類,定義了RYUAPP的基本屬性。包含name,threads,events,event_handlers和observers等成員,以及對(duì)應(yīng)的許多基本函數(shù)。如:start(),stop()等。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵路吊籃施工方案
- 西藏道路隔離護(hù)欄施工方案
- 漳州泳池工程施工方案
- 賀州復(fù)合型球場施工方案
- 磚混鋼筋綁扎施工方案
- 鐵門安裝施工方案
- 2020-2025年中國水泥工業(yè)節(jié)能環(huán)保市場前景預(yù)測及未來發(fā)展趨勢報(bào)告
- 2025年中國印刷行業(yè)市場評(píng)估分析及發(fā)展前景調(diào)研戰(zhàn)略研究報(bào)告
- 洛陽共享充電柜施工方案
- 紹興廠房推拉棚施工方案
- 2025年河北供水有限責(zé)任公司招聘筆試參考題庫含答案解析
- Unit3 Sports and fitness Discovering Useful Structures 說課稿-2024-2025學(xué)年高中英語人教版(2019)必修第一冊(cè)
- 農(nóng)發(fā)行案防知識(shí)培訓(xùn)課件
- 社區(qū)醫(yī)療抗菌藥物分級(jí)管理方案
- 安徽大學(xué)大學(xué)生素質(zhì)教育學(xué)分認(rèn)定辦法
- 巴布亞新幾內(nèi)亞離網(wǎng)光儲(chǔ)微網(wǎng)供電方案
- 高度限位裝置類型及原理
- 中文版gcs electrospeed ii manual apri rev8v00印刷稿修改版
- 新生兒預(yù)防接種護(hù)理質(zhì)量考核標(biāo)準(zhǔn)
- 除氧器出水溶解氧不合格的原因有哪些
- 沖擊式機(jī)組水輪機(jī)安裝概述與流程
評(píng)論
0/150
提交評(píng)論