RIOT icon indicating copy to clipboard operation
RIOT copied to clipboard

gnrc_tcp send fails

Open uglybob opened this issue 3 years ago • 0 comments
trafficstars

Description

Cannot send from node to node using gnrc with tcp on transport layer. The server part seems to work just fine, as I can send to it from my PC via gnrc_border_router and receive echo messages.

Steps to reproduce the issue

I'm using a slightly modified TCP sock API example with gnrc on nrf52840dk boards. One of the nodes starts the echo server, the other one runs the client example and tries to send a message to the server. Both nodes can ping each other.

Expected results

A connection is established and the echo server replies with the same message.

Actual results

The client tries to retransmit a couple of times but nothing is sent. The sniffer doesn't show any traffic either.

2022-08-10 15:00:20,565 # tcp send fe80::e8d8:51c5:4b95:4183 12345 hi
2022-08-10 15:00:20,573 # GNRC_TCP: Enter "gnrc_tcp_tcb_init", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp.c(311)
2022-08-10 15:00:20,581 # GNRC_TCP: Leave "gnrc_tcp_tcb_init", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp.c(325)
2022-08-10 15:00:20,588 # GNRC_TCP: Enter "gnrc_tcp_open", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp.c(342)
2022-08-10 15:00:20,597 # GNRC_TCP: Enter "_sched_connection_timeout", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp.c(64)
2022-08-10 15:00:20,605 # GNRC_TCP: Enter "_sched_mbox", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp.c(55)
2022-08-10 15:00:20,612 # GNRC_TCP: Leave "_sched_mbox", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp.c(59)
2022-08-10 15:00:20,621 # GNRC_TCP: Leave "_sched_connection_timeout", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp.c(67)
2022-08-10 15:00:20,629 # GNRC_TCP: Enter "_gnrc_tcp_pkt_build", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(153)
2022-08-10 15:00:20,638 # GNRC_TCP: Leave "_gnrc_tcp_pkt_build", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(274)
2022-08-10 15:00:20,648 # GNRC_TCP: Enter "_gnrc_tcp_pkt_setup_retransmit", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(381)
2022-08-10 15:00:20,656 # GNRC_TCP: Enter "_gnrc_tcp_pkt_get_pay_len", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(367)
2022-08-10 15:00:20,665 # GNRC_TCP: Leave "_gnrc_tcp_pkt_get_pay_len", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(374)
2022-08-10 15:00:20,675 # GNRC_TCP: Enter "_gnrc_tcp_eventloop_sched", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(367)
2022-08-10 15:00:20,685 # GNRC_TCP: Leave "_gnrc_tcp_eventloop_sched", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(372)
2022-08-10 15:00:20,694 # GNRC_TCP: Leave "_gnrc_tcp_pkt_setup_retransmit", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(449)
2022-08-10 15:00:20,703 # GNRC_TCP: Enter "_gnrc_tcp_pkt_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(281)
2022-08-10 15:00:20,715 # GNRC_TCP: Info: "Received GNRC_NETAPI_MSG_TYPE_SND.", Func: _eventloop, File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(320)
2022-08-10 15:00:20,723 # GNRC_TCP: Enter "_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(68)
2022-08-10 15:00:20,730 # GNRC_TCP: Leave "_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(100)
2022-08-10 15:00:20,739 # GNRC_TCP: Leave "_gnrc_tcp_pkt_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(304)
2022-08-10 15:00:21,688 # GNRC_TCP: Info: "Received MSG_TYPE_RETRANSMISSION.", Func: _eventloop, File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(332)
2022-08-10 15:00:21,697 # GNRC_TCP: Enter "_gnrc_tcp_pkt_setup_retransmit", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(381)
2022-08-10 15:00:21,706 # GNRC_TCP: Enter "_gnrc_tcp_pkt_get_pay_len", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(367)
2022-08-10 15:00:21,715 # GNRC_TCP: Leave "_gnrc_tcp_pkt_get_pay_len", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(374)
2022-08-10 15:00:21,725 # GNRC_TCP: Enter "_gnrc_tcp_eventloop_sched", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(367)
2022-08-10 15:00:21,734 # GNRC_TCP: Leave "_gnrc_tcp_eventloop_sched", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(372)
2022-08-10 15:00:21,744 # GNRC_TCP: Leave "_gnrc_tcp_pkt_setup_retransmit", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(449)
2022-08-10 15:00:21,752 # GNRC_TCP: Enter "_gnrc_tcp_pkt_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(281)
2022-08-10 15:00:21,761 # GNRC_TCP: Leave "_gnrc_tcp_pkt_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(304)
2022-08-10 15:00:21,773 # GNRC_TCP: Info: "Received GNRC_NETAPI_MSG_TYPE_SND.", Func: _eventloop, File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(320)
2022-08-10 15:00:21,780 # GNRC_TCP: Enter "_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(68)
2022-08-10 15:00:21,789 # GNRC_TCP: Leave "_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(100)
2022-08-10 15:00:23,736 # GNRC_TCP: Info: "Received MSG_TYPE_RETRANSMISSION.", Func: _eventloop, File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(332)
2022-08-10 15:00:23,746 # GNRC_TCP: Enter "_gnrc_tcp_pkt_setup_retransmit", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(381)
2022-08-10 15:00:23,755 # GNRC_TCP: Enter "_gnrc_tcp_pkt_get_pay_len", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(367)
2022-08-10 15:00:23,764 # GNRC_TCP: Leave "_gnrc_tcp_pkt_get_pay_len", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(374)
2022-08-10 15:00:23,773 # GNRC_TCP: Enter "_gnrc_tcp_eventloop_sched", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(367)
2022-08-10 15:00:23,783 # GNRC_TCP: Leave "_gnrc_tcp_eventloop_sched", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(372)
2022-08-10 15:00:23,793 # GNRC_TCP: Leave "_gnrc_tcp_pkt_setup_retransmit", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(449)
2022-08-10 15:00:23,801 # GNRC_TCP: Enter "_gnrc_tcp_pkt_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(281)
2022-08-10 15:00:23,810 # GNRC_TCP: Leave "_gnrc_tcp_pkt_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(304)
2022-08-10 15:00:23,822 # GNRC_TCP: Info: "Received GNRC_NETAPI_MSG_TYPE_SND.", Func: _eventloop, File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(320)
2022-08-10 15:00:23,830 # GNRC_TCP: Enter "_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(68)
2022-08-10 15:00:23,837 # GNRC_TCP: Leave "_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(100)
2022-08-10 15:00:27,786 # GNRC_TCP: Info: "Received MSG_TYPE_RETRANSMISSION.", Func: _eventloop, File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(332)
2022-08-10 15:00:27,795 # GNRC_TCP: Enter "_gnrc_tcp_pkt_setup_retransmit", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(381)
2022-08-10 15:00:27,804 # GNRC_TCP: Enter "_gnrc_tcp_pkt_get_pay_len", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(367)
2022-08-10 15:00:27,813 # GNRC_TCP: Leave "_gnrc_tcp_pkt_get_pay_len", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(374)
2022-08-10 15:00:27,823 # GNRC_TCP: Enter "_gnrc_tcp_eventloop_sched", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(367)
2022-08-10 15:00:27,832 # GNRC_TCP: Leave "_gnrc_tcp_eventloop_sched", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(372)
2022-08-10 15:00:27,841 # GNRC_TCP: Leave "_gnrc_tcp_pkt_setup_retransmit", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(449)
2022-08-10 15:00:27,850 # GNRC_TCP: Enter "_gnrc_tcp_pkt_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(281)
2022-08-10 15:00:27,859 # GNRC_TCP: Leave "_gnrc_tcp_pkt_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_pkt.c(304)
2022-08-10 15:00:27,871 # GNRC_TCP: Info: "Received GNRC_NETAPI_MSG_TYPE_SND.", Func: _eventloop, File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(320)
2022-08-10 15:00:27,879 # GNRC_TCP: Enter "_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(68)
2022-08-10 15:00:27,886 # GNRC_TCP: Leave "_send", File: sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c(100)

Versions

Operating System Environment
----------------------------
         Operating System: "Debian GNU/Linux" "10 (buster)"
                   Kernel: Linux 4.19.0-21-amd64 x86_64 unknown
             System shell: /usr/bin/dash (probably dash)
             make's shell: /usr/bin/dash (probably dash)

Installed compiler toolchains
-----------------------------
               native gcc: gcc (Debian 8.3.0-6) 8.3.0
        arm-none-eabi-gcc: arm-none-eabi-gcc (15:7-2018-q2-6) 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]
                  avr-gcc: avr-gcc (GCC) 5.4.0
         mips-mti-elf-gcc: missing
           msp430-elf-gcc: missing
       riscv-none-elf-gcc: missing
  riscv64-unknown-elf-gcc: missing
     riscv-none-embed-gcc: missing
     xtensa-esp32-elf-gcc: missing
   xtensa-esp8266-elf-gcc: missing
                    clang: missing

Installed compiler libs
-----------------------
     arm-none-eabi-newlib: "3.1.0"
      mips-mti-elf-newlib: missing
        msp430-elf-newlib: missing
    riscv-none-elf-newlib: missing
riscv64-unknown-elf-newlib: missing
  riscv-none-embed-newlib: missing
  xtensa-esp32-elf-newlib: missing
xtensa-esp8266-elf-newlib: missing
                 avr-libc: cc1: fatal error: avr/version.h: No such file or directory
compilation terminated. (cc1: fatal error: avr/version.h: No such file or directory
compilation terminated.)

Installed development tools
---------------------------
                   ccache: missing
                    cmake: cmake version 3.13.4
                 cppcheck: missing
                  doxygen: 1.8.13
                      git: git version 2.20.1
                     make: GNU Make 4.2.1
                  openocd: xPack OpenOCD x86_64 Open On-Chip Debugger 0.11.0+dev (2022-03-25-17:31)
                   python: Python 2.7.16
                  python2: Python 2.7.16
                  python3: Python 3.7.3
                   flake8: error: /usr/bin/python3: No module named flake8
               coccinelle: missing

uglybob avatar Aug 10 '22 14:08 uglybob

Hi @uglybob,

From the log itself, it looks like the gnrc_tcp_open call never returns. This is an Indicator that the connection was not established in the first place. Do you have some way to provide a wireshark log or something? This might give me more insight whats happens here.

Cheers Simon

brummer-simon avatar Aug 16 '22 18:08 brummer-simon