Re: [mpls] Last Call: <draft-ietf-mpls-in-udp-04.txt> (Encapsulating MPLS in UDP) to Proposed Standard

Joe Touch <touch@isi.edu> Tue, 28 January 2014 16:50 UTC

Return-Path: <touch@isi.edu>
X-Original-To: mpls@ietfa.amsl.com
Delivered-To: mpls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 708C51A017D; Tue, 28 Jan 2014 08:50:54 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.435
X-Spam-Level:
X-Spam-Status: No, score=-2.435 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.535] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4rP67viUTlQW; Tue, 28 Jan 2014 08:50:53 -0800 (PST)
Received: from darkstar.isi.edu (darkstar.isi.edu [128.9.128.127]) by ietfa.amsl.com (Postfix) with ESMTP id 185851A0146; Tue, 28 Jan 2014 08:50:53 -0800 (PST)
Received: from [192.168.1.91] (pool-71-105-87-112.lsanca.dsl-w.verizon.net [71.105.87.112]) (authenticated bits=0) by darkstar.isi.edu (8.13.8/8.13.8) with ESMTP id s0SGo3c5002940 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Tue, 28 Jan 2014 08:50:07 -0800 (PST)
Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\))
Content-Type: text/plain; charset="us-ascii"
From: Joe Touch <touch@isi.edu>
In-Reply-To: <201401280100.s0S10jhO097154@maildrop2.v6ds.occnc.com>
Date: Tue, 28 Jan 2014 08:49:59 -0800
Content-Transfer-Encoding: quoted-printable
Message-Id: <16B434AA-C151-490D-98C2-DE052F464640@isi.edu>
References: <201401280100.s0S10jhO097154@maildrop2.v6ds.occnc.com>
To: curtis@ipv6.occnc.com
X-Mailer: Apple Mail (2.1827)
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Cc: joel jaeggli <joelja@bogus.com>, "mpls@ietf.org" <mpls@ietf.org>, IETF discussion list <ietf@ietf.org>
Subject: Re: [mpls] Last Call: <draft-ietf-mpls-in-udp-04.txt> (Encapsulating MPLS in UDP) to Proposed Standard
X-BeenThere: mpls@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Multi-Protocol Label Switching WG <mpls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mpls>, <mailto:mpls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/mpls/>
List-Post: <mailto:mpls@ietf.org>
List-Help: <mailto:mpls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mpls>, <mailto:mpls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 28 Jan 2014 16:50:54 -0000

On Jan 27, 2014, at 5:00 PM, Curtis Villamizar <curtis@ipv6.occnc.com> wrote:

> 
> In message <52E6AB15.2080907@isi.edu>
> Joe Touch writes:
> 
>> On 1/27/2014 10:48 AM, joel jaeggli wrote:
>>> On 1/27/14, 8:48 AM, Joe Touch wrote:
>>>> Those same mechanisms have provided hardware checksum support for a very long time.
>>> 
>>> The new header and the payload are actually in different parts of the
>>> forwarding complex until they hit the output queue, you can't checksum
>>> data you don't have.
>> 
>> You can (and some do) the checksum component parts when things go into
>> memory; the partial sums can be added as the parts are combined in the
>> output queue.
>> 
>> I appreciate that we're all taking about what might be done, but the
>> reality is that there are many 'transparent TCP proxies' that have to
>> do this, so there's clearly a solution, and it clearly runs fast
>> enough.
>> 
>> Joe
> 
> 
> Joe,
> 
> Chips that did 4 x 10 Gb/s are old stuff now but in their day they
> pushed silicon limites.  Chips now do N x 100 Gb/s.

Yes, and it's 18 years later. 

> Stewart is
> describing how these chips (both the prior generation and current) are
> architected and you are going back to some idea that there is a common
> memory where this all resides and its just a matter of looking at it.
> This is not software on a general purpose processor.

I never said software; I said that the checksum can be computed as the data moves (which is how we did it in 1996).

> If a queue forms, the headers are in SRAM and the body of the packet
> is off chip in DRAM.  There isn't enough memory bandwidth to pull the
> packet back until its time to send it out.  At that point the header
> and body are joined but the header processing has been completed long
> ago.

At some point the two come back together, at which point the partial sums of the header and body can be combined and inserted in the header.

...
> If there is no queue at all cut-through can happen.  The header gets
> transmitted before the entire packet arrives at the input of the
> chip.  (And if FCS fails a runt with bad FCS goes out).
> 
> At the very least this can't work if cut-through is used to reduce
> latency.

Latency is a complex function of the bandwidth, propagation, coding, and processing delays, and there are very rare cases where cut-through reductions would impact E2E latency. 

In those cases, there are other good reasons not to use UDP encapsulation.

> When the two are joined, about the only processing is in the
> MAC, its mostly loading a shift register and serializing but it also
> does the FCS and sticks that *at the end*.  The MAC is quite
> inflexible as it is mostly silicon gates designed to do some minimal
> processing for a layer-2 such as Ethernet or GFP/OTN.
> 
> Think for a moment what N x 100 Gb/s means.  For small packets 150
> Mpps per interface with Ethernet overhead (large overhead).  That is
> 20 clock cycles per packet for a 3 GHz clock rate.  Divide that by N.
> This has to be done in specialized hardware

The hardware required is trivial, and easy to include in the same transfer mechanism used to move data (as it already has been for many years in network interfaces).

> BTW - "transparent TCP proxies" don't need to look at the payload for
> the purpose of updating a checksum.

That depends on whether the segments boundaries are preserved.

Joe