Skip to content
Eddie Kohler edited this page Oct 17, 2017 · 2 revisions

IPReassembler Element Documentation

NAME

IPReassembler — Click element; Reassembles fragmented IP packets

SYNOPSIS

IPReassembler([KEYWORDS])

Ports: 1 input, 1-2 outputs
Processing: agnostic, but output 1 is push

DESCRIPTION

Expects IP packets as input to port 0. If input packets are fragments, IPReassembler holds them until it has enough fragments to recreate a complete packet. When a complete packet is constructed, it is emitted onto output 0. If a set of fragments making a single packet is incomplete and dormant for 30 seconds, the fragments are generally dropped. If IPReassembler has two outputs, however, a single packet containing all the received fragments at their proper offsets is pushed onto output 1.

IPReassembler's memory usage is bounded. When memory consumption rises above HIMEM bytes, IPReassembler throws away old fragments until memory consumption drops below 3/4*HIMEM bytes. Default HIMEM is 256K.

Output packets have the same MAC header as the fragment that contains offset 0. Other than that, input MAC headers are ignored.

The IPREASSEMBLER annotation area is used to store packet metadata about packets in the process of reassembly. On emitted reassembled packets, this annotation area is set to 0.

Keyword arguments are:

  • HIMEM — The upper bound for memory consumption, in bytes. Default is 256K.
  • MAX_MTU_ANNO — Optional. A 2 byte annotation that will be filled with the maximum size of any one fragment of this packet. If no reassembly is required, then the annotation is unchanged.

NOTES

You may want to attach an ICMPError(ADDR, timeexceeded, reassembly) to the second output.

IPReassembler destroys its input packets' "next packet" annotations.

SEE ALSO

IPFragmenter

Generated by click-elem2man from ../elements/ip/ipreassembler.hh:10 on 2017/10/17.

Clone this wiki locally