Neutron flat network 学习
flat network 是不带 tag 的网络,要求宿主机的物理网卡直接与 linux bridge 连接,这意味着:
每个 flat network 都会独占一个物理网卡。
![](https://app.yinxiang.com/shard/s4/res/d0270f41-49be-4d65-947f-877c9b94409c.jpg)
在 ML2 配置中 enable flat network
在 /etc/neutron/plugins/ml2/ml2_conf.ini 设置 flat network 相关参数。
![](https://app.yinxiang.com/shard/s4/res/0143315b-ff42-4b6e-9bc0-fda4a6d0fe77.jpg)
tenant_network_types = flat
指定普通用户创建的网络类型为 flat。 需要注意的是:因为 flat 网络与物理网卡一 一对应,一般情况下租户网络不会采用 flat,这里只是示例。
接着需要指明 flat 网络与物理网卡的对应关系。
![](https://app.yinxiang.com/shard/s4/res/b5c5eb4c-c975-4dee-b31e-734980444ed4.jpg)
![](https://app.yinxiang.com/shard/s4/res/97489ab7-0c4f-43e0-b5f5-9334ebad8f0c.jpg)
如上所示:
1. 在 [ml2_type_flat] 中通过 flat_networks 定义了一个 flat 网络,label 为 “default”。
2. 在 [linux_bridge] 中通过 physical_interface_mappings 指明 default 对应的物理网卡为 eth1。
理解 label 与 ethX 的关系
label 是 flat 网络的标识,在创建 flat 时需要指定 label(后面演示)。label 的名字可以是任意字符串,只要确保各个节点 ml2_conf.ini 中的 label 命名一致就可以了。
各个节点中 label 与物理网卡的对应关系可能不一样。这是因为每个节点可以使用不同的物理网卡将 instance 连接到 flat network。
例如对于 label 为 “default” 的 flat network,节点 A 可能使用 eth1,配置为:
physical_interface_mappings = default:eth1
而节点 B 则可能使用 eth2,配置为:
physical_interface_mappings = default:eth2
支持多个 flat
如果要创建多个 flat 网络,需要定义多个 label,用逗号隔开,当然也需要用到多个物理网卡,如下所示:
[ml2_type_flat]flat_networks = flat1,flat2[linux_bridge]physical_interface_mappings = flat1:eth1,flat2:eth2
在dashoard创建flat network
执行 brctl show,查看控制节点当前的网络结构。
![](https://app.yinxiang.com/shard/s4/res/fd36875c-7178-4472-b5a4-9c7d36b32d5d.jpg)
Neutron 自动新建了 flat_net 对应的网桥 brqf153b42f-c3,以及 dhcp 的 tap 设备 tap19a0ed3d-fe。 另外,tap19a0ed3d-fe 和物理网卡 eth1 都已经连接到 bridge。
此时 flat_net 结构如图所示:
![](https://app.yinxiang.com/shard/s4/res/c30a3dba-68c7-4ab2-bd42-2b1482fa13dc.jpg)
创建实例连接flat network,并创建在控制节点
![](https://app.yinxiang.com/shard/s4/res/32af33b2-f8fe-4add-ac8b-86afd8ac3a93.jpg)
当前 flat_net 的结构如下:
![](https://app.yinxiang.com/shard/s4/res/35f0ba3d-70f8-434d-8573-9250e68a43a9.jpg)
创建第二个实例:
cirros-vm2 被 schedule 到计算节点,对应的 tap 设备为 tapfb3fb197-24,并且连接到 bridge。
![](https://app.yinxiang.com/shard/s4/res/07310435-a37f-4c5b-8d5d-d8e4cfaa96a9.jpg)
这里有两点需要提醒:
-
因为计算节点上没有 hdcp 服务,所以 brctl show 中没有 dhcp 对应的 tap 设备。
-
计算节点上 bridge 的名称与控制节点上一致,都是 brqf153b42f-c3,表明是同一个 network。
当前 flat_net 的结构如下:
![](https://app.yinxiang.com/shard/s4/res/3c34d9fd-8ca7-43db-b79d-01a9047b37df.jpg)
测试两个实例的连通性,发现是可以相互通信的