[P4-design] Call for comments on PSA spec version 1.1, planned for release 2018-Nov-21

Andy Fingerhut (jafinger) jafinger at cisco.com
Tue Nov 6 21:21:19 EST 2018


The latest version of the PSA specification can be viewed here, at the
HTML or PDF links after 'working draft' under the heading "P4_16 PSA":

    https://p4.org/specs/

PSA version 1.0 was released on March 1, 2018.  Today we begin a two
week review period where we invite interested people to read the
latest working draft version and bring up any issues they discover.
If the only issues found can be quickly resolved, we plan to release
PSA version 1.1 on November 21, 2018.

If you do find any issues, or have any questions about the spec,
please send an email to the p4-arch at lists.p4.org email list, or create
an issue on the p4-spec Github repository with "PSA" in the title.

    https://github.com/p4lang/p4-spec/issues


Below is a list changes made since version 1.0, and where you can read
more about those changes.


# PSA specification document changes


## Numeric translation between P4Runtime API values and data plane values

There was a series of meetings after PSA v1.0 was released to refine
the details of the plan to do numeric translation of values with type
PortId_t (and ClassOfService_t, and optionally other types in the
future).  PSA v1.1 reflects the latest design for how to accomplish
this.  Changes can be found here:

+ Section 4.1 "PSA type definitions"
+ Section 4.4 "Data plane vs. control plane data representations"


## Add the ability for packet clone sessions to create multiple copies

In PSA v1.0, requesting to make a clone of a packet was restricted to
creating a single clone, sent to a single output port.  In PSA v1.1
you may now configure a clone session with a set of (egress_port,
instance) pairs, similar to how a multicast group can be configured.
Changes can be found here:

+ Section 6.2. "Behavior of packets after ingress processing is complete"
+ Section 6.4.5 "Multicast and clone copies" (formerly called "Multicast copies")
+ Section 6.5 "Behavior of packets after egress processing is complete"
+ Section 6.8 "Packet Cloning"


## Add psa_idle_timeout table property

Adding this brings PSA v1.1 up to date with the support for this
feature in the P4Runtime API.  Using this table property enables the
P4 developer to specify that a table must maintain some state of when
the last time each table entry was matched, and if an entry remains
unmatched for longer than a time configured by the controller, then a
notification message should be sent to the controller.

+ Section 7.2.1 "Table entry timeout notification"


## Add psa_empty_group_action table property

PSA v1.0 did not specify the behavior of a table with an
ActionSelector implementation, if a packet matched a table entry that
was configured with an empty action selector group.

PSA v1.1 recommends (but does not require) that implementations
support a new psa_empty_group_action table property, whose value is an
action that should be executed when this situation occurs.

+ Section 7.12 "Action Selector"


## Other changes

In PSA v1.0, the Digest extern was required to be supported in both
the IngressDeparser and EgressDeparser control blocks.  It is now no
longer required to be supported in the EgressDeparser control block.

+ Table 5 "Summary of controls that can instantiate and invoke externs"


# Changes to the psa.p4 include file

+ Updates for the latest plan on P4Runtime API numerical translation
  of type PortId_t and ClassOfService_t.
+ Eliminate obsolete ValueSet extern, because the value_set construct
  was added to the P4_16 language specification.
+ Fix a few typos in example control plane APIs in comments.
+ Eliminate PSA_SWITCH #define macro with arguments, since P4_16
  language spec does not require that the P4_16 preprocessor support
  such macros.


# Changes to example PSA programs in the p4-16/psa/examples directory

+ Small changes required to bring them in harmony with the latest
  details on P4Runtime API numerical translation of type PortId_t.


# Viewing all changes as diffs on Github

If you want to view all changes on the Github site as diffs, from PSA
v1.0 until the latest master version as of the time you view this URL,
use the link below.  Note that this will also show changes to files in
the P4_14 and P4_16 language specification documents.  All files for
the PSA specification are in the directory `p4-16/psa`, so you can
focus on files with that as part of their path name.

https://github.com/p4lang/p4-spec/compare/c2b7ae0c5a73d5de32b16cc0aff9ffc0115fb92b...master
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.p4.org/pipermail/p4-design_lists.p4.org/attachments/20181107/4c524c6d/attachment-0001.html>


More information about the P4-design mailing list