虛擬機 vlan trunk 特性

1. 功能

1)容許不一樣vlan的network下的虛擬機之間通訊。通常狀況下,虛擬機只能在相同vlan的網絡下通訊。網絡

2)容許虛擬機發送vlan報文。spa

2. 組網圖

虛擬機出來的tap設備鏈接到tbr網橋上,此時tap設備不打tag值, vlan_mode = trunk ,trunk port 與 subport 共用一個tap設備。server

tbr網橋與br-int網橋用ovs自身的patch對相連。xml

3. 流錶轉換

  • trunk port場景 , 即虛擬機出來的報文不帶vlan信息

  1)untag -> local vlanblog

  報文從vm1下行通過br-int後,在br-int匹配相似轉換流表 「in_port=5,vlan_tci=0x0000 actions=mod_vlan_vid:3」接口

  2) local vlan -> untag  ip

  若報文欲從trbxxx網橋上行進入vm2,在trbxxx匹配相似轉換流表 「in_port=4,dl_vlan=3 actions=strip_vlan」 ci

  注:若報文欲從br-phy物理網橋出本主機,則走普通流程,在br-phy將local vlan 轉換成 真正用戶網絡的vlan資源

  • subport場景, 即虛擬機出來的報文帶vlan信息

  3) vm vlan -> local vlanrpc

  報文從vm1下行通過br-int後,在br-int匹配相似轉換流表 「in_port=5,dl_vlan=1000 actions=mod_vlan_vid:4」

  4) local vlan -> vm vlan

  若報文欲從trbxxx網橋上行進入vm2,在trbxxx匹配相似轉換流表 「in_port=4,dl_vlan=4 actions=mod_vlan_vid:1000」

4. 代碼處理流程

  1) 生成xml文件。後續會根據xml文件掛載tap設備,此處tap設備是掛載到tbr網橋上。

  2) 準備組網環境。

    在建立虛擬機前,nova compute 進行plug動做準備好相關資源,如建立tbr網橋,用patch對鏈接tbr與br-int網橋。

    而後啓動虛擬機,將tap設備掛載到tbr網橋上。

  3) ovs-agent 掃描 tbr網橋上新增的tap設備(trunk port),而後下發相應的流表。

    對於subport,因爲沒法在tbr網橋上掃描到,只能經過neutron北向接口建立subport時,neutron-server經過rpc消息通知ovs-agent,再下發流表。

5. 環境相關操做

  neutron port-create $network_id_1 --trunkport:type trunk

  neutron port-create $network_id_2 --trunkport:type subport --trunkport:parent_id $trunkport_id

   (建立subport的net與trunk port的net不是同一個,即vlan不一樣)

  nova boot --image xxx --flavor 1 --nic port-id=$trunkport_id (必須指定trunkport而不是subport來建立VM)

  vconfig add eth0 100 (在虛擬機中添加vlan 100的子接口)

  dhcpcd -L eth0.100 (在該子接口獲取ip)

相關文章
相關標籤/搜索