Neutron路由篇:L3 agent+Namespace
阿新 • • 發佈:2019-04-28
res 問題 -c open 應該 分析 bdd edi 一個
如果選用 open vswitch,則:
Neutron 虛擬路由器配置好了 L3 agent,今天將創建虛擬路由器router_100_101,打通 vlan100 和 vlan101。 打開操作菜單 Project -> Network -> Routers。 點擊 Create Router 按鈕 router 命名為 router_100_101,點擊Create Router 按鈕確認。
router_100_101 創建成功。
接下來需要將 vlan100 和 vlan101 連接到 router_100_101。 點擊router_100_101 鏈接進入 router 的配置頁面,在 Interfaces標簽中點擊 Add Interface 按鈕。
選擇 vlan101 的 subnet_172_16_101_0,點擊Add Interface確認。
用同樣的方法添加 vlan100 的 subnet_172_16_100_0。
完成後,可以看到 router_100_101 有了兩個 interface,其 IP 正好是 subnet 的 Gateway IP 172.16.100.1 和 172.16.101.1。
到這裏,我們可以預見:
1. router_100_101 已經連接了 subnet_172_16_100_0 和 subnet_172_16_101_0。
2. router_100_101 上已經設置好了兩個 subnet 的 Gateway IP。
3. cirros-vm1 和 cirros-vm3 應該可以通信了。
通過 PING 測試一下。
判斷正確,cirros-vm1 和 cirros-vm3 能通信了。
查看 cirros-vm1 的路由表,默認網關為 172.16.100.1。 同時 traceroute 告訴我們,cirros-vm1 確實是通過 router_100_101 訪問到 cirros-vm3 的。
首先我們查看控制節點的 linux bridge 結構發生了什麽變化。 vlan101 的 bridge 上多了一個 tape17162c5-00,從命名上可以推斷該 TAP 設備對應 router_100_101 的 interface (e17162c5-00fa)。 vlan100 的 bridge 上多了一個 tapd568ba1a-74,從命名上可以推斷該 TAP 設備對應 router_100_101 的 interface (d568ba1a-740e)。 當前網絡結構如圖所示: 但發現一個問題:兩個 TAP 設備上並沒有配置相應的 Gateway IP。 如果沒有 Gateway IP,router_100_101 是如何完成路由的呢? 答案是: l3 agent 會為每個 router 創建了一個 namespace,通過 veth pair 與 TAP 相連,然後將 Gateway IP 配置在位於 namespace 裏面的 veth interface 上,這樣就能提供路由了。 通過 ip netns 查看 namespace: router 對應的 namespace 命名為 qrouter-<router id>。 通過 ip netns exec <namespace name> ip a 命令查看 router_100_101 namespace 中的 veth interface 配置。 namespace 中有兩個 interface:
Neutron 的路由服務是由 l3 agent 提供的。 除此之外,l3 agent 通過 iptables 提供 firewall 和 floating ip 服務。 l3 agent 需要正確配置才能工作,配置文件為 /etc/neutron/l3_agent.ini,位於控制節點或網絡節點。 interface_driver 是最重要的選項 如果 mechanism driver 是 linux bridge,則:
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriverl3 agent 運行在控制或網絡節點上。
Neutron 虛擬路由器配置好了 L3 agent,今天將創建虛擬路由器router_100_101,打通 vlan100 和 vlan101。 打開操作菜單 Project -> Network -> Routers。 點擊 Create Router 按鈕 router 命名為 router_100_101,點擊Create Router 按鈕確認。
首先我們查看控制節點的 linux bridge 結構發生了什麽變化。 vlan101 的 bridge 上多了一個 tape17162c5-00,從命名上可以推斷該 TAP 設備對應 router_100_101 的 interface (e17162c5-00fa)。 vlan100 的 bridge 上多了一個 tapd568ba1a-74,從命名上可以推斷該 TAP 設備對應 router_100_101 的 interface (d568ba1a-740e)。 當前網絡結構如圖所示: 但發現一個問題:兩個 TAP 設備上並沒有配置相應的 Gateway IP。 如果沒有 Gateway IP,router_100_101 是如何完成路由的呢? 答案是: l3 agent 會為每個 router 創建了一個 namespace,通過 veth pair 與 TAP 相連,然後將 Gateway IP 配置在位於 namespace 裏面的 veth interface 上,這樣就能提供路由了。 通過 ip netns 查看 namespace: router 對應的 namespace 命名為 qrouter-<router id>。 通過 ip netns exec <namespace name> ip a 命令查看 router_100_101 namespace 中的 veth interface 配置。 namespace 中有兩個 interface:
- qr-e17162c5-00 上設置了 Gateway IP 172.16.101.1,與 root namespace 中的 tape17162c5-00 組成 veth pair。
- qr-d568ba1a-74 上設置了 Gateway IP 172.16.100.1,與 root namespace 中的 tapd568ba1a-74 組成 veth pair。
Neutron路由篇:L3 agent+Namespace