![]() |
FD.io VPP
v19.04.2-12-g66b1689
Vector Packet Processing
|
Include dependency graph for lb.h:
This graph shows which files directly or indirectly include this file: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.
Here is the call graph for this function:
Here is the caller graph for this function:| 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 |