Check out the new USENIX Web site. next up previous
Next: Architecture Design Up: Kernel Mechanisms for Service Previous: Introduction


Input Packet Processing: Background

In this section we briefly describe the protocol processing steps executed when a new connection request is processed by a web server. When the device interface receives a packet it triggers a hardware interrupt that is serviced by the corresponding device driver [11]. The device driver copies the received packet into an {\ttfamily mbuf} and de-multiplexes it to determine the queue to insert the packet. For example, an IP packet is added to the input queue, {\ttfamily ipintrq}. The device driver then triggers the IP software interrupt. The IP input routine dequeues the packet from the IP input queue and does the next layer demultiplexing to invoke the transport layer input routine. For example, for a TCP packet this will result in a call to a {\ttfamily tcp\_input} routine for further processing. The call to the transport layer input routine happens within the realm of the IP input call, i.e., there is no queuing between the IP and TCP layer. The TCP input processing verifies the packet and locates the protocol control block (PCB). If the incoming packet is a SYN request for a listen socket, a new data socket is created and placed in the partial listen queue and an ACK is sent back to the client. When the ACK for the SYN-ACK is received the TCP 3-way handshake is complete, the connection moves to an established state and the data socket is moved to the listen queue. The sleeping process, e.g., the web server, waiting on the {\ttfamily accept} call is woken up. The connection is ready to receive data.


next up previous
Next: Architecture Design Up: Kernel Mechanisms for Service Previous: Introduction
Renu Tewari
2001-05-01