FD.io VPP
v17.10-9-gd594711
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | load_balance_main_t_ |
The load-balance object represents an ECMP choice. More... | |
struct | load_balance_path_t_ |
One path from an [EU]CMP set that the client wants to add to a load-balance object. More... | |
struct | load_balance_t_ |
The FIB DPO provieds;. More... | |
Macros | |
#define | LB_NUM_INLINE_BUCKETS 4 |
The number of buckets that a load-balance object can have and still fit in one cache-line. More... | |
#define | LB_HAS_INLINE_BUCKETS(_lb) ((_lb)->lb_n_buckets <= LB_NUM_INLINE_BUCKETS) |
Typedefs | |
typedef struct load_balance_main_t_ | load_balance_main_t |
The load-balance object represents an ECMP choice. More... | |
typedef struct load_balance_path_t_ | load_balance_path_t |
One path from an [EU]CMP set that the client wants to add to a load-balance object. More... | |
typedef struct load_balance_t_ | load_balance_t |
The FIB DPO provieds;. More... | |
typedef enum load_balance_format_flags_t_ | load_balance_format_flags_t |
Flags controlling load-balance formatting/display. More... | |
typedef enum load_balance_flags_t_ | load_balance_flags_t |
Flags controlling load-balance creation and modification. More... | |
Enumerations | |
enum | load_balance_format_flags_t_ { LOAD_BALANCE_FORMAT_NONE, LOAD_BALANCE_FORMAT_DETAIL = (1 << 0) } |
Flags controlling load-balance formatting/display. More... | |
enum | load_balance_flags_t_ { LOAD_BALANCE_FLAG_NONE = 0, LOAD_BALANCE_FLAG_USES_MAP = (1 << 0) } |
Flags controlling load-balance creation and modification. More... | |
Functions | |
STATIC_ASSERT (sizeof(load_balance_t)<=CLIB_CACHE_LINE_BYTES,"A load_balance object size exceeds one cachline") | |
index_t | load_balance_create (u32 num_buckets, dpo_proto_t lb_proto, flow_hash_config_t fhc) |
void | load_balance_multipath_update (const dpo_id_t *dpo, const load_balance_path_t *raw_next_hops, load_balance_flags_t flags) |
void | load_balance_set_bucket (index_t lbi, u32 bucket, const dpo_id_t *next) |
void | load_balance_set_urpf (index_t lbi, index_t urpf) |
void | load_balance_set_fib_entry_flags (index_t lbi, fib_entry_flag_t flags) |
index_t | load_balance_get_urpf (index_t lbi) |
u8 * | format_load_balance (u8 *s, va_list *args) |
const dpo_id_t * | load_balance_get_bucket (index_t lbi, u32 bucket) |
int | load_balance_is_drop (const dpo_id_t *dpo) |
f64 | load_balance_get_multipath_tolerance (void) |
static load_balance_t * | load_balance_get (index_t lbi) |
static const dpo_id_t * | load_balance_get_bucket_i (const load_balance_t *lb, u32 bucket) |
void | load_balance_module_init (void) |
Variables | |
load_balance_main_t | load_balance_main |
The one instance of load-balance main. More... | |
load_balance_t * | load_balance_pool |
The encapsulation breakages are for fast DP access. More... | |
#define LB_HAS_INLINE_BUCKETS | ( | _lb | ) | ((_lb)->lb_n_buckets <= LB_NUM_INLINE_BUCKETS) |
Definition at line 198 of file load_balance.h.
#define LB_NUM_INLINE_BUCKETS 4 |
The number of buckets that a load-balance object can have and still fit in one cache-line.
Definition at line 56 of file load_balance.h.
typedef enum load_balance_flags_t_ load_balance_flags_t |
Flags controlling load-balance creation and modification.
typedef enum load_balance_format_flags_t_ load_balance_format_flags_t |
Flags controlling load-balance formatting/display.
typedef struct load_balance_main_t_ load_balance_main_t |
The load-balance object represents an ECMP choice.
The buckets of a load balance object point to the sub-graph after the choice is made. THe load-balance object is also object type returned from a FIB table lookup. As such it needs to represent the case where there is only one coice. It may seem like overkill to use a load-balance object in this case, but the reason is for performance. If the load-balance object were not the result of the FIB lookup, then some other object would be. The case where there was ECMP this other object would need a load-balance as a parent and hence just add an unnecessary indirection.
It is also the object in the DP that represents a via-fib-entry in a recursive route. Load-balance main
typedef struct load_balance_path_t_ load_balance_path_t |
One path from an [EU]CMP set that the client wants to add to a load-balance object.
typedef struct load_balance_t_ load_balance_t |
The FIB DPO provieds;.
Flags controlling load-balance creation and modification.
Enumerator | |
---|---|
LOAD_BALANCE_FLAG_NONE | |
LOAD_BALANCE_FLAG_USES_MAP |
Definition at line 158 of file load_balance.h.
Flags controlling load-balance formatting/display.
Enumerator | |
---|---|
LOAD_BALANCE_FORMAT_NONE | |
LOAD_BALANCE_FORMAT_DETAIL |
Definition at line 150 of file load_balance.h.
Definition at line 150 of file load_balance.c.
index_t load_balance_create | ( | u32 | num_buckets, |
dpo_proto_t | lb_proto, | ||
flow_hash_config_t | fhc | ||
) |
Definition at line 193 of file load_balance.c.
|
inlinestatic |
Definition at line 283 of file load_balance.c.
|
inlinestatic |
Definition at line 202 of file load_balance.h.
f64 load_balance_get_multipath_tolerance | ( | void | ) |
Definition at line 58 of file load_balance.c.
int load_balance_is_drop | ( | const dpo_id_t * | dpo | ) |
Definition at line 226 of file load_balance.c.
void load_balance_module_init | ( | void | ) |
Definition at line 829 of file load_balance.c.
void load_balance_multipath_update | ( | const dpo_id_t * | dpo, |
const load_balance_path_t * | raw_next_hops, | ||
load_balance_flags_t | flags | ||
) |
Definition at line 483 of file load_balance.c.
Definition at line 210 of file load_balance.c.
void load_balance_set_fib_entry_flags | ( | index_t | lbi, |
fib_entry_flag_t | flags | ||
) |
Definition at line 243 of file load_balance.c.
Definition at line 254 of file load_balance.c.
STATIC_ASSERT | ( | sizeof(load_balance_t)<= | CLIB_CACHE_LINE_BYTES, |
"A load_balance object size exceeds one cachline" | |||
) |
load_balance_main_t load_balance_main |
The one instance of load-balance main.
Definition at line 55 of file load_balance.c.
load_balance_t* load_balance_pool |
The encapsulation breakages are for fast DP access.
The encapsulation breakages are for fast DP access.
It's not static so the DP can have fast access
Definition at line 50 of file load_balance.c.