Abstract
From arranging vacations to making appointments, we are constantly scheduling activities. A busy router is no exception. Routers must schedule the handling of routing updates, management queries, and, of course, data packets. Data packets must be scheduled in real time by the forwarding processors within each line card. This chapter concentrates on the efficient scheduling of data packets, while allowing certain classes of data packets to receive different service from other classes. Since this book concentrates on implementation bottlenecks, this chapter focuses on packet scheduling. We will briefly examine the motivation for some popular scheduling choices. More importantly, we will use our principles to look for efficient implementations. Since packet scheduling is done in the real-time path, as is switching and lookup, it is crucial that scheduling decisions can be made in the minimum interpacket times because links scale to OC-768 (40-gigabit) speeds and higher. This chapter is organized as follows. Section 14.1 presents the motivation for providing QoS guarantees. Section 14.2 describes random early detection (RED) schemes, which are better suited to TCP congestion control than tail-drop. Section 14.3 describes a fair queueing technique called Approximate Fair Dropping (AFD) that has a similarly low time complexity as RED, yet a similarly good QoS guarantee as Deficit Round Robin. Section 14.4 offers a simple scheme to limit the bandwidth and burstiness of a flow, and Section 14.5 describes a basic priority scheme. Section 14.6 provides a brief introduction to reservation protocols. Section 14.7 presents simple techniques to apportion the available link bandwidth among competing flows. The section also briefly describes how the accompanying reservations for flow bandwidths can be made. Section 14.8 provides an introduction to how one can provide good delay guarantees for a flow, at the cost of sorting packet deadlines in real time. Sections 14.9 through Section 14.14 begin a technical description of how to ensure both delay bounds and fairness, culminating in Quick Fair Queuing that is implemented in the Linux kernel. These sections can be skipped by more practical readers who may want to skip to Section 14.14. Section 14.9 introduces generalized processor sharing (GPS), the fairest possible scheduling policy. Although the GPS policy is not practically implementable, a key component of it called GPS clock tracking is. This implementation is described in Section 14.12. GPS clock tracking lies at the heart of implementing weighted fair queueing (WFQ) and worst-case fair weighted-fair queueing (WF2Q), two practically implementable packet scheduling policies that are almost as fair as GPS. They are described in Section 14.10 and Section 14.11, respectively. Section 14.14 describes Quick Fair Queuing (QFQ), a packet scheduling algorithm that provides a QoS guarantee similar to WF2Q, yet has an implementation complexity comparable to DRR. Finally, Section 14.15 describes two research proposals towards making packet scheduling programmable in switches and routers: PIFO in Section 14.15.1 and UPS in Section 14.15.2. Section 14.16 describe several scalable schedulers that are able to schedule a large number of flows with little or no state.
Published Version
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have