咱們在 Neutron Server 小節學習到 Core Plugin,其功能是維護數據庫中 network, subnet 和 port 的狀態,並負責調用相應的 agent 在 network provider 上執行相關操做,好比建立 network。
上一節也介紹了兩個 Core Plugin:linux bridge plugin 和 open vswitch plugin。
本節將詳細討論更重要的 ML2 Core Plugin。
Moduler Layer 2(ML2)是 Neutron 在 Havana 版本實現的一個新的 core plugin,用於替代原有的 linux bridge plugin 和 open vswitch plugin。linux
之因此要開發 ML2,主要是由於傳統 core plugin 存在兩個突出的問題。數據庫
Core plugin 負責管理和維護 Neutron 的 network, subnet 和 port 的狀態信息,這些信息是全局的,只須要也只能由一個 core plugin 管理。網絡
只使用一個 core plugin 自己沒有問題。但問題在於傳統的 core plugin 與 core plugin agent 是一一對應的。也就是說,若是選擇了 linux bridge plugin,那麼 linux bridge agent 將是惟一選擇,就必須在 OpenStack 的全部節點上使用 linux bridge 做爲虛擬交換機(即 network provider)。架構
一樣的,若是選擇 open vswitch plugin, 全部節點上只能使用 open vswitch,而不能使用其餘的 network provider。框架
全部傳統的 core plugin 都須要編寫大量重複和相似的數據庫訪問的代碼,大大增長了 plugin 開發和維護的工做量。ide
ML2 做爲新一代的 core plugin,提供了一個框架,容許在 OpenStack 網絡中同時使用多種 Layer 2 網絡技術,不一樣的節點可使用不一樣的網絡實現機制。學習
如上圖所示,採用 ML2 plugin 後,能夠在不一樣節點上分別部署 linux bridge agent, open vswitch agent, hyper-v agent 以及其餘第三方 agent。spa
ML2 不但支持異構部署方案,同時可以與現有的 agent 無縫集成:之前用的 agent 不須要變,只須要將 Neutron server 上的傳統 core plugin 替換爲 ML2。server
有了 ML2,要支持新的 network provider 就變得簡單多了:無需從頭開發 core plugin,只須要開發相應的 mechanism driver,大大減小了要編寫和維護的代碼。開發
如今咱們已經瞭解了 ML2 的必要性,下一節將學習 ML2 的架構。