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

BYO (Bring-Your-Own) data plane app HLD #464

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

r12f
Copy link
Collaborator

@r12f r12f commented Nov 17, 2023

Motivation

By default, DASH technology providers will provide their own data plane app. This is usually closed source and can satisfy the DASH community requirement. However, in some cases, DASH users might want to use their own data plane app due to some reasons, such as: private protocol support or support special logic in packet handling that is not supported by DASH technology providers. In this case, you can enable DASH BYO data plane app.

For example:

Change Summary

This change adds the HLD for how to enable BYO data plane app and how the high level architecture looks like.

Future works

Some cases might also require to run both data plane app side by side as hybrid mode. The design will come later.

After initialization, the data plane app will be able to:

- Receive/Send packets from/to netdev
- Use SAI API to program the ASIC
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be fair to say that using SAI APIs to program the ASIC would be optional? The existing SAI apis for flow management may or may not work for a custom data plane, so a BYO data plane may want to use low-level ASIC SDK APIs to manage ASIC tables.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Ashutosh, since the BYO data plane is essentially the customer's own implementation, so they could use the platform-dependent APIs or SAI for building the data plane. However, using SAI will give them the advantage of building platform independent applications.

Here, since the behavior of the platform-dependent APIs are not under control of SAI, so they are not included in the doc. And if there are more valid flow actions, we can also make SAI flow APIs supports it as well. The process should be similar as how SAI is working today. :D

Also sorry for the late reply. Just came back from vacation.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have updated the doc with more details and also have this ability noted in the doc too.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the difference between this SAI api vs rte flow api used by DPDK app for hareware flow offloading?


Even further, these 2 sources sometimes might need to work together in certain scenarios. For example, when a VNET mapping is updated, we need to update the VNET mapping entry as well as triggering flow resimulation to update all the flow entries that are related to this VNET mapping.

Hence we need a design to avoid the same set of SAI APIs being called in 2 different processes accidentally and causing problems, such as managing the stage entries, as the last caller will overwrite the ASIC state without any synchronization and knowledge from the other side.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this can be resolved by capability query and enabling only one path for certain set of APIs.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea, will update the doc and remove the proxy, which is actually my first version of design: https://github.com/r12f/DASH/blob/9d3c8ec2d9bc255ca72328cdce24a7fe9a037ac5/documentation/dataplane/dash-byo-data-plane-app.md.

XD

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

Successfully merging this pull request may close these issues.

5 participants