Understanding and Enhancing Linux Kernel-based Packet Switching on WiFi Access Points
<|reference_start|>Understanding and Enhancing Linux Kernel-based Packet Switching on WiFi Access Points: As the number of WiFi devices and their traffic demands continue to rise, the need for a scalable and high-performance wireless infrastructure becomes increasingly essential. Central to this infrastructure are WiFi Access Points (APs), which facilitate packet switching between Ethernet and WiFi interfaces. Despite APs' reliance on the Linux kernel's data plane for packet switching, the detailed operations and complexities of switching packets between Ethernet and WiFi interfaces have not been investigated in existing works. This paper makes the following contributions towards filling this research gap. Through macro and micro-analysis of empirical experiments, our study reveals insights in two distinct categories. Firstly, while the kernel's statistics offer valuable insights into system operations, we identify and discuss potential pitfalls that can severely affect system analysis. For instance, we reveal the implications of device drivers on the meaning and accuracy of the statistics related to packet-switching tasks and processor utilization. Secondly, we analyze the impact of the packet switching path and core configuration on performance and power consumption. Specifically, we identify the differences in Ethernet-to-WiFi and WiFi-to-Ethernet data paths regarding processing components, multi-core utilization, and energy efficiency. We show that the WiFi-to-Ethernet data path leverages better multi-core processing and exhibits lower power consumption.<|reference_end|>
@article{zhang2024understanding,
    title={Understanding and Enhancing Linux Kernel-based Packet Switching on WiFi
  Access Points},
    author={Shiqi Zhang, Mridul Gupta, and Behnam Dezfouli},
    journal={arXiv preprint arXiv:2408.01013},
    year={2024},
    number={SIOTLAB-SUM-31J2024},
    archivePrefix={arXiv},
    eprint={2408.01013},
    primaryClass={cs.NI cs.AR cs.OS cs.PF}
}