<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">The latest version of the PSA specification can be viewed here, at the<o:p></o:p></p>
<p class="MsoNormal">HTML or PDF links after 'working draft' under the heading "P4_16 PSA":<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    https://p4.org/specs/<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">PSA version 1.0 was released on March 1, 2018.  Today we begin a two<o:p></o:p></p>
<p class="MsoNormal">week review period where we invite interested people to read the<o:p></o:p></p>
<p class="MsoNormal">latest working draft version and bring up any issues they discover.<o:p></o:p></p>
<p class="MsoNormal">If the only issues found can be quickly resolved, we plan to release<o:p></o:p></p>
<p class="MsoNormal">PSA version 1.1 on November 21, 2018.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">If you do find any issues, or have any questions about the spec,<o:p></o:p></p>
<p class="MsoNormal">please send an email to the p4-arch@lists.p4.org email list, or create<o:p></o:p></p>
<p class="MsoNormal">an issue on the p4-spec Github repository with "PSA" in the title.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    https://github.com/p4lang/p4-spec/issues<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Below is a list changes made since version 1.0, and where you can read<o:p></o:p></p>
<p class="MsoNormal">more about those changes.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># PSA specification document changes<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">## Numeric translation between P4Runtime API values and data plane values<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">There was a series of meetings after PSA v1.0 was released to refine<o:p></o:p></p>
<p class="MsoNormal">the details of the plan to do numeric translation of values with type<o:p></o:p></p>
<p class="MsoNormal">PortId_t (and ClassOfService_t, and optionally other types in the<o:p></o:p></p>
<p class="MsoNormal">future).  PSA v1.1 reflects the latest design for how to accomplish<o:p></o:p></p>
<p class="MsoNormal">this.  Changes can be found here:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+ Section 4.1 "PSA type definitions"<o:p></o:p></p>
<p class="MsoNormal">+ Section 4.4 "Data plane vs. control plane data representations"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">## Add the ability for packet clone sessions to create multiple copies<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In PSA v1.0, requesting to make a clone of a packet was restricted to<o:p></o:p></p>
<p class="MsoNormal">creating a single clone, sent to a single output port.  In PSA v1.1<o:p></o:p></p>
<p class="MsoNormal">you may now configure a clone session with a set of (egress_port,<o:p></o:p></p>
<p class="MsoNormal">instance) pairs, similar to how a multicast group can be configured.<o:p></o:p></p>
<p class="MsoNormal">Changes can be found here:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+ Section 6.2. "Behavior of packets after ingress processing is complete"<o:p></o:p></p>
<p class="MsoNormal">+ Section 6.4.5 "Multicast and clone copies" (formerly called "Multicast copies")<o:p></o:p></p>
<p class="MsoNormal">+ Section 6.5 "Behavior of packets after egress processing is complete"<o:p></o:p></p>
<p class="MsoNormal">+ Section 6.8 "Packet Cloning"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">## Add psa_idle_timeout table property<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Adding this brings PSA v1.1 up to date with the support for this<o:p></o:p></p>
<p class="MsoNormal">feature in the P4Runtime API.  Using this table property enables the<o:p></o:p></p>
<p class="MsoNormal">P4 developer to specify that a table must maintain some state of when<o:p></o:p></p>
<p class="MsoNormal">the last time each table entry was matched, and if an entry remains<o:p></o:p></p>
<p class="MsoNormal">unmatched for longer than a time configured by the controller, then a<o:p></o:p></p>
<p class="MsoNormal">notification message should be sent to the controller.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+ Section 7.2.1 "Table entry timeout notification"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">## Add psa_empty_group_action table property<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">PSA v1.0 did not specify the behavior of a table with an<o:p></o:p></p>
<p class="MsoNormal">ActionSelector implementation, if a packet matched a table entry that<o:p></o:p></p>
<p class="MsoNormal">was configured with an empty action selector group.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">PSA v1.1 recommends (but does not require) that implementations<o:p></o:p></p>
<p class="MsoNormal">support a new psa_empty_group_action table property, whose value is an<o:p></o:p></p>
<p class="MsoNormal">action that should be executed when this situation occurs.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+ Section 7.12 "Action Selector"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">## Other changes<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In PSA v1.0, the Digest extern was required to be supported in both<o:p></o:p></p>
<p class="MsoNormal">the IngressDeparser and EgressDeparser control blocks.  It is now no<o:p></o:p></p>
<p class="MsoNormal">longer required to be supported in the EgressDeparser control block.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+ Table 5 "Summary of controls that can instantiate and invoke externs"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Changes to the psa.p4 include file<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+ Updates for the latest plan on P4Runtime API numerical translation<o:p></o:p></p>
<p class="MsoNormal">  of type PortId_t and ClassOfService_t.<o:p></o:p></p>
<p class="MsoNormal">+ Eliminate obsolete ValueSet extern, because the value_set construct<o:p></o:p></p>
<p class="MsoNormal">  was added to the P4_16 language specification.<o:p></o:p></p>
<p class="MsoNormal">+ Fix a few typos in example control plane APIs in comments.<o:p></o:p></p>
<p class="MsoNormal">+ Eliminate PSA_SWITCH #define macro with arguments, since P4_16<o:p></o:p></p>
<p class="MsoNormal">  language spec does not require that the P4_16 preprocessor support<o:p></o:p></p>
<p class="MsoNormal">  such macros.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Changes to example PSA programs in the p4-16/psa/examples directory<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+ Small changes required to bring them in harmony with the latest<o:p></o:p></p>
<p class="MsoNormal">  details on P4Runtime API numerical translation of type PortId_t.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Viewing all changes as diffs on Github<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">If you want to view all changes on the Github site as diffs, from PSA<o:p></o:p></p>
<p class="MsoNormal">v1.0 until the latest master version as of the time you view this URL,<o:p></o:p></p>
<p class="MsoNormal">use the link below.  Note that this will also show changes to files in<o:p></o:p></p>
<p class="MsoNormal">the P4_14 and P4_16 language specification documents.  All files for<o:p></o:p></p>
<p class="MsoNormal">the PSA specification are in the directory `p4-16/psa`, so you can<o:p></o:p></p>
<p class="MsoNormal">focus on files with that as part of their path name.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">https://github.com/p4lang/p4-spec/compare/c2b7ae0c5a73d5de32b16cc0aff9ffc0115fb92b...master<o:p></o:p></p>
</div>
</body>
</html>