HTTPbis Working Group R. Peon
Internet-Draft Google, Inc
Intended status: Informational Mar 18, 2013
Expires: September 19, 2013
Header Delta-Compression for HTTP/2.0
draft-rpeon-httpbis-header-compression-03
Abstract
This document describes a mechanism for compressing streams of groups
of key-value pairs, often known as Headers in an HTTP session. See
RFC 2616 [RFC2616] or successors for more information about headers.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 19, 2013.
Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Peon Expires September 19, 2013 [Page 1]
Internet-Draft HTTP/2 Header Compression Mar 2013
Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. How it works . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Header pre-processing . . . . . . . . . . . . . . . . . . . . 4
4.1. Mapping the first-line . . . . . . . . . . . . . . . . . . 4
4.2. Mapping HTTP key-values . . . . . . . . . . . . . . . . . 4
5. Compressor and Decompressor State . . . . . . . . . . . . . . 5
6. Header Block Wire Format . . . . . . . . . . . . . . . . . . . 6
7. String Encoding . . . . . . . . . . . . . . . . . . . . . . . 8
8. Operations . . . . . . . . . . . . . . . . . . . . . . . . . . 8
9. Decompressor algorithm . . . . . . . . . . . . . . . . . . . . 9
10. Compression . . . . . . . . . . . . . . . . . . . . . . . . . 12
11. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.1. Background . . . . . . . . . . . . . . . . . . . . . . . . 15
11.2. Example Serialization . . . . . . . . . . . . . . . . . . 16
12. Unfinished components . . . . . . . . . . . . . . . . . . . . 25
13. Security Considerations . . . . . . . . . . . . . . . . . . . 25
14. Requirements Notation . . . . . . . . . . . . . . . . . . . . 25
15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25
16. Appendix A . . . . . . . . . . . . . . . . . . . . . . . . . . 25
17. Appendix B . . . . . . . . . . . . . . . . . . . . . . . . . . 27
18. Appendix C . . . . . . . . . . . . . . . . . . . . . . . . . . 32
19. Normative References . . . . . . . . . . . . . . . . . . . . . 38
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 38
Peon Expires September 19, 2013 [Page 2]
Internet-Draft HTTP/2 Header Compression Mar 2013
1. Overview
There have been several problems pointed out with the use of the gzip
compressor in SPDY [SPDY]. The biggest of these problems is that it
is possible for a smart attacker to inject content into the
compressor, and then to test hypotheses about the prior contents of
the compressor by examining the output size after each such content
injection. The other issue is that gzip often consumes more CPU than
many would like, especially in situations where one is doing forward
or reverse proxying. The compressor proposed here intends to solve
the first issue and significantly mitigate the second, while
providing compression that is not too much worse than gzip.