FD.io VPP
v18.10-34-gcce845e
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... | |
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 205 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 164 of file load_balance.h.
Flags controlling load-balance formatting/display.
Enumerator | |
---|---|
LOAD_BALANCE_FORMAT_NONE | |
LOAD_BALANCE_FORMAT_DETAIL |
Definition at line 156 of file load_balance.h.
Definition at line 160 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 203 of file load_balance.c.
|
inlinestatic |
Definition at line 303 of file load_balance.c.
|
inlinestatic |
Definition at line 209 of file load_balance.h.
f64 load_balance_get_multipath_tolerance | ( | void | ) |
Definition at line 68 of file load_balance.c.
int load_balance_is_drop | ( | const dpo_id_t * | dpo | ) |
Definition at line 236 of file load_balance.c.
void load_balance_module_init | ( | void | ) |
Definition at line 855 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 503 of file load_balance.c.
Definition at line 253 of file load_balance.c.
Definition at line 220 of file load_balance.c.
void load_balance_set_fib_entry_flags | ( | index_t | lbi, |
fib_entry_flag_t | flags | ||
) |
Definition at line 263 of file load_balance.c.
Definition at line 274 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 56 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 51 of file load_balance.c.