You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We need to be able to query the P4 Runtime for Agent capabilities, especially for those which are optional. For example, rollback-on-failure and dataplane-atomic are optional; a target may support some batches in an atomic way but not others.
A controller could query the agent and determine what it supports, and potentially exploit enhanced capabilities which optimize the runtime interface. Conversely, the controller can avoid trying unsupported operations which will fail. Finally, this provides a tighter "contract" which can be validated by test harnesses which read the capabilities and test against them.
Let's accumulate a strawman list of capabilities so we can brainstorm how to represent them. I'll seed the list with:
api_version - the P4 Runtime version the agent currently implements
agent_capabilities[] A list of capabilities, consists of optional features as well as other TBD attributes. Should be easy to extend.
Extra credit and headaches:
api_versions[] - a list of the versions of the P4 Runtime API which the agent can support. This allows independent evolution of controllers and agents yet provide for compatibility. A controller could support one or more versions, likewise the agent could support one or more versions. Negotiation could establish the best match after connecting. One or the other party might only support a single version and this would dictate one possible choice (or none if there wan't a match).
The text was updated successfully, but these errors were encountered:
We need to be able to query the P4 Runtime for Agent capabilities, especially for those which are optional. For example, rollback-on-failure and dataplane-atomic are optional; a target may support some batches in an atomic way but not others.
A controller could query the agent and determine what it supports, and potentially exploit enhanced capabilities which optimize the runtime interface. Conversely, the controller can avoid trying unsupported operations which will fail. Finally, this provides a tighter "contract" which can be validated by test harnesses which read the capabilities and test against them.
Let's accumulate a strawman list of capabilities so we can brainstorm how to represent them. I'll seed the list with:
Extra credit and headaches:
The text was updated successfully, but these errors were encountered: