Re: Updated QCRAM Draft
Dmitri Tikhonov <dtikhonov@litespeedtech.com> Wed, 24 January 2018 16:49 UTC
Return-Path: <dtikhonov@litespeedtech.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D4D34127010 for <quic@ietfa.amsl.com>; Wed, 24 Jan 2018 08:49:57 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=litespeedtech-com.20150623.gappssmtp.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 Xz2yh8GaHUxV for <quic@ietfa.amsl.com>; Wed, 24 Jan 2018 08:49:55 -0800 (PST)
Received: from mail-qt0-x22e.google.com (mail-qt0-x22e.google.com [IPv6:2607:f8b0:400d:c0d::22e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B9DFB126DCA for <quic@ietf.org>; Wed, 24 Jan 2018 08:49:54 -0800 (PST)
Received: by mail-qt0-x22e.google.com with SMTP id o35so11912534qtj.13 for <quic@ietf.org>; Wed, 24 Jan 2018 08:49:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=litespeedtech-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to:user-agent; bh=NckQ/hrDS4DXIzq2ct3TFyn+4QH9yfhgwLGlEyIZflk=; b=P4tRPnHT2/bkghXDIfXIIBYayE8RGq+QyhVM3V4mpWdE5/2GCGUf2OdF9oY6wbUDp+ +bk5Op7KVeMOrUWCWGdjcWMakU3gt1K7SKX4w+ll7wiCV4fgT1NC5EIEtTirNSK3FRNl /ohxoqO0jGmln3xu5P5/yNi9o3U48s1L/KQa01zb+9yYIcYighx2mTqtK3NHU1J8IoDB xDb3b7am0Cax+M/lVU/BYqw47pG2kPiImVKFdDWIFARDdXAt/wHTMilhLV2Ly2qXVqgW mxpj64Y70cOZZ4zHjIz8+NZHewxtJI1epD3Q8Kapgl3pn3UzKOJzUvd/bmlCPoyWBPur zl2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=NckQ/hrDS4DXIzq2ct3TFyn+4QH9yfhgwLGlEyIZflk=; b=ua6wN3HpLTE99SYXBwK3esnaCCx50fK+UMVQO/lrFNW/1oYGeUpm8XQnx0Bj7+c/l6 hcZkkRLUqLBub5sIHPqLcVYYjeG7aEhtub8sh1Cl5Bj/P35aJ5tZYzjGa5T/zenChwxu OuAztddo8DJJ3j+8S/F8EyjcX9IjZXVyX+uatVoHLu+bZHte7P78QNzU7H9ic/OSWuuj GpEp5fjwz9umhDRL7C2tj+/tr7d56BtXfJwBs8nuMtkW8DdTw/1JXtOriqrepFgauIHa 5WKcB5kY51cQ4elw87EgwI0CdFj0YnMsDsPVr2STaj3M0IAd744WgQc/bVAuVYzhV5Hy NSOQ==
X-Gm-Message-State: AKwxytd/ChzM28eo09rBbijmwZPyxQVlraM3zrFOGXn0IE0EaJJiLtT6 i6pLv1onUu/MdLWnPFVVqaX0Hg==
X-Google-Smtp-Source: AH8x227mcuJHkxGkAOvtH9310rSR8DLmL/SgyJ/8XxfEc0a8bWD+C02DibVtmmuHFRXy0pQUeuGC3w==
X-Received: by 10.55.207.156 with SMTP id v28mr10014152qkl.36.1516812593662; Wed, 24 Jan 2018 08:49:53 -0800 (PST)
Received: from ubuntu-dmitri (ool-2f1636b6.static.optonline.net. [47.22.54.182]) by smtp.gmail.com with ESMTPSA id x79sm586325qkg.38.2018.01.24.08.49.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jan 2018 08:49:53 -0800 (PST)
Date: Wed, 24 Jan 2018 11:49:51 -0500
From: Dmitri Tikhonov <dtikhonov@litespeedtech.com>
To: Mike Bishop <mbishop@evequefou.be>
Cc: IETF QUIC WG <quic@ietf.org>, Charles 'Buck' Krasic <ckrasic@google.com>
Subject: Re: Updated QCRAM Draft
Message-ID: <20180124164950.GC7729@ubuntu-dmitri>
Mail-Followup-To: Mike Bishop <mbishop@evequefou.be>, IETF QUIC WG <quic@ietf.org>, Charles 'Buck' Krasic <ckrasic@google.com>
References: <MWHPR08MB2432AA6E7D43B2318F23B671DAE20@MWHPR08MB2432.namprd08.prod.outlook.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <MWHPR08MB2432AA6E7D43B2318F23B671DAE20@MWHPR08MB2432.namprd08.prod.outlook.com>
User-Agent: Mutt/1.5.24 (2015-08-30)
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/YjnhdliEhI9XQvIQKuq3myDW2Eo>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 24 Jan 2018 16:49:58 -0000
On Wed, Jan 24, 2018 at 05:53:55AM +0000, Mike Bishop wrote: > Buck has posted an updated QCRAM draft at > https://tools.ietf.org/html/draft-krasic-quic-qcram-04 -- please read > before tomorrow's meeting so we can have a useful discussion. Thanks! Single Control Stream Prevents QCRAM-04 from Solving HoLB ========================================================= Abstract: A consice overview of the HoLB problem is presented. The QCRAM-04 approach to solving this problem is analyzed. A problematic design choice is identified and its impact assessed. An alternative design is suggested. Problem Statement ----------------- QCRAM-04 is a version of QCRAM in which all table updates occur on a dedicated control stream. This restriction has a negative effect on the protocol's ability to minimize HoLB. There exists a class of applications for which QCRAM-04 does not solve HoLB, solely as a result of introducing ordering to otherwise independent operations. The Original HoLB Problem ------------------------- The original HoLB problem that we are trying to solve is as follows. HPACK/GQUIC delivers all HTTP message headers as header blocks on a separate control stream. HTTP message payload (bodies) are sent on different streams, one message per stream. The application (HTTP) cannot process message bodies without the headers; it must have the headers before it starts reading from the message stream. +----------------+----------------+ | Header Block A | Header Block B | +----------------+----------------+ +----------------+ | Message A Body | +----------------+ +--------------------------------+ | Message B Body | +--------------------------------+ Figure 1: HPACK/GQUIC: Control stream carrying two header blocks and two streams carrying message bodies. If a packet carrying part of the Header Block A is lost, Header Block B and, therefore, the whole of Message B cannot be processed, even if all of the packets carrying Header Block B and Message B Body have arrived. Message B is stalled until the lost packet is retransmitted successfully and the control stream is unblocked. This is the HoLB problem. Proposed Solutions ------------------ The solutions to the HoLB problem fall into two categories: 1. Avoidance: Disallow vulnerable references. This approach is robust and simple to implement, but carries a compression performance penalty. 2. Minimization: Allow vulnerable references, but minimize their impact. This approach looks to achieve maximum compression at the cost of protocol and implementation complexity. QCRAM and QPACK belong to the second category. Until QCRAM-04, both carried table updates on multiple streams, for the following reason: Coping with False Dependencies ------------------------------ (Refer to Figure 1 again). If Header Block B uses a dynamic entry inserted by Header Block A, then B cannot be processed until A has been processed; this is a true dependency. If, however, Header Block B does not depend on any insertions performed by Header Block A, placing them in order on a single control stream introduces a false dependency. The design choice of placing dynamic table updates on separate streams is driven by desire to eliminate false dependencies and, thereby, to minimize HoLB. How QCRAM-04 is Different From HPACK/GQUIC ------------------------------------------ QCRAM-04 moves parts of header blocks from the control stream to the individual message streams. This means that if a particular message's headers do not cause an insertion into the dynamic table, this message does not have to write to the control stream. This eliminates some false dependencies and is an improvement over HPACK/GQUIC. +---------------------------+ | Updates Associated with A | +---------------------------+ +----------------+----------------+ | Header Block A | Message A Body | +----------------+----------------+ +----------------+--------------------------------+ | Header Block B | Message B Body | +----------------+--------------------------------+ Figure 2: QCRAM-04: control stream carrying table modifications upon which Header Block A depends and message streams for messages A and B. Message B can be processed if parts of message A are lost. False Dependencies Remain ------------------------- If messages A and B cause independent updates to the dynamic table, they are written to the control stream. This fact makes message B depend on message A: a false dependency. +-----------------------+-----------------------+ | Updates Assoc. with A | Updates Assoc. with B | +-----------------------+-----------------------+ +----------------+----------------+ | Header Block A | Message A Body | +----------------+----------------+ +----------------+--------------------------------+ | Header Block B | Message B Body | +----------------+--------------------------------+ Figure 3: QCRAM-04: control stream carrying independent table modifications which, nevertheless, make Message B depend on Message A: a false dependency. Note that Figure 3 and Figure 1 are quite similar. Three Application Classes ------------------------- To analyze how QCRAM-04 improves over HPACK/GQUIC, we should consider three application classes (basically, usage patterns): I. Dependent header blocks; II. Independent header blocks without table modification; and III. Independent header blocks with table modification. I. Dependent Header Blocks -------------------------- If Header Block B uses table entries added by Header Block A, there is not much one can do about that: A must be processed before B, no matter how the header blocks are transmitted. QCRAM-04 and HPACK/GQUIC do not introduce HoLB: this is the property of the application itself. II. Independent header blocks without table modification -------------------------------------------------------- Header blocks that do not modify the dynamic table do not require the use of the control stream in QCRAM-04 (see Figure 2). This is a clear improvement over HPACK/GQUIC, which introduces a false dependency and risks HoLB by delivering all header blocks over the same stream. III. Independent header blocks with table modification ------------------------------------------------------ If Header Blocks A and B insert different entries into the dynamic table and Header Block B does not use any entries inserted by A, both QCRAM-04 and HPACK/GQUIC introduce a false dependency by delivering unrelated table updates associated with A and B on the same stream (see Figure 3). Quantitatively, QCRAM-04 is a little better than HPACK/GQUIC here. This is because it sends less data on the control stream, which means that the chances of packet loss are smaller. However, the improvement is small: the control stream carries table updates, which is most of the header block data. Summary ------- QCRAM-04 achieves HoLB minimization in one class of applications, but not in the other, where it introduces a false dependency. This means that the answer to the question "Will my application suffer from protocol-induced HoLB were I to switch to HTTP/QUIC?" is "It depends." That is not good enough. In the HoLB minimization approach, independent dynamic table updates must be sent on different streams. - Dmitri.
- Updated QCRAM Draft Mike Bishop
- Re: Updated QCRAM Draft Kazuho Oku
- Re: Updated QCRAM Draft Jana Iyengar
- Re: Updated QCRAM Draft Kazuho Oku
- Re: Updated QCRAM Draft Charles 'Buck' Krasic
- Re: Updated QCRAM Draft Dmitri Tikhonov
- Re: Updated QCRAM Draft Kazuho Oku
- Re: Updated QCRAM Draft Charles 'Buck' Krasic
- Re: Updated QCRAM Draft Dmitri Tikhonov
- Re: Updated QCRAM Draft Charles 'Buck' Krasic
- Re: Updated QCRAM Draft Roberto Peon
- Re: Updated QCRAM Draft Charles 'Buck' Krasic
- Re: Updated QCRAM Draft Charles 'Buck' Krasic