Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Definition of non-standard P4 constructs in sirius P4 code, and plan for how to run them? #12

Open
jfingerh opened this issue Dec 2, 2021 · 8 comments
Assignees

Comments

@jfingerh
Copy link
Collaborator

jfingerh commented Dec 2, 2021

Examples:

  • The new match kinds list and range_list
  • New keywords state_context and state_graph

To my knowledge, these are not supported by the latest open source P4 compiler and behavioral-model / BMv2 software switch.

Is there a plan to release an open source implementation of P4 compiler and BMv2 (or other software switch) that can compile these programs?

Or perhaps to release alternate versions of these P4 programs, perhaps ones mechanically translated from these into P4 that can be compiled and run on an open source P4-programmable software switch?

Or some other plan to enable others to run the reference code, in some way?

@jfingerh
Copy link
Collaborator Author

jfingerh commented Dec 2, 2021

@marian-pritsak Apologies for the ping, but to call attention to you the questions raised in this issue.

@chrispsommers
Copy link
Collaborator

@jfingerh Glad to have you onboard, thanks for filing this. Here are some similar comments I made on the original commit:e32f4c2#comments. Note also the P4-16 language spec says new match kinds must be specified in a model file, not "user" code.

@jfingerh
Copy link
Collaborator Author

jfingerh commented Dec 8, 2021

So my high level comment is: If we want to have a reference model to define the correct behavior of these data plane features, then what will running that reference model require?

  • only open source code that anyone with a Linux system can compile and execute?
  • a mix of open source code and proprietary binaries, but those binaries will be made available under a license that anyone can run them at no charge?
  • requires proprietary binaries with very restrictive and/or requires-paying-money to license?
  • something else?

For understanding the behavior of the reference model, debugging, etc., the first seems preferable. But perhaps this has already been discussed and I am behind on common understanding among the group here.

@chrispsommers
Copy link
Collaborator

Hi Andy, IMO you are posing exactly the right questions at the right time, you're not "behind." More like helping us move forward!

@jfingerh
Copy link
Collaborator Author

jfingerh commented Dec 8, 2021

Follow up note from the 2021-Dec-08 meeting: Mario Baldi plans to propose changes to the P4 code so that at least the connection tracking part of the code uses the proposed PNA techniques of writing the code, in a near-future pull request.

@jfingerh
Copy link
Collaborator Author

Follow up note from 2021-Jan-05 DASH test group meeting: Marian and/or others from NVIDIA opened up some code that could auto-generate some kind of APIs (SAI perhaps?) from their P4 code that has custom extensions. They also requested help in implementing the behavior for their custom extensions in open source code, e.g. in P4.org's bmv2 project.

@KrisNey-MSFT
Copy link
Collaborator

@jfingerh - shall we keep this issue open (based upon the follow-up note)? Or close? TY, Kristina

@jfingerh
Copy link
Collaborator Author

I am fine closing, or leaving open. I guess it depends on whether this issue is tracking the actual completion of an open source runnable reference model, or whether it is tracking "do we know what parts are missing to get there?"

KrisNey-MSFT pushed a commit that referenced this issue Mar 8, 2023
* committing outbound testcases

* committing outbound testcases (#12)

* pushing vnet hepler file to utils folder

* Added dependency

* Adding xfail with issue 236

* Addressed Anton comment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants