HTTP/2 is nearing the endgame as the IETF HTTPbis Working Group is scheduled to finalize the technical requirements – a Last Call Working Draft – in April 2014*. I just returned from the last HTTP/2 interim meeting hosted at the Cisco offices in Zurich where we performed interoperability testing and closed on features for the next implementation draft. Gabriel Montenegro and Rob Trace from Microsoft also attended the meeting with me.
The related meeting materials are available:
Prior to the interim meeting, MS Open Tech published our updated open source Katana server prototype implementation and public HTTP/2 endpoints as part of our continuing contribution to the working group effort.
During the meeting, there was successful one-to-one interoperability testing between the developers of available HTTP/2-09 implementations.
At the previous interim meeting in October, Michelle Lai from Microsoft proposed a formal test framework to improve the testing process and its results. I updated the working group on the progress of the framework and encouraged broader participation. The framework details and repository were shared on the http-devops mailing list.
Current contributors include:
- Microsoft Open Technologies, Inc.
- Microsoft Corp.
- Gábor Molnár
Closing on the HTTP/2 design
The open HTTP/2 issues were triaged and consensus was reached on the changes to include in the next implementable draft. When we were reviewing shorten alpn token from HTTP/2.0 to h2, a question was raised:
How do we deal with HTTP 2.1?
And the room answered in one voice:
Use major versions for new protocols.
This means that HTTP/2.0 is now HTTP/2. The next version of the protocol will be HTTP/3 and not HTTP/2.1. This is bound to appear as a trivial pursuit question in the future.
Issues that failed to reach consensus and were closed, included:
- Extensibility for Frames and Settings
- Mandatory TLS – as expressed in the meeting notes:
Discussed in Zurich; the WG agreed that we will allow HTTP2 to be used with HTTP URIs, with or without TLS, without constraints from us
As reported earlier in the Register:
Microsoft's Rob Trace summed it up: “we should strongly encourage the use of TLS with HTTP, but not at the expense of creating a standard that is as broadly applicable as HTTP 1.1”.
A new proposal for dependencies between streams was presented. (A similar idea was circulated earlier on the spdy-dev mailing list in October 2012, but never implemented.) There was active discussion at the interim that simplified the design to not require changes in the protocol flow. The revised design will appear in the next implementable draft to gather more data.
Because we’re so close to working group last call (April 2014), one concern is introducing additional complexity without a supporting prototype either in SPDY or HTTP/2 and hard data demonstrating its benefits. We must soon stop iterating on the design and stabilize the HTTP/2 draft to ensure that all features have been validated, especially older features such as server push which has not received much attention. As captured in the meeting notes:
Server Push - Lots of people trying to convince themselves that this is useful.
More Community Building
Our HTTP/2 meetings always include a social dinner, which promotes a convivial atmosphere in the working group. I credit Mark Nottingham, the HTTPbis chair, for setting the appropriate tone and building a community between the working group participants. It’s not hard to be amicable while arguing a technical perspective when you shared food, drink, and sometimes a bike ride the night before.
I love cheese, but this was definitely challenging – four cheeses with white wine, garlic, and cherry brandy. Intense. The aroma was overwhelming even outside the restaurant.
Before I conclude, here’s another quick update. Application Layer Protocol Negotiation (ALPN) is required to support HTTP/2 secure negotiation. The specification was co-authored by Microsoft, Cisco, Google, and Orange. It has completed IETF last call and is now under security directorate review. A revision was published that addresses comments from the last call.
ALPN support is planned for the OpenSSL 1.0.2 feature release. ALPN status for open source libraries and languages is tracked here.
ALPN is implemented in most HTTP/2 prototypes, including Katana, Mozilla, Chromium, nghttp2, iij-http2, and node-http2. There is also support available in the Wireshark network analyzer, IE11, and nginx.
The next implementable HTTP/2 draft is targeted for February 7, 2014. MS Open Tech will update our Katana prototype implementation when the draft is published and continue interoperability testing.
Based on the discussions in Zurich, the working group needs to be rigorous about closing on hard decisions to reach last call on time:
- April 2014: HTTPbis Working Group Last Call
- July 2014: IETF Last Call before IETF 90
To achieve this goal, the intensive schedule of meetings continues through the summer:
- IETF 89, March 2-7 2014 in London, UK
- Design meeting, March 8 2014 in London, UK
- Proposed interim, June 5-6 to close issues from WG last call
- IETF 90, July 20-25 2014 in Toronto, Canada
HTTP/2 is nearing the endgame. Representatives from Microsoft will continue to attend these meetings. If you haven’t had an opportunity to participate, we encourage you to contribute to the technical discussions on the mailing list, write an implementation to validate the draft, or create tests for the suite.
HTTP/2 on the Web
A number of my colleagues at other companies have written thoughtful articles that I’ve enjoyed reading for their perspective and would like to share:
The Tao of IETF is an excellent introduction to the IETF process. A Working Group Last Call occurs:
When a WG document has been fully discussed, it usually goes through Working Group Last Call (often abbreviated as "WGLC"). This is a hopefully-final time for the WG to iron out issues.
Once the WGLC is complete, the next step is the IETF-wide Last Call:
After an Internet-Draft has been sufficiently discussed and there is rough consensus that what it says would be a useful standard, the IESG announces an IETF-wide Last Call (often abbreviated as "LC"). This helps get the attention of people who weren't following the progress of the draft, and can sometimes cause further changes to the draft. It is also a time when people in the WG who feel that they weren't heard can make their comments to everyone.