Understand IPv6 Subnetting on the FIT IoT-LAB testbed
Difficulty: Medium
Duration: 10 minutes
Description: The goal of this tutorial is to understand the global IPv6 subnetting on the IoT-LAB testbed in order to experiment applications with global IPv6 addresses. Here will be presented available IPv6 prefixes and how to choose them for users experiments
M3 Subnets
Dedicated subnets for M3 nodes, listed in the table below, allow you to map a global IPv6 /64 prefix on a M3 node acting as a border router (BR). All M3 subnets can be used on any M3 node. Technically, the IPv6 traffic between the infrastructure and the BR radio interface is routed via a TUN/SLIP interface mounted inside the IoT-LAB server and attached to the serial port of the M3 node. Our tunslip6.py script automatically creates TUN/SLIP interface with the selected IPv6 prefix mapped to the chosen M3 node. Collision or usurpation between users experiments are also taken into account.
The folowing figure shows the infrastructure on the Strasbourg site:
Site | Number of subnets | from | to |
---|---|---|---|
Grenoble | 128 | 2001:660:5307:3100::/64 | 2001:660:5307:317f::/64 |
Lille | 128 | 2001:660:4403:0480::/64 | 2001:660:4403:04ff::/64 |
Paris | 128 | 2001:660:330f:a280::/64 | 2001:660:330f:a2ff::/64 |
Saclay | 64 | 2001:660:3207:04c0::/64 | 2001:660:3207:04ff::/64 |
Strasbourg | 32 | 2001:660:4701:f0a0::/64 | 2001:660:4701:f0bf::/64 |
In order to check a prefix availability, please run the ip command on the IoT-LAB servers and look at the already mounted tun interfaces:
<login>@grenoble:~$ ip -6 route 2001:660:5307:30ff::/64 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 2001:660:5307:3100::/64 dev tun0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 2001:660:5307:3102::/64 dev tun1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 2001:660:5307:3107::/64 dev tun36 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev eth1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev tun0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev tun1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev tun36 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 default via 2001:660:5307:30ff:ff:: dev eth0 metric 1 mtu 1500 advmss 1440 hoplimit 4294967295
Try it! The Public IPv6/6LoWPAN/RPL network with M3 nodes tutorial shows you how to use global IPv6 addresses with M3 nodes with Contiki.
A8 Subnets
A8 open nodes running embedded GNU/Linux have 2 interfaces:
- 1x Ethernet interface
- 1x Serial interface with M3 node
The A8 open node is configured with:
- a global IPv6 address on the Ethernet constructed as follows: [ Open A8 Prefixes 64 bits ] + [ node ID 64 bits = hexa(node ID) ] (e.g.
node-a8-1
on Strasbourg will have2001:660:4701:f080::1
as global IPv6 address) - an IPv6 /64 subnet for its M3 node, statically routed, and defined as follows: [ A8 prefix range start + hexa(node ID) ]::/64 (e.g.
node-a8-1
on Grenoble will have2001:660:4701:f081::/64
as IPv6 /64 subnet for its M3 node)
The folowing figure shows the infrastructure on the Strasbourg site:
Grenoble | Global IPv6 on eth0 interface | /64 subnet on M3 interface |
---|---|---|
node-a8-1.grenoble.iot-lab.info | 2001:660:5307:3000::1 | 2001:660:5307:3001::/64 |
node-a8-2.grenoble.iot-lab.info | 2001:660:5307:3000::2 | 2001:660:5307:3002::/64 |
… | … | … |
node-a8-228.grenoble.iot-lab.info | 2001:660:5307:3000::e4 | 2001:660:5307:30e4::/64 |
Paris | Global IPv6 on eth0 interface | /64 subnet on M3 interface |
node-a8-1.paris.iot-lab.info | 2001:0660:330f:a200::1 | 2001:0660:330f:a201::/64 |
node-a8-2.paris.iot-lab.info | 2001:0660:330f:a200::2 | 2001:0660:330f:a202::/64 |
… | … | … |
node-a8-62.paris.iot-lab.info | 2001:0660:330f:a200::3e | 2001:0660:330f:a23e::/64 |
Saclay | Global IPv6 on eth0 interface | /64 subnet on M3 interface |
node-a8-1.saclay.iot-lab.info | 2001:660:3207:0400::1 | 2001:660:3207:0401::/64 |
node-a8-2.saclay.iot-lab.info | 2001:660:3207:0400::2 | 2001:660:3207:0402::/64 |
… | … | … |
node-a8-175.saclay.iot-lab.info | 2001:660:3207:0400::af | 2001:660:3207:04af::/64 |
Strasbourg | Global IPv6 on eth0 interface | /64 subnet on M3 interface |
node-a8-1.strasbourg.iot-lab.info | 2001:660:4701:f080::1 | 2001:660:4701:f081::/64 |
node-a8-1.strasbourg.iot-lab.info | 2001:660:4701:f080::2 | 2001:660:4701:f082::/64 |
… | … | … |
node-a8-14.strasbourg.iot-lab.info | 2001:660:4701:f080::e | 2001:660:4701:f08e::/64 |
Try it! The Public IPv6/6LoWPAN/RPL network with A8-M3 nodes tutorial shows you how to use global IPv6 addresses with A8-M3 nodes with Contiki.