-
Martine Lenders authored
While the current approach for garbage collection in the 6Lo reassembly buffer is good for best-effort handling of *fragmented* packets and nicely RAM saving, it has the problem that incomplete, huge datagrams can basically DoS a node, if no further fragmented datagram is received for a while (since the packet buffer is full and GC is not triggered). This change adds a asynchronous GC (utilizing the existing functionality) to the reassembly buffer, so that even if there is no new fragmented packet received, fragments older than `RBUF_TIMEOUT` will be removed from the reassembly buffer, freeing up the otherwise wasted packet buffer space.
Martine Lenders authoredWhile the current approach for garbage collection in the 6Lo reassembly buffer is good for best-effort handling of *fragmented* packets and nicely RAM saving, it has the problem that incomplete, huge datagrams can basically DoS a node, if no further fragmented datagram is received for a while (since the packet buffer is full and GC is not triggered). This change adds a asynchronous GC (utilizing the existing functionality) to the reassembly buffer, so that even if there is no new fragmented packet received, fragments older than `RBUF_TIMEOUT` will be removed from the reassembly buffer, freeing up the otherwise wasted packet buffer space.