李莉,李紀成,張超然,劉丹,康琬悅
(1.長春理工大學 計算機科學技術學院,長春 130022;2.工業和信息化部 教育與考試中心,北京 100040)
基于OpenStack云平臺Neutron關鍵技術研究
李莉1,李紀成1,張超然1,劉丹1,康琬悅2
(1.長春理工大學計算機科學技術學院,長春130022;2.工業和信息化部教育與考試中心,北京100040)
云計算的網絡服務承載著整個云計算平臺的網絡構建,因此網絡模塊都作為云平臺主要模塊之一,OpenStack中的Neutron模塊作為網絡管理系統,主要實現多租戶情況下的網絡隔離,使每個租戶的網絡環境獨立,可以根據自己的需求部署網絡環境。本文將分析Neutron模塊的工作原理,利用虛擬化模擬Neutron的網絡管理,運用虛擬化技術結合Libvirt 與Open vSwitch等軟件,模擬實現類似云主機之間的通信。
Openstack;虛擬化;網絡
自2008年以來,云計算的發展突飛猛進,已經成為IT行業領軍技術之一。近幾年云計算更是應用到了國家各項基礎設施服務中,軍事、銀行、大型電商以及一些政府機關部門也都隨著云計算的浪潮迅速發展。
在Google、Amazon和IBM等互聯網巨頭公司的帶領下,云計算市場可謂是風生水起,Openstack就是在這樣環境下誕生,作為一個開源的基礎設施及服務(Infrastructure as a Service)的云計算平臺,Openstack得到了廣大互聯企業的大力支持,從2010年開始至今已經發展成為全球最受歡迎的開源云平臺。
Openstack是2010年NASA與Rackspace一起開發的開源項目,實現了類似亞馬遜EC2和S3基礎設施服務,作為一個開源的基礎設施及服務的云計算平臺,任何企業和個人都能參與開發。Openstack支持大部分云環境,并且具有簡單、豐富、統一及可擴展特性,使其深受廣大互聯網企業的歡迎。至今已經有169家機構和1500名開發者為其貢獻代碼。2013年paypal將其一萬臺服務器上的VMware遷移到Openstack平臺,2014年沃爾瑪也將旗下所有的電商業務遷移到了Openstack上。
Openstack的最新版由Nova、Glance、Cinder、Keystone、Horizon、Netron等六個核心模塊組成,這些模塊包含了IaaS云平臺的基本服務功能:資源管理、存儲服務、鏡像管理、身份驗證、Web界面管理和網絡管理。
Neutron在Openstack中負責網絡管理,在早期的版本中,Openstack通過Nova模塊中的Nova-Network組件對網絡資源進行管理。在F版本之后,Openstack將該組件提取出來單獨形成一個項目Quantum,隨后發展成現在的Neutron。Neutron允許用戶創建和加入網絡接口,提供網絡連接即服務(Network-Connectivity-as-a-Service)。
Neutron網絡服務分為以下幾個部分,如圖1所示。負責接收請求的Neutron-server,負責插入端口、創建網絡拓撲、提供IP地址的agent和plug-in以及用于組件間通信的消息隊列。Neutron通常與Nova服務交互,為虛擬機提供網絡連接服務[1]。

圖1 Neutron組件架構圖
相對于整個Openstack來說,Neutron處于系統平臺的位置,來提供配置命令和參數的審查,并且將網絡功能組織起來;Neutron是一個抽象的架構,通過提供各種API來構筑租戶的網絡拓撲及配置網絡負載策略,而且支持插件構建自定義網絡,但是Neutron本身不提供任何網絡功能,Neutron的網絡功能中除DHCP和L3-agent等部分功能外,絕大部分是由Plugin提供的[2]。根據Neutron提供的API,租戶可以自定義的網絡連接和云解決方案,使運營商可以為他們的云網絡配置不同的網絡技術。Neutron還提供了一個API來配置和管理各種網絡服務的范圍從L3轉發和NAT負載均衡到邊緣防火墻和IPSec VPN。
2.1Neutron模塊四個關鍵概念
Network:可以靈活的劃分網絡,租戶可以創建自己的網絡,在多租戶的環境下的獨立網絡環境;
Subnet:一組IP資源池,可以為租戶的instance(實例)提供類似192.168.1.0/24的私網地址,不同Subnet之間通信需要Router支持;
Port:虛擬交換機的一個端口,相當于物理交換機的接口,用來連接路Router和Subnet;
Router:與物理路由器類似,是一個可銷毀的路由選擇與轉發部件,為租戶的instance提供路由功能。
2.2Neutron體系結構組成
Neutron主要由Neutron Server守護進程、插件代理(Plugin Agent)、DHCP代理、三層代理(L3 Agent)構成,并且相互之間通過消息隊列進行通信[3],如圖2所示。

