在 ML2 中配置 OVS flat network - 天天5分鐘玩轉 OpenStack(133)

前面討論了 OVS local network,今天開始學習 flat network。linux

flat network 是不帶 tag 的網絡,宿主機的物理網卡經過網橋與 flat network 鏈接,每一個 flat network 都會佔用一個物理網卡。網絡

在 ML2 配置中 enable flat network

在控制節點 /etc/neutron/plugins/ml2/ml2_conf.ini 中設置 flat network 相關參數:app

tenant_network_types = flat性能

指定普通用戶建立的網絡類型爲 flat。 須要注意的是:由於 flat 網絡與物理網卡一一對應,通常狀況下租戶網絡不會採用 flat,這裏只是示例。學習

接着須要指明 flat 網絡與物理網絡的對應關係:spa

如上所示: 在 [ml2_type_flat] 中經過 flat_networks 定義了一個 flat 網絡,label 爲 「default」。
在 [ovs] 中經過 bridge_mappings 指明 default 對應的 Open vSwitch 網橋爲 br-eth1。字符串

label 是 flat 網絡的標識,在建立 flat 時會用到(後面演示),label 的名字能夠是任意字符串,只要確保各個節點 ml2_conf.ini 中的 label 命名一致就能夠了。it

各個節點中 label 與物理網卡的對於關係可能不同。這是由於每一個節點可使用不一樣的物理網卡將 instance 鏈接到 flat network。配置

與 linux bridge 實現的 flat 網絡不一樣,ml2 中並不會直接指定 label 與物理網卡的對應關係,而是指定 label 與 ovs bridge 的對應關係。plugin

[ovs] bridge_mappings = default:br-eth1

這裏的 ovs bridge 是 br-eth1,咱們須要提早經過 ovs-ovctl 命令:

  1. 建立 br-eth1。

  2. 將物理網卡 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。

相關文章
相關標籤/搜索