Release notes for VPP 22.02 =========================== More than 517 commits since the previous release, including 229 fixes. Release Highlights ------------------ This release would have had this section very short, if not for a last minute issue which warrants some attention. The issue is caused by changes related to MTU and Ethernet Maximum Frame Size (`DPDK commit 990912e676ec742d9b8d9f6f64c8a7c892d1ae75 `_). DPDK 21.11 changed, among other things, the way it deals with the Ethernet Maximum Frame Size. This triggered the downstream changes in VPP, providing an opportunity to improve the handling of MTU configuration within the code. Changes to VPP MTU configuration were submitted in `gerrit change 34843 `_. In particular, vnet_hw_interface_set_mtu() was updated to return the error codes from the underlying driver. This function also returns an error code, when it is called on a logical interface. Due to the new behavior of returning proper error code(s) by vnet_hw_interface_set_mtu (), the API call *hw_interface_set_mtu* potentially returns more errors than before. This issue was discovered in CSIT tests that were setting interface HW MTU in more places than they should and/or setting the MTU size to a value that was affected by the DPDK code change, in turn returning an error code from drivers whose Maximum Frame Size was less then the configured HW MTU. Another item worth mentioning is an improvement to wireguard encryption/decryption path - the implementation of the async mode. The aim is to provide better performance for the feature (commits: `492d7790f `_ and `77e69ae2d1 `_) Features -------- - Infrastructure Library - Initial RISC-V support (`6eb0f84e3 `_) - Toeplitz hash (`2e5921b08 `_) - Add bihash 12\_4 template (`d51250f5e `_) - Plugins - Crypto - ipsecmb - Bump to ipsecmb v1.1 (`e15245d79 `_) - DPDK - Bump to DPDK v21.11 (`6c75cd224 `_) - Add qat gen4-b device support (`1c4415bfa `_) - HSI - Host stack intercept plugin (`68501d369 `_) - IPv6 Segment Routing Mobile - Update GTP4/6.D function (`be872a8dd `_) - SVM Library - Add support for thresh dequeue notification (`fb079585c `_) - Sphinx Documents - Consume fd.io version list (`ae5609721 `_) - VNET - Device Drivers - Add queues params in create\_if (`7d0e30bc6 `_) - IPSec - Record the number of packets lost from an SA (`e11203e5b `_) - IPv4 LPM - Add classifier-based ACLs support on ip punt (`abb2a4223 `_) - Interface Common - Add multi tx-queues support for new tx infra (`0d05c0d21 `_) - Add interface monitor cli (`162ff5e41 `_) - Session Layer - Add session\_sapi\_enable\_disable (`7b3a3df26 `_) - Add support for DSCP (`3ef8bf366 `_) - App mq congestion detection (`20c242316 `_) - TAP Drivers - Add num\_tx\_queues API (`40edaf601 `_) - VPP Comms Library - Add DSCP support in VCL (`2f09bfc8b `_) - Vector Library - Add virtual time support (`56eccdbaa `_) - Gomemif - Add mode support (`176373cae `_) 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: - fd.io `JIRA `_ - git `commit log `_ 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 ============================================================= ================== af_packet_create_v2 only in image af_packet_create_v2_reply only in image af_xdp_create_v2 only in image af_xdp_create_v2_reply only in image gbp_bridge_domain_add only in file gbp_bridge_domain_add_reply only in file gbp_bridge_domain_del only in file gbp_bridge_domain_del_reply only in file gbp_bridge_domain_details only in file gbp_bridge_domain_dump only in file gbp_bridge_domain_dump_reply only in file gbp_contract_add_del only in file gbp_contract_add_del_reply only in file gbp_contract_details only in file gbp_contract_dump only in file gbp_endpoint_add only in file gbp_endpoint_add_reply only in file gbp_endpoint_del only in file gbp_endpoint_del_reply only in file gbp_endpoint_details only in file gbp_endpoint_dump only in file gbp_endpoint_group_add only in file gbp_endpoint_group_add_reply only in file gbp_endpoint_group_del only in file gbp_endpoint_group_del_reply only in file gbp_endpoint_group_details only in file gbp_endpoint_group_dump only in file gbp_e
/*
 * Copyright (c) 2015-2016 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

option version = "2.0.0";

import "vnet/interface_types.api";
import "vnet/ip/ip_types.api";

define vxlan_gpe_add_del_tunnel
{
  u32 client_index;
  u32 context;
  vl_api_address_t local;
  vl_api_address_t remote;
  vl_api_interface_index_t mcast_sw_if_index;
  u32 encap_vrf_id;
  u32 decap_vrf_id;
  vl_api_ip_proto_t protocol;
  u32 vni;
  bool is_add [default=true];
};

define vxlan_gpe_add_del_tunnel_reply
{
  u32 context;
  i32 retval;
  vl_api_interface_index_t sw_if_index;
};

define vxlan_gpe_tunnel_dump
{
  u32 client_index;
  u32 context;
  vl_api_interface_index_t sw_if_index;
};

define vxlan_gpe_tunnel_details
{
  u32 context;
  vl_api_interface_index_t sw_if_index;
  vl_api_address_t local;
  vl_api_address_t remote;
  u32 vni;
  vl_api_ip_proto_t protocol;
  vl_api_interface_index_t mcast_sw_if_index;
  u32 encap_vrf_id;
  u32 decap_vrf_id;
  bool is_ipv6;
};

/** \brief Interface set vxlan-gpe-bypass request
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param sw_if_index - interface used to reach neighbor
    @param is_ipv6 - if non-zero, enable ipv6-vxlan-bypass, else ipv4-vxlan-bypass
    @param enable - if non-zero enable, else disable
*/
autoreply define sw_interface_set_vxlan_gpe_bypass
{
  u32 client_index;
  u32 context;
  vl_api_interface_index_t sw_if_index;
  bool is_ipv6;
  bool enable [default=true];
};

