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-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
__________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev