Re: [rtcweb] PseudoTCP implementation (Re: realiable data service)
Justin Uberti <juberti@google.com> Sun, 24 July 2011 15:27 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 6763321F88B6 for <rtcweb@ietfa.amsl.com>; Sun, 24 Jul 2011 08:27:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -105.837
X-Spam-Level:
X-Spam-Status: No, score=-105.837 tagged_above=-999 required=5 tests=[AWL=0.139, 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 PTlZ-UFwYCuB for <rtcweb@ietfa.amsl.com>; Sun, 24 Jul 2011 08:27:32 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [74.125.121.67]) by ietfa.amsl.com (Postfix) with ESMTP id 30E7021F84ED for <rtcweb@ietf.org>; Sun, 24 Jul 2011 08:27:32 -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 p6OFRUJb004760 for <rtcweb@ietf.org>; Sun, 24 Jul 2011 08:27:31 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1311521251; bh=3deVWOYCBVuv7GhX6sps3hmggX8=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=V8xBNAckzrF6sQWX1sAYOPNWedZ185yGeXS5f+4Ka6JSP5fCtQ/SHZdjBndkLGmEe QquW49YmHrqLtE0jdIDwQ==
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=t9ICgoSzmevPPR2dH/9a5gJApK/bWM+0i2D2Xfv9uUnAc3pLpdrVIrfUJwnMGAoaR aRLrJ2olVCy5cNNCDIekw==
Received: from iym1 (iym1.prod.google.com [10.241.52.1]) by wpaz29.hot.corp.google.com with ESMTP id p6OFRTR1027916 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for <rtcweb@ietf.org>; Sun, 24 Jul 2011 08:27:29 -0700
Received: by iym1 with SMTP id 1so4088637iym.29 for <rtcweb@ietf.org>; Sun, 24 Jul 2011 08:27:29 -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=UOwjWQODR+aeJAmkpBkHOLmGVaOjflztA5D1AEXFFgU=; b=ysd44EppYnmjbzKFmsfzc4UcHMLpAALgob0jdjazr94ocBdBVIh/NMmTpbzH9J9t22 E6XNSiWtEMhuRB5LD7UQ==
Received: by 10.231.211.199 with SMTP id gp7mr3554667ibb.188.1311521249124; Sun, 24 Jul 2011 08:27:29 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.231.36.197 with HTTP; Sun, 24 Jul 2011 08:27:09 -0700 (PDT)
In-Reply-To: <4E2C3859.3090102@alvestrand.no>
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> <4E2C3859.3090102@alvestrand.no>
From: Justin Uberti <juberti@google.com>
Date: Sun, 24 Jul 2011 08:27:09 -0700
Message-ID: <CAOJ7v-3WNpGHePSKzTycu1K3ie69HCs=DnigW75wpT8uL99=1A@mail.gmail.com>
To: Harald Alvestrand <harald@alvestrand.no>
Content-Type: multipart/alternative; boundary="0016369c8dda2b629a04a8d25699"
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:27:33 -0000
On Sun, Jul 24, 2011 at 8:20 AM, Harald Alvestrand <harald@alvestrand.no>wrote: > On 07/22/11 22:33, Cullen Jennings 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 <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<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<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. >> > ObNitpick: TCP doesn't have OOB data. > > What it has is an "urgent data downstream" pointer, which the Unix > implementors used to pick the byte pointed to out of the data stream and > deliver it "urgently" as if it was OOB data. > I exchanged mail with Jon Postel about this in 1984, and he confirmed that > if a TCP protocol stack gets 2 TCP segments with different URG pointers, a > TCP implementation can merge them and only deliver the latest URG pointer - > which means that delivery of the OOB data is unreliable if you have more > than 1 in flight at any one time; you might get the byte inband, and you > might get it out of band. > > This conflict of viewpoints between the protocol design and the API design > has, I believe, rendered the TCP URG pointer useless for all practical > purposes. > > Returning to more relevant stuff: I think we need to handle PMTU issues > somehow. This may be hard. > The easy way may be to do what we're likely to do for RTP data: assume a MTU of 1280 (IPv6 minimum MTU) and packetize as such, leaving PMTU discovery as a future optimization. > > Harald > > >
- Re: [rtcweb] Non-media data service consensus and… Jonathan Rosenberg
- [rtcweb] Non-media data service consensus and req… Magnus Westerlund
- Re: [rtcweb] Non-media data service consensus and… Emil Ivov
- Re: [rtcweb] Non-media data service consensus and… Bernard Aboba
- Re: [rtcweb] Non-media data service consensus and… Emil Ivov
- Re: [rtcweb] Non-media data service consensus and… Matthew Kaufman
- Re: [rtcweb] Non-media data service consensus and… Christopher Blizzard
- Re: [rtcweb] Non-media data service consensus and… Bernard Aboba
- Re: [rtcweb] Non-media data service consensus and… Matthew Kaufman
- Re: [rtcweb] Non-media data service consensus and… Emil Ivov
- Re: [rtcweb] Non-media data service consensus and… Igor Faynberg
- Re: [rtcweb] Non-media data service consensus and… Emil Ivov
- Re: [rtcweb] Non-media data service consensus and… Magnus Westerlund
- Re: [rtcweb] Non-media data service consensus and… Manuel Simoni
- Re: [rtcweb] Non-media data service consensus and… Magnus Westerlund
- Re: [rtcweb] Non-media data service consensus and… Igor Faynberg
- Re: [rtcweb] Non-media data service consensus and… Timothy B. Terriberry
- Re: [rtcweb] Non-media data service consensus and… Dzonatas Sol
- Re: [rtcweb] Non-media data service consensus and… Dzonatas Sol
- Re: [rtcweb] Non-media data service consensus and… Randell Jesup
- Re: [rtcweb] Non-media data service consensus and… Magnus Westerlund
- Re: [rtcweb] Non-media data service consensus and… Manuel Simoni
- Re: [rtcweb] Non-media data service consensus and… Dzonatas Sol
- Re: [rtcweb] Non-media data service consensus and… Christopher Blizzard
- Re: [rtcweb] Non-media data service consensus and… Cullen Jennings
- Re: [rtcweb] Non-media data service consensus and… Cullen Jennings
- Re: [rtcweb] Non-media data service consensus and… Randell Jesup
- [rtcweb] Consensus Call on Non-media data service… Magnus Westerlund
- Re: [rtcweb] Consensus Call on Non-media data ser… Dzonatas Sol
- Re: [rtcweb] Consensus Call on Non-media data ser… Dzonatas Sol
- Re: [rtcweb] Consensus Call on Non-media data ser… Dzonatas Sol
- Re: [rtcweb] Consensus Call on Non-media data ser… Magnus Westerlund
- Re: [rtcweb] Consensus Call on Non-media data ser… Dzonatas Sol
- [rtcweb] realiable data service Cullen Jennings
- Re: [rtcweb] realiable data service Tim Panton
- Re: [rtcweb] realiable data service Emil Ivov
- Re: [rtcweb] realiable data service Dzonatas Sol
- Re: [rtcweb] realiable data service Dzonatas Sol
- Re: [rtcweb] realiable data service Randell Jesup
- Re: [rtcweb] realiable data service Dzonatas Sol
- Re: [rtcweb] realiable data service Dzonatas Sol
- Re: [rtcweb] realiable data service Ted Hardie
- Re: [rtcweb] realiable data service Serge Lachapelle
- Re: [rtcweb] realiable data service Silvia Pfeiffer
- Re: [rtcweb] realiable data service Tim Panton
- Re: [rtcweb] realiable data service Magnus Westerlund
- Re: [rtcweb] realiable data service Tim Panton
- Re: [rtcweb] realiable data service Randell Jesup
- Re: [rtcweb] realiable data service Ted Hardie
- Re: [rtcweb] realiable data service Cullen Jennings
- Re: [rtcweb] realiable data service Cullen Jennings
- Re: [rtcweb] realiable data service Tim Panton
- Re: [rtcweb] realiable data service Cullen Jennings
- Re: [rtcweb] realiable data service Dzonatas Sol
- Re: [rtcweb] realiable data service Matthew Kaufman
- Re: [rtcweb] realiable data service Cullen Jennings
- Re: [rtcweb] realiable data service Randell Jesup
- Re: [rtcweb] realiable data service Magnus Westerlund
- Re: [rtcweb] realiable data service Henry Sinnreich
- Re: [rtcweb] realiable data service Justin Uberti
- Re: [rtcweb] realiable data service Randell Jesup
- Re: [rtcweb] realiable data service Emil Ivov
- Re: [rtcweb] realiable data service Serge Lachapelle
- Re: [rtcweb] realiable data service Emil Ivov
- Re: [rtcweb] realiable data service Dzonatas Sol
- Re: [rtcweb] realiable data service Dzonatas Sol
- Re: [rtcweb] realiable data service Dzonatas Sol
- Re: [rtcweb] realiable data service Cullen Jennings
- Re: [rtcweb] realiable data service Cullen Jennings
- Re: [rtcweb] realiable data service Stefan Håkansson LK
- Re: [rtcweb] realiable data service Emil Ivov
- [rtcweb] PseudoTCP implementation (Re: realiable … Harald Alvestrand
- Re: [rtcweb] realiable data service Randell Jesup
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Justin Uberti
- Re: [rtcweb] realiable data service Serge Lachapelle
- Re: [rtcweb] realiable data service Serge Lachapelle
- Re: [rtcweb] realiable data service Bernard Aboba
- Re: [rtcweb] realiable data service Peter Saint-Andre
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Cullen Jennings
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Tim Panton
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Emil Ivov
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Justin Uberti
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Cullen Jennings
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Justin Uberti
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Harald Alvestrand
- Re: [rtcweb] PseudoTCP implementation (Re: realia… Justin Uberti