设为首页 收藏本站
查看: 1176|回复: 0

[经验分享] 将 instance 部署到 OVS Local Network

[复制链接]

尚未签到

发表于 2017-6-26 14:32:44 | 显示全部楼层 |阅读模式
   DSC0000.jpg
  上一节创建了 OVS 本地网络 first_local_net,今天我们会部署一个 instance 到该网络并分析网络结构。
launch 一个 instance,选择 first_local_net 网络
   DSC0001.jpg
  instance 部署成功,分配的 IP 地址为 172.16.1.3
   DSC0002.jpg
底层网络发生了什么变化?
  对于 instance “cirros-vm1”,Neutron 会在 subnet 中创建一个 port,分配 IP 和 MAC 地址,并将 port 分配给 cirros-vm1。
   DSC0003.jpg
  如上图所示,port 列表中增加了一个 port “(fc1c6ebb-719d)”,IP 为 172.16.1.3,点击 port 名称查看 MAC 信息。
   DSC0004.jpg
  我们可以先按照在 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 的配置:
   DSC0005.jpg
  非常遗憾,在 br-int 上并没有看到 tapfc1c6ebb-71,而是多了一个 qvofc1c6ebb-71。目前我们并不知道 qvofc1c6ebb-71 是什么,我们再用 brctl show 查看一下 linux bridge 的配置:
   DSC0006.jpg
  这里我们看到有一个新建的网桥 qbrfc1c6ebb-71,上面连接了两个设备 qvbfc1c6ebb-71 和 tapfc1c6ebb-71。
从命名上看,他们都应该与 cirros-vm1 的虚拟网卡有关。
  通过 virsh edit 查看 cirros-vm1 的配置:
   DSC0007.jpg
  确实 tapfc1c6ebb-71 是 cirros-vm1 的虚拟网卡。那么 linux bridge qbrfc1c6ebb-71 上的 qvbfc1c6ebb-71 设备与 Open vSwitch br-int 上的 qvofc1c6ebb-71 是什么关系呢?
  下面的内容稍微需要一些技巧了。我们用 ethtool -S 分别查看 qvbfc1c6ebb-71 和 qvofc1c6ebb-71 的 statistics。
   DSC0008.jpg
  原来 qvbfc1c6ebb-71 和 qvofc1c6ebb-71 都是 veth 设备,它们对应的另一端 veth 设备 的 index 分别是 12 和 13。通过 ip a 命令找到 index 12 和 13 的设备。
   DSC0009.jpg
  到这里,相信有同学已经看出来了:qvbfc1c6ebb-71 和 qvofc1c6ebb-71 组成了一个 veth pair
我们之前介绍过,veth pair 是一种成对出现的特殊网络设备,它们象一根虚拟的网线连接两个网络设备。
这里 qvbfc1c6ebb-71 和 qvofc1c6ebb-71 的作用就是连接网桥 qbrfc1c6ebb-71 和 br-int。
  文字描述往往是不够直观的,下面我们将前面梳理好的信息通过图片展示出来。
   DSC00010.jpg
  由图所示,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 的连通性。
   DSC00011.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-388194-1-1.html 上篇帖子: Openstack Swift 原理、架构与 API 介绍 下篇帖子: Attach Volume 操作(Part I)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表