深入淺出新一代雲網絡——VPC中的那些功能與基於OpenStack Neutron的實現(一)-簡述與端口轉發


VPC的概念與基於vxlan的overlay實現很早就有了,標題中的“新”只是一個和傳統網絡的相對概念。但從前年開始,不同於以往基礎網絡架構的新一代SDN網絡才真正越來越多的走進國內甲方廠商的視野,而從去年至今,筆者經歷的諸多客戶也在歷經學習、測試后逐步將其部署入生產。與此同時,國內的公有雲廠商們也或多或少地投入了對市場的教育成本,鼓勵客戶使用功能更強大,安全性更好的VPC網絡。

  • 什么是VPC

VPC即virtual private cloud ,因其最大的特點還是網絡方面,故行業內有時也稱其為私有網絡,在基礎雲計算環境之上,支持用戶定義自己的虛擬網絡,這個網絡在邏輯上與雲中的其他虛擬網絡隔絕,用戶可選擇私有 IP 地址范圍、創建子網以及配置路由表、網絡網關和安全設置等。

傳統基礎網絡的管理員視角:

(當然實際上,以往的IT集成架構會基於業務需求和安全需求作復雜的 外-核心-匯聚-接入-用戶的層次划分。)

從用戶的視角甚至可以簡化為:

實際雲環境中,拋開雲主機的安全組策略、上層交換設備的ACL等不談,各用戶處於同一層次的網絡中,IP自然也由平台管理端分配。

而對於使用VPC網絡的環境來說:

左邊顏色區域是一個用戶,右邊顏色區域是另一個用戶。兩者各自的網絡廣播域不會互相影響,IP自然也可以由用戶指定。從圖中不難發現,與基礎網絡相比,路由正是VPC網絡的核心。

那么開頭所說的“功能更強大,安全性更好”具體指什么呢?功能更強大,指的是更便利、形式多樣的互聯互通、帶寬分配等網絡功能;安全性更好,指的是用戶的私有網絡隱藏在路由之內,不僅互不影響,還可以將訪問控制的執行者,從雲主機本身一直延伸到三層。

  • VPC-NAT

NAT即網絡地址轉換,分為DNAT(目的地址轉換)與SNAT(源地址轉換),最直白地從常見功能目的來說, DNAT可以用於實現一個上層(路由的外層)地址的端口轉發到下層(路由的內層)網絡某個地址的某端口,SNAT可以用於實現多台雲主機共享一個網關地址訪問上層(路由的外層)網絡。

第一個很好理解,4層端口轉發。

有時候為了管理需要,要能在外層網絡管理私網中的三台雲主機,而這三台雲主機僅有私網地址沒有外層地址,那么可以使用端口轉發,將路由外層地址 114.123.123.x 的22端口轉發至第一台雲主機10.1.1.3的22端口,將114.123.123.x的23端口轉發至第二台雲主機的22端口,將路由的24端口轉發至第三台雲主機的22端口。如此通過SSH一個外層地址的不同端口來連接到私網內的三台雲主機。

其實和7層的轉發有那么點相似之處,比如 Nginx的80端口代理后端應用服務器的8080端口,81端口代理另一台服務器的8080端口。還真別說,Nginx自從1.9版本后開始支持TCP代理了。

拋開應用層轉發不談,基於OpenStack該如何實現呢?

熟悉虛擬化與容器技術的朋友肯定熟悉linux的namespace(命名空間),在Neutron 的L3節點上,不同用戶的VPC路由正是用namespace技術實現的隔離,這一點和不同vxlan網絡的隔離還是有很大區別的,本篇不談。

netns是在Linux中提供網絡虛擬化的一個項目,使用netns網絡空間虛擬化可以在本地虛擬化出多個網絡環境

所以,在L3節點使用ip netns 可以看到含本地所有網絡命名空間的list:

可以發現,其實不同網絡的dhcp服務與負載均衡服務(非Octavia)也是使用類似的方式。

qrouter后面接的uuid正是路由的uuid。通過這種方式即可進入VPC路由所在命名空間並使用iptables 執行對NAT表規則的增刪。

故端口轉發的功能API流程可以簡單描述為:

輸入數據為 VPC路由uuid 及端口,私網雲主機IP及端口,生成

VPC路由IP:端口 →  雲主機IP:端口

的一條 DNAT規則。

進入VPC命名空間執行規則。

執行后NAT表效果:



系列下一篇 《深入淺出新一代雲網絡——VPC中的那些功能與基於OpenStack Neutron的實現(二)》中將給出上文的簡單API 代碼,並展開另一塊內容——VPC網絡帶寬的共享與分離。考慮篇幅, VPC網絡中實現互聯互通的路由技術與隧道技術可能會放在系列的第三篇。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM