本节开始我们将学习 Linux Bridge 如何实现 Neutron 的各种功能。
首先需要配置 linux-bridge mechanism driver。
Neutorn ML2 plugin 默认使用的 mechanism driver 是 open vswitch 而不是 linux bridge。那是否还有研究 linux bridge 的必要呢?
我的答案是:很有必要!
原因如下:
-
linux bridge 技术非常成熟,而且高效,所以业界很多 OpenStack 方案采用的是 linux bridge,比如 Rackspace 的 private cloud。
-
open vswitch 实现的 Neutron 虚拟网络较为复杂,不易理解;而 linux bridge 方案更直观。先理解 linux bridge 方案后再学习 open vswitch 方案会更容易。并且可以通过两种方案的对比更加深入地理解 Neutron 网络。
在深入学习之前,我们先复习一下 linux bridge 实现虚拟交换节的基本原理。
上图中,br0 是 linux bridge,br0 充当虚拟交换机的作用,负责将物理网卡 eth0 和虚拟网卡 tap 设备 vnet0/vent1 连接到同一个二层网络,实现虚拟机 VM1 和 VM2,以及虚拟机与外网之间的通信。
关于 linux bridge 更详细的内容请参考“预备知识 -> 网络虚拟化” 相关章节。
配置 linux-bridge mechanism driver
要在 Neutron 中使用 linux bridge,首先需要配置 linux-bridge mechanism driver。 Neutron 默认使用 ML2 作为 core plugin,其配置位于 /etc/neutron/neutron.conf。
控制节点和计算节点都需要在各自的 neutron.conf 中配置 core_plugin 选项。
然后需要让 ML2 使用 linux-bridge mechanism driver。 ML2 的配置文件位于 /etc/neutron/plugins/ml2/ml2_conf.ini。
mechanism_drivers 选项指明当前节点可以使用的 mechanism driver,这里可以指定多种 driver,ML2 会负责加载。 上面的配置指明我们只使用 linux-bridge driver。
控制节点和计算节点都需要在各自的 ml2_conf.ini 中配置 mechanism_drivers 选项。
Neutron 服务正常启动后,所有节点上都会运行 neutron-linuxbridge-agent
linux-bridge mechanism driver 已经配置完毕,下一节会检视当前的网络状态。
随着各种 Neutron 功能的实践,我们将看到这个网络状态会不断的演变和发展。