openstack neutron namespace

Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 如何独立的为每个 network 服务呢?
答案是通过 Linux Network Namespace 隔离.
Neutron 通过 namespace 为每个 network 提供独立的 DHCP 和路由服务,从而允许租户创建重叠的网络。
如果没有 namespace,网络就不能重叠,这样就失去了很多灵活性。

每个 dnsmasq 进程都位于独立的 namespace, 命名为
qdhcp-,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@bj-oam-op-con01 ~(keystone_admin)]# neutron net-list
+--------------------------------------+-------------------+-----------------------------------------------------+
| id | name | subnets |
+--------------------------------------+-------------------+-----------------------------------------------------+
| 57bea147-680a-43eb-9eb5-29644c614974 | test-deployment01 | 43cc0340-f03f-471b-9851-1035424e209b 192.168.0.0/24 |
| 9ad1b638-a53e-4ab8-ad91-5a7f5cf90513 | provider-800 | 49e882c7-fd14-48fb-b207-3ffba660a968 172.28.4.0/22 |
+--------------------------------------+-------------------+-----------------------------------------------------+
[root@bj-oam-op-con01 ~(keystone_admin)]# ip netns list
qdhcp-57bea147-680a-43eb-9eb5-29644c614974
qdhcp-9ad1b638-a53e-4ab8-ad91-5a7f5cf90513
ip netns exec 9ad1b638-a53e-4ab8-ad91-5a7f5cf90513 ip a #查看该名称空间的ip地址列表