public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "David S. Miller" <davem@dm.cobaltmicro.com>
To: mrj@i2k.com
Cc: linux-kernel@vger.rutgers.edu
Subject: Re: Very poor TCP/SACK performance
Date: Tue, 8 Sep 1998 18:14:54 -0700	[thread overview]
Message-ID: <199809090114.SAA05738@dm.cobaltmicro.com> (raw)
In-Reply-To: <Pine.LNX.4.02.9809081543110.334-100000@jeffd.i2k.net> (message from Jeff DeFouw on Tue, 8 Sep 1998 17:10:10 -0400 (EDT))

   Date: Tue, 8 Sep 1998 17:10:10 -0400 (EDT)
   From: Jeff DeFouw <mrj@i2k.com>

   On Tue, 8 Sep 1998, David S. Miller wrote:

   > But if you provide more dumps to help me debug this problem could
   > you please rebuild tcpdump with the patch I have appended at the end?
   > The stock tcpdump does not output SACK information from TCP packets
   > properly without the patch.  The stock tcpdump uses the pre-RFC format
   > of the SACKS which is nothing like real modern SACKs in use today :-)

     Did you forget to append the patch, or is there somewhere I can get it?

Sorry, here it is:

--- tcpdump-3.3/tcpdump-3.3/print-tcp.c.orig	Tue Dec 10 23:26:08 1996
+++ tcpdump-3.3/tcpdump-3.3/print-tcp.c	Thu Mar 19 23:46:33 1998
@@ -103,8 +103,8 @@
 	register int hlen;
 	register char ch;
 	u_short sport, dport, win, urp;
-	u_int32_t seq, ack;
-
+	u_int32_t seq, ack,thseq,thack;	
+        int threv;
 	tp = (struct tcphdr *)bp;
 	ip = (struct ip *)bp2;
 	ch = '\0';
@@ -162,7 +162,7 @@
 			tha.port = dport << 16 | sport;
 			rev = 1;
 		}
-
+		threv = rev;
 		for (th = &tcp_seq_hash[tha.port % TSEQ_HASHSIZE];
 		     th->nxt; th = th->nxt)
 			if (!memcmp((char *)&tha, (char *)&th->addr,
@@ -183,6 +183,10 @@
 			else
 				th->seq = seq, th->ack = ack - 1;
 		} else {
+		  
+		        thseq = th->seq;
+                        thack = th->ack;
+
 			if (rev)
 				seq -= th->ack, ack -= th->seq;
 			else
@@ -263,18 +267,32 @@
 				break;
 
 			case TCPOPT_SACK:
-				(void)printf("sack");
-				datalen = len - 2;
-				for (i = 0; i < datalen; i += 4) {
-					LENCHECK(i + 4);
-					/* block-size@relative-origin */
-					(void)printf(" %u@%u",
-					    EXTRACT_16BITS(cp + i + 2),
-					    EXTRACT_16BITS(cp + i));
+			  {
+			    u_int32_t s, e;
+
+			    datalen = len - 2;
+			    if (datalen % 8 != 0) {
+				(void)printf(" malformed sack ");
+			    } else {
+				(void)printf(" sack %d ", datalen / 8);
+				for (i = 0; i < datalen; i += 8) {
+				    LENCHECK(i + 4);
+				    s = EXTRACT_32BITS(cp + i);
+				    LENCHECK(i + 8);
+				    e = EXTRACT_32BITS(cp + i + 4);
+				    if (threv) {
+					s -= thseq;
+					e -= thseq;
+				    } else {
+					s -= thack;
+					e -= thack;
+				    }
+				    (void)printf("{%u:%u}", s, e);
 				}
-				if (datalen % 4)
-					(void)printf("[len %d]", len);
-				break;
+				(void)printf(" ");
+			    }
+			    break;
+			  }
 
 			case TCPOPT_ECHO:
 				(void)printf("echo");

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/faq.html

       reply	other threads:[~1998-09-09  4:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.02.9809081543110.334-100000@jeffd.i2k.net>
1998-09-09  1:14 ` David S. Miller [this message]
     [not found] <Pine.LNX.4.02.9809062347430.3952-100000@jeffd.i2k.net>
     [not found] ` <19980908232117.A859@math.fu-berlin.de>
1998-09-09 22:33   ` Very poor TCP/SACK performance Chris Wedgwood

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=199809090114.SAA05738@dm.cobaltmicro.com \
    --to=davem@dm.cobaltmicro.com \
    --cc=linux-kernel@vger.rutgers.edu \
    --cc=mrj@i2k.com \
    /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