Browse Prior Art Database

Advanced Header Splitting Buffer Management

IP.com Disclosure Number: IPCOM000008840D
Publication Date: 2002-Jul-17
Document File: 3 page(s) / 31K

Publishing Venue

The IP.com Prior Art Database

Abstract

Disclosed is a method that enables an I/O controller to determine buffer usage based on packet size. The disclosed method also minimizes the use of oversized receive buffers to handle minimal amounts of traffic. Benefits include better memory management and less buffer waste.

This text was extracted from a Microsoft Word document.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 50% of the total text.

Advanced Header Splitting Buffer Management

Disclosed is a method that enables an I/O controller to determine buffer usage based on packet size. The disclosed method also minimizes the use of oversized receive buffers to handle minimal amounts of traffic. Benefits include better memory management and less buffer waste.

Background

Typical network adapters on the market today use a descriptor ring architecture. A descriptor is made up of multiple fields, one of which is a buffer address. Transmitted data is read from this buffer address by an I/O controller. Received data is written into this buffer address. For packet reception, these buffers are requested by software device drivers—supplied by the network operating systems—and placed into receive descriptors. Once the device driver indicates to the I/O controller that its receive descriptor is ready for use, the I/O controller fetches the entire receive descriptor. When a packet is received off the wire by the I/O controller, it knows where to DMA the data by looking at the buffer address supplied within the receive descriptor. Ideally, receive buffer should be large enough to handle an incoming packet.

One problem with this architecture is the device driver must know the maximum size of an incoming packet. For typical networks, the Maximum Transmission Unit (MTU) is 1518 bytes.  Memory is defined in terms of pages, where a page consists of 4096 bytes. Requesting 1518 byte buffers leads to the allocation of two buffers per page. This in turn leads to fragmented memory. Fragmented memory leads to smaller contiguous blocks of data buffers and more latency involved in storing or retrieving data from memory. Memory can become so fragmented, that the operating system simply hangs. For better memory management purposes, device drivers typically request 2048 byte buffers, which work out to be exactly two buffers per page. However, this means that a minimum sized receive packet of 64 bytes is inefficiently placed into a 2K buffer.

General Description

The disclosed method does not use the current receive descriptor ring architecture; instead, it instructs the device driver to provide receive buffers of multiple sizes to the I/O controller. This allows t...