Skip to content
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

Packets that are 117 bytes or more get corrupted #8

Closed
ghost opened this issue Sep 30, 2018 · 4 comments
Closed

Packets that are 117 bytes or more get corrupted #8

ghost opened this issue Sep 30, 2018 · 4 comments

Comments

@ghost
Copy link

ghost commented Sep 30, 2018

I have a very particular issue. I compiled the project and installed it on two Raspberry Pis. Then I compiled this example and ran it on the two Raspberry Pis.

I was able to ping each device back and forth.

ping 10.10.2.1 # From 10.10.2.2
ping 10.10.2.2 # From 10.10.2.1

Then, naturally, I tried to curl one of the devices from the other, but nothing happened. I verified that packets were being sent with tcpdump. The one weird thing that I noticed was that even though the packets are being received, my curl 10.10.2.2 did not show a result, which may be because of the repeating warning that 326 bytes missing!.

sudo tcpdump -i tun_nrf24
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun_nrf24, link-type RAW (Raw IP), capture size 262144 bytes
20:51:37.131645 IP 10.10.2.1.48884 > 10.10.2.2.http: Flags [S], seq 131757859, win 29200, options [mss 1460,sackOK,TS val 2462727011 ecr 0,nop,wscale 7], length 0
20:51:37.143502 IP 10.10.2.2.http > 10.10.2.1.48884: Flags [S.], seq 1415731283, ack 131757860, win 28960, options [mss 1460,sackOK,TS val 4243499299 ecr 2462727011,nop,wscale 6], length 0
20:51:37.143724 IP 10.10.2.1.48884 > 10.10.2.2.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 2462727023 ecr 4243499299], length 0
20:51:37.144036 IP 10.10.2.1.48884 > 10.10.2.2.http: Flags [P.], seq 1:74, ack 1, win 229, options [nop,nop,TS val 2462727023 ecr 4243499299], length 73: HTTP: GET / HTTP/1.1
20:51:37.166563 IP 10.10.2.2.http > 10.10.2.1.48884: Flags [.], ack 74, win 453, options [nop,nop,TS val 4243499322 ecr 2462727023], length 0
20:51:37.358333 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243499508 ecr 2462727023], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:37.592104 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243499736 ecr 2462727023], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:37.817547 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243499966 ecr 2462727023], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:38.266302 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243500416 ecr 2462727023], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:39.218605 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243501367 ecr 2462727023], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:41.058371 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243503207 ecr 2462727023], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:43.372121 IP 10.10.2.2.http > 10.10.2.1.48884: Flags [F.], seq 419, ack 74, win 453, options [nop,nop,TS val 4243505529 ecr 2462727023], length 0
20:51:43.372326 IP 10.10.2.1.48884 > 10.10.2.2.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 2462733251 ecr 4243499322,nop,nop,sack 1 {419:420}], length 0
20:51:43.389478 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243505539 ecr 2462733251], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:43.617222 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243505767 ecr 2462733251], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:44.068513 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243506217 ecr 2462733251], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:44.977209 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243507127 ecr 2462733251], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:46.817625 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243508967 ecr 2462733251], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:50.417021 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243512567 ecr 2462733251], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:51:57.617000 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 74, win 453, options [nop,nop,TS val 4243519767 ecr 2462733251], length 418: HTTP: HTTP/1.1 401 Unauthorized
20:52:06.005643 IP 10.10.2.1.48884 > 10.10.2.2.http: Flags [F.], seq 74, ack 1, win 229, options [nop,nop,TS val 2462755885 ecr 4243499322,nop,nop,sack 1 {419:420}], length 0
20:52:06.016410 IP 10.10.2.2.http > 10.10.2.1.48884: Flags [.], ack 75, win 453, options [nop,nop,TS val 4243528173 ecr 2462755885], length 0
20:52:12.342754 IP truncated-ip - 326 bytes missing! 10.10.2.2.http > 10.10.2.1.48884: Flags [P.], seq 1:419, ack 75, win 453, options [nop,nop,TS val 4243534487 ecr 2462755885], length 418: HTTP: HTTP/1.1 401 Unauthorized

I opened up port 6969 with netcat:

while true; do
    nc -l 6969
done

on one of the Pis and on the other I started sending characters to see where the cutoff was:

for i in `seq 20 120`; do
    python -c "print 'A' * $i" | nc -q0 10.10.2.2 6969;
    sleep 1;
done

When I used UDP to send data back and forth I noticed that all data was sent up to 116 bytes. Thereafter the packets were dropped. With TCP the cutoff was 92 bytes (it makes sense why it would be less than UDP). I couldn't see anything that's preventing the packets from being sent, especially since I see the tcpdump log on the receiving end, but I'm pretty sure the warning that 326 bytes missing! is what's to blame.

Is there a way to patch this issue?

@TMRh20
Copy link
Member

TMRh20 commented Sep 30, 2018 via email

@ghost
Copy link
Author

ghost commented Sep 30, 2018

Thank you! I didn't think to look in the network layer and must've missed it in the documentation.

Will this prevent a mix of Pis and Arduino on sharing the same network?

@TMRh20
Copy link
Member

TMRh20 commented Sep 30, 2018 via email

@ghost
Copy link
Author

ghost commented Sep 30, 2018

Thank you again!

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant