esxi6.7虚拟机网卡连接第二个虚拟交换机_Linux云计算底层技术之网络虚拟化
網絡虛擬化相對計算、存儲虛擬化來說是比較抽象的,以我們在學校書本上學的那點網絡知識來理解網絡虛擬化可能是不夠的。
在我們的印象中,網絡就是由各種網絡設備(如交換機、路由器)相連組成的一個網狀結構,世界上的任何兩個人都可以通過網絡建立起連接。
帶著這樣一種思路去理解網絡虛擬化可能會感覺云里霧里——這樣一個龐大的網絡如何實現虛擬化?
其實,網絡虛擬化更多關注的是數據中心網絡、主機網絡這樣比較「細粒度」的網絡,所謂細粒度,是相對來說的,是深入到某一臺物理主機之上的網絡結構來談的。
如果把傳統的網絡看作「宏觀網絡」的話,那網絡虛擬化關注的就是「微觀網絡」。網絡虛擬化的目的,是要節省物理主機的網卡設備資源。從資源這個角度去理解,可能會比較好理解一點。
傳統網絡架構
在傳統網絡環境中,一臺物理主機包含一個或多個網卡(NIC),要實現與其他物理主機之間的通信,需要通過自身的 NIC 連接到外部的網絡設施,如交換機上,如下圖所示。
傳統網絡(圖片來源于網絡,侵權必刪)這種架構下,為了對應用進行隔離,往往是將一個應用部署在一臺物理設備上,這樣會存在兩個問題,1)是某些應用大部分情況可能處于空閑狀態,2)是當應用增多的時候,只能通過增加物理設備來解決擴展性問題。不管怎么樣,這種架構都會對物理資源造成極大的浪費。
虛擬化網絡架構
為了解決這個問題,可以借助虛擬化技術對一臺物理資源進行抽象,將一張物理網卡虛擬成多張虛擬網卡(vNIC),通過虛擬機來隔離不同的應用。
這樣對于上面的問題 1),可以利用虛擬化層 Hypervisor 的調度技術,將資源從空閑的應用上調度到繁忙的應用上,達到資源的合理利用;針對問題 2),可以根據物理設備的資源使用情況進行橫向擴容,除非設備資源已經用盡,否則沒有必要新增設備。這種架構如下所示。
虛擬化網絡(圖片來源于網絡,侵權必刪)其中虛擬機與虛擬機之間的通信,由虛擬交換機完成,虛擬網卡和虛擬交換機之間的鏈路也是虛擬的鏈路,整個主機內部構成了一個虛擬的網絡,如果虛擬機之間涉及到三層的網絡包轉發,則又由另外一個角色——虛擬路由器來完成。
一般,這一整套虛擬網絡的模塊都可以獨立出去,由第三方來完成,如其中比較出名的一個解決方案就是 Open vSwitch(OVS)。
OVS 的優勢在于它基于 SDN 的設計原則,方便虛擬機集群的控制與管理,另外就是它分布式的特性,可以「透明」地實現跨主機之間的虛擬機通信,如下是跨主機啟用 OVS 通信的圖示。
分布式虛擬交換機(圖片來源于網絡,侵權必刪)總結下來,網絡虛擬化主要解決的是虛擬機構成的網絡通信問題,完成的是各種網絡設備的虛擬化,如網卡、交換設備、路由設備等。
Linux 下網絡設備虛擬化的幾種形式
為了完成虛擬機在同主機和跨主機之間的通信,需要借助某種“橋梁”來完成用戶態到內核態(Guest 到 Host)的數據傳輸,這種橋梁的角色就是由虛擬的網絡設備來完成,上面介紹了一個第三方的開源方案——OVS,它其實是一個融合了各種虛擬網絡設備的集大成者,是一個產品級的解決方案。
但 Linux 本身由于虛擬化技術的演進,也集成了一些虛擬網絡設備的解決方案,主要有以下幾種:
(1)TAP/TUN/VETH
TAP/TUN 是 Linux 內核實現的一對虛擬網絡設備,TAP 工作在二層,TUN 工作在三層。Linux 內核通過 TAP/TUN 設備向綁定該設備的用戶空間程序發送數據,反之,用戶空間程序也可以像操作物理網絡設備那樣,向 TAP/TUN 設備發送數據。
基于 TAP 驅動,即可實現虛擬機 vNIC 的功能,虛擬機的每個 vNIC 都與一個 TAP 設備相連,vNIC 之于 TAP 就如同 NIC 之于 eth。
當一個 TAP 設備被創建時,在 Linux 設備文件目錄下會生成一個對應的字符設備文件,用戶程序可以像打開一個普通文件一樣對這個文件進行讀寫。
比如,當對這個 TAP 文件執行 write 操作時,相當于 TAP 設備收到了數據,并請求內核接受它,內核收到數據后將根據網絡配置進行后續處理,處理過程類似于普通物理網卡從外界收到數據。當用戶程序執行 read 請求時,相當于向內核查詢 TAP 設備是否有數據要發送,有的話則發送,從而完成 TAP 設備的數據發送。
TUN 則屬于網絡中三層的概念,數據收發過程和 TAP 是類似的,只不過它要指定一段 IPv4 地址或 IPv6 地址,并描述其相關的配置信息,其數據處理過程也是類似于普通物理網卡收到三層 IP 報文數據。
VETH 設備總是成對出現,一端連著內核協議棧,另一端連著另一個設備,一個設備收到內核發送的數據后,會發送到另一個設備上去,這種設備通常用于容器中兩個 namespace 之間的通信。
(2)Bridge
Bridge 也是 Linux 內核實現的一個工作在二層的虛擬網絡設備,但不同于 TAP/TUN 這種單端口的設備,Bridge 實現為多端口,本質上是一個虛擬交換機,具備和物理交換機類似的功能。
Bridge 可以綁定其他 Linux 網絡設備作為從設備,并將這些從設備虛擬化為端口,當一個從設備被綁定到 Bridge 上時,就相當于真實網絡中的交換機端口上插入了一根連有終端的網線。
如下圖所示,Bridge 設備 br0 綁定了實際設備 eth0 和 虛擬設備設備 tap0/tap1,當這些從設備接收到數據時,會發送給 br0 ,br0 會根據 MAC 地址與端口的映射關系進行轉發。
Bridge 與 TAP/TUN 的關系因為 Bridge 工作在二層,所以綁定到它上面的從設備 eth0、tap0、tap1 均不需要設 IP,但是需要為 br0 設置 IP,因為對于上層路由器來說,這些設備位于同一個子網,需要一個統一的 IP 將其加入路由表中。
這里有人可能會有疑問,Bridge 不是工作在二層嗎,為什么會有 IP 的說法?其實 Bridge 雖然工作在二層,但它只是 Linux 網絡設備抽象的一種,能設 IP 也不足為奇。
對于實際設備 eth0 來說,本來它是有自己的 IP 的,但是綁定到 br0 之后,其 IP 就生效了,就和 br0 共享一個 IP 網段了,在設路由表的時候,就需要將 br0 設為目標網段的地址。
總結
傳統網絡架構到虛擬化的網絡架構,可以看作是宏觀網絡到微觀網絡的過渡
TAP/TUN/VETH、Bridge 這些虛擬的網絡設備是 Linux 為了實現網絡虛擬化而實現的網絡設備模塊,很多的云開源項目的網絡功能都是基于這些技術做的,比如 Neutron、Docker network 等。
OVS 是一個開源的成熟的產品級分布式虛擬交換機,基于 SDN 的思想,被大量應用在生產環境中。
公眾號后臺回復“加群”,帶你進入高手如云交流群
我的公眾號 Linux云計算網絡(id: cloud_dev) ,號內有 10T 書籍和視頻資源,后臺回復 「1024」 即可領取,分享的內容包括但不限于 Linux、網絡、云計算虛擬化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++編程技術等內容,歡迎大家關注。 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的esxi6.7虚拟机网卡连接第二个虚拟交换机_Linux云计算底层技术之网络虚拟化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 11寸笔记本电脑推荐_3000-2000
- 下一篇: access窗体中再制作查询窗体_Acc