[ovs-discuss] which kernel module patch could repair the support of meter

taoyunupt taoyunupt at 126.com
Mon Jan 28 07:26:44 UTC 2019


The method build_qos in  /ovn/northd/ovn-northd.c is as fellows,in the end of the method,it  adds logical flow by the code of
| ovn_lflow_add(lflows, od, stage,qos->priority,qos->match, ds_cstr(&meter_action)); |


Does this mean the meter table is the only way for ovn to add Qos?
|
| |
| | |


| build_qos(struct ovn_datapath *od, struct hmap *lflows) { |
| | ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_MARK, 0, "1", "next;"); |
| | ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_MARK, 0, "1", "next;"); |
| | ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_METER, 0, "1", "next;"); |
| | ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_METER, 0, "1", "next;"); |
| | |
| | for (size_t i = 0; i < od->nbs->n_qos_rules; i++) { |
| | struct nbrec_qos *qos = od->nbs->qos_rules[i]; |
| | bool ingress = !strcmp(qos->direction, "from-lport") ? true :false; |
| | enum ovn_stage stage = ingress ? S_SWITCH_IN_QOS_MARK : S_SWITCH_OUT_QOS_MARK; |
| | int64_t rate = 0; |
| | int64_t burst = 0; |
| | |
| | for (size_t j = 0; j < qos->n_action; j++) { |
| | if (!strcmp(qos->key_action[j], "dscp")) { |
| | struct ds dscp_action = DS_EMPTY_INITIALIZER; |
| | |
| | ds_put_format(&dscp_action, "ip.dscp = %"PRId64"; next;", |
| | qos->value_action[j]); |
| | ovn_lflow_add(lflows, od, stage, |
| | qos->priority, |
| | qos->match, ds_cstr(&dscp_action)); |
| | ds_destroy(&dscp_action); |
| | } |
| | } |
| | |
| | for (size_t n = 0; n < qos->n_bandwidth; n++) { |
| | if (!strcmp(qos->key_bandwidth[n], "rate")) { |
| | rate = qos->value_bandwidth[n]; |
| | } elseif (!strcmp(qos->key_bandwidth[n], "burst")) { |
| | burst = qos->value_bandwidth[n]; |
| | } |
| | } |
| | if (rate) { |
| | struct ds meter_action = DS_EMPTY_INITIALIZER; |
| | stage = ingress ? S_SWITCH_IN_QOS_METER : S_SWITCH_OUT_QOS_METER; |
| | if (burst) { |
| | ds_put_format(&meter_action, |
| | "set_meter(%"PRId64", %"PRId64"); next;", |
| | rate, burst); |
| | } else { |
| | ds_put_format(&meter_action, |
| | "set_meter(%"PRId64"); next;", |
| | rate); |
| | } |
| | |
| | /* Ingress and Egress QoS Meter Table. |
| | * |
| | * We limit the bandwidth of this flow by adding a meter table. |
| | */ |
| | ovn_lflow_add(lflows, od, stage, |
| | qos->priority, |
| | qos->match, ds_cstr(&meter_action)); |
| | ds_destroy(&meter_action); |
| | } |
| | } |
| | } |







At 2019-01-28 15:15:51, "Justin Pettit" <jpettit at ovn.org> wrote:
>QoS is most likely using the kernel's built-in traffic-shaping algorithms in tc.  Those should work the same on all supported kernels.
>
>--Justin
>
>
>> On Jan 27, 2019, at 11:10 PM, taoyunupt <taoyunupt at 126.com> wrote:
>> 
>> 
>> Thanks justin,
>> 
>> My environment is OVS for the OVN/openstack.I also want to know ,if i must use meter for the  openstack/ovn feature 'Qos'.Does any other methods to achive this?
>> 
>> Regards,
>> Yunxiang
>> 
>> 
>> 
>> 
>> 
>> At 2019-01-28 14:58:19, "Justin Pettit" <jpettit at ovn.org> wrote:
>> >This is the patch:
>> >
>> >	http://patchwork.ozlabs.org/patch/950513/
>> >
>> >I think it was only broken in kernels 4.15, 4.16, and 4.17.  I expect that 4.20 will be fine.
>> >
>> >--Justin
>> >
>> >
>> >> On Jan 27, 2019, at 10:16 PM, taoyunupt <taoyunupt at 126.com> wrote:
>> >> 
>> >> Hello,justin,
>> >>          I  met a supporting problem of meter of OVS 2.10. I found a mail from you,after searching the internet.The address of this mail is "https://www.mail-archive.com/ovs-discuss@openvswitch.org/msg04180.html"
>> >>          The kernel version of  "4.20.5-1.el7.elrepo.x86_64" goes well with meter table of ovs,but I want to know how to fit the  maintained older kernels.
>> >>          If i want to use ovs with maintained older kernels,which patch you metioned in the mail, should i import ?
>> >> 
>> >> 
>> >> 
>> >> 
>> >> Regards,
>> >> yunxiang
>> >> 
>> >> _______________________________________________
>> >> discuss mailing list
>> >> discuss at openvswitch.org
>> >> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-discuss/attachments/20190128/1c5ac3c9/attachment-0001.html>


More information about the discuss mailing list