Buffering



next up previous
Next: MPP Portability Up: Implementation Previous: Reliability

Buffering

Buffering is often the cause of large delays in network computing. There are two reasons for such delays. The first is that the data from the network is not processed immediately upon reception. The data is read from the device and held in kernel space until the user's process issues a read trap. The second reason stems from the problems of guaranteed data delivery. Any process using an unreliable transport must maintain a copy of the outgoing packet until an acknowledgement is received. Current implementations of AM over LANs solve these problems by and by preallocating packet buffers of maximum permissible size on the device itself. It is left to the user, to fragment and order the data accordingly. This strategy places a fairly large burden upon the user. The transport chosen for an AM layer may allow an unlimited packet length but still not guarantee delivery. A true solution to this problem does not currently exist. The only option the implementer has in this situation is to provide the user with a call to specify the maximum buffer size before any communication is allowed. Dynamic memory allocation upon message reception would introduce too much overhead.



Jack Dongarra
Tue Feb 7 21:45:39 EST 1995