opendaylight框架分析說(shuō)明_第1頁(yè)
opendaylight框架分析說(shuō)明_第2頁(yè)
opendaylight框架分析說(shuō)明_第3頁(yè)
opendaylight框架分析說(shuō)明_第4頁(yè)
opendaylight框架分析說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

opendaylight分析opendaylight總體架構(gòu)分析模塊,osgiBundle與floodlight之間的簡(jiǎn)單比照SAL層之OFPacket的處理流程Md-SAL-模型化驅(qū)動(dòng)簡(jiǎn)單分析Clustering-集群OSGi:由于采用OSGi體系結(jié)構(gòu),其技術(shù)提供一種面向效勞的架構(gòu),將應(yīng)用視為對(duì)等模塊的相互協(xié)作,SAL:整個(gè)架構(gòu)引入了業(yè)務(wù)抽象層,將效勞抽象化,使得上層〔北向〕和下層〔南向〕之間的調(diào)用相互隔離.MD(ModelDrive):使用Yang工具,使用業(yè)務(wù)模型驅(qū)動(dòng)來(lái)設(shè)計(jì)接口、實(shí)現(xiàn)業(yè)務(wù)功能,根據(jù)yang文件,Yang工具直接生成業(yè)務(wù)管理的“骨架〞,主要用于南北接口數(shù)據(jù)的適配,使開(kāi)發(fā)者真正專(zhuān)注于具體業(yè)務(wù)。集群〔Infinispan〕:用開(kāi)源的數(shù)據(jù)網(wǎng)格平臺(tái)實(shí)現(xiàn)Controller的集群。南向北向:南向使用Netty來(lái)管理底層的并發(fā)IO,北向使用REST接口。核心技術(shù)與Floodlilght的簡(jiǎn)單區(qū)別采用OSGI框架,各模塊間功能隔離開(kāi)來(lái),有利于擴(kuò)展性、而且可以動(dòng)態(tài)部署。OSGI的依賴(lài)關(guān)系管理,有多種實(shí)現(xiàn)方式,可以通過(guò)DependencyManager對(duì)象來(lái)注冊(cè)效勞,并通過(guò)反射注明依賴(lài)的效勞。而Floodlight只是單純的java包之間的引用,擴(kuò)展性不好,支持的南向接口少,目前只有OF1.0;但是易于上手。是一個(gè)Openflow控制器.OpenDayLight中的bundles核心基類(lèi):ComponentactivatorabstractBase實(shí)現(xiàn)了Osgi提供的BundleActivator,以自己定義的容器接口iContaineraware,從中發(fā)現(xiàn)各個(gè)bundle之間、Componet之間、全局和容器Container之間的依賴(lài)和調(diào)用關(guān)系。bundle的抽象基類(lèi),管理全局和容器相關(guān)的效勞,當(dāng)然bundle本身就是一個(gè)大效勞。Container是OpenDaylight中的一個(gè)網(wǎng)絡(luò)域,有很多鏈接信息、整個(gè)域網(wǎng)絡(luò)信息等,由ContainerManager管理容器。而OSGI管理各個(gè)bundle;每個(gè)具體的接口實(shí)現(xiàn)和容器的Container為關(guān)鍵字通過(guò)DependencyManager(依賴(lài)管理)創(chuàng)立一個(gè)Componet,每個(gè)Component就是一個(gè)效勞,里面說(shuō)明了導(dǎo)出的接口和依賴(lài)的接口。DM以Component的形式來(lái)管理依賴(lài)關(guān)系。主要方法如下:

Start(context)啟動(dòng)方法,會(huì)遍歷其所提供的實(shí)現(xiàn),依次配置依賴(lài)關(guān)系。getGlobalImplementations()獲取全局的實(shí)現(xiàn)類(lèi),其導(dǎo)出接口的實(shí)現(xiàn)類(lèi)。getImplementations()獲取容器相關(guān)的實(shí)現(xiàn)。Configureglobalinstance(c,Imps[i]),c是前面提到的componentconfigureInstance〔〕在一個(gè)容器中配置實(shí)現(xiàn)的依賴(lài)關(guān)系。containerCreate(StringcontainerName)配置Componet,里面說(shuō)明了導(dǎo)出的接口和依賴(lài)的接口,最后放到dm及緩存中。會(huì)在CM的bundle啟動(dòng)中調(diào)用。CreateServiceDependency()生成效勞依賴(lài)對(duì)象,需要被子類(lèi)調(diào)用,在配置componet的依賴(lài)關(guān)系的時(shí)候需要用到。7SAL效勞抽象層主要作用將效勞抽象出來(lái),不管控制器和網(wǎng)絡(luò)設(shè)備之間使用何種協(xié)議,提供協(xié)約國(guó)的一效勞,是odl的核心設(shè)計(jì),支持多種南向協(xié)議,為各模塊和應(yīng)用提供一致的效勞,這些效勞的實(shí)現(xiàn),是由插件公開(kāi)(基于已存在的組件〔如OF〕和網(wǎng)絡(luò)設(shè)備的功能〕)的所提供的接口,但是與SAL是松耦合的。具體將請(qǐng)求,映射到相應(yīng)的插件,完成效勞。所提供效勞DataPacketServices為數(shù)據(jù)報(bào)文的處理,提供效勞TopologyService為應(yīng)用提供節(jié)點(diǎn)和鏈路的更新信息,Inventoryservice為如節(jié)點(diǎn)或者節(jié)點(diǎn)連接提供API查詢(xún)FlowProgrammingService流編程效勞Resourceservice資源效勞,對(duì)于一個(gè)Packet-in的處理過(guò)程

