FD.io VPP
v21.01.1
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 | LOAD_BALANCE_ATTR_NAMES |
#define | FOR_EACH_LOAD_BALANCE_ATTR(_attr) for (_attr = 0; _attr <= LOAD_BALANCE_ATTR_STICKY; _attr++) |
#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 enum load_balance_attr_t_ | load_balance_attr_t |
Flags controlling load-balance creation and modification. More... | |
typedef enum load_balance_flags_t_ | load_balance_flags_t |
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... | |
Enumerations | |
enum | load_balance_attr_t_ { LOAD_BALANCE_ATTR_USES_MAP = 0, LOAD_BALANCE_ATTR_STICKY = 1 } |
Flags controlling load-balance creation and modification. More... | |
enum | load_balance_flags_t_ { LOAD_BALANCE_FLAG_NONE = 0, LOAD_BALANCE_FLAG_USES_MAP = (1 << 0), LOAD_BALANCE_FLAG_STICKY = (1 << 1) } |
enum | load_balance_format_flags_t_ { LOAD_BALANCE_FORMAT_NONE, LOAD_BALANCE_FORMAT_DETAIL = (1 << 0) } |
Flags controlling load-balance formatting/display. More... | |
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 FOR_EACH_LOAD_BALANCE_ATTR | ( | _attr | ) | for (_attr = 0; _attr <= LOAD_BALANCE_ATTR_STICKY; _attr++) |
Definition at line 92 of file load_balance.h.
#define LB_HAS_INLINE_BUCKETS | ( | _lb | ) | ((_lb)->lb_n_buckets <= LB_NUM_INLINE_BUCKETS) |
Definition at line 225 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.
#define LOAD_BALANCE_ATTR_NAMES |
Definition at line 87 of file load_balance.h.
typedef enum load_balance_attr_t_ load_balance_attr_t |
Flags controlling load-balance creation and modification.
typedef enum load_balance_flags_t_ load_balance_flags_t |
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;.
enum load_balance_attr_t_ |
Flags controlling load-balance creation and modification.
Enumerator | |
---|---|
LOAD_BALANCE_ATTR_USES_MAP | |
LOAD_BALANCE_ATTR_STICKY |
Definition at line 82 of file load_balance.h.
Enumerator | |
---|---|
LOAD_BALANCE_FLAG_NONE | |
LOAD_BALANCE_FLAG_USES_MAP | |
LOAD_BALANCE_FLAG_STICKY |
Definition at line 95 of file load_balance.h.
Flags controlling load-balance formatting/display.
Enumerator | |
---|---|
LOAD_BALANCE_FORMAT_NONE | |
LOAD_BALANCE_FORMAT_DETAIL |
Definition at line 183 of file load_balance.h.
Definition at line 200 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 264 of file load_balance.c.
|
inlinestatic |
Definition at line 220 of file load_balance.h.
Definition at line 364 of file load_balance.c.
|
inlinestatic |
Definition at line 229 of file load_balance.h.
flow_hash_config_t load_balance_get_default_flow_hash | ( | dpo_proto_t | lb_proto | ) |
f64 load_balance_get_multipath_tolerance | ( | void | ) |
Definition at line 69 of file load_balance.c.
int load_balance_is_drop | ( | const dpo_id_t * | dpo | ) |
Definition at line 297 of file load_balance.c.
void load_balance_module_init | ( | void | ) |
Definition at line 980 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 627 of file load_balance.c.
Definition at line 314 of file load_balance.c.
Definition at line 281 of file load_balance.c.
void load_balance_set_fib_entry_flags | ( | index_t | lbi, |
fib_entry_flag_t | flags | ||
) |
Definition at line 324 of file load_balance.c.
Definition at line 335 of file load_balance.c.
STATIC_ASSERT | ( | sizeof(load_balance_t)<= | CLIB_CACHE_LINE_BYTES, |
"A load_balance object size exceeds one cacheline" | |||
) |
load_balance_main_t load_balance_main |
The one instance of load-balance main.
Definition at line 57 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 52 of file load_balance.c.