上一節我們討論了 ML2 Plugin 解決的問題,本節將繼續研究 ML2 的架構。
ML2 對二層網絡進行抽象和建模,引入了 type driver 和 mechanism driver。
這兩類 driver 解耦了 Neutron 所支持的網絡類型(type)與訪問這些網絡類型的機制(mechanism),其結果就是使得 ML2 具有非常好的彈性,易於擴展,能夠靈活支持多種 type 和 mechanism。
Type Driver
Neutron 支持的每一種網絡類型都有一個對應的 ML2 type driver。 type driver 負責維護網絡類型的狀態,執行驗證,創建網絡等。 ML2 支持的網絡類型包括 local, flat, vlan, vxlan 和 gre。 我們將在后面章節詳細討論每種 type。
Mechanism Driver
Neutron 支持的每一種網絡機制都有一個對應的 ML2 mechanism driver。 mechanism driver 負責獲取由 type driver 維護的網絡狀態,並確保在相應的網絡設備(物理或虛擬)上正確實現這些狀態。
type 和 mechanisim 都太抽象,現在我們舉一個具體的例子: type driver 為 vlan,mechanism driver 為 linux bridge,我們要完成的操作是創建 network vlan100,那么:
-
vlan type driver 會確保將 vlan100 的信息保存到 Neutron 數據庫中,包括 network 的名稱,vlan ID 等。
-
linux bridge mechanism driver 會確保各節點上的 linux brige agent 在物理網卡上創建 ID 為 100 的 vlan 設備 和 brige 設備,並將兩者進行橋接。
mechanism driver 有三種類型:
Agent-based
包括 linux bridge, open vswitch 等。
Controller-based
包括 OpenDaylight, VMWare NSX 等。
基於物理交換機
包括 Cisco Nexus, Arista, Mellanox 等。 比如前面那個例子如果換成 Cisco 的 mechanism driver,則會在 Cisco 物理交換機的指定 trunk 端口上添加 vlan100。
本教程討論的 mechanism driver 將涉及 linux bridge, open vswitch 和 L2 population。
linux bridge 和 open vswitch 的 ML2 mechanism driver 的作用是配置各節點上的虛擬交換機。 linux bridge driver 支持的 type 包括 local, flat, vlan, and vxlan。 open vswitch driver 除了這 4 種 type 還支持 gre。
L2 population driver 作用是優化和限制 overlay 網絡中的廣播流量。 vxlan 和 gre 都屬於 overlay 網絡。
ML2 core plugin 已經成為 OpenStack Neutron 的首選 plugin,本教程后面會討論如何在實驗環境中配置 ML2 的各種 type 和 mechanism。
學習完 Core Plugin,下一節我們將學習 Service Plugin 和相關的 Agent。