Neutron 的架構是很是開放的,能夠支持多種 network provider,只要遵循必定的設計原則和規範。本節咱們將開始討論這個主題。
先討論一個簡單的場景:在 Neutorn 中使用 linux bridge 這一種 network provider。linux
根據咱們上一節討論的 Neutron Server 的分層模型,咱們須要實現兩個東西:linux bridge core plugin 和 linux bridge agent。數據庫
linux bridge core plugin網絡
與 neutron server 一塊兒運行。架構
實現了 core plugin API。ide
負責維護數據庫信息。設計
通知 linux bridge agent 實現具體的網絡功能。server
linux bridge agent開發
在計算節點和網絡節點(或控制節點)上運行。it
接收來自 plugin 的請求。配置
經過配置本節點上的 linux bridge 實現 neutron 網絡功能。
一樣的道理,若是要支持 open vswitch,只須要實現 open vswitch plugin 和 open vswitch agent。
因而可知:Neutron 能夠經過開發不一樣的 plugin 和 agent 支持不一樣的網絡技術。這是一種至關開放的架構。
不過隨着支持的 network provider 數量的增長,開發人員發現了兩個突出的問題:
只能在 OpenStack 中使用一種 core plugin,多種 network provider 沒法共存。
不一樣 plugin 之間存在大量重複代碼,開發新的 plugin 工做量大。
下一節將深刻討論這兩個問題的成因以及解決方案。