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