>
>
>On 14 Jan 2022, at 10:38, lic121 wrote:
>
>>>
>>>
>>> On 14 Jan 2022, at 9:58, lic121 wrote:
>>>
>>>>>
>>>>>
>>>>> On 9 Jan 2022, at 14:44, lic121 wrote:
>>>>>
>>>>>> Currently, ipfix creation/delection don't trigger dpif backer
>>>>>> revalidation. This is not expected, as we need the revalidation
>>>>>> to commit ipfix into xlate. So that xlate can generate ipfix
>>>>>> actions.
>>>>>>
>>>>>> Signed-off-by: lic121 <lic...@chinatelecom.cn>
>>>>>> ---
>>>>>>  ofproto/ofproto-dpif.c | 5 +++++
>>>>>>  1 file changed, 5 insertions(+)
>>>>>>
>>>>>> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
>>>>>> index bc3df8e..1cdef18 100644
>>>>>> --- a/ofproto/ofproto-dpif.c
>>>>>> +++ b/ofproto/ofproto-dpif.c
>>>>>> @@ -2306,6 +2306,7 @@ set_ipfix(
>>>>>>  {
>>>>>>      struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_);
>>>>>>      struct dpif_ipfix *di = ofproto->ipfix;
>>>>>> +    struct dpif_ipfix *old_ipfix = ofproto->ipfix;
>>>>>>      bool has_options = bridge_exporter_options || 
>>>>>> flow_exporters_options;
>>>>>>      bool new_di = false;
>>>>>>
>>>>>> @@ -2335,6 +2336,10 @@ set_ipfix(
>>>>>>          }
>>>>>>      }
>>>>>>
>>>>>> +    if (old_ipfix != ofproto->ipfix) {
>>>>>
>>>>> This only works if ipfix was not configured earlier or disabled, i.e., 
>>>>> ofproto->ipfix was/is NULL.
>>>>> If this was your intention, you could just have done “if (new_di || 
>>>>> !ofproto->ipfix)”.
>>>>>
>>>>> However, I think there can also be changed in the configuration that 
>>>>> requires a revalidate, what do you think? For example, enabling/disabling 
>>>>> ingress/egress sampling.
>>>>> In this case dpif_ipfix_set_options() can be changed so it will return 
>>>>> true if any configuration changes.
>>>>>
>>>> Actually, I had ever thought the same thing as you. But at last I didn't 
>>>> do as that, for 3 reasons:
>>>> 1. I checked the history commit of ipfix, seems its not active in last 2-3 
>>>> years. So I guess not so many ovs users are using ipfix feature.
>>>> 2. In xlate_xbridge_set, the place where checks the change flag, it 
>>>> doesn't check the ipfix options changes as well.
>>>>  
>>>> https://github.com/openvswitch/ovs/blob/eb1ab5357b6f3755f0ef1ee6d341ce24398d3bc1/ofproto/ofproto-dpif-xlate.c#L975-L978
>>>
>>> But here it just set the pointer as a reference, it does not take care of 
>>> acting on configuration changes, or do I miss something?
>>>
>> Assume that we checks the ipfix options changes in set_ipfix():
>> 1. set_ipfix(ofproto, new_option,...) {
>>        if (ofproto->ipfix->options != new_options) {
>>           ipfix->options = new_options;
>>           ofproto->backer->need_revalidate = REV_RECONFIGURE;
>>        }
>>    }
>>
>> 2. in xlate_xbridge_set, which is under revalidate context.
>> xlate_xbridge_set() {
>>     ...
>>     if (xbridge->ipfix != ipfix) { // here the ipfix options has changed, 
>> but the "if test" will not aware that
>>         dpif_ipfix_unref(xbridge->ipfix);
>>         xbridge->ipfix = dpif_ipfix_ref(ipfix);
>
>But here the pointer does not change, so no need to update the reference to it.
>The actual configuration is taken in 
>xlate_sample_action()/xlate_sample_action() used when creating/updating rules 
>by the revalidator, kicked in by the succeeding udpif_revalidate() call.
>
After reading the code carefully again, I think you are right.

I would like to divide the things into two parts. 
Part #1 is to resolve unneccesary revalidate cased by set_lldp(). Part #2 is 
the to take care of the ipfix/lldp content change more that enabling/diabling.
My team uses neither ipfix nor lldp, the problem we met is that 
bridge_reconfigure() already trigger udpif revalidate because of lldp 
problem(set_lldp() always trigger udpif revalidate).
So I would like to focus on the first part, but leave the second part for users 
who really want to use ipfix/lldp features.
Please let me know your think, thanks.

>>     }
>> }
>>
>>>> 3. My main patch is the second one in this series, this patch is here 
>>>> because it breaks two test cases. So I didn't spend muhc time on the ipfix 
>>>> issue.
>>>
>>> See comments on the second patch.
>>>
>>>>>> +        ofproto->backer->need_revalidate = REV_RECONFIGURE;
>>>>>> +    }
>>>>>> +
>>>>>>      return 0;
>>>>>>  }
>>>>>>
>>>>>> --
>>>>>> 1.8.3.1
>>>>>>
>>>>>> _______________________________________________
>>>>>> dev mailing list
>>>>>> d...@openvswitch.org
>>>>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>>>>
>>>>>
>>>
>>>
>
>

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to