簡(jiǎn)單談?wù)凮penStack中的網(wǎng)絡(luò)隔離
前言
最近,關(guān)于xx公有云的用戶(hù)網(wǎng)絡(luò),由于隔離問(wèn)題引發(fā)安全討論,大家頓時(shí)對(duì)啥“經(jīng)典網(wǎng)絡(luò)”、“VPC”等概念興趣大增,大家的熱議中多次提到AWS的VPC,亞馬遜的AWS怎么搞的,我們不得而知,但是我們可以聊聊OpenStack的,畢竟它一直在模仿AWS嘛;
“隔離”啥
首先,我們先搞清楚,所謂“隔離”,到底是在“隔”什么;
我們知道,計(jì)算機(jī)網(wǎng)絡(luò),是分層實(shí)現(xiàn)的,不同協(xié)議工作在不同層,這些層的設(shè)計(jì)、制定都有國(guó)際標(biāo)準(zhǔn),按著OSI的分層模型,共有七個(gè)層,大家在討論的隔離,通常指的是第2層,也叫“數(shù)據(jù)鏈路層”;
數(shù)據(jù)鏈路層的網(wǎng)絡(luò)包,也叫“幀”,我們常說(shuō)的網(wǎng)卡的MAC地址,就是幀的地址,MAC,其實(shí)是“媒體訪問(wèn)控制”(media access control)的簡(jiǎn)稱(chēng),這是數(shù)據(jù)鏈路層的一個(gè)子層;
那為什么要在這個(gè)二層上搞隔離呢?
因?yàn)槎拥膸?,其中一些幀的地址是廣播地址,在同一個(gè)二層的設(shè)備都可以、也必須接收這些幀,交換機(jī)一般認(rèn)為工作在二層,對(duì)這些廣播包,也都要轉(zhuǎn)發(fā),所以二層通常被稱(chēng)為一個(gè)“廣播域”,這就好比大家在一個(gè)教室里,都能互相看到,除非分隔到不同的教室;
OpenStack的玩法
openstack的neutron負(fù)責(zé)為虛擬機(jī)提供網(wǎng)絡(luò),而且openstack是假設(shè)多租戶(hù)的,那多租戶(hù)之間的隔離問(wèn)題,它當(dāng)然要提供支持,下面我們就看一下neutron是怎么實(shí)現(xiàn)的;
平坦網(wǎng)絡(luò)
neutron中創(chuàng)建的網(wǎng)絡(luò)是有“type”的,其中最基礎(chǔ)的一種type就是“flat”,顧名思義,“平坦”就是指都在一個(gè)空間下,也就是沒(méi)有做二層上的隔離,虛擬機(jī)都在同一個(gè)二層,同一個(gè)廣播域;
從網(wǎng)上找了個(gè)示意圖:

這種”平坦“的大二層網(wǎng)絡(luò),雖然實(shí)現(xiàn)、管理相對(duì)簡(jiǎn)單,但也會(huì)有諸多問(wèn)題,除了安全方面,還有廣播風(fēng)暴等問(wèn)題;
單個(gè)大二層網(wǎng)絡(luò),就好比整個(gè)學(xué)校的人都在一個(gè)大禮堂,大家都能看到,而且萬(wàn)一誰(shuí)得了傳染病,大家都被傳染,要想隔離,可以把人分散到各個(gè)教室;
VLAN隔離網(wǎng)絡(luò)
neutron中創(chuàng)建”vlan“這種類(lèi)型的網(wǎng)絡(luò),就是主要使用的二層隔離方案,VLAN(虛擬局域網(wǎng))本身就是交換機(jī)廣泛使用的二層隔離技術(shù);
示意圖大概這樣:

這就好比把整個(gè)學(xué)校的人,從大禮堂,分隔到了不同的教室,同一個(gè)教室的人互相可見(jiàn),不同教室的人不可見(jiàn);
但這種方案也有一定的局限性,首先管理相對(duì)麻煩,需要配合設(shè)置物理交換機(jī),另外VLAN的可用數(shù)量有限制,VLAN的ID號(hào)僅有四千多個(gè),我們假設(shè)每個(gè)租戶(hù)分配1個(gè)VLAN,那最多也就能支持四千多個(gè)租戶(hù);
OverLay網(wǎng)絡(luò)
overlay(覆蓋)網(wǎng)絡(luò),所謂”覆蓋“,大體上指”在一層上面覆蓋另一層,也可以說(shuō)是用一層載著另一層移動(dòng)“,VXLAN是最常見(jiàn)的協(xié)議,它是把虛擬機(jī)的二層的幀,在宿主機(jī)上用UDP包裹起來(lái),然后以宿主機(jī)的IP,必要的話,經(jīng)過(guò)3層的路由,到達(dá)目的宿主機(jī),然后再解封,把內(nèi)包裹的二層幀,輸送給目的虛擬機(jī);
有點(diǎn)抽象?我們先看看VXLAN的包結(jié)構(gòu),就知道”包裹“是啥意思了:

