Re: Making extensibility cheap

Mike Bishop <Michael.Bishop@microsoft.com> Wed, 04 June 2014 05:37 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 467D21A0087 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 3 Jun 2014 22:37:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.571
X-Spam-Level:
X-Spam-Status: No, score=-6.571 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_FONT_FACE_BAD=0.981, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.651, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 Y5xQCoBqsDjc for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 3 Jun 2014 22:37:37 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 368B11A007F for <httpbisa-archive-bis2Juki@lists.ietf.org>; Tue, 3 Jun 2014 22:37:37 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1Ws3rL-00008S-JR for ietf-http-wg-dist@listhub.w3.org; Wed, 04 Jun 2014 05:35:35 +0000
Resent-Date: Wed, 04 Jun 2014 05:35:35 +0000
Resent-Message-Id: <E1Ws3rL-00008S-JR@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <Michael.Bishop@microsoft.com>) id 1Ws3r8-00007d-TG for ietf-http-wg@listhub.w3.org; Wed, 04 Jun 2014 05:35:22 +0000
Received: from mail-bl2lp0207.outbound.protection.outlook.com ([207.46.163.207] helo=na01-bl2-obe.outbound.protection.outlook.com) by lisa.w3.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from <Michael.Bishop@microsoft.com>) id 1Ws3r7-0006eb-3N for ietf-http-wg@w3.org; Wed, 04 Jun 2014 05:35:22 +0000
Received: from BL2PR03MB132.namprd03.prod.outlook.com (10.255.230.24) by BL2PR03MB129.namprd03.prod.outlook.com (10.255.230.20) with Microsoft SMTP Server (TLS) id 15.0.954.9; Wed, 4 Jun 2014 05:34:41 +0000
Received: from BL2PR03MB132.namprd03.prod.outlook.com ([169.254.9.162]) by BL2PR03MB132.namprd03.prod.outlook.com ([169.254.9.176]) with mapi id 15.00.0949.001; Wed, 4 Jun 2014 05:34:41 +0000
From: Mike Bishop <Michael.Bishop@microsoft.com>
To: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>, Martin Thomson <martin.thomson@gmail.com>
CC: HTTP Working Group <ietf-http-wg@w3.org>
Thread-Topic: Making extensibility cheap
Thread-Index: AQHPf4h+Ic1VeVro40uFhNN5FLJISZtgRNGAgAApey8=
Date: Wed, 04 Jun 2014 05:34:41 +0000
Message-ID: <ff2c120d4ce743509600476a0ec9b34c@BL2PR03MB132.namprd03.prod.outlook.com>
References: <CABkgnnU1zUg0G-bfvzO1vTtVH22evSn1Kw-AQnwvWQqtmnesQA@mail.gmail.com>, <CAPyZ6=KN_UoqA6ucH9QT=AVFTaeJCnYQqEoERjCxwtzXExVFiQ@mail.gmail.com>
In-Reply-To: <CAPyZ6=KN_UoqA6ucH9QT=AVFTaeJCnYQqEoERjCxwtzXExVFiQ@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [198.134.92.44]
x-microsoft-antispam: BL:0; ACTION:Default; RISK:Low; SCL:0; SPMLVL:NotSpam; PCL:0; RULEID:
x-forefront-prvs: 0232B30BBC
x-forefront-antispam-report: SFV:NSPM; SFS:(428001)(479174003)(199002)(51704005)(189002)(51414003)(99396002)(19580395003)(76576001)(83322001)(74316001)(4396001)(85852003)(19580405001)(79102001)(33646001)(83072002)(77982001)(81342001)(76176999)(99286001)(19625215002)(81542001)(80022001)(92566001)(46102001)(16236675002)(87936001)(74502001)(20776003)(21056001)(561944003)(2656002)(31966008)(54356999)(86362001)(76482001)(74662001)(86612001)(101416001)(50986999)(64706001)(66066001)(158353003)(24736002)(19607625010); DIR:OUT; SFP:; SCL:1; SRVR:BL2PR03MB129; H:BL2PR03MB132.namprd03.prod.outlook.com; FPR:; MLV:sfv; PTR:InfoNoRecords; A:1; MX:1; LANG:en;
received-spf: None (: microsoft.com does not designate permitted sender hosts)
authentication-results: spf=none (sender IP is ) smtp.mailfrom=Michael.Bishop@microsoft.com;
Content-Type: multipart/alternative; boundary="_000_ff2c120d4ce743509600476a0ec9b34cBL2PR03MB132namprd03pro_"
MIME-Version: 1.0
X-OriginatorOrg: microsoft.onmicrosoft.com
Received-SPF: pass client-ip=207.46.163.207; envelope-from=Michael.Bishop@microsoft.com; helo=na01-bl2-obe.outbound.protection.outlook.com
X-W3C-Hub-Spam-Status: No, score=-0.1
X-W3C-Hub-Spam-Report: AWL=0.349, HTML_FONT_FACE_BAD=0.289, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1Ws3r7-0006eb-3N 3257467ebaabe1dc5cd18de3a025a259
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Making extensibility cheap
Archived-At: <http://www.w3.org/mid/ff2c120d4ce743509600476a0ec9b34c@BL2PR03MB132.namprd03.prod.outlook.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/24084
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

