High-performance packet processing is essential for modern networking, and eXpress Data Path (XDP) has become a key technology for accelerating packet handling in Linux. This thesis contributes to OpenNIC, an open-source FPGA-based Network Interface Card (NIC) with powerful offload and programmability capabilities, by enhancing network stack programmability through the integration of native support for XDP, a in-kernel eBPF hook for processing Ethernet frames in the driver, at earliest possible time. This work has also changed the memory model to Page Pool, a memory allocator tailored for the network subsystem, which has significantly improved performance, achieving up to a 200\% increase in single-flow TCP throughput while also future-proofing the driver codebase for forthcoming enhancements in the kernel memory subsystem. Full stack programmability is achieved by the AF_XDP support, a userspace packet processing framework natively supported by the kernel that is built on top of XDP and specialized driver support. Performance evaluation demonstrates that XDP_DROP achieves 50–80 million packets per second (Mpps) depending on packet access patterns, while XDP_TX and XDP_REDIRECT reach 30 Mpps and 37 Mpps, respectively. AF_XDP benchmarks show a peak drop rate of 50 Mpps and an L2 forwarding rate of 40 Mpps. By enabling both hardware offload within the NIC and software offload with XDP and AF_XDP, OpenNIC provides a flexible research platform for exploring hybrid packet processing strategies. This work establishes a foundation for future innovations in open-source NIC development and high-performance networking.

L'elaborazione dei pacchetti ad alte prestazioni è essenziale per il networking moderno ed eXpress Data Path (XDP) è diventata una tecnologia chiave per accelerare la gestione dei pacchetti in Linux. Questa tesi contribuisce a OpenNIC, una scheda di interfaccia di rete (NIC) open-source basata su FPGA con potenti capacità di offload e programmabilità, migliorando la programmabilità dello stack di rete attraverso l'integrazione del supporto nativo per XDP, un hook eBPF all'interno del kernel per l'elaborazione dei frame Ethernet nel driver, il prima possibile. Questo lavoro ha anche cambiato la gestione della memoria, introducendo al driver Page Pool, un allocatore di memoria pensato per il sottosistema di rete, che ha migliorato significativamente le prestazioni, ottenendo un aumento fino al 200\% del throughput TCP a flusso singolo e rendendo il codice del driver a prova di futuro per i prossimi miglioramenti del sottosistema di memoria del kernel. La programmabilità dell'intero stack è ottenuta grazie al supporto AF_XDP, un framework per l'elaborazione dei pacchetti nello spazio utente supportato dal kernel e costruito sulla base di XDP e che richiede supporto specializzato nel driver. La valutazione delle prestazioni dimostra che XDP_DROP raggiunge 50-80 milioni di pacchetti al secondo (Mpps) a seconda dei pattern di accesso ai pacchetti, mentre XDP_TX e XDP_REDIRECT raggiungono rispettivamente 30 Mpps e 37 Mpps. I benchmark AF_XDP mostrano un tasso di drop dei pacchetti di 50 Mpps e un tasso di inoltro L2 di 40 Mpps. Consentendo sia l'offload hardware all'interno della NIC che l'offload software con XDP e AF_XDP, OpenNIC fornisce una piattaforma di ricerca flessibile per esplorare strategie ibride di elaborazione dei pacchetti. Questo lavoro pone le basi per future innovazioni nello sviluppo di NIC open-source e di reti ad alte prestazioni.

Driver support for programmable end-host networking

Molè, Marco
2023/2024

Abstract

High-performance packet processing is essential for modern networking, and eXpress Data Path (XDP) has become a key technology for accelerating packet handling in Linux. This thesis contributes to OpenNIC, an open-source FPGA-based Network Interface Card (NIC) with powerful offload and programmability capabilities, by enhancing network stack programmability through the integration of native support for XDP, a in-kernel eBPF hook for processing Ethernet frames in the driver, at earliest possible time. This work has also changed the memory model to Page Pool, a memory allocator tailored for the network subsystem, which has significantly improved performance, achieving up to a 200\% increase in single-flow TCP throughput while also future-proofing the driver codebase for forthcoming enhancements in the kernel memory subsystem. Full stack programmability is achieved by the AF_XDP support, a userspace packet processing framework natively supported by the kernel that is built on top of XDP and specialized driver support. Performance evaluation demonstrates that XDP_DROP achieves 50–80 million packets per second (Mpps) depending on packet access patterns, while XDP_TX and XDP_REDIRECT reach 30 Mpps and 37 Mpps, respectively. AF_XDP benchmarks show a peak drop rate of 50 Mpps and an L2 forwarding rate of 40 Mpps. By enabling both hardware offload within the NIC and software offload with XDP and AF_XDP, OpenNIC provides a flexible research platform for exploring hybrid packet processing strategies. This work establishes a foundation for future innovations in open-source NIC development and high-performance networking.
SHAHINFAR, FARBOD
ING - Scuola di Ingegneria Industriale e dell'Informazione
3-apr-2025
2023/2024
L'elaborazione dei pacchetti ad alte prestazioni è essenziale per il networking moderno ed eXpress Data Path (XDP) è diventata una tecnologia chiave per accelerare la gestione dei pacchetti in Linux. Questa tesi contribuisce a OpenNIC, una scheda di interfaccia di rete (NIC) open-source basata su FPGA con potenti capacità di offload e programmabilità, migliorando la programmabilità dello stack di rete attraverso l'integrazione del supporto nativo per XDP, un hook eBPF all'interno del kernel per l'elaborazione dei frame Ethernet nel driver, il prima possibile. Questo lavoro ha anche cambiato la gestione della memoria, introducendo al driver Page Pool, un allocatore di memoria pensato per il sottosistema di rete, che ha migliorato significativamente le prestazioni, ottenendo un aumento fino al 200\% del throughput TCP a flusso singolo e rendendo il codice del driver a prova di futuro per i prossimi miglioramenti del sottosistema di memoria del kernel. La programmabilità dell'intero stack è ottenuta grazie al supporto AF_XDP, un framework per l'elaborazione dei pacchetti nello spazio utente supportato dal kernel e costruito sulla base di XDP e che richiede supporto specializzato nel driver. La valutazione delle prestazioni dimostra che XDP_DROP raggiunge 50-80 milioni di pacchetti al secondo (Mpps) a seconda dei pattern di accesso ai pacchetti, mentre XDP_TX e XDP_REDIRECT raggiungono rispettivamente 30 Mpps e 37 Mpps. I benchmark AF_XDP mostrano un tasso di drop dei pacchetti di 50 Mpps e un tasso di inoltro L2 di 40 Mpps. Consentendo sia l'offload hardware all'interno della NIC che l'offload software con XDP e AF_XDP, OpenNIC fornisce una piattaforma di ricerca flessibile per esplorare strategie ibride di elaborazione dei pacchetti. Questo lavoro pone le basi per future innovazioni nello sviluppo di NIC open-source e di reti ad alte prestazioni.
File allegati
File Dimensione Formato  
2025_4_Mole.pdf

accessibile in internet per tutti

Descrizione: Tesi
Dimensione 2.13 MB
Formato Adobe PDF
2.13 MB Adobe PDF Visualizza/Apri
2025_4_Mole_01.pdf

accessibile in internet per tutti

Descrizione: Executive Summary
Dimensione 552.04 kB
Formato Adobe PDF
552.04 kB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/235657