天天看點

Neutron總結-OpenStack中的網絡隔離

首先,我們先搞清楚,所謂“隔離”,到底是在“隔”什麼。

資料鍊路層的網絡包,也叫“幀”,我們常說的網卡的mac位址,就是幀的位址,mac,其實是“媒體通路控制”(media access control)的簡稱,這是資料鍊路層的一個子層。

那為什麼要在這個二層上搞隔離呢?

因為二層的幀,其中一些幀的位址是廣播位址,在同一個二層的裝置都可以、也必須接收這些幀,交換機一般認為工作在二層,對這些廣播包,也都要轉發,是以二層通常被稱為一個“廣播域”,這就好比大家在一個教室裡,都能互相看到,除非分隔到不同的教室。

openstack的neutron負責為虛拟機提供網絡,而且openstack是假設多租戶的,那多租戶之間的隔離問題,它當然要提供支援,下面我們就看一下neutron是怎麼實作的。

平坦網絡

neutron中建立的網絡是有“type”的,其中最基礎的一種type就是“flat”,顧名思義,“平坦”就是指都在一個空間下,也就是沒有做二層上的隔離,虛拟機都在同一個二層,同一個廣播域。

從網上找了個示意圖:

Neutron總結-OpenStack中的網絡隔離

這種”平坦“的大二層網絡,雖然實作、管理相對簡單,但也會有諸多問題,除了安全方面,還有廣播風暴等問題。

單個大二層網絡,就好比整個學校的人都在一個大禮堂,大家都能看到,而且萬一誰得了傳染病,大家都被傳染,要想隔離,可以把人分散到各個教室。

vlan隔離網絡

neutron中建立”vlan“這種類型的網絡,就是主要使用的二層隔離方案,vlan(虛拟區域網路)本身就是交換機廣泛使用的二層隔離技術。

示意圖大概這樣:

Neutron總結-OpenStack中的網絡隔離

這就好比把整個學校的人,從大禮堂,分隔到了不同的教室,同一個教室的人互相可見,不同教室的人不可見。

但這種方案也有一定的局限性,首先管理相對麻煩,需要配合設定實體交換機,另外vlan的可用數量有限制,vlan的id号僅有四千多個,我們假設每個租戶配置設定1個vlan,那最多也就能支援四千多個租戶。

overlay網絡

overlay(覆寫)網絡,所謂”覆寫“,大體上指”在一層上面覆寫另一層,也可以說是用一層載着另一層移動“,vxlan是最常見的協定,它是把虛拟機的二層的幀,在主控端上用udp包裹起來,然後以主控端的ip,必要的話,經過3層的路由,到達目的主控端,然後再解封,把内包裹的二層幀,輸送給目的虛拟機。

有點抽象?我們先看看vxlan的包結構,就知道”包裹“是啥意思了:

Neutron總結-OpenStack中的網絡隔離

那個”inner frame“就是被包裹的虛拟機的二層的包。

最終封裝完的包,外層的源ip、目的ip位址,都是主控端的,是以隻要主控端之間互通(3層可達),被封裝的内層幀就可以被運輸:

Neutron總結-OpenStack中的網絡隔離

那這種方案有什麼優點呢?

主要的:

vxlan的範圍足夠大,一千六百多萬,租戶随便用

因為是完全隔離的,租戶可以随意定義自己的網絡,哪怕和其他租戶的ip段重疊都沒有關系,比如上圖中,租戶a的網絡,與租戶b的網絡

如果通過一定技術實作支援3層路由器,租戶可以将自己的網絡,随意組織自己的網絡拓撲,比如上圖中,租戶a的兩個網絡,連接配接到一個路由器(可以是虛拟的)上

關于上面提的第三點,在neutron中大概是這樣的:

Neutron總結-OpenStack中的網絡隔離

最後,那到底啥是vpc呢?

很明确的告訴你,上面這個圖就是vpc!

vpc(virtual private cloud),不是個技術專有名詞,而是亞馬遜aws創造的一個産品層面的名詞。

租戶網絡徹底隔離、ip段都能重疊、路由器、網絡拓撲都能由自己定義,這還不是”虛拟私有雲“嗎!

繼續閱讀