Re: [conex] byte vs packet counting
Fred Baker <fred@cisco.com> Sun, 20 November 2011 23:41 UTC
Return-Path: <fred@cisco.com>
X-Original-To: conex@ietfa.amsl.com
Delivered-To: conex@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A348A21F877F for <conex@ietfa.amsl.com>; Sun, 20 Nov 2011 15:41:16 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -109.44
X-Spam-Level:
X-Spam-Status: No, score=-109.44 tagged_above=-999 required=5 tests=[AWL=1.158, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Jny7jbdzExYJ for <conex@ietfa.amsl.com>; Sun, 20 Nov 2011 15:41:15 -0800 (PST)
Received: from ams-iport-2.cisco.com (ams-iport-2.cisco.com [144.254.224.141]) by ietfa.amsl.com (Postfix) with ESMTP id 640AF21F8753 for <conex@ietf.org>; Sun, 20 Nov 2011 15:41:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=fred@cisco.com; l=18624; q=dns/txt; s=iport; t=1321832474; x=1323042074; h=subject:mime-version:from:in-reply-to:date:cc:message-id: references:to; bh=Uo0cOmmC+849LxN+sNrwOERkF3eqG5O+DHD3cKZ/BaM=; b=gUO1alLNThC2QJgxMM63B/2vIltNave1NOTnF5Pk3AA9aSeH+DsEcfac opGXOFDBboIqC+coTDjIl+2nT70TUtBosO5BeW/l9V/W2Jkguz0m3dxz8 PrGDmqG0QjMBZzq0LmX8UOwvlSKAmRkUGU0ZOWJEmJV7T5PyhsPhQC8bo s=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Av4EAFqPyU5Io8UQ/2dsb2JhbABDqj+BBYFyAQEBAwEBAQELBAFSCQIJBQsLGC4nMAYTIodhCJUpAZ0nBIk0YwSIGIwkhT2MVQ
X-IronPort-AV: E=Sophos; i="4.69,544,1315180800"; d="scan'208,217"; a="60088954"
Received: from bgl-core-1.cisco.com ([72.163.197.16]) by ams-iport-2.cisco.com with ESMTP; 20 Nov 2011 23:41:12 +0000
Received: from [10.88.5.185] (sin-vpn-client-20-220.cisco.com [10.68.20.220]) by bgl-core-1.cisco.com (8.14.3/8.14.3) with ESMTP id pAKNfBGU019112; Sun, 20 Nov 2011 23:41:11 GMT
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: multipart/alternative; boundary="Apple-Mail-129--72112536"
From: Fred Baker <fred@cisco.com>
In-Reply-To: <201111201956.pAKJuJSQ007421@bagheera.jungle.bt.co.uk>
Date: Mon, 21 Nov 2011 07:41:10 +0800
Message-Id: <BF57849D-5B8F-4BAD-B47B-D9CC6EAB5E54@cisco.com>
References: <201111171402.pAHE26tB006646@bagheera.jungle.bt.co.uk> <CAH56bmBhg6VpDMKye+GO_=gN-MAjskTMaAznhYSJm3N4R6Zjtg@mail.gmail.com> <CAH56bmD2fh3sm4mozh17K2C+K0Pxyw7vRvykCo9Xt-jeEP36ZQ@mail.gmail.com> <201111201956.pAKJuJSQ007421@bagheera.jungle.bt.co.uk>
To: Bob Briscoe <bob.briscoe@bt.com>
X-Mailer: Apple Mail (2.1084)
Cc: ConEx IETF list <conex@ietf.org>
Subject: Re: [conex] byte vs packet counting
X-BeenThere: conex@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Congestion Exposure working group discussion list <conex.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/conex>, <mailto:conex-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/conex>
List-Post: <mailto:conex@ietf.org>
List-Help: <mailto:conex-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/conex>, <mailto:conex-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Nov 2011 23:41:16 -0000
on the matter of bytes and packets, as I tried (apparently unsuccessfully) to say in the other email, what I am worried about first is time, which both bytes and packets are a readily-measured analog to. When I probed to see what interface someone knew about that sent messages as messages rather than a string of bits, I was told that WiFi measurably operates with an upper bound packet rate and is the poster child for packet-based interfaces. Great, but there is no single device that can perceive or measure it that way - wonderful academic observation, but I have no idea how to use it in an implementation. The point on a WiFi interface is neither that I have too many bytes or packets queued up; the point is that one of those is true in the context of a congested shared medium, and we *also* have to get control of the medium. I find myself interested in bytes-as-an-analog-for-time on a non-shared interface and time on a shared interface, in both cases because I can measure them in an implementation. On Nov 21, 2011, at 3:56 AM, Bob Briscoe wrote: > Matt, > > [Adding the ConEx list back in] > > I think we're both now agreeing that the /goal/ should be byte-balance for ConEx auditing. Correct? > > I am also in full agreement that this goal isn't always easy to meet if retrofitting ConEx onto an existing transport like TCP. It works if the packet sizes are regular, but if they are lumpy, the sender is likely to understate or overstate. And I agree that these aren't necessarily just corner-cases (well, I guess there is a large set of cases with regular packet sizes, but the corner is also quite large). > > You ask what I think we should do about this. My view, we should: > a) state what the goal should be for all transports (byte-balance) > b) give advice on how to implement a TCP sender to do as well as it can > c) run experiments and see whether the outcome is good enough, or if further protocol mechanism is needed. > > Concerning (b) advice on the best that TCP implementations can do: > - the TCP receiver (if optionally supporting ConEx) should suppress ACK delay whenever it detects congestion and instead give immediate feedback > - TCP sender can use ack sequence numbers to improve its guess of the required size of an re-echo-loss or re-echo-ECN > - If the receiver is not ConEx-aware, a sender that knows it is sending lumpy packet sizes can introduce additional credit to cover any mistakes. > > If a ConEx sender does unintentionally understate bytes of congestion, the auditor will discard some packets, then the sender will redress the balance with some more re-echo-loss and it should all heal itself, albeit having suffered some losses in the process. > > Do you think this is sufficient (at least to run experiments to test whether it is)? > > > > Bob > > At 20:55 18/11/2011, Matt Mathis wrote: >> So here is a pathology: I have an application that sends 15001 bytes (10 segments + 1 byte), followed by 1 byte beacons every 10 second for 100 seconds and then the entire pattern repeats (total of 10*1500 + 10*1 segments every 100 seconds). >> >> Now suppose there are ECN marks near the end of the burst on every repeat. How does this get signaled, and what is the correct sender response? Due to delayed ACKs it may be ambiguous exactly which segment was marked (e.g. was it 1500 or 1 bytes?) Even if the sender knows for sure that it was the 1500 byte segment that was marked, it has to wait until the next burst to send the proper feedback. >> >> The problem is the ACKs carry the count of the number of marked segments, not marked bytes. Also the re-feed itself has no size, except the length of the segments carrying it. >> >> What do you think should happen in this case? >> (BTW modern persistent web protocols, such as SPDY do stuff like this all the time, although perhaps not as extreme as my example. BGP also has streaming data with very irregular message sizes.) >> >> This would be completely clear if the ACKs and re-feedback were counts of bytes. >> >> Thanks, >> --MM-- >> The best way to predict the future is to create it. - Alan Kay >> >> >> >> On Thu, Nov 17, 2011 at 7:07 PM, Matt Mathis <mattmathis@google.com> wrote: >> >> I'm sorry I did not make my self clear. I understand and agree with your argument. >> >> The problem is when the forward path is carrying lumpy data : highly irregular segment sizes, typical of streaming media, p-http, or bgp at edge of the onset of congestion. When there is an ecn mark the ack only indicates that a segment was marked and not its size. If the sender has a choice of segments to re-feedback it has has no idea which to choose. Worse it >> may not have a choice. Furthermore under pathological conditions it will persistently get it wrong. >> >> I can explain better when I have a real. Keyboard. >> On Nov 17, 2011 10:02 PM, "Bob Briscoe" <bob.briscoe@bt.com> wrote: >> Matt, >> >> This issue has come up in at least two threads recently: "Congestion" vs. "Congestion Volume" and "byte-counting in conex-destopt" >> >> Consider the buffer into the high speed line you were talking about this morning - it holds packets in equal MTU-sized packet buffers, whatever the packet size. >> >> When it buffers packets, we need to ask what exactly is congested: the line or the buffer? In this case, the line is congested. Packets are temporarily in the buffer because more bits arrived than departed. The queue is merely a symptom of how congested the line is. Certainly, once the buffer gets full, we could say the buffer has become congested too. But the root of the problem is how fast the line can carry away the bits. >> >> If the queue was building up behind forwarding look-ups or a firewall, then the problem would be the number of packets headers, not bits. But if it's a queue into a transmission line, the problem is bits. >> >> The point is, whether to count bits or packets depends on the process /in front/ of the queue (whether its a bit transmission line or processing packet headers). The internals of the buffer itself are irrelevant. >> >> Then the question is how prevalent are per-packet processes as sources of congestion? Answer: There seems to be good reason why per-packet congestion will remain in the minority relative to per-byte... >> >> During the process of writing draft-ietf-byte-pkt-congest, all the machine design folk who were consulted said that machines are generally designed so that any per-packet-processing can cope with a workload at line rate consisting mostly of small packets. >> >> IOW, machine designs tend to use bit-congestion to protect the packet-processor from congestion. >> >> ____________________ >> For those who prefer an example, assume: >> MTU, M = 1,500B = 12,000b >> Line rate, X = 48Gbps >> >> [The numbers are chosen to make the maths easy, not to reflect typical scenarios. I'm going to work in bits not bytes from now on.] >> >> Imagine at some time that 260 of these fixed-size packet buffers are full, with 10 large and 250 small packets. >> >> packet size | S | 12,000b | 480b | >> no. pkts buffered | N | 10 | 250 | >> buffer space used | NM | 120kb | 3Mb | >> pkt bits buffered | NS | 120kb | 120kb | >> time to drain all | NS/X | 2,500ns | 2,500ns | >> >> Although each small packet takes up the same space in the buffer as a large packet, it's faster to get rid of it. 250 small packets take as long to drain as 10 large packets. >> >> >> Bob >> >> >> ________________________________________________________________ >> Bob Briscoe, BT Innovate & Design >> > ________________________________________________________________ > Bob Briscoe, BT Innovate & Design > > _______________________________________________ > conex mailing list > conex@ietf.org > https://www.ietf.org/mailman/listinfo/conex
- Re: [conex] byte vs packet counting Bob Briscoe
- Re: [conex] byte vs packet counting John Leslie
- Re: [conex] byte vs packet counting Bob Briscoe
- Re: [conex] byte vs packet counting Fred Baker
- Re: [conex] byte vs packet counting Bob Briscoe
- Re: [conex] byte vs packet counting John Leslie
- Re: [conex] byte vs packet counting Bob Briscoe
- Re: [conex] byte vs packet counting John Leslie
- Re: [conex] byte vs packet counting Bob Briscoe
- Re: [conex] byte vs packet counting Dirk Kutscher
- Re: [conex] byte vs packet counting Matt Mathis
- Re: [conex] byte vs packet counting John Leslie
- Re: [conex] byte vs packet counting John Leslie
- [conex] Fwd: byte vs packet counting Toby Moncaster
- Re: [conex] byte vs packet counting John Leslie
- Re: [conex] byte vs packet counting Toby Moncaster
- Re: [conex] byte vs packet counting Bob Briscoe
- Re: [conex] byte vs packet counting Toby Moncaster
- Re: [conex] byte vs packet counting John Leslie
- [conex] Catching "Cheaters" John Leslie