VLAN aware VMs幾個誤區

前面文章介紹了openstack 爲了解決VM內可以接入多個vlan網絡的一個特性“VLAN aware VMs”,但是在實際調試中遇到了些問題,這裏做下說明。

      其實這裏面有幾個小誤區:

1.該特性實際上是解決了租戶級的vlan,跟底層是vlan還是vxlan無關。所以底層underlay如果也是vlan的話,注意要有所區別。

2.針對underlay是vlan的組網而言,其實租戶 vm 內部的每一個vlan實際也對應底層一個vlan。

這裏需要強調幾點   

步驟

  • create parent_net 以及parent_subnet 網段和port(parent_port)等信息
  • create subnet_net以及subnet_subnet 網段和port(subport)等信息
  • create trunk 指定parent_port sub_port(後續可以給這個trunk在添加或者刪除subport)
  • create vm 指定parent-port
  1. 每一個虛機對應的parent-port,即創建虛機的時候-nic 參數指定。
  2. 在創建trunk時,添加subport時指定的segment id和實際的underlay 的vlan無關,因爲underlay如果是vxlan也是可以的。
  3. 創建好vm後,要在vm內創建子接口,並指定mac地址,該mac地址是對應neutron 爲該subport分配的地址
  4. vm的子接口所在網絡可以dhcp獲取ip
  5. 一個trunk 對應的一個parentport和若干個subport, 也就對應一個VM

二、網絡模型

     從上圖中我們不難發現,

1. tbr橋和br-int橋連接有兩種,一種是tpt-xx----tpi-xx 這個是走不帶vlan tag的報文,即parent port出來的報文。另一種是 spt-yy------spi-yy,這個是走帶tag的報文,即subport出來的報文。

2. spt-yy口帶有vlan tag,這個tag就是我們在給trunk 添加subport時 通過segmentation-id參數指定的,即租戶級(overlay)的vlan id.而對應的br-int橋上的spi-yy口也有一個vlan tag,這個是br-int 自己的LOCAL vlan id。還記的普通虛機是qbr 直接連接到br-int時,對應br-int橋上的qvo口上的vlan tag嗎,一個道理。實際上從br-int的角度,他不區分是qvo還是spi. 他一視同仁。

三、報文走向

    從VM subport出來的報文,攜帶了vlan tag(segmentation-id ), 一直出來後到達tbr bridge的qvo口,注意這個口是一個trunk口,然後經過tbr bridge 從spt-yy(tag:segmentation-id)口出來,這時候報文已經被剝離vlan tag,變成一個普通報文,然後進入br-int橋上的spi-yy口,這個口是有vlan tag的,報文會添加spi-yy口的vlan tag(LOCAL tag),再往後就和普通虛機流量一樣,通過patch 口進入br-eth或者br-tun.還記得嗎,br-eth負責將LOCAL vlan轉化underlay的外部vlan。

     

 

參考文檔:

    https://xiexianbin.cn/openstack/2017/03/11/Neutron-vlan-aware-vms

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章