Neutron 網絡基本概念 - 天天5分鐘玩轉 OpenStack(66)

image494.5.png

上次咱們討論了 Neutron 提供的功能,今天咱們學習 Neutron 模塊幾個重要的概念。網絡

Neutron 管理的網絡資源包括 Network,subnet 和 port,下面依次介紹。架構

network

network 是一個隔離的二層廣播域。Neutron 支持多種類型的 network,包括 local, flat, VLAN, VxLAN 和 GRE。學習

local
local 網絡與其餘網絡和節點隔離。local 網絡中的 instance 只能與位於同一節點上同一網絡的 instance 通訊,local 網絡主要用於單機測試。測試

flat
flat 網絡是無 vlan tagging 的網絡。flat 網絡中的 instance 能與位於同一網絡的 instance 通訊,而且能夠跨多個節點。spa

vlan
vlan 網絡是具備 802.1q tagging 的網絡。vlan 是一個二層的廣播域,同一 vlan 中的 instance 能夠通訊,不一樣 vlan 只能經過 router 通訊。vlan 網絡能夠跨節點,是應用最普遍的網絡類型。router

vxlan
vxlan 是基於隧道技術的 overlay 網絡。vxlan 網絡經過惟一的 segmentation ID(也叫 VNI)與其餘 vxlan 網絡區分。vxlan 中數據包會經過 VNI 封裝成 UPD 包進行傳輸。由於二層的包經過封裝在三層傳輸,可以克服 vlan 和物理網絡基礎設施的限制。資源

gre
gre 是與 vxlan 相似的一種 overlay 網絡。主要區別在於使用 IP 包而非 UDP 進行封裝。路由

不一樣 network 之間在二層上是隔離的。
以 vlan 網絡爲例,network A 和 network B 會分配不一樣的 VLAN ID,這樣就保證了 network A 中的廣播包不會跑到 network B 中。固然,這裏的隔離是指二層上的隔離,藉助路由器不一樣 network 是可能在三層上通訊的。io

network 必須屬於某個 Project( Tenant 租戶),Project 中能夠建立多個 network。 network 與 Project 之間是 1對多 關係。基礎

subnet

subnet 是一個 IPv4 或者 IPv6 地址段。instance 的 IP 從 subnet 中分配。每一個 subnet 須要定義 IP 地址的範圍和掩碼。

subnet 與 network 是 1對多 關係。一個 subnet 只能屬於某個 network;一個 network 能夠有多個 subnet,這些 subnet 能夠是不一樣的 IP 段,但不能重疊。下面的配置是有效的:

network A       subnet A-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}
                subnet A-b: 10.10.2.0/24  {"start": "10.10.2.1", "end": "10.10.2.50"}

但下面的配置則無效,由於 subnet 有重疊

networkA        subnet A-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}
                subnet A-b: 10.10.1.0/24  {"start": "10.10.1.51", "end": "10.10.1.100"}

這裏不是判斷 IP 是否有重疊,而是 subnet 的 CIDR 重疊(都是 10.10.1.0/24)

可是,若是 subnet 在不一樣的 network 中,CIDR 和 IP 都是能夠重疊的,好比

network A       subnet A-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}

networkB        subnet B-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}

這裏你們難免會疑惑: 若是上面的IP地址是能夠重疊的,那麼就可能存在具備相同 IP 的兩個 instance,這樣會不會衝突? 簡單的回答是:不會!

具體緣由: 由於 Neutron 的 router 是經過 Linux network namespace 實現的。network namespace 是一種網絡的隔離機制。經過它,每一個 router 有本身獨立的路由表。

上面的配置有兩種結果:

  1. 若是兩個 subnet 是經過同一個 router 路由,根據 router 的配置,只有指定的一個 subnet 可被路由。

  2. 若是上面的兩個 subnet 是經過不一樣 router 路由,由於 router 的路由表是獨立的,因此兩個 subnet 均可以被路由。

這裏只是先簡單作個說明,咱們會在後面三層路由的章節詳細分析這種場景。

port

port 能夠看作虛擬交換機上的一個端口。port 上定義了 MAC 地址和 IP 地址,當 instance 的虛擬網卡 VIF(Virtual Interface) 綁定到 port 時,port 會將 MAC 和 IP 分配給 VIF。

port 與 subnet 是 1對多 關係。一個 port 必須屬於某個 subnet;一個 subnet 能夠有多個 port。

小節

下面總結了 Project,Network,Subnet,Port 和 VIF 之間關係。

Project 1 : m Network 1 : m Subnet 1 : m Port 1 : 1 VIF m : 1 Instance

下一節咱們討論 Neutron 的架構。

相關文章
相關標籤/搜索