30/08/2022 20:58, Cristian Dumitrescu:
> This patch introduces support for direct registers and meters. The
> difference between indirect (indexed) and direct registers and meters
> is explained below [1][2][3].
> 
> 1. Indirect (indexed) registers and meters.
> 
> The index into an array of registers or meters used on the data path
> is typically read from the action data identified by a table lookup
> operation.
> 
> This means that the control plane manages the mapping of the mapping
> of array entries to table entries and sets up this index explicitly
> into the table entry action data.
> 
> These are called indirect or indexed registers and meters, and they
> allow multiple table entries to share the same register/meter, as well
> as a 1:1 mapping of table entries to register/meter array entries.
> 
> 2. Direct registers and meters.
> In the case of 1:1 mapping of table entries to register/meter array
> elements, it is sometimes desired to avoid the explicit allocation of
> register/meter array index to each table entry by the control plane.
> 
> One way this can be done is by implementing a mechanism to associate
> a unique ID to each table entry, including the default table entry as
> well; once the entry ID is retrieved as result of the table lookup
> operation, it is saved by the pipeline and used later on as the
> index into the register/meter array.
> 
> These are called direct registers and meters, and have the advantage
> that the index is auto-generated, which simplifies the controller
> implementation; the disadvantage is that they do not allow multiple
> table entries to share the same register or meter.
> 
> References:
> 
> [1] Indirect and direct counters:
> https://p4.org/p4-spec/docs/PSA.html#sec-counters
> 
> [2] Indirect and direct registers:
> https://p4.org/p4-spec/docs/PSA.html#sec-registers
> 
> [3] Indirect and direct meters:
> https://p4.org/p4-spec/docs/PSA.html#sec-meters
> 
> Depends-on: series-24366 ("pipeline: make the hash function configurable per 
> table")
> 
> Change log:
> 
> V3:
> -Fixed issues related to CLI parsing
> -Fixed issue related to the key offset
> 
> V2:
> -Fixed minor style issues flagged by CI/CD
> 
> Cristian Dumitrescu (7):
>   table: add entry ID for regular tables
>   table: add entry ID for learner tables
>   pipeline: add table entry ID read instruction
>   pipeline: support direct registers on the control path
>   pipeline: support direct meters on the control path
>   examples/pipeline: add CLI commands for direct registers
>   examples/pipeline: add CLI commands for direct meters

Applied, thanks.



Reply via email to