●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
如果 mechanism driver 选用 open vswitch,则:
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
●查看结点上都有那些agent服务。
命令: source /opt/stack/devstack/openrc admin admin
neutron agent-list
●l3 agent 会为每个 router 创建了一个 namespace,通过 veth pair 与 TAP 相连,然后将 Gateway IP 配置在位于 namespace 里面的 veth interface 上,这样就能提供路由了。
查看路由命令:neutron router-list
通过 ip netns 查看 namespace.
router 对应的 namespace 命名为 qrouter-<router id>。
通过 ip netns exec <namespace name> ip a 命令查看 router 中的 veth interface 配置。
查看namespace中的路由表:
ip netns exec <namespace name> kernel IP routing table
●访问外网 ML2 的配置
外部网络是已经存在的物理网络,一般都是 flat 或者 vlan 类型。
如果类型为 flat,控制节点 /etc/neutron/plugins/ml2/ml2_conf.ini 配置如下:
例:[ml2_type_flat]
flat_networks = external
[linux_bridge]
physical_interface_mappings = default:eth1,external:eth2
如果外部网络类型为 vlan,配置如下:
例:[ml2_type_vlan]
network_vlan_ranges = default:3001:4000,external
[linux_bridge]
physical_interface_mappings = default:eth1,external:eth2
修改配置后,需要重启 neutron 的相关服务。