Retrospective on PRIORITY

Mike Bishop <Michael.Bishop@microsoft.com> Tue, 18 April 2017 18:52 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@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 (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7E3BC131462 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 18 Apr 2017 11:52:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.001
X-Spam-Level:
X-Spam-Status: No, score=-7.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=microsoft.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 Jg7spaOl9zIk for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 18 Apr 2017 11:52:45 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 17F1013145A for <httpbisa-archive-bis2Juki@lists.ietf.org>; Tue, 18 Apr 2017 11:52:44 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.80) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1d0YA7-0000Ka-P0 for ietf-http-wg-dist@listhub.w3.org; Tue, 18 Apr 2017 18:47:39 +0000
Resent-Date: Tue, 18 Apr 2017 18:47:39 +0000
Resent-Message-Id: <E1d0YA7-0000Ka-P0@frink.w3.org>
Received: from mimas.w3.org ([128.30.52.79]) by frink.w3.org with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <Michael.Bishop@microsoft.com>) id 1d0YA1-0000Jn-Ru for ietf-http-wg@listhub.w3.org; Tue, 18 Apr 2017 18:47:33 +0000
Received: from mail-sn1nam02on0134.outbound.protection.outlook.com ([104.47.36.134] helo=NAM02-SN1-obe.outbound.protection.outlook.com) by mimas.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from <Michael.Bishop@microsoft.com>) id 1d0Y9t-0007AJ-TH for ietf-http-wg@w3.org; Tue, 18 Apr 2017 18:47:28 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=/9a1UplYfITVeJ+Ie7O05tueMgbaONij0uaSFi70UVU=; b=kPCrbKAsQkzXAhw/lq+pEs7stMeTwyyr+Yhtgq7FKgIhGHNFVa1OTJOLNlNCNJypw+KcrgVRgbsO08N1NnLiaTX5S0dLm4F8fE0lwWnj5+ltrgwTstM2D13JDUthHcDndwh62xx7C+zTKTR71vy2dVsPNSSOhlJK++iINnONp6A=
Received: from BN6PR03MB2708.namprd03.prod.outlook.com (10.173.144.15) by BN6PR03MB2708.namprd03.prod.outlook.com (10.173.144.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10; Tue, 18 Apr 2017 18:46:56 +0000
Received: from BN6PR03MB2708.namprd03.prod.outlook.com ([10.173.144.15]) by BN6PR03MB2708.namprd03.prod.outlook.com ([10.173.144.15]) with mapi id 15.01.1034.015; Tue, 18 Apr 2017 18:46:56 +0000
From: Mike Bishop <Michael.Bishop@microsoft.com>
To: HTTP Working Group <ietf-http-wg@w3.org>
Thread-Topic: Retrospective on PRIORITY
Thread-Index: AdK4cnJZGNEy80nLTaOJkcpzRxpi1A==
Date: Tue, 18 Apr 2017 18:46:56 +0000
Message-ID: <BN6PR03MB2708D32F12FAF2953E0F499487190@BN6PR03MB2708.namprd03.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: w3.org; dkim=none (message not signed) header.d=none;w3.org; dmarc=none action=none header.from=microsoft.com;
x-originating-ip: [2001:4898:80e8:7::51f]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BN6PR03MB2708; 7:yUBGGb3gZGoepyaCECCaJdgh9ssnGpqG1j7k7qrDxJiWrGQkrUVkfNHDtg8tYLlg6SvTH6zQNxwIPFq4HC3Yzh1NnHgEvAIWwRBdWKuH61I3CBQfgrI6kkmJbFgSnfMx0yy5MNFo/JhfllGrwqfcKETU/1qK1WEHNaqAtU/gigdDlM2REPzVxy3ctC4UnalpG2bbWIU5gTQYlVQKZTDehqn8leoCUeDvW2ayfmBUI/yi9+rbDBGe54JbiS81dqnpulG4/FqYuS8LMcwqIwEul3z1Ta+9g25sAvHv3FN7v+rNR7Dq5W7CfUBNFO2NUifbb+W+rfj7NJyNqa6r46YD/UjSCIY5TtCJFwwGhBIEWzo=
x-ms-office365-filtering-correlation-id: 9659d1a5-eb5d-4a7b-fc1e-08d4868b4a17
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(48565401081)(201703131423075)(201703031133081)(201702281549075); SRVR:BN6PR03MB2708;
x-microsoft-antispam-prvs: <BN6PR03MB2708DAF9BE165C1C3FA3AE3A87190@BN6PR03MB2708.namprd03.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(158342451672863)(21748063052155);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(61425038)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(6055026)(61426038)(61427038)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123564025)(20161123560025)(20161123555025)(20161123562025)(6072148); SRVR:BN6PR03MB2708; BCL:0; PCL:0; RULEID:; SRVR:BN6PR03MB2708;
x-forefront-prvs: 028166BF91
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(39860400002)(39840400002)(39450400003)(39850400002)(39410400002)(39400400002)(122556002)(2906002)(2900100001)(53936002)(8676002)(561944003)(5005710100001)(7116003)(86612001)(86362001)(50986999)(5660300001)(10290500002)(54356999)(8936002)(81166006)(10090500001)(3480700004)(3280700002)(606005)(74316002)(54896002)(77096006)(6916009)(33656002)(25786009)(6436002)(3660700001)(6506006)(189998001)(38730400002)(110136004)(6116002)(790700001)(99286003)(7696004)(7906003)(55016002)(236005)(7736002)(9686003)(102836003)(6306002); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR03MB2708; H:BN6PR03MB2708.namprd03.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en;
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_BN6PR03MB2708D32F12FAF2953E0F499487190BN6PR03MB2708namp_"
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Apr 2017 18:46:56.5943 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2708
Received-SPF: pass client-ip=104.47.36.134; envelope-from=Michael.Bishop@microsoft.com; helo=NAM02-SN1-obe.outbound.protection.outlook.com
X-W3C-Hub-Spam-Status: No, score=-3.9
X-W3C-Hub-Spam-Report: AWL=-2.367, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_NW=0.5
X-W3C-Scan-Sig: mimas.w3.org 1d0Y9t-0007AJ-TH 5f2fd21744f7f844693b573e8f9b0a0b
X-Original-To: ietf-http-wg@w3.org
Subject: Retrospective on PRIORITY
Archived-At: <http://www.w3.org/mid/BN6PR03MB2708D32F12FAF2953E0F499487190@BN6PR03MB2708.namprd03.prod.outlook.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/33823
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>

I had an interesting side conversation in Chicago, where it was proposed that HTTP/QUIC pull out the H2 priority scheme and go with something simpler, or at least make all priority schemes extensions so client/server can negotiate which one they want to use.  I think efforts like that probably need to be driven out of the HTTP WG rather than the QUIC WG, but it did raise some interesting questions.

Back in this thread (https://lists.w3.org/Archives/Public/ietf-http-wg/2014JanMar/0396.html), we had a proposal which permits expressing the same desired end-states, but requires the client to do the tree collapsing instead of the server.  That means clients can be as simple or as complex as they desire, and the server just needs to see the end output of whatever fancy algorithm they're using.

The argument that drove the current scheme was that when running a proxy, you need a way to be able to encapsulate the priorities declared by one client onto priorities in a back-end connection while isolating the user's declared priorities from other users' declared priorities.  Clearly you can't just do a straight pass-through, or everyone is incented to use the top end of the priority range.  The scheme that ultimately landed in H2 allows this at the proxy:

  *   Every user gets a placeholder node; weights of placeholders represent relative priorities of the users
  *   Anything the user declares depends on stream zero in their connection depends on this placeholder; weights unchanged
  *   Anything the user declares depends some other stream still depends on that stream; weights unchanged
Also, when something changes near the root of the tree, the client might be issuing a lot of PRIORITY frames to update everything as a result if all the server gets is the output of the tree.  In the video playback case, finishing the current chunk is a change near the root of the tree that's fairly common.

With any simpler scheme, the proxy either has to ignore declared priorities or do work to coalesce declared priorities across users.  And obviously, if you have tiers of proxies, the same logic can be applied multiple times and still get a sensible result at the back-end.  You could bring that idea into the proposal linked above, but you'd need groups-of-groups, and groups-of-groups-of-groups, and soon you wind up with something that looks a lot like a dependency tree again.

I think any reasonable priority scheme will work fine between client and server - it's the proxy (forward or reverse) that needs to see the uncollapsed tree so that it can merge trees between clients.  Now that H2 is deployed, I'm curious how proxy vendors are finding this to work out.  Do you find the additional richness useful, or is there more appetite for simpler priority schemes?  Are you actually using the algorithm above, or something like it?