FD.io VPP  v20.05-21-gb1500e9ff
Vector Packet Processing
Release notes for VPP 20.05

More than 751 commits since the 20.01 release.

Release Highlights

Feature Highlights

As per commits involving FEATURE.yaml edits between the previous release and this release. They are mentioned in the below "features" section as well, together with the corresponding commits.

  • TAP Drivers
    • Implement sw_interface_tap_v2_dump filtering by sw_if_index
    • Add support for persistence
  • Native Virtio Drivers
    • Support virtio 1.1 packed ring in vhost
  • gso
    • Add support for IP-IP
    • Add vxlan tunnel support
  • VRRP
    • Add plugin providing VRRP support

Ongoing Work On More Semantic-Typed API

This release, like the 20.01, continues the journey on defining the semantic-based types instead of storage-based types within the API, so you may have noticed this in the API changes.

Some of the changes are related to the infrastructure, and may be bugfixes, they do not change the CRC of the message but affect the representation on the wire. One particular commit we want you to pay attention to, is b5c0d35f, which fixes the bug with the enum representation on the wire - before it, even the enums declared as u8 or u16 were represented as u32 in the API messages.

Another important commit we would like to call out explicitly as well is 7dd63e5c, which pinned the address_family and ip_proto enum types to be u8 instead of the default u32.

The above two commits will be primarily interesting for those who work with the low-level APIs on VPP - the API frameworks should make these under-the-hood changes transparent. However, we decided to call these out, given that for those affected these will be pretty important changes.

