Comment 0 for bug 1938966

Revision history for this message
LIU Yulong (dragon889) wrote :

Since neutron supports packet rate limit rule [1][2], it's time for us to support real pps limitation in agent side for neutron ports and IPs. So this RFE is for real pps limitation functionality. We are going to implement neutron port's pps limitation with ovs meter first. IPs pps limitaion will be considered in a new approach.

Implementation notes [1]:
1. ovs kernel datapath based on kernel version <= 4.14 does not support meter.
2. kernel version >=4.15 + ovs >= 2.10 will support meter.
3. user space ovs data path should use ovs with version >= 2.7

So, this will be only available for kernel >=4.15 and ovs>=2.10.

Basic limit pipeline is:
Ingress: packets get into br-int table 0, before send to table 60, check the destanation MAC and local_vlan ID, if the dest is resident in this host, do the meter pps action and send to table 60.
Egress: match src MAC and in_port, before send to table 60, do the meter pps action and send to table 60.

Neutron ovs-agent process workflow:
1. port pluging detected
2. reterieve the port information
3. do the flow installation
4. handle_port in the pps limitation QoS agent extension (or a new pps agent extension)
5. create the meter rule for port based on the binding qos policy's QosPacketRateLimitRule
6. applied the Ingress and Egress ovs flows

[1] https://bugs.launchpad.net/neutron/+bug/1912460
[2] https://review.opendev.org/c/openstack/neutron/+/796363
[3] https://github.com/openvswitch/ovs/blob/master/Documentation/faq/releases.rst