DVR: Notify specific agent when dealing with floating ips

Bug #1486828 reported by changzhi
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
neutron
Fix Released
High
Oleg Bondarev

Bug Description

Problem Description
===================
Currently in DVR case neutron server will fanout the message to all L3 agents hosting the router when floating ip create/update/delete happens. This becomes a problem at scale.

Proposed Change
==============
In fact only l3 agent on compute node where associated fixed port is located needs to be notified. This should significally decrease server load and RPC communications.

Changed in neutron:
assignee: nobody → changzhi (changzhi)
status: New → In Progress
tags: added: l3-dvr-backlog
Changed in neutron:
importance: Undecided → High
Revision history for this message
Ryan Moats (rmoats) wrote :

launchpad has missed that https://review.openstack.org/#/c/215136/ is for this bug

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

Fix proposed to branch: master
Review: https://review.openstack.org/231031

Changed in neutron:
assignee: changzhi (changzhi) → Oleg Bondarev (obondarev)
summary: - L3: Notify specific agent rather than fanout when associating floatingip
+ DVR: Notify specific agent when dealing with floating ips
description: updated
Changed in neutron:
assignee: Oleg Bondarev (obondarev) → changzhi (changzhi)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Fix proposed to branch: master
Review: https://review.openstack.org/231455

Changed in neutron:
assignee: changzhi (changzhi) → Oleg Bondarev (obondarev)
Changed in neutron:
assignee: Oleg Bondarev (obondarev) → changzhi (changzhi)
Changed in neutron:
assignee: changzhi (changzhi) → Oleg Bondarev (obondarev)
Changed in neutron:
assignee: Oleg Bondarev (obondarev) → changzhi (changzhi)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/231031
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=865dc46bc5687813c746ad490be6f534f46f518d
Submitter: Jenkins
Branch: master

commit 865dc46bc5687813c746ad490be6f534f46f518d
Author: Oleg Bondarev <email address hidden>
Date: Mon Oct 5 17:34:45 2015 +0300

    DVR: notify specific agent when creating floating ip

    Currently when floating ip is created, a lot of useless action
    is happening: floating ip router is scheduled, all l3 agents where
    router is scheduled are notified about router update, all agents
    request full router info from server. All this becomes a big
    performance problem at scale with lots of compute nodes.

    In fact on (associated) Floating IP creation we really need
    to notify specific l3 agent on compute node where associated
    VM port is located and do not need to schedule router and
    bother other agents where rourter is scheduled. This should
    significally decrease unneeded load on neutron server at scale.

    Partial-Bug: #1486828
    Change-Id: I0cbe8c51c3714e6cbdc48ca37135b783f8014905

Changed in neutron:
assignee: changzhi (changzhi) → Oleg Bondarev (obondarev)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/liberty)

Fix proposed to branch: stable/liberty
Review: https://review.openstack.org/235845

Changed in neutron:
assignee: Oleg Bondarev (obondarev) → changzhi (changzhi)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/215136
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=52e91f48f2327b47f126893f9cb12f153380a9a6
Submitter: Jenkins
Branch: master

commit 52e91f48f2327b47f126893f9cb12f153380a9a6
Author: changzhi <email address hidden>
Date: Thu Aug 20 21:40:42 2015 +0800

    DVR: Notify specific agent when update floatingip

    The L3 agent was determined when update floatingip.
    So notify the specific agent rather than notify all agents.
    This will save some RPC resources. This is only for DVR routers.
    Legacy and HA routers notify only the relevant agents.

    Partial-Bug: #1486828
    Change-Id: I12f61afdfaa944bc4b659cec61a8b5ff8c66ae76
    Co-Authored-By: Oleg Bondarev <email address hidden>

Changed in neutron:
assignee: changzhi (changzhi) → Oleg Bondarev (obondarev)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (master)

Fix proposed to branch: master
Review: https://review.openstack.org/237476

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

Reviewed: https://review.openstack.org/237476
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=8a51ddf3be6445a49c53b7a9ef80123cf0e7c033
Submitter: Jenkins
Branch: master

commit 8a51ddf3be6445a49c53b7a9ef80123cf0e7c033
Author: changzhi <email address hidden>
Date: Thu Aug 20 21:40:42 2015 +0800

    DVR: Notify specific agent when update floatingip

    The L3 agent was determined when update floatingip.
    So notify the specific agent rather than notify all agents.
    This will save some RPC resources. This is only for DVR routers.
    Legacy and HA routers notify only the relevant agents.

    This reproposes commit 52e91f48f2327b47f126893f9cb12f153380a9a6
    which was reverted by commit a2f7e0343a147a30a637af4e1cb9a866f557e87d
    because of Ironic gate failures.
    Now the patch preserves original behavior for legacy routers and
    should not break Ironic tests.

    Partial-Bug: #1486828
    Related-Bug: #1507602
    Change-Id: I4ef7a69ad033b979ea0e29620a4febfe5e0c30dd

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/231455
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=eef7990e8a51bce7543d0bf602324051394ebccc
Submitter: Jenkins
Branch: master

