常甫 鄭世慧 孫斌
摘? 要: 隨著SDN的廣泛應(yīng)用,OpenFlow交換機逐漸增多,如何方便快捷地配置和管理OpenFlow交換機成為一個值得關(guān)注的問題。對此,本文提出了遠程配置和管理OpenFlow交換機的系統(tǒng)。該系統(tǒng)基于Web架構(gòu),使用OF-CONFIG協(xié)議和命令行兩種方式,并實現(xiàn)了配置文件的自動生成和配置命令的自動下發(fā)。在本文最后,使用虛擬機搭建環(huán)境,對系統(tǒng)進行了測試。結(jié)果表明,本系統(tǒng)的各個模塊實現(xiàn)了設(shè)計的功能,管理員可以使用本系統(tǒng)在遠程完成對交換機的配置管理工作。此外,本系統(tǒng)使管理員免于登錄到交換機進行操作,并使用模板減少了管理員的輸入工作量,有助于提高管理員的工作效率。
關(guān)鍵詞: 計算機;SDN;OpenFlow;OF-CONFIG;交換機配置
中圖分類號: TP393.07? ? 文獻標(biāo)識碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.01.001
【Abstract】: Software Defined Networking (SDN) became popular in many situations, such as data center. One of the most widely used forwarding devices in SDN is OpenFlow switch. However, administrators usually need to log in every switch, or type in entire configuration files to manage them. This paper presents a system to configurate and manage OpenFlow switches remotely. It is based on B/S structure, using OF-CONFIG protocol and command-line scripts to configure OpenFlow switches. Furthermore, configuration files can be generated with a few necessary parameters, and be sent to switches automatically. At the end of this paper, the system is tested in a virtual environment. The results show that each module works well. Furthermore, in comparison with, the system helps administrators to avoid logging in each switch for operation, and configure switches at one point. Besides, the system reduces the workload of typing in the entire configuration files, which helps to improve productivity.
【Key words】: Computer; SDN; OpenFlow; OF-CONFIG; Switch configuration
0? 引言
近年來,隨著云計算和虛擬化的快速興起,傳統(tǒng)網(wǎng)絡(luò)在網(wǎng)絡(luò)的可擴展性、動態(tài)性、網(wǎng)絡(luò)管理的靈活性等方面暴露出難以克服的問題。在此背景下,基于OpenFlow[1]為網(wǎng)絡(luò)帶來的可編程特性,誕生了軟件定義網(wǎng)絡(luò)(SDN)的網(wǎng)絡(luò)設(shè)計思想,其核心是通過分離轉(zhuǎn)發(fā)和管理,讓傳統(tǒng)的交換機和路由器只負責(zé)轉(zhuǎn)發(fā)數(shù)據(jù)包,數(shù)據(jù)包的轉(zhuǎn)發(fā)策略和規(guī)則都由集中式的控制器來進行管理。SDN在很大程度上屏蔽了底層網(wǎng)絡(luò)設(shè)備的異構(gòu)性,并通過API的方式開放網(wǎng)絡(luò)功能,不僅能夠快速滿足用戶的網(wǎng)絡(luò)交付、網(wǎng)絡(luò)擴容等需求,也可以為網(wǎng)絡(luò)服務(wù)提供商(ISP)管理網(wǎng)絡(luò)設(shè)備提供極大的便利[2]。隨著SDN在眾多領(lǐng)域得到應(yīng)用,OpenFlow交換機設(shè)備也越來越多。如何對眾多的OpenFlow交換機方便有效地進行配置,逐漸成為一個有待研究的問題[3]。
按照OpenFlow協(xié)議[4]的規(guī)定,OpenFlow交換機需要首先進行配置,才能和控制器進行通信。為了對OpenFlow交換機進行配置和管理,可以采用命令行(CLI)和OF-CONFIG協(xié)議[5]兩種方式。其中命令行方式的配置步驟較為繁瑣,并且配置步驟之間缺少邏輯性和整體性。而OF-CONFIG協(xié)議雖然步驟簡潔,但是仍然需要輸入正確完整的配置文件,所以人工配置的效率和正確率依賴于管理員對交換機YANG模型[6]的熟練程度。
對于交換機的配置問題,研究者在傳統(tǒng)結(jié)構(gòu)網(wǎng)絡(luò)中就已經(jīng)進行了相關(guān)研究[7]。提出了基于Web的NETCONF管理系統(tǒng),實現(xiàn)了NETCONF協(xié)議中的配置操作,但是用戶需要自行輸入完整的配置文件(XML格式),并且該系統(tǒng)缺少YANG建模語言定義的數(shù)據(jù)模型[8]。提出了為不同的交換機設(shè)備建立一個配置模板庫,每種模板可以匹配一種支持NETCONF協(xié)議的交換機,從而方便交換機的配置工作。Vijay [9]提出了利用NETCONF協(xié)議的靈活性對家庭物聯(lián)網(wǎng)(IoT)網(wǎng)絡(luò)配置和管理。
在SDN興起后,對交換機配置的研究集中在OF-CONFIG協(xié)議和YANG建模語言。Manzanares[10]利用OF-CONFIG協(xié)議配置交換機的隊列,從而實現(xiàn)基于流的服務(wù)質(zhì)量(QoS)管理。Majstorovi?[11]提出了在特定環(huán)境中創(chuàng)建YANG模型,并編寫相應(yīng)的模塊,用以監(jiān)控和配置網(wǎng)絡(luò)設(shè)備。劉建琪[12]使用OF-CONFIG代理實現(xiàn)了對Open vSwitch交換機的配置,但其代理使用的YANG模型過于簡單,僅能實現(xiàn)少數(shù)配置功能,不能滿足OF-CONFIG協(xié)議的要求,所以缺少對其他OpenFlow交換機的通用性。Cejka [13]針對流行的OpenFlow虛擬交換機Open vSwitch不能原生支持OF-CONFIG協(xié)議的問題,設(shè)計并實現(xiàn)了可用于該交換機的OF-CONFIG組件,使該交換機能夠具備更好的兼容性。
本文提出的OpenFlow交換機遠程配置與管理系統(tǒng),采用OF-CONFIG協(xié)議和CLI方式相結(jié)合的方式,自動生成符合交換機YANG模型的配置文件,并自動下發(fā)到交換機實現(xiàn)配置。系統(tǒng)基于Web架構(gòu),不僅配置步驟簡潔,而且實現(xiàn)了一定程度的自動化,加快了配置的速度,可以減少人工配置造成的錯誤。此外,由于OF-CONFIG協(xié)議的目標(biāo)是成為OpenFlow交換機的標(biāo)準配置協(xié)議,因此本系統(tǒng)在今后也將具備良好的通用性。
本文的其余部分安排如下:第1節(jié)簡要介紹SDN的整體架構(gòu)和OpenFlow交換機配置管理的研究現(xiàn)狀;第2節(jié)介紹我們設(shè)計的OpenFlow交換機遠程配置管理系統(tǒng);第3節(jié)分析我們系統(tǒng)的分析測試情況;第4節(jié)總結(jié)了主要工作和發(fā)現(xiàn)的不足。
1? OpenFlow交換機遠程配置管理系統(tǒng)
1.1? 系統(tǒng)簡介
OF-CONFIG協(xié)議與OpenFlow協(xié)議的關(guān)系如圖1所示。本系統(tǒng)將作為OF-CONFIG配置點,對OpenFlow交換機的資源進行配置。
本系統(tǒng)使用B/S架構(gòu),對支持OF-CONFIG協(xié)議的OpenFlow交換機,可以實現(xiàn)常見功能的配置,包括配置邏輯交換機,交換機端口,交換機與控制器連接,交換機配置備份與恢復(fù),以及交換機批量配置。系統(tǒng)使用符合OF-CONFIG協(xié)議的YANG模型,描述交換機配置的相關(guān)選項。此外,系統(tǒng)可以根據(jù)用戶選擇的功能模塊,以及用戶輸入的少量參數(shù),自動生成配置文件,并選擇相應(yīng)的配置命令,自動完成對交換機的配置,加快了配置效率,并減少手工配置導(dǎo)致的配置錯誤。
如圖2所示,系統(tǒng)的總體結(jié)構(gòu)分為3個部分:Web頁面、服務(wù)器和OpenFlow交換機。用戶通過瀏覽器進入并使用系統(tǒng)的功能。服務(wù)器包括Web服務(wù)器和配置管理系統(tǒng),配置管理系統(tǒng)通過SSH方式連接到交換機的OF-CONFIG服務(wù)器。交換機中的OF-CONFIG服務(wù)器用于接收和處理服務(wù)器發(fā)送的命令,并返回響應(yīng)消息。此外,對于少數(shù)涉及交換機的宿主機的操作,配置管理系統(tǒng)將直接通過SSH連接到宿主機并進行配置。
1.2? 系統(tǒng)功能模塊劃分與流程
如圖3所示,系統(tǒng)包含邏輯交換機(也稱網(wǎng)橋)配置模塊,端口配置模塊,控制器連接配置模塊和交換機配置備份與恢復(fù)模塊。
用戶在使用本系統(tǒng)時,首先需要通過瀏覽器登錄服務(wù)器,進入管理界面。用戶在管理界面選擇相應(yīng)的功能模塊,然后根據(jù)配置的需要,輸入相應(yīng)的
配置參數(shù),如交換機的IP和邏輯交換機的ID等。系統(tǒng)會檢查所需參數(shù)是否完整和合法,并檢查交換機的連接性,確認無誤后則調(diào)用模板生成相應(yīng)的配置文件,并將配置文件下發(fā)到交換機,完成相應(yīng)的配置。交換機完成配置后返回響應(yīng)消息,服務(wù)器處理響應(yīng)消息并發(fā)送響應(yīng)給瀏覽器,瀏覽器根據(jù)響應(yīng)生成響應(yīng)的顯示給用戶。用戶可以繼續(xù)選擇功能模塊進行配置,也可以選擇退出管理系統(tǒng)。系統(tǒng)的工作流程如圖4所示。
系統(tǒng)使用了OF-CONFIG協(xié)議和命令行(CLI)這兩種方式對OpenFlow交換機進行配置,具體如下所述。
(1)交換機相關(guān)參數(shù)的配置,需要使用OF- CONFIG協(xié)議。
a)使用connect命令連接到OpenFlow交換機。
b)通過edit-config命令,將xml格式的配置文件發(fā)送給OpenFlow交換機,完成相應(yīng)配置。
c)配置完成后,使用disconnect命令斷開連接。
(2)與交換機所在主機有關(guān)的配置,需要使用命令行。
a)使用SSH連接到OpenFlow交換機所在的主機。
b)通過CLI方式,進行相應(yīng)配置。
c)配置完成后,使用exit命令斷開SSH連接。
1.3? 系統(tǒng)子模塊介紹
本節(jié)對系統(tǒng)各個子模塊的功能和所需參數(shù)進行詳細介紹。其中,邏輯交換機配置模塊,端口配置模塊和控制器連接配置模塊均使用模板生成配置文件,并通過OF-CONFIG協(xié)議進行配置,此外端口配置模塊的VxLAN配置功能還使用了CLI命令。
(1)邏輯交換機配置模塊
本模塊可以配置交換機中的邏輯交換機,包括創(chuàng)建、修改、移除等功能。以創(chuàng)建邏輯交換機的功能為例,該功能使用的模板如圖5所示。其中必需的參數(shù)為交換機IP,邏輯交換機id(即圖中的BRIDGE_ID變量),其他可選參數(shù)為邏輯交換機的datapath-id和失去連接后的表現(xiàn)。
(2)端口配置模塊
本模塊可以配置交換機中邏輯交換機的端口,包括添加、修改、移除端口,VxLAN隧道配置和隊列配置等功能。
其中添加、修改、移除端口功能的必需參數(shù)為交換機IP,邏輯交換機的id與資源項的名稱。其他可選參數(shù)包括資源項的requested-number和confi guration等。
創(chuàng)建、修改和移除隊列功能的必需參數(shù)為交換機的IP,邏輯交換機的id,以及資源項的相關(guān)參數(shù)。
創(chuàng)建、修改和移除VxLAN隧道的必需參數(shù)為交換機的IP,邏輯交換機的id,以及資源項的相關(guān)參數(shù),如VxLAN隧道近端和遠端IP等。此外,VxLAN的配置過程,還需要將端口綁定至宿主機網(wǎng)卡,該功能使用命令行方式實現(xiàn),必需參數(shù)為交換機的IP,以及交換機宿主機的網(wǎng)卡名稱。
圖6為添加VxLAN隧道的模板,該模板包含了端口配置模塊中的大部分參數(shù)。
在VxLAN的配置過程中,需要使用CLI方式,實現(xiàn)將端口綁定至宿主機網(wǎng)卡和增加路由的功能。該功能需要使用ifconfig命令,實現(xiàn)虛擬交換機端口和宿主機網(wǎng)卡的綁定,并使用route add命令,加入VxLAN隧道對應(yīng)的路由。
(3)控制器連接配置模塊
本模塊可以將Open vSwitch交換機連接至指定控制器,并可修改和移除已連接的控制器。連接、修改和移除控制器的必需參數(shù)包括交換機的IP,邏輯交換機的id,以及控制器的id,IP地址,端口和連接協(xié)議。
以控制器連接功能為例,該功能的模板如圖7所示,其中必需參數(shù)為邏輯交換機id,控制器id,控制器IP,控制器端口。
(4)交換機配置備份與恢復(fù)模塊
本模塊可以對Open vSwitch交換機的配置進行備份和恢復(fù),并可以使用已保存的交換機配置對其他交換機進行批量配置。
備份交換機配置功能的必需參數(shù)為交換機IP,恢復(fù)交換機配置的必需參數(shù)為交換機IP和備份id。
交換機批量配置功能的必需參數(shù)為交換機IP和相關(guān)功能的必需參數(shù),系統(tǒng)使用參數(shù)生成相關(guān)的配置文件configuration.xml,然后對交換機進行批量配置。圖8為批量配置功能的相關(guān)代碼,使用循環(huán)實現(xiàn)對多個交換機的批量配置。其中config.sh使用IP地址和配置文件作為參數(shù),逐個實現(xiàn)對交換機的配置。
2? 分析測試
2.1? 測試環(huán)境
測試環(huán)境中,OpenFlow交換機選擇OpenFlow vSwitch v2.3.1(以下簡稱OVS)。由于OVS自身并不支持OF-CONFIG協(xié)議,而是使用OVSDB協(xié)議進行配置,所以需要額外安裝OF-CONFIG組件,從而可以支持OF-CONFIG協(xié)議1.2版本中規(guī)定的大部分功能。
每臺OVS交換機分別安裝在一臺Ubuntu 14.04 64位系統(tǒng)的虛擬機中,而Web服務(wù)器和管理系統(tǒng)則安裝在一臺額外的Ubuntu 14.04 64位系統(tǒng)的虛擬機中。用戶通過可以連接到Web服務(wù)器的瀏覽器進行操作。
測試之前,需要配置服務(wù)器免密鑰SSH登錄到OVS所在主機。使用服務(wù)器生成RSA密鑰對,并將公鑰添加至OVS所在主機的~/.ssh/authorized_ keys文件中,從而實現(xiàn)SSH公鑰免密碼登錄,避免后續(xù)配置過程因SSH登錄時需要密碼而被中斷。
測試過程中,用戶使用瀏覽器進入配置管理系統(tǒng),選擇相應(yīng)的功能模塊,輸入必要的參數(shù),對目標(biāo)交換機進行功能測試。
2.2? 邏輯交換機配置模塊功能驗證
本節(jié)以交換機配置模塊中的創(chuàng)建邏輯交換機功能為例進行驗證。本驗證實例的目的是,為OVS交換機添加2臺邏輯交換機,并分別命名為br0和br1。
測試環(huán)境如圖9所示,虛擬機為OVS交換機的宿主機。
配置完成后,OVS交換機顯示的配置結(jié)果如圖10所示??梢奜VS交換機中已經(jīng)成功添加邏輯交換機br0和br1。
2.3? 端口配置模塊功能驗證
本節(jié)以端口配置模塊中的VxLAN隧道配置功能為例進行驗證。該實例包括了創(chuàng)建邏輯交換機端口,添加VxLAN隧道,以及將邏輯交換機端口綁定到宿主機網(wǎng)卡等操作,可以充分驗證本模塊的功能是否得到實現(xiàn)。
測試環(huán)境如圖11所示,虛擬機為OVS交換機的宿主機。由于在實際SDN網(wǎng)絡(luò)中,配置網(wǎng)絡(luò)和數(shù)據(jù)通信網(wǎng)絡(luò)通常為獨立分開的,所以虛擬機具有eth0和eth1兩塊網(wǎng)卡,其中eth0用于和配置管理系統(tǒng)連接,eth1用于和另一臺虛擬機進行通信。
本驗證實例的目的是,對交換機OVS-1和OVS-2進行配置,并在兩臺交換機之間搭建VxLAN隧道,實現(xiàn)不同網(wǎng)段之間的通信。VxLAN隧道兩端為br0網(wǎng)橋,2個網(wǎng)橋的IP分別為192.168.233.1/24和192.168.234.1/24,分別處于不同的網(wǎng)段。管理系統(tǒng)通過局域網(wǎng)192.168.136.0/24連接到OVS交換機,即為配置網(wǎng)絡(luò)。OVS交換機之間使用通信網(wǎng)絡(luò)進行通信,通信網(wǎng)絡(luò)兩端為br1網(wǎng)橋,而br1網(wǎng)橋需要綁定宿主機的eth1網(wǎng)卡,并使用eth1的IP地址。以上配置過程中,需要使用Linux系統(tǒng)的ifconfig命令和route命令,由管理系統(tǒng)通過SSH連接到宿主機,使用CLI命令的方式進行配置。
配置完成后,兩臺OVS交換機顯示的配置結(jié)果如圖12所示,可以看到交換機的兩個網(wǎng)橋br0和br1均實現(xiàn)了相關(guān)配置。
2.4? 控制器連接配置模塊功能驗證
本節(jié)以控制器連接配置模塊中的連接到控制器功能為例進行驗證。本驗證實例的目的是,將OVS交換機中的邏輯交換機br0連接到控制器。
測試環(huán)境如圖13所示,虛擬機為OVS交換機的宿主機,控制器為一臺Floodlight控制器。
配置完成后,OVS交換機顯示的配置結(jié)果如圖14所示,F(xiàn)loodlight控制器顯示的配置結(jié)果如圖15所示。
2.5? 交換機配置備份與恢復(fù)模塊功能驗證
本節(jié)以交換機備份與恢復(fù)模塊中的批量配置功能為例進行驗證。本驗證實例的目的是,對4臺OVS交換機進行批量配置,為每臺交換機添加2個邏輯交換機br0和br1,為br0添加端口port0,并將邏輯交換機br0連接到控制器。
測試環(huán)境如圖16所示,虛擬機為OVS交換機的宿主機。
配置完成后,4臺OVS交換機顯示的配置結(jié)果如圖17所示,控制器顯示的配置結(jié)果如圖18所示。
3? 結(jié)論和展望
本文提出了針對OpenFlow交換機的遠程配置和管理系統(tǒng)。通過測試和分析,我們認為本系統(tǒng)實現(xiàn)了預(yù)先設(shè)計的功能,可以在遠程對OpenFlow交換機進行配置管理。此外,系統(tǒng)使用功能模板的方式,減少了管理員在配置過程中的工作量,降低了交換機配置管理工作對管理員自身能力的依賴程度,并且提供了批量配置功能,加快了配置速度。除了系統(tǒng)已經(jīng)實現(xiàn)的配置功能,未來的工作還要加入對OF-CONFIG協(xié)議中YANG模型更好的展示和交互方式,從而使用戶可以不拘泥于當(dāng)前系統(tǒng)中固定的功能模塊,在一次配置中自由組合各個功能,使配置過程更加靈活。
參考文獻
MCKEOWN N, ANDERSON T, BALAKRISHNAN H, et al. OpenFlow: enabling innovation in campus networks[J]. ACM SIGCOMM Computer Communication Review, 2008, 38(2): 69-74.
MORADI M, ZHANG Y, MAO Z M, et al. Dragon: Scalable, Flexible, and Efficient Traffic Engineering in Software Defined ISP Networks[J]. IEEE Journal on Selected Areas in Communications, 2018, 36(12): 2744-2756.
陸華興. 對基于OpenFlow的SDN技術(shù)分析[J]. 通訊世界, 2018, 25(12): 23-24.
LU H X. Analysis of OpenFlow based SDN technology[J]. TelecomWorld, 2018, 25(12): 23-24.
Open Networking Foundation. OpenFlow Switch Specifi cation Version 1. 5. 1. (2015-03-26). https: //www. Opennet working. org/wp-content/uploads/2014/10/openflow-switch- v1.5.1.pdf
Open Networking Foundation. OpenFlow Management and Configuration Protocol 1. 2. (2014). https: //www. Open networking. org/images/stories/downloads/sdn-resources/onf-specifications/openflow-config/of-config-1. 2. pdf
BJORKLUND M. The YANG 1. 1 Data Modeling Language[R]. IETF-RFC-7950, August 2016. https: //tools. ietf. org/html/rfc7950.
蔣東旭. 基于B/S架構(gòu)的NETCONF網(wǎng)管系統(tǒng)的研究與實現(xiàn)[D]. 西安電子科技大學(xué), 2015.
JIANG D X. Research and Implementation of NETCONF Network Management System Based on the B/S Archi tecture[D]. Xidian University, 2015
LIU M. Network Configuration Access: U. S. Patent Appli cation 15/122, 283[P]. 2016-12-22.
VIJAY S, BANGA M K. Management of IoT Devices in Home Network via Intelligent Home Gateway Using NET CONF[C]. International Conference on Ubiquitous Communications and Network Computing. Springer, Cham, 2017: 196-207.
MANZANARES J F G, de la Cruz A P, MOLINA J M M. Performance of QoS Policies in Software-Defined Networks[C]. 2018 IEEE 10th Latin-American Conference on Communica tions (LATINCOM). IEEE, 2018: 1-6.
MAJSTOROVIC B, VULETA M, MILIC B, et al. Using YANG module for monitoring and configuration of network devices[C]. Telecommunication Forum (TELFOR), 2017 25th. IEEE, 2017: 1-4.
劉建琪. 基于YANG數(shù)據(jù)模型的SDN轉(zhuǎn)發(fā)設(shè)備自動配置的設(shè)計與實現(xiàn)[D]. 內(nèi)蒙古大學(xué), 2017.
LIU J Q. Design and Implementation of Automatic Confi guration of SDN Forwarding Equipment Based on YANG[D]. Inner Mongolia University, 2017
?EJKA T, KREJCI R. Configuration of open vSwitch using OF-CONFIG[C]. Network Operations and Management Symposium (NOMS), 2016 IEEE/IFIP. IEEE, 2016: 883-888.