ITPub博客

首页 > 云计算 > 虚拟化 > Openstack中的DVR Part1 -- 东西向流量处理

Openstack中的DVR Part1 -- 东西向流量处理

虚拟化 作者:hxw2ljj 时间:2015-11-18 08:57:46 0 删除 编辑
在Openstack中L3router会造成流量集中的问题。不论东西向还是南北向的流量都需要流过网络节点的虚拟路由器。为了解决流量集中的问题,社区正在开打分布式虚拟路由器(DVR)的feature。本文focus在DVR中东西向流量的处理流程。南北向的处理不在本文范围内。


首先看一下东西向流量存在的问题。 一个用户创建了一个VRoute1(在Network Node上)和两个虚拟网络Net1、Net2,然后在两个网络中分别起了一个虚机,假设这两个虚机分别在Compute Node1和Compute Node2上。可以看到当VM1想要和VM2通信时,数据需要集中到Network Node,因而产生了东西向流量集中的问题。如下图所示:

为了解决这个问题引入了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。

拓扑如下图:
 

启用DVR需要在compute node上安装neutron-l3-agent,并且要打开DVR mode。同时需要修改neutron-openvswitch-agent为DVR mode:


就以从VM1发一个包到VM2为例分析东西向包的数据流。
包从VM1发出时,由于默认网关是qr-net1,就会发出以下格式的包:
 
当包流到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接口转发出。格式如下:


当包流入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地址相同的情况,但这种情况影响要小的多。

当包流入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地址相同的情况,但这种情况影响要小的多。
 
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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18796236/viewspace-1840110/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-22

  • 博文量
    58
  • 访问量
    40859