DVR can not work with multiple routers on single network.

Bug #1815913 reported by Slawek Kaplonski
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Fix Released
High
Slawek Kaplonski

Bug Description

Two routers on one network in DVR environment.
When instance create, neutron execute "ip neigh replace" command to qrouter.
But there is only one qrouter where commands are executed.

We expect neutron to execute "ip neigh replace" command to all qrouters.

example:
I build below commands in DVR environment.

    $ openstack network create --provider-network-type vxlan network
    $ openstack subnet create --network network --subnet-range 192.168.100.0/24 subnet
    $ openstack router create router1
    $ openstack router add subnet router1 subnet

    $ openstack router create router2
    $ openstack port create --network network --fixed-ip ip-address=192.168.100.254 router2-port
    $ openstack router add port router2 router2-port
    $ nova boot --flavor m1.tiny --image cirros --nic net-name=network vm01

When instance create, ARP entry is created at only router1 or only router2.

Here's the the overall structure:

                                                +-------+ +-------+
                                                | vm03 | | vm04 |
                                                +---+---+ +---+---+
       +--------------------------------------------+----------|---------- network2 (192.168.203.0/24)
       | +---------------------------------------------------+---------- network3 (192.168.202.0/24)
       | |
    +---------+
    | router2 | +-------+ +-------+
    +---------+ | vm01 | | vm02 |
         | +---+---+ +---+---+
 --------+-----------------------+------------------+----------+---------- network1
                                 | (192.168.100.0/24)
                            +---------+
                            | router1 |
                            +---------+
                                 |
 --------------------------------+---------------------------------------- external

  router1 is connecting the external network.
  router2 is connecting only internal network.
  I configure routes for network2 and network3 on router1.

   # neutron port-create --fixed-ip ip_address=192.168.100.254 --security-group sec-group network1
   # openstack router add port router2 <portID>

   # openstack router set --route destination=<network2 cidr>,gateway=192.168.100.254 router1
   # openstack router set --route destination=<network3 cidr>,gateway=192.168.100.254 router1

  I expect communication could be established from vm01, vm02 to vm03, vm04.
  But I could not communicate from vm01,vm02 to vm03, vm04 when arp entry on router2 is not created.

  Note: Default gateway of vm01 and vm02 are configured to router1.

Changed in neutron:
importance: Undecided → High
Revision history for this message
Slawek Kaplonski (slaweq) wrote :
Changed in neutron:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/636953
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=1f104a093c1f27ddb1967e72cd452d43120b4cc2
Submitter: Zuul
Branch: master

commit 1f104a093c1f27ddb1967e72cd452d43120b4cc2
Author: Slawek Kaplonski <email address hidden>
Date: Thu Feb 14 14:35:25 2019 +0100

    Fix notification about arp entries for dvr routers

    In method _generate_arp_table_and_notify_agent in neutron.db.l3_dvr_db
    module notifiations about arp table was send only to one router
    connected to subnet.
    Now it will check if subnet is connected to more than one
    dvr router and will send same notification to all such routers.

    Closes-Bug: #1815913

    Change-Id: I6a7d7f6645a8a7b5219788d51e17d54844d145bc

Changed in neutron:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/rocky)

Fix proposed to branch: stable/rocky
Review: https://review.openstack.org/637214

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/queens)

Fix proposed to branch: stable/queens
Review: https://review.openstack.org/637215

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/pike)

Fix proposed to branch: stable/pike
Review: https://review.openstack.org/637216

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/ocata)

Fix proposed to branch: stable/ocata
Review: https://review.openstack.org/637497

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/rocky)

Reviewed: https://review.openstack.org/637214
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=5bf56bde8785707904b39173e5eed6d219f4608d
Submitter: Zuul
Branch: stable/rocky

