PQ Crypta Logo

Packets marked ECT(0)

Echo the ECN counts back in ACK frames carrying an ECN section (type 0x03). §13.4.1 makes this a conditional requirement — an endpoint MUST report the markings it receives "if these are accessible", and explicitly permits an endpoint with no access to the ECN field to report nothing. So counts coming back is a pass, and silence is never a failure. Silence is read against the path rather than left unresolved. Both directions cross the same path: a client whose own datagrams reach this endpoint still carrying ECT has shown the codepoint survives and that its stack sets it, and so has a port where any peer has ever echoed the markings sent from it. Either makes the silence the client's own and the result `unsupported` -- a property of the client, which §13.4.1 expressly allows. Only where nothing has shown the codepoint surviving is the run inconclusive, because only there is a stripped path still a live possibility.

PQ CRYPTA PLATFORM

🏠 Main

📰 News

👤 Account

⟨ QUANTUM ERROR PORTAL ⟩

Navigate the Error Dimensions

Jump to an anomaly59

Every one of these is a page: what the server emits, the clause it is judged against, and how each client answered. The full list carries the verdict tallies too.

q-ecn · RFC 9000 §13.4 · correctness · layer quic · udp/4468 · MUST

Passing this means: Rejected something invalid, with the code the RFC names.

Anomaly type: transport

How each client answered

ClientVersionVerdictWhat happened
curl libcurl/8.23.0 ngtcp2/1.25.0 Pass Responded correctly: echoed ECN counts back in its ACKs: 7 ECT(0), 0 ECT(1), 0 ECN-CE.
quinn noq fork (189b0ed) Pass Responded correctly: echoed ECN counts back in its ACKs: 13 ECT(0), 0 ECT(1), 0 ECN-CE.
aioquic 1.3.0 (PyPI wheel) Unsupported does not report ECN counts. Another peer has echoed the markings this same port sent, so the codepoint demonstrably survives the path from here -- this client simply reported nothing, which §13.4.1 permits where the ECN field is not accessible to it.
chromium build 1248 Pass Responded correctly: echoed ECN counts back in its ACKs: 12 ECT(0), 0 ECT(1), 0 ECN-CE.
quic-go quic-go v0.61.0 (h1:9So2anK4Tp22) Pass Responded correctly: echoed ECN counts back in its ACKs: 18 ECT(0), 0 ECT(1), 0 ECN-CE.
quiche 0.30.0 (1c8e976) Unsupported does not report ECN counts. Another peer has echoed the markings this same port sent, so the codepoint demonstrably survives the path from here -- this client simply reported nothing, which §13.4.1 permits where the ECN field is not accessible to it.
neqo 0.31.1 (cac2b74) Unsupported does not report ECN counts. 4 of its own datagrams reached this endpoint carrying ECT, so the path preserves the codepoint in both directions and this client's stack sets it -- but nothing came back about the markings we sent, and §13.4.1 requires reporting only where the ECN field is accessible to the endpoint.
picoquic 8162550 Pass Responded correctly: echoed ECN counts back in its ACKs: 7 ECT(0), 0 ECT(1), 0 ECN-CE.
ngtcp2 3c23148 Pass Responded correctly: echoed ECN counts back in its ACKs: 26 ECT(0), 0 ECT(1), 0 ECN-CE.
lsquic 4.9.4 (2b30189) Unsupported does not report ECN counts. 6 of its own datagrams reached this endpoint carrying ECT, so the path preserves the codepoint in both directions and this client's stack sets it -- but nothing came back about the markings we sent, and §13.4.1 requires reporting only where the ECN field is accessible to the endpoint.
xquic 2060a44 Unsupported does not report ECN counts. Another peer has echoed the markings this same port sent, so the codepoint demonstrably survives the path from here -- this client simply reported nothing, which §13.4.1 permits where the ECN field is not accessible to it.
msquic 2.7.0 (7e6525d) Pass Responded correctly: echoed ECN counts back in its ACKs: 12 ECT(0), 0 ECT(1), 0 ECN-CE.
quico 0.7.0 (npm) Unsupported does not report ECN counts. Another peer has echoed the markings this same port sent, so the codepoint demonstrably survives the path from here -- this client simply reported nothing, which §13.4.1 permits where the ECN field is not accessible to it.

What the clause requires

Echo the ECN counts back in ACK frames carrying an ECN section (type 0x03). §13.4.1 makes this a conditional requirement — an endpoint MUST report the markings it receives "if these are accessible", and explicitly permits an endpoint with no access to the ECN field to report nothing. So counts coming back is a pass, and silence is never a failure. Silence is read against the path rather than left unresolved. Both directions cross the same path: a client whose own datagrams reach this endpoint still carrying ECT has shown the codepoint survives and that its stack sets it, and so has a port where any peer has ever echoed the markings sent from it. Either makes the silence the client's own and the result `unsupported` -- a property of the client, which §13.4.1 expressly allows. Only where nothing has shown the codepoint surviving is the run inconclusive, because only there is a stripped path still a live possibility.

Judged against RFC 9000.

Run this one yourself

Every test is reachable from your own client. Nothing here needs an account.

curl -s https://conformance.pqcrypta.com/catalog.json \
  | jq '.tests[] | select(.id == "q-ecn")'