165 lines
6.0 KiB
ReStructuredText
165 lines
6.0 KiB
ReStructuredText
.. _rpl-border-router-sample:
|
|
|
|
RPL Border Router
|
|
#################
|
|
|
|
Overview
|
|
********
|
|
|
|
The RPL border router sample application for Zephyr provides a HTTP(S) server
|
|
and net shell for management purposes. Typically border router would be used to
|
|
connect to IEEE 802.15.4 network but Bluetooth IPSP network functionality is
|
|
also possible.
|
|
|
|
The source code for this sample application can be found at:
|
|
:file:`samples/net/rpl_border_router`.
|
|
|
|
Requirements
|
|
************
|
|
|
|
- Real device like Freedom Board (FRDM-K64F) with MCR20A IEEE 802.15.4 support.
|
|
- Linux machine with web browser and the screen terminal emulator (optional).
|
|
- Ethernet access for management purposes (optional).
|
|
|
|
Note that there is no support for running an RPL border router in QEMU, as the
|
|
border router requires access to a real radio network technology such as
|
|
IEEE 802.15.4, which is not available in QEMU.
|
|
|
|
For testing purposes you can compile the RPL border router for QEMU and do some
|
|
testing with the web UI. But with QEMU, it is not possible to connect to RPL
|
|
network and get information about the RPL nodes.
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
By default, the integrated HTTP server is configured to listen at port 80.
|
|
If you want to modify the HTTP server config options, please check
|
|
the configuration settings in :file:`samples/net/rpl_border_router/src/main.c`
|
|
file and also in the :file:`samples/net/rpl_border_router/src/config.h` file.
|
|
|
|
This sample code supports both static and dynamic (DHCPv4) IP addresses that
|
|
can be defined in the project configuration file:
|
|
|
|
.. code-block:: console
|
|
|
|
CONFIG_NET_APP_MY_IPV6_ADDR="2001:db8::1"
|
|
CONFIG_NET_APP_MY_IPV4_ADDR="192.0.2.1"
|
|
|
|
Note that the IPv4 address is only used for connection to the integrated web
|
|
server that provides an admin web page for management purposes. The web server
|
|
can also be connected using IPv6 address. If you do not have a web management
|
|
network interface for your host computer, then IPv4 support can be disabled
|
|
in the configuration file by setting :option:`CONFIG_NET_IPV4` to "n".
|
|
The RPL router uses only IPv6 when routing the network traffic.
|
|
|
|
Note that the default project configuration file
|
|
:file:`samples/net/rpl_border_router/prj.conf` does not currently provide
|
|
a working system as there are no boards that would provide suitable network
|
|
interface support. The prj.conf file is provided only to compile test the
|
|
border router sample application.
|
|
|
|
It is possible to use the border router application with these boards and
|
|
add-on cards:
|
|
|
|
* `FRDM-K64F with Freescale CR20A card <http://www.nxp.com/products/developer-resources/hardware-development-tools/freedom-development-boards/freedom-development-board-for-mcr20a-wireless-transceiver:FRDM-CR20A>`_
|
|
|
|
You can build the application like this for CR20A:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/net/rpl_border_router
|
|
:board: frdm_k64f
|
|
:conf: prj_frdm_k64f_mcr20a.conf
|
|
:goals: build flash
|
|
:compact:
|
|
|
|
By default, the RPL border router application enables net shell support and
|
|
provides some useful commands for debugging and viewing the network status.
|
|
|
|
The **br repair** command will cause the RPL network to re-configure itself.
|
|
|
|
.. code-block:: console
|
|
|
|
shell> br repair
|
|
[rpl-br/shell] [INF] br_repair: Starting global repair...
|
|
|
|
The **net rpl** command first prints out static compile time configuration
|
|
settings. Then it prints information about runtime configuration of the system.
|
|
|
|
.. code-block:: console
|
|
|
|
shell> net rpl
|
|
RPL Configuration
|
|
=================
|
|
RPL mode : mesh
|
|
Used objective function : MRHOF
|
|
Used routing metric : none
|
|
Mode of operation (MOP) : Storing, no mcast (MOP2)
|
|
Send probes to nodes : disabled
|
|
Max instances : 1
|
|
Max DAG / instance : 2
|
|
Min hop rank increment : 256
|
|
Initial link metric : 2
|
|
RPL preference value : 0
|
|
DAG grounded by default : no
|
|
Default instance id : 30 (0x1e)
|
|
Insert Hop-by-hop option : yes
|
|
Specify DAG when sending DAO : yes
|
|
DIO min interval : 12 (4096 ms)
|
|
DIO doublings interval : 8
|
|
DIO redundancy value : 10
|
|
DAO sending timer value : 4 sec
|
|
DAO max retransmissions : 4
|
|
Node expecting DAO ack : yes
|
|
Send DIS periodically : yes
|
|
DIS interval : 60 sec
|
|
Default route lifetime unit : 65535 sec
|
|
Default route lifetime : 255
|
|
|
|
Runtime status
|
|
==============
|
|
Default instance (id 30) : 0xa80081e0 (active)
|
|
Instance DAGs :
|
|
[ 1]* fde3:2cda:3eea:4d14::1 prefix fde3:2cda:3eea:4d14::/64 rank 256/65535 ver 255 flags GJ parent 0x00000000
|
|
|
|
No parents found.
|
|
|
|
The **net nbr** command prints information about currently found IPv6 neighbor
|
|
nodes. In this example there are two leaf nodes that are part of this RPL
|
|
network.
|
|
|
|
.. code-block:: console
|
|
|
|
shell> net nbr
|
|
Neighbor Flags Interface State Remain Link Address
|
|
[ 1] 0xa80065e0 1/0/1/0 0xa8007140 reachable 2920 00:12:4B:00:00:00:00:01 fe80::212:4b00:0:1
|
|
[ 2] 0xa8006660 1/0/1/0 0xa8007140 stale 0 00:12:4B:00:00:00:00:03 fe80::212:4b00:0:3
|
|
|
|
The **nbr route** command prints information about currently found IPv6 routes.
|
|
In this example all the nodes are directly connected to this RPL border router
|
|
root node.
|
|
|
|
.. code-block:: console
|
|
|
|
shell> net route
|
|
IPv6 routes for interface 0xa8007140
|
|
====================================
|
|
IPv6 prefix : fde3:2cda:3eea:4d14::212:4b00:0:3/128
|
|
neighbor : 0xa80065e0
|
|
link addr : 00:12:4B:00:00:00:00:03
|
|
IPv6 prefix : fde3:2cda:3eea:4d14::212:4b00:0:1/128
|
|
neighbor : 0xa8006660
|
|
link addr : 00:12:4B:00:00:00:00:01
|
|
|
|
The IEEE 802.15.4 shell support is enabled by default, so the **ieee15_4**
|
|
command can be used to change the IEEE 802.15.4 network parameters such as
|
|
used channel or PAN id, if needed.
|
|
|
|
.. code-block:: console
|
|
|
|
shell> ieee15_4 set_chan 15
|
|
Channel 15 set
|
|
|
|
The border router sample application provides integrated HTTP(S) server.
|
|
Currently the admin support is very rudimentary but you can try it by connecting
|
|
to http://192.0.2.1 or http://[2001:db8::1] using web browser.
|