標籤:
系統組件
系統分層
App/core/providers
業務和子系統
一個業務service是有多個組件構成的功能單元,基於各層軟體棧提供一個垂直的分區slice,將構成業務service的組件集合稱為子系統。業務和子系統可互換使用。
onos定義的業務有:
.裝置子系統-管理裝置-交換器-資產
.鏈路子系統-管理鏈路資產
.主機子系統-管理主機及在網路中的位置
.拓撲子系統-管理網路視圖
.路徑path---基於最新的拓撲,在交換器之間,或者主機之間計算和發現路徑
.流規則子系統-管理應用到交換器上的流規則(匹配和動作match/action),提供流資料(flow metrics)
.報文收發子系統-允許app監聽來自交換器的資料報文,以及通過一個多個交換器向網路發送資料報文
每一個子系統的組件都在某個層級中(app/core/providers),可用實現了的一個或者多個java介面標識。
描述了子系統組件的關係,上下兩個虛線是由南北向介面定義的層級邊界。
Provider
三層中最低一層,向網路通過協議特定的協議棧提供介面,向核心通過ProviderService提供介面。
協議感知的provider通過各種網路控制和配置協議和網路互動,向核心提供業務相關的資料,provider也從其他模組收集資料,轉換為(本)業務相關資料。
某些provider從核心接收控制指令,並通過協議特定的方式應用到網路,這些通過provider介面傳遞給provider。
Provider ID
Provider會關聯一個ProviderID,用於在同一類Provier中提供外部標識,並允許在provider卸載後交換器或者其他模型實體依然能保留和provider的關聯。
ProviderID攜帶URI,可允許交換器和Provider進行配對,而無需訪問provider對象本身。
Multiple Provider
子系統可個關聯多個provider,provider有primary和ancillary兩種角色,primary擁有關聯到業務的所有實體,ancillary類型的privider則以overlay方式提供資訊。此種方式,為主要provider提供了某種優先權,處理underlay的衝突資訊
Manager
核心模組,從provider接收資訊,提供給應用或者其他業務service。
有如下interface
.北向介面,應用和其他核心模組可擷取特定網路狀態
.AdminService介面,接受管理命令,應用到網路或者系統中
.南向ProviderRegistry介面,Provider通過介面向Manager註冊
.南向ProviderService介面,登入的Provider向Manager接收/發送資訊
Manager 業務介面的consumer可通過同步方式(查詢業務)和非同步方式(事件監聽,實現EventListener介面)
Store
在核心,和Manager中,store用於儲存,索引,同步manager收到的資訊,通過和其他onos執行個體中的store直接通訊,保證跨多個ONOS執行個體的一致性和健壯性,
Application
應用經由AdminService介面和業務介面操作Manager彙總的資料,應用的範圍很廣
ApplicationID
每個應用都分配一個唯一的APPID,用於 ONOS跟蹤應用的上下文(諸如intent,flow rules這樣的任務對象),應用使用CoreService介面註冊,提供反轉的DNS,名字,從而擷取AppID。
注,並非所有子系統都如上操作,也並非所有組件都嚴格按照如上實現功能,比如TopologyProvider相對系統核心以協議無關方式呈現裝置和鏈路,從不和裝置直接互動,由CoreManager實現的CoreService,僅僅是業務介面。
Events and Descriptions
ONOS核心中關於事件分發的兩個基本單元是event和description,兩者可以經由業務介面,和特定網路元素和概念關聯,一旦建立,兩者都是不變的(immutable)
Description用於通過南向介面傳遞資訊,比如HostDescription包含主機的mac,ip地址,在網路中的位置(VLANID,交換器和連接埠),Description通常有model/objects,以及各種網路組件的onos表達,組成。
Event,
Manager使用event來通知監聽者網路狀態的改變,Store用來通知分布式對端。Event由類型type和表示模型對象的主題subject組成,比如DeviceEvent可用來通知DeviceListener某個裝置device(subject)被檢測(DEVICE_ADDED),刪除(DEVICE_REMOVED),屬性變化(DEVICE_UPDATED)
Event分發
由store產生的event,輸入來自Manager。一旦產生,將通過StoreDelegate介面分發給感興趣的監聽者,StoreDelegate最終會調用EventDeliveryService介面,StoreDelegate將event從store中移出,EventDeliveryService保證event會到達監聽者,由manager實現StoreDelegate的實作類別
Event監聽
任何實現了EventListen介面的組件都是事件監聽器,事件監聽器由其所監聽的event的子類的類型確定,事件監聽器的典型實現是作為Manager或者應用的inner類,根據收到的event調用合適的業務。這個限制了從外部處理子系統到子系統的Manager,或者子系統到應用的event。、
描述了description和event以及相關的組件。
ONOS架構-系統組件