OpenStack網絡介紹

OpenStack網絡介紹服務器

 

 

OpenStack裏面的網絡相對複雜、常常有人對幾個網絡概念搞混淆。所以,本文對OpenStack裏面的Provider network 和 Tenant network 的概念及二者之間區別進行說明。網絡

 

  1. 1.      Network

根據建立網絡的用戶的權限,Neutron network 能夠分爲如下兩種:ide

Provider network管理員建立的和物理網絡有直接映射關係的虛擬網絡。測試

Tenant network租戶普通用戶建立的網絡,物理網絡對建立者透明,其配置由 Neutron根據管理員在系統中的配置決定。路由

 

根據網絡的類型,Neutron network 能夠分爲如下五種:io

VLAN network(虛擬局域網) 基於物理 VLAN 網絡實現的虛擬網絡。共享同一個物理網絡的多個 VLAN 網絡是相互隔離的,甚至可使用重疊的 IP 地址空間。每一個支持 VLAN network 的物理網絡能夠被視爲一個分離的 VLAN trunk,它使用一組獨佔的 VLAN ID。有效的 VLAN ID 範圍是 1 到 4094。class

Flat network基於不使用 VLAN 的物理網絡實現的虛擬網絡。每一個物理網絡最多隻能實現一個虛擬網絡。擴展

local network(本地網絡):一個只容許在本服務器內通訊的虛擬網絡,不知道跨服務器的通訊。主要用於單節點上測試。配置

GRE network (通用路由封裝網絡):一個使用 GRE 封裝網絡包的虛擬網絡。GRE 封裝的數據包基於 IP 路由表來進行路由,所以 GRE network 不和具體的物理網絡綁定。network

VXLAN network(虛擬可擴展網絡):基於 VXLAN 實現的虛擬網絡。同 GRE network 同樣, VXLAN network 中 IP 包的路由也基於 IP 路由表,也不和具體的物理網絡綁定。

 

  1. 2.      Provider network

Provider Network 是由 OpenStack 管理員建立的,和物理網絡的某段直接映射。這種網絡是能夠在多個租戶之間共享的。

 雖然能夠建立 GRE 和 VXLAN 類型的 Provider network, 可是Provider network 只對 Flat 和 VLAN 類型的網絡纔有意義,由於 Provider network 的一個重要屬性是 provider:physical_network,而這個參數對其餘網絡類型沒有有意義。

 

  1. 3.      Tenant network

Tenant network 是由 tenant 的普通用戶建立的網絡。默認狀況下,這類用戶不能建立共享的 tenant network(所以Nuetron Server 的policy設置了"create_network:shared": "rule:admin_only"。),所以這種網絡是徹底隔離的,也不能夠被別的 tenant 共享。

Tenant network 也有 local,flat,vlan,gre 和 vxlan 等類型。可是,tenant 普通用戶建立的 Flat 和 VLAN tenant network 實際上仍是 Provider network,因此真正有意義的是 GRE 和 VXLAN 類型,這種網絡和物理網絡沒有綁定關係。


  1. 4.      Provider Network Tenant Network 的區別

有如下幾個區別:

l  Provider network 是由 Admin 用戶建立的,而 Tenant network 是由 tenant 普通用戶建立的。

l  Provider network 和物理網絡的某段直接映射,好比對應某個 VLAN,所以須要預先在物理網絡中作相應的配置。而 tenant network 是虛擬化的網絡,Neutron 須要負責其路由等三層功能。

l  對 Flat 和 VLAN 類型的網絡來講,只有 Provider network 纔有意義。即便是這種類型的 tenant network,其本質上也是對應於一個實際的物理段。

l  對 GRE 和 VXLAN 類型的網絡來講,只有 tenant network 纔有意義,由於它自己不依賴於具體的物理網絡,只是須要物理網絡提供 IP 和 組播便可。

l  Provider network 根據 admin 用戶輸入的物理網絡參數建立;而 tenant work 由 tenant 普通用戶建立,Neutron 根據其網絡配置來選擇具體的配置,包括網絡類型,物理網絡和 segmentation_id。X`

l  建立 Provider network 時容許使用不在配置項範圍內的 segmentation_id。