OpenStack之Neutron網絡服務(一)


1.Neutron概要

OpenStack網絡服務提供了一個API接口,允許用戶在雲上設置和定義網絡連接和地址。這個網絡服務的項目代碼名稱是Neutron。OpenStack網絡處理虛擬設備的創建和管理網絡基礎設施,包括網絡、交換機、子網以及由計算服務(nova)管理的設備路由器。高級服務,如防火牆或虛擬私人網絡(VPN)也可以使用。

OpenStack網絡由neutron-server,持久化存儲數據庫,和任意數量的插件代理組成,這些代理提供其他服務,如與本地linux聯網接口機制、外部設備或SDN控制器。

OpenStack網絡是完全獨立的,可以部署到一個專用主機。如果你的部署使用了一個控制器主機運行集中計算組件,你可以部署網絡服務來取代主機的設定。

OpenStack網絡集成了各種組件:

  • 身份認證(Keystone)用於身份驗證以及api請求的授權。
  • 計算服務(Nova)用於把一個特定網絡插入每個虛擬機中。
  • 儀表盤(Horizon)由管理員和租戶通過一個基於WEB的圖形界面創建和管理網絡。

2.Neutron內容

OpenStack網絡(neutron)管理OpenStack環境中所有虛擬網絡基礎設施(VNI),物理網絡基礎設施(PNI)的接入層。OpenStack網絡允許租戶創建包括像 firewall, :term:load balancer和 :term:virtual private network (VPN)等這樣的高級虛擬網絡拓撲。

網絡服務提供網絡,子網以及路由這些對象的抽象概念。每個抽象概念都有自己的功能,可以模擬對應的物理設備:網絡包括子網,路由在不同的子網和網絡間進行路由轉發。

對於任意一個給定的網絡都必須包含至少一個外部網絡。不像其他的網絡那樣,外部網絡不僅僅是一個定義的虛擬網絡。相反,它代表了一種OpenStack安裝之外的能從物理的,外部的網絡訪問的視圖。外部網絡上的IP地址可供外部網絡上的任意的物理設備所訪問

外部網絡之外,任何 Networking 設置擁有一個或多個內部網絡。這些軟件定義的網絡直接連接到虛擬機。僅僅在給定網絡上的虛擬機,或那些在通過接口連接到相近路由的子網上的虛擬機,能直接訪問連接到那個網絡上的虛擬機。

如果外部網絡想要訪問實例或者相反實例想要訪問外部網絡,那么網絡之間的路由就是必要的了。每一個路由都配有一個網關用於連接到外部網絡,以及一個或多個連接到內部網絡的接口。就像一個物理路由一樣,子網可以訪問同一個路由上其他子網中的機器,並且機器也可以訪問路由的網關訪問外部網絡。

另外,你可以將外部網絡的IP地址分配給內部網絡的端口。不管什么時候一旦有連接連接到子網,那個連接被稱作端口。你可以給實例的端口分配外部網絡的IP地址。通過這種方式,外部網絡上的實體可以訪問實例.

網絡服務同樣支持安全組。安全組允許管理員在安全組中定義防火牆規則。一個實例可以屬於一個或多個安全組,網絡為這個實例配置這些安全組中的規則,阻止或者開啟端口,端口范圍或者通信類型。

每一個Networking使用的插件都有其自有的概念。雖然對操作VNI和OpenStack環境不是至關重要的,但理解這些概念能幫助你設置Networking。所有的Networking安裝使用了一個核心插件和一個安全組插件(或僅是空操作安全組插件)。另外,防火牆即服務(FWaaS)和負載均衡即服務(LBaaS)插件是可用的。

3.Neutron架構

  • 位於最上層的Neutron Server充當一個門派中的“掌門人”角色(RESTful Server),負責接受來自外部門派(項目)的API請求,比如Nova API創建網絡的請求。
  • 位於中間層的Neutron plugin充當一個門派中的“信使”角色,負責傳達最高層指令給下面的人。
  • 位於下層的Neutron Agent充當一個門派中“干活”角色,負責執行一些具體的任務和操作。

類似於各個計算、存儲節點被虛擬化為計算、存儲資源池,Openstack所在的整個物理網絡在Neutron中也被虛擬化為網絡資源池。通過對網絡資源的划分和可擴展性,Neutron能夠為每個租戶提供獨立的虛擬網絡環境。

Neutron分別提供了二層(L2)vSwitch交換和三層(L3)Router路由抽象的功能,對應於物理網絡環境中的交換機和路由器實現。具體實現了如下功能:

  • Router:為租戶提供路由、NAT等服務。
  • Network:對應於一個真實物理網絡中的二層局域網(VLAN),從租戶的的角度而言,是租戶私有的。
  • Subnet:為網絡中的三層概念,指定一段IPV4或IPV6地址並描述其相關的配置信息。它附加在一個二層Network上,指明屬於這個network的虛擬機可使用的IP地址范圍。
(1)Linux虛擬網絡

Neutron中最為核心的工作便是對二層物理網絡network的抽象與管理。