那個(gè)”Inner Frame“就是被包裹的虛擬機(jī)的二層的包;
最終封裝完的包,外層的源IP、目的IP地址,都是宿主機(jī)的,所以只要宿主機(jī)之間互通(3層可達(dá)),被封裝的內(nèi)層幀就可以被運(yùn)輸: 
那這種方案有什么優(yōu)點(diǎn)呢?
主要的:
vxlan的范圍足夠大,一千六百多萬(wàn),租戶(hù)隨便用 因?yàn)槭峭耆綦x的,租戶(hù)可以隨意定義自己的網(wǎng)絡(luò),哪怕和其他租戶(hù)的IP段重疊都沒(méi)有關(guān)系,比如上圖中,租戶(hù)A的網(wǎng)絡(luò),與租戶(hù)B的網(wǎng)絡(luò) 如果通過(guò)一定技術(shù)實(shí)現(xiàn)支持3層路由器,租戶(hù)可以將自己的網(wǎng)絡(luò),隨意組織自己的網(wǎng)絡(luò)拓?fù)?,比如上圖中,租戶(hù)A的兩個(gè)網(wǎng)絡(luò),連接到一個(gè)路由器(可以是虛擬的)上
關(guān)于上面提的第三點(diǎn),在neutron中大概是這樣的:
VPC
最后,那到底啥是VPC呢?
很明確的告訴你,上面這個(gè)圖就是VPC!
VPC(virtual private cloud),不是個(gè)技術(shù)專(zhuān)有名詞,而是亞馬遜AWS創(chuàng)造的一個(gè)產(chǎn)品層面的名詞;
租戶(hù)網(wǎng)絡(luò)徹底隔離、IP段都能重疊、路由器、網(wǎng)絡(luò)拓?fù)涠寄苡勺约憾x,這還不是”虛擬私有云“嗎!
相關(guān)文章
OpenStack云計(jì)算快速入門(mén)教程(1)之OpenStack及其構(gòu)成簡(jiǎn)介
該教程基于Ubuntu12.04版,它將幫助讀者建立起一份OpenStack最小化安裝。這篇文章主要介紹了OpenStack云計(jì)算快速入門(mén)教程(1)之OpenStack及其構(gòu)成簡(jiǎn)介 ,需要的朋友可以參考下2016-11-11
Openstack 創(chuàng)建項(xiàng)目和虛擬機(jī)詳細(xì)介紹
這篇文章主要介紹了Openstack 創(chuàng)建項(xiàng)目和虛擬機(jī)詳細(xì)介紹的相關(guān)資料,這里舉例說(shuō)明如何實(shí)現(xiàn),圖文教程,需要的朋友可以參考下2016-11-11
OpenStack Tempest的正確的打開(kāi)方式
Tempest 是一個(gè)旨在為云計(jì)算平臺(tái) OpenStack 提供集成測(cè)試的開(kāi)源項(xiàng)目。它是基于 unittest2 和 nose 建立的靈活且易于擴(kuò)展及維護(hù)的自動(dòng)化測(cè)試框架,使得 OpenStack 相關(guān)測(cè)試效率得到大幅度提升。2017-01-01
OpenStack 工作流workflows使用原理詳細(xì)介紹
這篇文章主要介紹了OpenStack 工作流workflows使用原理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-11-11
圖文講解OpenStack手動(dòng)分布式部署環(huán)境準(zhǔn)備(Queens版)
這篇文章主要介紹了圖文講解OpenStack手動(dòng)分布式部署環(huán)境準(zhǔn)備(Queens版),OpenStack用于部署公有云、私有云,并實(shí)現(xiàn)對(duì)云項(xiàng)目管理,需要的朋友可以參考下2023-03-03
CentOS 6.4下安裝部署OpenStack云計(jì)算平臺(tái)的方法
現(xiàn)在好多公司都使用Openstack,所以也想著學(xué)習(xí)下用OpenStack云計(jì)算平臺(tái),這篇文章給加詳細(xì)介紹了CentOS 6.4下安裝部署OpenStack云計(jì)算平臺(tái)的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10
openstack云計(jì)算keystone組件工作流程及服務(wù)關(guān)系
這篇文章主要介紹了openstack云計(jì)算keystone組件工作流程及服務(wù)關(guān)系,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
java.util.ConcurrentModificationException 解決方法
這篇文章主要介紹了 java.util.ConcurrentModificationException 解決方法的相關(guān)資料,需要的朋友可以參考下2016-11-11
什么是OpenStack 開(kāi)源的云計(jì)算管理平臺(tái)項(xiàng)目
OpenStack是一個(gè)開(kāi)源的云計(jì)算管理平臺(tái)項(xiàng)目,由幾個(gè)主要的組件組合起來(lái)完成具體工作。OpenStack支持幾乎所有類(lèi)型的云環(huán)境,項(xiàng)目目標(biāo)是提供實(shí)施簡(jiǎn)單、可大規(guī)模擴(kuò)展、豐富、標(biāo)準(zhǔn)統(tǒng)一的云計(jì)算管理平臺(tái)2016-11-11

