将 instance 部署到 OVS Local Network - 每天5分钟玩转 OpenStack(130)

上一节创建了 OVS 本地网络 first_local_net,今天我们会部署一个 instance 到该网络并分析网络结构。
launch 一个 instance,选择 first_local_net 网络

instance 部署成功,分配的 IP 地址为 172.16.1.3

底层网络发生了什么变化?
对于 instance “cirros-vm1”,Neutron 会在 subnet 中创建一个 port,分配 IP 和 MAC 地址,并将 port 分配给 cirros-vm1。

如上图所示,port 列表中增加了一个 port “(fc1c6ebb-719d)”,IP 为 172.16.1.3,点击 port 名称查看 MAC 信息。

我们可以先按照在 linux bridge driver 章节学到的知识推测一下:
Open vSwitch driver 会如何将 cirros-vm1 连接到 first_local_net?
如果采用类似的实现方法,neutron-openvswitch-agent 会根据 port 信息创建 tap 设备 tapfc1c6ebb-71,并将其连接到 br-int 网桥,tapfc1c6ebb-71 就是 cirros-vm1 的虚拟网卡。
下面我们验证一下事实是否如此:
cirros-vm1 部署到了控制节点,通过 ovs-vsctl show 查看 bridge 的配置:

非常遗憾,在 br-int 上并没有看到 tapfc1c6ebb-71,而是多了一个 qvofc1c6ebb-71。
目前我们并不知道 qvofc1c6ebb-71 是什么,我们再用 brctl show 查看一下 linux bridge 的配置:

这里我们看到有一个新建的网桥 qbrfc1c6ebb-71,上面连接了两个设备 qvbfc1c6ebb-71 和 tapfc1c6ebb-71。
从命名上看,他们都应该与 cirros-vm1 的虚拟网卡有关。
通过 virsh edit 查看 cirros-vm1 的配置:

确实 tapfc1c6ebb-71 是 cirros-vm1 的虚拟网卡。
那么 linux bridge qbrfc1c6ebb-71 上的 qvbfc1c6ebb-71 设备与 Open vSwitch br-int 上的 qvofc1c6ebb-71 是什么关系呢?
下面的内容稍微需要一些技巧了。
我们用 ethtool -S 分别查看 qvbfc1c6ebb-71 和 qvofc1c6ebb-71 的 statistics。

原来 qvbfc1c6ebb-71 和 qvofc1c6ebb-71 都是 veth 设备,它们对应的另一端 veth 设备 的 index 分别是 12 和 13。
通过 ip a 命令找到 index 12 和 13 的设备。

到这里,相信有同学已经看出来了:qvbfc1c6ebb-71 和 qvofc1c6ebb-71 组成了一个 veth pair。
我们之前介绍过,veth pair 是一种成对出现的特殊网络设备,它们象一根虚拟的网线连接两个网络设备。
这里 qvbfc1c6ebb-71 和 qvofc1c6ebb-71 的作用就是连接网桥 qbrfc1c6ebb-71 和 br-int。
文字描述往往是不够直观的,下面我们将前面梳理好的信息通过图片展示出来。

由图所示,tapfc1c6ebb-71 通过 qbrfc1c6ebb-71 间接连接到 br-int。
那问题来了,为什么 tapfc1c6ebb-71 不能像左边的 DHCP 设备 tap7970bdcd-f2 那样直接连接到 br-int 呢?
其原因是: Open vSwitch 目前还不支持将 iptables 规则放在与它直接相连的 tap 设备上。
如果做不到这一点,就无法实现 Security Group 功能。
为了支持 Security Group,不得不多引入一个 Linux Bridge 支持 iptables。
这样的后果就是网络结构更复杂了,路径上多了一个 linux bridge 和 一对 veth pair 设备。
下节我们再部署一个 instance 到 first_local_network 并验证两个 instance 的连通性。

