1. 程式人生 > >OpenStack網路指南(6)OpenStack網路

OpenStack網路指南(6)OpenStack網路

OpenStack Networking允許您建立和管理其他OpenStack服務可以使用的網路物件,例如網路,子網和埠。外掛可以實現以適應不同的網路裝置和軟體,為OpenStack架構和部署提供靈活性。
網路服務(代號為neutron)提供了一個API,允許您在雲中定義網路連線和定址。網路服務使運營商能夠利用不同的網路技術為雲網絡供電。網路服務還提供了一個API來配置和管理各種網路服務,從L3轉發和NAT到負載平衡,外圍防火牆和虛擬專用網路。
它包括以下元件:
API伺服器
OpenStack Networking API包括對第2層網路和IP地址管理(IPAM)的支援,以及用於第3層路由器構造的擴充套件,實現在第2層網路和到外部網路的閘道器之間的路由。 OpenStack網路包括越來越多的外掛,使得能夠與各種商業和開源網路技術(包括路由器,交換機,虛擬交換機和軟體定義網路(SDN)控制器)實現互操作性。

OpenStack Networking外掛和代理
插入和拔出埠,建立網路或子網,並提供IP地址。所選擇的外掛和代理因特定雲中使用的供應商和技術而異。重要的是,一次只能使用一個外掛。

訊息佇列
在代理之間接受和路由RPC請求以完成API操作。訊息佇列用於在每個虛擬機器管理程式上執行的neutron伺服器和neutron代理之間的RPC的ML2外掛中,在用於Open vSwitch和Linux橋的ML2機制驅動程式中。

概念

要配置豐富的網路拓撲,您可以建立和配置網路和子網,並指示其他OpenStack服務(如Compute)將虛擬裝置連線到這些網路上的埠。 OpenStack Compute是OpenStack Networking的一個著名消費者,為其例項提供連線。 特別是,OpenStack網路支援每個專案有多個專用網路,並允許專案選擇自己的IP定址方案,即使這些IP地址與其他專案使用的IP地址重疊。 有兩種型別的網路,專案和提供商網路。 作為網路建立過程的一部分,可以在專案之間共享任何這些型別的網路。

提供商網路(Provider networks)

提供商網路向例項提供第2層連線,併為DHCP和元資料服務提供可選支援。 這些網路連線或對映到資料中心中的現有第2層網路,通常使用VLAN(802.1q)標記來識別和分離它們。
提供商網路通常以靈活性為代價提供簡單性,效能和可靠性。 預設情況下,只有管理員可以建立或更新提供商網路,因為它們需要配置物理網路基礎設施。可以使用policy.json的以下引數更改允許建立或更新提供商網路的使用者:
create_network:provider:physical_network
update_network:provider:physical_network
此外,提供商網路僅處理例項的第2層連線,因此缺乏對諸如路由器和浮動IP地址等功能的支援。
在許多情況下,已經熟悉依靠物理網路基礎設施實現第二層,第三層或其他服務的虛擬網路架構的運營商可以無縫部署OpenStack網路服務。特別地,提供商網路吸引希望從計算網路服務(nova-network)遷移到OpenStack網路服務的運營商。隨著時間的推移,運營商可以在這個最小的架構上構建更多的雲網絡功能。
一般來說,處理第三層操作的OpenStack Networking軟體元件最能影響效能和可靠性。為了提高效能和可靠性,提供商網路將第3層操作移動到物理網路基礎架構。
在一個特定的用例中,OpenStack部署駐留在具有傳統虛擬化和使用相當大的物理網路基礎設施的裸機主機的混合環境中。在OpenStack部署中執行的應用程式可能需要直接第2層訪問(通常使用VLAN)到部署外部的應用程式。

路由提供商網路

路由提供商網路向例項提供第3層連線。 這些網路對映到資料中心中的現有三層網路。 更具體地,網路對映到多個第2層段,每個段基本上是提供商網路。 每個都有連線到它的路由器閘道器,在它們之間和外部路由流量。 網路服務不提供路由。
路由提供商網路提供大規模的效能,難以通過普通提供商網路以犧牲保證的第二層連線為代價。

自助服務網路

自助服務網路主要使一般(非特權)專案能夠管理網路,而不涉及管理員。這些網路是完全虛擬的,並且需要虛擬路由器來與提供商和外部網路(例如因特網)進行互動。自助服務網路通常還向例項提供DHCP和元資料服務。
在大多數情況下,自助服務網路使用覆蓋協議,例如VXLAN或GRE,因為它們可以支援比使用VLAN標記(802.1q)的第2層分段多得多的網路。此外,VLAN通常需要物理網路基礎設施的附加配置。
IPv4自助服務網路通常使用專用IP地址範圍(RFC1918),並通過源NAT在虛擬路由器上與提供商網路互動。浮動IP地址允許通過虛擬路由器上的目標NAT從提供商網路訪問例項。 IPv6自助服務網路始終使用公有IP地址範圍,並通過具有靜態路由的虛擬路由器與提供商網路進行互動。
網路服務使用通常位於至少一個網路節點的3層代理來實現路由器。與將例項連線到第2層的物理網路基礎設施的提供商網路相反,自助服務網路必須遍歷第3層代理。因此,第3層代理或網路節點的過度訂閱或故障可能影響大量的自助服務網路和使用它們的例項。考慮實現一個或多個高可用性功能,以增加自助服務網路的冗餘和效能。
使用者為專案內的連線建立專案網路。預設情況下,它們是完全隔離的,不與其他專案共享。 OpenStack Networking支援以下型別的網路隔離和覆蓋技術。

FLAT

