Contiki-NG relies on an IPv6 stack. All TCP/UDP sockets in Contiki-NG use uIP (uip.h
and uip6.c
from <contiki-ng>/os/net/ipv6)
, which implements for IP, UDP, and TCP protocols in minimized models.
Currently, the network layer contains two sub-layers, the upper IPv6 layer and the lower adaptation layer. These sub-layers run on the top of IEEE 802.15.4 with Time-Slotted Channel Hopping (TSCH). Regarding routing, Contiki-NG applies RPL (Routing Protocol for Low-power and Lossy Networks (LLNs)), which adopts the RFC standard, RFC 6550. RPL develops a routing graph from the root node or AP (Access Point).
If the routing graph has a form as cyclic graph and is built from a root node, it is called a DODAG (Destination Oriented Directed Acyclic Graph). RPL routing in Contiki-NG supports three directions of traffic, as follows:
- Upward: from any node toward a root.
- Downward: from the root to any node.
- Any-to-any: flows among arbitrary pairs of nodes in the DODAG graph.
For RPL implementation, Contiki-NG provides RPL classic and RPL lite. RPL classic is the original Contiki RPL implementation, called ContikiRPL
.
We can find code implementations for both RPL classic and RPL lite in Contiki-NG. RPL classic can be found at /net/rpl-classic and RPL lite at /net/rpl-lite
from the Contiki-NG code root.