aboutsummaryrefslogtreecommitdiffstats
path: root/link/link-protocol.h
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-29 13:55:09 +0100
committereunhhu <[email protected]>2026-09-29 13:55:09 +0100
commit315c1f970c2ae482bceec2a9cc8666e6cb380a81 (patch)
tree69401194de07e72049929793af76127c64fa65d6 /link/link-protocol.h
parent19ebac6e3cd5e48e16a73c78342fa676dc905db9 (diff)
downloadpure-315c1f970c2ae482bceec2a9cc8666e6cb380a81.tar.gz
pure-315c1f970c2ae482bceec2a9cc8666e6cb380a81.zip
Send no packet only to probe the path or say a challenge back
M2 (ten thousand devices, a record each every 5 s) sent 118k packets for 80k records. A link whose packets were never full still probed for a 1,452-byte path: nothing larger would have been carried. And a sender said a receiver's challenge back in a packet of its own, one for each device each time the receiver started. Now a link probes once a packet of its was full, and a challenge rides in the next packet that goes (records, or a probe). Until then the receiver's answers there are at most three times what came, which the answers to one packet are not; when they are held back, the sender's probe or record sent again says it back. M2 sends 80,036 again (docs/research/099-link-epochs.md).
Diffstat (limited to 'link/link-protocol.h')
-rw-r--r--link/link-protocol.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/link/link-protocol.h b/link/link-protocol.h
index 9b4e63d..f121b2e 100644
--- a/link/link-protocol.h
+++ b/link/link-protocol.h
@@ -68,7 +68,8 @@
* whole, with 1 to 3 bytes of framing, not the 19 of RECORD
* 0x07 CHALLENGE u64: a receiver's, until its sender says it back from
* the address the answers go to
- * 0x08 RESPONSE u64: a challenge said back (the last few had)
+ * 0x08 RESPONSE u64: a challenge said back (the last few had), in the next
+ * packet that goes (records, or a probe)
* 0x00 PADDING to the end of the packet: a full packet sent in a burst is
* a whole datagram
* Losses are detected as RFC 9002 says, with RACK's patience for packets
@@ -76,9 +77,11 @@
/* A packet is PURE_LINK_DATAGRAM bytes at most at first, and up to
* PURE_LINK_DATAGRAM_MOST once the path is found to carry that many (a
- * probe of that size acknowledged: DPLPMTUD, RFC 8899); a source's or an
- * input's name is 1 to PURE_LINK_NAME bytes; a receiver keeps where a
- * packet came from (the socket's address) in PURE_LINK_ADDRESS bytes. */
+ * probe of that size acknowledged: DPLPMTUD, RFC 8899; a link probes once
+ * a packet of its was full, else a larger one would carry nothing more); a
+ * source's or an input's name is 1 to PURE_LINK_NAME bytes; a receiver
+ * keeps where a packet came from (the socket's address) in
+ * PURE_LINK_ADDRESS bytes. */
enum { PURE_LINK_DATAGRAM = 1200, PURE_LINK_DATAGRAM_MOST = 1452, PURE_LINK_NAME = 64, PURE_LINK_ADDRESS = 28 };
/* Counts for a host's report: packets and records sent, records sent again,