-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Forwarding a packet back to its link layer source should not be allowed #5051
Comments
I don't know where the proper place for such a check would be in the source, any pointers? |
Mhhh… I'm not sure that is correct behavior. Isn't that what the hop limit is supposed to be for (though yes, it is power draining)? @emmanuelsearch @OlegHahm @tcschmidt what do you say? |
What you describe is a classic routing-loop which a routing-protocoll takes care of and prevents/resolves it. If this situation happens, the routing-protocol will eventually resolve it, if not then the protocol would be somehow broken. |
Some preliminary remarks: @gebart : you want to prevent routing loops by excluding the previous last hop (link-local) from forwarding: this is a bit dangerous (e.g., during routing convergence) and won't really help, as routing loops can occur via several hops and addresses may be global unicast. For the purpose of a lost leaf, we have ICMP "destination unreachable/no route to host". This would fire in case of a lost route. If there is a valid default route, though, topology needs maintenance. A routing protocol (that operates with default routes) needs to update its information state about connectivity. In case a link is lost, this should trigger an update. In the case of RPL, there is the additional information about upward/downward, which should not mix. However, there are routing protocols (like AODV) that do not procure for default routes. If default routes are implemented by other means, there may be conflicts ... some need for additional thinking here. |
@tcschmidt I observed this happening between two RIOT nodes on the wireless 6lowpan network (using a sniffer) and there were never any ICMPv6 no route to host or any other errors reported, only that the packet bounced 64 times before the hoplimit killed it. Is this a bug in the RPL implementation then? |
Error reporting isn't realized in GNRC yet. However, with #3544 this should be a breeze by just replacing every |
It sure is an inconsistent routing state ... and RPL knows about default On 12.03.2016 14:17, Joakim Nohlgård wrote:
|
@gebart I checked back with the RPL spec. In general, RPL is not loop-free and does not provide rapid convergence. However, there are simple loop avoidance mechanisms (accounting for tree traversal directions), see https://tools.ietf.org/html/rfc6550#section-11.2 |
The problem here is that the 6lowpan RFC is very clear on what is supposed to happen if there's no neighbor cache entry: forward the packet to any router available. I've implemented that in [1]. [1] https://github.com/kaspar030/RIOT/tree/introduce_new_ipv6_forwarding |
There is actually a mention of the exact behaviour in RFC6550 (RPL) page 100
Split horizon: https://en.wikipedia.org/wiki/Split_horizon_route_advertisement |
That is actually a bit strange, because split horizon is typically a On 12.03.2016 16:01, Joakim Nohlgård wrote:
|
I don't see the relation here: the problem of @gebart seems neither On 12.03.2016 15:41, Kaspar Schleiser wrote:
|
won't be fixed for this release -> postponed |
won't be fixed for this release -> postponed |
This is not part of a milestone anymore but I'd ask @miri64 if this issue was somehow addressed by recent networking PRs. |
This might have been fixed with the recent changes to RPL. @cgundogan is it ? |
does someone know if this is still an issue? |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you want me to ignore this issue, please mark it with the "State: don't stale" label. Thank you for your contributions. |
Ping? |
Network scenario:
BR -> router -> leaf
BR knows that leaf is behind router, however for some reason the leaf node goes missing and router drops it from its fib (e.g. by router reboot, or clock drift between BR and router so that router drops the route before BR does).
Now BR will forward packets to leaf via router, and since router does not have leaf in its FIB it will pass the received packet along its default route, which is BR. Now the packet starts bouncing until TTL is reached. This will lead to excessive power drain and occupying wireless bandwidth for no good reason.
IMO there should be a check somewhere in the routing decisions that drops a packet instead of forwarding if the routing decision is to forward it to the same link layer address from where it was received.
The text was updated successfully, but these errors were encountered: