W3C home > Mailing lists > Public > ietf-http-wg@w3.org > April to June 2014

Re: #540: "jumbo" frames

From: Poul-Henning Kamp <phk@phk.freebsd.dk>
Date: Wed, 25 Jun 2014 19:12:43 +0000
To: K.Morgan@iaea.org
cc: gregw@intalio.com, mnot@mnot.net, w@1wt.eu, ietf-http-wg@w3.org, duerst@it.aoyama.ac.jp
Message-ID: <1418.1403723563@critter.freebsd.dk>
In message <0356EBBE092D394F9291DA01E8D28EC201186F24D7@sem002pd>, K.Morgan@iaea
.org writes:

>2. SETTINGS are only 32 bits. Depending on your answer to #1, there would
>need to be two or three SETTINGS (low, high, high-high) to capture the full
>range of possible MAX frame size values.  Perhaps a better option would be
>to have the setting defined as a multiple of 16K chunks (minus one?).

So this is a weak spot, because SETTINGS is only for the connection.

Ideally you should be able to bang up the frame size for a single
stream (as in: Client sess "Content-Length: ALOT" and tells server
to "just get it overhere ASAP" with a big frame size for that stream.

However, that's probably overthinking things, since connections where
that would help are very likely to have only one stream to begin with.
(If we later allow SETTINGS per stream, we get this for free.)

With a little tweak SETTINGS could be 56 bits, that's the cleanest
solution, especially for future settings we havn't thought about.

If we want to fit inside 32 bits, we can either limit the framesize
to 4GB, which is probably safe, but robs us the ability to send
huge objects as a single DATA frame.

Another way could be to go "scientific":

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Identifier (8)|
    +---------------+-------------------------------+---------------+
    |                        Value (24)             + Shift (8)     |
    +-----------------------------------------------+---------------+

Where the max framesize will then be

	Value * 2^(Shift)	/* (Value << Shift) in C syntax. */


I prefer making SETTINGS 56 bits.

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.
Received on Wednesday, 25 June 2014 19:13:06 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:14:31 UTC