虛擬機的網絡功能由虛擬網卡(vNIC)提供,Hypervisor可以為每個虛擬機創建一個或多個vNIC,從虛擬機的角度出發,這些vNIC等同於物理的網卡,為了實現與傳統物理網絡一樣的網絡功能,與物理網卡一樣,Switch也被虛擬化成虛擬交換機(OpenvSwitch),各個vNIC連接在vSwitch的端口(br-int)上,最后這些vSwitch通過物理服務器的物理網卡訪問外部的物理網絡。

對一個虛擬的二層網絡結構而言,主要是完成兩種網絡設備的虛擬化,即物理網卡和交換設備。在Linux環境下網絡設備的虛擬化主要有以下幾種形式:

1)TAP/TUN/VETH

提到Neutron的虛擬網絡功能實現,不得不先提基於Linux內核級的虛擬設備。

TAP/TUN/VETH是Linux內核實現的一對虛擬網絡設備,TAP工作在二層,收發的是 MAC 層數據幀;TUN工作在三層,收發的是 IP 層數據包。Linux 內核通過TAP/TUN設備向綁定該設備的用戶程序發送數據,反之,用戶程序也可以像操作硬件網絡設備一樣,通過TAP/TUN設備接收數據。

基於TAP設備,實現的是虛擬網卡的功能,當一個TAP設備被創建時,在Linux的設備文件目錄下將會生成一個對應的字符設備文件(/dev/tapX文件),而運行其上的用戶程序便可以像使用普通文件一樣打開這個文件進行讀寫。

VETH設備總是成對出現的,接收數據的一端會從另一端發送出去,理解為一根虛擬的網線即可。

2)Linux Bridge

Linux Bridge(Linux內核實現的網橋)是工作在二層的虛擬網絡設備,功能類似於物理的交換機。

它的實現原理是,通過將其他Linux網絡設備綁定到自身的Bridge上,並將這些設備虛擬化為端口。為什么我們已經有了OVS,還要有Linux Bridge 呢?這是因為Linux Bridge實現了qbrxxx設備,提供了OVS無法支持的安全組(Security Group)功能。

3)Open vSwitch

對於雲計算中的虛擬網絡而言,交換設備的虛擬化是很關鍵的一環,vSwitch負責連接vNIC與物理網卡,同時也橋接同一物理服務器內的各個VM的vNIC。

因此,我們可以像配置物理交換機一樣,將接入到OpenvSwitch(需要指出的是在多個以上時,vSwitch是分布式虛擬交換機)上的各個VM分配到不同的VLAN中實現網絡隔離,並且,我們也可以在OVS端口上為VM配置QOS,同時OVS也支持包括NetFlow、sFlow等標准的管理接口和協議。從而,通過這些接口可以實現VM流量監控的任務。

運行在雲環境中各種或相同虛擬化平台上的多個vSwitch實現了分布式架構的虛擬交換機。一個物理服務器上的vSwitch可以透明的與其他服務器上的vSwitch連接通信。

(2)Neutron RPC

RPC是neutron中跨模塊進行方法調用的很重要的一種方式,主要包括client端和server端。client端用於發出rpc消息,server端用於監聽消息並進行相應處理。

1)Agent 端RPC

在dhcp agent、 l3 agent、 firewall agent以及metering agent的main函數中都能找到類似的創建一個Agent rpc服務端的代碼。

2)plugin端的rpc
3)neutron-server端的rpc
(3)Neutron的核心
  • 網絡:在實際的物理環境下,我們使用交換機或集線器把多個計算機連接起來形成了網絡。在Neutron的世界里,網絡也是將多個不同的雲主機連接起來。
  • 子網:在實際的物理環境下,在一個網絡中。我們可以將網絡划分為多個邏輯子網。在Nrutron的世界里,子網也是隸屬於網絡下的。
  • 端口:在實際的物理環境下,每個子網或每個網絡,都有很多端口,比如交換機端口來供計算機連接。在Neutron的世界里端口也是隸屬於字往下,雲主機的網卡會對應到一個端口上。
  • 路由器:在實際的網絡環境下,不同網絡或不同邏輯子網之間如果需要通信,需要通過路由器進行路由。在Nrutron里路由也是這個作用,用來連接不同的網絡或子網。

4.Neutron網絡模型

1.單一平面網絡

單一平面網絡的缺點:

  • 存在單一網絡瓶頸,缺乏可伸縮性。
  • 缺乏合適的多租戶隔離。
2.多平面網絡

3.混合平面私有網絡

4.通過私有網絡實現運營商路由功能

5.通過私有網絡實現每個租戶創建自己專屬的網絡區段

5.Neutron網絡流程

虛擬實現的1層到3層(TCP/IP)整個流程

一層的服務器及其VM(由Linux Kernel創建的qbr、tap/tun、veth、iptables這些設備分別實現相應功能)→二層的網絡設備(由OpenvSwitch、dnsmasq創建的qvo、br-int、br-tun、br-ex、qrouter、qdhcp等設備分別實現相應功能)→再到,三層的傳輸程序(由patch-int/patch-tun等分別實現相應的功能)。

在Neutron虛擬網絡中,除了Neutron本身命令外,還包括了Linux Bridge的brctl命令;OpenvSwitch的ovs-vsctl、ovs-ofctl命令和L3的NameSpace的ipnetns等命令。

VM數據到外網


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM