網絡虛擬化是虛擬化技術中最複雜的部分,學習難度最大。
但由於網絡是虛擬化中很是重要的資源,因此再硬的骨頭也必需要把他啃下來。爲了讓你們對虛擬化網絡的複雜程度有一個只管的認識,請看下圖:
這是 OpenStack 官網上給出計算節點(能夠理解爲KVM的宿主機)虛擬網絡的邏輯圖,上面的網絡設備不少,層次也很複雜。
但也不要怕, 萬丈高樓從地起,虛擬網絡再複雜,也是有一些基礎的組件構成的。只要咱們將這些基礎組件的概念和他們之間的邏輯關係搞清楚了,就能深入理解虛擬網絡的架構,那麼雲環境下的虛擬化網絡也就再也不話下了。
下面咱們來學習網絡虛擬化中最重要的兩個東西 Linux Bridge 和 VLAN
Linux Bridge 基本概念
架設宿主機上有一塊與外網鏈接的物理網卡 eth0 ,上面跑了一個虛機 VM1 ,如今有一個問題是:如何讓VM1 可以訪問外網?
至少有兩種方案:
一、將物理網卡 eth0 直接分配給 VM1 ,但隨之帶來的問題狠多,宿主機沒有了網卡就沒法訪問了;新的虛機好比VM2 也沒有網卡可用
二、給VM1 分配一個虛擬的網卡 vnet0 ,經過Linux Bridge br0 將 eth0 和 vnet0 鏈接起來,以下圖:
Linux Bridge 是Linux上用來作 TCP/IP 二層協議交換的設備,其功能你們能夠簡單理解爲一個二層交換機或者 Hub 。多個網絡設備能夠鏈接到同一個Linux Bridge,當某個設備收到數據包時,Linux Bridge 會將數據轉發給其餘設備。
在上面的例子中,當有數據到達 eth0 時,br0 會將數據轉發給 vnet0 , 這樣 VM1就能接受來自外網的數據;反過來,VM1發送數據給vnet0,br0 也會將數據轉發到eth0 ,從而實現了 VM1 與外網的通訊。
如今咱們增長一個 VM2 以下圖所示。
VM2 的虛擬網卡vnet1 也鏈接到了br0 上,如今 VM1 和 VM2 之間能夠通訊,同時 VM1 和 VM2 也均可以與外網通訊。