docs: better docs, mv doxygen to sphinx
[vpp.git] / docs / aboutvpp / releasenotes / v19.01.rst
1 Release notes for VPP 19.01
2 ===========================
3
4 More than 649 commits since the 18.10 release.
5
6 Features
7 --------
8
9 Infrastructure
10 ~~~~~~~~~~~~~~
11
12 -  NUMA-aware, growable physical memory allocator (pmalloc)
13 -  FIB: sticky load-balance
14 -  C11 safe string handling: provide and use “safe” C string handling
15    functions
16 -  vlib: allocate buffers on local numa, not on numa 1
17 -  vppinfra: autodetect default hugepage size
18 -  Move RPC traffic off the shared-memory API queue
19 -  IPv6: Make link-local configurable per-interface
20 -  IGMP: improve CLI debug output
21 -  IPSec: split ipsec nodes into ip4/ip6 nodes
22 -  IPSec: infra for selecting backends
23 -  vhost-user: cleanup and performance optimizations
24 -  ethernet-input, memif improvements and optimizations
25 -  DPDK: bump to DPDK 18.11
26 -  reassembly: harden reassembly code
27 -  stats: Deprecate old (event-based) stats framework
28 -  vlib: support Hyper-V/Azure VMBus
29 -  binary api clients: wait for vpp to start
30 -  graph dispatch trace: capture packet data and buffer metadata, output
31    in pcap format
32 -  improve feature arc order constraint specification
33
34 VNET & Plugins
35 ~~~~~~~~~~~~~~
36
37 -  pktgen: correctly replay a mix of single and multi-buffer packets
38 -  add wireshark dissector to extras
39 -  avf: optimizations
40 -  acl-plugin: use L2 feature arc instead of L2 classifier
41 -  acl-plugin: performance enhancement
42 -  dpdk: allow interface name to be specified from startup.conf
43 -  dpdk: blacklist PCI devices by type
44 -  dpdk: switch to in-memory mode, deprecate use of socket-mem
45 -  vnet: store hw interface speed in kbps instead of using flags
46 -  vmxnet3: enable promiscuous mode & cli enhancements
47 -  gbp: Add support for flow hash profile & l3-out subnets
48 -  map: Add API support for setting parameters.
49 -  map: Convert from DPO to input feature
50 -  nat: improve expired sessions reuse in NAT44
51 -  nat: syslog - sessions logging
52 -  nsim: add packet loss simulation, docs
53 -  perfmon: x86_64 perf counter plugin
54 -  vnet: L2 feature arc infrastructure
55
56 Host stack
57 ~~~~~~~~~~
58
59 -  TCP congestion control improvements
60 -  TCP Cubic congestion control algorithm
61 -  TCP fast path optimizations
62 -  Transport tx connection pacer. TCP uses it by default
63 -  Basic support for session flushing and TCP PSH segments
64 -  TCP/session api support for configuring custom local src ip/port
65 -  VCL/LDP basic support for multi-process applications
66 -  Overall code hardening, cleanup and bugfixing for tcp, session, vcl
67    and ldp
68
69 PAPI & Test framework
70 ~~~~~~~~~~~~~~~~~~~~~
71
72 -  add specific API types for IP addresses, MAC address, interface index
73    etc.
74 -  add timeout support for socket transport
75 -  add support for format/unformat functions
76 -  generic API types format/unformat support for VAT and custom dump
77 -  python3 test adjustments
78 -  make test: create virtualenv under /test/
79 -  make test: print TEST= values for failed tests
80 -  add human-friendly annotations to log messages
81
82 VOM
83 ~~~
84
85 -  Add support for redirect contracts in gbp
86 -  deprecate TAP add ip-punt redirect dump
87 -  vxlan-gbp support
88
89 Known issues
90 ------------
91
92 For the full list of issues please refer to fd.io
93 `JIRA <https://jira.fd.io>`__.
94
95 Issues fixed
96 ------------
97
98 For the full list of fixed issues please refer to:
99
100 - fd.io `JIRA <https://jira.fd.io>`__
101 - git `commit log <https://git.fd.io/vpp/log/?h=stable/1901>`__
102
103
104 API changes
105 -----------
106
107 Description of results:
108
109 -  *Definition changed*: indicates that the API file was modified
110    between releases.
111 -  *Only in image*: indicates the API is new for this release.
112 -  *Only in file*: indicates the API has been removed in this release.
113
114 =============================================== ==================
115 Message Name                                    Results
116 =============================================== ==================
117 acl_plugin_get_conn_table_max_entries           only in image
118 acl_plugin_get_conn_table_max_entries_reply     only in image
119 app_worker_add_del                              definition changed
120 app_worker_add_del_reply                        definition changed
121 application_attach_reply                        definition changed
122 bd_ip_mac_add_del                               definition changed
123 bd_ip_mac_details                               definition changed
124 bd_ip_mac_flush                                 only in image
125 bd_ip_mac_flush_reply                           only in image
126 bond_create                                     definition changed
127 cli_inband                                      definition changed
128 cli_inband_reply                                definition changed
129 gbp_bridge_domain_add                           only in image
130 gbp_bridge_domain_add_reply                     only in image
131 gbp_bridge_domain_del                           only in image
132 gbp_bridge_domain_del_reply                     only in image
133 gbp_bridge_domain_details                       only in image
134 gbp_bridge_domain_dump                          only in image
135 gbp_bridge_domain_dump_reply                    only in image
136 gbp_endpoint_details                            definition changed
137 gbp_endpoint_group_add                          only in image
138 gbp_endpoint_group_add_del                      only in file
139 gbp_endpoint_group_add_del_reply                only in file
140 gbp_endpoint_group_add_reply                    only in image
141 gbp_endpoint_group_del                          only in image
142 gbp_endpoint_group_del_reply                    only in image
143 gbp_endpoint_learn_set_inactive_threshold       only in image
144 gbp_endpoint_learn_set_inactive_threshold_reply only in image
145 gbp_ext_itf_add_del                             only in image
146 gbp_ext_itf_add_del_reply                       only in image
147 gbp_ext_itf_details                             only in image
148 gbp_ext_itf_dump                                only in image
149 gbp_route_domain_add                            only in image
150 gbp_route_domain_add_reply                      only in image
151 gbp_route_domain_del                            only in image
152 gbp_route_domain_del_reply                      only in image
153 gbp_route_domain_details                        only in image
154 gbp_route_domain_dump                           only in image
155 gbp_route_domain_dump_reply                     only in image
156 gbp_vxlan_tunnel_add                            only in image
157 gbp_vxlan_tunnel_add_reply                      only in image
158 gbp_vxlan_tunnel_del                            only in image
159 gbp_vxlan_tunnel_del_reply                      only in image
160 gbp_vxlan_tunnel_details                        only in image
161 gbp_vxlan_tunnel_dump                           only in image
162 igmp_proxy_device_add_del                       only in image
163 igmp_proxy_device_add_del_interface             only in image
164 igmp_proxy_device_add_del_interface_reply       only in image
165 igmp_proxy_device_add_del_reply                 only in image
166 ip6_mfib_details                                definition changed
167 ip_container_proxy_details                      only in image
168 ip_container_proxy_dump                         only in image
169 ip_mfib_details                                 definition changed
170 ip_punt_redirect                                definition changed
171 ip_punt_redirect_details                        only in image
172 ip_punt_redirect_dump                           only in image
173 ip_source_check_interface_add_del               only in image
174 ip_source_check_interface_add_del_reply         only in image
175 ipip_6rd_add_tunnel_reply                       definition changed
176 ipip_6rd_del_tunnel                             definition changed
177 ipip_add_tunnel_reply                           definition changed
178 ipip_del_tunnel                                 definition changed
179 ipip_tunnel_details                             definition changed
180 ipip_tunnel_dump                                definition changed
181 ipsec_backend_details                           only in image
182 ipsec_backend_dump                              only in image
183 ipsec_sa_details                                definition changed
184 ipsec_select_backend                            only in image
185 ipsec_select_backend_reply                      only in image
186 ipsec_tunnel_if_add_del                         definition changed
187 map_add_del_rule                                definition changed
188 map_add_domain                                  definition changed
189 map_another_segment                             definition changed
190 map_domain_details                              definition changed
191 map_if_enable_disable                           only in image
192 map_if_enable_disable_reply                     only in image
193 map_param_add_del_pre_resolve                   only in image
194 map_param_add_del_pre_resolve_reply             only in image
195 map_param_get                                   only in image
196 map_param_get_reply                             only in image
197 map_param_set_fragmentation                     only in image
198 map_param_set_fragmentation_reply               only in image
199 map_param_set_icmp6                             only in image
200 map_param_set_icmp6_reply                       only in image
201 map_param_set_icmp                              only in image
202 map_param_set_icmp_reply                        only in image
203 map_param_set_reassembly                        only in image
204 map_param_set_reassembly_reply                  only in image
205 map_param_set_security_check                    only in image
206 map_param_set_security_check_reply              only in image
207 map_param_set_tcp                               only in image
208 map_param_set_tcp_reply                         only in image
209 map_param_set_traffic_class                     only in image
210 map_param_set_traffic_class_reply               only in image
211 map_rule_details                                definition changed
212 memclnt_delete                                  definition changed
213 nat44_add_del_lb_static_mapping                 definition changed
214 nat44_lb_static_mapping_add_del_local           only in image
215 nat44_lb_static_mapping_add_del_local_reply     only in image
216 nat44_lb_static_mapping_details                 definition changed
217 nsim_configure                                  definition changed
218 punt                                            only in file
219 punt_details                                    only in image
220 punt_dump                                       only in image
221 punt_reply                                      only in file
222 punt_socket_deregister                          definition changed
223 punt_socket_details                             only in image
224 punt_socket_dump                                only in image
225 punt_socket_register                            definition changed
226 set_ip_flow_hash                                definition changed
227 set_punt                                        only in image
228 set_punt_reply                                  only in image
229 show_version_reply                              definition changed
230 stats_get_poller_delay                          only in file
231 stats_get_poller_delay_reply                    only in file
232 sw_interface_bond_details                       definition changed
233 sw_interface_details                            definition changed
234 sw_interface_ip6_set_link_local_address         only in file
235 sw_interface_ip6_set_link_local_address_reply   only in file
236 sw_interface_tap_v2_details                     definition changed
237 syslog_get_filter                               only in image
238 syslog_get_filter_reply                         only in image
239 syslog_get_sender                               only in image
240 syslog_get_sender_reply                         only in image
241 syslog_set_filter                               only in image
242 syslog_set_filter_reply                         only in image
243 syslog_set_sender                               only in image
244 syslog_set_sender_reply                         only in image
245 tap_create_v2                                   definition changed
246 unmap_segment                                   definition changed
247 vnet_bier_neighbor_counters                     only in file
248 vnet_get_summary_stats                          only in file
249 vnet_get_summary_stats_reply                    only in file
250 vnet_interface_combined_counters                only in file
251 vnet_interface_simple_counters                  only in file
252 vnet_ip4_fib_counters                           only in file
253 vnet_ip4_mfib_counters                          only in file
254 vnet_ip4_nbr_counters                           only in file
255 vnet_ip6_fib_counters                           only in file
256 vnet_ip6_mfib_counters                          only in file
257 vnet_ip6_nbr_counters                           only in file
258 vnet_per_interface_combined_counters            only in file
259 vnet_per_interface_simple_counters              only in file
260 vnet_udp_encap_counters                         only in file
261 want_bier_neighbor_stats                        only in file
262 want_bier_neighbor_stats_reply                  only in file
263 want_interface_combined_stats                   only in file
264 want_interface_combined_stats_reply             only in file
265 want_interface_simple_stats                     only in file
266 want_interface_simple_stats_reply               only in file
267 want_ip4_fib_stats                              only in file
268 want_ip4_fib_stats_reply                        only in file
269 want_ip4_mfib_stats                             only in file
270 want_ip4_mfib_stats_reply                       only in file
271 want_ip4_nbr_stats                              only in file
272 want_ip4_nbr_stats_reply                        only in file
273 want_ip6_fib_stats                              only in file
274 want_ip6_fib_stats_reply                        only in file
275 want_ip6_mfib_stats                             only in file
276 want_ip6_mfib_stats_reply                       only in file
277 want_ip6_nbr_stats                              only in file
278 want_ip6_nbr_stats_reply                        only in file
279 want_per_interface_combined_stats               only in file
280 want_per_interface_combined_stats_reply         only in file
281 want_per_interface_simple_stats                 only in file
282 want_per_interface_simple_stats_reply           only in file
283 want_stats                                      only in file
284 want_stats_reply                                only in file
285 want_udp_encap_stats                            only in file
286 want_udp_encap_stats_reply                      only in file
287 =============================================== ==================
288
289 Found 170 api message signature differences
290
291 Patches that changed API definitions
292 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
293
294 ``src/vnet/interface_types.api``
295
296 * `53fffa1 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=53fffa1>`_ API: Add support for type aliases
297
298 ``src/vnet/interface.api``
299
300 * `f49ba0e <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=f49ba0e>`_ stats: Deprecate old stats framework
301 * `53fffa1 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=53fffa1>`_ API: Add support for type aliases
302 * `5100aa9 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=5100aa9>`_ vnet: store hw interface speed in kbps instead of using flags
303
304 ``src/vnet/syslog/syslog.api``
305
306 * `b4515b4 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=b4515b4>`_ Add RFC5424 syslog protocol support (VPP-1139)
307
308 ``src/vnet/fib/fib_types.api``
309
310 * `775f73c <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=775f73c>`_ FIB: encode the label stack in the FIB path during table dump
311
312 ``src/vnet/ip/ip.api``
313
314 * `7c03ed4 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=7c03ed4>`_ VOM: mroutes
315 * `3460b01 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=3460b01>`_ api: ip_source_check_interface_add_del api is added.
316 * `609e121 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=609e121>`_ VPP-1507: Added binary api to dump configured ip_punt_redirect
317 * `2af0e3a <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=2af0e3a>`_ flow-hash: Add symmetric flag for flow hashing
318 * `47527b2 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=47527b2>`_ IP-punt: add documentation to the API and fix IP address init
319 * `5bb1eca <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=5bb1eca>`_ IPv6: Make link-local configurable per-interface (VPP-1446)
320 * `75b9f45 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=75b9f45>`_ ip: add container proxy dump API (VPP-1364)
321
322 ``src/vnet/ip/ip_types.api``
323
324 * `8c8acc0 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=8c8acc0>`_ API: Change ip4_address and ip6_address to use type alias.
325 * `ffba3c3 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=ffba3c3>`_ MAP: Use explicit address/prefix types in API
326
327 ``src/vnet/ip/punt.api``
328
329 * `e88865d <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=e88865d>`_ VPP-1506: dump local punts and registered punt sockets
330
331 ``src/vnet/ipsec/ipsec.api``
332
333 * `4c422f9 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=4c422f9>`_ Add IPSec interface FIB index for TX packet
334 * `b4a7a7d <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=b4a7a7d>`_ Add UDP encap flag
335 * `b4d3053 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=b4d3053>`_ ipsec: infra for selecting backends
336 * `871bca9 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=871bca9>`_ VPP-1450: binary api call for dumping SPD to interface registration
337
338 ``src/vnet/l2/l2.api``
339
340 * `e26c81f <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=e26c81f>`_ L2 BD API to flush all IP-MAC entries in the specified BD
341 * `8006c6a <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=8006c6a>`_ PAPI: Add MACAddress object wrapper for vl_api_mac_address_t
342 * `93cc3ee <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=93cc3ee>`_ GBP Endpoint Learning
343 * `4d5b917 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=4d5b917>`_ BD ARP entry use common API types
344
345 ``src/vnet/vxlan-gbp/vxlan_gbp.api``
346
347 * `93cc3ee <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=93cc3ee>`_ GBP Endpoint Learning
348
349 ``src/vnet/ipip/ipip.api``
350
351 * `53fffa1 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=53fffa1>`_ API: Add support for type aliases
352
353 ``src/vnet/session/session.api``
354
355 * `d85de68 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=d85de68>`_ vcl: wait for segments with segment handle
356 * `fa76a76 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=fa76a76>`_ session: segment handle in accept/connect notifications
357 * `c1f5a43 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=c1f5a43>`_ session: cleanup use of api_client_index
358 * `c0d532d <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=c0d532d>`_ session: mark apis for deprecation
359
360 ``src/vnet/ethernet/ethernet_types.api``
361
362 * `8006c6a <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=8006c6a>`_ PAPI: Add MACAddress object wrapper for vl_api_mac_address_t
363
364 ``src/vnet/bonding/bond.api``
365
366 * `ad9d528 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=ad9d528>`_ bonding: support custom interface IDs
367
368 ``src/vnet/devices/tap/tapv2.api``
369
370 * `754f24b <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=754f24b>`_ tapv2: add "tap_flags" field to the TAPv2 interface API
371
372 ``src/vlibmemory/memclnt.api``
373
374 * `eaec2a6 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=eaec2a6>`_ bapi: add options to have vpp cleanup client registration
375
376 ``src/vpp/api/vpe.api``
377
378 * `f49ba0e <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=f49ba0e>`_ stats: Deprecate old stats framework
379 * `413f4a5 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=413f4a5>`_ API: Use string type instead of u8.
380
381 ``src/plugins/acl/acl.api``
382
383 * `bb5d22d <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=bb5d22d>`_ New api in order to get max entries of connection table is added.
384
385 ``src/plugins/nsim/nsim.api``
386
387 * `10c5ff1 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=10c5ff1>`_ nsim: add packet loss simulation, docs
388
389 ``src/plugins/gbp/gbp.api``
390
391 * `1c17e2e <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=1c17e2e>`_ GBP: add allowed ethertypes to contracts
392 * `b6a4795 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=b6a4795>`_ GBP: l3-out subnets
393 * `33b81da <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=33b81da>`_ vom: Add support for redirect contracts in gbp
394 * `13a08cc <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=13a08cc>`_ GBP: redirect contracts
395 * `c29c0af <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=c29c0af>`_ GBP: Endpoints with VLAN tags and birdges that don't learn
396 * `93cc3ee <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=93cc3ee>`_ GBP Endpoint Learning
397
398 ``src/plugins/nat/nat.api``
399
400 * `b686508 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=b686508>`_ NAT44: nat44_add_del_lb_static_mapping enhancements (VPP-1514)
401
402 ``src/plugins/map/map.api``
403
404 * `fc7344f <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=fc7344f>`_ MAP: Convert from DPO to input feature.
405 * `f34597f <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=f34597f>`_ MAP: Add API support for MAP input feature.
406 * `5a2e278 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=5a2e278>`_ MAP: Add API support for setting parameters.
407 * `a173a7a <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=a173a7a>`_ MAP: Use bool type in map.api instead of u8.
408 * `ffba3c3 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=ffba3c3>`_ MAP: Use explicit address/prefix types in API
409
410 ``src/plugins/igmp/igmp.api``
411
412 * `97748ca <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=97748ca>`_ IGMP: proxy device
413