版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
opendaylight分析opendaylight總體架構(gòu)分析模塊,osgiBundle與floodlight之間的簡單比照SAL層之OFPacket的處理流程Md-SAL-模型化驅(qū)動簡單分析Clustering-集群OSGi:由于采用OSGi體系結(jié)構(gòu),其技術(shù)提供一種面向效勞的架構(gòu),將應(yīng)用視為對等模塊的相互協(xié)作,SAL:整個架構(gòu)引入了業(yè)務(wù)抽象層,將效勞抽象化,使得上層〔北向〕和下層〔南向〕之間的調(diào)用相互隔離.MD(ModelDrive):使用Yang工具,使用業(yè)務(wù)模型驅(qū)動來設(shè)計(jì)接口、實(shí)現(xiàn)業(yè)務(wù)功能,根據(jù)yang文件,Yang工具直接生成業(yè)務(wù)管理的“骨架〞,主要用于南北接口數(shù)據(jù)的適配,使開發(fā)者真正專注于具體業(yè)務(wù)。集群〔Infinispan〕:用開源的數(shù)據(jù)網(wǎng)格平臺實(shí)現(xiàn)Controller的集群。南向北向:南向使用Netty來管理底層的并發(fā)IO,北向使用REST接口。核心技術(shù)與Floodlilght的簡單區(qū)別采用OSGI框架,各模塊間功能隔離開來,有利于擴(kuò)展性、而且可以動態(tài)部署。OSGI的依賴關(guān)系管理,有多種實(shí)現(xiàn)方式,可以通過DependencyManager對象來注冊效勞,并通過反射注明依賴的效勞。而Floodlight只是單純的java包之間的引用,擴(kuò)展性不好,支持的南向接口少,目前只有OF1.0;但是易于上手。是一個Openflow控制器.OpenDayLight中的bundles核心基類:ComponentactivatorabstractBase實(shí)現(xiàn)了Osgi提供的BundleActivator,以自己定義的容器接口iContaineraware,從中發(fā)現(xiàn)各個bundle之間、Componet之間、全局和容器Container之間的依賴和調(diào)用關(guān)系。bundle的抽象基類,管理全局和容器相關(guān)的效勞,當(dāng)然bundle本身就是一個大效勞。Container是OpenDaylight中的一個網(wǎng)絡(luò)域,有很多鏈接信息、整個域網(wǎng)絡(luò)信息等,由ContainerManager管理容器。而OSGI管理各個bundle;每個具體的接口實(shí)現(xiàn)和容器的Container為關(guān)鍵字通過DependencyManager(依賴管理)創(chuàng)立一個Componet,每個Component就是一個效勞,里面說明了導(dǎo)出的接口和依賴的接口。DM以Component的形式來管理依賴關(guān)系。主要方法如下:
Start(context)啟動方法,會遍歷其所提供的實(shí)現(xiàn),依次配置依賴關(guān)系。getGlobalImplementations()獲取全局的實(shí)現(xiàn)類,其導(dǎo)出接口的實(shí)現(xiàn)類。getImplementations()獲取容器相關(guān)的實(shí)現(xiàn)。Configureglobalinstance(c,Imps[i]),c是前面提到的componentconfigureInstance〔〕在一個容器中配置實(shí)現(xiàn)的依賴關(guān)系。containerCreate(StringcontainerName)配置Componet,里面說明了導(dǎo)出的接口和依賴的接口,最后放到dm及緩存中。會在CM的bundle啟動中調(diào)用。CreateServiceDependency()生成效勞依賴對象,需要被子類調(diào)用,在配置componet的依賴關(guān)系的時候需要用到。7SAL效勞抽象層主要作用將效勞抽象出來,不管控制器和網(wǎng)絡(luò)設(shè)備之間使用何種協(xié)議,提供協(xié)約國的一效勞,是odl的核心設(shè)計(jì),支持多種南向協(xié)議,為各模塊和應(yīng)用提供一致的效勞,這些效勞的實(shí)現(xiàn),是由插件公開(基于已存在的組件〔如OF〕和網(wǎng)絡(luò)設(shè)備的功能〕)的所提供的接口,但是與SAL是松耦合的。具體將請求,映射到相應(yīng)的插件,完成效勞。所提供效勞DataPacketServices為數(shù)據(jù)報文的處理,提供效勞TopologyService為應(yīng)用提供節(jié)點(diǎn)和鏈路的更新信息,Inventoryservice為如節(jié)點(diǎn)或者節(jié)點(diǎn)連接提供API查詢FlowProgrammingService流編程效勞Resourceservice資源效勞,對于一個Packet-in的處理過程
OF中的核心,Controller南向設(shè)備通信的控制臺,與Flooodlight中的Controller類功能類似,相對簡化,Of報文首先到達(dá)Controller,會將此報文發(fā)送對已經(jīng)注冊過監(jiān)聽of報文的類中進(jìn)行處理,其中DatapacketMuxDemux只處理packet-in報文,其會進(jìn)一步處理,交由處理DiscoveryService〔處理的是LLDP〕,其后,交給實(shí)現(xiàn)了IpluginoutdatapacketserviceSAL層處理,最后交給實(shí)現(xiàn)了Ilistendatapacket監(jiān)聽報文的應(yīng)用。這與Floodlight處理報文的過程同。DataPacketservices舉例來說報文的簡單處理過程首先OF組件收到APR,需要交到ARPHandler處理,將首先根據(jù)類型,調(diào)用IPOPS到SAL,交由SAL層Sal中的datapacketservice實(shí)現(xiàn)了IPOPS其會通過dispacthPacket()方法,其會調(diào)用
實(shí)現(xiàn)IListendatapacket的應(yīng)用,最后會將其送到ARPAPP處理。TopologyService如前面所講,報文經(jīng)Controller處理后,,DiscoveryService收到報文,因?yàn)槠鋵?shí)現(xiàn)了
Idatapacketlisten
,所以其能在DataPacketmuxdemux中處理of報文的過程中,處理這個鏈路processDiscoveryPacket〔〕報文。交給實(shí)現(xiàn)了idiscoverylistener
,的
Topologyserviceshim
Implements
Idiscoverylistener,在這個類中,有個進(jìn)程,一直在運(yùn)行著,一但有更新,就會,將其notifyedge(edge
Edge,UpdatetypeType,Set<property>Props)而后,其交給監(jiān)聽了
Itopologyserviceshimlistener,將其交給topologyservices
,處理,交給SAL層的Topology類,這個會調(diào)用IListenTopoUpdates遍歷監(jiān)聽數(shù)組。s.edgeUpdate(topoedgeupdateList);MD-SALMd-SAL分析Md-sal的主要功能是促進(jìn)提供者和使用者之間的管道。它可以提供提供者和使用者之間的管道在不同的容器中。它將連接到一個消息總線和共享數(shù)據(jù)存儲的集群opendaylight容器。提供者或消費(fèi)者在md-sal中注冊。從而,一個消費(fèi)者可以找到所需的供給商。提供者可以生成通知,消費(fèi)者可以接收通知,并從提供者獲取數(shù)據(jù)。插件sal角色(消費(fèi)者或生產(chǎn)者)定義的sal中的數(shù)據(jù)是被移走或存儲數(shù)據(jù)。提供者可以將數(shù)據(jù)存入sal的,一個消費(fèi)者可以從sal讀取數(shù)據(jù)。Md-sal提供請求路由和根底設(shè)施效勞,以支持效勞,但它不提供效勞本身;由插件提供效勞。Yang使得Componet之間、plugin、北向等api,使得這種接口和ad-salREST接口相比更抽象,符合模型驅(qū)動〔MD〕的思想。MD-SAL架構(gòu)Broker功能:consumer&provider注冊PRCs路由Notificationhub系統(tǒng)狀態(tài)訪問和修改TheConsumer&ProviderBindingisgeneratedfromYANGschema.通過BindingIndependentConnector類16Md-sal-Bundles之serviceTrackerAbstarctBrokerAwareActivatorImplBundleActivator為基Bunddle;每個Md-SAL的Consumer,Provider分別繼承AbstarctBrokerAwareConsumer;AbstarctBrokerAwareProvider;在這個類中有個BindAwareBroker,這個是MD-SAL層的核心Start方法中startImpl(context);然后新建一個ServiceTracker〔BindAwareBroker〕.open后,后會追蹤效勞;當(dāng)有效勞注冊時,OSGI會觸發(fā)addingservice();在本實(shí)現(xiàn)中,即BindAwareBroker這個在OSGI中實(shí)現(xiàn)后,會通過context.getService(getService(servicereference(bindingawarebroker))得到BindAwareBroker的實(shí)現(xiàn),得到后會新建一個線程;onBrokerAvaiable(broker,context);AbstarctBrokerAwareConsumer
在這個方法中,完成Consumer的注冊,會broker.RegisterConsumer(this,cotext);BingAwareBroker提供三種InfrastructureService,YangModuleService
GetPpcService(class);NitificationService
NotificationserviceDataStoreAccessAndModification
Databrokerservice在其實(shí)現(xiàn)中,會初始化這三種效勞,并注入其實(shí)現(xiàn),然后在為OSGI中注冊;然后在前面通過addingservice()中很到的getService(servicereference(bindingawarebroker));中得到其它注冊來的borker;得到后,會將Consumer注冊到這個broker中,得到ConsumerContext,后調(diào)用各自Consumer的onSessionInitialized(ConsumerContext);其中會通過getPrcService與getSALservice得到這三類效勞;BindingIndependentConnector這個類,主要負(fù)責(zé)與BA與BI之間的交互過程;完成BA到BI,與BI到BA的過程;在其成員變量中,有MapingService;及BA與BI的效勞,LearningSwitchLearningswitch
繼承了
Abstractbindingawareconsumer在Onsessioninitialized(){}Learningswitchmanagermultiimpl新建一個實(shí)例,并GetReferencesToTheFollowingServicesRegisteredWithMD-SAL:1)Databrokerservice
數(shù)據(jù)存儲效勞,配置流,獲取交換機(jī)狀態(tài)
其實(shí)現(xiàn)類為
Databrokerimpl
Begintransaction中返回的transaction是Datatransactionimpl;2)Notificationservice
Packetin通知效勞3)Packetprocessingservice發(fā)送報文,通過三述效勞,得到與Md-SAL層通知;在這個Consumer中,處理交換機(jī),映射表,及自學(xué)習(xí)的過程,下發(fā)相應(yīng)流FRMFrm
ExtendsAbstractBindAwareProvider1〕Provider.Dataservice=Providercontext.getSalservice(dataproviderserivce);Salflowservice=providercontext.getRpcService(dataProviderSerivce);通過
ProviderContext獲得兩種效勞,一種sal層效勞,和rpc效勞,2〕Provider.start〔),中CommitHandler=NewFlowCommitHandler(salFlowService);Path新建一個dataTree
ModeledByYANG;DataService.RegisterCommitHandler(path,flowcommithandler)3)當(dāng)有Databrokerservice.Commit時,調(diào)用Requestcommit(datastoreindentifier);return
Flowtransaction;invokeFinish();datacommittransaction是datacommithandler的內(nèi)部類;finishCommit;OpenflowpluginActivatorExtendsComponentActivatorAbstractBaseImp為openFlowPluginProviderDependency依賴于bindingAwareBroker,switchConnectionProvider;初始化的過程中,會調(diào)用set方法,在兩者set之后,會調(diào)用Broker.RegisterProvider(this,context);返回providerContext,隨后調(diào)用onSessioninitiated(pc);在這個類中g(shù)etpublishService和dataService;兩個SAL效勞;然后通過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版承包工地食堂餐廚垃圾處理合同模板3篇
- 2024蔬菜加工產(chǎn)品銷售合作協(xié)議3篇
- 2024年股權(quán)轉(zhuǎn)讓合同標(biāo)的及屬性詳細(xì)描述
- 2024年版物業(yè)托管服務(wù)協(xié)議版B版
- 二零二五版離婚協(xié)議書起草與審核合同2篇
- 2024版房屋贈與合同協(xié)議書大全
- 天津中德應(yīng)用技術(shù)大學(xué)《教育技術(shù)與傳播》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版家政服務(wù)+家庭健康促進(jìn)合同3篇
- 太原幼兒師范高等??茖W(xué)?!段麽t(yī)外科學(xué)醫(yī)學(xué)免疫學(xué)與病原生物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年特殊用途變壓器安裝與性能測試合同2篇
- 《浸沒式液冷冷卻液選型要求》
- 迪士尼樂園總體規(guī)劃
- 2024年江蘇省蘇州市中考數(shù)學(xué)試卷含答案
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項(xiàng)考試題庫
- 介紹蝴蝶蘭課件
- 大學(xué)計(jì)算機(jī)基礎(chǔ)(第2版) 課件 第1章 計(jì)算機(jī)概述
- 數(shù)字化年終述職報告
- 2024年職工普法教育宣講培訓(xùn)課件
- 安保服務(wù)評分標(biāo)準(zhǔn)
- T-SDLPA 0001-2024 研究型病房建設(shè)和配置標(biāo)準(zhǔn)
- (人教PEP2024版)英語一年級上冊Unit 1 教學(xué)課件(新教材)
評論
0/150
提交評論