Re: http://http2.github.io/http2-spec/#FrameHeader section on Flags being unset

Yoav Nir <ynir@checkpoint.com> Wed, 08 May 2013 19:35 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 (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F232C21F8B45 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 8 May 2013 12:35:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.413
X-Spam-Level:
X-Spam-Status: No, score=-10.413 tagged_above=-999 required=5 tests=[AWL=0.186, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cpREu7yZQ8n2 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 8 May 2013 12:35:03 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 447A621F8B2B for <httpbisa-archive-bis2Juki@lists.ietf.org>; Wed, 8 May 2013 12:35:02 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UaA7e-0006VB-Hr for ietf-http-wg-dist@listhub.w3.org; Wed, 08 May 2013 19:33:54 +0000
Resent-Date: Wed, 08 May 2013 19:33:54 +0000
Resent-Message-Id: <E1UaA7e-0006VB-Hr@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <ynir@checkpoint.com>) id 1UaA7T-0006US-PH for ietf-http-wg@listhub.w3.org; Wed, 08 May 2013 19:33:43 +0000
Received: from smtp.checkpoint.com ([194.29.34.68]) by lisa.w3.org with esmtp (Exim 4.72) (envelope-from <ynir@checkpoint.com>) id 1UaA7S-0004Zi-Ef for ietf-http-wg@w3.org; Wed, 08 May 2013 19:33:43 +0000
Received: from DAG-EX10.ad.checkpoint.com ([194.29.34.150]) by smtp.checkpoint.com (8.13.8/8.13.8) with ESMTP id r48JXDqC021388; Wed, 8 May 2013 22:33:13 +0300
X-CheckPoint: {518AA6DE-5-1B221DC2-1FFFF}
Received: from IL-EX10.ad.checkpoint.com ([169.254.2.54]) by DAG-EX10.ad.checkpoint.com ([169.254.3.48]) with mapi id 14.02.0342.003; Wed, 8 May 2013 22:33:13 +0300
From: Yoav Nir <ynir@checkpoint.com>
To: "<willchan@google.com>" <willchan@google.com>
CC: HTTP Working Group <ietf-http-wg@w3.org>
Thread-Topic: http://http2.github.io/http2-spec/#FrameHeader section on Flags being unset
Thread-Index: AQHOTBn8w8XssFbpt0G+vD5f6bmma5j7e0AA
Date: Wed, 8 May 2013 19:33:11 +0000
Message-ID: <A57BD585-1A4F-461B-A649-E0D4C308F444@checkpoint.com>
References: <CAA4WUYgewyw-N2vjTinaQkarL0brveCam2XKKBSrMzz4HMiT8A@mail.gmail.com>
In-Reply-To: <CAA4WUYgewyw-N2vjTinaQkarL0brveCam2XKKBSrMzz4HMiT8A@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [172.31.20.208]
x-kse-antivirus-interceptor-info: scan successful
x-kse-antivirus-info: Clean
x-cpdlp: 11710d152b99c3dde209ca11e7ff2a1253449abd20
Content-Type: text/plain; charset="utf-8"
Content-ID: <89780B879C77AB4A88A11C999A383932@ad.checkpoint.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Received-SPF: permerror client-ip=194.29.34.68; envelope-from=ynir@checkpoint.com; helo=smtp.checkpoint.com
X-W3C-Hub-Spam-Status: No, score=-6.6
X-W3C-Hub-Spam-Report: AWL=-0.274, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-1.353
X-W3C-Scan-Sig: lisa.w3.org 1UaA7S-0004Zi-Ef 2a9e101871bef8bbb4442920c9bb44f2
X-Original-To: ietf-http-wg@w3.org
Subject: Re: http://http2.github.io/http2-spec/#FrameHeader section on Flags being unset
Archived-At: <http://www.w3.org/mid/A57BD585-1A4F-461B-A649-E0D4C308F444@checkpoint.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/17896
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>

On May 8, 2013, at 9:26 PM, William Chan (陈智昌) <willchan@google.com> wrote:

> """
> The remaining flags can be assigned semantics specific to the indicated frame type. Flags that have no defined semantics for a particular frame type MUST be ignored, and MUST be left unset (0) when sending.          
> """
> 
> Is there a reason that it MUST be left unset? Why not allow extensibility like we do for unknown frames? I actually don't think there's much value to specifying behavior for unused bits.
> 

This is a pretty common trick. The flags MUST be sent with value zero, and MUST be ignored. 

This allows a future spec to update this document and assign a meaning to a set flag. By requiring (in this spec) that the flag be clear, any time the flag is set it means that the sender supports the newer spec, because an HTTP/2.0 base spec implementation would never set the flag. Similarly, "old" implementations ignore the flag. 

If instead, the spec made no requirements about what value is sent, it would be valid for an HTTP/2.0 base sender to send this bit as one. In that case, no future extensions could ever be made, assigning meaning to this flag, because receivers would not be able to tell an HTTP/2.0 base implementation that randomly set the bit to one from an implementation of the updated spec.

Yoav