开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

将 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 的连通性。



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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
创建 OVS vlan101 并部署 instance - 每天5分钟玩转 OpenStack(139)
前面我们创建了 OVS vlan100 并部署了 instance,今天继续创建 vlan101。 subnet IP 地址为 172.16.101.0/24。 底层网络发生了什么变化 Neutron 自动在 br-int 网桥上创建了 vlan100 dhcp 的接口 “tap1820558c-0a”。
893 0
部署 instance 到 OVS vlan100 - 每天5分钟玩转 OpenStack(138)
上一节创建了 OVS vlan network vlan100,今天部署 instance 到该网络。launch 新的 instance “cirros-vm1”,网络选择 vlan100。 cirros-vm1 分配到的 IP 为 172.16.100.3。
973 0
创建 OVS Local Network - 每天5分钟玩转 OpenStack(129)
上一节我们完成了 OVS 的准备工作,本节从最基础的 local network 开始学习。local network 不会与宿主机的任何物理网卡连接,流量只被限制在宿主机内,同时也不关联任何的 VLAN ID。
619 0
配置 LBaaS - 每天5分钟玩转 OpenStack(121)
上一节学习了 Neutron LBaaS 的原理,今天开始实践。首先在配置中启用 LBaaS 服务。 Neutron 通过 lbaas plugin 和 lbaas agent 提供 LBaaS 服务。
913 0
创建第一个 local network(I) - 每天5分钟玩转 OpenStack(80)
在 ML2 配置文件中 enable local network 后,本节将开始创建第一个 local network。   我们将通过 Web GUI 创建第一个 local network。
759 0
计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)
Rebuild 可以恢复损坏的 instance。 那如果是宿主机坏了怎么办呢? 比如硬件故障或者断电造成整台计算节点无法工作,该节点上运行的 instance 如何恢复呢? 用 Shelve 或者 Migrate 可不可以? 很不幸,这两个操作都要求 instance 所在计算节点的 nova-compute 服务正常运行。
770 0
23704
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载