Add a telescoping SUBSCRIBE_DEMAND to moq-lite and a moq-transport extension#31
Add a telescoping SUBSCRIBE_DEMAND to moq-lite and a moq-transport extension#31kixelated wants to merge 1 commit into
Conversation
|
Warning Review limit reached
More reviews will be available in 1 minute and 51 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…tension Report the downstream demand for a subscription back up the relay fan-out tree, so an origin learns its true audience and what those subscribers need across any number of hops. moq-lite: a new SUBSCRIBE_DEMAND message on the Subscribe Stream carrying Subscriptions Created and Subscriptions Closed (cumulative counts whose difference is the current subscriber count; a relay sums each across its downstreams, so demand telescopes for free) and a Group Request (the minimum group the subscriber wants produced, encoded like Group Start). The group request is a level, not a one-shot "new group now" trigger -- already satisfied if a group at or beyond it exists -- so it is idempotent and aggregates as the maximum of downstream requests; a publisher MAY also treat a rising Subscriptions Created as an implicit new-group request. A Type tag is added to the subscriber's post-SUBSCRIBE messages (0x0 SUBSCRIBE_UPDATE, 0x1 SUBSCRIBE_DEMAND). moq-transport: draft-lcurley-moq-demand expresses the same in moq-transport's idiom -- a fire-and-forget SUBSCRIBE_DEMAND control message on the request stream (no Request ID, no response), negotiated per hop via a SUBSCRIBE_DEMAND Setup Option. Replaces the earlier subscribe-stats framing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
b40032c to
16b0aa7
Compare
Summary
Reports the downstream demand for a subscription back up the relay fan-out tree, in two places:
draft-lcurley-moq-lite.md) — a newSUBSCRIBE_DEMANDmessage on the Subscribe Stream.draft-lcurley-moq-demand.md) — the same functionality as a standalone extension I-D againstdraft-ietf-moq-transport.A relay aggregates many downstream subscriptions for a Track into one upstream subscription, so an origin can't see its true audience or what those subscribers need.
SUBSCRIBE_DEMANDfixes that with values chosen to aggregate cheaply up the tree.What it carries
Subscriptions CreatedandSubscriptions Closed, cumulative counts whose difference is the current subscriber count. A relay reports the sum of each across its downstreams, so demand telescopes for free: the origin reads its total audience across any number of hops from one upstream subscription. Reporting two counts (rather than one gauge) also lets a publisher distinguish churn from a new arrival — a risingCreatedis an implicit new-group signal.Group Start;0= no request). Unlike a PLI-style "new group now" trigger, this is a level: already satisfied if a group at or beyond it exists. That makes it idempotent and lets it aggregate as the maximum of downstream requests (less any a relay can serve from cache), so duplicate requests never produce duplicate groups. This is the deduplication win over draft-ietf-moq-transport-18, which gives0the special meaning "generate now".moq-lite change
SUBSCRIBE_DEMANDmessage (Subscriptions Created,Subscriptions Closed,Group Request).Typetag on the subscriber's post-SUBSCRIBE messages (0x0SUBSCRIBE_UPDATE,0x1SUBSCRIBE_DEMAND), mirroring the publisher's already-typed responses.Group Requestincrease is latency-sensitive and forwarded promptly.moq-transport extension (new draft)
SUBSCRIBE_DEMANDcontrol message on the subscription's request stream: consumes no Request ID and elicits no response (a poor fit forREQUEST_UPDATE, whose job is to modify the subscription).SUBSCRIBE_DEMANDSetup Option (0xC0117).Notes for reviewers
main(drops the earlier stale history that predated Remove Frame/Object Duration from moq-lite and moq-timestamp #32/moq-lite-05: encode Hop ID as fixed-width 64-bit integer #33). Both drafts build OK (kramdown-rfc+xml2rfc-txt).subscribe-statsframing: renamed to demand, demand split into created/closed counters, and theGroup Requestadded.🤖 Generated with Claude Code