From: "Mike Black" <mblack@csihq.com>
To: "Robert Kleemann" <robert@kleemann.org>, <linux-kernel@vger.kernel.org>
Subject: Re: Client receives TCP packets but does not ACK
Date: Fri, 15 Jun 2001 08:44:36 -0400 [thread overview]
Message-ID: <025c01c0f598$f04d0f30$e1de11cc@csihq.com> (raw)
In-Reply-To: <Pine.LNX.4.33.0106142028150.1149-100000@localhost.localdomain>
Here's the end of my run -- I assume this means my config works OK?
I'm on a dual PIII/600 linux-2.4.6-pre3 -- ran it all on the local host.
received msg#90, name pad1, 1 blocks, 12 total bytes
received msg#91, name pad1, 1 blocks, 12 total bytes
received msg#92, name class tande.server.ClientMap, 1624 blocks, 3244 total
bytes
received msg#93, name pad1, 1 blocks, 12 total bytes
received msg#94, name pad1, 1 blocks, 12 total bytes
received msg#95, name pad1, 1 blocks, 12 total bytes
received msg#96, name class tande.server.ClientMap, 1624 blocks, 3244 total
bytes
successfully read all blocks
I'm concerned that you're probably just overruning your IP stack:
foreach $block (@blocks) {
print $client $block;
$bytes += length($block);
}
TCP is NOT a guaranteed protocol -- you can't just blast data from one port
to another and expect it to work.
a tcp-write is NOT guaranteed -- and as you've seen -- a recv() isn't either
(that's why you need timeouts).
You're probably overrunning the tcp buffer on your "print" statement and
truncating a block.
I don't see where you're checking for EAGAIN or EWOULDBLOCK (see man
send).
Not real sure how to do this in perl...
You need a layer-7 protocol that will guarantee your transactions -- once
you're client acks/naks your server I'll bet everything works hunky-dory.
If you're not familiar with the OSI model
http://www.csihq.com/~mike/students/networking/iso/isomodel.html
________________________________________
Michael D. Black Principal Engineer
mblack@csihq.com 321-676-2923,x203
http://www.csihq.com Computer Science Innovations
http://www.csihq.com/~mike My home page
FAX 321-676-2355
----- Original Message -----
From: "Robert Kleemann" <robert@kleemann.org>
To: <linux-kernel@vger.kernel.org>
Sent: Thursday, June 14, 2001 11:50 PM
Subject: Re: Client receives TCP packets but does not ACK
A couple people have requested a test case.
The problem first showed up in a very large java app. Since then I
wrote a small perl program to duplicate the behavior of the large app
by sending the same data, in the same order, in the same sized blocks,
from the server to the client.
If you want to test this on your configuration then download the
following two files:
http://www.kleemann.org/crap/clientserver
http://www.kleemann.org/crap/log1e1.txt
Place a copy of the files in the same directory on both the client and
the server and run the program the following way:
[server]$ ./clientserver -s log1e1.txt
listening on port 20001
[client]$ ./clientserver -c serverhostname log1e1.txt
The server will attempt to send the data to the client which then
verifies each byte received.
My client generally stops ack-ing between messages 15 and 25.
Robert.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2001-06-15 12:44 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-06-13 0:26 Client receives TCP packets but does not ACK Robert Kleemann
2001-06-15 3:50 ` Robert Kleemann
2001-06-15 12:44 ` Mike Black [this message]
2001-06-15 18:29 ` Albert D. Cahalan
2001-06-15 23:10 ` Robert Kleemann
2001-06-16 11:55 ` Mike Black
2001-06-16 23:56 ` Robert Kleemann
2001-06-27 1:04 ` Robert Kleemann
[not found] <Pine.LNX.4.33.0106121720310.1152-100000@localhost.localdomain.suse.lists.linux.kernel>
2001-06-13 8:48 ` Andi Kleen
2001-06-13 16:09 ` Robert Kleemann
2001-06-15 12:53 Heusden, Folkert van
2001-06-15 18:27 ` Mike Black
2001-06-15 18:39 ` Gérard Roudier
2001-06-15 19:12 ` Alan Cox
2001-06-17 18:17 ` Pavel Machek
2001-06-17 19:32 ` Alan Cox
2001-06-17 19:40 ` Dan Podeanu
[not found] ` <200106172113.f5HLDhJ377473@saturn.cs.uml.edu>
2001-06-17 22:09 ` Dan Podeanu
2001-06-17 22:35 ` dean gaudet
2001-06-18 11:50 ` Jan Hudec
2001-06-18 16:17 ` dean gaudet
2001-06-18 16:48 ` Jonathan Morton
2001-06-18 22:30 ` dean gaudet
2001-06-18 23:43 ` Jonathan Morton
2001-06-19 2:46 ` dean gaudet
2001-06-20 21:01 ` David Schwartz
[not found] <E15BiHy-0002xC-00@the-village.bc.nu.suse.lists.linux.kernel>
2001-06-17 20:21 ` Andi Kleen
2001-07-01 21:27 Nivedita Singhvi
2001-07-11 3:43 ` Robert Kleemann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='025c01c0f598$f04d0f30$e1de11cc@csihq.com' \
--to=mblack@csihq.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robert@kleemann.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).