Chapter 11 · Observability, Measurement, and Performance Engineering
Check your understanding
16 questionsself-scored · offline
Answer to check your grasp of Chapter 11. Multiple-choice and true/false questions score themselves and reveal an explanation; short-answer questions reveal a model answer. Nothing leaves your browser.
- Q1multiple choiceWhich layer holds most of QUIC's PERFORMANCE signal (the state you check first for a throughput or latency problem)?WhyRecovery/CC holds the RTT estimator, congestion window, bytes_in_flight, loss events, and PTO count — when throughput or latency is wrong, the answer is almost always here. [§11.1, RFC 9002 §5, §7]
- Q2multiple choiceA passive on-path observer (no keys) can see which of these?WhySizes, timing, connection IDs, and the latency spin bit are visible; the payload is encrypted and header protection hides the packet numbers. Congestion state lives only in the endpoint's qlog. [§11.1, RFC 9000 §17.4, RFC 9001 §5.4]
- Q3true / falseqlog and the SSLKEYLOGFILE format are defined by the core QUIC RFCs (9000/9001/9002).WhyBoth are tooling conventions — qlog is a separate IETF work in progress, and the key-log file format is an NSS/Wireshark convention. RFC 9001 defines the secrets but says nothing about logging them to a file. [§11.1, §11.3]
- Q4multiple choiceThe latency spin bit lets an on-path observer:WhyThe server reflects the spin value, the client inverts it, so it toggles once per RTT; measuring the time between toggles estimates RTT. It's optional and privacy-limited (disabled on ≥1 in 16 paths). [§11.1, RFC 9000 §17.4]
- Q5multiple choiceThe single most useful DERIVED latency metric for spotting bufferbloat is:Whymin_rtt approximates propagation delay; the gap between smoothed_rtt and min_rtt is queueing delay, so a large gap means buffers are filling — the clearest bufferbloat signal. [§11.2, RFC 9002 §5]
- Q6multiple choiceThroughput is low. Why is reporting the number alone nearly useless?WhyComparing bytes_in_flight against the cwnd and the flow-control limit tells you the bottleneck. Without the limiting ceiling, a flow-control misconfig and a congestion problem look identical. [§11.2, §8.4]
- Q7true / falseFor latency and loss metrics, tracking the average is enough to catch regressions.WhyAverages hide the tail. A p99 RTT or TTFB can double while the mean looks fine — and the tail is what sets real-time playout buffers and user-perceived stalls. Track p50 AND p99, and alert on the tail. [§11.2]
- Q8multiple choiceA high SPURIOUS-retransmission rate (packets retransmitted that were later acked as originally sent) indicates:WhyReordering past the packet threshold makes the sender declare a still-in-transit packet lost and retransmit it wastefully. It's a distinct signal from real loss. [§11.2, §8.2, RFC 9002 §6.1.1]
- Q9multiple choiceWhy is a raw QUIC packet capture opaque even to read packet numbers?WhyBeyond the encrypted payload, header protection hides the packet numbers, so you can't even reliably count packets without the keys. [§11.3, RFC 9001 §5.4]
- Q10multiple choiceTo decrypt a QUIC capture in Wireshark, what must you supply, and what does it contain?WhyThe key log holds the TLS 1.3 traffic secrets; Wireshark runs HKDF-Expand-Label with quic key/iv/hp to derive the packet-protection and header-protection keys and dissect every frame. [§11.3, RFC 9001 §5.1]
- Q11true / falseA TLS key log should be treated as a secret and not exported for production user traffic.WhyAnyone with the pcap and the key log can read everything the connection carried, including credentials. Export key logs only for test/staging traffic you intend to expose, and delete them after use. [§11.3]
- Q12multiple choiceWhy emulate the network instead of testing against the real internet?WhyPinning delay, loss, reordering, and bandwidth makes a behavior reproducible on demand and a measurement comparable release to release — the foundation of regression testing. [§11.4]
- Q13multiple choiceIn the §11.5 regression checklist, why is the 'min_rtt tracks the emulated RTT' gate important?WhyBefore trusting the other gates you validate the harness: min_rtt near the emulated RTT confirms the emulator and path are set up correctly. A green checklist measuring the wrong thing is worse than a red one. [§11.5]
- Q14true / falseBecause the network and workload are held constant, a failing regression gate points at the code — and at which signal regressed localizes the fix.WhyWith the path fixed by emulation, a gate that trips means the change caused it, and WHICH signal moved (queueing → buffering, goodput → congestion/flow control, TTFB → handshake) narrows where to look. [§11.5]
- Q15short answerYou have three vantage points on a QUIC connection: endpoint qlog, passive on-path, and decrypted capture. Give one question each is best suited to answer, and one thing each cannot show.Model answerEndpoint qlog: best for 'why is throughput low / what is my congestion state' (cwnd, bytes_in_flight, loss, RTT live only here); cannot show the peer's internal state (it's one-sided). Passive on-path: best for 'is the PATH adding RTT or loss' (spin-bit RTT, sizes, timing, no keys needed); cannot show the payload or packet numbers (encrypted / header-protected). Decrypted capture (Wireshark + keylog): best for 'what exact frames were exchanged, both directions' (byte-exact ground truth, the arbiter for interop bugs); cannot show congestion-control state (cwnd/bytes_in_flight never appear on the wire) and needs the keys. Hard problems correlate all three by timestamp. [§11.1, §11.3]
- Q16short answerName the golden signals a QUIC performance dashboard should track, and why percentiles matter.Model answerQueueing delay (smoothed_rtt − min_rtt) for bufferbloat/latency; goodput plus its limiting ceiling (congestion- vs flow-control- vs app-limited) for throughput and its bottleneck; loss rate plus PTO count for path degradation and tail loss; TTFB for handshake/first-byte latency; and CONNECTION_CLOSE error rate for connection failures. Track each at p50 AND p99 (or p999): the average hides the tail, and the tail is what sets real-time playout buffers and what the worst-off users actually experience — an average-only dashboard stays green through a regression that is hurting a tenth of users. [§11.2]