A github link is included in the JIRA issue to articulate the use case, 

https://jira.fd.io/browse/VPP-1967

The github link has a value for a classifier entry shown: 
https://github.com/FDio/vpp/pull/33    

The value is a value used in a 5G UPF.

The classifier entry's metadata cannot support such a value.  Thanks for the 
pool of values idea.  Yes, if vlib_buffer_t is not modified, I will incur 
another lookup.  

Best wishes,

Hemant

-----Original Message-----
From: Benoit Ganne (bganne) <bga...@cisco.com> 
Sent: Wednesday, January 20, 2021 5:23 AM
To: Neale Ranns <ne...@graphiant.com>; hem...@mnkcg.com; ayour...@gmail.com
Cc: vpp-dev@lists.fd.io
Subject: RE: [vpp-dev] classifier howto?

Maybe the 1st question should be what is your usecase here? What is the 64-bits 
used for? It would be better to rely on the already-existing u32 opaque_index 
instead.
If you really need a u64 value, you can always get away with it by using a pool 
of u64 values indexed by opaque_index, and look up the 64-bits value via 
pool_elt_at_index(p, opaque_index) in the dataplane.

Best
ben

> -----Original Message-----
> From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Neale 
> Ranns
> Sent: mercredi 20 janvier 2021 10:18
> To: hem...@mnkcg.com; ayour...@gmail.com
> Cc: vpp-dev@lists.fd.io
> Subject: Re: [vpp-dev] classifier howto?
> 
> Hi Hemant,
> 
> 
> 
> I’ll be a little more direct 😊 you can’t expand the size of opaque. 
> The blast radius of such a change is just too large.
> 
> Your alternative choices are: 1) use oqaque2, 2) overlay your ‘value’
> field in the union in opaque. The latter is preferable since you won’t 
> incur the cost of loading the other cacheline, but you will need to be 
> sure that the value remains valid (i.e. is not overwritten) by 
> intermediate nodes from the time it is set to the time it is used.
> 
> 
> 
> /neale
> 
> 
> 
> 
> 
> 
> 
> From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> on behalf of hemant 
> via lists.fd.io <hemant=mnkcg....@lists.fd.io>
> Date: Wednesday, 20 January 2021 at 02:51
> To: ayour...@gmail.com <ayour...@gmail.com>
> Cc: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io>
> Subject: Re: [vpp-dev] classifier howto?
> 
> Andrew,
> 
> 
> 
> The good thing with the code changes are that the changes are common 
> to any plugin or base code tests.  Any CSIT testing could take the 
> diffs and test for sanity.
> 
> 
> 
> I also wonder when the opaque2 member (line of code below) was added 
> to vlib_buffer_t  the cache line got impacted by a factor larger than 
> 2 to 3 cache lines of these changes.
> 
> 
> 
> https://github.com/FDio/vpp/blob/5c1e48c01b50ddbd7623228e3dbc94d835d23
> 813/
> src/vlib/buffer.h#L170
> 
> 
> 
> Anyone recall the perf changes with opaque2?
> 
> 
> 
> For my traffic setup (uses trex and 10G NICs) and a UPF IPv4 test, I 
> don’t see appreciable difference testing traffic with our without the 
> code changes.
> 
> 
> 
> Thanks,
> 
> 
> 
> Hemant
> 
> 
> 
> From: Andrew 👽 Yourtchenko <ayour...@gmail.com>
> Sent: Tuesday, January 19, 2021 6:21 PM
> To: hem...@mnkcg.com
> Cc: vpp-dev@lists.fd.io
> Subject: Re: [vpp-dev] classifier howto?
> 
> 
> 
> the further discussion to be held in 30844 with the corresponding 
> SMEs, but in my cursory virw it’s tweaking  the buffer metadata area 
> which is quite erformance critical - and if I read well
> https://gerrit.fd.io/r/c/vpp/+/30844/2/src/vlib/buffer.h#194 increases 
> the per-buffer metadata size from 2 to 3 cache lines... what is the 
> performance impact of this change for all of the existing functions?
> (Might make sense to proactively include this analysis into 30844, 
> since I’d expect it the very first question to be asked during the review).
> 
> 
> 
> --a
> 
> 
> 
> 
> 
> 
>       On 20 Jan 2021, at 00:06, hem...@mnkcg.com <mailto:hem...@mnkcg.com>
> wrote:
> 
>       
> 
>       Andrew,
> 
> 
> 
>       Sorry, I am used to github which auto-merges two commits and missed 
> using gerrit ‘s –amend in my 2nd commit.  I did what you unicasted to 
> me and now the latest diffs are available in review.
> 
> 
> 
>       https://gerrit.fd.io/r/c/vpp/+/30848
> 
> 
> 
>       thanks,
> 
> 
> 
>       Hemant
> 
> 
> 
>       From: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>  <vpp- 
> d...@lists.fd.io <mailto:vpp-dev@lists.fd.io> > On Behalf Of Andrew 
> Yourtchenko
>       Sent: Tuesday, January 19, 2021 4:40 PM
>       To: hem...@mnkcg.com <mailto:hem...@mnkcg.com>
>       Cc: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>
>       Subject: Re: [vpp-dev] classifier howto?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>               On 19 Jan 2021, at 22:17, hem...@mnkcg.com 
> <mailto:hem...@mnkcg.com>  
> wrote:
> 
>       
> 
>               Andrew,
> 
> 
> 
>               Great suggestion – thanks.  I updated the code after taking 
> care of 
> your comments.
> 
> 
> 
>               https://gerrit.fd.io/r/c/vpp/+/30848/1
> 
> 
> 
>       Seems like you pushed two different changes - the better approach is 
> to reuse the “Change-ID: xxxx” value from the previous edit by doing 
> “git commit —amend”, then the edits show up as the revisions of the 
> same change. (Which, while being a bit counterintuitive at first, 
> makes the gerrit workflow more powerful than eg GitHub).
> 
> 
> 
>       —a
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>               I didn’t update classify.api and classify_api.c for the 
> “Fancy_new_call” yet. In another Pull Request (PR), I’d like to 
> develop a new plugin that uses the classify entry’s value and write 
> packet tests etc.
> 
> 
> 
>               Cheers,
> 
> 
> 
>               Hemant
> 
> 
> 
>               From: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>  <vpp- 
> d...@lists.fd.io <mailto:vpp-dev@lists.fd.io> > On Behalf Of Andrew 
> Yourtchenko
>               Sent: Tuesday, January 19, 2021 2:05 PM
>               To: hem...@mnkcg.com <mailto:hem...@mnkcg.com>
>               Cc: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>
>               Subject: Re: [vpp-dev] classifier howto?
> 
> 
> 
>               Meta-comment:
> 
> 
> 
>               old_boring_call(foo) {
> 
>               /* meat */
> 
>               }
> 
> 
> 
>               =>
> 
> 
> 
>               Fancy_new_call(foo, bar) {
> 
>               /* new meat */
> 
>               }
> 
> 
> 
>               Old_boring_call(foo) {
> 
>               Fancy_new_call(foo, 0);
> 
>               }
> 
> 
> 
>               This way you don’t have to patch umpteen unrelated places.
> 
>               --a
> 
> 
> 
> 
> 
> 
> 
> 
>                       On 19 Jan 2021, at 19:26, hemant via lists.fd.io 
> <hemant=mnkcg....@lists.fd.io <mailto:hemant=mnkcg....@lists.fd.io> >
> wrote:
> 
>       
> 
>                       Yay, I issued my first code review for VPP using gerrit 
> for the 
> issue of this email!
> 
> 
> 
>                       https://gerrit.fd.io/r/c/vpp/+/30844
> 
> 
> 
>                       The JIRA issue I filed today is at:
> https://jira.fd.io/browse/VPP-1967
> 
> 
> 
>                       Thanks all for replying.
> 
> 
> 
>                       Hemant
> 
> 
> 
>                       From: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io> 
> <vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io> > On Behalf Of 
> hemant via lists.fd.io
>                       Sent: Monday, January 18, 2021 8:41 PM
>                       To: hem...@mnkcg.com <mailto:hem...@mnkcg.com> ; vpp- 
> d...@lists.fd.io <mailto:vpp-dev@lists.fd.io>
>                       Subject: Re: [vpp-dev] classifier howto?
> 
> 
> 
>                       Please see this PR to fix what I need.
> 
> 
> 
>                       https://github.com/FDio/vpp/pull/33
> 
> 
> 
>                       Please review – thanks.
> 
> 
> 
>                       Hemant
> 
> 
> 
>                       From: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io> 
> <vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io> > On Behalf Of 
> hemant via lists.fd.io
>                       Sent: Monday, January 18, 2021 10:52 AM
>                       To: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>
>                       Subject: [vpp-dev] classifier howto?
> 
> 
> 
>                       I am used to the bihash’s easy to understand key-value 
> pair API to 
> program an entry for table lookup using the hash.
> 
> 
> 
> 
>       https://github.com/FDio/vpp/blob/master/src/vppinfra/bihash_48_8.h#L
> 39
> 
> 
> 
>                       The value in the struct is a u64.
> 
> 
> 
>                       To see how I program a classifier entry for use by the 
> data plane, 
> I looked at the classifier entry data structure:
> 
> 
> 
> 
>       https://github.com/FDio/vpp/blob/master/src/vnet/classify/vnet_class
> ify.h#L66
> 
> 
> 
>                       The data structure uses a “u32x4 key[0];” key, but 
> where is the 
> value?  I am used to seeing a key and value in an entry.
> 
> 
> 
>                       Is “u32 opaque_index” the value?
> 
>                       If yes, why does bihash use a “u64” for value but the 
> classifier 
> uses a u32?
> 
>                       If the classifier table is hit, my next_node needs the 
> “value” 
> associated with the key that incurred the table hit.  After all, for 
> bihash, e.g., clib_bihash_search_48_8() API returns an explicit value.
> 
> 
> 
>                       I plan to use the API in 
> vnet_classify_add_del_session() to program 
> ip4 and ip6 src and dst address prefix matching.
> 
> 
> 
>                       Thanks,
> 
> 
> 
>                       Hemant
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#18564): https://lists.fd.io/g/vpp-dev/message/18564
Mute This Topic: https://lists.fd.io/mt/79925983/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to