[PATCH V3 0/7] pipeline: support direct registers and meters
Thomas Monjalon
thomas at monjalon.net
Sat Sep 24 11:34:33 CEST 2022
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.
More information about the dev
mailing list