Eiffel: Efficient and Flexible Software Packet Scheduling

by   Ahmed Saeed, et al.

Packet scheduling determines the ordering of packets in a queuing data structure with respect to some ranking function that is mandated by a scheduling policy. It is the core component in many recent innovations to optimize network performance and utilization. Our focus in this paper is on the design and deployment of packet scheduling in software. Software schedulers have several advantages over hardware including shorter development cycle and flexibility in functionality and deployment location. We substantially improve current software packet scheduling performance, while maintaining flexibility, by exploiting underlying features of packet ranking; namely, packet ranks are integers and, at any point in time, fall within a limited range of values. We introduce Eiffel, a novel programmable packet scheduling system. At the core of Eiffel is an integer priority queue based on the Find First Set (FFS) instruction and designed to support a wide range of policies and ranking functions efficiently. As an even more efficient alternative, we also propose a new approximate priority queue that can outperform FFS-based queues for some scenarios. To support flexibility, Eiffel introduces novel programming abstractions to express scheduling policies that cannot be captured by current, state-of-the-art scheduler programming models. We evaluate Eiffel in a variety of settings and in both kernel and userspace deployments. We show that it outperforms state of the art systems by 3-40x in terms of either number of cores utilized for network processing or number of flows given fixed processing capacity.


page 1

page 2

page 3

page 4


Everything Matters in Programmable Packet Scheduling

Programmable packet scheduling allows the deployment of scheduling algor...

Formal Abstractions for Packet Scheduling

This paper studies PIFO trees from a programming language perspective. P...

RIFO: Pushing the Efficiency of Programmable Packet Schedulers

Packet scheduling is a fundamental networking task that recently receive...

FlexState: Enabling Innovation in Network Function State Management

Network function (NF) developers need to provide highly available soluti...

Providing In-network Support to Coflow Scheduling

Many emerging distributed applications, including big data analytics, ge...

Clippy(ing) Network Functions: Towards Better Abstractions for Checking and Designing Network Programs

When programming network functions, changes within a packet tend to have...

Agile Development of Linux Schedulers with Ekiben

Kernel task scheduling is important for application performance, adaptab...

Please sign up or login with your details

Forgot password? Click here to reset