sonic-net / DASH

Disaggregated APIs for SONiC Hosts
Apache License 2.0
77 stars 88 forks source link

P4 DPDK on horizon; BMV2 #408

Open KrisNey-MSFT opened 11 months ago

KrisNey-MSFT commented 11 months ago

DPDK BE test/experiment The engineers who work on p4c-dpdk back end have been notified (and provided some of the details on the reasons for failure to load that I included in the issues). These issues are not their highest priority tasks, so not clear when they might be able to address them.

Compiles fine, needs to load into the software switch.

Just experimental, open source P4 BE DPDK code that produces the spec file (possible bug), but still low priority - feel free to check them out! How does P4C work???

Intel Eng not opposed to pursuing resolution of issues; need to check w/Reshma to see if issues will be fixed within a timeframe.

https://github.com/p4lang/p4c/tree/main/backends/dpdk https://github.com/p4lang/p4c/issues?q=is%3Aissue+is%3Aopen+label%3Adash-blocker

Usha Gupta is coordinating (GitHub ID) Ping Github id @usha1830 if you are interested in discussing those issues in more detail. This is Usha Gupta, Intel engineer who has developed most of the p4c-dpdk back end code. You can also ping me at @jafingerhut if I might be of help, but I'm more familiar with the symptoms than the p4c-dpdk back end C++ code.

KrisNey-MSFT commented 11 months ago

More update next week

usha1830 commented 9 months ago

@KrisNey-MSFT @reshmaintel The issues mentioned in https://github.com/p4lang/p4c/issues?q=is%3Aissue+is%3Aopen+label%3Adash-blocker are fixed and merged in p4c main branch. Please let me know if there are any further issues.

chrispsommers commented 9 months ago

Hi @jfingerh would you be able to try loading the compiled DASH p4 code into the updated p4-dpdk backend and see if it is happy?

jafingerhut commented 9 months ago

I have tried it with the version of DASH at the time I filed that issue in late March/early April, and there are no errors compiling that version, and no errors loading it into the P4-DPDK software switch.

I then tested compiling the latest version of DASH P4 code. It compiles with warnings (but no errors -- mostly warnings about unused parameters/fields/extern instances), but it gives errors when attempting to load into the P4-DPDK software switch. I have not root-caused it, but will pass on how to reproduce it to some Intel engineers who know how to do that more quickly than I do.

jafingerhut commented 9 months ago

I have created a new issue for p4c-dpdk to track this latest discovered "dash blocker": https://github.com/p4lang/p4c/issues/4156

I plan to use the "dash blocker" tag for any such issues, to make them easier to find: https://github.com/p4lang/p4c/issues?q=is%3Aissue+is%3Aopen+label%3Adash-blocker

KrisNey-MSFT commented 9 months ago

@jafingerhut - should we close this one, and continue work with 4156? Or keep this one open for tracking? TY, KrisNey-MSFT.

jafingerhut commented 9 months ago

If you want a DASH-specific place to track what is missing for DASH, it seems best to continue to have an issue in this repo for that purpose. It seems reasonable to continue to use this issue until P4-DPDK can pass a first packet through for whatever is at the time the current version of the DASH P4 reference code.

KrisNey-MSFT commented 9 months ago

Andy - issue with P4-DPDK backend. The code at [https://github.com/sonic-net/DASH/blob/main/dash-pipeline/bmv2/dash_service_tunnel.p4#L7-L24] which performs 128-bit masking on IPv6 addresses exposes a deficiency in p4-dpdk backend, it can't perform 128-bit math. Action - @jafingerhut will pursue it with the p4-dpdk team. He may also propose a workaround/compromise and file as an issue or PR.

jafingerhut commented 9 months ago

I will continue to mark issues that prevent P4-DPDK from being a sufficient software switch for DASH P4 reference code with a "dash-blocker" tag. Here is the current list (2 as of 2023-Sep-25): https://github.com/p4lang/p4c/issues?q=is%3Aissue+is%3Aopen+label%3Adash-blocker

There were also two issues last Friday, but over the weekend I closed one that was fixed, and opened another. This is the newest one, which to fix in the way I propose there would require changes in not only the p4c-dpdk compiler, but also in the support within the DPDK software switch for arithmetic operations on operands wider than 64 its: https://github.com/p4lang/p4c/issues/4174

I can talk to P4-DPDK developers about such an enhancement, but as usual, I do not have much knowledge yet of when such significant enhancements might be made.

KrisNey-MSFT commented 9 months ago

Per 9/27/2023 Community Call, Andy is going to lobby for these enhancements in P4 group.
Can check back another week or so.

KrisNey-MSFT commented 9 months ago

Same status, check next week

KrisNey-MSFT commented 7 months ago

Ping sent to Intel team

KrisNey-MSFT commented 5 months ago

@usha1830 fixed 1 issue, working on the 2nd.
Defined a header w/bit fields not multiples of 8, the P4 DPDK implementation was swapping these in the wire order of bits. Not DASH specific, but was likely fixed.

Current DASH P4 opers on 128bit - people at Intel know about this.

@ashutosh-agrawal discussing w/P4 DPDK C target team. Right now only support 64bit operation. Not the compiler, it's the target. 2 different components need to be fixed. DASH just needs bit-wise... and an or, sub and add, shift...etc...

KrisNey-MSFT commented 5 months ago

Waiting for Intel staff for answers to the above.

KrisNey-MSFT commented 5 months ago

Hi @ashutosh-agrawal and @usha1830 - I didn't see you in the call today. We were curious whether there is an update to this Issue? TY, Kristina

KrisNey-MSFT commented 4 months ago

Compiler and soft switch work. PRs pending...

KrisNey-MSFT commented 4 months ago

P4 DPDK will be faster, yet heavy lifting required to design

jafingerhut commented 4 months ago

An update from some experiments run in the last few days: I found additional issues that seem like they would block DASH using P4-DPDK. As far as I can tell, these are not issues with the p4c-dpdk P4 compiler, but with the P4Runtime API server implementation for P4-DPDK. I have filed these two public issues asking questions about the difficulties I have found:

chrispsommers commented 4 months ago

Hi Andy, thanks for exploring this and keeping us up to date!

KrisNey-MSFT commented 4 months ago

Interesting, thank you @Andy @.***>!

From: Andy Fingerhut @.> Sent: Sunday, February 25, 2024 4:19 PM To: sonic-net/DASH @.> Cc: Kristina Moore @.>; Mention @.> Subject: Re: [sonic-net/DASH] P4 DPDK on horizon; BMV2 (Issue #408)

An update from some experiments run in the last few days: I found additional issues that seem like they would block DASH using P4-DPDK. As far as I can tell, these are not issues with the p4c-dpdk P4 compiler, but with the P4Runtime API server implementation for P4-DPDK. I have filed these two public issues asking questions about the difficulties I have found:

- Reply to this email directly, view it on GitHubhttps://github.com/sonic-net/DASH/issues/408#issuecomment-1963097123, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AFJSI6HL45RYHUDFJQ6FLC3YVPBGZAVCNFSM6AAAAAA22NU6B6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRTGA4TOMJSGM. You are receiving this because you were mentioned.Message ID: @.**@.>>

KrisNey-MSFT commented 4 months ago

128 bit support - changes need to be picked up by Compiler team