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