Browse Prior Art Database

Method for protocol header splitting via multiple buffer descriptors Disclosure Number: IPCOM000008437D
Publication Date: 2002-Jun-13
Document File: 3 page(s) / 37K

Publishing Venue

The Prior Art Database


Disclosed is a method for protocol header splitting via multiple buffer descriptors. Benefits include improved functionality and improved performance.

This text was extracted from a Microsoft Word document.
This is the abbreviated version, containing approximately 40% of the total text.

Method for protocol header splitting via multiple buffer descriptors

Disclosed is a method for protocol header splitting via multiple buffer descriptors.  Benefits include improved functionality and improved performance.


              The concept of header splitting is becoming a common networking practice that enables all of the protocol headers to be placed in a separate buffer from the payload data associated with them. This approach enables the protocol stack within the operating system to process the headers without having to process the actual data of the packet. The hardware must calculate the protocol checksum on the payload to prevent the protocol stack from touching the data.

              Conventional network adapters implement descriptor-ring architecture. On the receive side of this architecture, the descriptors describe buffers that can hold an entire Ethernet frame. With the use of jumbo frames, multiple descriptors are required to hold the entire frame description. This requirement creates problems within the stack as protocol headers are processed. When all of the protocol headers are removed from the frame, the remaining payload data is typically unaligned data that must be copied out of kernel space and into user space for an application to use. This task is typically done by copying the payload data into application buffers that are posted via a socket read call from the application. This procedure incurs a data copy from kernel space to user space.

              Page flipping is a technique where a page mapped in user space is remapped out of user space and into the kernel and is replaced by a page that was originally mapped in kernel space. This procedure eliminates the need for a copy of the data to user space just by manipulating the mapping of virtual memory within the system. The disclosed method is predicated on the operating system having support for such a feature.

              The conventional gigabit Ethernet controller descriptor points to a single buffer into which the received data is placed (see Figure 1). The buffer that this descriptor describes is typically 2-KB in size. It is large enough for an entire Ethernet frame of 1518 bytes. For jumbo frames, multiple descriptors must be used or special buffers must be allocated to accept the entire frame. These special buffers can be problematic for the OS because creating contiguous buffers across virtual memory pages is difficult. These buffers are very limited resources within the kernel memory space.

General description

              The disclosed method enables the protocol headers of incoming Ethernet packets to be stripped away from the payload data and aligning it in special ways. The most common alignment would be by page boundary. Then, the buffer can be page flipped out of kernel memory and into user space, avoiding copying the payload data out of the kernel into user space memory.

              Payload alignment is achieved by the use of a descriptor that describes multiple buffers that can have special characteristics to...