FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
lb.api
Go to the documentation of this file.
1 option version = "1.0.0";
2 import "plugins/lb/lb_types.api";
3 import "vnet/interface_types.api";
4 
5 /** \brief Configure Load-Balancer global parameters (unlike the CLI, both ip4_src_address and ip6_src_address need to be specified.
6  @param client_index - opaque cookie to identify the sender
7  @param context - sender context, to match reply w/ request
8  @param ip4_src_address - IPv4 address to be used as source for IPv4 traffic(applicable in GRE4/GRE6/NAT4/NAT6 mode only).
9  @param ip6_src_address - IPv6 address to be used as source for IPv6 traffic(applicable in GRE4/GRE6/NAT4/NAT6 mode only).
10  @param sticky_buckets_per_core - Number of buckets *per worker thread* in the
11  established flow table (must be power of 2).
12  @param flow_timeout - Time in seconds after which, if no packet is received
13  for a given flow, the flow is removed from the established flow table.
14 */
15 autoreply manual_print define lb_conf
16 {
19  vl_api_ip4_address_t ip4_src_address;
20  vl_api_ip6_address_t ip6_src_address;
21  u32 sticky_buckets_per_core [default=0xffffffff];
22  u32 flow_timeout [default=0xffffffff];
23  option vat_help = "[ip4-src-address <addr>] [ip6-src-address <addr>] [buckets <n>] [timeout <s>]";
24 };
25 
26 /** \brief Add a virtual address (or prefix)
27  @param client_index - opaque cookie to identify the sender
28  @param context - sender context, to match reply w/ request
29  @param pfx - ip prefix and length
30  @param protocol - tcp or udp.
31  @param port - destination port. (0) means 'all-port VIP'
32  @param encap - Encap is ip4 GRE(0) or ip6 GRE(1) or L3DSR(2) or NAT4(3) or NAT6(4).
33  @param dscp - DSCP bit corresponding to VIP(applicable in L3DSR mode only).
34  @param type - service type(applicable in NAT4/NAT6 mode only).
35  @param target_port - Pod's port corresponding to specific service(applicable in NAT4/NAT6 mode only).
36  @param node_port - Node's port(applicable in NAT4/NAT6 mode only).
37  @param new_flows_table_length - Size of the new connections flow table used
38  for this VIP (must be power of 2).
39  @param is_del - The VIP should be removed.
40 */
41 autoreply manual_print define lb_add_del_vip {
44  vl_api_address_with_prefix_t pfx;
45  u8 protocol [default=255];
47  vl_api_lb_encap_type_t encap;
49  vl_api_lb_srv_type_t type ; /* LB_API_SRV_TYPE_CLUSTERIP */
52  u32 new_flows_table_length [default=1024];
53  bool is_del;
54  option vat_help = "<prefix> [protocol (tcp|udp) port <n>] [encap (gre6|gre4|l3dsr|nat4|nat6)] [dscp <n>] [type (nodeport|clusterip) target_port <n>] [new_len <n>] [del]";
55 };
56 
57 /** \brief Add an application server for a given VIP
58  @param client_index - opaque cookie to identify the sender
59  @param context - sender context, to match reply w/ request
60  @param pfx - ip prefix and length
61  @param protocol - tcp or udp.
62  @param port - destination port.
63  @param as_address - The application server address (IPv4 in lower order 32 bits).
64  @param is_del - The AS should be removed.
65  @param is_flush - The sessions related to this AS should be flushed.
66 */
67 autoreply manual_print define lb_add_del_as {
70  vl_api_address_with_prefix_t pfx;
71  u8 protocol [default=255];
73  vl_api_address_t as_address;
74  bool is_del;
75  bool is_flush;
76  option vat_help = "<vip-prefix> [protocol (tcp|udp) port <n>] [<address>] [del] [flush]";
77 };
78 
79 /** \brief Flush a given vip
80  @param client_index - opaque cookie to identify the sender
81  @param context - sender context, to match reply w/ request
82  @param pfx - ip prefix and length
83  @param protocol - tcp or udp.
84  @param port - destination port.
85 */
86 autoreply manual_print define lb_flush_vip {
89  vl_api_address_with_prefix_t pfx;
92 };
93 
94 /** \brief Dump all vips
95  @param client_index - opaque cookie to identify the sender
96  @param context - sender context, to match reply w/ request
97 */
98 define lb_vip_dump{
101  vl_api_address_with_prefix_t pfx;
102  vl_api_prefix_matcher_t pfx_matcher;
103  u8 protocol [default=255];
105 
106 };
107 
108 /** \brief Reply all configured vip
109  @param context - sender context, to match reply w/ request
110  @param vip - all vip addrs.
111 */
112 define lb_vip_details {
114  vl_api_lb_vip_t vip;
115  vl_api_lb_encap_type_t encap;
116  vl_api_ip_dscp_t dscp;
117  vl_api_lb_srv_type_t srv_type;
120 };
121 
122 /** \brief dump AS list per VIP or all ASs for all VIPs
123  @param client_index - opaque cookie to identify the sender
124  @param context - sender context, to match reply w/ request
125  @param pfx - ip prefix and length.
126  @param protocol - tcp or udp.
127  @param port - destination port.
128 */
129 define lb_as_dump{
132  /* vip */
133  vl_api_address_with_prefix_t pfx;
136  option vat_help = "<vip-prefix> [protocol (tcp|udp) port <n>]";
137 };
138 
139 /** \brief lb_as_details
140  @param context - sender context, to match reply w/ request
141  @param as - AS detail record
142 */
143 define lb_as_details {
145  vl_api_lb_vip_t vip;
146  vl_api_address_t app_srv;
149 };
150 
151 /** \brief Enable/disable NAT4 feature on the interface
152  @param client_index - opaque cookie to identify the sender
153  @param context - sender context, to match reply w/ request
154  @param is_add - true if add, false if delete
155  @param sw_if_index - software index of the interface
156 */
157 autoreply define lb_add_del_intf_nat4 {
160  bool is_add;
161  vl_api_interface_index_t sw_if_index;
162 };
163 
164 /** \brief Enable/disable NAT6 feature on the interface
165  @param client_index - opaque cookie to identify the sender
166  @param context - sender context, to match reply w/ request
167  @param is_add - true if add, false if delete
168  @param sw_if_index - software index of the interface
169 */
170 autoreply define lb_add_del_intf_nat6 {
173  bool is_add;
174  vl_api_interface_index_t sw_if_index;
175 };
vl_api_address_t as_address
Definition: lb.api:73
vl_api_lb_srv_type_t srv_type
Definition: lb.api:117
int lb_conf(ip4_address_t *ip4_address, ip6_address_t *ip6_address, u32 per_cpu_sticky_buckets, u32 flow_timeout)
Fix global load-balancer parameters.
Definition: lb.c:476
unsigned char u8
Definition: types.h:56
vl_api_ip_proto_t protocol
Definition: lb_types.api:71
vl_api_lb_vip_t vip
Definition: lb.api:145
u32 client_index
Definition: lb.api:17
vl_api_address_with_prefix_t pfx
Definition: lb.api:89
option version
Definition: lb.api:1
vl_api_address_with_prefix_t pfx
Definition: lb.api:133
vl_api_address_t app_srv
Definition: lb.api:146
vl_api_lb_vip_t vip
Definition: lb.api:114
unsigned int u32
Definition: types.h:88
vl_api_lb_encap_type_t encap
Definition: lb.api:115
vl_api_ip6_address_t ip6_src_address
Definition: lb.api:20
unsigned short u16
Definition: types.h:57
vl_api_lb_srv_type_t type
Definition: lb.api:49
u32 context
Definition: lb.api:18
vl_api_address_with_prefix_t pfx
Definition: lb.api:101
vl_api_address_with_prefix_t pfx
Definition: lb.api:44
_t u32 client_index
Definition: lb.api:130
vl_api_interface_index_t sw_if_index
Definition: lb.api:174
vl_api_address_with_prefix_t pfx
Definition: lb.api:70
vl_api_ip4_address_t ip4_src_address
Definition: lb.api:19
vl_api_interface_index_t sw_if_index
Definition: lb.api:161
_t u32 client_index
Definition: lb.api:99
vl_api_lb_encap_type_t encap
Definition: lb.api:47
vl_api_prefix_matcher_t pfx_matcher
Definition: lb.api:102
vl_api_ip_dscp_t dscp
Definition: lb.api:116