Skip to content

P4Runtime Release v1.0.0

Compare
Choose a tag to compare
@antoninbas antoninbas released this 29 Jan 19:09

This is the official v1.0.0 release. All backward-compatibility guarantees listed in the specification will be enforced from now on.

Changelog:

  • API
    • removed obsolete references to P4_14 in proto files
    • fixed signed int (int<W>) representation: we now mandate sign-bit padding to be able to differentiate between positive & negative values while preserving our original goal of "non-disruptive P4 program updates"
    • ensured canonical representation of compound types (e.g. stacks) with P4Data
    • required idle_timeout_ns field to be set in the table_entry fields of the IdleTimeoutNotification message
    • major overhaul of Value Set programming, which was very much out-of-sync with the P4_16 spec: support for multi-field matches, support for @match annotation
    • added support for numeric translation of Counter / Meter / Register indices
    • corrected out-of-date comment in p4runtime.proto regarding match entry priority
    • better semantics for max_group_size field (P4Info) and max_size (P4Runtime)
  • specification
    • typos & formatting issues fixed all over the place
    • clarified the meaning of the alias field in the P4Info Preamble message
    • described documentation annotations: @brief, @description and @pkginfo, which influence P4Info generation
    • added appendix listing all annotations primarily relevant to P4Info / P4Runtime; for each annotation we include a link to the relevant section in the spec
    • explicitly documented order of error statuses in WriteResponse
    • changed description of scenarios where P4 program is not available to emphasize usefulness of P4 program to build robust / correct systems
    • clarified how each P4Runtime client is identified to the server
    • improved description of master-slave arbitration and terminology used
    • clarifications regarding action profile programming: 0 is not a valid weight for members, members cannot be repeated in an action profile group (although action specifications can be "repeated" when doing one-shot programming), members can be shared across different groups
    • called out that idle timeout is not supported for default entries
    • refined the definition of read-write symmetry: the order of repeated fields is no longer required to be preserved for "entity programming", unless explicitly specified on a case-by-case basis
    • added information about which operations are allowed for immutable tables
    • included some security considerations & recommendations in the spec