Thanks to visit codestin.com
Credit goes to github.com

Skip to content

stale border router does not get replaced  #12210

@benpicco

Description

@benpicco

Description

When playing around with border routers I noticed some strange behavior: An offline border router is retained for an unknown time. Even resetting a node does not get it to use the new border router as the old border router information is still being advertised by neighboring nodes.

I am not sure if this is to spec as the border router live time is indeed exceptionally high. But this seems more like a bug as it makes roaming nodes impossible. Even worse, a roaming node could 'pollute' other nodes with an unreachable border router, making them ignore a border router that is reachable.

I think the solution could be to check if a border router is reachable before considering border router information valid or to drop existing border router information if a 'fresh' border router becomes available.

This makes me wonder, is is possible to protect against rogue border routers?

Steps to reproduce the issue

  • set up a border router, e.g. a raspberry pi with an ieee802.15.4 radio following this guide
  • flash a RIOT node with the gnrc_networking example and observe that the border router is being used
2019-09-12 13:23:07,524 - INFO #  nib abr
2019-09-12 13:23:07,527 - INFO # fd00:1:2:3:a:b:c:d v0 expires 65534min
  • shut down the Raspberry Pi or move the RIOT node out of range.
  • set up a second border router. If you have more RIOT nodes than RasPis, flash the gnrc_border_router example and run
make -C dist/tools/uhcpd
make -C dist/tools/ethos
sudo dist/tools/ethos/start_network.sh /dev/ttyACMx tap0 2001:db8::/64

The RIOT border Router should now announce it's prefix.

Expected results

After some time, the new border router should be used as the old border router is not reachable anymore.

2019-09-12 14:54:00,467 - INFO #  nib abr
2019-09-12 14:54:00,470 - INFO # 2001:db8::7b7d:362c:c959:65a v0 expires 10000min

Actual results

The old border router will be used for the next ~45 days

2019-09-12 14:54:00,467 - INFO #  nib abr
2019-09-12 14:54:00,470 - INFO # fd00:1:2:3:a:b:c:d v0 expires 65444min

some more information:

2019-09-12 15:05:53,443 - INFO #  nib neigh
2019-09-12 15:05:53,450 - INFO # fe80::d0af:c1b:2054:58f dev #7 lladdr D2:AF:0C:1B:20:54:05:8F router STALE GC
2019-09-12 15:06:11,958 - INFO #  nib route
2019-09-12 15:06:11,960 - INFO # fd00:1:2:3::/64 dev #7
2019-09-12 15:06:11,964 - INFO # default* via fe80::d0af:c1b:2054:58f dev #7
2019-09-12 15:06:20,582 - INFO #  nib prefix
2019-09-12 15:06:20,587 - INFO # fd00:1:2:3::/64 dev #7  expires 80101sec deprecates 8101sec
[a few hours later]
2019-09-12 17:57:56,199 - INFO #  nib prefix
2019-09-12 17:57:56,206 - INFO # fd00:1:2:3::/64 dev #7  expires 69802sec deprecates 4292769sec

Versions

RIOT master

Metadata

Metadata

Labels

Area: networkArea: NetworkingType: bugThe issue reports a bug / The PR fixes a bug (including spelling errors)Type: questionThe issue poses a question regarding usage of RIOT

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions