vxlan層次化綁定


 

 

 http://specs.openstack.org/openstack/neutron-specs/specs/kilo/ml2-hierarchical-port-binding.html


步驟如下:

  1. 用戶用Nova boot創建一個虛擬機, vm 的網絡設定為VXLAN A;
  2. Neutron創建一個VXLAN A網絡接口,並將請求發送到ML2組件;
  3. Neutron  ML2先調用物理交換機(TOR)的Mechanism Driver進行端口綁定(port binding),將VxLAN A 綁定到物理交換機的網絡接口 ;
  4. 物理交換機Mechanism Driver再申請一個VLAN B並通知ML2,告訴ML2當前這個VM的網絡接口還需要綁定VLAN B
  5. 物理交換機Mechanism Driver通過Netconf接口告訴物理交換機設定VLAN B和VXLAN A的映射關系;
  6. ML2知道網絡接口還需要綁定到對應的VLAN上,所以ML2調用OVS的Mechanism Driver,在OVS添加VLAN B,並將該VLAN配置到VM對應的接口上,
  7. OVS的Mechanism Driver會通過相應的API,告知位於計算節點的OpenVSwitch,OVS將對VM發出的數據包打上TAG=VLAN B  並轉發到物理交換機的接口,物理交換機將帶有TAG=VLAN B的數據包轉換為TAG=VXLAN A的數據包;
  •  層次化端口綁定的邏輯,一半是在Neutron ML2里面,有另一半是在物理交換機對應的Mechanism driver里面。
  •  硬件交換機與服務器要運行LLDP之類的協議,來獲取連接關系

 

OpenStack層次化端口綁定在 SDN中host和交換機如何協同?

虛擬機

1、計算節點開啟lldp服務,從underlay nic接口發送攜帶主機名的lldp報文,作為VTEP設備的交換機接收后上報控制器,控制器就記錄計算節點所屬的交換機端口,

當計算節點啟動虛機的時候,虛機的vport中會攜帶主機名(計算節點的名字,也就是lldp報文中攜帶的主機名),控制器就知道了這個虛擬機的報文將進入交換機的哪個端口。

2、Openstack創建port在bind_port時,根據port所屬計算節點動態分配一個這個計算節點的physical network的vlan,然后賦值給框架的next_segments_to_bind以便框架進行openvswitch vlan綁定的綁定,如果這個port是這個這個網絡的第一個port的話,會通知這個計算節點添加vlan和vxlan的映射關系。

3、虛機上線時,上線信息上報給控制器VSM模塊,VSM模塊再給NEM模塊上報激活事件,使得NEM向交換機下發vlan和vxlan映射關系。

 裸金屬

裸金屬通過nuetron傳遞的local_link_information來感知服務器連接交換機的端口。在inspect階段,裸金屬用的deploy鏡像里會包含lldp服務,ironic-agent會收集lldp信息,告知ironic。

 

 

  host對不同租戶的虛擬機的報文 Tag 不同的VLAN ,host連接到交換機的port設為Trunk口,這樣host可以把不同VLAN Tag的網絡數據送到交換機vetp。vetp根據VLAN Tag映射到不同的vxlan tag,進而封裝成相應的VxLAN數據。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM