何旻諾
【摘要】 自動(dòng)化、信息化和互你你你*/動(dòng)化的智能電網(wǎng)需要一個(gè)更智慧的網(wǎng)絡(luò)。SDN軟件定義網(wǎng)絡(luò)可以助力智能電/網(wǎng)的更快發(fā)展。OpenDaylight是SDN開(kāi)源控制器框架,以協(xié)作方式,模型驅(qū)動(dòng)架構(gòu),更易于SDN的開(kāi)放和創(chuàng)新。SDN控制器框架OpenDaylight技術(shù)作了深入研究。
【關(guān)鍵詞】 SDN OpenDaylight 軟件定義網(wǎng)絡(luò)
一、引言
智能電網(wǎng)以集成高速雙向通信網(wǎng)絡(luò)為基礎(chǔ),利用多種高新技術(shù)和先進(jìn)設(shè)備,能夠真正實(shí)現(xiàn)電網(wǎng)的安全、高效、穩(wěn)定、環(huán)保、經(jīng)濟(jì)性,是今后的發(fā)展趨勢(shì)。智能電網(wǎng)需要自動(dòng)化、信息化和互動(dòng)化。這一切都需要更為智慧的網(wǎng)絡(luò)。SDN軟件定義網(wǎng)絡(luò)可以助力智能電網(wǎng)的更快發(fā)展。OpenDaylight是SDN開(kāi)源控制器框架,以協(xié)作方式,模型驅(qū)動(dòng)架構(gòu),更易于SDN的開(kāi)放和創(chuàng)新。本文對(duì)SDN控制器框架OpenDaylight技術(shù)作了深入研究。
二、OpenDaylight SDN控制器
2.1 OpenDaylight概述
OpenDaylight屏蔽底層,網(wǎng)絡(luò)服務(wù)于應(yīng)用,打造統(tǒng)一開(kāi)放的SDN平臺(tái),目標(biāo)是打造一個(gè)SDN網(wǎng)絡(luò)操作系統(tǒng)。
OpenDaylight包含以下的核心技術(shù)。
OSGI:一種面向服務(wù)的架構(gòu),將應(yīng)用視為對(duì)等模塊的相互協(xié)作,支持在控制器運(yùn)行時(shí)進(jìn)行服務(wù)的安裝、刪除和更新。
MAVEN:構(gòu)建工具,能夠幫我們自動(dòng)化構(gòu)建過(guò)程,從清理、編譯、測(cè)試到生成報(bào)告,再到打包和部署。
INFINISPAN:實(shí)現(xiàn)控制器的集群
SAL:整個(gè)架構(gòu)引入了業(yè)務(wù)抽象層,將服務(wù)抽象化,使得上層北向和下層南向之間的調(diào)用相互隔離。
MD:Model Drive。使用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ù)。
南向API:Openflow等。控制器通過(guò)南向API管理底層。
北向API:REST API,應(yīng)用層通過(guò)北向API管理控制器。
2.2 OSGI
OSGI模塊化,定義了OSGI模塊的概念,并將之稱(chēng)為一個(gè)BUNDLE,包含一個(gè)元數(shù)據(jù)的JAR文件,其中元數(shù)據(jù)MANIFEST.MF,由NAME_VALUE對(duì)組成,由類(lèi)及相關(guān)資源組成,關(guān)注的是打包和共享代碼。
生命周期定義了OSGI在框架中如何動(dòng)態(tài)安裝和管理,通過(guò)生命周期的操作,安裝、更新、卸載等,動(dòng)態(tài)的管理和改進(jìn)應(yīng)用程序,不需要重啟應(yīng)用程序。重點(diǎn)在于執(zhí)行時(shí)模塊管理和對(duì)底層OSGI框架的訪問(wèn)。
服務(wù)層面向服務(wù),服務(wù)注冊(cè),查找等。接口與實(shí)現(xiàn)分離。OSGI是JAVA接口,模塊內(nèi)的組件間交互和通信。
2.3 依賴管理
Bundle的抽象基類(lèi),管理全局和容器相關(guān)的服務(wù),bundle本身就是一個(gè)大服務(wù)。
Container是OpenDaylight中的一個(gè)網(wǎng)絡(luò)域,有很多鏈接信息、整個(gè)域網(wǎng)絡(luò)信息等,由ContainerManager管理容器,而OSGI管理各個(gè)bundle。
每個(gè)模塊中有多個(gè)實(shí)現(xiàn),其中通過(guò)Dependency Manager管理其依賴關(guān)系。
每個(gè)實(shí)現(xiàn)一個(gè)Component,每個(gè)Component就是一個(gè)服務(wù),里面說(shuō)明了到處的接口和依賴的接口。
通過(guò)Dependency Manager以component管理依賴。
2.4 SAL
SAL主要作用將服務(wù)抽象出來(lái),不管控制器和網(wǎng)絡(luò)設(shè)備之間使用何種協(xié)議,提供協(xié)議的統(tǒng)一服務(wù)。SAL是ODL的核心設(shè)計(jì),支持多種南向協(xié)議,為各模塊和應(yīng)用提供一致的服務(wù),這些服務(wù)的實(shí)現(xiàn),是由底層插件,基于已存在的組件和網(wǎng)絡(luò)設(shè)備的功能,所提供的接口。將具體請(qǐng)求,映射到相應(yīng)的插件,完成服務(wù)。
SAL提供的服務(wù):
Data Packet Services為數(shù)據(jù)報(bào)文的處理,提供服務(wù)。
Topology Service為應(yīng)用提供節(jié)點(diǎn)和鏈路的更新信息。
Inventory service為如節(jié)點(diǎn)或者節(jié)點(diǎn)連接提供API查詢。Flow Programming Service是流編程服務(wù)。
Resource service提供資源服務(wù)。
2.5 MD-SAL
MD-SAL的主要功能是促進(jìn)提供者和使用者之間的管道。它可以提供提供者和使用者之間的管道在不同的容器中。它將連接到一個(gè)消息總線和共享數(shù)據(jù)存儲(chǔ)的集群opendaylight容器。南向與北向的一致性。提供者或消費(fèi)者在MD-SAL中注冊(cè)。從而,一個(gè)消費(fèi)者可以找到所需的供應(yīng)商。提供者可以生成通知,消費(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)求路由和基礎(chǔ)設(shè)施服務(wù),以支持服務(wù)。但它本身不提供服務(wù),由插件提供服務(wù)。YANG使得Component之間、plugin、北向等API,使得這種接口和AD-SAL REST接口相比更抽象,符合模型驅(qū)動(dòng)的思想。
2.6 PACKET處理流程
Openflow報(bào)文首先到達(dá)Controller,會(huì)將此報(bào)文發(fā)送對(duì)已經(jīng)注冊(cè)過(guò)監(jiān)聽(tīng)Openflow報(bào)文的類(lèi)中進(jìn)行處理。Packet In消息到來(lái),經(jīng)過(guò)底層plugin,經(jīng)過(guò)SAL層,調(diào)用實(shí)現(xiàn)了IListenDataPacket的 receiveDataPacket處理。主要涉及三個(gè)模塊,分別為ARPHandler,HostTracker,simpleForwarding。
ARPHandler主要負(fù)責(zé)arpRequest,arpReply。
HostTracker負(fù)責(zé)主機(jī)信息,更新主機(jī),以及連接情況。simpleForwarding處理ip報(bào)文,同時(shí)安裝到每個(gè)host的流表。
2.7 Topology Service
Controller將報(bào)文送到DiscoveryService。其實(shí)現(xiàn)了Idatapacketlisten,在DataPacketmuxdemux中處理Openflow報(bào)文的過(guò)程中,處理鏈路processDiscoveryPacket報(bào)文,交給實(shí)現(xiàn)了idiscoverylistener的Topologyserviceshim Implements Idiscoverylistener。
三、總結(jié)與展望
SDN開(kāi)啟了一條網(wǎng)絡(luò)創(chuàng)新的道路,將原來(lái)完全由交換機(jī)/路由器控制的報(bào)文轉(zhuǎn)發(fā)過(guò)程轉(zhuǎn)化為由OpenFlow交換機(jī)和控制器Controller來(lái)共同完成,從而實(shí)現(xiàn)了數(shù)據(jù)轉(zhuǎn)發(fā)和路由控制的分離??刂破魇荢DN的核心,可以通過(guò)事先規(guī)定好的接口操作來(lái)控制OpenFlow交換機(jī)中的流表,從而達(dá)到智能控制數(shù)據(jù)轉(zhuǎn)發(fā)的目的。使用SDN技術(shù)打造智能電網(wǎng)前景廣闊。
參 考 文 獻(xiàn)
[1] OpenDaylight User Guide, OpenDaylight, June, 2015.
[2] https://www.opendaylight.org, OpenDaylight.