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

[经验分享] Openstack中的DVR Part1

[复制链接]

尚未签到

发表于 2018-6-2 06:36:03 | 显示全部楼层 |阅读模式
文档源地址:http://www.tuicool.com/articles/aaYJFn3
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明


在Openstack中L3router会造成流量集中的问题。不论东西向还是南北向的流量都需要流过网络节点的虚拟路由器。为了解决流量集中的问题,社区正在开打分布式虚拟路由器(DVR)的feature。本文focus在DVR中东西向流量的处理流程。南北向的处理不在本文范围内。
首先看一下东西向流量存在的问题。 一个用户创建了一个VRoute1(在Network Node上)和两个虚拟网络Net1、Net2,然后在两个网络中分别起了一个虚机,假设这两个虚机分别在Compute Node1和Compute Node2上。可以看到当VM1想要和VM2通信时,数据需要集中到Network Node,因而产生了东西向流量集中的问题。如下图所示:
DSC0000.png
为了解决这个问题引入了DVR,将东西向流量分布在各个计算节点上做到了真正的Multi-Host。
为了分析packet flow做以下假设:
1. VM1 和 VM2如上图所示,是属于Net1和Net2的两个虚机,他们分别在Compute Node1 和Compute Node2上。
2. Net1和Net2连接到了VRouter上。
3. Compute Node1和Compute Node2的连接方式是Vlan。
4. VM1和VM2使用fixed ip通信,不涉及floating ip。
5. 使用DVR时,会在每一个计算节点上建立IR(Internal Router),假设连接Net1和Net2的接口是qr-net1和qr-net2。
拓扑如下图:
DSC0001.png

启用DVR需要在compute node上安装neutron-l3-agent,并且要打开DVR mode。同时需要修改neutron-openvswitch-agent为DVR mode:
DSC0002.png
就以从VM1发一个包到VM2为例分析东西向包的数据流。
包从VM1发出时,由于默认网关是qr-net1,就会发出以下格式的包:
DSC0003.png
当包流到br-int会转发到qr-net1,这样就进入了Compute Node1的Internal Router1。在IR1中查找路由,发现目标地址是属于Net2。而在IR1的ARP表中有所有VM的Static ARP Entry。因此目标地址为VM2就会已经存在ARP Entry,不会发出ARP Request。ARP表是在neutron-l3-agent中维护的。当有新增/删除虚机时,都会修改此ARP表。
包就会从qr-net2接口转发出。格式如下:
DSC0004.png
当包流入br-int后,会将其转发到br-eth0。br-eth0会将包的Vlan改为外部Vlan,同时通过openflow rule会将Source MAC改为一个唯一且与ComputeNode绑定的MAC地址。这个唯一MAC地址是由DVR生成的。同时在br-eth0上也有阻止对qr-net1和qr-net2的ARP请求的rule,这样就能保证本机的VM使用本机的Internal Router。
Notes:
为什么要这个与Compute Node绑定的唯一MAC呢?主要原因是每个Compute Node上都有IR1,同时qr-net1和qr-net2接口IP地址和MAC地址都是相同的。假设不修改Source MAC,那各个计算节点上的OVS以及外部物理交换机会从不同的端口收到相同源MAC地址的包,这会造成交换机MAC地址表thrashing。虽然即使使用了唯一MAC还是会出现不同Vlan id但MAC地址相同的情况,但这种情况影响要小的多。
DSC0005.png
当包流入br-int后,会将其转发到br-eth0。br-eth0会将包的Vlan改为外部Vlan,同时通过openflow rule会将Source MAC改为一个唯一且与ComputeNode绑定的MAC地址。这个唯一MAC地址是由DVR生成的。同时在br-eth0上也有阻止对qr-net1和qr-net2的ARP请求的rule,这样就能保证本机的VM使用本机的Internal Router。
Notes:
为什么要这个与Compute Node绑定的唯一MAC呢?主要原因是每个Compute Node上都有IR1,同时qr-net1和qr-net2接口IP地址和MAC地址都是相同的。假设不修改Source MAC,那各个计算节点上的OVS以及外部物理交换机会从不同的端口收到相同源MAC地址的包,这会造成交换机MAC地址表thrashing。虽然即使使用了唯一MAC还是会出现不同Vlan id但MAC地址相同的情况,但这种情况影响要小的多。
DSC0006.png

Refer:
https://blueprints.launchpad.net/neutron/+spec/neutron-ovs-dvr
https://wiki.openstack.org/wiki/Neutron/DVR_L2_Agent
https://review.openstack.org/#/q/topic:bp/neutron-ovs-dvr,n,z
  

运维网声明 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-505920-1-1.html 上篇帖子: 使用Fuel安装OpenStack juno之二安装OpenStack 下篇帖子: 使用Fuel安装OpenStack juno之三使用OpenStack创建云主机和Volume
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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