Another commit, that does not have the immediate impact at the moment, but that is poised to improve the user interaction with the API is 5c318c70. This adds the tooling and ability to implement a structured process, by which the API messages can evolve, while minimizing the impact to the API users.


  • Binary API Compiler for Python
    • Api crc checker (5c318c70d)
  • Binary API Libraries
    • Add macro that zeros out api reply buffer (f24de1795)
  • Build System
    • Add snap packaging (experimental) (6d97e62c0)
    • Support arch-specific compiling for Neoverse N1 (690ce8672)
  • Crypto native Plugin
    • Add ARMv8 AES-CBC implementation (776644efe)
    • Add AArch64 AES-GCM native implementation (622b5ce61)
    • Calculate ghash using vpclmulqdq instructions (627fb6a16)
    • GCM implementation with vector AESNI instructions (47d8f5dcd)
  • Infrastructure Library
    • Add x86 CPU definitions (38e0413b2)
    • Numa vector placement support (a690fdbfe)
    • Add cmake option to grow vectors by 1 (98bd75778)
    • Add tw_timer_2t_2w_512sl variant (907678977)
  • Link Bonding
    • Add GSO support (2e1fa54b7)
  • Plugins
    • DPDK
      • Output switch information (2347278d9)
      • Use port_id as interface name suffix for representors (a80f8f371)
      • Add iova-mode to startup (4e96ddaec)
      • Bump DPDK version to 20.02 (76be887d8)
      • Enable DPDK iAVF PMD (162ea767c)
      • DPDK 20.05 iavf flow director backporting to DPDK 20.02 (7f83738b4)
    • GTPU
      • Offload RX flow (00fdf53c7)
      • RX offload for IPv6 payload supporting (ed63a0ff7)
    • Host Stack Applications
      • Proxy rcv wnd update acks after full fifos (dda2dbeda)
    • IPv6 Segment Routing Mobile
      • Support GTP4/6.DT and User Plane message mapping (9e722bd46)
    • Internet Key Exchange (IKEv2) Protocol
      • Configure a profile with an existing interface (44476c6b2)
      • Responder honours the protected tunnel config (685001f0a)
      • Add support for custom ipsec-over-udp port (e5d34919b)
      • Dead peer detection (c415d0a8e)
    • NAT
      • In2out-output nodes work with acl reflect (d539e256b)
      • Api & cli command for forcing session cleanup (edf777272)
      • Dslite ce mode in separate config entry (958919f36)
    • QUIC protocol
      • Update quicly to v0.0.10-VPP (62b1cea6e)
      • Quicly crypto offloading (92de6b65b)
      • Check quicly version tag at compile time (ffdc72da4)
    • RDMA (ibverb) driver
      • Bunp rdma-core version to v28.0 (eb89b9093)
      • Add Mellanox mlx5 Direct Verbs receive support (dd648aac0)
      • Introduce direct verb for Cx4/5 tx (dc812d9a7)
    • Unicast Reverse Path forwarding
      • Unicast reverse Path Forwarding (plugin) (d724e4f43)
    • VRRP
      • Add plugin providing vrrp support (39e9428b9)
  • SVM Library
    • Numa awareness for ssvm segments (6fe8998fe)
    • Support multi-chunk fifo chunk alloc (8e755a16a)
    • Chunk alloc stats (d35887297)
    • New FIFO design/architecture (f22f4e562)
    • Fifo test (64e96613d)
  • Test Infrastructure
    • Add running_gcov_tests to framework.py (d498c9eb2)
    • Implement ipaddress convenience methods (e64e5fff4)
  • VNET
    • Crypto Infra
      • Add chained buffer support in ipsecmb (AES-GCM) (2fc409131)
      • Add support for testing quad loops in crypto algos (a9075dcf6)
      • Introduce async crypto infra (f539578ba)
    • Ethernet
      • Configure system default ethernet MTU (5fa452554)
    • FLOW
      • Add vlan tagged types for IPv4/IPv6 5-tuple flows (f13830ce7)
      • Add RSS support (24e2c50bf)
      • Add l2tpv3oip flow (8b43aaaf1)
    • GRE
      • Tunnel encap/decap flags (e5b94dded)
    • GSO
      • Add vxlan tunnel support (0b04209ed)
      • Add support for IP-IP (84f91fa9c)
    • IP Neighbors
      • Populate neighbor age via API (9c1928f81)
      • Replace feature for the ip-neighbor data-base (c87fbb417)
      • Add flush API (240dcb24a)
    • IPIP
      • Multi-point interface (14053c9db)
    • IPSec
      • Add support for chained buffers (efcad1a9d)
      • IPSec protection for multi-point tunnel interfaces (282872127)
      • Add input node bypass/discard functionality (0546483ce)
      • User can choose the UDP source port (abc5660c6)
      • Support 4o6 and 6o4 for SPD tunnel mode SAs (b1fd80f09)
    • IPv4 LPM
      • More detailed show reassembly commands (a877cf9f3)
      • Replace Sematics for Interface IP addresses (59f71132e)
    • MPLS
      • Add user defined name tag to mpls tunnels (39ae0a07a)
    • Native Virtio Drivers
      • Support virtio 1.1 packed ring in vhost (bc0d9ff67)
    • Packet Generator
      • Set vnet buffer flags in pg streams (08eb2bb20)
    • Segment Routing (IPv6 and MPLS)
      • Change the CLI keyword from address to prefix. (b24e287b9)
      • Support uSID function. (ec9cb9668)
    • Session Layer
      • Tracking segment memory usage (234fe894d)
      • Basic fifo-tuning-logic (d8f48e216)
      • Api to add new transport types (07063b8ea)
      • Support connect on listeners (0a1e183e5)
      • Adding debug events (7357043d2)
      • Add option to preallocate fifo headers (9845c20d7)
    • TAP Drivers
      • Add support for persistance (b49bc1ae6)
      • Add initial support for tun (206acf84d)
      • Implement sw_interface_tap_v2_dump filtering by sw_if_index (073d74d0b)
    • TCP
      • Add option to avoid endpoint cleanup (43818c1e0)
      • Minimal set of worker stats (5e6305fb0)
      • Allow custom mss on connects (ff19e3bf4)
    • TLS and TLS engine plugins
      • Picotls engine symmetric crypto enhancement by VPP crypto framework (3b8518164)
    • UDP
      • Track connection port sharing (a039620c2)
  • VPP Comms Library
    • Udp session migration notifications (68b7e5888)
    • Propagate cleanup notifications to apps (9ace36d0f)
  • Vector Library
    • Add plugin override support (8dc954a4e)
    • Calculate per-worker loops/second metric (000a029e4)
    • Leave SIGPROF signal with its default handler (6f533d780)
    • Add nosyslog unix option (e31820af1)
  • Gomemif
    • Introduce gomemif (07363a45f)

Known issues

For the full list of issues please refer to fd.io JIRA.

Fixed issues

