Basically, we'd want to merge two client entries like this. A client entry contains:
the client's MAC address
timestamp when this client was last discovered
a list of IP addresses for that client, each with a last seen time
We need to merge it like this:
timestamp = max(timestamp_a, timestamp_b)
for each entry in ip_list_b check if it is in ip_list_a. if yes, update timestamp to max, else add entry as is
The idea would be that a node stores information about its clients. Other nodes can request that information. Multiple nodes may respond and the requesting node may already know a few IP addresses for the client. Upon receiving responses, the node would then combine them.
[x] response (clientinfo) is sent using unicast and TTL = 1
[x] After combining entries routes need to be updated. It may be necessary to derive a list of removed and added entries from the operation.
Basically, we'd want to merge two client entries like this. A client entry contains:
We need to merge it like this:
The idea would be that a node stores information about its clients. Other nodes can request that information. Multiple nodes may respond and the requesting node may already know a few IP addresses for the client. Upon receiving responses, the node would then combine them.