Hoi,

No problem, since Ian and co have an out of tree plugin they use, they can likely fold this functionality into that one too, and not pollute the soft-rss plugin. I've abandoned the gerrit.

groet,
Pim

On 05.05.2026 15:25, Damjan Marion via lists.fd.io wrote:
Hi Pim,

your patch degrades performance of it’s primary use case which is emulating 
exact NIC behavior, same behavior
you don’t like.

Do you really need slow, cpu intensive toeplitz calculation for your use case?
Why not building dedicated code for that usecase which leverages much faster 
hardware crc32c?

—
Damjan


On 30.04.2026., at 19:52, Pim van Pelt via lists.fd.io 
<[email protected]> wrote:

Hoi folks,

I bumped into my buddy Ian who is using VPP as a BNG for PPPoE sessions. He 
explained that his NICs are not able to supply RSS for the PPPoE traffic, which 
means in his case that all PPPoE sessions hash to a single Rx queue, making VPP 
essentially single-threaded. We chatted about Soft RSS, but upon closer 
inspection, it makes an implicit assumption that the L2 ethertype is offset at 
N bytes from the start of the frame, and the only two supported types are IPv4 
0x0800 and IPv6 0x86DD. This means that PPPoE, ethertype 0x8864, cannot be used 
with Soft RSS plugin.

I've made a small change that allows the operator to specify precisely where 
the IP header will start, using the first nybble there to determine if IPv4 of 
IPv6 header follows, see https://gerrit.fd.io/r/c/vpp/+/45595

Now, PPPoE traffic can be configured using:
soft-rss config TenGitabitEthernet10/0/0 type 4-tuple ip-offset 30 threads 16-19

This will capture the IP header at offset 30:
SRC-MAC(6)/DST-MAC(6)/OUTER-VLAN(4)/INNER-VLAN(4)/ETHERTYPE(2)/PPPoE-HEADER(6)/PPP-ID(2)/IP-HEADER

I spent some time today with Ian to validate that with this patch, he can 
indeed funnel PPPoE sessions to any number of workers, raising throughput from 
~5Mpps in a single threaded setup, to 30Mpps (the limit that one Rx queue + 
SoftRSS offload can provide), which is a huge improvement.

Please take a look at https://gerrit.fd.io/r/c/vpp/+/45595 which also adds an 
API and a few Python tests for SoftRSS taking PPPoE as an example case.





--
Pim van Pelt <[email protected]>
PBVP1-RIPE https://ipng.ch/


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#27010): https://lists.fd.io/g/vpp-dev/message/27010
Mute This Topic: https://lists.fd.io/mt/119085845/21656
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/14379924/21656/631435203/xyzzy 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to