FD.io VPP  v19.01.3-6-g70449b9b9
Vector Packet Processing
lb_vip_t Struct Reference

Load balancing service is provided per VIP+protocol+port. More...

+ Collaboration diagram for lb_vip_t:

Data Fields

lb_new_flow_entry_tnew_flow_table
 Vector mapping (flow-hash & new_connect_table_mask) to AS index. More...
 
u32 new_flow_table_mask
 New flows table length - 1 (length MUST be a power of 2) More...
 
u32 last_garbage_collection
 Last time garbage collection was run to free the ASs. More...
 
ip46_address_t prefix
 A Virtual IP represents a given service delivered by a set of application servers. More...
 
u8 plen
 The VIP prefix length. More...
 
u8 protocol
 
u16 port
 
u32 vip_prefix_index
 
lb_vip_type_t type
 The type of traffic for this. More...
 
lb_vip_encap_args_t encap_args
 
u8 flags
 Flags related to this VIP. More...
 
u32as_indexes
 Pool of AS indexes used for this VIP. More...
 

Detailed Description

Load balancing service is provided per VIP+protocol+port.

In this data model, a VIP can be a whole prefix. But load balancing only occurs on a per-source-address/port basis. Meaning that if a given source reuses the same port for multiple destinations within the same VIP, they will be considered as a single flow.

Definition at line 261 of file lb.h.

Field Documentation

◆ as_indexes

u32* lb_vip_t::as_indexes

Pool of AS indexes used for this VIP.

This also includes ASs that have been removed (but are still referenced).

Definition at line 331 of file lb.h.

◆ encap_args

lb_vip_encap_args_t lb_vip_t::encap_args

Definition at line 315 of file lb.h.

◆ flags

u8 lb_vip_t::flags

Flags related to this VIP.

LB_VIP_FLAGS_USED means the VIP is active. When it is not set, the VIP in the process of being removed. We cannot immediately remove a VIP because the VIP index still may be stored in the adjacency index.

Definition at line 324 of file lb.h.

◆ last_garbage_collection

u32 lb_vip_t::last_garbage_collection

Last time garbage collection was run to free the ASs.

Definition at line 280 of file lb.h.

◆ new_flow_table

lb_new_flow_entry_t* lb_vip_t::new_flow_table

Vector mapping (flow-hash & new_connect_table_mask) to AS index.

This is used for new flows.

Definition at line 269 of file lb.h.

◆ new_flow_table_mask

u32 lb_vip_t::new_flow_table_mask

New flows table length - 1 (length MUST be a power of 2)

Definition at line 275 of file lb.h.

◆ plen

u8 lb_vip_t::plen

The VIP prefix length.

In case of IPv4, plen = 96 + ip4_plen.

Definition at line 297 of file lb.h.

◆ port

u16 lb_vip_t::port

Definition at line 303 of file lb.h.

◆ prefix

ip46_address_t lb_vip_t::prefix

A Virtual IP represents a given service delivered by a set of application servers.

It can be a single address or a prefix. IPv4 prefixes are encoded using IPv4-in-IPv6 embedded address (i.e. ::/96 prefix).

Definition at line 291 of file lb.h.

◆ protocol

u8 lb_vip_t::protocol

Definition at line 300 of file lb.h.

◆ type

lb_vip_type_t lb_vip_t::type

The type of traffic for this.

LB_TYPE_UNDEFINED if unknown.

Definition at line 312 of file lb.h.

◆ vip_prefix_index

u32 lb_vip_t::vip_prefix_index

Definition at line 306 of file lb.h.


The documentation for this struct was generated from the following file: