openstack-neutron的GRE、VLAN和VXLAN網絡模式


Neutron 是 OpenStack 項目中負責提供網絡服務的組件,它基於軟件定義網絡的思想,實現了網絡虛擬化下的資源管理。Openstack常用三種網絡模式:GRE、VLAN、VXLAN.

GRE模式

在OpenStack中,所有網絡有關的邏輯管理均在Network節點中實現,例如DNS、DHCP以及路由等。Compute節點上只需要對所部屬的虛擬機提供基本的網絡功能支持,包括隔離不同租戶的虛擬機和進行一些基本的安全策略管理(即security group)。Compute節點上包括兩台虛擬機VM1和VM2,分別經過一個網橋(如qbr-XXX)連接到 br-int 網橋上。br-int 網橋再經過 br-tun 網橋(物理網絡是 GRE 實現)連接到物理主機外部網絡。對於物理網絡通過vlan來隔離的情況,則一般會存在一個br-eth網橋,替代 br-tun 網橋。

計算節點

  • 在VM1中,虛擬機的網卡實際上連接到了物理機的一個TAP設備(即A,常見名稱如tap-XXX)上,A則進一步通過VETH pair(A-B)連接到網橋qbr-XXX的端口vnet0(端口B)上,之后再通過VETH pair(C-D)連到br-int網橋上。一般C的名字格式為qvb-XXX,而D的名字格式為qvo-XXX。注意它們的名稱除了前綴外,后面的id都是一樣的,表示位於同一個虛擬機網絡到物理機網絡的連接上。之所以TAP設備A沒有直接連接到網橋br-int上,是因為OpenStack需要通過iptables實現security group的安全策略功能。目前openvswitch並不支持應用iptables規則的Tap設備。因為qbr的存在主要是為了輔助iptables來實現security group功能,有時候也被稱為firewall bridge。
  • 端口patch-tun(即端口E,端口號為1)連接到br-tun上,實現到外部網絡的隧道。 端口qvo-XXX(即端口D,端口號為2)帶有tag1,說明這個口是一個1號vlan的access端口。虛擬機發出的從該端口到達br-int的網包將被自動帶上vlan tag 1,而其他帶有vlan tag 1的網包則可以在去掉vlan tag后從該端口發出(具體請查詢vlan access端口)。這個vlan tag是用來實現不同網絡相互隔離的,比如租戶創建一個網絡(neutronnet-create),則會被分配一個唯一的vlan tag。
  • br-int在GRE模式中作為一個NORMAL交換機使用,因此有效規則只有一條正常轉發。如果兩個在同一主機上的vm屬於同一個tenant的(同一個vlan tag),則它們之間的通信只需要經過br-int即可。
    br-tun將帶有vlan tag的vm跟外部通信的流量轉換到對應的gre隧道,這上面要實現主要的轉換邏輯,Compute節點上發往GRE隧道的網包最終抵達Network節點上的br-tun.網絡節點上的規則跟Compute節點上br-tun的規則相似,完成tunnel跟vlan之間的轉換。

網絡節點

  • 網絡節點上的br-int集成網橋上掛載了很多進程來提供網絡服務,包括路由器、DHCP服務器等。這些進程不同的租戶可能都需要,彼此的地址空間可能沖突,也可能跟物理網絡的地址空間沖突,因此都運行在獨立的網絡名字空間中。 規則跟computer節點的br-int規則一致,表現為一個正常交換機。
  • 在linux中,網絡名字空間可以被認為是隔離的擁有單獨網絡棧(網卡、路由轉發表、iptables)的環境。網絡名字空間經常用來隔離網絡設備和服務,只有擁有同樣網絡名字空間的設備,才能看到彼此。 可以用ipnetns list命令來查看已經存在的名字空間。qdhcp開頭的名字空間是dhcp服務器使用的,qrouter開頭的則是router服務使用的。
  • dhcp服務是通過dnsmasq進程(輕量級服務器,可以提供dns、dhcp、tftp等服務)來實現的,該進程綁定到dhcp名字空間中的br-int的接口上。可以查看相關的進程。
  • 目前router服務(內部網絡中主機想要訪問外部互聯網的地址)的實現是通過iptables進行的。 同樣的,router服務也運行在自己的名字空間中.
  • br-ex上直接連接到外部物理網絡,一般情況下網關在物理網絡中已經存在,則直接轉發即可。

VLAN 模式

Vlan模式下的系統架構跟GRE模式下類似,需要注意的是,在vlan模式下,vlan tag的轉換需要在br-int和br-ethx兩個網橋上進行相互配合。即br-int負責從int-br-ethX過來的包(帶外部vlan)轉換為內部vlan,而br-ethx負責從phy-br-ethx過來的包(帶內部vlan)轉化為外部的vlan.

