Check out the new USENIX Web site. next up previous
Next: HTTP Header-based Controls Up: Architecture Design Previous: SYN Policer

Prioritized Listen Queue

The prioritized listen queue reorders the listen queue of a server process based on pre-defined connection priorities such that the highest priority connection is located at the head of the queue. The priorities are associated with filters (see Table 2) and connections are classified into different {\em priority classes}. When a TCP connection is established, it is moved from the partial listen queue to the listen queue. We insert the socket at the position corresponding to its priority in the listen queue. Since the server process always removes the head of the listen queue when calling {\ttfamily accept}, this approach provides better service, i.e. lower delay and higher throughput, to connections with higher priority.

{\figurename}: {\dimen0=\fontdimen6\the\font
\lineskip=1\dimen0
\advance\lineskip.5\fontdimen...
...kip\baselineskip
\ignorespaces
Implementation of the prioritized listen queue}
\begin{figure}
\begin{center}
\epsfig {file=figures/prio_impl.eps, width=0.5\textwidth}\end{center}\end{figure}

Figure 2 shows the implementation of a prioritized listen queue. A special data structure used for maintaining socket QoS attributes stores an array of {\em priority pointers}. Each priority pointer points to the {\em last} socket of the corresponding priority class. This allows efficient socket insertion -- a new socket is always inserted behind the one pointed to by the corresponding priority pointer.


next up previous
Next: HTTP Header-based Controls Up: Architecture Design Previous: SYN Policer
Renu Tewari
2001-05-01