李莉,李紀成,張超然,劉丹,康琬悅
(1.長春理工大學 計算機科學技術學院,長春 130022;2.工業(yè)和信息化部 教育與考試中心,北京 100040)
基于OpenStack云平臺Neutron關鍵技術研究
李莉1,李紀成1,張超然1,劉丹1,康琬悅2
(1.長春理工大學計算機科學技術學院,長春130022;2.工業(yè)和信息化部教育與考試中心,北京100040)
云計算的網(wǎng)絡服務承載著整個云計算平臺的網(wǎng)絡構建,因此網(wǎng)絡模塊都作為云平臺主要模塊之一,OpenStack中的Neutron模塊作為網(wǎng)絡管理系統(tǒng),主要實現(xiàn)多租戶情況下的網(wǎng)絡隔離,使每個租戶的網(wǎng)絡環(huán)境獨立,可以根據(jù)自己的需求部署網(wǎng)絡環(huán)境。本文將分析Neutron模塊的工作原理,利用虛擬化模擬Neutron的網(wǎng)絡管理,運用虛擬化技術結合Libvirt 與Open vSwitch等軟件,模擬實現(xiàn)類似云主機之間的通信。
Openstack;虛擬化;網(wǎng)絡
自2008年以來,云計算的發(fā)展突飛猛進,已經(jīng)成為IT行業(yè)領軍技術之一。近幾年云計算更是應用到了國家各項基礎設施服務中,軍事、銀行、大型電商以及一些政府機關部門也都隨著云計算的浪潮迅速發(fā)展。
在Google、Amazon和IBM等互聯(lián)網(wǎng)巨頭公司的帶領下,云計算市場可謂是風生水起,Openstack就是在這樣環(huán)境下誕生,作為一個開源的基礎設施及服務(Infrastructure as a Service)的云計算平臺,Openstack得到了廣大互聯(lián)企業(yè)的大力支持,從2010年開始至今已經(jīng)發(fā)展成為全球最受歡迎的開源云平臺。
Openstack是2010年NASA與Rackspace一起開發(fā)的開源項目,實現(xiàn)了類似亞馬遜EC2和S3基礎設施服務,作為一個開源的基礎設施及服務的云計算平臺,任何企業(yè)和個人都能參與開發(fā)。Openstack支持大部分云環(huán)境,并且具有簡單、豐富、統(tǒng)一及可擴展特性,使其深受廣大互聯(lián)網(wǎng)企業(yè)的歡迎。至今已經(jīng)有169家機構和1500名開發(fā)者為其貢獻代碼。2013年paypal將其一萬臺服務器上的VMware遷移到Openstack平臺,2014年沃爾瑪也將旗下所有的電商業(yè)務遷移到了Openstack上。
Openstack的最新版由Nova、Glance、Cinder、Keystone、Horizon、Netron等六個核心模塊組成,這些模塊包含了IaaS云平臺的基本服務功能:資源管理、存儲服務、鏡像管理、身份驗證、Web界面管理和網(wǎng)絡管理。
Neutron在Openstack中負責網(wǎng)絡管理,在早期的版本中,Openstack通過Nova模塊中的Nova-Network組件對網(wǎng)絡資源進行管理。在F版本之后,Openstack將該組件提取出來單獨形成一個項目Quantum,隨后發(fā)展成現(xiàn)在的Neutron。Neutron允許用戶創(chuàng)建和加入網(wǎng)絡接口,提供網(wǎng)絡連接即服務(Network-Connectivity-as-a-Service)。
Neutron網(wǎng)絡服務分為以下幾個部分,如圖1所示。負責接收請求的Neutron-server,負責插入端口、創(chuàng)建網(wǎng)絡拓撲、提供IP地址的agent和plug-in以及用于組件間通信的消息隊列。Neutron通常與Nova服務交互,為虛擬機提供網(wǎng)絡連接服務[1]。
圖1 Neutron組件架構圖
相對于整個Openstack來說,Neutron處于系統(tǒng)平臺的位置,來提供配置命令和參數(shù)的審查,并且將網(wǎng)絡功能組織起來;Neutron是一個抽象的架構,通過提供各種API來構筑租戶的網(wǎng)絡拓撲及配置網(wǎng)絡負載策略,而且支持插件構建自定義網(wǎng)絡,但是Neutron本身不提供任何網(wǎng)絡功能,Neutron的網(wǎng)絡功能中除DHCP和L3-agent等部分功能外,絕大部分是由Plugin提供的[2]。根據(jù)Neutron提供的API,租戶可以自定義的網(wǎng)絡連接和云解決方案,使運營商可以為他們的云網(wǎng)絡配置不同的網(wǎng)絡技術。Neutron還提供了一個API來配置和管理各種網(wǎng)絡服務的范圍從L3轉發(fā)和NAT負載均衡到邊緣防火墻和IPSec VPN。
2.1Neutron模塊四個關鍵概念
Network:可以靈活的劃分網(wǎng)絡,租戶可以創(chuàng)建自己的網(wǎng)絡,在多租戶的環(huán)境下的獨立網(wǎng)絡環(huán)境;
Subnet:一組IP資源池,可以為租戶的instance(實例)提供類似192.168.1.0/24的私網(wǎng)地址,不同Subnet之間通信需要Router支持;
Port:虛擬交換機的一個端口,相當于物理交換機的接口,用來連接路Router和Subnet;
Router:與物理路由器類似,是一個可銷毀的路由選擇與轉發(fā)部件,為租戶的instance提供路由功能。
2.2Neutron體系結構組成
Neutron主要由Neutron Server守護進程、插件代理(Plugin Agent)、DHCP代理、三層代理(L3 Agent)構成,并且相互之間通過消息隊列進行通信[3],如圖2所示。
圖2 Neutron體系結構圖
Neutron Server:由守護進程和一些plugin構成,主要分布在控制節(jié)點和網(wǎng)絡節(jié)點,網(wǎng)絡服務器使用Neutron-server守護進程來暴露API,配置管理網(wǎng)絡插件(Plugin),并把API的請求傳給網(wǎng)絡插件進行后續(xù)處理。通常插件要訪問一個持久化存儲數(shù)據(jù)庫(也類似于其他Openstack服務)。插件對硬件的要求,性能特點,規(guī)模或操作工具可以有不同特性。確保配置數(shù)據(jù)及對應關系。因為網(wǎng)絡支持大量的插件,云管理員必須確定部署的網(wǎng)絡技術。
插件代理(Plugin Agent):傳統(tǒng)的計算機網(wǎng)絡通過Linux VLAN和IP表來實現(xiàn)一個基本的獨立模塊。Neutron提供了不同的plugin支持,虛擬網(wǎng)絡中的數(shù)據(jù)包由這些plugin來處理,可以根據(jù)這些plugin實現(xiàn)自定義的后端網(wǎng)絡API,一個plugin可以使用多種技術來試驗邏輯API請求,一些網(wǎng)絡plugin使用基本的Linux VLAN和IP表,然而其他的可能會使用L2-in-L3隧道或OpenFlow等先進的技術來達到同等效果。部署在計算、網(wǎng)絡節(jié)點上。
DHCP代理(DHCP Agent):DHCP服務代理與所有現(xiàn)有的插件兼容,主要為租戶私有網(wǎng)絡提供DHCP功能,所有需要DHCP功能的虛擬機都可以通過DHCP自動接收IP地址。部署在網(wǎng)絡節(jié)點上[4]。
三層代理(L3 Agent):為租戶網(wǎng)絡上主機提供L3/NAT轉發(fā)以及外部網(wǎng)絡訪問,需要一些plugin的支持,目前Big Switch/floodlight plugin已經(jīng)內(nèi)置了L3功能。部署網(wǎng)絡節(jié)點上[5]。
3.1計算節(jié)點
從instance里發(fā)出的packet經(jīng)過通過linux bridge中的虛擬網(wǎng)卡eth0連接到tap設備上,tap設備在openvswitch虛擬化出的網(wǎng)橋br-int上然后通過patch-tun端口連接到通道網(wǎng)橋br-tun,br-tun也是openvswitch虛擬化出來的網(wǎng)橋,與br-int對應,同時具有穿透功能,可以使多個計算節(jié)點上的vm連接在同一虛擬交換機上。br-tun本身不作為交換機,而是構成一個同一通信層,使網(wǎng)絡節(jié)點與計算節(jié)點、計算節(jié)點與計算節(jié)點形成一個以GRE為基礎的點對點的通信網(wǎng)絡,以此為基礎進行數(shù)據(jù)交換。
3.2網(wǎng)絡節(jié)點
網(wǎng)絡節(jié)點上也存在一對這樣的設備:br-tun和br-int,與計算節(jié)點上一樣,這里的br-tun也是為了整個系統(tǒng)構建統(tǒng)一通信層而存在,br-int主要起交換機作用通過兩個tap設備qr<n>和tap與namspace-router和dhcp相連接,分別承擔router和dhcp功能,l3-agent根據(jù)網(wǎng)絡管理創(chuàng)建router用來綁定子網(wǎng)管理子網(wǎng)的路由功能,路由功能則依靠namespace(命名空間)的iptables來實現(xiàn)。同時l3-agent針對特定的子網(wǎng)創(chuàng)建dhcp功能,l3-agent會在此namespace中啟動dnsmasq進程,用來管理子網(wǎng)的dhcp功能。目前這兩個namespace通常成對出現(xiàn)在openstack云平臺中,來用于管理特定的子網(wǎng)。
3.3外網(wǎng)通信
外部網(wǎng)橋(br-ex)的網(wǎng)絡,當數(shù)據(jù)包從br-int bridge出來時候,通過brige里面網(wǎng)口qr<n>經(jīng)過L3-Agent連接到br-ex的qb<n>網(wǎng)口上,br-ex混雜模式加載在物理網(wǎng)卡eth2上,因此br-ex接收的數(shù)據(jù)包可以直接通過eth2發(fā)送到Internet里。這樣計算節(jié)點上擁有float-ip的VM可以自由與外部網(wǎng)絡進行通信。
圖3 Neutron網(wǎng)絡路線圖
本次實驗將模擬Neutron模塊的管理,通過虛擬機結合Libvirt及OpenvSwitch等軟件的結合模擬出Openstack中Compute節(jié)點與Network節(jié)點中的云主機之間的相互通信,通信方式為gre,并且通過namespace模擬私有網(wǎng)絡互訪,如圖4所示。
實驗使用virtualbox和centos6.5作為基本環(huán)境,需要用virtualbox建立兩個host-only類型的虛擬網(wǎng)絡Net0和Net1,并且在虛擬機中裝好Libvirt、OpenvSwitch等相關的包。
圖4 模擬通信結構圖
然后啟動兩個虛擬機VM1和VM2,虛擬機對應的配置如下
除以上配置外,為了方便虛擬機聯(lián)網(wǎng),我們都給虛擬機額外配置了一張NAT網(wǎng)卡用來訪問互聯(lián)網(wǎng)。
(1)在Network node上創(chuàng)建一個網(wǎng)橋(Linux bridge)qbr1,然后再創(chuàng)建一個實例(instance1)并將其用tap設備連接到網(wǎng)橋qbr1上,然后將instance1啟動并且添加IP地址(192.168.1.11),配置網(wǎng)關。
(2)模擬Neutron的integration bridge創(chuàng)建一個內(nèi)部的網(wǎng)橋br-int并且為其添加gre隧道接口gre0,通過gre隧道連接到Compute node上的bridge上。
(3)創(chuàng)建一個veth peer來連接Linux網(wǎng)橋qbr1和內(nèi)部網(wǎng)橋br-int,這樣一條從instance1到compute node上的通道就建好了。
(4)在Compute node上實現(xiàn)類似的配置(IP為192.168.1.12),實現(xiàn)兩個模擬云主機(instance1、instance2)之間的通信。通信結果如圖5所示。
圖5 instance之間通信圖
(5)在Network node上添加一個namespace dhcp隔離網(wǎng)絡,通過tap設備連接到內(nèi)部網(wǎng)橋br-int上,然后在namespace中訪問兩個instance,實現(xiàn)互相通信。
文中深入研究了Openstack中的網(wǎng)絡模塊Neutron,剖析了模塊內(nèi)部的組成結構、相關和插件,并對模塊內(nèi)部的通信方式進行分析,總結了這種通信方式的優(yōu)勢及意義,并且通過虛擬機模擬出了Openstack中云主機的通信,主要實現(xiàn)了不同節(jié)點云主機之間通信和網(wǎng)絡命名空間與云主機之間的通信。
[1] 鄒劍鋒.基于OpenFlow的SDN組網(wǎng)技術研究[D].北京:北京郵電大學,2014.
[2] 常立偉.Quantum中多租戶隔離與網(wǎng)絡服務擴展研究[D].成都:電子科技大學,2013.
[3] 趙少卡,李立耀,黃舒嘯.基于OpenStack的虛擬網(wǎng)絡管理系統(tǒng)設計[J].福建師大福清分校學報,2014,112(2):11-15.
[4]OpenStackCloudAdministratorGuide[EB/OL]. 2015-06-17.http://docs.openstack.org/admin-guidecloud/admin-guide-cloud.pdf
[5] 李磊,李小寧,金連文.基于Openstack的科研教學云計算平臺的構建與運用[J].實驗技術與管理,2014,31 (6):127-133.
Research on the Key Technology of Neutron Based on OpenStack Cloud Platform
LI Li1,LI Jicheng1,ZHANG Chaoran1,LIU Dan1,KANG Wanyue2
(1.School of Computer Science and Technology,Changchun University of Science and Technology,Changchun 130022;2.Ministry of Industry and Information Technology,Education and Examination Center,Beijing 100040)
Cloud computing network service carrying the cloud computing platform of network construction,so network module are as one of the main modules of the cloud platform,neutron of openstack as the network management system,mainly to achieve multi tenant network isolation,enable each tenant’s network environment independent,can according to their own needs network deployment environment.This paper will analyze the working principle of the neutron module,the virtual simulation of neutron network management,using virtualization technology combined with libvirt open vswitch software,the simulation of the realization of communication between the cloud instance.
Openstack;virtualization;network
TP399
A
1672-9870(2015)06-0114-04
2015-10-22
李莉(1963-),女,教授,博士生導師,E-mail:lili@cust.edu.cn