For the full list of fixed issues please refer to:

API changes

Description of results:

  • Definition changed: indicates that the API file was modified between releases.
  • Only in image: indicates the API is new for this release.
  • Only in file: indicates the API has been removed in this release.
Message Name Result
acl_add_replace definition changed
acl_details definition changed
acl_interface_add_del definition changed
acl_interface_etype_whitelist_details definition changed
acl_interface_etype_whitelist_dump definition changed
acl_interface_list_details definition changed
acl_interface_list_dump definition changed
acl_interface_set_acl_list definition changed
acl_interface_set_etype_whitelist definition changed
add_node_next definition changed
app_attach definition changed
app_attach_reply definition changed
app_cut_through_registration_add only in file
app_cut_through_registration_add_reply only in file
app_namespace_add_del definition changed
app_worker_add_del definition changed
app_worker_add_del_reply definition changed
application_attach only in file
application_attach_reply only in file
bd_ip_mac_add_del definition changed
bind_sock only in file
bind_sock_reply only in file
bind_uri only in file
bind_uri_reply only in file
bridge_domain_add_del definition changed
bridge_domain_details definition changed
bridge_domain_dump definition changed
bridge_flags definition changed
bvi_create_reply definition changed
bvi_delete definition changed
connect_sock only in file
connect_sock_reply only in file
connect_uri only in file
connect_uri_reply only in file
create_vhost_user_if definition changed
disconnect_session only in file
disconnect_session_reply only in file
get_next_index definition changed
get_node_index definition changed
gpe_add_del_fwd_entry definition changed
gpe_add_del_iface definition changed
gpe_add_del_native_fwd_rpath definition changed
gpe_enable_disable definition changed
gpe_fwd_entries_get_reply definition changed
gpe_fwd_entry_path_details definition changed
gpe_native_fwd_rpaths_get definition changed
gpe_native_fwd_rpaths_get_reply definition changed
gpe_set_encap_mode definition changed
gre_tunnel_add_del definition changed
gre_tunnel_details definition changed
gtpu_offload_rx only in image
gtpu_offload_rx_reply only in image
ikev2_profile_set_ipsec_udp_port only in image
ikev2_profile_set_ipsec_udp_port_reply only in image
ikev2_profile_set_liveness only in image
ikev2_profile_set_liveness_reply only in image
ikev2_profile_set_udp_encap only in image
ikev2_profile_set_udp_encap_reply only in image
ikev2_set_local_key definition changed
ikev2_set_tunnel_interface only in image
ikev2_set_tunnel_interface_reply only in image
ip_neighbor_details definition changed
ip_neighbor_flush only in image
ip_neighbor_flush_reply only in image
ip_neighbor_replace_begin only in image
ip_neighbor_replace_begin_reply only in image
ip_neighbor_replace_end only in image
ip_neighbor_replace_end_reply only in image
ip_route_lookup only in image
ip_route_lookup_reply only in image
ip_source_check_interface_add_del only in file
ip_source_check_interface_add_del_reply only in file
ipfix_classify_table_add_del definition changed
ipfix_classify_table_details definition changed
ipip_add_tunnel definition changed
ipip_tunnel_details definition changed
ipsec_backend_details definition changed
ipsec_interface_add_del_spd definition changed
ipsec_sa_details definition changed
ipsec_sad_entry_add_del definition changed
ipsec_select_backend definition changed
ipsec_spd_add_del definition changed
ipsec_spd_details definition changed
ipsec_spd_entry_add_del definition changed
ipsec_spd_interface_details definition changed
ipsec_tunnel_if_add_del definition changed
ipsec_tunnel_if_add_del_reply definition changed
ipsec_tunnel_if_set_sa definition changed
ipsec_tunnel_protect_del definition changed
ipsec_tunnel_protect_details definition changed
ipsec_tunnel_protect_update definition changed
l2_fib_table_details definition changed
l2_flags definition changed
l2_interface_efp_filter definition changed
l2_interface_pbb_tag_rewrite definition changed
l2_interface_vlan_tag_rewrite definition changed
l2_macs_event definition changed
l2_patch_add_del definition changed
l2_xconnect_details definition changed
l2fib_add_del definition changed
l2fib_flush_int definition changed
lisp_add_del_adjacency definition changed
lisp_add_del_local_eid definition changed
lisp_add_del_locator definition changed
lisp_add_del_locator_set definition changed
lisp_add_del_map_request_itr_rlocs definition changed
lisp_add_del_map_resolver definition changed
lisp_add_del_map_server definition changed
lisp_add_del_remote_mapping definition changed
lisp_adjacencies_get_reply definition changed
lisp_eid_table_add_del_map definition changed
lisp_eid_table_details definition changed
lisp_eid_table_dump definition changed
lisp_eid_table_map_dump definition changed
lisp_enable_disable definition changed
lisp_get_map_request_itr_rlocs_reply definition changed
lisp_locator_details definition changed
lisp_locator_dump definition changed
lisp_locator_set_details definition changed
lisp_locator_set_dump definition changed
lisp_map_register_enable_disable definition changed
lisp_map_request_mode definition changed
lisp_map_resolver_details definition changed
lisp_map_server_details definition changed
lisp_pitr_set_locator_set definition changed
lisp_rloc_probe_enable_disable definition changed
lisp_use_petr definition changed
lldp_config definition changed
macip_acl_add definition changed
macip_acl_add_replace definition changed
macip_acl_details definition changed
macip_acl_interface_add_del definition changed
macip_acl_interface_list_details definition changed
macip_acl_interface_list_dump definition changed
map_another_segment only in file
map_another_segment_reply only in file
modify_vhost_user_if definition changed
mpls_tunnel_add_del definition changed
mpls_tunnel_details definition changed
nat44_del_user only in image
nat44_del_user_reply only in image
nat44_session_cleanup only in image
nat44_session_cleanup_reply only in image
nat44_set_session_limit only in image
nat44_set_session_limit_reply only in image
nat_show_config_reply definition changed
netmap_create only in file
netmap_create_reply only in file
netmap_delete only in file
netmap_delete_reply only in file
nhrp_details only in file
nhrp_dump only in file
nhrp_entry_add_del only in file
nhrp_entry_add_del_reply only in file
one_add_del_adjacency definition changed
one_add_del_l2_arp_entry definition changed
one_add_del_local_eid definition changed
one_add_del_locator definition changed
one_add_del_locator_set definition changed
one_add_del_map_request_itr_rlocs definition changed
one_add_del_map_resolver definition changed
one_add_del_map_server definition changed
one_add_del_ndp_entry definition changed
one_add_del_remote_mapping definition changed
one_adjacencies_get_reply definition changed
one_eid_table_add_del_map definition changed
one_eid_table_details definition changed
one_eid_table_dump definition changed
one_eid_table_map_dump definition changed
one_enable_disable definition changed
one_enable_disable_petr_mode definition changed
one_enable_disable_pitr_mode definition changed
one_enable_disable_xtr_mode definition changed
one_get_map_request_itr_rlocs_reply definition changed
one_l2_arp_entries_get_reply definition changed
one_locator_details definition changed
one_locator_dump definition changed
one_locator_set_details definition changed
one_locator_set_dump definition changed
one_map_register_enable_disable definition changed
one_map_request_mode definition changed
one_map_resolver_details definition changed
one_map_server_details definition changed
one_ndp_entries_get_reply definition changed
one_nsh_set_locator_set definition changed
one_pitr_set_locator_set definition changed
one_rloc_probe_enable_disable definition changed
one_show_petr_mode_reply definition changed
one_show_pitr_mode_reply definition changed
one_show_xtr_mode_reply definition changed
one_stats_details definition changed
one_stats_enable_disable definition changed
one_use_petr definition changed
pg_capture definition changed
pg_create_interface definition changed
pg_create_interface_reply definition changed
pg_enable_disable definition changed
policer_add_del definition changed
policer_details definition changed
policer_dump definition changed
session_enable_disable definition changed
session_rule_add_del definition changed
session_rules_details definition changed
show_lisp_map_register_state_reply definition changed
show_lisp_map_request_mode_reply definition changed
show_lisp_pitr_reply definition changed
show_lisp_rloc_probe_state_reply definition changed
show_lisp_status_reply definition changed
show_lisp_use_petr_reply definition changed
show_one_map_register_state_reply definition changed
show_one_map_request_mode_reply definition changed
show_one_nsh_mapping_reply definition changed
show_one_pitr_reply definition changed
show_one_rloc_probe_state_reply definition changed
show_one_stats_enable_disable_reply definition changed
show_one_status_reply definition changed
show_one_use_petr_reply definition changed
show_threads_reply definition changed
sr_localsid_add_del definition changed
sr_localsids_details definition changed
sr_mpls_policy_add definition changed
sr_mpls_policy_assign_endpoint_color definition changed
sr_mpls_policy_mod definition changed
sr_mpls_steering_add_del definition changed
sr_policies_details definition changed
sr_policy_add definition changed
sr_policy_del definition changed
sr_policy_mod definition changed
sr_set_encap_source definition changed
sr_steering_add_del definition changed
sr_steering_pol_details definition changed
sw_interface_address_replace_begin only in image
sw_interface_address_replace_begin_reply only in image
sw_interface_address_replace_end only in image
sw_interface_address_replace_end_reply only in image
sw_interface_set_l2_bridge definition changed
sw_interface_set_l2_xconnect definition changed
sw_interface_set_lldp definition changed
sw_interface_set_vpath definition changed
sw_interface_set_vxlan_bypass definition changed
sw_interface_set_vxlan_gpe_bypass definition changed
sw_interface_span_details definition changed
sw_interface_span_dump definition changed
sw_interface_span_enable_disable definition changed
teib_details only in image
teib_dump only in image
teib_entry_add_del only in image
teib_entry_add_del_reply only in image
unbind_sock only in file
unbind_sock_reply only in file
unbind_uri only in file
unbind_uri_reply only in file
unmap_segment only in file
unmap_segment_reply only in file
urpf_update only in image
urpf_update_reply only in image
vrrp_vr_add_del only in image
vrrp_vr_add_del_reply only in image
vrrp_vr_details only in image
vrrp_vr_dump only in image
vrrp_vr_peer_details only in image
vrrp_vr_peer_dump only in image
vrrp_vr_set_peers only in image
vrrp_vr_set_peers_reply only in image
vrrp_vr_start_stop only in image
vrrp_vr_start_stop_reply only in image
vrrp_vr_track_if_add_del only in image
vrrp_vr_track_if_add_del_reply only in image
vrrp_vr_track_if_details only in image
vrrp_vr_track_if_dump only in image
vxlan_add_del_tunnel definition changed
vxlan_add_del_tunnel_reply definition changed
vxlan_gpe_add_del_tunnel definition changed
vxlan_gpe_add_del_tunnel_reply definition changed
vxlan_gpe_tunnel_details definition changed
vxlan_gpe_tunnel_dump definition changed
vxlan_offload_rx definition changed
vxlan_tunnel_details definition changed
vxlan_tunnel_dump definition changed

