To be able to check if a message has already been retransmitted, a
cache of recently processed and forwarded messages is maintained.
The data stored is the minimum needed to identify the
message. This means that the actual message content is not stored,
but rather just originator address,
message-type and sequence number. This
data is cached for a constant time of DUP_HOLD_TIME suggested to
be 30 seconds in the RFC.
Every received message that is processed by the local node is registered in
the duplicate set. If the message is forwarded, the duplicate-entry
representing this message is updated accordingly, registering on what
interfaces the message has been forwarded.
Based on querying the duplicate set, a node can then keep track of already
processed messages and already forwarded messages on a per interface
basis.