# RFC Errata

### Errata Search

Source of RFC
Summary Table Full Records

Found 2 records.

## Status: Reported (1)

### RFC 7323, "TCP Extensions for High Performance", September 2014

Source of RFC: tcpm (tsv)

Errata ID: 5586
Status: Reported
Type: Technical

Reported By: Marco Caspers
Date Reported: 2018-12-27

Section 2.3 says:

```Since the max window is 2^S (where S is the scaling shift count)
times at most 2^16 - 1 (the maximum unscaled window), the maximum
window is guaranteed to be < 2^30 if S <= 14.  Thus, the shift count
MUST be limited to 14 (which allows windows of 2^30 = 1 GiB).  If a
Window Scale option is received with a shift.cnt value larger than
14, the TCP SHOULD log the error but MUST use 14 instead of the
specified value.  This is safe as a sender can always choose to only
scaling by a factor larger than 14 and the sender is only scaling by
14, then the receive window used by the sender will appear smaller
than it is in reality.

```

It should say:

```Since the max window is 2^S (where S is the scaling shift count)
times at most 2^16 - 1 (the maximum unscaled window), the maximum
window is guaranteed to be < 2^30-2^14 if S <= 14.  Thus, the shift
count
MUST be limited to 14 (which allows windows of 2^30-2^14 ~ 1 GiB).
If a
Window Scale option is received with a shift.cnt value larger than
14, the TCP SHOULD log the error but MUST use 14 instead of the
specified value.  This is safe as a sender can always choose to only
scaling by a factor larger than 14 and the sender is only scaling by
14, then the receive window used by the sender will appear smaller
than it is in reality.

```

Notes:

Shifting is inserting zeroes on the right hand side. Thus for S = 14 the 14 right most bits are zero and thus the calculation 2^30 is invalid for the guaranteed maximum window size.

Correct calculation formulae is (2^30 - 1) - (2^14 -1).
Which can be simplified to 2^30 - 2^14.

## Status: Held for Document Update (1)

### RFC 7323, "TCP Extensions for High Performance", September 2014

Source of RFC: tcpm (tsv)

Errata ID: 5585
Status: Held for Document Update
Type: Editorial

Reported By: Marco Caspers
Date Reported: 2018-12-27
Held for Document Update by: Mirja Kühlewind
Date Held: 2019-03-18

Section 2.2 says:

```2.2.  Window Scale Option

The three-byte Window Scale option MAY be sent in a <SYN> segment by
a TCP.  It has two purposes: (1) indicate that the TCP is prepared to
both send and receive window scaling, and (2) communicate the
exponent of a scale factor to be applied to its receive window.
Thus, a TCP that is prepared to scale windows SHOULD send the option,
even if its own scale factor is 1 and the exponent 0.  The scale
factor is limited to a power of two and encoded logarithmically, so
it may be implemented by binary shift operations.  The maximum scale
exponent is limited to 14 for a maximum permissible receive window
size of 1 GiB (2^(14+16)).

```

It should say:

```2.2.  Window Scale Option

The three-byte Window Scale option MAY be sent in a <SYN> segment by
a TCP.  It has two purposes: (1) indicate that the TCP is prepared to
both send and receive window scaling, and (2) communicate the
exponent of a scale factor to be applied to its receive window.
Thus, a TCP that is prepared to scale windows SHOULD send the option,
even if its own scale factor is 1 and the exponent 0.  The scale
factor is limited to a power of two and encoded logarithmically, so
it may be implemented by binary shift operations.  The maximum scale
exponent is limited to 14 for a maximum permissible receive window
size of approximately 1 GiB ((2^30-1) - (2^14-1)).

```

Notes:

Left shift inserts zero's on the right hand side so the maximum window size is actually 16KiB shy of 1 GiB. The exact calculation would be ((2^30-1) - (2^14-1)). As it is stated as "approximately 1 GiB" the text is not incorrect but it would be good to provide the complete calculation in a document update to avoid invalid implementations.

Report New Errata