Hi Jaap and John
I don't think ZigBee knowledge is required here and I guess this is a general issue for protocols with short sequence numbers.
My
concern with your suggestion is that we will need to maintain a sliding
window and perform rollover detection for each node pair and direction
(A ZigBee network has multiple nodes communicating in both directions).
Currently, the APS dissector is using the generic fragment_add_seq_check().
I have looked at fragment_add_seq_single_aging(),
which seems to handle something like this. However, this is for
protocols with a single sequence number (as John mentioned).
Furthermore, the aging is based on frame numbers, which will not work
for ZigBee because the number of frames between APS packets with the
same sequence number will depend heavily on the amount of other traffic
in the network.
I have considered to create a
function which uses timestamps for aging instead. A fragmented APS
packet is considered to be completely transferred within a reasonable
time compared to the time between sequence number rollover. But then
again the _fragment_item struct used by the re-assembler does not store
packet timestamps.
The first fragment in an
APS packet has a special attribute so I have also considered to simply
re-start the reassembly for that sequence number when a first fragment
is dissected.
/Kenneth