FD.io VPP  v21.06
Vector Packet Processing
Release notes for VPP 21.01

Release Highlights

The FD.io VPP 20.09 release comprises more than 562 commits since the previous release, including 274 fixes. Notable changes in this release were the Virtio driver adding packet buffering on the transmit path to handle slow back-ends which often have jitter and delays in free'ing buffers, and also adding support for Virtio 1.1 packed rings. FD.io VPP IPSEC added support for multi-point on IPSec interfaces, brings the meshed benefits of IP to IPSec tunnels. The FD.io VPP Cloud NAT (CNAT), added support source NAT ICMP and DHCP. The FD.io VPP FIB added support for source address selection (SAS) and flow hashing on the inner packets. Finally the FD.io VPP Perfmon plugin has been substantially rewritten, to support measuring bundles of counters, and reporting statistics per graph node.

Reflecting the API change policy introduced in the 20.09, please review the following sections below:

  • Newly deprecated API messages: please note that if you are using a deprecated message, they will soon be removed in a subsequent release. Collaborate with the feature maintainer on the best approach to mitigate.
  • In-progress API messages: They are work-in-progress, and are not subject to the policy, and may change or even be removed at any time. Please collaborate with the feature maintainer on plans to productize the message before using in any product. In-progress APIs must eventually become stable or be removed.

Features

  • Binary API Libraries
    • Vat2 and JSON autogeneration for API messages (df87f8092)
  • Plugins
    • AF_XDP driver
      • Add option to claim all available RX queues (d4e109138)
    • CNat
    • Crypto - ipsecmb
      • Bump to intel-ipsec-mb version 0.55 (b5df85e24)
    • DPDK
      • Call the meson-based build instead of Makefiles (4c4633cad)
      • Telemetry thread is off by default. (83f37fc3b)
      • Bump to DPDK 20.11 (f0419a0c8)
    • Internet Key Exchange (IKEv2) Protocol
      • Support IPv6 traffic selectors & overlay (84962d19b)
      • CLI for disabling dead peer detection (af4a414eb)
      • Add option to disable NAT traversal (d7fc12f07)
    • RDMA (ibverb) driver
      • Add RSS support for IPv6 and TCP (91603958d)
    • VRRP
      • Asynchronous events on VR state change (78f487e11)
    • Wireguard
    • Flowprobe
      • Add show commands for params and list of interfaces for recording (d1146f6dd)
  • Python binding for the VPP API
    • add support for enumflag part 1 of 2 (3825d93af)
  • SVM Library
    • Support for multi-segment enqueues (c95cfa218)
  • Statistics Segment
  • VNET
    • FIB
      • Source Address Selection (e2fe09742)
      • Adjacency flag for midchain to perfom flow hash (on inner packet) (5c544c8c3)
    • Feature Arcs
    • IPSec
      • Support for multipoint on IPSec interfaces (6ba4e41d3)
      • Tunnel SA DSCP behaviour (041add7d1)
    • Native Virtio Drivers
      • Add packet buffering on transmit path (e347acbc3)
      • Virtio: implement packed queues from virtio 1.1 (b977d3f7c)
    • Segment Routing (IPv6 and MPLS)
      • Show IPv6 address used as SRv6 Encaps source (448bc81d3)
      • Show the hop-limit value used for SRv6 encapsulation (80f0b88fc)
    • Session Layer
      • Add Unix socket API for app attachment (61ae056bd)
      • Per worker state for ct sessions (2d0e3de14)
    • TAP Drivers
  • VPP Comms Library
    • Add support for app socket API (935ce75cb)
    • Provide apps access to fifo chunks (d68faf855)
  • VPP Executable
  • Vector Library - Buffer Management

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
classify_pcap_get_tables only in image
classify_pcap_get_tables_reply only in image
classify_pcap_lookup_table only in image
classify_pcap_lookup_table_reply only in image
classify_pcap_set_table only in image
classify_pcap_set_table_reply only in image
classify_trace_get_tables only in image
classify_trace_get_tables_reply only in image
classify_trace_lookup_table only in image
classify_trace_lookup_table_reply only in image
classify_trace_set_table only in image
classify_trace_set_table_reply only in image
cnat_get_snat_addresses only in image
cnat_get_snat_addresses_reply only in image
cnat_session_details definition changed
cnat_set_snat_addresses definition changed
cnat_translation_details definition changed
cnat_translation_update definition changed
det44_plugin_enable_disable definition changed
graph_node_details only in image
graph_node_get only in image
graph_node_get_reply only in image
ikev2_profile_details definition changed
ikev2_profile_disable_natt only in image
ikev2_profile_disable_natt_reply only in image
ikev2_profile_set_ts definition changed
ikev2_sa_details definition changed
ikev2_set_responder definition changed
ikev2_traffic_selector_details definition changed
ip_mroute_add_del definition changed
ip_mroute_details definition changed
ip_neighbor_event_v2 only in image
ipsec_sa_v2_details only in image
ipsec_sa_v2_dump only in image
ipsec_sad_entry_add_del_v2 only in image
ipsec_sad_entry_add_del_v2_reply only in image
nat44_plugin_enable_disable only in image
nat44_plugin_enable_disable_reply only in image
nat44_show_running_config only in image
nat44_show_running_config_reply only in image
nat64_get_timeouts only in image
nat64_get_timeouts_reply only in image
nat64_plugin_enable_disable only in image
nat64_plugin_enable_disable_reply only in image
nat64_set_timeouts only in image
nat64_set_timeouts_reply only in image
pppoe_add_del_cp only in image
pppoe_add_del_cp_reply only in image
rdma_create_v2 only in image
rdma_create_v2_reply only in image
sw_vmxnet3_interface_details only in image
sw_vmxnet3_interface_dump only in image
trace_capture_packets only in image
trace_capture_packets_reply only in image
trace_clear_capture only in image
trace_clear_capture_reply only in image
trace_details definition changed
trace_set_filters only in image
trace_set_filters_reply only in image
vrrp_vr_event only in image
want_ip_neighbor_events_v2 only in image
want_ip_neighbor_events_v2_reply only in image
want_vrrp_vr_events only in image
want_vrrp_vr_events_reply only in image
wireguard_interface_create definition changed
wireguard_interface_details definition changed