commit 5bf56bde8785707904b39173e5eed6d219f4608d
Author: Slawek Kaplonski <email address hidden>
Date: Thu Feb 14 14:35:25 2019 +0100

    Fix notification about arp entries for dvr routers

    In method _generate_arp_table_and_notify_agent in neutron.db.l3_dvr_db
    module notifiations about arp table was send only to one router
    connected to subnet.
    Now it will check if subnet is connected to more than one
    dvr router and will send same notification to all such routers.

    Closes-Bug: #1815913

    Change-Id: I6a7d7f6645a8a7b5219788d51e17d54844d145bc
    (cherry picked from commit 1f104a093c1f27ddb1967e72cd452d43120b4cc2)

tags: added: in-stable-rocky
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/queens)

Reviewed: https://review.openstack.org/637215
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=8554a72b6f29be622a5adc47fd16b68e97af86c1
Submitter: Zuul
Branch: stable/queens

commit 8554a72b6f29be622a5adc47fd16b68e97af86c1
Author: Slawek Kaplonski <email address hidden>
Date: Thu Feb 14 14:35:25 2019 +0100

    Fix notification about arp entries for dvr routers

    In method _generate_arp_table_and_notify_agent in neutron.db.l3_dvr_db
    module notifiations about arp table was send only to one router
    connected to subnet.
    Now it will check if subnet is connected to more than one
    dvr router and will send same notification to all such routers.

    Closes-Bug: #1815913

    Change-Id: I6a7d7f6645a8a7b5219788d51e17d54844d145bc
    (cherry picked from commit 1f104a093c1f27ddb1967e72cd452d43120b4cc2)

tags: added: in-stable-queens
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/pike)

Reviewed: https://review.openstack.org/637216
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=3af8e2719c772097c579c65fe088fea6a1f56a4d
Submitter: Zuul
Branch: stable/pike

commit 3af8e2719c772097c579c65fe088fea6a1f56a4d
Author: Slawek Kaplonski <email address hidden>
Date: Thu Feb 14 14:35:25 2019 +0100

    Fix notification about arp entries for dvr routers

    In method _generate_arp_table_and_notify_agent in neutron.db.l3_dvr_db
    module notifiations about arp table was send only to one router
    connected to subnet.
    Now it will check if subnet is connected to more than one
    dvr router and will send same notification to all such routers.

    Closes-Bug: #1815913

    Change-Id: I6a7d7f6645a8a7b5219788d51e17d54844d145bc
    (cherry picked from commit 1f104a093c1f27ddb1967e72cd452d43120b4cc2)

tags: added: in-stable-pike
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/ocata)

Reviewed: https://review.openstack.org/637497
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=bcc9769b0210ee44841dc6d8c93a85f431d86768
Submitter: Zuul
Branch: stable/ocata

commit bcc9769b0210ee44841dc6d8c93a85f431d86768
Author: Slawek Kaplonski <email address hidden>
Date: Thu Feb 14 14:35:25 2019 +0100

    Fix notification about arp entries for dvr routers

    In method _generate_arp_table_and_notify_agent in neutron.db.l3_dvr_db
    module notifiations about arp table was send only to one router
    connected to subnet.
    Now it will check if subnet is connected to more than one
    dvr router and will send same notification to all such routers.

    Closes-Bug: #1815913

    Change-Id: I6a7d7f6645a8a7b5219788d51e17d54844d145bc
    (cherry picked from commit 1f104a093c1f27ddb1967e72cd452d43120b4cc2)
    (cherry picked from commit 3af8e2719c772097c579c65fe088fea6a1f56a4d)

tags: added: in-stable-ocata
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 14.0.0.0b2

This issue was fixed in the openstack/neutron 14.0.0.0b2 development milestone.

tags: added: neutron-proactive-backport-potential
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 11.0.7

This issue was fixed in the openstack/neutron 11.0.7 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 13.0.3

This issue was fixed in the openstack/neutron 13.0.3 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 12.0.6

This issue was fixed in the openstack/neutron 12.0.6 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron ocata-eol

This issue was fixed in the openstack/neutron ocata-eol release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.