用 namspace 隔离 DHCP 服务 - 每天5分钟玩转 OpenStack(90)

简介:

Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 如何独立的为每个 network 服务呢?

答案是通过 Linux Network Namespace 隔离,本节将详细讨论。

在二层网络上,VLAN 可以将一个物理交换机分割成几个独立的虚拟交换机。 类似地,在三层网络上,Linux network namespace 可以将一个物理三层网络分割成几个独立的虚拟三层网络。

每个 namespace 都有自己独立的网络栈,包括 route table,firewall rule,network interface device 等。

Neutron 通过 namespace 为每个 network 提供独立的 DHCP 和路由服务,从而允许租户创建重叠的网络。
如果没有 namespace,网络就不能重叠,这样就失去了很多灵活性。

每个 dnsmasq 进程都位于独立的 namespace, 命名为 qdhcp-<network id>,例如 flat_net,我们有:

ip netns list 命令列出所有的 namespace。 qdhcp-f153b42f-c3a1-4b6c-8865-c09b5b2aa274 就是 flat_net 的 namespace。

其实,宿主机本身也有一个 namespace,叫 root namespace,拥有所有物理和虚拟 interface device。 物理 interface 只能位于 root namespace。

新创建的 namespace 默认只有一个 loopback device。 管理员可以将虚拟 interface,例如 bridge,tap 等设备添加到某个 namespace。

对于 flat_net 的 DHCP 设备 tap19a0ed3d-fe,需要将其放到 namespace qdhcp-f153b42f-c3a1-4b6c-8865-c09b5b2aa274 中,但这样会带来一个问题: tap19a0ed3d-fe 将无法直接与 root namespace 中的 bridge 设备 brqf153b42f-c3 连接。

Neutron 使用 veth pair 解决了这个问题

veth pair 是一种成对出现的特殊网络设备,它们象一根虚拟的网线,可用于连接两个 namespace。向 veth pair 一端输入数据,在另一端就能读到此数据。

tap19a0ed3d-fe 与 ns-19a0ed3d-fe 就是一对 veth pair,它们将 qdhcp-f153b42f-c3a1-4b6c-8865-c09b5b2aa274 连接到 brqf153b42f-c3。如下图所示:

可以通过 ip netns exec <network namespace name> <command> 管理 namespace。 例如查看 ns-19a0ed3d-fe 的配置:

理解了 namespace,下一节我们分析 instance 从 dnsmasq 获取 IP 的详细过程。

 

blob.png


本文转自CloudMan6 51CTO博客,原文链接:
http://blog.51cto.com/cloudman/1855662


相关文章
|
4月前
|
安全 API 网络安全
OpenStack的 网络服务(Neutron)
【8月更文挑战第23天】
274 10
|
3月前
|
存储 消息中间件 算法
深入解析OpenStack Cinder:块存储服务详解
本文介绍了OpenStack及其块存储服务Cinder。OpenStack是一个开源云计算管理平台,提供基础设施即服务(IaaS),核心服务包括计算、网络、存储等。Cinder主要用于为虚拟机提供持久性块存储,具备多种功能,如卷操作、备份、快照及与实例的交互等。此外,还详细介绍了Cinder的工作流程、命令行操作及不同存储插件的使用。
504 8
|
5月前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
|
6月前
|
Ubuntu
ubuntu 开启dhcp服务并配置
ubuntu 开启dhcp服务并配置
362 2
|
6月前
|
网络协议
DHCP服务详解
DHCP服务详解
288 0
|
7月前
|
Windows
Windows2016 搭建 DHCP服务
Windows2016 搭建 DHCP服务
|
7月前
|
网络协议 Shell Linux
DHCP服务
DHCP协议用于集中管理分配IP地址,简化网络管理员工作,防止IP冲突,便于网络结构调整和客户端配置。在Redhat 9环境下,通过yum安装DHCP服务器,配置服务端包括编辑配置文件设定IP范围、DNS和网关等信息,启动并设置DHCP服务开机启动。客户端关闭VMware自带DHCP,修改连接为自动获取,成功从服务器获取新IP地址。
105 1
|
7月前
|
运维 网络协议 Linux
Linux DHCP服务详解
Linux DHCP服务详解
119 4
|
网络协议 Linux 网络安全
openstack 云平台一体化部署(超详细)
openstack 云平台一体化部署(超详细)
1322 0
openstack 云平台一体化部署(超详细)
|
4月前
|
消息中间件 缓存 Shell
跟我一起来学OpenStack部署
跟我一起来学OpenStack部署
319 0