Found 66 api message signature differences

Newly deprecated API messages

These messages are still there in the API, but can and probably will disappear in the next release.

  • geneve_add_del_tunnel
  • ip_neighbor_event
  • nat44_forwarding_enable_disable
  • nat44_forwarding_enable_disable_reply
  • nat44_forwarding_is_enabled
  • nat44_forwarding_is_enabled_reply
  • nat44_session_cleanup
  • nat44_session_cleanup_reply
  • nat_control_ping
  • nat_control_ping_reply
  • nat_get_timeouts
  • nat_get_timeouts_reply
  • nat_ipfix_enable_disable
  • nat_ipfix_enable_disable_reply
  • nat_set_log_level
  • nat_set_log_level_reply
  • nat_set_timeouts
  • nat_set_timeouts_reply
  • nat_show_config
  • nat_show_config_2
  • nat_show_config_2_reply
  • nat_show_config_reply
  • rdma_create
  • vmxnet3_dump
  • want_ip_neighbor_events
  • want_ip_neighbor_events_reply

In-progress API messages

These messages are provided for testing and experimentation only. They are not subject to any compatibility process, and therefore can arbitrarily change or disappear at any moment. Also they may have less than satisfactory testing, making them unsuitable for other use than the technology preview. If you are intending to use these messages in production projects, please collaborate with the feature maintainer on their productization.

  • abf_itf_attach_add_del
  • abf_itf_attach_add_del_reply
  • abf_itf_attach_details
  • abf_itf_attach_dump
  • abf_plugin_get_version
  • abf_plugin_get_version_reply
  • abf_policy_add_del
  • abf_policy_add_del_reply
  • abf_policy_details
  • abf_policy_dump
  • adl_allowlist_enable_disable
  • adl_allowlist_enable_disable_reply
  • adl_interface_enable_disable
  • adl_interface_enable_disable_reply
  • af_xdp_create
  • af_xdp_create_reply
  • af_xdp_delete
  • af_xdp_delete_reply
  • cnat_add_del_snat_prefix
  • cnat_add_del_snat_prefix_reply
  • cnat_get_snat_addresses
  • cnat_get_snat_addresses_reply
  • cnat_session_details
  • cnat_session_dump
  • cnat_session_purge
  • cnat_session_purge_reply
  • cnat_set_snat_addresses
  • cnat_set_snat_addresses_reply
  • cnat_translation_del
  • cnat_translation_del_reply
  • cnat_translation_details
  • cnat_translation_dump
  • cnat_translation_update
  • cnat_translation_update_reply
  • crypto_sw_scheduler_set_worker
  • crypto_sw_scheduler_set_worker_reply
  • det44_get_timeouts_reply
  • det44_interface_add_del_feature
  • det44_interface_add_del_feature_reply
  • det44_interface_details
  • det44_interface_dump
  • det44_plugin_enable_disable
  • det44_plugin_enable_disable_reply
  • det44_set_timeouts
  • det44_set_timeouts_reply
  • flow_add
  • flow_add_reply
  • flow_del
  • flow_del_reply
  • flow_disable
  • flow_disable_reply
  • flow_enable
  • flow_enable_reply
  • gbp_bridge_domain_add
  • gbp_bridge_domain_add_reply
  • gbp_bridge_domain_del
  • gbp_bridge_domain_del_reply
  • gbp_bridge_domain_details
  • gbp_bridge_domain_dump
  • gbp_bridge_domain_dump_reply
  • gbp_contract_add_del
  • gbp_contract_add_del_reply
  • gbp_contract_details
  • gbp_contract_dump
  • gbp_endpoint_add
  • gbp_endpoint_add_reply
  • gbp_endpoint_del
  • gbp_endpoint_del_reply
  • gbp_endpoint_details
  • gbp_endpoint_dump
  • gbp_endpoint_group_add
  • gbp_endpoint_group_add_reply
  • gbp_endpoint_group_del
  • gbp_endpoint_group_del_reply
  • gbp_endpoint_group_details
  • gbp_endpoint_group_dump
  • gbp_ext_itf_add_del
  • gbp_ext_itf_add_del_reply
  • gbp_ext_itf_details
  • gbp_ext_itf_dump
  • gbp_recirc_add_del
  • gbp_recirc_add_del_reply
  • gbp_recirc_details
  • gbp_recirc_dump
  • gbp_route_domain_add
  • gbp_route_domain_add_reply
  • gbp_route_domain_del
  • gbp_route_domain_del_reply
  • gbp_route_domain_details
  • gbp_route_domain_dump
  • gbp_route_domain_dump_reply
  • gbp_subnet_add_del
  • gbp_subnet_add_del_reply
  • gbp_subnet_details
  • gbp_subnet_dump
  • gbp_vxlan_tunnel_add
  • gbp_vxlan_tunnel_add_reply
  • gbp_vxlan_tunnel_del
  • gbp_vxlan_tunnel_del_reply
  • gbp_vxlan_tunnel_details
  • gbp_vxlan_tunnel_dump
  • ikev2_child_sa_details
  • ikev2_child_sa_dump
  • ikev2_initiate_del_child_sa
  • ikev2_initiate_del_child_sa_reply
  • ikev2_initiate_del_ike_sa
  • ikev2_initiate_del_ike_sa_reply
  • ikev2_initiate_rekey_child_sa
  • ikev2_initiate_rekey_child_sa_reply
  • ikev2_initiate_sa_init
  • ikev2_initiate_sa_init_reply
  • ikev2_nonce_get
  • ikev2_nonce_get_reply
  • ikev2_profile_add_del
  • ikev2_profile_add_del_reply
  • ikev2_profile_details
  • ikev2_profile_disable_natt
  • ikev2_profile_disable_natt_reply
  • ikev2_profile_dump
  • ikev2_profile_set_auth
  • ikev2_profile_set_auth_reply
  • ikev2_profile_set_id
  • ikev2_profile_set_id_reply
  • ikev2_profile_set_ipsec_udp_port
  • ikev2_profile_set_ipsec_udp_port_reply
  • ikev2_profile_set_liveness
  • ikev2_profile_set_liveness_reply
  • ikev2_profile_set_ts
  • ikev2_profile_set_ts_reply
  • ikev2_profile_set_udp_encap
  • ikev2_profile_set_udp_encap_reply
  • ikev2_sa_details
  • ikev2_sa_dump
  • ikev2_set_esp_transforms
  • ikev2_set_esp_transforms_reply
  • ikev2_set_ike_transforms
  • ikev2_set_ike_transforms_reply
  • ikev2_set_local_key
  • ikev2_set_local_key_reply
  • ikev2_set_responder
  • ikev2_set_responder_reply
  • ikev2_set_sa_lifetime
  • ikev2_set_sa_lifetime_reply
  • ikev2_set_tunnel_interface
  • ikev2_set_tunnel_interface_reply
  • ikev2_traffic_selector_details
  • ikev2_traffic_selector_dump
  • l2_emulation
  • l2_emulation_reply
  • mdata_enable_disable
  • mdata_enable_disable_reply
  • nat44_add_del_static_mapping_v2
  • nat44_add_del_static_mapping_v2_reply
  • nat44_show_running_config
  • nat44_show_running_config_reply
  • nat64_plugin_enable_disable
  • nat64_plugin_enable_disable_reply
  • oddbuf_enable_disable
  • oddbuf_enable_disable_reply
  • pg_interface_enable_disable_coalesce
  • pg_interface_enable_disable_coalesce_reply
  • sample_macswap_enable_disable
  • sample_macswap_enable_disable_reply
  • sr_policies_with_sl_index_details
  • sr_policies_with_sl_index_dump
  • sw_interface_set_vxlan_gbp_bypass
  • sw_interface_set_vxlan_gbp_bypass_reply
  • test_enum
  • test_enum_reply
  • test_prefix
  • test_prefix_reply
  • trace_capture_packets
  • trace_capture_packets_reply
  • trace_clear_capture
  • trace_clear_capture_reply
  • trace_details
  • trace_dump
  • trace_dump_reply
  • trace_set_filters
  • trace_set_filters_reply
  • vxlan_gbp_tunnel_add_del
  • vxlan_gbp_tunnel_add_del_reply
  • vxlan_gbp_tunnel_details
  • vxlan_gbp_tunnel_dump
  • wireguard_interface_create
  • wireguard_interface_create_reply
  • wireguard_interface_delete
  • wireguard_interface_delete_reply
  • wireguard_interface_details
  • wireguard_interface_dump
  • wireguard_peer_add
  • wireguard_peer_add_reply
  • wireguard_peer_remove
  • wireguard_peer_remove_reply
  • wireguard_peers_details
  • wireguard_peers_dump

