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]]
-=-=-=-=-=-=-=-=-=-=-=-