将 instance 部署到 OVS Local Network - 每天5分钟玩转 OpenStack(130)的更多相关文章
- 创建 OVS Local Network - 每天5分钟玩转 OpenStack(129)
上一节我们完成了 OVS 的准备工作,本节从最基础的 local network 开始学习.local network 不会与宿主机的任何物理网卡连接,流量只被限制在宿主机内,同时也不关联任何的 VL ...
- 在 ML2 中配置 OVS flat network - 每天5分钟玩转 OpenStack(133)
前面讨论了 OVS local network,今天开始学习 flat network. flat network 是不带 tag 的网络,宿主机的物理网卡通过网桥与 flat network 连接, ...
- 部署 instance 到 OVS flat network - 每天5分钟玩转 OpenStack(135)
上一节创建了 OVS flat network,今天我们部署 instance 并验证 flat 网络的连通性. launch 新的 instance "cirros-vm1",网 ...
- 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)
上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 ...
- 创建 OVS flat network - 每天5分钟玩转 OpenStack(134)
上一节完成了 flat 的配置工作,今天创建 OVS flat network.Admin -> Networks,点击 "Create Network" 按钮. 显示创建页 ...
- 创建第二个 local network - 每天5分钟玩转 OpenStack(84)
GUI 中有两个地方可以创建 network: 1. Project -> Network -> Networks 这是普通用户在自己的 tenant 中创建 network 的地方. 2 ...
- 在 ML2 中配置 OVS vlan network - 每天5分钟玩转 OpenStack(136)
前面我们已经学习了 OVS 的 local 网络 和 falt 网络,今天开始讨论 vlan 网络. vlan network 是带 tag 的网络. 在 Open vSwitch 实现方式下,不同 ...
- 在 ML2 中 enable local network - 每天5分钟玩转 OpenStack(79)
前面完成了一系列准备工作,本节开始将创建各种 Neutorn 网络,我们首先讨论 local network. local network 的特点是不会与宿主机的任何物理网卡相连,也不关联任何的 VL ...
- 创建 OVS vlan100 netwrok - 每天5分钟玩转 OpenStack(137)
上一节完成了 OVS vlan network 的配置准备工作,今天我们创建 vlan100.打开菜单 Admin -> Networks,点击 "Create Network&quo ...
随机推荐
- C# DateTime与时间戳转换
C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳. 1. 什么是时间戳 首先要清楚JavaScript与Unix的时间戳的区别: JavaScript时间戳: ...
- java中servlet的各种路径
1. web.xml中<url-pattern>路径,(叫它Servlet路径!) > 要么以“*”开关,要么为“/”开头 2. 转发和包含路径 > *****以“/”开头:相 ...
- 标准产品+定制开发:专注打造企业OA、智慧政务云平台——山东森普软件,交付率最高的技术型软件公司
一.公司简介山东森普信息技术有限公司(以下简称森普软件)是一家专门致力于移动互联网产品.企业管理软件定制开发的技术型企业.公司总部设在全国五大软件园之一的济南齐鲁软件园.森普SimPro是由Simpl ...
- Python标准库--typing
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...
- 操作系统篇-分段机制与GDT|LDT
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的. ...
- 【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理
干货!详述Python NLTK下如何使用stanford NLP工具包 作者:白宁超 2016年11月6日19:28:43 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的 ...
- [转载]Cookie/Session的机制与安全
Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...
- [算法]——快速排序(Quick Sort)
顾名思义,快速排序(quick sort)速度十分快,时间复杂度为O(nlogn).虽然从此角度讲,也有很多排序算法如归并排序.堆排序甚至希尔排序等,都能达到如此快速,但是快速排序使用更加广泛,以至于 ...
- GSD_WeiXin(高仿微信)应用源码
高仿微信计划:已经实现功能 1.微信首页(cell侧滑编辑.下拉眼睛动画.下拉拍短视频.点击进入聊天详情界面) 2.通讯录(联系人字母排序.搜索界面) 3.发现(朋友圈) 4.我(界面) 待实现功能( ...
- Linux学习日记-WCF RestFul的部署(三)
一.关于WCF 的部署 默认的wshttp风格的wcf是很容易部署上去的,但是这里给个建议尽量不要使用WCF的配置文件去部署尽管 我们都已经很熟悉了,在使用配置文件你会发现各种蛋疼的问题. 二.WCF ...