Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_member.h(3) 		      DPDK			 rte_member.h(3)

NAME
     rte_member.h

SYNOPSIS
     #include <stdint.h>
     #include <stdbool.h>
     #include <inttypes.h>
     #include <rte_common.h>

   Data Structures
     struct rte_member_parameters

   Macros
     #define RTE_MEMBER_NO_MATCH   0
     #define RTE_MEMBER_ENTRIES_MAX   (1 << 30)
     #define RTE_MEMBER_LOOKUP_BULK_MAX   64
     #define RTE_MEMBER_BUCKET_ENTRIES	 16
     #define RTE_MEMBER_NAMESIZE   32
     #define RTE_RAND_MAX   ~0LLU
     #define RTE_MEMBER_SKETCH_ALWAYS_BOUNDED	0x01
     #define RTE_MEMBER_SKETCH_COUNT_BYTE   0x02

   Typedefs
     typedef uint16_t member_set_t

   Enumerations
     enum  rte_member_setsum_type { RTE_MEMBER_TYPE_HT = 0, RTE_MEMBER_TYPE_VBF,
	 RTE_MEMBER_TYPE_SKETCH, RTE_MEMBER_NUM_TYPE }

   Functions
     struct rte_member_setsum * rte_member_find_existing (const char *name)
     void rte_member_free (struct rte_member_setsum *setsum)
     struct rte_member_setsum * rte_member_create (const struct rte_member_para-
	 meters *params) __rte_malloc __rte_dealloc(rte_member_free
     struct  rte_member_setsum	int  rte_member_lookup	(const	struct	rte_mem-
	 ber_setsum *setsum, const void *key, member_set_t *set_id)
     int  rte_member_lookup_bulk  (const struct rte_member_setsum *setsum, const
	 void **keys, uint32_t num_keys, member_set_t *set_ids)
     int rte_member_lookup_multi (const struct rte_member_setsum *setsum,  const
	 void *key, uint32_t max_match_per_key, member_set_t *set_id)
     int  rte_member_lookup_multi_bulk	(const struct rte_member_setsum *setsum,
	 const	void  **keys,  uint32_t  num_keys,  uint32_t  max_match_per_key,
	 uint32_t *match_count, member_set_t *set_ids)
     int  rte_member_add  (const  struct  rte_member_setsum  *setsum, const void
	 *key, member_set_t set_id)
     int  rte_member_add_byte_count  (const  struct  rte_member_setsum	*setsum,
	 const void *key, uint32_t byte_count)
     int  rte_member_query_count  (const struct rte_member_setsum *setsum, const
	 void *key, uint64_t *count)
     int rte_member_report_heavyhitter (const struct rte_member_setsum	*setsum,
	 void **keys, uint64_t *counts)
     void rte_member_reset (const struct rte_member_setsum *setsum)
     int  rte_member_delete  (const struct rte_member_setsum *setsum, const void
	 *key, member_set_t set_id)

Detailed Description
     RTE Membership Library

     The Membership Library is an extension and generalization of a  traditional
     filter (for example Bloom Filter and cuckoo filter) structure that has mul-
     tiple  usages  in	a  variety of workloads and applications. The library is
     used to test if a key belongs to certain sets. Two types of such  'set-sum-
     mary'  structures	are  implemented: hash-table based (HT) and vector bloom
     filter (vBF). For HT setsummary, two subtypes or modes are available, cache
     and non-cache modes. The table below summarize some properties of the  dif-
     ferent implementations.

     Definition in file rte_member.h.

Macro Definition Documentation
   #define RTE_MEMBER_NO_MATCH	 0
     Invalid set ID used to mean no match found.

     Definition at line 66 of file rte_member.h.

   #define RTE_MEMBER_ENTRIES_MAX   (1 << 30)
     Maximum size of hash table that can be created.

     Definition at line 68 of file rte_member.h.

   #define RTE_MEMBER_LOOKUP_BULK_MAX	64
     Maximum number of keys that can be searched as a bulk

     Definition at line 70 of file rte_member.h.

   #define RTE_MEMBER_BUCKET_ENTRIES   16
     Entry count per bucket in hash table based mode.

     Definition at line 72 of file rte_member.h.

   #define RTE_MEMBER_NAMESIZE	 32
     Maximum number of characters in setsum name.

     Definition at line 74 of file rte_member.h.

   #define RTE_RAND_MAX   ~0LLU
     Max value of the random number

     Definition at line 76 of file rte_member.h.

   #define RTE_MEMBER_SKETCH_ALWAYS_BOUNDED   0x01
     As  packets skipped in the sampling-based algorithm, the accounting results
     accuracy is not guaranteed in the start stage. There should be  a	'conver-
     gence  time'  to  achieve	the accuracy after receiving enough packets. For
     sketch, use the flag if prefer always bounded mode, which only starts  sam-
     pling  after  receiving  enough packets to keep the results accuracy always
     bounded.

     Definition at line 86 of file rte_member.h.

   #define RTE_MEMBER_SKETCH_COUNT_BYTE   0x02
     For sketch, use the flag if to count packet size instead of packet count

     Definition at line 88 of file rte_member.h.

Typedef Documentation
   typedef uint16_t member_set_t
     The set ID type that stored internally in hash table based set summary.

     Definition at line 64 of file rte_member.h.

Enumeration Type Documentation
   enum rte_member_setsum_type
     Define different set summary types

     Enumerator

     RTE_MEMBER_TYPE_HT
	    Hash table based set summary.

     RTE_MEMBER_TYPE_VBF
	    Vector of bloom filters.

     Definition at line 105 of file rte_member.h.

Function Documentation
   struct rte_member_setsum * rte_member_find_existing (const char * name)
     Find an existing set-summary and return a pointer to it.

     Parameters
	 name Name of the set-summary.

     Returns
	 Pointer to the set-summary or NULL if object not found  with  rte_errno
	 set appropriately. Possible rte_errno values include:

	 * ENOENT - value not available for return

   void rte_member_free (struct rte_member_setsum * setsum)
     De-allocate memory used by set-summary.

     Parameters
	 setsum  Pointer  to the set summary. If setsum is NULL, no operation is
	 performed.

   struct rte_member_setsum * rte_member_create (const struct rte_member_parame-
     ters * params)
     Create set-summary (SS).

     Parameters
	 params Parameters to initialize the setsummary.

     Returns
	 Return the pointer to the setsummary. Return value is NULL if the  cre-
	 ation failed.

   struct  rte_member_setsum int rte_member_lookup (const struct rte_member_set-
     sum * setsum, const void * key, member_set_t * set_id)
     Lookup key in set-summary (SS). Single key lookup and return as soon as the
     first match found

     Parameters
	 setsum Pointer of a setsummary.
	 key Pointer of the key to be looked up.
	 set_id Output the set id matches the key.

     Returns
	 Return 1 for found a match and 0 for not found a match.

   int rte_member_lookup_bulk (const struct rte_member_setsum  *  setsum,  const
     void ** keys, uint32_t num_keys, member_set_t * set_ids)
     Lookup bulk of keys in set-summary (SS). Each key lookup returns as soon as
     the first match found

     Parameters
	 setsum Pointer of a setsummary.
	 keys Pointer of the bulk of keys to be looked up.
	 num_keys Number of keys that will be lookup.
	 set_ids Output set ids for all the keys to this array. User should pre-
	 allocate  array  that	can  contain  all  results,  which  size  is the
	 num_keys.

     Returns
	 The number of keys that found a match.

   int rte_member_lookup_multi (const struct rte_member_setsum *  setsum,  const
     void * key, uint32_t max_match_per_key, member_set_t * set_id)
     Lookup  a key in set-summary (SS) for multiple matches. The key lookup will
     find all matched entries (multiple match). Note that for cache mode of  HT,
     each  key can have at most one match. This is because keys with same signa-
     ture that maps to same bucket will overwrite  each  other.  So  multi-match
     lookup should be used for vBF and non-cache HT.

     Parameters
	 setsum Pointer of a set-summary.
	 key Pointer of the key that to be looked up.
	 max_match_per_key  User  specified  maximum  number of matches for each
	 key. The function returns as soon as this number of matches  found  for
	 the key.
	 set_id  Output  set  ids  for all the matches of the key. User needs to
	 preallocate the array that can contain max_match_per_key number of  re-
	 sults.

     Returns
	 The  number  of  matches that found for the key. For cache mode HT set-
	 summary, the number should be at most 1.

   int rte_member_lookup_multi_bulk (const struct  rte_member_setsum  *  setsum,
     const void ** keys, uint32_t num_keys, uint32_t max_match_per_key, uint32_t
     * match_count, member_set_t * set_ids)
     Lookup  a	bulk  of keys in set-summary (SS) for multiple matches each key.
     Each key lookup will find all matched entries (multiple match).  Note  that
     for  cache  mode  HT,  each  key can have at most one match. So multi-match
     function is mainly used for vBF and non-cache mode HT.

     Parameters
	 setsum Pointer of a setsummary.
	 keys Pointer of the keys to be looked up.
	 num_keys The number of keys that will be lookup.
	 max_match_per_key The possible maximum number of matches for each key.
	 match_count Output the number of matches for each key in an array.
	 set_ids Return set ids for all the matches of all keys. Users pass in a
	 preallocated 2D array with first dimension as key index and second  di-
	 mension	 as	   match	index.	      For	 example
	 set_ids[bulk_size][max_match_per_key]

     Returns
	 The number of keys that found one or more matches in the set-summary.

   int rte_member_add (const struct rte_member_setsum *  setsum,  const  void  *
     key, member_set_t set_id)
     Insert key into set-summary (SS).

     Parameters
	 setsum Pointer of a set-summary.
	 key Pointer of the key to be added.
	 set_id  The set id associated with the key that needs to be added. Dif-
	 ferent mode supports different set_id	ranges.  0  cannot  be	used  as
	 set_id  since	RTE_MEMBER_NO_MATCH by default is set as 0. For HT mode,
	 the set_id has range as [1, 0x7FFF], MSB is reserved. For vBF mode  the
	 set id is limited by the num_set parameter when create the set-summary.
	 For sketch mode, this id is ignored.

     Returns
	 HT  (cache  mode) and vBF should never fail unless the set_id is not in
	 the valid range. In such case -EINVAL is returned.  For  HT  (non-cache
	 mode)	it  could  fail  with -ENOSPC error code when table is full. For
	 success it returns different values for different modes to provide  ex-
	 tra information for users. Return 0 for HT (cache mode) if the add does
	 not  cause eviction, return 1 otherwise. Return 0 for non-cache mode if
	 success, -ENOSPC for full, and 1 if cuckoo eviction happens. Always re-
	 turns 0 for vBF mode and sketch.

   int rte_member_add_byte_count (const struct rte_member_setsum * setsum, const
     void * key, uint32_t byte_count)
     Add the packet byte size into the sketch.

     Parameters
	 setsum Pointer of a set-summary.
	 key Pointer of the key to be added.
	 byte_count Add the byte count of the packet into the sketch.

     Returns
	 Return -EINVAL for invalid parameters, otherwise return 0.

   int rte_member_query_count (const struct rte_member_setsum  *  setsum,  const
     void * key, uint64_t * count)
     Query packet count for a certain flow-key.

     Parameters
	 setsum Pointer of a set-summary.
	 key Pointer of the key to be added.
	 count The output packet count or byte count.

     Returns
	 Return -EINVAL for invalid parameters.

   int	rte_member_report_heavyhitter  (const struct rte_member_setsum * setsum,
     void ** keys, uint64_t * counts)
     Report heavyhitter flow-keys into set-summary (SS).

     Parameters
	 setsum Pointer of a set-summary.
	 keys Pointer of the output top-k key array.
	 counts Pointer of the output packet count or byte count  array  of  the
	 top-k keys.

     Returns
	 Return  -EINVAL for invalid parameters. Return a positive integer indi-
	 cate how many heavy hitters are reported.

   void rte_member_reset (const struct rte_member_setsum * setsum)
     Reset the set-summary tables. E.g. reset bits to be 0 in BF,  reset  set_id
     in each entry to be RTE_MEMBER_NO_MATCH in HT based SS.

     Parameters
	 setsum Pointer to the set-summary.

   int	rte_member_delete (const struct rte_member_setsum * setsum, const void *
     key, member_set_t set_id)
     Delete items from the set-summary. Note that vBF does not support	deletion
     in current implementation. For vBF, error code of -EINVAL will be returned.

     Parameters
	 setsum Pointer to the set-summary.
	 key Pointer of the key to be deleted.
	 set_id  For  HT  mode, we need both key and its corresponding set_id to
	 properly delete the key. Without set_id, we may delete other keys  with
	 the same signature.

     Returns
	 If  no  entry	found  to  delete, an error code of -ENOENT could be re-
	 turned.

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		 rte_member.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_MEMBER_SKETCH_COUNT_BYTE&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help