2019独角兽企业重金招聘Python工程师标准>>>

上一节我们创建了虚拟路由器“router_100_101”,并通过 ping 验证了 vlan100 和 vlan101 已经连通。

本节将重点分析其中的原理。

首先我们查看控制节点的 linux bridge 结构发生了什么变化。

vlan101 的 bridge 上多了一个 tape17162c5-00,从命名上可以推断该 TAP 设备对应 router_100_101 的 interface (e17162c5-00fa)。

vlan100 的 bridge 上多了一个 tapd568ba1a-74,从命名上可以推断该 TAP 设备对应 router_100_101 的 interface (d568ba1a-740e)。

当前网络结构如图所示:

但发现一个问题:两个 TAP 设备上并没有配置相应的 Gateway IP。

如果没有 Gateway IP,router_100_101 是如何完成路由的呢?

答案是: l3 agent 会为每个 router 创建了一个 namespace,通过 veth pair 与 TAP 相连,然后将 Gateway IP 配置在位于 namespace 里面的 veth interface 上,这样就能提供路由了。

通过 ip netns 查看 namespace:

router 对应的 namespace 命名为 qrouter-<router id>。

通过 ip netns exec <namespace name> ip a 命令查看 router_100_101 namespace 中的 veth interface 配置。

namespace 中有两个 interface:

  1. qr-e17162c5-00 上设置了 Gateway IP 172.16.101.1,与 root namespace 中的 tape17162c5-00 组成 veth pair。

  2. qr-d568ba1a-74 上设置了 Gateway IP 172.16.100.1,与 root namespace 中的 tapd568ba1a-74 组成 veth pair。

网络结构如图所示:

namespace 中的路由表也保证了 subnet_172_16_100_0 和 subnet_172_16_101_0 之间是可以路由的。

分析到这里,我们已经搞清楚 router_100_101 是如何打通 vlan100 和 vlan 101 了。

但这里有一个关键问题需要进一步分析:
为什么要把 router_100_101 放到 namespace 中?

下一节我们将详细分析这个问题。

转载于:https://my.oschina.net/u/2397560/blog/760390

虚拟 ​router 原理分析- 每天5分钟玩转 OpenStack(101)相关推荐

  1. 用虚拟 router 连通 subnet - 每天5分钟玩转 OpenStack(141)

    Neutron Routing 服务提供跨 subnet 互联互通的能力. 例如前面我们搭建了实验环境: cirros-vm1      172.16.100.3        vlan100 cir ...

  2. OVS VxLAN Flow 分析 - 每天5分钟玩转 OpenStack(149)

    OVS 的数据流向都是由 Flow 规则控制的,今天我们就来分析 VxLAN 的 Flow 规则. 提个醒:这可能是本教程最烧脑的一节,let's rock it ! 下面分析控制节点上的 flow ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. D-Link云摄像头超过120款产品存在漏洞,约40万台设备受影响
  2. Oracle 12c R2来了!
  3. JUnit 5 –参数化测试
  4. ubuntun 16.04 protobuf安装过程
  5. 港中文等提出:开放世界实体分割
  6. 软工实践(二)——构建之法读后感
  7. 响应式布局技术:App如何适配不同尺寸的设备
  8. stacking模型融合_算法实践七:模型融合
  9. mac 企业微信,微信,来消息不通知解决方法
  10. 转载 提高github下载速度的方法【100%有效】可达到2MB/s
  11. 如何将pdf转换成txt转换器破解版
  12. 快来看,令开发者们头痛的收款到底如何解决?(包括Ironsource,Unity,Applovin等平台)
  13. linux keynav 鼠标可以扔掉了键盘控制鼠标
  14. 插件式换肤框架搭建 - 资源加载源码分析
  15. FPGA几大厂商介绍,你知道的有哪些呢?
  16. 数值分析学习(一)之交叉法(Bracketing Methods)求根
  17. GIN 3-封装数据库
  18. 基于AIE的贵阳市两湖一库水体区域识别
  19. LeetCode 887. 三维形体投影面积
  20. Python 编程精选

热门文章

  1. 编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法...
  2. 女程序员做了个梦,众网友的神回复
  3. RDIFramework.NET(.NET快速信息化系统开发框架) Web版介绍
  4. Quartz+Spring 自定义作业调度(作业在DB中配置)
  5. Linux Enterprise Cluster选译
  6. 无敌命令 就没有杀不死的进程!
  7. ZooKeeper Notes 9】ZooKeepr日志清理
  8. android Launcher——数据加载与变更
  9. mysql学习【第2篇】:基本操作和存储引擎
  10. 下载早期版本的JDK