i've been kind of tempted to pick up something like a Pensando DSC-25 to experiment — they're pretty cool smartNICs/DPUs, and have a bunch of nice bits:
- 2x 25Gbps SFP28 slots
- hardware acceleration engines for crypto (AES? at 50Gbps), (de)compression, etc
- 4x Arm A72 cores clocked at 2.2GHz with 4GB of HBM (better than the CCR2004!)
- PCIe gen4 x16
- and possibly the most interesting part, P4 support!
for the uninitiated,
P4 is a language that lets you define specific behaviors for packet processing applications — you can specify how to parse headers, what actions to perform based on headers/lookup tables/meters/counters, and when/how to update meters and counters
this means it becomes (quite) easy to define your own processing for packets, and have it run at wire speed!
much of the hardware that P4 supports are beefy switches (like the Wedge 100BFs, which give you 32-65 100G ports) that suck down a correspondingly crazy amount of power, but these cards make actual high-performance P4 applications much more accessible to those who don't have free electricity
anyway, i've previously taken a module at ETHZ which had labs where you had to write P4 programs to do things — basic L2 Ethernet switching, rudimentary firewalls, L3 routing, etc — but I got a bit caught up with slacking off and other modules, and regretfully didn't put in as much effort into it as I should've
perhaps it's time to start experimenting with P4 a bit more again (once I clear my backlog of random projects...) — I can just do that with mininet or something though, at least until I manage to implement something interesting in software, like switching, routing with wirespeed NAT offload, and ACL offload
it'll probably never get to the same level of polish as a typical router, but if it actually works reliably, it would be pretty tempting to get a DSC-25 and try to run the whole shebang with a second broadband connection for shits and giggles