-
Notifications
You must be signed in to change notification settings - Fork 82
IPReassembler
IPReassembler — Click element; Reassembles fragmented IP packets
IPReassembler([KEYWORDS])
Ports: 1 input, 1-2 outputs
Processing: agnostic, but output 1 is push
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.
You may want to attach an ICMPError(ADDR, timeexceeded, reassembly)
to the
second output.
IPReassembler destroys its input packets' "next packet" annotations.
Generated by click-elem2man from ../elements/ip/ipreassembler.hh:10
on 2018/10/03.