Very slow and unstable ethernet connection

I just flashed a Xavier AGX and everything seems to be working fine apart from the ethernet connection.
The ethernet connection is unstable, in the sense that most of the time it won’t connect or be very slow, then it will have brief spikes when it reaches a good speed (i.e. 30 Mbps).
I tried pinging other machines on the network and half of the times it would say “unreachable host”, the rest of the times it would have ~75% packet loss. If I try to ping google or other servers the same happens.
I tried browsing different websites and the browser would try to load for a long time, then say “no internet connection” and then suddenly load the page.

I previously connected other Xavier NX machines on the same network with the same cable and the speed was working as expected, so I don’t think it’s a problem of the network itself but rather only of the AGX.

I’ve seen a few posts with similar problems but I can’t seem to find a solution, also because I’m not an experienced Ubuntu user.

I tried disabling IPv6, disconnect and reconnect, but no luck.

Any help would be greatly appreciated

Edit: For completeness, I am using the Rudi AGX board from Connect Tech https://connecttech.com/product/rudi-agx-embedded-system-nvidia-jetson-agx-xavier/

When the network has just started, but no real traffic has passed, what do you see from “ifconfig”? Then, once more, after there have been some problems observed, post the new output from “ifconfig”. I’d like to see how the interface itself reports certain categories of anomalies.

Thank you for your help. This is the output straight after boot

:~$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:10:17:7b:c0  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 48:b0:2d:3a:88:52  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 41  

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.128  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:8bff:feb4:9400  prefixlen 64  scopeid 0x20<link>
        inet6 2001:bb6:98c7:c300:20c:8bff:feb4:9400  prefixlen 64  scopeid 0x0<global>
        ether 00:0c:8b:b4:94:00  txqueuelen 1000  (Ethernet)
        RX packets 359  bytes 37502 (37.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 196  bytes 20664 (20.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x12b0000000-12b007ffff  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 238  bytes 17988 (17.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 238  bytes 17988 (17.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

and this is after some pinging and browsing

~$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:10:17:7b:c0  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 48:b0:2d:3a:88:52  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 41  

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.128  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:8bff:feb4:9400  prefixlen 64  scopeid 0x20<link>
        inet6 2001:bb6:98c7:c300:20c:8bff:feb4:9400  prefixlen 64  scopeid 0x0<global>
        ether 00:0c:8b:b4:94:00  txqueuelen 1000  (Ethernet)
        RX packets 7023  bytes 5578212 (5.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4915  bytes 719061 (719.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x12b0000000-12b007ffff  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 1344  bytes 122813 (122.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1344  bytes 122813 (122.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

I’m also attaching a screenshot of the results of pinging another machine on the same network and google.com, to give an idea of what the performance is

Hi,

I am just curious about … why do you have 2 ethernet interfaces here? Are you talking about an extra ethernet slot with slow speed? Such information should be mentioned from the beginning.

@WayneWWW Apologies I wasn’t clear from the start, but I am using the AGX integrated in this board I am using the Rudi AGX board from Connect Tech https://connecttech.com/product/rudi-agx-embedded-system-nvidia-jetson-agx-xavier/ , which has two ethernet ports. I updated my original post to reflect that.

The speed is identical between the two ports.

Do you have a jetson AGX devkit to do the test?
Actually, engineers here will not be able to directly debug an issue on 3rdparty carrier board. If you only have this board, I would suggest you can report this issue to ConnectTech first.

Thank you @WayneWWW Unfortunately I don’t have a devkit to test. I will be in touch with Connect Tech as well, but I thought it might be worth asking for help here as well. I have limited experience with Ubuntu and Jetson and there have been posts with similar issues, so I was hoping there might be a simple fix that I’m not aware of or at least someone could help me understand where the problem is.

I just read their spec provided on the website, it looks like one port is using i210 internet card while another port is the original one we use.

You can try to directly connect your host machine to one of the ethernet port with ethernet cable (port to port setup) and use iperf3 to test the speed between each other.

Just some notes…

The interface is operating correctly. There are no outright failures, no errors, nothing technically broken. Everything going on appears to be related to the route traveled.

Ping times to Google are actually quite good, but the packet loss is unusually high. Ping times on your local network to 192.168.1.10 are quite bad for a LAN, and this too has many lost packets. I am surprised to see it say “+3 errors”, but say nothing about errors in the ifconfig output (if the ifconfig output took place prior to the ping issues, then we need a new ifconfig which is from after the pings…but if the ifconfig is already from after those pings took place, then you should let us know…timing matters in this case).

Unless the second ifconfig was from prior to the ping I’d say that this is 100% an issue somewhere between the ethernet cable and the destination. Something as simple as a cable not quite plugged in could be at fault, but to be more certain we need to know if that second ifconfig took place after the ping testing (hopefully it did).

You will also want to describe your LAN. Since the issue is a problem for both a route to the outside world and to the LAN, I suspect the problem is within the LAN, but there are all kinds of LAN layouts. For example, a corporate LAN with a layer 3 switch is quite different than a home or small office network switch.

Thank you @linuxdev, your insights were very helpful.

I can confirm that the second ifconfig that I posted was done after the ping testings.

My setup is a home setup and is pretty basic. In the end I tried using a different cable and plugging it directly into the modem instead of using a switch and now the connection is as fast as expected, both for other machines and to the internet.

I still don’t understand fully why the previous setup wasn’t working since it was working fine for my Xavier NX boards and I’m sure all cables were properly plugged in, but at least I’m able to have a fast connection now.

It sounds like none of this was using WiFi, which would often be the first major suspect. However, using wired and having such failures might imply your network switch (or one of the other cables on that switch) is failing. In a few cases simply rebooting a switch (power off for a few seconds, then power back on) can fix temporary problems.

About the only thing I can tell you for testing is to try different devices or computers and see what shows up as an error (or success) to narrow in on the fault.