/*
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */
bp_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_hostname - ikev2_set_responder_hostname_reply - 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 - ip_route_add_del_v2 - ip_route_add_del_v2_reply - ip_route_lookup_v2 - ip_route_lookup_v2_reply - ip_route_v2_details - ip_route_v2_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_ed_plugin_enable_disable - nat44_ed_plugin_enable_disable_reply - nat44_ed_set_fq_options - nat44_ed_set_fq_options_reply - nat44_ed_show_fq_options - nat44_ed_show_fq_options_reply - nat44_ei_add_del_address_range - nat44_ei_add_del_address_range_reply - nat44_ei_add_del_static_mapping - nat44_ei_add_del_static_mapping_reply - nat44_ei_address_details - nat44_ei_address_dump - nat44_ei_del_session - nat44_ei_del_session_reply - nat44_ei_del_user - nat44_ei_del_user_reply - nat44_ei_forwarding_enable_disable - nat44_ei_forwarding_enable_disable_reply - nat44_ei_ha_flush - nat44_ei_ha_flush_reply - nat44_ei_ha_resync - nat44_ei_ha_resync_completed_event - nat44_ei_ha_resync_reply - nat44_ei_ha_set_failover - nat44_ei_ha_set_failover_reply - nat44_ei_ha_set_listener - nat44_ei_ha_set_listener_reply - nat44_ei_interface_add_del_feature - nat44_ei_interface_add_del_feature_reply - nat44_ei_interface_details - nat44_ei_interface_dump - nat44_ei_ipfix_enable_disable - nat44_ei_ipfix_enable_disable_reply - nat44_ei_plugin_enable_disable - nat44_ei_plugin_enable_disable_reply - nat44_ei_set_addr_and_port_alloc_alg - nat44_ei_set_addr_and_port_alloc_alg_reply - nat44_ei_set_fq_options - nat44_ei_set_fq_options_reply - nat44_ei_set_mss_clamping - nat44_ei_set_mss_clamping_reply - nat44_ei_set_timeouts - nat44_ei_set_timeouts_reply - nat44_ei_set_workers - nat44_ei_set_workers_reply - nat44_ei_show_fq_options - nat44_ei_show_fq_options_reply - nat44_ei_show_running_config - nat44_ei_show_running_config_reply - nat44_ei_static_mapping_details - nat44_ei_static_mapping_dump - nat44_ei_user_details - nat44_ei_user_dump - nat44_ei_user_session_details - nat44_ei_user_session_dump - nat44_ei_worker_details - nat44_ei_worker_dump - nat44_show_running_config - nat44_show_running_config_reply - nat44_user_session_v2_details - nat44_user_session_v2_dump - 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 - pnat_binding_add - pnat_binding_add_reply - pnat_binding_attach - pnat_binding_attach_reply - pnat_binding_del - pnat_binding_del_reply - pnat_binding_detach - pnat_binding_detach_reply - pnat_bindings_details - pnat_bindings_get - pnat_bindings_get_reply - pnat_interfaces_details - pnat_interfaces_get - pnat_interfaces_get_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_addresses - test_addresses2 - test_addresses2_reply - test_addresses3 - test_addresses3_reply - test_addresses_reply - test_empty - test_empty_reply - test_enum - test_enum_reply - test_interface - test_interface_reply - test_prefix - test_prefix_reply - test_string - test_string2 - test_string2_reply - test_string_reply - test_vla - test_vla2 - test_vla2_reply - test_vla3 - test_vla3_reply - test_vla4 - test_vla4_reply - test_vla5 - test_vla5_reply - test_vla_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 - want_wireguard_peer_events - want_wireguard_peer_events_reply - 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_event - wireguard_peer_remove - wireguard_peer_remove_reply - wireguard_peers_details - wireguard_peers_dump Patches that changed API definitions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``src/vlibmemory/memclnt.api`` * `f0e67d78a `_ interface: add api test file * `36217e3ca `_ api: API trace improvements ``src/vlibmemory/vlib.api`` * `f0e67d78a `_ interface: add api test file * `a1400cecb `_ misc: api move continued * `248210c6c `_ misc: move part of vpe apis to vlibmemory ``src/vnet/ipfix-export/ipfix_export.api`` * `acb0d2d13 `_ ipfix-export: add a new API to dump all exporters * `d747dd950 `_ ipfix-export: support creating multiple exporters ``src/vnet/session/session.api`` * `7b3a3df26 `_ session: Add session_sapi_enable_disable ``src/vnet/fib/fib_types.api`` * `da3310597 `_ fib: doc nitfixes ``src/vnet/qos/qos.api`` * `2c77ae484 `_ docs: vnet comment nitfixes ``src/vnet/devices/af_packet/af_packet.api`` * `7d0e30bc6 `_ devices: Add queues params in create_if ``src/vnet/devices/tap/tapv2.api`` * `40edaf601 `_ tap: add num_tx_queues API ``src/vnet/vxlan-gpe/vxlan_gpe.api`` * `ea9629298 `_ vxlan-gpe: add udp-port configuration support ``src/vnet/classify/classify.api`` * `abb2a4223 `_ ip: add classifier-based ACLs support on ip punt ``src/vnet/interface.api`` * `0d05c0d21 `_ interface: add multi tx-queues support for new tx infra ``src/plugins/wireguard/wireguard.api`` * `064b77c74 `_ build: remove unnecessary executable bits * `dd630d15d `_ wireguard: add events for peer ``src/plugins/nat/nat44-ed/nat44_ed.api`` * `4189108e1 `_ nat: NAT44 ED api fix and improvement * `c7164827a `_ nat: nat44-ed add session timing out indicator in api (2) ``src/plugins/nat/nat44-ei/nat44_ei.api`` * `1953da661 `_ nat: nat44-ei configuration improvements ``src/plugins/af_xdp/af_xdp.api`` * `31ed835b3 `_ af_xdp: mark API as stable * `57bdb26ba `_ af_xdp: introduce to netns api ``src/vpp/api/vpe.api`` * `a1400cecb `_ misc: api move continued * `248210c6c `_ misc: move part of vpe apis to vlibmemory ``extras/deprecated/vnet/vxlan-gbp/vxlan_gbp.api`` * `3be9164f8 `_ misc: deprecate gbp and its dependents ``extras/deprecated/plugins/l2e/l2e.api`` * `3be9164f8 `_ misc: deprecate gbp and its dependents ``extras/deprecated/plugins/gbp/gbp.api`` * `3be9164f8 `_ misc: deprecate gbp and its dependents