OF中的核心,Controller南向設(shè)備通信的控制臺(tái),與Flooodlight中的Controller類(lèi)功能類(lèi)似,相對(duì)簡(jiǎn)化,Of報(bào)文首先到達(dá)Controller,會(huì)將此報(bào)文發(fā)送對(duì)已經(jīng)注冊(cè)過(guò)監(jiān)聽(tīng)of報(bào)文的類(lèi)中進(jìn)行處理,其中DatapacketMuxDemux只處理packet-in報(bào)文,其會(huì)進(jìn)一步處理,交由處理DiscoveryService〔處理的是LLDP〕,其后,交給實(shí)現(xiàn)了IpluginoutdatapacketserviceSAL層處理,最后交給實(shí)現(xiàn)了Ilistendatapacket監(jiān)聽(tīng)報(bào)文的應(yīng)用。這與Floodlight處理報(bào)文的過(guò)程同。DataPacketservices舉例來(lái)說(shuō)報(bào)文的簡(jiǎn)單處理過(guò)程首先OF組件收到APR,需要交到ARPHandler處理,將首先根據(jù)類(lèi)型,調(diào)用IPOPS到SAL,交由SAL層Sal中的datapacketservice實(shí)現(xiàn)了IPOPS其會(huì)通過(guò)dispacthPacket()方法,其會(huì)調(diào)用

實(shí)現(xiàn)IListendatapacket的應(yīng)用,最后會(huì)將其送到ARPAPP處理。TopologyService如前面所講,報(bào)文經(jīng)Controller處理后,,DiscoveryService收到報(bào)文,因?yàn)槠鋵?shí)現(xiàn)了

Idatapacketlisten

,所以其能在DataPacketmuxdemux中處理of報(bào)文的過(guò)程中,處理這個(gè)鏈路processDiscoveryPacket〔〕報(bào)文。交給實(shí)現(xiàn)了idiscoverylistener

,的

Topologyserviceshim

Implements

Idiscoverylistener,在這個(gè)類(lèi)中,有個(gè)進(jìn)程,一直在運(yùn)行著,一但有更新,就會(huì),將其notifyedge(edge

Edge,UpdatetypeType,Set<property>Props)而后,其交給監(jiān)聽(tīng)了

Itopologyserviceshimlistener,將其交給topologyservices

,處理,交給SAL層的Topology類(lèi),這個(gè)會(huì)調(diào)用IListenTopoUpdates遍歷監(jiān)聽(tīng)數(shù)組。s.edgeUpdate(topoedgeupdateList);MD-SALMd-SAL分析Md-sal的主要功能是促進(jìn)提供者和使用者之間的管道。它可以提供提供者和使用者之間的管道在不同的容器中。它將連接到一個(gè)消息總線和共享數(shù)據(jù)存儲(chǔ)的集群opendaylight容器。提供者或消費(fèi)者在md-sal中注冊(cè)。從而,一個(gè)消費(fèi)者可以找到所需的供給商。提供者可以生成通知,消費(fèi)者可以接收通知,并從提供者獲取數(shù)據(jù)。插件sal角色(消費(fèi)者或生產(chǎn)者)定義的sal中的數(shù)據(jù)是被移走或存儲(chǔ)數(shù)據(jù)。提供者可以將數(shù)據(jù)存入sal的,一個(gè)消費(fèi)者可以從sal讀取數(shù)據(jù)。Md-sal提供請(qǐng)求路由和根底設(shè)施效勞,以支持效勞,但它不提供效勞本身;由插件提供效勞。Yang使得Componet之間、plugin、北向等api,使得這種接口和ad-salREST接口相比更抽象,符合模型驅(qū)動(dòng)〔MD〕的思想。MD-SAL架構(gòu)Broker功能:consumer&provider注冊(cè)PRCs路由Notificationhub系統(tǒng)狀態(tài)訪問(wèn)和修改TheConsumer&ProviderBindingisgeneratedfromYANGschema.通過(guò)BindingIndependentConnector類(lèi)16Md-sal-Bundles之serviceTrackerAbstarctBrokerAwareActivatorImplBundleActivator為基Bunddle;每個(gè)Md-SAL的Consumer,Provider分別繼承AbstarctBrokerAwareConsumer;AbstarctBrokerAwareProvider;在這個(gè)類(lèi)中有個(gè)BindAwareBroker,這個(gè)是MD-SAL層的核心Start方法中startImpl(context);然后新建一個(gè)ServiceTracker〔BindAwareBroker〕.open后,后會(huì)追蹤效勞;當(dāng)有效勞注冊(cè)時(shí),OSGI會(huì)觸發(fā)addingservice();在本實(shí)現(xiàn)中,即BindAwareBroker這個(gè)在OSGI中實(shí)現(xiàn)后,會(huì)通過(guò)context.getService(getService(servicereference(bindingawarebroker))得到BindAwareBroker的實(shí)現(xiàn),得到后會(huì)新建一個(gè)線程;onBrokerAvaiable(broker,context);AbstarctBrokerAwareConsumer

在這個(gè)方法中,完成Consumer的注冊(cè),會(huì)broker.RegisterConsumer(this,cotext);BingAwareBroker提供三種InfrastructureService,YangModuleService

GetPpcService(class);NitificationService

NotificationserviceDataStoreAccessAndModification

Databrokerservice在其實(shí)現(xiàn)中,會(huì)初始化這三種效勞,并注入其實(shí)現(xiàn),然后在為OSGI中注冊(cè);然后在前面通過(guò)addingservice()中很到的getService(servicereference(bindingawarebroker));中得到其它注冊(cè)來(lái)的borker;得到后,會(huì)將Consumer注冊(cè)到這個(gè)broker中,得到ConsumerContext,后調(diào)用各自Consumer的onSessionInitialized(ConsumerContext);其中會(huì)通過(guò)getPrcService與getSALservice得到這三類(lèi)效勞;BindingIndependentConnector這個(gè)類(lèi),主要負(fù)責(zé)與BA與BI之間的交互過(guò)程;完成BA到BI,與BI到BA的過(guò)程;在其成員變量中,有MapingService;及BA與BI的效勞,LearningSwitchLearningswitch

繼承了

Abstractbindingawareconsumer在Onsessioninitialized(){}Learningswitchmanagermultiimpl新建一個(gè)實(shí)例,并GetReferencesToTheFollowingServicesRegisteredWithMD-SAL:1)Databrokerservice

數(shù)據(jù)存儲(chǔ)效勞,配置流,獲取交換機(jī)狀態(tài)

其實(shí)現(xiàn)類(lèi)為

Databrokerimpl

Begintransaction中返回的transaction是Datatransactionimpl;2)Notificationservice

Packetin通知效勞3)Packetprocessingservice發(fā)送報(bào)文,通過(guò)三述效勞,得到與Md-SAL層通知;在這個(gè)Consumer中,處理交換機(jī),映射表,及自學(xué)習(xí)的過(guò)程,下發(fā)相應(yīng)流FRMFrm

ExtendsAbstractBindAwareProvider1〕Provider.Dataservice=Providercontext.getSalservice(dataproviderserivce);Salflowservice=providercontext.getRpcService(dataProviderSerivce);通過(guò)

ProviderContext獲得兩種效勞,一種sal層效勞,和rpc效勞,2〕Provider.start〔),中CommitHandler=NewFlowCommitHandler(salFlowService);Path新建一個(gè)dataTree

ModeledByYANG;DataService.RegisterCommitHandler(path,flowcommithandler)3)當(dāng)有Databrokerservice.Commit時(shí),調(diào)用Requestcommit(datastoreindentifier);return

Flowtransaction;invokeFinish();datacommittransaction是datacommithandler的內(nèi)部類(lèi);finishCommit;OpenflowpluginActivatorExtendsComponentActivatorAbstractBaseImp為openFlowPluginProviderDependency依賴(lài)于bindingAwareBroker,switchConnectionProvider;初始化的過(guò)程中,會(huì)調(diào)用set方法,在兩者set之后,會(huì)調(diào)用Broker.RegisterProvider(this,context);返回providerContext,隨后調(diào)用onSessioninitiated(pc);在這個(gè)類(lèi)中g(shù)etpublishService和dataService;兩個(gè)SAL效勞;然后通過(guò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論