Messages in this thread | | | From | Jeff Epler <> | Subject | 1.3.72: Acks, both double and missing, affect slip rx speed | Date | Sun, 10 Mar 1996 18:03:15 -0600 (CST) |
| |
[Originally posted to linux.dev.{net,kernel}. They haven't shown up on the vger list archive after about a week, so I'm reposting directly. I would appreciate a cc: of your responses. I follow linux.dev.net, but our feed of it here seems pretty shaky.]
Summary: Double-acks are the least of my problems. Linux doesn't like to ack short packets on high volume connections, and this kills throughput.
Vital info: cslip, mtu 296, kernel 1.3.71, diald-0.12, 14.4k no-name modem, low ftp speeds of ~800cps.
Long version: I've been having a problem with Linux lately, since mid-50's kernels. I get disappointingly low speed on ftp 'get' commands over my slip link. Everything is set up correctly with my provider (mtu 296, cslip, &c) and things work great under kernel 1.2.9. I use diald, but the problems also exist with dip (in slip or cslip mode) and when using pppd (2.2.0e). The problem also exists when I connect Linux to slirp rather than my provider's slip server. Also, in both DOS and Linux I get flawless zmodem transfers at >1600cps. In no case is transmit speed out of the linux box affected, that's as snappy as ever.
Using tcpdump on the connection, I have cut out what I suspect are the relevant portions. The problem seems to go like this:
Some tcp connection is going full blast. Then, for one reason or another, I get a less than full packet (<256 bytes, in this case). Linux fails to ack the packet (discarding it entirely?), and further packets coming for that socket get discarded till the remote side rewinds. This time it gives a full-sized packet and then Linux happily acks (double acks everywhere, you'll notice) and the transfer begins again.
This dump was produced with Linux 1.3.71, the connection was made by diald. I snipped out some extraneous stuff (the stuff on the ftp port, otherwise the slip line was unused at the time I ran this) and many lines at the end. I have verified that this problem remains in 1.3.72.
I hope someone here has a guess about what is going on here. I don't think it's an error on my part, but maybe..
Tcpdump output (Tcpdump-3.0.2-linux):
[Craie is running linux, falcon is running sunos 3.something. However, this problem seems not confined to sun-running systems] 08:17:39.329703 falcon.ftp-data > craie.1273: S 1494784000:1494784000(0) win 24576 <mss 1460> 08:17:39.329703 craie.1273 > falcon.ftp-data: S 3275435241:3275435241(0) ack 1494784001 win 13312 <mss 256> [tos 0x8] 08:17:39.549703 falcon.ftp-data > craie.1273: . ack 1 win 24576 08:17:39.779703 falcon.ftp-data > craie.1273: . 1:257(256) ack 1 win 24576 08:17:39.779703 craie.1273 > falcon.ftp-data: . ack 257 win 13312 08:17:39.779703 craie.1273 > falcon.ftp-data: . ack 257 win 13312 08:17:39.889703 falcon.ftp-data > craie.1273: . 257:513(256) ack 1 win 24576 08:17:39.889703 craie.1273 > falcon.ftp-data: . ack 513 win 13312 08:17:39.889703 craie.1273 > falcon.ftp-data: . ack 513 win 13312 08:17:39.999703 falcon.ftp-data > craie.1273: . 513:769(256) ack 1 win 24576 08:17:39.999703 craie.1273 > falcon.ftp-data: . ack 769 win 13312 08:17:39.999703 craie.1273 > falcon.ftp-data: . ack 769 win 13312 [.. snip: all the packets in here had 256 bytes of data and were double acked] 08:17:48.909703 falcon.ftp-data > craie.1273: . 30465:30721(256) ack 1 win 24576 08:17:48.909703 craie.1273 > falcon.ftp-data: . ack 30721 win 13312 08:17:48.909703 craie.1273 > falcon.ftp-data: . ack 30721 win 13312 [Trouble starts: Packet with <256 data bytes comes, and the acks stop] 08:17:48.969703 falcon.ftp-data > craie.1273: . 30721:30976(255) ack 1 win 24576 08:17:49.039703 falcon.ftp-data > craie.1273: . 30976:31214(238) ack 1 win 24576 08:17:49.109703 falcon.ftp-data > craie.1273: . 31214:31470(256) ack 1 win 24576 08:17:49.179703 falcon.ftp-data > craie.1273: . 31470:31726(256) ack 1 win 24576 08:17:49.249703 falcon.ftp-data > craie.1273: . 31726:31982(256) ack 1 win 24576 08:17:49.309703 falcon.ftp-data > craie.1273: . 31982:32238(256) ack 1 win 24576 08:17:49.379703 falcon.ftp-data > craie.1273: . 32238:32494(256) ack 1 win 24576 08:17:49.449703 falcon.ftp-data > craie.1273: . 32494:32750(256) ack 1 win 24576 08:17:49.519703 falcon.ftp-data > craie.1273: . 32750:33006(256) ack 1 win 24576 08:17:49.579703 falcon.ftp-data > craie.1273: . 33006:33262(256) ack 1 win 24576 08:17:49.649703 falcon.ftp-data > craie.1273: . 33262:33518(256) ack 1 win 24576 08:17:49.719703 falcon.ftp-data > craie.1273: . 33518:33774(256) ack 1 win 24576 08:17:49.789703 falcon.ftp-data > craie.1273: . 33774:34030(256) ack 1 win 24576 08:17:49.849703 falcon.ftp-data > craie.1273: . 34030:34286(256) ack 1 win 24576 08:17:49.919703 falcon.ftp-data > craie.1273: . 34286:34542(256) ack 1 win 24576 08:17:49.989703 falcon.ftp-data > craie.1273: . 34542:34798(256) ack 1 win 24576 08:17:50.059703 falcon.ftp-data > craie.1273: . 34798:35054(256) ack 1 win 24576 08:17:50.119703 falcon.ftp-data > craie.1273: . 35054:35310(256) ack 1 win 24576 08:17:50.189703 falcon.ftp-data > craie.1273: . 35310:35566(256) ack 1 win 24576 08:17:50.259703 falcon.ftp-data > craie.1273: . 35566:35822(256) ack 1 win 24576 08:17:50.329703 falcon.ftp-data > craie.1273: . 35822:36078(256) ack 1 win 24576 08:17:50.389703 falcon.ftp-data > craie.1273: . 36078:36334(256) ack 1 win 24576 08:17:50.459703 falcon.ftp-data > craie.1273: . 36334:36590(256) ack 1 win 24576 08:17:50.529703 falcon.ftp-data > craie.1273: . 36590:36846(256) ack 1 win 24576 08:17:50.599703 falcon.ftp-data > craie.1273: . 36846:37102(256) ack 1 win 24576 08:17:50.669703 falcon.ftp-data > craie.1273: . 37102:37358(256) ack 1 win 24576 08:17:50.729703 falcon.ftp-data > craie.1273: . 37358:37614(256) ack 1 win 24576 08:17:50.799703 falcon.ftp-data > craie.1273: . 37614:37870(256) ack 1 win 24576 08:17:50.869703 falcon.ftp-data > craie.1273: . 37870:38126(256) ack 1 win 24576 08:17:50.939703 falcon.ftp-data > craie.1273: . 38126:38382(256) ack 1 win 24576 08:17:51.009703 falcon.ftp-data > craie.1273: . 38382:38638(256) ack 1 win 24576 08:17:51.069703 falcon.ftp-data > craie.1273: . 38638:38894(256) ack 1 win 24576 08:17:51.139703 falcon.ftp-data > craie.1273: . 38894:39150(256) ack 1 win 24576 08:17:51.209703 falcon.ftp-data > craie.1273: . 39150:39406(256) ack 1 win 24576 08:17:51.279703 falcon.ftp-data > craie.1273: . 39406:39662(256) ack 1 win 24576 08:17:51.339703 falcon.ftp-data > craie.1273: . 39662:39918(256) ack 1 win 24576 08:17:51.409703 falcon.ftp-data > craie.1273: . 39918:40174(256) ack 1 win 24576 08:17:51.479703 falcon.ftp-data > craie.1273: . 40174:40430(256) ack 1 win 24576 08:17:51.549703 falcon.ftp-data > craie.1273: . 40430:40686(256) ack 1 win 24576 08:17:51.609703 falcon.ftp-data > craie.1273: . 40686:40942(256) ack 1 win 24576 08:17:51.679703 falcon.ftp-data > craie.1273: . 40942:41198(256) ack 1 win 24576 08:17:51.749703 falcon.ftp-data > craie.1273: . 41198:41454(256) ack 1 win 24576 08:17:51.819703 falcon.ftp-data > craie.1273: . 41454:41710(256) ack 1 win 24576 08:17:51.879703 falcon.ftp-data > craie.1273: . 41710:41966(256) ack 1 win 24576 08:17:51.949703 falcon.ftp-data > craie.1273: . 41966:42222(256) ack 1 win 24576 08:17:52.019703 falcon.ftp-data > craie.1273: . 42222:42478(256) ack 1 win 24576 08:17:52.089703 falcon.ftp-data > craie.1273: . 42478:42734(256) ack 1 win 24576 08:17:52.149703 falcon.ftp-data > craie.1273: . 42734:42990(256) ack 1 win 24576 08:17:52.219703 falcon.ftp-data > craie.1273: . 42990:43246(256) ack 1 win 24576 08:17:52.289703 falcon.ftp-data > craie.1273: . 43246:43502(256) ack 1 win 24576 08:17:52.359703 falcon.ftp-data > craie.1273: . 43502:43758(256) ack 1 win 24576 08:17:52.419703 falcon.ftp-data > craie.1273: . 43758:44014(256) ack 1 win 24576 [Falcon gives up on the ack, backs up .. But this time sends a 256-byte packet] 08:17:54.599703 falcon.ftp-data > craie.1273: . 30721:30977(256) ack 1 win 24576 08:17:54.599703 craie.1273 > falcon.ftp-data: . ack 30977 win 13312 08:17:54.599703 craie.1273 > falcon.ftp-data: . ack 30977 win 13312 08:17:54.909703 falcon.ftp-data > craie.1273: . 30977:31233(256) ack 1 win 24576 08:17:54.909703 craie.1273 > falcon.ftp-data: . ack 31233 win 13312 08:17:54.909703 craie.1273 > falcon.ftp-data: . ack 31233 win 13312 [.. Deletia again] 08:18:03.979703 falcon.ftp-data > craie.1273: . 62977:63233(256) ack 1 win 24576 08:18:03.979703 craie.1273 > falcon.ftp-data: . ack 63233 win 13312 08:18:04.039703 craie.1273 > falcon.ftp-data: . ack 63233 win 13312 08:18:04.049703 falcon.ftp-data > craie.1273: . 63233:63484(251) ack 1 win 24576 [.. Snip] 08:18:06.009703 falcon.ftp-data > craie.1273: . 70642:70898(256) ack 1 win 24576 [Resumes normality here, until next short packet] 08:18:08.579703 falcon.ftp-data > craie.1273: . 63233:63489(256) ack 1 win 24576 08:18:08.579703 craie.1273 > falcon.ftp-data: . ack 63489 win 13312 08:18:08.579703 craie.1273 > falcon.ftp-data: . ack 63489 win 13312 [.. Deletia till end] -- \/ Jeff Epler jepler@{inetnebr.com|cse.unl.edu|herbie.unl.edu|nyx.cs.du.edu}
| |