所有例項駐留在同一網路上,也可以與主機共享。 不會發生VLAN標記或其他網路隔離。

VLAN

網路允許使用者使用對應於物理網路中存在的VLAN的VLAN ID(802.1Q標記)建立多個提供商或專案網路。 這允許例項在整個環境中彼此通訊。 它們還可以與位於同一第2層VLAN上的專用伺服器,防火牆,負載平衡器和其他網路基礎設施進行通訊。

VXLAN和GRE

VXLAN和GRE是封裝協議,建立覆蓋網路以啟用和控制計算例項之間的通訊。 需要網路路由器以允許流量流出GRE或VXLAN專案網路之外。 還需要路由器將直接連線的專案網路與外部網路(包括Internet)連線。 路由器提供使用浮動IP地址直接從外部網路連線例項的能力。

這裡寫圖片描述

Subnets

一個IP地址塊和相關的配置狀態。 這也稱為由網路服務為專案和提供商網路提供的本地IPAM(IP地址管理)。 子網用於在網路上建立新埠時分配IP地址。

Subnet pools

終端使用者通常可以建立具有任何有效IP地址的子網,而沒有其他限制。 但是,在某些情況下,管理員或專案預先定義一個地址池是很好的,從中可以使用自動分配建立子網。
使用子網池通過要求每個子網都在定義的池內,限制可以使用的地址。 它還防止來自同一池的兩個子網的地址重用或重疊。

Ports

埠是用於將諸如虛擬伺服器的NIC的單個裝置附接到虛擬網路的連線點。 該埠還描述了相關的網路配置,例如要在該埠上使用的MAC和IP地址。

Routers

路由器在自助服務和提供商網路之間或屬於專案的自助服務網路之間提供虛擬三層服務,如路由和NAT。 網路服務使用第3層代理通過名稱空間管理路由器。

Security groups

安全組為控制入口(入站到例項)和出口(出站到例項)的埠級網路流量的虛擬防火牆規則提供一個容器。 安全組使用預設拒絕策略,並僅包含允許特定流量的規則。 每個埠可以以加法方式引用一個或多個安全組。 防火牆驅動程式將安全組規則轉換為基礎包過濾技術的配置,如iptables。
每個專案包含一個預設安全組,允許所有出口流量並拒絕所有入口流量。 您可以更改預設安全組中的規則。 如果啟動例項時未指定安全組,則預設安全組將自動應用於該例項。 類似地,如果建立埠而未指定安全組,則預設安全組將自動應用於該安全組。
安全組規則是有狀態的。因此,允許安全外殼的入口TCP埠22自動建立允許返回出口流量和涉及那些TCP連線的ICMP錯誤訊息的規則。
預設情況下,所有安全組都包含一系列執行以下操作的基本(完整性)和反欺騙規則:
- 只有在使用埠的源MAC和IP地址,源MAC和IP組合處於允許地址對,或有效MAC地址(埠或允許地址對)和關聯的EUI64鏈路-本地IPv6地址才允許出口流量。
- 允許出口DHCP發現和請求使用例項的埠的源MAC地址和未指定的IPv4地址(0.0.0.0)的訊息。
- 允許入口DHCP以及來自子網中DHCP伺服器的DHCPv6響應,以便例項可以獲取IP地址。
- 拒絕出口DHCP和DHCPv6響應,以防止例項充當DHCP(v6)伺服器。
- 允許入口/出口ICMPv6 MLD,鄰居請求和鄰居發現訊息,從而例項可以發現鄰居和加入多播組。
- 拒絕出口ICMPv6路由器通告,以防止例項充當IPv6路由器,併為其他例項轉發IPv6流量。
- 允許出口ICMPv6 MLD報告(v1和v2)和使用特定例項的源MAC地址和未指定的IPv6地址(:)的鄰居請求訊息。重複地址檢測(DAD)依賴於這些訊息。
- 允許從例項的埠的MAC地址和例項的埠上允許的地址對中的任何其他MAC地址的出站非IP流量。

雖然非IP流量,安全組不隱式允許所有ARP流量。單獨的ARP過濾規則阻止例項使用ARP攔截另一個例項的流量。您不能禁用或刪除這些規則。
您可以通過將埠屬性port_security_enabled設定為False來禁用安全組,包括基本和反欺騙規則。

Extensions

OpenStack網路服務是可擴充套件的。 擴充套件有兩個目的:它們允許在API中引入新功能,而不需要更改版本,並允許引入供應商特定的利基功能。 應用程式可以通過在/ extensions URI上執行GET以程式設計方式列出可用的擴充套件。 請注意,這是一個版本化請求; 也就是說,在一個API版本中可用的擴充套件在另一箇中可能不可用。

DHCP

可選的DHCP服務管理提供商和自助服務網路上的例項的IP地址。 Networking服務使用管理qdhcp名稱空間和dnsmasq服務的代理來實現DHCP服務。

Metadata

可選的元資料服務為例項提供API,以獲取元資料,如SSH金鑰。

服務和元件層次結構

Server

提供API,管理資料庫等

Plug-ins

管理代理

Agents

提供與例項的第2/3層連線
處理物理 - 虛擬網路轉換
處理元資料等

Layer 2 (Ethernet and Switching)

Linux Bridge
OVS

Layer 3 (IP and Routing)

L3
DHCP

Miscellaneous

Metadata

Services

VPNaaS

虛擬專用網路即服務(VPNaaS)是一種介紹VPN功能集的Neutron擴充套件。

LBaaS

負載平衡器即服務(LBaaS)API提供和配置負載平衡器。

FWaaS

防火牆即服務(FWaaS)API是一個實驗性API,可以讓早期採用者和供應商測試他們的網路實施。