VM receives incorrect routing information
Bug #1683261 reported by
Zhiyuan Cai
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Tricircle |
Invalid
|
Undecided
|
Unassigned |
Bug Description
For cross-region network, we only create one DHCP port for all the regions. Such simplification works because one VM port will not cross regions, only local Neutron locates in the same region with the VM has the IP/MAC information of that VM port. Though it's possible that several Dnsmasq daemons receive the same DHCP request, only one will response.
However, after the implementation of cross-region VxLAN network, shadow port is introduced. We find that DHCP agent will also add IP/MAC information of shadow port to the Dnsmasq addn_hosts file. In this case, more than one Dnsmasq daemon may response to the same DHCP request and VM may receive incorrect routing information.
Changed in tricircle: | |
status: | New → Invalid |
To post a comment you must log in.
This problem may occur when both local and non-local networks are attached to a non-local router and this non-local router is not for north-south networking purpose.
Not quite get the complete solution to this problem. Real core plugin(ML2) will create the port in DB, bind the port then send notification in "create_port" method. DHCP agent will add the shadow port to its addn_hosts file after it receives the notification. So there's no easy hacking point for us.
One workaround is to deploy DHCP agent in a host where there is no VMs(a dedicated network node). Since we don't create shadow port for DHCP port, compute node in one OpenStack cloud will not create tunnel to the dedicated network node in another OpenStack cloud, so VMs in the compute node will not receive DHCP response from DHCP agent from other OpenStack clouds. L3 agent can also be deployed in the dedicated network node because we allocate different gateway IPs for each OpenStack clouds, VMs only need to talk to router in its own OpenStack cloud.