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