Neutron 的設(shè)計目標是實現(xiàn)“網(wǎng)絡(luò)即服務(wù)”,為了到達這1目標,在設(shè)計上遵守了基于“軟件定義網(wǎng)絡(luò)”實現(xiàn)網(wǎng)絡(luò)虛擬化的原則,在實現(xiàn)上充分利用了 Linux 系統(tǒng)上的各種網(wǎng)絡(luò)相干的技術(shù)。理解了 Linux 系統(tǒng)上的這些概念將有益于快速理解 Neutron 的原理和實現(xiàn)。
3節(jié)點(控制節(jié)點,計算節(jié)點,網(wǎng)絡(luò)節(jié)點)部署模式
Vlan模式與Gre模式對照
bridge:網(wǎng)橋,Linux中用于表示1個能連接不同網(wǎng)絡(luò)裝備的虛擬裝備,linux中傳統(tǒng)實現(xiàn)的網(wǎng)橋類似1個hub裝備,bridge相連的所有接口都可以收到數(shù)據(jù)包。而ovs管理的網(wǎng)橋1般類似交換機。
br-int:bridge-integration,綜合網(wǎng)橋,經(jīng)常使用于表示實現(xiàn)主要內(nèi)部網(wǎng)絡(luò)功能的網(wǎng)橋。
br-ex:bridge-external,外部網(wǎng)橋,通常表示負責跟外部網(wǎng)絡(luò)通訊的網(wǎng)橋。
GRE:General Routing Encapsulation,1種通過封裝來實現(xiàn)隧道的方式。在openstack中1般是基于L3的gre,即original pkt/GRE/IP/Ethernet
VETH:虛擬ethernet接口,通常以pair的方式出現(xiàn),1端發(fā)出的網(wǎng)包,會被另外一端接收,可以構(gòu)成兩個網(wǎng)橋之間的通道。虛擬網(wǎng)絡(luò)對VETH,實現(xiàn)了不同虛擬網(wǎng)絡(luò)的聯(lián)通。
qvb:neutron veth, Linux Bridge-side
qvo:neutron veth, OVS-side
TAP裝備:摹擬1個2層的網(wǎng)絡(luò)裝備,可以接受和發(fā)送2層網(wǎng)包。
TUN裝備:摹擬1個3層的網(wǎng)絡(luò)裝備,可以接受和發(fā)送3層網(wǎng)包。
iptables:Linux 上常見的實現(xiàn)安全策略的防火墻軟件。
Vlan:虛擬 Lan,同1個物理 Lan 下用標簽實現(xiàn)隔離,可用標號為1⑷094。
VXLAN:1套利用 UDP 協(xié)議作為底層傳輸協(xié)議的 Overlay 實現(xiàn)。1般認為作為 VLan 技術(shù)的延伸或替換者。
namespace:用來實現(xiàn)隔離的1套機制,不同 namespace 中的資源之間彼此不可見。
對Neutron來講,在Havana版本前,支持Linux Bridge和Openvswitch兩種插件。后來發(fā)現(xiàn)直接通過Neutron去調(diào)用插件的方式,有些不夠理想。
在H版本以后,社區(qū)就推出1個Neutron插件 Modular Layer 2 (ml2) plugin,這個插件底下調(diào)用linux bridge和ovs兩個Driver。
1. local
2. flat
3. vlan
4. vxlan
5. GRE (linux bridge 不支持)
那末這5種網(wǎng)絡(luò)里,local網(wǎng)絡(luò),主要是用于測試,GRE網(wǎng)絡(luò),目前社區(qū)已基本處于保護,大家基本也能夠不斟酌。所以大家只需要了解其中3種就能夠。
類似于各個計算、存儲節(jié)點被虛擬化為計算、存儲資源池,Openstack所在的全部物理網(wǎng)絡(luò)在Neutron中也被虛擬化為網(wǎng)絡(luò)資源池。通過對網(wǎng)絡(luò)資源的劃分和可擴大性,Neutron能夠為每一個租戶提供獨立的虛擬網(wǎng)絡(luò)環(huán)境。
1)位于最上層的Neutron Server充當1個門派中的“掌門人”角色(RESTful Server),負責接受來自外部門派(項目)的API要求,比如Nova API創(chuàng)建網(wǎng)絡(luò)的要求。
2)位于中間層的Neutron plugin充當1個門派中的“信使”角色,負責轉(zhuǎn)達最高層指令給下面的人。
3)位于下層的Neutron Agent充當1個門派中“干活”角色,負責履行1些具體的任務(wù)和操作。
1)neutron-server作為Neutron中的唯逐一個服務(wù)進程,承當著接受用戶REST API要求并分發(fā)處理的任務(wù)。
2)Exten API :L3( router)、L4(tcp/udp firewall)及L7(load balancer)
3)neutron-server(相當于REST API Server)負責將收到的REST API要求交由Plugin來進行相干處理。可以看出,這其實就是1個web服務(wù)器要完成的事情,將http要求轉(zhuǎn)化為對資源的操作(通過plugin的方法調(diào)用),并返回響應。
Neutron分別提供了2層(L2)vSwitch交換和3層(L3)Router路由抽象的功能,對應于物理網(wǎng)絡(luò)環(huán)境中的交換機和路由器實現(xiàn)。具體實現(xiàn)了以下功能:
1) Router:為租戶提供路由、NAT等服務(wù)。
2)Network:對應于1個真實物理網(wǎng)絡(luò)中的2層局域網(wǎng)(VLAN),從租戶的的角度而言,是租戶私有的。
3) Subnet:為網(wǎng)絡(luò)中的3層概念,指定1段IPV4或IPV6地址并描寫其相干的配置信息。它附加在1個2層Network上,指明屬于這個network的虛擬機可以使用的IP地址范圍。
Neutron中最為核心的工作便是對2層物理網(wǎng)絡(luò)network的抽象與管理。
虛擬機的網(wǎng)絡(luò)功能由虛擬網(wǎng)卡(vNIC)提供,Hypervisor可以為每一個虛擬機創(chuàng)建1個或多個vNIC,從虛擬機的角度動身,這些vNIC同等于物理的網(wǎng)卡,為了實現(xiàn)與傳統(tǒng)物理網(wǎng)絡(luò)1樣的網(wǎng)絡(luò)功能,與物理網(wǎng)卡1樣,Switch也被虛擬化成虛擬交換機(OpenvSwitch),各個vNIC連接在vSwitch的端口(br-int)上,最后這些vSwitch通過物理服務(wù)器的物理網(wǎng)卡訪問外部的物理網(wǎng)絡(luò)。
對1個虛擬的2層網(wǎng)絡(luò)結(jié)構(gòu)而言,主要是完成兩種網(wǎng)絡(luò)裝備的虛擬化,即物理網(wǎng)卡和交換裝備。在Linux環(huán)境下網(wǎng)絡(luò)裝備的虛擬化主要有以下幾種情勢:
TAP/TUN/VETH
提到Neutron的虛擬網(wǎng)絡(luò)功能實現(xiàn),不能不先提基于Linux內(nèi)核級的虛擬裝備。
TAP/TUN/VETH是Linux內(nèi)核實現(xiàn)的1對虛擬網(wǎng)絡(luò)裝備,TAP工作在2層,收發(fā)的是 MAC 層數(shù)據(jù)幀;TUN工作在3層,收發(fā)的是 IP 層數(shù)據(jù)包。Linux 內(nèi)核通過TAP/TUN裝備向綁定該裝備的用戶程序發(fā)送數(shù)據(jù),反之,用戶程序也能夠像操作硬件網(wǎng)絡(luò)裝備1樣,通過TAP/TUN裝備接收數(shù)據(jù)。
基于TAP裝備,實現(xiàn)的是虛擬網(wǎng)卡的功能,當1個TAP裝備被創(chuàng)建時,在Linux的裝備文件目錄下將會生成1個對應的字符裝備文件(/dev/tapX文件),而運行其上的用戶程序即可以像使用普通文件1樣打開這個文件進行讀寫。
VETH裝備總是成對出現(xiàn)的,接收數(shù)據(jù)的1端會從另外一端發(fā)送出去,理解為1根虛擬的網(wǎng)線便可。
Linux Bridge
Linux Bridge(Linux內(nèi)核實現(xiàn)的網(wǎng)橋)是工作在2層的虛擬網(wǎng)絡(luò)裝備,功能類似于物理的交換機。
它的實現(xiàn)原理是,通過將其他Linux網(wǎng)絡(luò)裝備綁定到本身的Bridge上,并將這些裝備虛擬化為端口。為何我們已有了OVS,還要有Linux Bridge 呢?這是由于Linux Bridge實現(xiàn)了qbrxxx裝備,提供了OVS沒法支持的安全組(Security Group)功能。
Open vSwitch
對云計算中的虛擬網(wǎng)絡(luò)而言,交換裝備的虛擬化是很關(guān)鍵的1環(huán),vSwitch負責連接vNIC與物理網(wǎng)卡,同時也橋接同1物理服務(wù)器內(nèi)的各個VM的vNIC。
因此,我們可以像配置物理交換機1樣,將接入到OpenvSwitch(需要指出的是在多個以上時,vSwitch是散布式虛擬交換機)上的各個VM分配到不同的VLAN中實現(xiàn)網(wǎng)絡(luò)隔離,并且,我們也能夠在OVS端口上為VM配置QOS,同時OVS也支持包括NetFlow、sFlow等標準的管理接口和協(xié)議。從而,通過這些接口可以實現(xiàn)VM流量監(jiān)控的任務(wù)。
運行在云環(huán)境中各種或相同虛擬化平臺上的多個vSwitch實現(xiàn)了散布式架構(gòu)的虛擬交換機。1個物理服務(wù)器上的vSwitch可以透明的與其他服務(wù)器上的vSwitch連接通訊。
neutron具體技術(shù)實現(xiàn)
上一篇 spark之RDD