Rust async for thread-per-core packet processing

University essay from Linköpings universitet/Institutionen för datavetenskap

Author: Josef Olsson; Isak Stenström; [2023]

Keywords: ;

Abstract: When building a packet processing system, it is common to use frameworks that are written in C and built upon DPDK Eventdev, which is what Ericsson AB currently uses. However, using Rust async for this task could improve the developer experience and efficiency. This thesis explores the use of Rust async for creating reliable packet processing systems by implementing Rust Packet Processing Performance Prototype (RPPPP), which uses the Rust async runtime Glommio. RPPPP was implemented with support for using both centralized and decentralized scheduling. Two applications, that closely mirror the functionality of two existing DPDK Eventdev programs, were developed using RPPPP. One of the existing programs is a public DPDK Eventdev example application that uses a centralized scheduler, and the other is an internal Ericsson benchmarking application that uses a decentralized scheduler. The performance of DPDK and RPPPP was compared by evaluating the performance of all four applications for different core counts. The results show that the Rust application with the decentralized scheduler has a throughput that is between 20% and 50% of its DPDK counterpart, while its latency is far worse. The Rust application with a centralized scheduler performs significantly worse than any of the other applications when using more than 4 cores, both in terms of throughput and latency, but this is deemed to not be the true potential of the performance of this approach. Though not fully conclusive, the result of this thesis indicates that using Rust async for packet processing systems is currently not a viable approach.

  AT THIS PAGE YOU CAN DOWNLOAD THE WHOLE ESSAY. (follow the link to the next page)