Skip to content

Commit

Permalink
Add the AODVv2 Routing Protocol
Browse files Browse the repository at this point in the history
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
  • Loading branch information
Lotterleben committed Oct 29, 2014
1 parent 7301a89 commit 048c1a2
Show file tree
Hide file tree
Showing 17 changed files with 2,787 additions and 0 deletions.
15 changes: 15 additions & 0 deletions Makefile.dep
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,21 @@ ifneq (,$(filter sixlowpan,$(USEMODULE)))
USEMODULE += vtimer
endif

ifneq (,$(filter aodvv2,$(USEMODULE)))
ifeq (,$(filter vtimer,$(USEMODULE)))
USEMODULE += vtimer
endif
ifeq (,$(filter sixlowpan,$(USEMODULE)))
USEMODULE += sixlowpan
endif
ifeq (,$(filter oonf_common,$(USEMODULE)))
USEMODULE += oonf_common
endif
ifeq (,$(filter oonf_rfc5444,$(USEMODULE)))
USEMODULE += oonf_rfc5444
endif
endif

ifneq (,$(filter uart0,$(USEMODULE)))
USEMODULE += lib
USEMODULE += posix
Expand Down
3 changes: 3 additions & 0 deletions sys/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ endif
ifneq (,$(filter routing,$(USEMODULE)))
DIRS += net/routing
endif
ifneq (,$(filter aodvv2,$(USEMODULE)))
DIRS += net/routing/aodvv2
endif
ifneq (,$(filter ieee802154,$(USEMODULE)))
DIRS += net/link_layer/ieee802154
endif
Expand Down
10 changes: 10 additions & 0 deletions sys/net/include/aodvv2/aodvv2.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include "common/netaddr.h"
#include "rfc5444/rfc5444_print.h"

#ifndef AODVV2_H_
#define AODVV2_H_

void aodv_init(void);
void aodv_set_metric_type(int metric_type);

#endif /* AODVV2_H_ */
1 change: 1 addition & 0 deletions sys/net/routing/aodvv2/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include $(RIOTBASE)/Makefile.base
Loading

0 comments on commit 048c1a2

Please sign in to comment.