
前面討論了 OVS local network,今天開始學習 flat network。
flat network 是不帶 tag 的網絡,宿主機的物理網卡通過網橋與 flat network 連接,每個 flat network 都會占用一個物理網卡。
在 ML2 配置中 enable flat network
在控制節點 /etc/neutron/plugins/ml2/ml2_conf.ini 中設置 flat network 相關參數:
tenant_network_types = flat
指定普通用戶創建的網絡類型為 flat。 需要注意的是:因為 flat 網絡與物理網卡一一對應,一般情況下租戶網絡不會采用 flat,這里只是示例。
接着需要指明 flat 網絡與物理網絡的對應關系:
如上所示: 在 [ml2_type_flat] 中通過 flat_networks 定義了一個 flat 網絡,label 為 “default”。 在 [ovs] 中通過 bridge_mappings 指明 default 對應的 Open vSwitch 網橋為 br-eth1。
label 是 flat 網絡的標識,在創建 flat 時會用到(后面演示),label 的名字可以是任意字符串,只要確保各個節點 ml2_conf.ini 中的 label 命名一致就可以了。
各個節點中 label 與物理網卡的對於關系可能不一樣。這是因為每個節點可以使用不同的物理網卡將 instance 連接到 flat network。
與 linux bridge 實現的 flat 網絡不同,ml2 中並不會直接指定 label 與物理網卡的對應關系,而是指定 label 與 ovs bridge 的對應關系。
[ovs] bridge_mappings = default:br-eth1
這里的 ovs bridge 是 br-eth1,我們需要提前通過 ovs-ovctl 命令:
-
創建 br-eth1。
-
將物理網卡 eth1 橋接在 br-eth1 上。
如果要創建多個 flat 網絡,需要定義多個 label,用逗號隔開,當然也需要用到多個 ovs bridge,如下所示:
[ml2_type_flat] flat_networks = flat1,flat2
[ovs]bridge_mappings = flat1:br-eth1,flat2:br-eth2
通過以上步驟控制節點的 flat 網絡就准備好了。 計算節點也需要做相同的配置,然后重啟所有節點的 Neutron 服務。
下面有必要通過 ovs-vsctl show 檢視一下當前的網絡結構。
對於 ovs bridge “br-eth1” 和其上橋接的 port “eth1” 我們應該不會感到意外,這是前面配置的結果。
然而除此之外,br-int 和 br-eth1 分別多了一個 port “int-br-eth1” 和 “phy-br-eth1”,而且這兩個 port 都是 “patch” 類型,同時通過 “peer” 指向對方。
上面的配置描述了這樣一個事實:br-int 與 br-eht1 這兩個網橋通過 int-br-eth1 和 phy-br-eth1 連接在一起了。
目前控制節點網絡結構如下:
veth pair VS patch port
在前面 local network 我們看到,br-int 與 linux bridge 之間可以通過 veth pair 連接。
而這里兩個 ovs bridge 之間是用 patch port 連接的。
看來 veth pair 和 patch port 都可以連接網橋,使用的時候如何選擇呢?
patch port 是 ovs bridge 自己特有的 port 類型,只能在 ovs 中使用。 如果是連接兩個 ovs bridge,優先使用 patch port,因為性能更好。 所以: 1. 連接兩個 ovs bridge,優先使用 patch port。技術上veth pair 也能實現,但性能不如 patch port。 2. 連接 ovs bridge 和 linux bridge,只能使用 veth pair。 3. 連接兩個 linux bridge,只能使用 veth pair。
配置就緒,下一節將創建 OVS flat network。

