Re: [rtcweb] PseudoTCP implementation (Re: realiable data service)

Justin Uberti <juberti@google.com> Sun, 24 July 2011 15:03 UTC

Return-Path: <juberti@google.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5991A21F874B for <rtcweb@ietfa.amsl.com>; Sun, 24 Jul 2011 08:03:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -105.976
X-Spam-Level:
X-Spam-Status: No, score=-105.976 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 13ESMXb2nbbY for <rtcweb@ietfa.amsl.com>; Sun, 24 Jul 2011 08:03:35 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [216.239.44.51]) by ietfa.amsl.com (Postfix) with ESMTP id 485A221F86F6 for <rtcweb@ietf.org>; Sun, 24 Jul 2011 08:03:34 -0700 (PDT)
Received: from wpaz29.hot.corp.google.com (wpaz29.hot.corp.google.com [172.24.198.93]) by smtp-out.google.com with ESMTP id p6OF3Xip015663 for <rtcweb@ietf.org>; Sun, 24 Jul 2011 08:03:33 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1311519814; bh=RPDQzo3cFEFOC1OT/2+9a46uFGU=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=MvhlR709Bz7+NeBnYzqknYzoFwBhOTLAO759qibW1qFTsTtVosGQ5D6J5bp1kEmFr dUggOWGyh2/PEXaaYFbvg==
DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=dkim-signature:mime-version:in-reply-to:references:from:date: message-id:subject:to:cc:content-type:x-system-of-record; b=GSJ9tWjyUvT7O/Yceywk5S+BYsatVczcBaXnSEElVcvff/sHH3kwI2E0yBhb7In+n +Q+iVb+BT5e00AzxfjusA==
Received: from iyh42 (iyh42.prod.google.com [10.241.50.234]) by wpaz29.hot.corp.google.com with ESMTP id p6OF3Wtw013847 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for <rtcweb@ietf.org>; Sun, 24 Jul 2011 08:03:33 -0700
Received: by iyh42 with SMTP id 42so5155951iyh.25 for <rtcweb@ietf.org>; Sun, 24 Jul 2011 08:03:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=beta; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=nL4zkH/oyUnBX5oWs/wYTRyHWQux7RvtMZep5L1O1is=; b=mHU5Ee3DOC0p3ubQvlNDtGDgIOeFk80j0LKGBP8awp8bjKZT3EMjC7jeIy9u2EAd+t l+ihkeayzlIPwjujNzQw==
Received: by 10.231.64.67 with SMTP id d3mr3641260ibi.113.1311519812419; Sun, 24 Jul 2011 08:03:32 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.231.36.197 with HTTP; Sun, 24 Jul 2011 08:03:12 -0700 (PDT)
In-Reply-To: <87CA4E28-DF95-4A03-9809-BC1B2077B4B1@cisco.com>
References: <4E0832FE.7010401@ericsson.com> <4E1DC07B.7000807@ericsson.com> <D1BE71E1-4F3B-474E-8A28-AA53CE6B684E@cisco.com> <CA+9kkMCJiE+bfEqZzOBo46aXVH-H2sehHh6UJv3tVdJKGjaokQ@mail.gmail.com> <49CD37FC-7951-45A0-84C4-A443F8B151F3@cisco.com> <4E24AF7C.4080604@jesup.org> <CB57E808-FB8D-41D7-90C6-0EA1051629A8@cisco.com> <4E26D4D6.3020602@alvestrand.no> <CAOJ7v-3RLhaxOWyNJ6p4nE7QyFxOCAeM7xoENPvNhYhoDmyKOw@mail.gmail.com> <87CA4E28-DF95-4A03-9809-BC1B2077B4B1@cisco.com>
From: Justin Uberti <juberti@google.com>
Date: Sun, 24 Jul 2011 08:03:12 -0700
Message-ID: <CAOJ7v-10h-Tu14EOvKZOnG-Yt6My2vOKZHs--70b=t18and9pQ@mail.gmail.com>
To: Cullen Jennings <fluffy@cisco.com>
Content-Type: multipart/alternative; boundary="000e0cd4b4228901e704a8d200d9"
X-System-Of-Record: true
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] PseudoTCP implementation (Re: realiable data service)
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 24 Jul 2011 15:03:36 -0000