圖2 Neutron體系結構圖
Neutron Server:由守護進程和一些plugin構成,主要分布在控制節點和網絡節點,網絡服務器使用Neutron-server守護進程來暴露API,配置管理網絡插件(Plugin),并把API的請求傳給網絡插件進行后續處理。通常插件要訪問一個持久化存儲數據庫(也類似于其他Openstack服務)。插件對硬件的要求,性能特點,規模或操作工具可以有不同特性。確保配置數據及對應關系。因為網絡支持大量的插件,云管理員必須確定部署的網絡技術。
插件代理(Plugin Agent):傳統的計算機網絡通過Linux VLAN和IP表來實現一個基本的獨立模塊。Neutron提供了不同的plugin支持,虛擬網絡中的數據包由這些plugin來處理,可以根據這些plugin實現自定義的后端網絡API,一個plugin可以使用多種技術來試驗邏輯API請求,一些網絡plugin使用基本的Linux VLAN和IP表,然而其他的可能會使用L2-in-L3隧道或OpenFlow等先進的技術來達到同等效果。部署在計算、網絡節點上。
DHCP代理(DHCP Agent):DHCP服務代理與所有現有的插件兼容,主要為租戶私有網絡提供DHCP功能,所有需要DHCP功能的虛擬機都可以通過DHCP自動接收IP地址。部署在網絡節點上[4]。
三層代理(L3 Agent):為租戶網絡上主機提供L3/NAT轉發以及外部網絡訪問,需要一些plugin的支持,目前Big Switch/floodlight plugin已經內置了L3功能。部署網絡節點上[5]。
3.1計算節點
從instance里發出的packet經過通過linux bridge中的虛擬網卡eth0連接到tap設備上,tap設備在openvswitch虛擬化出的網橋br-int上然后通過patch-tun端口連接到通道網橋br-tun,br-tun也是openvswitch虛擬化出來的網橋,與br-int對應,同時具有穿透功能,可以使多個計算節點上的vm連接在同一虛擬交換機上。br-tun本身不作為交換機,而是構成一個同一通信層,使網絡節點與計算節點、計算節點與計算節點形成一個以GRE為基礎的點對點的通信網絡,以此為基礎進行數據交換。
3.2網絡節點
網絡節點上也存在一對這樣的設備:br-tun和br-int,與計算節點上一樣,這里的br-tun也是為了整個系統構建統一通信層而存在,br-int主要起交換機作用通過兩個tap設備qr<n>和tap與namspace-router和dhcp相連接,分別承擔router和dhcp功能,l3-agent根據網絡管理創建router用來綁定子網管理子網的路由功能,路由功能則依靠namespace(命名空間)的iptables來實現。同時l3-agent針對特定的子網創建dhcp功能,l3-agent會在此namespace中啟動dnsmasq進程,用來管理子網的dhcp功能。目前這兩個namespace通常成對出現在openstack云平臺中,來用于管理特定的子網。
3.3外網通信
外部網橋(br-ex)的網絡,當數據包從br-int bridge出來時候,通過brige里面網口qr<n>經過L3-Agent連接到br-ex的qb<n>網口上,br-ex混雜模式加載在物理網卡eth2上,因此br-ex接收的數據包可以直接通過eth2發送到Internet里。這樣計算節點上擁有float-ip的VM可以自由與外部網絡進行通信。

圖3 Neutron網絡路線圖
本次實驗將模擬Neutron模塊的管理,通過虛擬機結合Libvirt及OpenvSwitch等軟件的結合模擬出Openstack中Compute節點與Network節點中的云主機之間的相互通信,通信方式為gre,并且通過namespace模擬私有網絡互訪,如圖4所示。
實驗使用virtualbox和centos6.5作為基本環境,需要用virtualbox建立兩個host-only類型的虛擬網絡Net0和Net1,并且在虛擬機中裝好Libvirt、OpenvSwitch等相關的包。

圖4 模擬通信結構圖
然后啟動兩個虛擬機VM1和VM2,虛擬機對應的配置如下

除以上配置外,為了方便虛擬機聯網,我們都給虛擬機額外配置了一張NAT網卡用來訪問互聯網。
(1)在Network node上創建一個網橋(Linux bridge)qbr1,然后再創建一個實例(instance1)并將其用tap設備連接到網橋qbr1上,然后將instance1啟動并且添加IP地址(192.168.1.11),配置網關。
(2)模擬Neutron的integration bridge創建一個內部的網橋br-int并且為其添加gre隧道接口gre0,通過gre隧道連接到Compute node上的bridge上。
(3)創建一個veth peer來連接Linux網橋qbr1和內部網橋br-int,這樣一條從instance1到compute node上的通道就建好了。
(4)在Compute node上實現類似的配置(IP為192.168.1.12),實現兩個模擬云主機(instance1、instance2)之間的通信。通信結果如圖5所示。

圖5 instance之間通信圖
(5)在Network node上添加一個namespace dhcp隔離網絡,通過tap設備連接到內部網橋br-int上,然后在namespace中訪問兩個instance,實現互相通信。
文中深入研究了Openstack中的網絡模塊Neutron,剖析了模塊內部的組成結構、相關和插件,并對模塊內部的通信方式進行分析,總結了這種通信方式的優勢及意義,并且通過虛擬機模擬出了Openstack中云主機的通信,主要實現了不同節點云主機之間通信和網絡命名空間與云主機之間的通信。
[1] 鄒劍鋒.基于OpenFlow的SDN組網技術研究[D].北京:北京郵電大學,2014.
[2] 常立偉.Quantum中多租戶隔離與網絡服務擴展研究[D].成都:電子科技大學,2013.
[3] 趙少卡,李立耀,黃舒嘯.基于OpenStack的虛擬網絡管理系統設計[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