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