Skip to content

Commit 29696a6

Browse files
kixelatedclaude
andcommitted
moq-lite-04: explicit hop IDs and exclude hop filter
- Replace ANNOUNCE `Hops` count with explicit `Hop Count` + `Hop ID` list for relay loop detection. - Add `Exclude Hop` field to ANNOUNCE_PLEASE so relays can filter out announces that passed through themselves. - Hop ID 0 reserved for unknown hops (bridging from older versions). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 9aa095e commit 29696a6

1 file changed

Lines changed: 19 additions & 5 deletions

File tree

draft-lcurley-moq-lite.md

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -361,12 +361,17 @@ A subscriber sends an ANNOUNCE_PLEASE message to indicate it wants to receive an
361361
ANNOUNCE_PLEASE Message {
362362
Message Length (i)
363363
Broadcast Path Prefix (s),
364+
Exclude Hop (i),
364365
}
365366
~~~
366367

367368
**Broadcast Path Prefix**:
368369
Indicate interest for any broadcasts with a path that starts with this prefix.
369370

371+
**Exclude Hop**:
372+
If non-zero, the publisher SHOULD skip ANNOUNCE messages for broadcasts whose hop list contains this value.
373+
This is used by relays to avoid routing loops in a cluster.
374+
370375
The publisher MUST respond with ANNOUNCE messages for any matching and active broadcasts, followed by ANNOUNCE messages for any future updates.
371376
Implementations SHOULD consider reasonable limits on the number of matching broadcasts to prevent resource exhaustion.
372377

@@ -384,7 +389,8 @@ ANNOUNCE Message {
384389
Message Length (i)
385390
Announce Status (i),
386391
Broadcast Path Suffix (s),
387-
Hops (i),
392+
Hop Count (i),
393+
Hop ID (i) ...,
388394
}
389395
~~~
390396

@@ -397,10 +403,14 @@ A flag indicating the announce status.
397403
**Broadcast Path Suffix**:
398404
This is combined with the broadcast path prefix to form the full broadcast path.
399405

400-
**Hops**:
401-
The number of hops from the origin publisher.
402-
This is used as a tiebreaker when there are multiple paths to the same broadcast.
403-
A relay SHOULD increment this value when forwarding an announcement.
406+
**Hop Count**:
407+
The number of Hop ID values that follow.
408+
409+
**Hop ID**:
410+
A unique identifier for each relay in the path from the origin publisher.
411+
Each relay SHOULD append its own Hop ID when forwarding an announcement.
412+
The number of hops is used as a tiebreaker when there are multiple paths to the same broadcast.
413+
A value of 0 indicates an unknown hop (e.g. when bridging from an older protocol version).
404414

405415

406416
## SUBSCRIBE
@@ -608,6 +618,10 @@ A generic library or relay MUST NOT inspect or modify the contents unless otherw
608618

609619
# Appendix A: Changelog
610620

621+
## moq-lite-04
622+
- ANNOUNCE `Hops` count replaced with explicit `Hop ID` list for loop detection.
623+
- Added `Exclude Hop` to ANNOUNCE_PLEASE for relay loop avoidance.
624+
611625
## moq-lite-03
612626
- Version negotiated via ALPN (`moq-lite-xx`) instead of SETUP messages.
613627
- Removed Session, SessionCompat streams and SESSION_CLIENT/SESSION_SERVER/SESSION_UPDATE messages.

0 commit comments

Comments
 (0)