Browse Prior Art Database

Memory Refresh Schemes For Transmission Control Protocol/Internet Protocol

IP.com Disclosure Number: IPCOM000115431D
Original Publication Date: 1995-May-01
Included in the Prior Art Database: 2005-Mar-30
Document File: 2 page(s) / 73K

Publishing Venue

IBM

Related People

McIntyre, MS: AUTHOR [+4]

Abstract

In certain implementations of the Transmission Control Protocol/ Internet Protocol (TCP/IP) protocol, "mbufs" are used for memory management. A pool of mbufs is allocated at the time of system initialization and the pool is replinished as and when required, using a non-interrupt thread. Whenever an IP datagram is received by a MAC adapter, the TCP/IP protocol device driver is interrupted. The protocol driver then copies the IP datagram onto an mbuf from the adapter buffer. However, upon interrupt, if sufficient number of mbufs is not available, then the IP datagrams are discarded in the protocol driver. As a result, the sender, if using the TCP protocol, will retry sending the packets again which uses the network bandwidth unnecessarily.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Memory Refresh Schemes For Transmission Control Protocol/Internet
Protocol

      In certain implementations of the Transmission Control
Protocol/ Internet Protocol (TCP/IP) protocol, "mbufs" are used for
memory management.  A pool of mbufs is allocated at the time of
system initialization and the pool is replinished as and when
required, using a non-interrupt thread.  Whenever an IP datagram is
received by a MAC adapter, the TCP/IP protocol device driver is
interrupted.  The protocol driver then copies the IP datagram onto an
mbuf from the adapter buffer.  However, upon interrupt, if sufficient
number of mbufs is not available, then the IP datagrams are discarded
in the protocol driver.  As a result, the sender, if using the TCP
protocol, will retry sending the packets again which uses the network
bandwidth unnecessarily.  The mbuf pool cannot be replenished at this
time since the memory clusters cannot be acquired from the operating
system using an interrupt thread.  Hence in the absence of a "good"
mechanism for refreshing memory, IP datagrams could get trashed
constantly despite the system having adequate memory.

      The problem of discarding the IP datagrams stems from the fact
that the mbufs are replenished only on the "outbound" threads (user
threads).  Since the IP datagrams are received by the protocol driver
on an interrupt thread, such a scheme fails to acquire more mbufs on
inbound data.  We present two solutions for solving this problem.
One solution is based on using a timer thread and the other using a
separate thread which is activated when required.

      Solution #1: The basis of this solution is the use of a timer
thread in the protocol drivers to replenish mbufs, if the number of
free mbufs is below a particular threshold.  This memory refresh
thread gets dispatched at short intervals of time such as 200 msecs.
When it becomes ac...