1. 程式人生 > >Neutron總結-OpenStack中的網絡隔離 ----轉載

Neutron總結-OpenStack中的網絡隔離 ----轉載

network mark 控制 pos 交換 徹底 抽象 AS targe

前言

最近,關於xx公有雲的用戶網絡,由於隔離問題引發安全討論,大家頓時對啥“經典網絡”、“VPC”等概念興趣大增,大家的熱議中多次提到AWS的VPC,亞馬遜的AWS怎麽搞的,我們不得而知,但是我們可以聊聊OpenStack的,畢竟它一直在模仿AWS嘛。

“隔離”啥

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

我們知道,計算機網絡,是分層實現的,不同協議工作在不同層,這些層的設計、制定都有國際標準,按著OSI的分層模型,共有七個層,大家在討論的隔離,通常指的是第2層,也叫“數據鏈路層”。

數據鏈路層的網絡包,也叫“幀”,我們常說的網卡的MAC地址,就是幀的地址,MAC,其實是“媒體訪問控制”(media access control)的簡稱,這是數據鏈路層的一個子層。

那為什麽要在這個二層上搞隔離呢?
因為二層的幀,其中一些幀的地址是廣播地址,在同一個二層的設備都可以、也必須接收這些幀,交換機一般認為工作在二層,對這些廣播包,也都要轉發,所以二層通常被稱為一個“廣播域”,這就好比大家在一個教室裏,都能互相看到,除非分隔到不同的教室。

OpenStack的玩法

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

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

從網上找了個示意圖:
技術分享圖片
這種”平坦“的大二層網絡,雖然實現、管理相對簡單,但也會有諸多問題,除了安全方面,還有廣播風暴等問題。

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

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

示意圖大概這樣:
技術分享圖片
這就好比把整個學校的人,從大禮堂,分隔到了不同的教室,同一個教室的人互相可見,不同教室的人不可見。

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

OverLay網絡
overlay(覆蓋)網絡,所謂”覆蓋“,大體上指”在一層上面覆蓋另一層,也可以說是用一層載著另一層移動“,VXLAN是最常見的協議,它是把虛擬機的二層的幀,在宿主機上用UDP包裹起來,然後以宿主機的IP,必要的話,經過3層的路由,到達目的宿主機,然後再解封,把內包裹的二層幀,輸送給目的虛擬機。

有點抽象?我們先看看VXLAN的包結構,就知道”包裹“是啥意思了:
技術分享圖片
那個”Inner Frame“就是被包裹的虛擬機的二層的包。

最終封裝完的包,外層的源IP、目的IP地址,都是宿主機的,所以只要宿主機之間互通(3層可達),被封裝的內層幀就可以被運輸:
技術分享圖片

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

主要的:

  1. vxlan的範圍足夠大,一千六百多萬,租戶隨便用
  2. 因為是完全隔離的,租戶可以隨意定義自己的網絡,哪怕和其他租戶的IP段重疊都沒有關系,比如上圖中,租戶A的網絡,與租戶B的網絡
  3. 如果通過一定技術實現支持3層路由器,租戶可以將自己的網絡,隨意組織自己的網絡拓撲,比如上圖中,租戶A的兩個網絡,連接到一個路由器(可以是虛擬的)上

關於上面提的第三點,在neutron中大概是這樣的:
技術分享圖片

VPC

最後,那到底啥是VPC呢?
很明確的告訴你,上面這個圖就是VPC!
VPC(virtual private cloud),不是個技術專有名詞,而是亞馬遜AWS創造的一個產品層面的名詞。
租戶網絡徹底隔離、IP段都能重疊、路由器、網絡拓撲都能由自己定義,這還不是”虛擬私有雲“嗎!

原文鏈接:https://addops.cn/post/network-isolation-in-openstack.html

Neutron總結-OpenStack中的網絡隔離 ----轉載