RE: A design for the Message frame(s)

"Lubashev, Igor" <ilubashe@akamai.com> Tue, 18 September 2018 20:22 UTC

Return-Path: <ilubashe@akamai.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A581A130E47 for <quic@ietfa.amsl.com>; Tue, 18 Sep 2018 13:22:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.71
X-Spam-Level:
X-Spam-Status: No, score=-2.71 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=akamai.com
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 DWa_WZhOwP9P for <quic@ietfa.amsl.com>; Tue, 18 Sep 2018 13:22:13 -0700 (PDT)
Received: from mx0a-00190b01.pphosted.com (mx0a-00190b01.pphosted.com [IPv6:2620:100:9001:583::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D031C130E6F for <quic@ietf.org>; Tue, 18 Sep 2018 13:22:13 -0700 (PDT)
Received: from pps.filterd (m0050093.ppops.net [127.0.0.1]) by m0050093.ppops.net-00190b01. (8.16.0.22/8.16.0.22) with SMTP id w8IKHGZ9013932; Tue, 18 Sep 2018 21:21:54 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=jan2016.eng; bh=A1jqXUT85Fnb1RE+iqIpe5pl80Jp3RUdxStZCoSenIg=; b=KOtaHlYCIc8N5Goc0CWxugTCt0clzBqxYvz2nl8OZ8D7S9E3E04nAumcVniz4UgH1v/e MpoGqAOkjTtAttXj8WPGT8lRARZpKCTl+htBeN2B1pffbibvwsarY6XtGHtBBXSwGp2G FsR9hT1S21HOacetvVa7kdjY1jucAFNgkoSrwUxQ7Jb/Cw7DxzPLI9M8cMA79QcCgCMI IcxPRehSphyXJPcf5YMH+KOzrGy3AB+wSTDOjWLJ2/tSG4fx2NiZu6GYikUlBJjjWPAq bgTLikXi7joOB+g7gu2JhI2TR/9eZenA07fT+VUFuL5aHES6qU2kLcBdLGkBESUPeGK3 yA==
Received: from prod-mail-ppoint1 (prod-mail-ppoint1.akamai.com [184.51.33.18]) by m0050093.ppops.net-00190b01. with ESMTP id 2mgsbk2nvd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Sep 2018 21:21:54 +0100
Received: from pps.filterd (prod-mail-ppoint1.akamai.com [127.0.0.1]) by prod-mail-ppoint1.akamai.com (8.16.0.21/8.16.0.21) with SMTP id w8IKJvKn021187; Tue, 18 Sep 2018 16:21:53 -0400
Received: from email.msg.corp.akamai.com ([172.27.123.30]) by prod-mail-ppoint1.akamai.com with ESMTP id 2mgwdvhvn8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 18 Sep 2018 16:21:53 -0400
Received: from USMA1EX-DAG1MB5.msg.corp.akamai.com (172.27.123.105) by usma1ex-dag1mb4.msg.corp.akamai.com (172.27.123.104) with Microsoft SMTP Server (TLS) id 15.0.1365.1; Tue, 18 Sep 2018 16:21:51 -0400
Received: from USMA1EX-DAG1MB5.msg.corp.akamai.com ([172.27.123.105]) by usma1ex-dag1mb5.msg.corp.akamai.com ([172.27.123.105]) with mapi id 15.00.1365.000; Tue, 18 Sep 2018 16:21:51 -0400
From: "Lubashev, Igor" <ilubashe@akamai.com>
To: "Lubashev, Igor" <ilubashe=40akamai.com@dmarc.ietf.org>, Ian Swett <ianswett=40google.com@dmarc.ietf.org>, Christian Huitema <huitema@huitema.net>
CC: "ianswett@google.com" <ianswett@google.com>, "charles.krasic@gmail.com" <charles.krasic@gmail.com>, Mike Bishop <mbishop@evequefou.be>, Lars Eggert <lars@eggert.org>, IETF QUIC WG <quic@ietf.org>, Martin Thomson <martin.thomson@gmail.com>, Tommy Pauly <tpauly@apple.com>
Subject: RE: A design for the Message frame(s)
Thread-Topic: A design for the Message frame(s)
Thread-Index: AQHUSu+PMhvSjq8WIU2VtvOi0uGDOKTtppoAgAAF+YCAADqJgIAAnkCAgAADeYCAAa+eAIAADhUAgAFetKCAAMx0gIACaHaA///PmmCAAdeM0A==
Date: Tue, 18 Sep 2018 20:21:51 +0000
Message-ID: <57d6e2da607d4bfaa313ed11d8102b54@usma1ex-dag1mb5.msg.corp.akamai.com>
References: <CAKcm_gPQ5kD-0y3goR7d6tV22=tb52FabtA91_3pw2rf91KSqw@mail.gmail.com> <CABkgnnWKQAaB=_iEQZ3-k9NuHWa-_e7aBq4_tJs4h+UCt9MHhA@mail.gmail.com> <976DA589-A549-41A8-BE82-9F64F1CA4FED@apple.com> <CABkgnnWArKFvp=idWOa3n0-bU7iccz-37D9Giqao9DiBdcdC2A@mail.gmail.com> <CAKcm_gO1u_9Pv4jeLFw99dyw_79sapT099qX0bwhOLt2c3E4NA@mail.gmail.com> <673E9CB9-84C5-448F-ABF1-97ABBD7F45BF@eggert.org> <CY4PR22MB0983822F503B1363AD423A21DA190@CY4PR22MB0983.namprd22.prod.outlook.com> <CAPhuoz2s4KK9KFRGyt2Q5O3BSqudpGC15CzqmrRxoEoTOgv=mw@mail.gmail.com> <82fab460207b42a9ac7900ffeec9b630@usma1ex-dag1mb5.msg.corp.akamai.com> <05a7612a-d323-fd42-d6aa-9fe43a5ccede@huitema.net> <CAKcm_gNURPMXwrdEuoiy53AwUjvN2Rwq228ktT8_vZzjzJ9xEg@mail.gmail.com> <a7835ea4b8554d2bb0b9c1a7be64393d@usma1ex-dag1mb5.msg.corp.akamai.com>
In-Reply-To: <a7835ea4b8554d2bb0b9c1a7be64393d@usma1ex-dag1mb5.msg.corp.akamai.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [172.19.117.191]
Content-Type: multipart/alternative; boundary="_000_57d6e2da607d4bfaa313ed11d8102b54usma1exdag1mb5msgcorpak_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-09-18_08:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1809180199
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-09-18_08:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1809180198
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/Lsmlp168qezk0eI-6IVgE8Q-hQI>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 18 Sep 2018 20:22:16 -0000

Thinking more about this, the proposed simple “sendMessage()” API that sends arbitrary-sized MESSAGE/DATAGRAM frame is sufficient.  That API would make sure that a sufficiently large QUIC/UDP packet is sent, possibly fragmented by the IP layer.  This would work as well (or as poorly) as today’s UDP, but it will have an advantage of degrading slowly as messages starts to exceed PMTU instead of failing abruptly at that point.


  *   Igor

From: Lubashev, Igor <ilubashe=40akamai.com@dmarc.ietf.org>
Sent: Monday, September 17, 2018 7:14 PM
To: Ian Swett <ianswett=40google.com@dmarc.ietf.org>; Christian Huitema <huitema@huitema.net>
Cc: ianswett@google.com; charles.krasic@gmail.com; Mike Bishop <mbishop@evequefou.be>; Lars Eggert <lars@eggert.org>; IETF QUIC WG <quic@ietf.org>; Martin Thomson <martin.thomson@gmail.com>; Tommy Pauly <tpauly@apple.com>
Subject: RE: A design for the Message frame(s)

I happened to think that an API description is critically important for the WG to consider (even if that description does not make it into the draft).  The API description provides a usability goal for the protocol to achieve.
For example, “OnMessageLost” is a useful callback.  If its semantics allows for false positives but no false negatives, we know some flow control of MESSAGE/DATAGRAM is required.

I am a bit surprised by the lack of desire for a homogeneous API for different message lengths.  I’ve seen too many systems that started out as “we just need to send small ‘sensor-like’ UDP packets” and then evolved over the years by adding more ‘sensors’ and more fidelity to the ‘sensors’, eventually relying on IP fragmentation to save them.  Due to the requirements of compatibility with old implementations, IP fragmentation turned out to be a savior for those UDP systems (as much as IETF might dislike that -- draft-bonica-6man-frag-deprecate).  Many companies we work for may be best positioned to keep updating our systems (servers and clients) to make timely protocol changes as the needs evolve.  However, I am worried that many other systems will be suffering ~10 years down the line without seamless (from app API perspective) extensibility on message length.  (I really do not want to see “MTU-extending” tunnels out there!)


  *   Igor


From: Ian Swett <ianswett=40google.com@dmarc.ietf.org<mailto:ianswett=40google.com@dmarc.ietf.org>>
Sent: Monday, September 17, 2018 10:56 AM
To: Christian Huitema <huitema@huitema.net<mailto:huitema@huitema.net>>
Cc: Lubashev, Igor <ilubashe@akamai.com<mailto:ilubashe@akamai.com>>; charles.krasic@gmail.com<mailto:charles.krasic@gmail.com>; Mike Bishop <mbishop@evequefou.be<mailto:mbishop@evequefou.be>>; Lars Eggert <lars@eggert.org<mailto:lars@eggert.org>>; IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>; Martin Thomson <martin.thomson@gmail.com<mailto:martin.thomson@gmail.com>>; Tommy Pauly <tpauly@apple.com<mailto:tpauly@apple.com>>; ianswett@google.com<mailto:ianswett@google.com>
Subject: Re: A design for the Message frame(s)

To clarify, the largest intended difference between the MESSAGE proposal and the DATAGRAM draft is the choice of name.  Both are designed to be sub-MTU, because anything larger can be accommodated by a unidirectional stream.  My doc goes into a lot more details on API, which aren't necessary for the WG to consider, but I thought provided some rationale for why I made the design choices I did and it was a useful guide to implement from.

Buck, originally I wanted a single API that abstracted away what was underneath, but in the end all the applications I talked to were just as happy dealing with it themselves, so it was dropped for now.

On the subject of whether the WG should spend any time on this, I tend to agree with Mike that it would be good to know the extension mechanism actually works, and this is a really easy frame to implement and specify, so it's an excellent candidate for an example extension.  But for this week in NY, I want to focus on resolving all the open issues so the editors can write the needed text before Bangkok.

On Sat, Sep 15, 2018 at 10:09 PM Christian Huitema <huitema@huitema.net<mailto:huitema@huitema.net>> wrote:



On 9/15/2018 12:44 PM, Lubashev, Igor wrote:
Given the amount of emails regarding Thai visas I am forced to read and delete, a thread on MESSAGE/DATAGRAM support is a welcome diversion.


I like that “MESSAGE” proposal does not require one’s messages to be under PMTU in size -- my largest concern with the DATAGRAM draft.  Taking a lesson from years of UDP experience, a transport abstraction providing atomic delivery of messages of somewhat arbitrary sizes is very useful (though the chances of successful delivery for larger messages drop off rapidly).

There is somewhat of a continuum between sensor reports (e.g. the mouse is now pointing at x=234, y=152), audio streams (short packets, 50 times per sec), video streams (shortish packets, except those I frames that are 64K long), and server pushed pages.

I think a pure "datagram" frame servers well the low end of the continuum, such as sensors, for which there is no point at all repeating the data. Just transmit a fresh value. Datagram works OK for audio, we have been doing it for a very long time.

Pure datagram does not work too well for real-time  video, because missing 10% of an I Frame is a real bummer. You need some extra sauce, typically some form of FEC. But then, if you are ready to put that extra sauce in the app, datagram is a pretty good building block. Especially if you can get integrated congestion control and error reporting through the integration with Quic.

So, personally, I would rather keep it simple, use a bare bone datagram API, and let the application deal with the added complexity.

But then, frame types are cheap. We can have several extensions. No point fighting about it.

-- Christian Huitema