Modular Layer 2 (ML2) plugin提供新的L2框架,允許OpenStack用戶同時使用DC中現有的多種L2網絡技術。支持OVS,Linux bridge,Hyper-V L2 agents, 同時支持硬件設備和SDN Controller。
ML2支持所有非廠商特有的API extension,能與neutron標準DHCP agent協同工作。ML2使用service plugin接口實現L3 router抽象,允許使用neutron標準L3 agent,或其它替代型L3方案。其它service plugin可以與ML2配合使用。
ML2內部driver分別實現“可擴展的networktype集”和“擴展的mechanism集(用於訪問不同type的network)”。不同於meta-plugin,多種mechanism可以同時使用,去訪問某一virtual network裏的不同port。Mechanism可通過RPC與L2 agent互動,或與外部device/controller互操作。通過利用multiprovidernet extension,同一個virtual network可以由多個segments組成,這些segment可以是相同type,也可以是不同type。 Type drivers和mechanism drivers被作爲python entrypoints加載,通過stevedore library實現加載。
每種network type被一個相應的ML2 typedriver管理。 Type
Drivers 負責維護任何必要的“type-specific network state”,並進行“provider network validation”和“tenant network allocation”。在havana release中,已包含以下network type對應的drivers:local, flat, vlan, gre, and vxlan
每種networkingmechanism被一個相應的ML2mechanism driver管理。 當創建、修改、刪除networks, subnets和ports時,所有註冊的mechanism drivers被調用兩次。第一次調用,作爲DBtransaction的一部分,用來維護任何必須的driver-specific狀態。當transaction完成後,mechanism driver再次被調用,這次調用中,可以與外部device/controller進行互操作。Mechanism drivers也被作爲“port binding process”的一部分調用,去確認“associated mechanism”是否爲network提供連通性,如果提供,進一步確認network segment和VIF driver。
Havana release包含以下mechanism driver:
OVS,Linux bridge,Hyper-V L2 agents, Arista交換機,Cisco交換機, Tail-fNCS。
同時包含一個 L2Population mechanism driver,用於優化基於tunnel的virtualnetwork的流量。
更多信息(ML2plguin,type/mechanismdriver集合),參考OpenStackManual,以及wiki:
http://wiki.openstack.org/wiki/Neutron/ML2.