commit eef7990e8a51bce7543d0bf602324051394ebccc
Author: Oleg Bondarev <email address hidden>
Date: Tue Oct 6 15:22:30 2015 +0300

    DVR: notify specific agent when deleting floating ip

    In DVR case we only need to notify the l3 agent on compute node
    where associated fixed port is located.

    Closes-Bug: #1486828
    Change-Id: I644238ca295c4eb6df75a99a8ef6143a801b27cb

Changed in neutron:
status: In Progress → Fix Committed
Revision history for this message
Thierry Carrez (ttx) wrote : Fix included in openstack/neutron 8.0.0.0b1

This issue was fixed in the openstack/neutron 8.0.0.0b1 development milestone.

Changed in neutron:
status: Fix Committed → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/liberty)

Reviewed: https://review.openstack.org/235845
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=6902c87048675b106378121e5f919adc8772a99f
Submitter: Jenkins
Branch: stable/liberty

commit 6902c87048675b106378121e5f919adc8772a99f
Author: Oleg Bondarev <email address hidden>
Date: Mon Oct 5 17:34:45 2015 +0300

    DVR: notify specific agent when creating floating ip

    Currently when floating ip is created, a lot of useless action
    is happening: floating ip router is scheduled, all l3 agents where
    router is scheduled are notified about router update, all agents
    request full router info from server. All this becomes a big
    performance problem at scale with lots of compute nodes.

    In fact on (associated) Floating IP creation we really need
    to notify specific l3 agent on compute node where associated
    VM port is located and do not need to schedule router and
    bother other agents where rourter is scheduled. This should
    significally decrease unneeded load on neutron server at scale.

    Partial-Bug: #1486828
    Change-Id: I0cbe8c51c3714e6cbdc48ca37135b783f8014905
    (cherry picked from commit 865dc46bc5687813c746ad490be6f534f46f518d)

    =========

    DVR: Notify specific agent when update floatingip

    The L3 agent was determined when update floatingip.
    So notify the specific agent rather than notify all agents.
    This will save some RPC resources. This is only for DVR routers.
    Legacy and HA routers notify only the relevant agents.

    This reproposes commit 52e91f48f2327b47f126893f9cb12f153380a9a6
    which was reverted by commit a2f7e0343a147a30a637af4e1cb9a866f557e87d
    because of Ironic gate failures.
    Now the patch preserves original behavior for legacy routers and
    should not break Ironic tests.

    Partial-Bug: #1486828
    Related-Bug: #1507602
    Change-Id: I4ef7a69ad033b979ea0e29620a4febfe5e0c30dd
    (cherry picked from commit 8a51ddf3be6445a49c53b7a9ef80123cf0e7c033)

    =========

    Use admin context when requesting floating ip's router info

    Currently it is possible for admin to create router and add any
    tenant subnet to it, thus connecting the subnet to the external
    network. In this case tenant user can assign floating ips to its
    VMs though it does not own the router.
    For proper notification we need to get router info using admin
    context.

    Closes-Bug: #1507602
    Change-Id: I17330ddca577d15e42c13ef0af96d56e6f20abd7

    =========

    Three patches are squashed because the first one introduced a regression
    when some notifications were not sent in particular scenarios. Two
    consequent patches target the regression.

    Change-Id: I0cbe8c51c3714e6cbdc48ca37135b783f8014905

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

Fix proposed to branch: stable/liberty
Review: https://review.openstack.org/266373

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

Reviewed: https://review.openstack.org/266373
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=bf92dbb246448b6a7384efcd00c92f42a1570a09
Submitter: Jenkins
Branch: stable/liberty

commit bf92dbb246448b6a7384efcd00c92f42a1570a09
Author: Oleg Bondarev <email address hidden>
Date: Tue Oct 6 15:22:30 2015 +0300

    DVR: notify specific agent when deleting floating ip

    In DVR case we only need to notify the l3 agent on compute node
    where associated fixed port is located.

    Closes-Bug: #1486828
    Change-Id: I644238ca295c4eb6df75a99a8ef6143a801b27cb
    (cherry picked from commit eef7990e8a51bce7543d0bf602324051394ebccc)

Revision history for this message
Doug Hellmann (doug-hellmann) wrote : Fix included in openstack/neutron 7.0.2

This issue was fixed in the openstack/neutron 7.0.2 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.