Jan Danielsson
2016-11-20 15:34:23 UTC
Hello,
I'm having some networking issues which aren't completely unheard of;
I googled around a little and found several posts from diffierent people
describing more or less exactly this problem, but couldn't find any
solutions.
The abstract versions is: I can ping Internet from the host, I can
make very small requests ("wget http://www.netbsd.org" works fine), but
if I try to fetch something larger than a few KB, the transfer grinds to
a halt (not entirely true, I get like 50B/s (very unstable) transfer
rate, and that's not a typo, there isn't a "K" missing there, it's in
the magnitude of 50 characters per second).
Any such operations from the router works fine, it's only when
performed from any of the system on the LAN. (All host systems are
affected; NetBSD, Linux, Windows, Mac). IPv4 does not have any issues;
this only occurs with IPv6.
I looked at the traffic on the router in Wireshark while performing:
$ wget http://ftp.gnu.org/pub/gnu/tar/tar-1.29.tar.bz2
.. on the host in a setup which looks like this:
host router
(re0) <--> (wm0) (re0) <--> Modem
Asustek Intel Asustek Cisco
.. and it's immediately apparent that something is wrong. The
capture is riddled with [TCP Retransmission] and [TCP Dup ACK ...].
First entries in the capture are normal:
SYN host -> server
SYN+ACK host <- server
ACK host -> server
This is followed the actual HTTP request being sent from the host to
the server.
After that the oddities begin. The initial SYN is resent; marked in
Wireshark as a [TCP Spurious Retransmission]. The ethernet frame
indicates that the first SYN was sent from the host to the router's wm0
interface. The retransmission is sent from the routers re0 interface to
the modem.
I've attached the summary part of the capture. If anyone is
interested in a more detailed capture, I can email them.
It looks to my highly untrained eyes like the network stack is
suddenly deciding, a while after the initial SYN/ACK handshake has
completed, that the SYN was never ACK'd, so it is resent. The similar
kind of issue occurs over and over again, which causes more or less a
complete stall of the TCP traffic.
The router is running NetBSD/amd64 -7 with npf (currently configured
to just pass everything in both directions).
I'm having some networking issues which aren't completely unheard of;
I googled around a little and found several posts from diffierent people
describing more or less exactly this problem, but couldn't find any
solutions.
The abstract versions is: I can ping Internet from the host, I can
make very small requests ("wget http://www.netbsd.org" works fine), but
if I try to fetch something larger than a few KB, the transfer grinds to
a halt (not entirely true, I get like 50B/s (very unstable) transfer
rate, and that's not a typo, there isn't a "K" missing there, it's in
the magnitude of 50 characters per second).
Any such operations from the router works fine, it's only when
performed from any of the system on the LAN. (All host systems are
affected; NetBSD, Linux, Windows, Mac). IPv4 does not have any issues;
this only occurs with IPv6.
I looked at the traffic on the router in Wireshark while performing:
$ wget http://ftp.gnu.org/pub/gnu/tar/tar-1.29.tar.bz2
.. on the host in a setup which looks like this:
host router
(re0) <--> (wm0) (re0) <--> Modem
Asustek Intel Asustek Cisco
.. and it's immediately apparent that something is wrong. The
capture is riddled with [TCP Retransmission] and [TCP Dup ACK ...].
First entries in the capture are normal:
SYN host -> server
SYN+ACK host <- server
ACK host -> server
This is followed the actual HTTP request being sent from the host to
the server.
After that the oddities begin. The initial SYN is resent; marked in
Wireshark as a [TCP Spurious Retransmission]. The ethernet frame
indicates that the first SYN was sent from the host to the router's wm0
interface. The retransmission is sent from the routers re0 interface to
the modem.
I've attached the summary part of the capture. If anyone is
interested in a more detailed capture, I can email them.
It looks to my highly untrained eyes like the network stack is
suddenly deciding, a while after the initial SYN/ACK handshake has
completed, that the SYN was never ACK'd, so it is resent. The similar
kind of issue occurs over and over again, which causes more or less a
complete stall of the TCP traffic.
The router is running NetBSD/amd64 -7 with npf (currently configured
to just pass everything in both directions).
--
Kind Regards,
Jan
Kind Regards,
Jan