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

Info about open source software switches and the architectures they implement #67

Open
jfingerh opened this issue Oct 27, 2022 · 0 comments

Comments

@jfingerh
Copy link
Contributor

jfingerh commented Oct 27, 2022

This is an informational issue on this repository, intended to be left open for as long as it is useful, and for sending people a link to when they want to know about this topic. Feel free to edit this comment as new information comes to light. This should be up to date as of 2023-Mar (originally written 2022-Oct).

BMv2:

  • v1model architecture
    • simple_switch or simple_switch_grpc - These implement only the v1model architecture. The only difference between simple_switch and simple_switch_grpc processes is that simple_switch_grpc implements a P4Runtime API server, but simple_switch does not.
  • PSA architecture
    • psa_switch - This is a very partial implementation of the PSA architecture. It is not complete, and the implementation of the p4c back end for PSA is also incomplete.
  • PNA architecture
    • I am not aware of anyone that has done any work towards implementing PNA on BMv2, unless you consider a public forked version of the BMv2 code intended to be used only as a software switch for testing purposes for the DASH project (https://github.com/Azure/DASH), being developed by some engineers at NVIDIA. I believe they have said they do not have plans to merge these changes into the p4lang/behavioral-model repo, perhaps because they consider the changes perhaps not complete enough for that purpose.

DPDK:

  • v1model architecture
    • v1model is not implemented on DPDK today. I am not aware that anyone has plans to implement v1model on DPDK.
  • PSA architecture
    • implementation is something around 80% complete (as compared to what has been defined so far for PSA as of 2023-Mar), depending upon how you weight features. One way in which it is partial is that it only implements ingress, with no implementation of a packet buffer (aka traffic manager), and no implementation of egress.
  • PNA architecture
    • implementation that is something around 80% complete. Given that exactly what is implemented vs. what is not is probably changing on a monthly basis, this is definitely an area where it would be good to give a more detailed list of what is implemented and tested working, vs. what is not yet implemented.
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

2 participants