[dpdk-dev] [PATCH v3 0/4] LACP control packet filtering acceleration
Ferruh Yigit
ferruh.yigit at intel.com
Wed Jul 5 13:35:39 CEST 2017
On 7/4/2017 5:46 PM, Declan Doherty wrote:
> 1. Overview
>
> Packet processing in the current path for bonding in mode 4, requires
> parse all packets in the fast path, to classify and process LACP
> packets.
>
> The idea of performance improvement is to use hardware offloads to
> improve packet classification.
>
> 2. Scope of work
>
> a) Optimization of software LACP packet classification by using
> packet_type metadata to eliminate the requirement of parsing each
> packet in the received burst.
>
> b) Implementation of classification mechanism using flow director to
> redirect LACP packets to the dedicated queue (not visible by
> application).
>
> - Filter pattern choosing (not all filters are supported by all
> devices),
> - Changing processing path to speed up non-LACP packets
> processing,
> - Handle LACP packets from dedicated Rx queue and send to the
> dedicated Tx queue,
>
> c) Creation of fallback mechanism allowing to select the most
> preferable method of processing:
>
> - Flow director,
> - Packet type metadata,
> - Software parsing,
>
> 3. Implementation
>
> 3.1. Packet type
>
> The packet_type approach would result in a performance improvement
> as packets data would no longer be required to be read, but with this
> approach the bonded driver would still need to look at the mbuf of
> each packet thereby having an impact on the achievable Rx
> performance.
>
> There's not packet_type value describing LACP packets directly.
> However, it can be used to limit number of packets required to be
> parsed, e.g. if packet_type indicates >L2 packets.
>
> It should improve performance while well-known non-LACP packets can
> be skipped without the need to look up into its data.
>
> 3.2. Flow director
>
> Using rte_flow API and pattern on ethernet type of packet (0x8809),
> we can configure flow director to redirect slow packets to separated
> queue.
>
> An independent Rx queues for LACP would remove the requirement to
> filter all ingress traffic in sw which should result in a performance
> increase. Other queues stay untouched and processing of packets on
> the fast path will be reduced to simple packet collecting from
> slaves.
>
> Separated Tx queue for LACP daemon allows to send LACP responses
> immediately, without interfering into Tx fast path.
>
> RECEIVE
>
> .---------------.
> | Slave 0 |
> | .------. |
> | Fd | Rxq | |
> Rx ======o==>| |==============.
> | | +======+ | | .---------------.
> | `-->| LACP |--------. | | Bonding |
> | `------' | | | | .------. |
> `---------------' | | | | | |
> | >============>| |=======> Rx
> .---------------. | | | +======+ |
> | Slave 1 | | | | | XXXX | |
> | .------. | | | | `------' |
> | Fd | Rxq | | | | `---------------'
> Rx ======o==>| |==============' .-----------.
> | | +======+ | | / \
> | `-->| LACP |--------+----------->+ LACP DAEMON |
> | `------' | Tx <---\ /
> `---------------' `-----------'
>
> All slow packets received by slaves in bonding are redirected to the
> separated queue using flow director. Other packets are collected from
> slaves and exposed to the application with Rx burst on bonded device.
>
> TRANSMIT
>
> .---------------.
> | Slave 0 |
> | .------. |
> | | | |
> Tx <=====+===| |<=============.
> | | |------| | | .---------------.
> | `---| LACP |<-------. | | Bonding |
> | `------' | | | | .------. |
> `---------------' | | | | | |
> | +<============| |<====== Tx
> .---------------. | | | +======+ |
> | Slave 1 | | | | | XXXX | |
> | .------. | | | | `------' |
> | | | | | | `---------------'
> Tx <=====+===| |<=============' Rx .-----------.
> | | |------| | | `-->/ \
> | `---| LACP |<-------+------------+ LACP DAEMON |
> | `------' | \ /
> `---------------' `-----------'
>
> On transmit, packets are propagated on the slaves. While we have
> separated Tx queue for LACP responses, it can be sent regardless of
> the fast path.
>
> LACP DAEMON
>
> In this mode whole slow packets are handled in LACP DAEMON.
>
> V3:
> - Split hw filtering patch into 3 patches:
> - fix for calculating maximum number of tx/rx queues of bonding device
> - enable use of ptype hint for filtering of control plane packets in
> default enablement
> - enablement of dedicated queues for LACP control packet filtering.
>
> Declan Doherty (1):
> net/bond: calculate number of bonding tx/rx queues
>
> Tomasz Kulasek (3):
> net/bond: use ptype flags for LACP rx filtering
> net/bond: dedicated hw queues for LACP control traffic
> app/test-pmd: add cmd for dedicated LACP rx/tx queues
Series applied to dpdk-next-net/master, thanks.
(minor updates, mentioned in mail thread, done while applying.)
More information about the dev
mailing list