-
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
gnrc_sixlowpan: enable NHC by default #5044
Conversation
@gebart or should we still wait because of the other issue? |
The problem I am seeing is illustrated in this packet dump from a router running on top of #4544 + #4935 + #5029 (cloudshark just responds with "Code 0" when I try to upload now so you'll have to download it and open in wireshark) The setup is: The fragmented packet at number 141+142 is correct. The RPL router then tries to retransmit the packet but forgets the actual payload so it just sends an empty UDP packet to the border router LL addrs: Both BR and middle router are running on the same base RIOT checkout with the above PRs applied. BR is running https://github.com/gebart/RIOT-applications/tree/wip/6lbr/6lbr and middle is running microcoap_server customized to set the channel, page and NID for the transceiver and start RPL automatically after boot.. |
The setup is kinda convoluted so I didn't know how to present a clear and concise issue report, which is why I didn't post anything before. |
Further down in the same packet dump is the setup: CoAP -> wireless -> RPL border router -> ethos -> PC Same firmware, only restarted the nodes to remap the RPL DODAG so that CoAP has a direct link to the BR. See packet 244+245. It comes out correct on the PC side and Firefox Copper shows the correct data. |
does it break all the time (reproduceable) or just randomly? |
Consistently the same results in my first setup. If you look at the dump I do get some correct fragmented packets through, but that is a large payload ping packet (ICMPv6), so the problem lies somewhere in the UDP or IPHC UDP NHC codepaths |
just to be sure, did you also test the same setup without enabiling udp NHC? |
The first setup is what caused the hard fault described in #5029 in the first place. The BR crashed because the received payload was missing. It did not crash in setup number 2. |
@cgundogan didn't test without NHC because Contiki doesn't have a configuration switch for it. I could re-flash the CoAP node with the microcoap_server example and retry later. |
would be nice, but it's most probably the NHC that breaks here. |
I think I found a problem. The payload is never marked from the rest of the IPv6 packet when doing routing: |
That is weird. IPv6 should mark the header in https://github.com/RIOT-OS/RIOT/blob/master/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c#L756 so why doesn't it? |
@authmillenon Traced a bit more and it shows that IPV6 is marking its header but the remaining payload is still marked 6lowpan |
I think the best solution would be to mark the UDP header properly |
Arrggs, no I would vote for setting it to UNDEF as GNRC expects. |
I'm using a combination of: I published my temporary test branch at https://github.com/gebart/RIOT/tree/wip/routing-fixes in case someone wants to try it. |
Will try after the weekend, but anybody else is welcome to try before me :-) |
Since there is nothing going on in #4544 I say we postpone this one for next time. |
But we still have two weeks to fix that!? |
#5232 is working for the 6LBR so I would like to take this into the release again. |
#5232 was merged, murdock is happy. So go. |
This seems to have broken master. |
Nice catch @kaspar030! |
Fix provided in #5360. |
Now that #4935 is merged, we can enable NHC again by default.
edit: Depends on:
#4544,#5029,#5049