opendaylight框架分析說明_第1頁
opendaylight框架分析說明_第2頁
opendaylight框架分析說明_第3頁
opendaylight框架分析說明_第4頁
opendaylight框架分析說明_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

opendaylight分析opendaylight總體架構分析模塊,osgiBundle與floodlight之間的簡單比照SAL層之OFPacket的處理流程Md-SAL-模型化驅動簡單分析Clustering-集群與Floodlilght的簡單區(qū)別采用OSGI框架,各模塊間功能隔離開來,有利于擴展性、而且可以動態(tài)部署。OSGI的依賴關系管理,有多種實現(xiàn)方式,可以通過DependencyManager對象來注冊效勞,并通過反射注明依賴的效勞。而Floodlight只是單純的java包之間的引用,擴展性不好,支持的南向接口少,目前只有OF1.0;但是易于上手。是一個Openflow控制器.OpenDayLight中的bundles核心基類:ComponentactivatorabstractBase實現(xiàn)了Osgi提供的BundleActivator,以自己定義的容器接口iContaineraware,從中發(fā)現(xiàn)各個bundle之間、Componet之間、全局和容器Container之間的依賴和調用關系。bundle的抽象基類,管理全局和容器相關的效勞,當然bundle本身就是一個大效勞。Container是OpenDaylight中的一個網絡域,有很多鏈接信息、整個域網絡信息等,由ContainerManager管理容器。而OSGI管理各個bundle;每個具體的接口實現(xiàn)和容器的Container為關鍵字通過DependencyManager(依賴管理)創(chuàng)立一個Componet,每個Component就是一個效勞,里面說明了導出的接口和依賴的接口。DM以Component的形式來管理依賴關系。主要方法如下:

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

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

實現(xiàn)IListendatapacket的應用,最后會將其送到ARPAPP處理。TopologyService如前面所講,報文經Controller處理后,,DiscoveryService收到報文,因為其實現(xiàn)了

Idatapacketlisten

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

,的

Topologyserviceshim

Implements

Idiscoverylistener,在這個類中,有個進程,一直在運行著,一但有更新,就會,將其notifyedge(edge

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

Itopologyserviceshimlistener,將其交給topologyservices

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

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

GetPpcService(class);NitificationService

NotificationserviceDataStoreAccessAndModification

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

繼承了

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

數據存儲效勞,配置流,獲取交換機狀態(tài)

其實現(xiàn)類為

Databrokerimpl

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

Packetin通知效勞3)Packetprocessingservice發(fā)送報文,通過三述效勞,得到與Md-SAL層通知;在這個Consumer中,處理交換機,映射表,及自學習的過程,下發(fā)相應流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)當有Databrokerservice.Commit時,調用Requestcommit(datastoreindentifier);return

Flowtransaction;invokeFinish();datacommittransaction是datacommithandler的內部類;finishCommit;OpenflowpluginActivatorExtendsComponentActivatorAbstractBaseImp為openFlowPluginProviderDependency依賴于bindingAwareBroker,switchConnectionProvider;初始化的過程中,會調用set方法,在兩者set之后,會調用Broker.RegisterProvider(this,context);返回providerContext,隨后調用onSessioninitiated(pc);在這個類中getpublishService和dataService;兩個SAL效勞;然后通過SessionManagerOFImpl里注入這兩個效勞

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論