To add a new routing protocol, add:
- add a new folder
src/<routing-protocol>/routing.c
- add a register method in
routing.h
and callregister_protocol
Just use other protcols as template. For arrays/list/maps, feel free to use the data structures included from ut_hash.
Testing can be done on real hardware (using OpenWrt) or by using a network simulator (e.g. meshnet-lab).
A reactive routing protocols discovers routing information on demand. This might take some time initially, but has the advantage that if there is no need to send anything, then there are no requests that need to be send. This is especially useful for low traffic sensor networks.
A proactive routing protocol makes sure it has all the necessary routing information available in case a packet needs to be routed. This allows a fast initial transmission time.
For Link State protocols, each node tries to maintain a complete view of the network topology and it's links. This allows for optimizations.
Distance Vector protocols (also known as Table Driven) only maintain a routing table that gives the direction of a packet to be transferred, without knowning or being in control of intermediate nodes.
There are also a lot of hybrid approaches.
Assuming the name is unique. Also known as Opaque identifiers. If the network name can be choosen freely, then If the name encodes the position
Locator/Identifier Separation Protocol
Name for a research effort to reach efficient routing through LISP.
Most routing protocols expect a link to allow data to flow in both directions. The link is then called bidirectional.
Values to compare routing protocols.
Forwarding Efficiency (FE) = HopsNeeded / TotalHops
A FE value of 1 means that all packets have reached on the shortest route (according to the hop count).
Reception Rate (RR) = TotalReceived / TotalCreated
Extension of the Forwarding Efficiency. But considers all received packets and all created packets. Makes sense to compare protocols only on identical networks.
Packet Delivery Ratio (PDR) = PacketsArrived / PacketsGenerated
A PDR value of 1 for a pair of nodes means that all packets send from the origin have arrived at the destination. The value is only influenced by packet loss.
- use
htonl
to make sure tha byte order is correct on different platforms - add internal tester/simulator
- NS3 support
- implement AODV, it is the routing protocol used e.g. for the ZigBee.
- explain what using an interface (-i) means, since we also support IP addressing