Development Update 24.04

Overview

This is an update (code drop) to incorporate changes made to support the Intel® IPU E2100.

This update aligns with IPDK v24.01 release

Breaking Changes

Client Flags

  • The Stratum CredentialsManager class and gnmi_cli tool have been aligned with the current upstream versions, and IPDK modifications have been revised to be more consistent with Stratum as a whole.

    The -grpc_client_cert_req_type flag is now -client_cert_req_type, and its values have been shortened. They are also now case-insensitive.

    Old Name

    New Name

    NO_REQUEST_CLIENT_CERT

    no_request

    REQUEST_CLIENT_CERT_NO_VERIFY

    request_no_verify

    REQUEST_CLIENT_CERT_AND_VERIFY

    request_and_verify

    REQUIRE_CLIENT_CERT_NO_VERIFY

    require_no_verify

    REQUIRE_CLIENT_CERT_AND_VERIFY

    require_and_verify

    This change affects all clients that use CredentialsManager, including gnmi_cli, sgnmi_cli, and gnmi-ctl.

What’s Changed

  • The Linux Networking program has been upgraded from v1 to v2, now called Linux Networking v2

  • Exception packet handling - Enhanced Linux Networking with multiple VNI support, port to bridge association and VLAN traffic offload (Intel IPU® E2100 target only).

  • Link Aggregation Group (LAG) - Supports active-backup use case of LAG on IDPF interfaces done via bonding driver. This LAG interface is used only for underlay connectivity in Exception packet handling feature. (Intel IPU® E2100 target only).

  • Packet IO - Facilitates the exchange of packets between control plane applications and P4 dataplane (Intel IPU® E2100 target only).

  • Indexed and direct meters in policer mode - Metering along with policer allows the users to determine the amount of data used and then control the usage. (Intel IPU® E2100 target only).

Component Changes

Stratum-deps

Introduction of the IPDK stratum-deps repository.

In order to avoid frequent re-building of dependent libraries such as gRPC, protobuf etc, which do not change on a regular basis, a stratum-deps repository has been created. You can build these dependencies once and pass the install path to build infrap4d, making for a much quicker build process.

Latest release of stratum-deps is v1.3.0

Stratum

Stratum has been updated to the latest version. All changes made between 3-Jun-2021 and 7-Dec-2023 have been downstreamed and integrated into P4 Control Plane.

The majority of the changes were either global housekeeping (such as formatting files with clang-format and buildifier) or do not affect P4 Control Plane (such as updates to the barefoot platform, of which there were many).

Changes include:

  • Defaulting to --test_output=errors when running bazel test, so the the test log becomes part of the console output if there are errors.

  • Adding support for the OpenConfig /interfaces/interface[name=*]/state/id path.

  • Replacing the raw text proto string terminal PROTO with pb. This fixes compiler errors in newer versions of gcc and clang.

  • Replacing P4Runtime controller management with controller code from the PINS project.

  • Adding support for P4Runtime role configuration.

  • Adding new unit tests and updating existing tests.

  • Overhauling lib/security (credentials management).

  • Improvements to log output.

For more information, see the commit comments in the upstream repository.

We have also made minimal updates to the barefoot platform so we can build it with version 9.11.0 of the Barefoot SDE (the version used to build the TDI tofino target).

Note that we have not attempted to migrate changes made in the Barefoot platform to the TDI platform (which is based on Barefoot). This can be done later, if the need arises.

Security Fixes

  • Upgrade from OpenSSL 1.1.1x to 3.x

  • Library upgrades

    • Upgraded gRPC to 1.59.2 to address CVE-2023-33953, CVE-2023-4785

    • Upgraded protobuf to version 25.0

    • Upgraded abseil-cpp to version 20230802.0

    • Upgraded zlib to version 1.3 to address CVE-2023-45853.

      • Note that the CVE is still present in zlib 1.3 and part of an experimental MiniZip utility that is unused/unsupported by zlib.

P4Runtime Fork

P4 Control Plane uses a fork of the p4runtime repository to add provisional support for the PacketModMeter and DirectPacketModMeter externs.

We plan to revert to using the standard p4runtime repository when the additions become standard.

Build artifacts for Python, Go, and C++ can be downloaded from the Releases page of the repository. The current version is 2023.11.0.

If you wish to build the protobuf artifacts yourself, see the README file for instructions.