FD.io VPP
v18.10-34-gcce845e
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | lb_as_t |
Each VIP is configured with a set of application server. More... | |
struct | lb_new_flow_entry_t |
struct | lb_vip_encap_args_t |
struct | vip_port_key_t |
struct | lb_vip_t |
Load balancing service is provided per VIP+protocol+port. More... | |
struct | lb_snat4_key_t |
struct | lb_snat6_key_t |
struct | lb_snat_mapping_t |
struct | lb_per_cpu_t |
struct | lb_main_t |
struct | lb_vip_add_args_t |
Macros | |
#define | LB_DEFAULT_PER_CPU_STICKY_BUCKETS 1 << 10 |
lb-plugin implements a MagLev-like load balancer. More... | |
#define | LB_DEFAULT_FLOW_TIMEOUT 40 |
#define | LB_MAPPING_BUCKETS 1024 |
#define | LB_MAPPING_MEMORY_SIZE 64<<20 |
#define | LB_VIP_PER_PORT_BUCKETS 1024 |
#define | LB_VIP_PER_PORT_MEMORY_SIZE 64<<20 |
#define | foreach_lb_nat_in2out_error |
#define | LB_AS_FLAGS_USED 0x1 |
#define | lb_foreach_vip_counter |
#define | LB_VIP_FLAGS_USED 0x1 |
#define | lb_vip_is_ip4(type) |
#define | lb_vip_is_ip6(type) |
#define | lb_encap_is_ip4(vip) |
#define | lb_vip_is_gre4(vip) |
#define | lb_vip_is_gre6(vip) |
#define | lb_vip_is_gre4_port(vip) |
#define | lb_vip_is_gre6_port(vip) |
#define | foreach_lb_nat_protocol |
#define | lb_vip_get_by_index(index) (pool_is_free_index(lb_main.vips, index)?NULL:pool_elt_at_index(lb_main.vips, index)) |
Functions | |
static bool | lb_vip_is_l3dsr (const lb_vip_t *vip) |
static bool | lb_vip_is_l3dsr_port (const lb_vip_t *vip) |
static bool | lb_vip_is_nat4_port (const lb_vip_t *vip) |
static bool | lb_vip_is_nat6_port (const lb_vip_t *vip) |
static u32 | lb_ip_proto_to_nat_proto (u8 ip_proto) |
int | lb_conf (ip4_address_t *ip4_address, ip6_address_t *ip6_address, u32 sticky_buckets, u32 flow_timeout) |
Fix global load-balancer parameters. More... | |
int | lb_vip_add (lb_vip_add_args_t args, u32 *vip_index) |
int | lb_vip_del (u32 vip_index) |
int | lb_vip_find_index (ip46_address_t *prefix, u8 plen, u8 protocol, u16 port, u32 *vip_index) |
int | lb_vip_add_ass (u32 vip_index, ip46_address_t *addresses, u32 n) |
int | lb_vip_del_ass (u32 vip_index, ip46_address_t *addresses, u32 n, u8 flush) |
int | lb_flush_vip_as (u32 vip_index, u32 as_index) |
u32 | lb_hash_time_now (vlib_main_t *vm) |
void | lb_garbage_collection () |
int | lb_nat4_interface_add_del (u32 sw_if_index, int is_del) |
int | lb_nat6_interface_add_del (u32 sw_if_index, int is_del) |
Variables | |
format_function_t | format_lb_as |
format_function_t | format_lb_vip_type |
unformat_function_t | unformat_lb_vip_type |
format_function_t | format_lb_vip |
format_function_t | format_lb_vip_detailed |
lb_main_t | lb_main |
vlib_node_registration_t | lb4_node |
vlib_node_registration_t | lb6_node |
vlib_node_registration_t | lb4_nodeport_node |
(constructor) VLIB_REGISTER_NODE (lb4_nodeport_node) More... | |
vlib_node_registration_t | lb6_nodeport_node |
(constructor) VLIB_REGISTER_NODE (lb6_nodeport_node) More... | |
vlib_node_registration_t | lb_nat4_in2out_node |
(constructor) VLIB_REGISTER_NODE (lb_nat4_in2out_node) More... | |
vlib_node_registration_t | lb_nat6_in2out_node |
(constructor) VLIB_REGISTER_NODE (lb_nat6_in2out_node) More... | |
format_function_t | format_lb_main |
#define foreach_lb_nat_in2out_error |
#define foreach_lb_nat_protocol |
#define LB_DEFAULT_PER_CPU_STICKY_BUCKETS 1 << 10 |
lb-plugin implements a MagLev-like load balancer.
http://research.google.com/pubs/pub44824.html
It hasn't been tested for interoperability with the original MagLev but intends to provide similar functionality. The load-balancer receives traffic destined to VIP (Virtual IP) addresses from one or multiple(ECMP) routers. The load-balancer tunnels the traffic toward many application servers ensuring session stickyness (i.e. that a single sessions is tunneled towards a single application server).
#define lb_encap_is_ip4 | ( | vip | ) |
#define lb_foreach_vip_counter |
#define lb_vip_get_by_index | ( | index | ) | (pool_is_free_index(lb_main.vips, index)?NULL:pool_elt_at_index(lb_main.vips, index)) |
#define lb_vip_is_gre4 | ( | vip | ) |
#define lb_vip_is_gre4_port | ( | vip | ) |
#define lb_vip_is_gre6 | ( | vip | ) |
#define lb_vip_is_gre6_port | ( | vip | ) |
#define lb_vip_is_ip4 | ( | type | ) |
#define lb_vip_is_ip6 | ( | type | ) |
enum lb4_nodeport_next_t |
enum lb6_nodeport_next_t |
enum lb_encap_type_t |
enum lb_lkp_type_t |
enum lb_nat_protocol_t |
enum lb_svr_type_t |
enum lb_vip_counter_t |
enum lb_vip_type_t |
int lb_conf | ( | ip4_address_t * | ip4_address, |
ip6_address_t * | ip6_address, | ||
u32 | sticky_buckets, | ||
u32 | flow_timeout | ||
) |
Fix global load-balancer parameters.
ip4_address | IPv4 source address used for encapsulated traffic |
ip6_address | IPv6 source address used for encapsulated traffic |
Definition at line 472 of file lb.c.
void lb_garbage_collection | ( | ) |
u32 lb_hash_time_now | ( | vlib_main_t * | vm | ) |
int lb_nat4_interface_add_del | ( | u32 | sw_if_index, |
int | is_del | ||
) |
int lb_nat6_interface_add_del | ( | u32 | sw_if_index, |
int | is_del | ||
) |
int lb_vip_add | ( | lb_vip_add_args_t | args, |
u32 * | vip_index | ||
) |
int lb_vip_del | ( | u32 | vip_index | ) |
format_function_t format_lb_as |
format_function_t format_lb_main |
format_function_t format_lb_vip |
format_function_t format_lb_vip_detailed |
format_function_t format_lb_vip_type |
vlib_node_registration_t lb4_node |
vlib_node_registration_t lb4_nodeport_node |
vlib_node_registration_t lb6_node |
vlib_node_registration_t lb6_nodeport_node |
vlib_node_registration_t lb_nat4_in2out_node |
vlib_node_registration_t lb_nat6_in2out_node |
unformat_function_t unformat_lb_vip_type |