Described herein is a method for reassembling variable length packets from
fixed length cells. When a variable length packet, for example, an Internet Protocol
(IP) packet, is transmitted between routers over a link which transmits data as
fixed length cells, for example, an asynchronous transfer mode (ATM) link, the
packet must be segmented into compatible fixed length cells. The receiving router
must reassemble the original packet from the cells as they arrive. A packet buffer
free pool (300) is provided which is maintained as a linked list, known
as a free list, and which comprises a plurality of buffer elements
(302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330,
332, 334, 336, 338, 340). When a first cell for a given packet arrives, a buffer
element (302) is taken from the head of the free list and allocated to that
packet. The packet data from the first and subsequent cells is copied into the
allocated buffer element and each time the buffer element is moved to the end of
the free list. Upon the arrival of the last cell for the given packet, the complete
packet is processed. Failed reassemblies are automatically abandoned as the buffer
element is reused when it reaches the head of the free list. This technique is
relevant to protection against "denial of service" attacks upon computer networks.