SDN控制器ONOS架构—Vecloud
ONOS是一個(gè)采用OSGI技術(shù)來(lái)管理子項(xiàng)目的SDN控制器開(kāi)源項(xiàng)目,在最初設(shè)計(jì)時(shí)有這么幾個(gè)目標(biāo)是明確的:
1.代碼模塊化:支持把新的功能作為新的獨(dú)立單元引入
2.特性可配置:無(wú)論是在啟動(dòng)還是運(yùn)行時(shí),支持動(dòng)態(tài)加載和卸載特性
3.協(xié)議無(wú)關(guān):應(yīng)用不需要和具體的協(xié)議庫(kù)和實(shí)現(xiàn)綁定
模塊化的實(shí)現(xiàn):ONOS項(xiàng)目由一組子項(xiàng)目組成,每個(gè)項(xiàng)目都有自己的源代碼樹,可以獨(dú)立構(gòu)建。為此,ONOS的源碼采用分層的方式來(lái)組織以方便利用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-RS API來(lái)開(kāi)發(fā)安全的API接口
支持將特性定義為一組Bundle來(lái)進(jìn)行集中的自定義設(shè)置
對(duì)代碼包有嚴(yán)格的語(yǔ)義版本聲明,包括第三方依賴
有易擴(kuò)展的命令行框架,支持本地和遠(yuǎn)端的SSH控制臺(tái)登陸
支持不同日志級(jí)別的記錄
協(xié)議無(wú)關(guān),ONOS 被劃分為以下幾個(gè)部分:
和網(wǎng)絡(luò)交互的協(xié)議感知模塊
協(xié)議無(wú)關(guān)的系統(tǒng)Core,跟蹤和服務(wù)網(wǎng)絡(luò)狀態(tài)信息
基于Core提供的系統(tǒng)信息來(lái)進(jìn)行消費(fèi)和操作的應(yīng)用
上面的每一層都是分層體系結(jié)構(gòu),其中面向網(wǎng)絡(luò)的模塊通過(guò)一個(gè)南向(提供者)API與Core進(jìn)行交互,Core與應(yīng)用程序通過(guò)北向(消費(fèi)者)API進(jìn)行交互。南向API定義了協(xié)議中立的手段將網(wǎng)絡(luò)狀態(tài)信息傳遞給核心,Core通過(guò)面向網(wǎng)絡(luò)的模塊與網(wǎng)絡(luò)設(shè)備交互。北向API為應(yīng)用程序提供了描述網(wǎng)絡(luò)組件和屬性的抽象,以便它們可以根據(jù)策略定義其所需的動(dòng)作。
服務(wù)是一個(gè)功能單元,它由不同層的多個(gè)組件作為軟件堆棧創(chuàng)建垂直切片。我們把組成服務(wù)的組件的集合稱為子系統(tǒng)。
ONOS定義了不同的子系統(tǒng):
設(shè)備子系統(tǒng)-管理基礎(chǔ)設(shè)施設(shè)備的庫(kù)存。
鏈路子系統(tǒng)-管理基礎(chǔ)設(shè)施鏈接的庫(kù)存。
主機(jī)子系統(tǒng)-管理終端站主機(jī)及其在網(wǎng)絡(luò)上的位置的庫(kù)存。
拓?fù)渥酉到y(tǒng)-管理網(wǎng)絡(luò)圖視圖的時(shí)間順序快照。
path子系統(tǒng)計(jì)算/發(fā)現(xiàn)基礎(chǔ)設(shè)施設(shè)備之間或端站的主機(jī)采用最新的拓?fù)鋱D快照之間的路徑。
FlowRule子系統(tǒng)-管理安裝在基礎(chǔ)設(shè)備的match/action流表項(xiàng)和統(tǒng)計(jì)流量。
Packet子系統(tǒng)-允許應(yīng)用程序監(jiān)聽(tīng)從網(wǎng)絡(luò)設(shè)備接收到的數(shù)據(jù)包,并通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)設(shè)備向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包。
Provider
該堆棧的最底層是Provider組件,Provider接口通過(guò)協(xié)議特定的庫(kù)和底層設(shè)備打交道,并通過(guò)Provider
Service接口與Core交互。
協(xié)議感知Providers負(fù)責(zé)使用各種控制和配置協(xié)議與網(wǎng)絡(luò)環(huán)境交互,并向Core提供服務(wù)特定的感知數(shù)據(jù)。Provider也可以從其他子系統(tǒng)收集數(shù)據(jù),將它們轉(zhuǎn)換成特定于服務(wù)的數(shù)據(jù)。
Provider可能還需要從Core接受控制命令應(yīng)用并通過(guò)適當(dāng)?shù)木W(wǎng)絡(luò)協(xié)議具體手段應(yīng)用到網(wǎng)絡(luò)中。這些都是通過(guò)Provider接口將這些內(nèi)容送入Provider組件。
Provider ID
一個(gè)Provider與特定的Providerid相關(guān)。providerid的主要目的是提供一個(gè)Provider族的外部身份,這可以使設(shè)備和其他實(shí)體模型保持與負(fù)責(zé)他們的存在Provider相關(guān)聯(lián),甚至在Provider加載/卸載操作之后。
Providerid攜帶一個(gè)URI方案名稱允許松散的配對(duì)與從另一個(gè)供應(yīng)商的家庭提供設(shè)備,而這沒(méi)有訪問(wèn)提供商本身是可能的。
Multiple Providers
子系統(tǒng)可以與多個(gè)Provider關(guān)聯(lián)。在這種情況下,Provider被指定為主要的或附屬的。主Provider擁有與服務(wù)相關(guān)聯(lián)的實(shí)體,輔助提供者將其信息作為覆蓋提供信息。如果任何覆蓋導(dǎo)致與底層信息沖突,則此方法給予主Provider優(yōu)先權(quán)。設(shè)備子系統(tǒng)是支持多個(gè)提供者的此類服務(wù)之一。
Manager
Manager是駐留在核心中的組件,其接收來(lái)自Provider的信息,并將其提供給應(yīng)用程序和其他服務(wù)。它暴露了幾個(gè)接口:
Northbound Service interface 應(yīng)用程序或其他核心組件可以通過(guò)該接口了解特定方面的網(wǎng)絡(luò)狀態(tài)。
AdminService interface以管理員命令應(yīng)用到網(wǎng)絡(luò)或系統(tǒng)的狀態(tài)。
Southbound ProviderRegistry interface
通過(guò)該接口Provider可以注冊(cè)到Manager中,通過(guò)它可以和Manager進(jìn)行交互。
Southbound ProviderService interface 提供給已經(jīng)注冊(cè)的Provider
Manager服務(wù)接口的消費(fèi)者可以同步的查詢Service的信息,也可以異步的作為一個(gè)事件偵聽(tīng)器(例如,通過(guò)使用listenerservice接口注冊(cè)要監(jiān)聽(tīng)的事件并實(shí)現(xiàn)相關(guān)的EventListener
interface)。
Store
Store的具體實(shí)現(xiàn)和Core里面的Manager有很強(qiáng)的相關(guān)性,Store需要索引,持久化以及同步Manager收到的信息,這包括分布式ONOS多實(shí)例間的一致性和魯棒性的保障,
Application
應(yīng)用通過(guò)AdminService和Service接口來(lái)消費(fèi)和操作Manager聚合的信息,應(yīng)用程序具有廣泛的功能,這里面就包括在Web瀏覽器中顯示網(wǎng)絡(luò)拓?fù)?#xff0c;為網(wǎng)絡(luò)流量設(shè)置路徑
Application ID
每個(gè)應(yīng)用都有一個(gè)唯一的Application ID,這個(gè)標(biāo)識(shí)用于追蹤應(yīng)用相關(guān)的上下文(任務(wù)和目標(biāo)
比如Intent和FlowRule),為了獲得一個(gè)有效的ID,應(yīng)用需要注冊(cè)到CoreService,注冊(cè)他們的名字來(lái)進(jìn)行反向域名解析,比如:org.onlab.onos.fwd
Events and Descriptions
兩個(gè)在ONOS中分布的基本信息單元是事件和描述。與服務(wù)一樣,事件和描述與特定的網(wǎng)絡(luò)元素和概念相關(guān)聯(lián)。兩者都是一旦創(chuàng)建就不會(huì)改變的。
Descriptions
Descriptions用于在南向的API上傳遞關(guān)于元素的信息。例如,一個(gè)HostDescription包含一個(gè)主機(jī)的MAC和IP地址,在網(wǎng)絡(luò)中的位置信息(VLAN
ID和設(shè)備/端口的連接點(diǎn))。Descriptions通常是由一個(gè)或多個(gè)模型對(duì)象組成。
Events
Manager使用Event通知其Listener關(guān)于網(wǎng)絡(luò)中的變化,并通過(guò)Store通知相關(guān)的在分布式設(shè)置中的Peer。一個(gè)事件由一個(gè)事件類型和一個(gè)由對(duì)象模型構(gòu)成的主題組成。例如,一個(gè)device
event可通知devicelisteners,Device(主題)已經(jīng)被發(fā)現(xiàn)(device_added),失去了(device_removed),或某一方面改變了(device_updated)。
Event dispatch
事件是由Store基于Manager的輸入產(chǎn)生的。一旦產(chǎn)生,事件就會(huì)通過(guò)storedelegate接口被分發(fā)到感興趣的聽(tīng)眾,最終調(diào)用event
deliveryservice。從本質(zhì)上講,Store Delegate把事件從Store中取出,event
deliveryservice確保事件僅為感興趣的聽(tīng)眾接收。由于它們之間相互作用的方式,這兩個(gè)組件駐留在Manager中并由那里的Manager提供storedelegate來(lái)做具體實(shí)現(xiàn)。
Event Listeners
Event Listener是實(shí)現(xiàn)EventListener接口的任何組件。
EventListener的子接口被按照監(jiān)聽(tīng)事件的類型進(jìn)一步的分類。典型的Event
listener實(shí)現(xiàn)模式是將事件偵聽(tīng)器作為Manager或應(yīng)用程序的內(nèi)部類,從中從接收到的事件調(diào)用相應(yīng)的服務(wù)。這限制了事件處理邏輯不需要對(duì)子系統(tǒng)外部進(jìn)行暴露。
Network representations
模型對(duì)象是ONOS
協(xié)議無(wú)關(guān)方式來(lái)表示各種網(wǎng)絡(luò)元素和屬性。事件將這些表示作為它們的主體。這些表示是由Core從Description中找到的信息來(lái)構(gòu)建的。
Vecloud是一家面向企業(yè)提供云交換網(wǎng)絡(luò)服務(wù)為核心業(yè)務(wù)的技術(shù)創(chuàng)新企業(yè),在全球的數(shù)據(jù)中心節(jié)點(diǎn)30個(gè),POP節(jié)點(diǎn)超過(guò)200個(gè),服務(wù)的大客戶超過(guò)300個(gè),涉及金融、互聯(lián)網(wǎng)、游戲、AI、教育、制造業(yè)、跨國(guó)企業(yè)等行業(yè)領(lǐng)域。http://www.vecloud.com/products/cloudconnect.html
總結(jié)
以上是生活随笔為你收集整理的SDN控制器ONOS架构—Vecloud的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基金份额和金额不一样 投资时要分清楚
- 下一篇: SDN控制器OpenDaylight简介