計算節點

類似GRE模式下,br-int負責租戶隔離,br-eth1負責跟計算節點外的網絡通信。 在Vlan模式下,租戶的流量隔離是通過vlan來進行的,因此此時包括兩種vlan,虛擬機在Compute Node內流量帶有的local vlan和在Compute Node之外物理網絡上隔離不同租戶的vlan。br-int和br-eth1分別對從端口int-br-eth1和phy-br-eth1上到達的網包進行vlan tag的處理。此處有兩個網,分別帶有兩個vlan tag(內部tag1對應外部tag101,內部tag2對應外部tag102)。 其中,安全組策略仍然在qbr相關的iptables上實現。

  • br-int:與GRE模式不同的是,br-int完成從br-eth1上過來流量(從口int-br-eth1到達)的vlan tag轉換.
  • br-eth1:br-eth1上負責從br-int上過來的流量(從口phy-br-eth1到達),實現local vlan到外部vlan的轉換.

網絡節點

類似GRE模式下,br-eth1收到到達的網包,int-br-eth1和phy-br-eth1上分別進行vlan轉換,保證到達br-int上的網包都是帶有內部vlan tag,到達br-eth1上的都是帶有外部vlan tag。br-ex則完成到OpenStack以外網絡的連接。

  • br-eth1主要負責把物理網絡上外部vlan轉化為local vlan。
  • br-int上掛載了大量的agent來提供各種網絡服務,另外負責對發往br-eth1的流量,實現local vlan轉化為外部vlan。
  • dnsmasq負責提供DHCP服務,綁定到某個特定的名字空間上,每個需要DHCP服務的租戶網絡有自己專屬隔離的DHCP服務(圖中的tapXXX和tapWWW上各自監聽了一個dnsmasq)。
  • 路由是L3 agent來實現,每個子網在br-int上有一個端口(qr-YYY和qr-ZZZ,已配置IP,分別是各自內部子網的網關),L3 agent綁定到上面。要訪問外部的公共網絡,需要通過L3 agent發出,而不是經過int-br-ex到phy-br-ex(實際上並沒有網包從這個veth pair傳輸)。如果要使用外部可見的floating IP,L3 agent仍然需要通過iptables來進行NAT。
  • br-ex要做的事情很簡單,只需要正常轉發即可。

VXLAN模式

VXLAN 模式下,網絡的架構跟 GRE 模式類似,所不同的是,不同節點之間通過 VXLAN 隧道互通,即虛擬化層是采用的 VXLAN 協議。

計算節點

計算節點上運行着虛擬機。如果不啟用 DVR 特性,則所有的網絡相關的服務,都在網絡節點上進行。即計算節點上的網絡只需要實現二層轉發即可。

  • br-int 規則比較簡單,作為一個正常的二層交換機使用。無論下面虛擬化層是哪種技術實現,集成網橋是看不到的,只知道根據 vlan 和 mac 進行轉發。
  • br-tun 作為虛擬化層網橋,規則就要復雜一些。 要將內部過來的網包進行合理甄別,內部帶着正確 vlan tag 過來的,從正確的 tunnel 扔出去;外面帶着正確 tunnel 號過來的,要改到對應的內部 vlan tag 扔到里面。

網絡節點

網絡節點擔負着進行網絡服務的任務,包括DHCP、路由和高級網絡服務等。一般包括三個網橋:br-tun、br-int 和 br-ex。

  • br-tun 跟計算節點類似,作為虛擬化層網橋。 要將內部過來的網包進行合理甄別,內部帶着正確 vlan tag過來的,從正確的 tunnel 扔出去;外面帶着正確 tunnel 號過來的,要改到對應的內部 vlan tag 扔到里面。
  • br-int 是集成網橋,規則比較簡單,作為一個正常的二層交換機使用。無論下面虛擬化層是哪種技術實現,集成網橋是看不到的,只知道根據 vlan 和 mac 進行轉發。
  • br-ex 核心接口有兩個,一個是掛載的物理接口上,如 eth0,網包將從這個接口發送到外部網絡上;另外一個是 qg-xxx 這樣的接口,是連接到 router 服務的網絡名字空間中,里面綁定一個路由器的外部IP,作為 NAT 時候的地址,另外,網絡中的 floating IP 也放在這個網絡名字空間中。網橋的規則也很簡單,作為一個正常的二層轉發設備即可。

參考文檔


免責聲明!

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



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