← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1962465] Re: [L3][QoS] FIP QoS extension cannot handle duplicated FIP addresses

 

Reviewed:  https://review.opendev.org/c/openstack/neutron/+/831238
Committed: https://opendev.org/openstack/neutron/commit/132905d81f8799f249936ecb9d56641749df8724
Submitter: "Zuul (22348)"
Branch:    master

commit 132905d81f8799f249936ecb9d56641749df8724
Author: Rodolfo Alonso Hernandez <ralonsoh@xxxxxxxxxx>
Date:   Mon Feb 28 17:56:33 2022 +0000

    [L3][QoS] L3 agent QoS extension to handle duplicated FIPs
    
    The L3 agent QoS extension should be able to handle duplicated floating
    IP addresses from different registers. Those floating IP addresses can
    be hosted in different networks and routers but the same compute node
    and L3 agent.
    
    Now, instead of using the IP address as unique identifier, this patch
    stores the (ID, IP address) tuple. This tuple is unique per floating IP
    register and holds the IP address, needed by the "tc" library to set
    the QoS rules.
    
    Closes-Bug: #1962465
    Change-Id: I3a09718c6e79fd1f37eb75264389c4e5043076a7


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1962465

Title:
  [L3][QoS] FIP QoS extension cannot handle duplicated FIP addresses

Status in neutron:
  Fix Released

Bug description:
  The classes "RouterFipRateLimitMaps" and "RateLimitMaps" (the child
  and parent classes), cannot handle the case when two FIP addresses,
  from different networks and routers, are the same.

  Steps to reproduce:
  - It is needed a compute node with access to two public networks (for example, two VLAN networks connected to the same physical network).
  - Each network will have one subnet, both with the same CIDR.
  - Create private networks, two routers and connect each router to a private and a public network.
  - Create two FIPs, each one in a different public network. Both FIPs must have the same IP address.
  - Create two QoS policies with one max-bw rule.
  - Assign each QoS policy to each FIP
  --> the members to store the QoS information in the related classes use the FIP address (the IP address string) to identify uniquely the FIP resources. With the explained reproducer, the second FIP will overwrite the first one.

  
  For example, if the both QoS policies are detached from the FIPs, we'll have the following message in the L3 agent:
  DEBUG neutron.agent.l3.extensions.qos.base [-] L3 QoS extension did not have information on floating IP 192.168.20.202 {{(pid=213406) _clean_by_resource /opt/stack/neutron/neutron/agent/l3/extensions/qos/base.py:129}}

  
  This is because when the first FIP address is removed from "RouterFipRateLimitMaps.qos_policy_resources", the second one cannot be find.

  A new way to identify unambiguously the FIPs in the L3 agent QoS
  extension is needed.

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1962465/+subscriptions



References