[openstack-dev] [neutron][tricircle]DVR issue in cross Neutron networking

Brian Haley brian.haley at hpe.com
Tue Dec 6 02:29:48 UTC 2016


On 12/5/16 3:03 AM, joehuang wrote:
> Hello,

Hi Chaoyi,

Comments inline below.

>  Tricircle plans to provide L2 network across Neutron to ease supporting
> high
>  availability of application:
>
>  For example, in the following figure, the application is consisted of
>  instance1 and instance2, these two instances will be deployed into two
>  OpenStack. Intance1 will provide service through "ext net1"(i.e, external
>  network in OpenStack1), and Instance2 will provide service through
>  "ext net2". Instance1 and Instance2 will be plugged into same L2 network
>  net3 for data replication( for example database replication ).
>
>   +-----------------+       +-----------------+
>   |OpenStack1       |       |OpenStack2       |
>   |                 |       |                 |
>   | ext net1        |       | ext net2        |
>   |   +-----+-----+ |       |   +-----+-----+ |
>   |         |       |       |         |       |
>   |         |       |       |         |       |
>   |      +--+--+    |       |      +--+--+    |
>   |      |     |    |       |      |     |    |
>   |      | R1  |    |       |      | R2  |    |
>   |      |     |    |       |      |     |    |
>   |      +--+--+    |       |      +--+--+    |
>   |         |       |       |         |       |
>   |         |       |       |         |       |
>   |     +---+-+-+   |       |     +---+-+-+   |
>   |     net1  |     |       |     net2  |     |
>   |           |     |       |           |     |
>   |  +--------+--+  |       |  +--------+--+  |
>   |  | Instance1 |  |       |  | Instance2 |  |
>   |  +-----------+  |       |  +-----------+  |
>   |         |       |       |         |       |
>   |         |       | net3  |         |       |
>   |  +------+-------------------------+----+  |
>   |                 |       |                 |
>   +-----------------+       +-----------------+

Are Openstack1 and 2 simply different compute nodes?

>  When we deploy the application in such a way, no matter which part of the
>  application stops providing service, the other part can still provide
>  service, and take the workload from the failure one. It'll bring the
> failure
>  tolerance no matter the failure is due to OpenStack crush or upgrade, or
>  part of the application crush or upgrade.
>
>  This mode can work very well and helpful, and router R1 R2 can run in DVR
>  or legacy mode.
>
>  While during the discussion and review of the spec:
>  https://review.openstack.org/#/c/396564/, in this deployment, the end user
>  has to add two NICs for each instance, one for the net3(a L2 network across
>  OpenStack). And the net3 (a L2 network across OpenStack) can not be allowed
>  to add_router_interface to router R1 R2, this is not good in networking.
>
>  If the end user wants to do so, there is DVR MAC issues if more than one L2
>  network across OpenStack are performed add_router_interface to router
> R1 R2.
>
>  Let's look at the following deployment scenario:
>  +-----------------+       +-------------------+
>  |OpenStack1       |       |OpenStack2         |
>  |                 |       |                   |
>  | ext net1        |       | ext net2          |
>  |   +-----+-----+ |       |   +-----+-----+   |
>  |         |       |       |         |         |
>  |         |       |       |         |         |
>  | +-------+--+    |       |      +--+-------+ |
>  | |          |    |       |      |          | |
>  | |    R1    |    |       |      |   R2     | |
>  | |          |    |       |      |          | |
>  | ++------+--+    |       |      +--+-----+-+ |
>  |  |      |       |       |         |     |   |
>  |  |      |       | net3  |         |     |   |
>  |  |   -+-+-------------------+-----+--+  |   |
>  |  |    |         |       |   |           |   |
>  |  | +--+-------+ |       | +-+---------+ |   |
>  |  | | Instance1| |       | | Instance2 | |   |
>  |  | +----------+ |       | +-----------+ |   |
>  |  |              | net4  |               |   |
>  | ++-------+--------------------------+---+-+ |
>  |          |      |       |           |       |
>  |  +-------+---+  |       |  +--------+---+   |
>  |  | Instance3 |  |       |  | Instance4  |   |
>  |  +-----------+  |       |  +------------+   |
>  |                 |       |                   |
>  +-----------------+       +-------------------+
>
>  net3 and net4 are two L2 network across OpenStacks. These two networks will
>  be added router interface to R1 R2. Tricircle can help this, and addressed
>  the DHCP and gateway challenges: different gateway port for the same
> network
>  in different OpenStack, so there is no problem for north-south traffic, the
>  north-south traffic will goes to local external network directly, for
> example,
>  Instance1->R1->ext net1, instance2->R2->ext net2.

Can you describe the subnet configuration here?  Is there just one per 
network and was is the IP range?

>  The issue is in east-west traffic if R1 R2 are running in DVR mode:
>  when instance1 tries to ping instance4, DVR MAC replacement will happen
> before
>  the packet leaves the host where the instance1 is running, when the packet
>  arrives at the host where the instance4 is running, because DVR MAC
> replacement,
>  the source mac(DVR MAC from OpenStack1) of the packet could not be
> recognized
>  in OpenStack2, thus the packet will be dropped, and the ping fails.

So in this case the packet must be routed (L3) since these are different 
L2 networks.  Typically this would go from Instance1 -> R1 -> Instance4. 
  But then the return path would be different?  Instance4 -> R2 -> 
Instance1?  It's hard to tell from the diagram.  I'm curious if having 
both R1 and R2 plugged-into both net3 and net4 is causing problems?

I'll try and configure something similar here, but it might help if you 
give a list of the commands you ran to configure neutron here.

>  The latter one deployment bring more flexibility in networking capability,
>  and don't have to prevent the L2 network across OpenStack from
>  add_router_interface to DVR mode routers, otherwise, only legacy router
> can be
>  supported for L2 network across OpenStack.
>
>  Any thought on how to address this issue to make DVR and L2 network across
>  OpenStack be able to co-work together?

DVR is really an L3 paradigm although there is some L2 programming going 
on so the same MAC can be used across compute nodes.  So I'm not sure if 
this is a bug you've found or an unsupported configuration.

-Brian

>  And also welcome to review the patch for different networking
>  scenarios:
>  Layer-3 networking and combined bridge network spec
>  ( https://review.openstack.org/#/c/396564/)
>
> Best Regards
> Chaoyi Huang(joehuang)
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>




More information about the OpenStack-dev mailing list