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 的详细过程。

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

  1. 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)

    http://www.cnblogs.com/CloudMan6/p/5402490.html 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22) 本节首先讨论 p_ ...

  2. 部署 DevStack - 每天5分钟玩转 OpenStack(17)

    http://www.cnblogs.com/CloudMan6/p/5357273.html 部署 DevStack - 每天5分钟玩转 OpenStack(17) 本节按照以下步骤部署 DevSt ...

  3. Cinder 组件详解 - 每天5分钟玩转 OpenStack(47)

    Cinder 组件详解 - 每天5分钟玩转 OpenStack(47) 本节我们将详细讲解 Cinder 的各个子服务. cinder-api cinder-api 是整个 Cinder 组件的门户, ...

  4. 每天5分钟玩转openstack跟学(一)预备知识

    前言:对于openstack我是一名小白,打算跟着CloudMan的<每天5分钟玩转openstack>进行学习,有兴趣的小伙伴可以跟着我一起,相互探讨,互相进步,该系列博文基本不涉及原理 ...

  5. 写在最前面 - 每天5分钟玩转 OpenStack(1)

    写在最前面 <每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节 ...

  6. LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)

    http://www.cnblogs.com/CloudMan6/p/5277927.html LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8) LVM 类型的 ...

  7. Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)

    Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34) 本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instan ...

  8. 获取 metadata 的完整例子 - 每天5分钟玩转 OpenStack(166)

    我们将通过实验详细分析 instance 从 nova-api-metadata 获取信息的完整过程. 环境介绍 1. 一个 all-in-one 环境(多节点类似). 2. 已创建 neutron ...

  9. 实践 config drive - 每天5分钟玩转 OpenStack(170)

    如果 instance 无法通过 metadata service 获取 metadata(无 DHCP 或者 nova-api-metadata 服务),instance 还可以通过 config ...

最新文章

  1. pandas使用read_csv函数读取文件最后N行数据并保留表头、pandas使用read_csv函数读取网络url链接数据
  2. angular-ng-repeat不允许collection中存在两个相同Id的对象
  3. 两次include一个文件的问题
  4. C# 创建Windows服务。服务功能:定时操作数据库
  5. html5效果源码,10款web前端值得学习的 HTML5 效果附源码
  6. BUUCTF-- Linux Labs 1---SSH远程登陆
  7. 困扰多年的PCB散热问题终于可以解决了!
  8. java小数丢失精度_Java中的小数运算与精度损失
  9. 【报告分享】2021中国数据智能产业发展研究报告.pdf(附下载链接)
  10. 以links方式安装eclipse插件
  11. for myself
  12. matlab gabor 滤波器
  13. JAVA_if或者怎么用_Java条件语句if的使用方法介绍
  14. Java logging整理
  15. 2016/2/13 《计算机系统要素》(The Elements of Computing Systems)读书笔记(1)
  16. ASP.net 中 OutputCache 指令各个参数的作用。
  17. 测井曲线fft matlab,Matlab编程实现FFT实践及频谱分析
  18. 视频录制软件哪个好,推荐几款简单实用的视频课件录制软件
  19. fei 正则表达式_正则表达式 匹配 中文/日文/韩文
  20. 牛客-Java计算个人所得税

热门文章

  1. python的range()和list操作
  2. 15- 深度学习之神经网络核心原理与算法-多gpu实现CNN图片分类
  3. Python 人脸识别 OpenCV (haarcascades)
  4. 编译安装 redis 2.2.14
  5. 【No.9 内存泄漏了么】
  6. Android 高级自定义View实战
  7. 协作与大数据构建新型打假模式
  8. 浅谈压缩感知(二十一):压缩感知重构算法之正交匹配追踪(OMP)
  9. 用GDB调试程序(一)
  10. phonegap+jquerymobile开发android的心得(6)