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.
groet,
Pim
--
Pim van Pelt <[email protected]>
PBVP1-RIPE https://ipng.ch/
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#27003): https://lists.fd.io/g/vpp-dev/message/27003
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]]
-=-=-=-=-=-=-=-=-=-=-=-