ovn-org / ovn

Open Virtual Network
Apache License 2.0
488 stars 243 forks source link

Does OVN (with Yoga release) use OVS or Linux TC for QoS implementation? #256

Open nhtung96 opened 1 month ago

nhtung96 commented 1 month ago

Hi team, I got a problem that my VM port does not have traffic rate limit, although it has been applied QoS policy (100Mbps) . I checked the northbound ovn-nbctl qos-list and found qos rule associated to VM port. It is OK. However, I looked at ovs-vsctl list interface and I saw ingress_policing_rate=0 (burst=0 also), it means OVS didn't play a role in QoS rate limit, didnt it? I also tried to set ingress_policing_rate=100000 but it did not have improvement for actual rate limit.

numansiddique commented 1 month ago

@LorenzoBianconi Do you have any comments for this issue ?

LorenzoBianconi commented 1 month ago

@nhtung96 I guess ovn/ovs for incoming traffic rate limiting is using ovs-meters instead of tc (tc qdisc are used for egress traffic shaping if ovs-kdp is used). Can you please try dumping ovs meters?

nhtung96 commented 1 month ago

@LorenzoBianconi Thank you for your reply. I did try dumping ovs meters at compute node but didnt see the meter with the rate I configured. (actually I don't how meter id link to ovn nb/sb db qos rule, just grep the rate). I am wondering if there is a limit of number of meter entry caused this problem, since the compute node has already 4264 meter entry. ======OVN NB check=

ovn-nbctl --no-leader-only qos-list 849cef9b-df14-4fd2-b67c-a05d4e16b7c1

from-lport 2002 (inport == "fb9bc844-06bf-491f-b8e2-0ca525614b80") rate=100000 burst=80000 to-lport 2002 (outport == "fb9bc844-06bf-491f-b8e2-0ca525614b80") rate=100000 burst=80000 ======OVN SB check= Datapath: "neutron-81d434c8-00d9-44a0-9283-9719132fe6fd" aka "test-qos-net-2" (2bc31a5e-73ed-4035-b315-a9387934f2a4) Pipeline: ingress table=10(ls_in_qos_mark ), priority=0 , match=(1), action=(next;) table=11(ls_in_qos_meter ), priority=2002 , match=(inport == "fb9bc844-06bf-491f-b8e2-0ca525614b80"), action=(set_meter(100000, 80000); next;) table=11(ls_in_qos_meter ), priority=0 , match=(1), action=(next;) Datapath: "neutron-81d434c8-00d9-44a0-9283-9719132fe6fd" aka "test-qos-net-2" (2bc31a5e-73ed-4035-b315-a9387934f2a4) Pipeline: egress table=5 (ls_out_qos_mark ), priority=0 , match=(1), action=(next;) table=6 (ls_out_qos_meter ), priority=2002 , match=(outport == "fb9bc844-06bf-491f-b8e2-0ca525614b80"), action=(set_meter(100000, 80000); next;) table=6 (ls_out_qos_meter ), priority=0 , match=(1), action=(next;)

======OVS check====

ovs-ofctl -O OpenFlow15 dump-meters br-int | grep "100000 "

ovs-ofctl -O OpenFlow15 dump-meters br-int | grep "rate" | wc -l

4264 #