On Fri, Jul 22, 2011 at 7:33 PM, Cullen Jennings <fluffy@cisco.com> wrote:

>
> On Jul 20, 2011, at 8:37 , Justin Uberti wrote:
>
> >
> >
> > On Wed, Jul 20, 2011 at 9:15 AM, Harald Alvestrand <harald@alvestrand.no>
> wrote:
> > On 07/20/11 03:13, Cullen Jennings wrote:
> > On Jul 18, 2011, at 15:11 , Randell Jesup wrote:
> >
> > All that said - yes, there are complexity issues to consider, which was
> why I was suggesting leveraging
> > an existing tunneled protocol like SCTP or even TCP-over-UDP.
> > I agree with bunch of what you are saying but the previous several times
> I've seen the use SCTP over UDP conversation, it usually ends about the
> point the we ask for a user land implementation. Whatever we do more or less
> has to be user land or already exist in the OS that people run browsers on.
> >
> > If someone has a user land implementation of SCTP or TCP, I imagine that
> might change the outcome a bit from previous times. I have not looked at the
> TCP over UPD library Justin mentioned but, at casual glance, I noticed is
> around 400 lines of code which is very small, which is cool. But given the
> lines of code in say the BSD TCP stack, it does make me wonder what's
> missing. That said, I don't think we need something with the perforce of the
> BSD TCP stack as long as what is there is TCP friendly and robust.
> > I believe this is the current URL:
> >
> >
> http://code.google.com/p/libjingle/source/browse/trunk/talk/session/tunnel/pseudotcpchannel.cc(500 or so lines).
> >
> > The real protocol implementation is here:
> >
> http://code.google.com/p/libjingle/source/browse/trunk/talk/p2p/base/pseudotcp.cc
> > which is another 1000 lines (not counting the various .h files).
> >
> > We're not THAT good at writing compact code :-)
> >
> > Yes, I was going to send a similar email. There are some
> deficiencies/optimizations for the fact it runs over ICE-UDP - doesn't do
> path MTU discovery, no checksum, no OOB data - but it is based on TCP and
> implements slow start and other congestion avoidance mechanisms, and is
> actively used by a number of applications where reliable transfer is
> important, such as file transfer and remote desktop applications.
> >
> >
>
> It would be really interesting to see someone write a draft that subsets
> TCP to make it
>
> 1) still be congestion safe and TCP friendly
>
> 2) be valid TCP from point of view nats and firewalls
>
> 3) match an implementation like the one you have here.
>
> Most our use cases do not need OOB data. A subset protocol that was missing
> something like path MTU discovery might be slower than full blown modern TCP
> but again, most out use cases would still work just fine. As much as the
> IETF hates sub setting protocols, having something concrete and in hand like
> this would be a pretty useful thing. As well as being useful for the wwebrtc
> work, something like this would be useful for very constrained systems such
> very cheap sensor networks. I'm seeing lots of really minimal subset of TCP
> being done for these very low end system.
>

Interesting. From the webrtc context, the requirements are a little
different - e.g. when we're running as TCP/UDP, we don't need the port or
checksum, as those are handled by the UDP layer.

So the goal would become two specs:
(1) minimal subset of TCP
(2) adaptation of #1 to run over UDP instead of IP

Who can speak to what requirements/RFCs should constitute #1? We could
certainly make a proposal based on what we've implemented, but if it's going
to be used more broadly, I'm guessing a LOT of folks will care about these
details.

For #2, in addition to the work we've done with what we call PseudoTcp, I've
noticed these two other drafts on TCP/UDP, which are very similar to
PseudoTcp. The first gives a very good treatment (in Section 8) of why a
PseudoTcp-like approach is the best way for reliable p2p data transfer.

http://tools.ietf.org/html/draft-baset-tsvwg-tcp-over-udp-01
http://tools.ietf.org/html/<http://tools.ietf.org/html/draft-denis-udp-transport-00>
draft-denis-udp-transport-00<http://tools.ietf.org/html/draft-denis-udp-transport-00>