Netsukuku for wireless networks

See also: routing software for ad-hoc wireless networks

What is Netsukuku?

Netsukuku is an experimental P2P software that allows users to automatically connect to each other and form networks independent, but not necessarily separated, from the Internet.

Outline of the protocol

The protocol uses tracer packets to create a efficient routing table for each node, in a process which is not supervised but determined locally. The routing table then dispatches each packet to be routed to a network device, chosen to optimize the overall network performance.

This is a clever solution when most peers in the network use more than one network device to connect to different neighbors.

A potential issue with wireless networks?

I initially though that this may not be a solution when peers in the network actually only have one wireless connection each. The protocol could then attempt to repeat every packet to be routed to the same wireless device. Unfortunately, this may not help the packet select the best routes to reach the destination. The packets will simply be repeated randomly across such a network, flooding the network itself.

Example

For instance let’s consider an ad-hoc network composed of 4 nodes.

                  (((((((((o)))))))))
           (((((((((o))))))|))
    (((((((((o))))))|))  ((|((((((o)))))))))
             |      |      |      |
             |      |      |      |
            (A)    (B)    (C)    (D)

Here is a possible sequence of events that demonstrates why packet loops and repetitions may happen:

A wants to send an IP packet to D

B receives the packet from A and re-transmits it; A and C receive it

C receives the packet from B and re-transmits it; B and D receive it

D finally receives the packet.

B receives the packet from C and re-transmits it; A and C receive it

C receives the packet from B and re-transmits it; B and D receive it

B receives the packet from C (loop…)

Why this may not happen

The 802.11 protocol includes a destination MAC address in the data-link frame. This may be used to direct a packet to one of the neighbors only, as other neighbors will ignore the packet.

The protocol in that case would just behave like in a wired network.