The deadlock is an interesting point.  If we introduce fragmentation in HTTP/2, the transport folks may renew their complaints that we're reimplementing their layer, but I understand the concern.  I look forward to discussing possible solutions, though I don't have one off the top of my head.

Sent from Windows Mail

From: Tatsuhiro Tsujikawa<mailto:tatsuhiro.t@gmail.com>
Sent: ?Tuesday?, ?June? ?3?, ?2014 ?8?:?10? ?PM
To: Martin Thomson<mailto:martin.thomson@gmail.com>
Cc: HTTP Working Group<mailto:ietf-http-wg@w3.org>


2014/06/04 9:04 "Martin Thomson" <martin.thomson@gmail.com<mailto:martin.thomson@gmail.com>>:
>
> I've been somewhat convinced by Mike Bishop's arguments for restoring
> extensibility[1].
>
> What I find hard to swallow is the associated cost.  I think that
> Mike's proposal could be trimmed further.  So I'm going to take up the
> challenge.
>
> Here's what I think we absolutely need:
>
> 1. A way to negotiate the use of hop-by-hop extensions.
> 2. A way to carry end-to-end extensions.
> 3. Extensibility for settings, frames and error codes.
>
> To that end, here's my proposed reduction, which I think is largely
> keeping with the spirit of Mike's draft:
>
> Extensibility
>
> As Mike suggests, we can open a few IANA registries for business.
> That's text we can restore from old drafts.  Easy.
>
> I agree that we need more space for settings than 8 bits, but I'm
> going to be aggressive and suggest that 16 bits is enough.  We can
> reserve some portion of that space for mucking around (a quarter is
> what I'd suggest, but I don't care).
>
> End-to-end
>
> Here I'm going to suggest something far more limited than what Mike
> does.  I think that we can get away with an end-to-end, flow
> controlled, ordered frame.  A new frame type, modelled on Mike's
> should work here.  The new frame type would include a 32-bit extension
> ID, for which we can open a registry; we could piggyback on the PEN
> registry (private enterprise number); or, we could recommend random
> selection.  Again, I care not about these details and will go with
> what people seem to like most.
>
> We could do something more with optional flow control, optional
> end-to-end and optional ordering, but I think that is altogether too
> much optionality.
>
> I'm aware that forcing flow control here might be controversial, but I
> think that if we require intermediaries to forward this - and I think
> we have to - this is the only good option.
>

If flow control is forced, payload of this new frame must be able to be fragmented in arbitrary size to avoid deadlock just like DATA frame, which Johnny and I wrote in the other thread.  If both ends started to send new frames and blocked in the middle of their payload due to exhaustion of window, deadlock will happen.

Best regatds,
Tatsuhiro Tsujikawa

> Negotiation
>
> I think that this doesn't need a new "EXTENSIONS" frame, I think that
> we can use settings.  Each peer can set a setting to indicate that
> they support feature X and if both support the feature, then the
> state-affecting components of that feature can be activated.
>
> Otherwise, all error codes map to INTERNAL_ERROR (or some new error
> code we define that has equivalent semantics, i.e., none); all unknown
> frame types are dropped; and all settings are ignored.
>
> Note that this is important.  Unless you negotiate, only the special
> "EXTENSION" frame will traverse intermediaries.
>
> Advice Column
>
> Mike's draft offers good guidance for extension designers.  I think we
> need to crib some of that text.  Suggesting that an extension deal
> with translating to and from HTTP/1.1, or dealing with peers that
> don't support the extension is motherhood and apple pie.  More
> important though is establishing the parameters for extension.  Much
> of the above will need to reside in this section.
>
> I am going to try to turn out some proposed text for this on the plane
> tomorrow, in case this is what we decide to pursue.
>
> --Martin
>
> [1] in draft-bishop-http2-extension-frames
>