Neutron Routing 服務提供跨 subnet 互聯互通的能力。
例如前面我們搭建了實驗環境:
cirros-vm1 172.16.100.3 vlan100 cirros-vm3 172.16.101.3 vlan101
這兩個 instance 要通信必須借助 router。可以是物理 router 或者虛擬 router。 下面詳細討論 Neutron 的虛擬 router 實現。
配置 l3 agent
Neutron 的路由服務是由 l3 agent 提供的。 l3 agent 需要正確配置才能工作,配置文件為 /etc/neutron/l3_agent.ini,位於控制節點或網絡節點。
devstack 已經幫我們配置默認的屬性,大部分情況下不需要修改就可以使用。
external_network_bridge 指定連接外網的網橋,默認是 br-ex。
interface_driver 是最重要的選項,如果 mechanism driver 是 open vswitch,則:
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
如果選用 linux bridge,則:
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
l3 agent 運行在控制或網絡節點。
下面將創建虛擬 router “router_100_101”,打通 vlan100 和 vlan101。
創建 router
進入操作菜單 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” 按鈕。
選擇 vlan100 的 subnet_172_16_100_0,點擊 “Add Interface” 確認。
用同樣的方法添加 vlan101 的 subnet_172_16_101_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 能通信了。
下一節我們詳細探究 router_100_101 是如何起作用的。