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

Cullen Jennings <fluffy@cisco.com> Sat, 23 July 2011 12:33 UTC

Return-Path: <fluffy@cisco.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 0F12721F876F for <rtcweb@ietfa.amsl.com>; Sat, 23 Jul 2011 05:33:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.178
X-Spam-Level:
X-Spam-Status: No, score=-103.178 tagged_above=-999 required=5 tests=[AWL=-1.648, BAYES_00=-2.599, DATE_IN_PAST_06_12=1.069, 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 mkAoRVdYgF-g for <rtcweb@ietfa.amsl.com>; Sat, 23 Jul 2011 05:33:29 -0700 (PDT)
Received: from rcdn-iport-4.cisco.com (rcdn-iport-4.cisco.com [173.37.86.75]) by ietfa.amsl.com (Postfix) with ESMTP id 4DB7421F8760 for <rtcweb@ietf.org>; Sat, 23 Jul 2011 05:33:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=fluffy@cisco.com; l=3039; q=dns/txt; s=iport; t=1311424409; x=1312634009; h=subject:mime-version:from:in-reply-to:date:cc: content-transfer-encoding:message-id:references:to; bh=ptwBVV4+1qjT+TvCGaivW8Btl1zRFfQMQImNf3tSFiI=; b=MVwzzm0ZFW+DSDhEM8l/w/ncUPBMOjoLG8s2iozXPHxHoq+lZ5jug++z NRieFvbAWPL5bdn70UVBc5QvIzIvredS+74kEY7uMC7RZkNG3zWE9gPHV 4HcDgoBIvvfybRKVlUV/FNWBarzEw9sbPFvKwsys+/EpHV3WNkSskcMRZ s=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AoUGAAe/Kk6rRDoI/2dsb2JhbAA1AQEBAQIBFAErRREMDgo6FAdKBwsMJxCnIneIfAShLJ11hWBfBIdVixuRAA
X-IronPort-AV: E=Sophos;i="4.67,252,1309737600"; d="scan'208";a="5750429"
Received: from mtv-core-3.cisco.com ([171.68.58.8]) by rcdn-iport-4.cisco.com with ESMTP; 23 Jul 2011 12:33:28 +0000
Received: from sjc-vpn4-935.cisco.com (sjc-vpn4-935.cisco.com [10.21.83.166]) by mtv-core-3.cisco.com (8.14.3/8.14.3) with ESMTP id p6NCXJhW026065; Sat, 23 Jul 2011 12:33:27 GMT
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="us-ascii"
From: Cullen Jennings <fluffy@cisco.com>
In-Reply-To: <CAOJ7v-3RLhaxOWyNJ6p4nE7QyFxOCAeM7xoENPvNhYhoDmyKOw@mail.gmail.com>
Date: Fri, 22 Jul 2011 19:33:00 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <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>
To: Justin Uberti <juberti@google.com>
X-Mailer: Apple Mail (2.1084)
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: Sat, 23 Jul 2011 12:33:30 -0000

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.