aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/lb/lb.api
blob: 96f047ddbc2144a6a226a12472fbfc0e684d2e63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
option version = "1.1.0";
import "plugins/lb/lb_types.api";
import "vnet/interface_types.api";

/** \brief Configure Load-Balancer global parameters (unlike the CLI, both ip4_src_address and ip6_src_address need to be specified.
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param ip4_src_address - IPv4 address to be used as source for IPv4 traffic(applicable in GRE4/GRE6/NAT4/NAT6 mode only).
    @param ip6_src_address - IPv6 address to be used as source for IPv6 traffic(applicable in GRE4/GRE6/NAT4/NAT6 mode only).
    @param sticky_buckets_per_core - Number of buckets *per worker thread* in the
           established flow table (must be power of 2).
    @param flow_timeout - Time in seconds after which, if no packet is received
           for a given flow, the flow is removed from the established flow table.
*/
autoreply  define lb_conf
{
  u32 client_index;
  u32 context;
  vl_api_ip4_address_t ip4_src_address;
  vl_api_ip6_address_t ip6_src_address;
  u32 sticky_buckets_per_core [default=0xffffffff];
  u32 flow_timeout [default=0xffffffff];
  option vat_help = "[ip4-src-address <addr>] [ip6-src-address <addr>] [buckets <n>] [timeout <s>]";
};

/** \brief Add a virtual address (or prefix)
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param pfx - ip prefix and length
    @param protocol - tcp or udp.
    @param port - destination port. (0) means 'all-port VIP'
    @param encap - Encap is ip4 GRE(0) or ip6 GRE(1) or L3DSR(2) or NAT4(3) or NAT6(4).
    @param dscp - DSCP bit corresponding to VIP(applicable in L3DSR mode only).
    @param type - service type(applicable in NAT4/NAT6 mode only).
    @param target_port - Pod's port corresponding to specific service(applicable in NAT4/NAT6 mode only).
    @param node_port - Node's port(applicable in NAT4/NAT6 mode only).
    @param new_flows_table_length - Size of the new connections flow table used
           for this VIP (must be power of 2).
    @param is_del - The VIP should be removed.
*/
autoreply  define lb_add_del_vip {
  u32 client_index;
  u32 context;
  vl_api_address_with_prefix_t pfx;
  u8 protocol [default=255];
  u16 port;
  vl_api_lb_encap_type_t encap;
  u8 dscp;
  vl_api_lb_srv_type_t type ; /* LB_API_SRV_TYPE_CLUSTERIP */
  u16 target_port;
  u16 node_port;
  u32 new_flows_table_length [default=1024];
  bool is_del;
  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]";
};

/** \brief Add a virtual address (or prefix)
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param pfx - ip prefix and length
    @param protocol - tcp or udp.
    @param port - destination port. (0) means 'all-port VIP'
    @param encap - Encap is ip4 GRE(0) or ip6 GRE(1) or L3DSR(2) or NAT4(3) or NAT6(4).
    @param dscp - DSCP bit corresponding to VIP(applicable in L3DSR mode only).
    @param type - service type(applicable in NAT4/NAT6 mode only).
    @param target_port - Pod's port corresponding to specific service(applicable in NAT4/NAT6 mode only).
    @param node_port - Node's port(applicable in NAT4/NAT6 mode only).
    @param new_flows_table_length - Size of the new connections flow table used
           for this VIP (must be power of 2).
    @param src_ip_sticky - source ip based sticky session.
    @param is_del - The VIP should be removed.
*/
autoreply  define lb_add_del_vip_v2 {
  u32 client_index;
  u32 context;
  vl_api_address_with_prefix_t pfx;
  u8 protocol [default=255];
  u16 port;
  vl_api_lb_encap_type_t encap;
  u8 dscp;
  vl_api_lb_srv_type_t type ; /* LB_API_SRV_TYPE_CLUSTERIP */
  u16 target_port;
  u16 node_port;
  u32 new_flows_table_length [default=1024];
  bool src_ip_sticky;
  bool is_del;
  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>] [src_ip_sticky] [del]";
};

/** \brief Add an application server for a given VIP
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param pfx - ip prefix and length
    @param protocol - tcp or udp.
    @param port - destination port.
    @param as_address - The application server address (IPv4 in lower order 32 bits).
    @param is_del - The AS should be removed.
    @param is_flush - The sessions related to this AS should be flushed.
*/
autoreply  define lb_add_del_as {
  u32 client_index;
  u32 context;
  vl_api_address_with_prefix_t pfx;
  u8 protocol [default=255];
  u16 port;
  vl_api_address_t as_address;
  bool is_del;
  bool is_flush;
  option vat_help = "<vip-prefix> [protocol (tcp|udp) port <n>] [<address>] [del] [flush]";
};

/** \brief Flush a given vip
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param pfx - ip prefix and length
    @param protocol - tcp or udp.
    @param port - destination port.
*/
autoreply  define lb_flush_vip {
  u32 client_index;
  u32 context;
  vl_api_address_with_prefix_t pfx;
  u8 protocol;
  u16 port;
};

/** \brief Dump all vips
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
*/
define lb_vip_dump{
  u32 client_index;
  u32 context;
  vl_api_address_with_prefix_t pfx;
  vl_api_prefix_matcher_t pfx_matcher;
  u8 protocol [default=255];
  u16 port;

};

/** \brief Reply all configured vip
    @param context - sender context, to match reply w/ request
    @param vip - all vip addrs.
*/
define lb_vip_details {
  u32 context;
  vl_api_lb_vip_t vip;
  vl_api_lb_encap_type_t encap;
  vl_api_ip_dscp_t dscp;
  vl_api_lb_srv_type_t srv_type;
  u16 target_port;
  u16 flow_table_length;
};

/** \brief dump AS list per VIP or all ASs for all VIPs
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param pfx - ip prefix and length.
    @param protocol - tcp or udp.
    @param port - destination port.
*/
define lb_as_dump{
  u32 client_index;
  u32 context;
  /* vip */
  vl_api_address_with_prefix_t pfx;
  u8 protocol;
  u16 port;
  option vat_help = "<vip-prefix> [protocol (tcp|udp) port <n>]";
};

/** \brief lb_as_details
    @param context - sender context, to match reply w/ request
    @param as - AS detail record
*/
define lb_as_details {
  u32 context;
  vl_api_lb_vip_t vip;
  vl_api_address_t app_srv;
  u8 flags;
  u32 in_use_since;
};

/** \brief Enable/disable NAT4 feature on the interface
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param is_add - true if add, false if delete
    @param sw_if_index - software index of the interface
*/
autoreply define lb_add_del_intf_nat4 {
  u32 client_index;
  u32 context;
  bool is_add;
  vl_api_interface_index_t sw_if_index;
};

/** \brief Enable/disable NAT6 feature on the interface
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param is_add - true if add, false if delete
    @param sw_if_index - software index of the interface
*/
autoreply define lb_add_del_intf_nat6 {
  u32 client_index;
  u32 context;
  bool is_add;
  vl_api_interface_index_t sw_if_index;
};