yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #82030
[Bug 1755414] Re: VR replaces connected routes
Due to lack of any activity in this RFE since more than 1 year, I'm
going to close it for now. If You would be still interested in
implementing this and would like to continue discussion on that, feel
free to reopen it and ping me (slaweq) on irc.
** Changed in: neutron
Status: New => Opinion
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1755414
Title:
VR replaces connected routes
Status in neutron:
Opinion
Bug description:
Hi colleagues,
The idea behind this design is to easily switch VM between different
address scopes (e.g. "grey" addresses in Subnet-1 and "white" in
Subnet-2), using same port/MAC (which always is in E-Network).
If VR connected to subnets belonging to same network (preformatted
scheme also is at https://pastebin.com/AesqkcXa) :
E-Network
+------------------------------------------+
Subnet-1 Subnet-2
+---+----+--+ +----+------+
| | +----+ |
VM-+ | | | |
+--------+ VR +------------+
/| |\
qr-64.. -/ 0----+ \- qg-16..
using Subnet-1 as LAN connection and Subnet-2 as external gateway
connection, then Neutron swaps connected route to Subnet-1 with same
route but through Subnet-2 interface (3rd entry in the following
sequence):
14:45:18.043 Running command: ['ip', 'netns', 'exec', 'qrouter-UUID', 'ip', '-4', 'addr', 'add', '25.0.0.1/8', 'scope', 'global', 'dev', 'qr-64c53cf8-d9', 'brd', '25.255.255.255']
14:45:19.815 Running command: ['ip', 'netns', 'exec', 'qrouter-UUID', 'ip', '-4', 'addr', 'add', '51.x.x.x/24', 'scope', 'global', 'dev', 'qg-16bdddb1-d5', 'brd', '51.x.x.255']
14:45:20.283 Running command: ['ip', 'netns', 'exec', 'qrouter-UUID', 'ip', '-4', 'route', 'replace', '25.0.0.0/8', 'dev', 'qg-16bdddb1-d5', 'scope', 'link']
14:45:20.919 Running command: ['ip', 'netns', 'exec', 'qrouter-UUID', 'ip', '-4', 'route', 'replace', 'default', 'via', '51.x.x.254', 'dev', 'qg-16bdddb1-d5']
which makes it impossible to communicate between VMs in Subnet-1 with
the VR.
Proposed solution:
When creating VR, use "ip route add ... metric <LOWER>" for extra subnets of the interfaces. To achieve this:
- function add_route() in ip_lib.py contain unconditional arg "replace" and add other args from function's parameters. If, finally, var "args" contains keyword "metric", then change keyword "replace" with "add".
- when creating VR, add keyword "metric 20" (can be anything lower than connected metric) to all extra subnets.
This will fix routing in case of conflict, will preserve routing model
if there is no conflict and will preserve compatibility with other
functions calling add_route (no keyword "metric" - no changes in
behavior).
Openstack: Pike
Neutron: 11.0.2
Ubuntu: 16.04
Thank you.
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1755414/+subscriptions
References