Found 279 api message signature differences

Patches that changed API definitions

548d70de6 misc: deprecate dpdk hqos
7db6ab03d misc: deprecate netmap and ixge drivers
933fcf489 api: API cleanup
7db6ab03d misc: deprecate netmap and ixge drivers
14053c9db ipip: Multi-point interface
59ff918ea tunnel: Common types for IP tunnels
cd01fb423 policer: API cleanup
cd01fb423 policer: API cleanup
58db6e16c lisp: API cleanup
03ce46219 teib: Rename NHRP to TEIB
240dcb24a ip-neighbor: Add flush API
e64e5fff4 tests: implement ipaddress convenience methods
c87fbb417 ip-neighbor: Replace feature for the ip-neighbor data-base
8e7fdddd3 ip-neighbor: add description to the age parameter
9c1928f81 ip-neighbor: populate neighbor age via API
6fdd7a5f7 session: improve .api comments slightly
9845c20d7 session: add option to preallocate fifo headers
c0e9441e7 tests: move defaults from defaultmapping to .api files
256779c85 udp: remove connected udp transport proto
888d9f05e session: remove obsolete apis
07063b8ea session: api to add new transport types
b4e5e50fe session: API cleanup
2de9c0f92 svm: minimal initial fifo
c4ae0fffb interface: fix interface_types.api enums
7c0eb56f4 vxlan: vxlan/vxlan.api API cleanup
c0e9441e7 tests: move defaults from defaultmapping to .api files
48ac1c2b2 gre: improve .api descriptions
8ab4e507c gre: add missing .api edits
e5b94dded gre: Tunnel encap/decap flags
59ff918ea tunnel: Common types for IP tunnels
908965db7 span: API cleanup
c0e9441e7 tests: move defaults from defaultmapping to .api files
0938eba15 sr: srv6 API cleanup
79bfd2725 sr: SRv6 uN behavior
0938eba15 sr: srv6 API cleanup
db86329ab pg: API cleanup
c0e9441e7 tests: move defaults from defaultmapping to .api files
145e330f0 l2: API cleanup
1c684f9af lldp: API cleanup
1c2002a31 vxlan: vxlan-gpe/vxlan-gpe.cpi API cleanup
58db6e16c lisp: API cleanup
58db6e16c lisp: API cleanup
58db6e16c lisp: API cleanup
d88fc0fce tap: refactor existing flags
073d74d0b tap: implement sw_interface_tap_v2_dump filtering by sw_if_index
206acf84d tap: add initial support for tun
b49bc1ae6 tap: add support for persistance
bc0d9ff67 virtio: support virtio 1.1 packed ring in vhost
53f06a014 vlib: move pci api types from vnet/pci to vlib/pci
abc5660c6 ipsec: User can choose the UDP source port
287d5e109 ipsec: API cleanup
5893747d7 api: ipsec: add missing IS_INBOUND flag.
2fcd265d3 ipsec: Revert API cleanup
666ece35c ipsec: API cleanup
48d32b43c ipsec: provide stat index in sa details
287d5e109 ipsec: API cleanup
2fcd265d3 ipsec: Revert API cleanup
666ece35c ipsec: API cleanup
282872127 ipsec: IPSec protection for multi-point tunnel interfaces
bdfe5955f ethernet: add sanity checks to p2p_ethernet_add/del
c0e9441e7 tests: move defaults from defaultmapping to .api files
c0e9441e7 tests: move defaults from defaultmapping to .api files
39ae0a07a mpls: add user defined name tag to mpls tunnels
c0e9441e7 tests: move defaults from defaultmapping to .api files
59f71132e ip: Replace Sematics for Interface IP addresses
14053c9db ipip: Multi-point interface
59ff918ea tunnel: Common types for IP tunnels
0938eba15 sr: srv6 API cleanup
00ec4019b sr: API cleanup
f5d38e05a api: ip: add IP_ROUTE_LOOKUP API
c0e9441e7 tests: move defaults from defaultmapping to .api files
d724e4f43 urpf: Unicast reverse Path Forwarding (plugin)
164c44f0b ip: Fix the AH/ESP protocol numbers on the API
7dd63e5cc ip: change ip API enums address_family and ip_proto size to u8
3ec09e924 ip: ip_address_t uses ip46_address_t
c0e9441e7 tests: move defaults from defaultmapping to .api files
933c4ca5a ikev2: fix string in api
59fea5a6a ikev2: make liveness params configurable
8ceb44a89 ikev2: fix typo in .api description
e5d34919b ikev2: add support for custom ipsec-over-udp port
b29d523af ikev2: make UDP encap flag configurable
44476c6b2 ikev2: Configure a profile with an existing interface
d724e4f43 urpf: Unicast reverse Path Forwarding (plugin)
c0e9441e7 tests: move defaults from defaultmapping to .api files
00fdf53c7 gtpu: offload RX flow
2f8cd9145 acl: API cleanup
492a5d0bd acl: revert acl: api cleanup
aad1ee149 acl: API cleanup
c0e9441e7 tests: move defaults from defaultmapping to .api files
2f8cd9145 acl: API cleanup
492a5d0bd acl: revert acl: api cleanup
aad1ee149 acl: API cleanup
2c6639c69 nat: move dslite to separate sub-plugin
6bb080f1e nat: per vrf session limits
61717cc38 nat: use correct data types for memory sizes
98301bd56 nat: user deletion function & extra metrics
edf777272 nat: api & cli command for forcing session cleanup
2c6639c69 nat: move dslite to separate sub-plugin
3fccd0278 vrrp: do not define _details as autoreply
39e9428b9 vrrp: add plugin providing vrrp support
53f06a014 vlib: move pci api types from vnet/pci to vlib/pci