虚拟 router 原理分析- 每天5分钟玩转 OpenStack(101)
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:
qr-e17162c5-00 上设置了 Gateway IP 172.16.101.1,与 root namespace 中的 tape17162c5-00 组成 veth pair。
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)相关推荐
- 用虚拟 router 连通 subnet - 每天5分钟玩转 OpenStack(141)
Neutron Routing 服务提供跨 subnet 互联互通的能力. 例如前面我们搭建了实验环境: cirros-vm1 172.16.100.3 vlan100 cir ...
- OVS VxLAN Flow 分析 - 每天5分钟玩转 OpenStack(149)
OVS 的数据流向都是由 Flow 规则控制的,今天我们就来分析 VxLAN 的 Flow 规则. 提个醒:这可能是本教程最烧脑的一节,let's rock it ! 下面分析控制节点上的 flow ...
- LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)
http://www.cnblogs.com/CloudMan6/p/5277927.html LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8) LVM 类型的 ...
- Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)
Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34) 本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instan ...
- 部署 DevStack - 每天5分钟玩转 OpenStack(17)
http://www.cnblogs.com/CloudMan6/p/5357273.html 部署 DevStack - 每天5分钟玩转 OpenStack(17) 本节按照以下步骤部署 DevSt ...
- 每天5分钟玩转openstack跟学(一)预备知识
前言:对于openstack我是一名小白,打算跟着CloudMan的<每天5分钟玩转openstack>进行学习,有兴趣的小伙伴可以跟着我一起,相互探讨,互相进步,该系列博文基本不涉及原理 ...
- 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)
http://www.cnblogs.com/CloudMan6/p/5402490.html 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22) 本节首先讨论 p_ ...
- Cinder 组件详解 - 每天5分钟玩转 OpenStack(47)
Cinder 组件详解 - 每天5分钟玩转 OpenStack(47) 本节我们将详细讲解 Cinder 的各个子服务. cinder-api cinder-api 是整个 Cinder 组件的门户, ...
- 写在最前面 - 每天5分钟玩转 OpenStack(1)
写在最前面 <每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节 ...
最新文章
- D-Link云摄像头超过120款产品存在漏洞,约40万台设备受影响
- Oracle 12c R2来了!
- JUnit 5 –参数化测试
- ubuntun 16.04 protobuf安装过程
- 港中文等提出:开放世界实体分割
- 软工实践(二)——构建之法读后感
- 响应式布局技术:App如何适配不同尺寸的设备
- stacking模型融合_算法实践七:模型融合
- mac 企业微信,微信,来消息不通知解决方法
- 转载 提高github下载速度的方法【100%有效】可达到2MB/s
- 如何将pdf转换成txt转换器破解版
- 快来看,令开发者们头痛的收款到底如何解决?(包括Ironsource,Unity,Applovin等平台)
- linux keynav 鼠标可以扔掉了键盘控制鼠标
- 插件式换肤框架搭建 - 资源加载源码分析
- FPGA几大厂商介绍,你知道的有哪些呢?
- 数值分析学习(一)之交叉法(Bracketing Methods)求根
- GIN 3-封装数据库
- 基于AIE的贵阳市两湖一库水体区域识别
- LeetCode 887. 三维形体投影面积
- Python 编程精选
热门文章
- 编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法...
- 女程序员做了个梦,众网友的神回复
- RDIFramework.NET(.NET快速信息化系统开发框架) Web版介绍
- Quartz+Spring 自定义作业调度(作业在DB中配置)
- Linux Enterprise Cluster选译
- 无敌命令 就没有杀不死的进程!
- ZooKeeper Notes 9】ZooKeepr日志清理
- android Launcher——数据加载与变更
- mysql学习【第2篇】:基本操作和存储引擎
- 下载早期版本的JDK