Patches that changed API definitions

src/vpp/api/vpe_types.api
dc01471be api: add missing version info
src/vat2/test/vat2_test.api
58a6e7725 api: crchcecker ignore version < 1.0.0 and outside of src directory
510aaa891 api: crchcecker ignore version < 1.0.0 and outside of src directory
793be4632 api: fromjson/tojson enum flag support
src/vnet/mpls/mpls.api
df87f8092 api: vat2 and json autogeneration for api messages
src/vnet/ipip/ipip.api
33c45f56a fib: supporting inner flow hash on tunnels
src/vnet/vxlan-gbp/vxlan_gbp.api
b468773aa vxlan-gbp: Mark APIs as in-progress
src/vnet/ipsec/ipsec.api
041add7d1 ipsec: Tunnel SA DSCP behaviour
f916414b3 api: clean up use of deprecated flag
src/vnet/ipsec/ipsec_types.api
041add7d1 ipsec: Tunnel SA DSCP behaviour
src/vnet/tunnel/tunnel_types.api
dc01471be api: add missing version info
33c45f56a fib: supporting inner flow hash on tunnels
src/vnet/classify/classify.api
5c1e48c01 classify: add pcap/trace classfier mgmt API calls
src/vnet/ipfix-export/ipfix_export.api
f6cf57ceb misc: fix api in ipfix_classify_table_add/details
src/vnet/mfib/mfib_types.api
dc01471be api: add missing version info
990f69450 ip: convert u32 entry_flags to vl_api_mfib_entry_flags_t on mroute API
src/vnet/gre/gre.api
33c45f56a fib: supporting inner flow hash on tunnels
src/vnet/ip/ip_types.api
6dc0c8d14 ip: Sub Address Family types. Feature enable for each SAFI
src/vnet/ip/ip.api
df87f8092 api: vat2 and json autogeneration for api messages
990f69450 ip: convert u32 entry_flags to vl_api_mfib_entry_flags_t on mroute API
src/vnet/ethernet/ethernet_types.api
dc01471be api: add missing version info
src/vnet/l2/l2.api
df87f8092 api: vat2 and json autogeneration for api messages
src/vnet/cop/cop.api
6c8cdf78b misc: cop - clean up stray doxygen block
f916414b3 api: clean up use of deprecated flag
src/vnet/crypto/crypto.api
8c91b2ae2 crypto: Crypto set handler API to support set all as CLI
src/vnet/devices/virtio/virtio.api
e347acbc3 virtio: add packet buffering on transmit path
f916414b3 api: clean up use of deprecated flag
src/vnet/interface_types.api
dc01471be api: add missing version info
src/vnet/ip-neighbor/ip_neighbor.api
4ac36bcb1 ip-neighbor: Send API event when neighbor is removed
src/vnet/policer/policer_types.api
dc01471be api: add missing version info
src/vnet/srv6/sr_types.api
dc01471be api: add missing version info
src/plugins/map/map.api
148c7b768 stats: counters data model
f916414b3 api: clean up use of deprecated flag
src/plugins/nat/nat64/nat64.api
1f36023d2 nat: move nat64 to a subfeature
src/plugins/nat/det44/det44.api
d1762e614 nat: det44 plugin fix style and api cleanup
f916414b3 api: clean up use of deprecated flag
src/plugins/nat/nat44.api
df87f8092 api: vat2 and json autogeneration for api messages
25fd8ad03 nat: cleanup & reorganization
b227aa699 nat: api,cli and test update & cleanup
src/plugins/nat/nat_types.api
25fd8ad03 nat: cleanup & reorganization
src/plugins/lisp/lisp-cp/one.api
2b202bc4b lisp: Move to plugin
src/plugins/lisp/lisp-cp/lisp.api
068ad25c1 lisp: .api dont set defaults in reply messages
2b202bc4b lisp: Move to plugin
src/plugins/lisp/lisp-cp/lisp_types.api
2b202bc4b lisp: Move to plugin
src/plugins/lisp/lisp-gpe/lisp_gpe.api
2b202bc4b lisp: Move to plugin
src/plugins/nsim/nsim.api
f916414b3 api: clean up use of deprecated flag
src/plugins/lb/lb_types.api
dc01471be api: add missing version info
src/plugins/lb/lb.api
df87f8092 api: vat2 and json autogeneration for api messages
src/plugins/pppoe/pppoe.api
340b10a38 pppoe: make pppoe plugin work with dot1q subinterfaces
src/plugins/geneve/geneve.api
3a6adc52f geneve: Move to plugin
src/plugins/vmxnet3/vmxnet3.api
490e077fb vmxnet3: add sw_if_index filter to vmxnet3 interface dump
src/plugins/wireguard/wireguard.api
de22111b5 wireguard: return public key in api
src/plugins/l2tp/l2tp.api
6810a77da misc: Move l2tp to plugin
src/plugins/acl/acl.api
df87f8092 api: vat2 and json autogeneration for api messages
src/plugins/acl/acl_types.api
dc01471be api: add missing version info
src/plugins/rdma/rdma.api
798267aaa rdma: implement multiseg rx without striding rq
src/plugins/ikev2/ikev2.api
d7fc12f07 ikev2: add option to disable NAT traversal
84962d19b ikev2: support ipv6 traffic selectors & overlay
src/plugins/ikev2/ikev2_types.api
dc01471be api: add missing version info
d7fc12f07 ikev2: add option to disable NAT traversal
84962d19b ikev2: support ipv6 traffic selectors & overlay
src/plugins/cnat/cnat.api
2082835fe cnat: allow max_u16 translation backends
af897c5e3 cnat: Add DHCP support
src/plugins/tracedump/tracedump.api
c0b195450 feature: Add packet trace API
src/plugins/tracedump/graph.api
c0b195450 feature: Add packet trace API
src/plugins/vrrp/vrrp.api
78f487e11 vrrp: asynchronous events on VR state change
src/plugins/flowprobe/flowprobe.api
df87f8092 api: vat2 and json autogeneration for api messages
src/plugins/lldp/lldp.api
3f9fdd984 lldp: Move to plugin
src/plugins/memif/memif.api
6223766f9 libmemif: clean up typos
src/plugins/dns/dns.api
df87f8092 api: vat2 and json autogeneration for api messages
src/plugins/stn/stn.api
df87f8092 api: vat2 and json autogeneration for api messages
src/plugins/af_xdp/af_xdp.api
d4e109138 af_xdp: add option to claim all available rx queues
src/plugins/gbp/gbp.api
df87f8092 api: vat2 and json autogeneration for api messages