Attendees

  1. Alan Frindell, Meta (chair)
  2. Martin Duke, Google (chair)
  3. Cullen Jennings, Cisco
  4. Spencer Dawkins, Wonder Hamster
  5. Mike English, id3as
  6. Will Law, Akamai
  7. Suhas Nandakumar, Cisco
  8. Mo Zanaty, Cisco
  9. Lucas Pardue
  10. Mathis Engelbart, Technical University of Munich
  11. Kirill Pugin
  12. Victor Pascual, Nokia
  13. Sebastian Rust
  14. Tim Evens, Cisco
  15. Ted Hardie, Cisco
  16. Lucas Pardue, Cloudflare
  17. Luke Curley, Discord
  18. Ian Swett, Google
  19. Josh Stratton, Discord
  20. Ali Begin
  21. Sebastain Rust, Tech U of Darmstadt
  22. Daniel Fay, Meta
  23. Zaheduzzaman Sarker, Nokia
  24. Jana Iyengar, Fastly

9:30 Administrivia and overview (45 min)

Scribe for morning is Mike.

10:15 Use Cases and Deployment Scenarios for MoQ Priority (60 min)

11:15 Break (15 min)

No break.

11:30 Additional Background (60 minutes)

Scribe switch: Cullen, Will.

Chair expectation - by 2:30 or 3 we will address solution proposals.

11:30 Lunch (60 min)

12:30

Bashed agenda to talk about solutions later today.

12:50 Lucas * Lessons from HTTP (evolving from HTTP/2 to RFC 9218)

Review HTTP Priorties.

Alot of this stuff does not matter. Hardest part is proving any of this
works. How do we meassure for real, not a lab.

Scheduling is imporant, and that is not the signalling. The signalling
is only an input to scheduling.

Send what you have, vs try and wait and do something better. Try to have
the person sending the information indicate what they are trying to
accheive.

SPDY had weieght priority 0-7. Durin standardization moved to abotu 2^30
levels.

Ian: Had use cases where turned complex things on, performance went
down, and then they turned it off.

Very flexible proigramable things were too hard to explain, developers
uinsg it could not use it. Browsers did much of it inside the browser
instead of bubling up to applications.

Some web performance metrics showed better performance with priorities
turned off.

Need real world measurements, like with real WiFi.

Stream independence of QUIC made moving H2 trees to H3 very hard.

In the end, just punted priorties in QUIC spec.

Signals come from anywhere, like memory load for example. Naive
solutions can move to be easily DOSed.

Jana: Experence here in HTTP and Web general, so some things like
repriortization might work better in specific use case like MoQ.

Ability to repriortize did open DOS opportunities.

Alan: is there a browser API to change priority.

No, but can influence them by spooky action. API like Fetch Priority can
nudge things.

Mo: Advice on coexistance of H3 and Moq flows at same connection.

When started, wanted to use same thing, but the scheduling strategy does
not matter as long as it is the right fit for application.

Mo 1:20

Latency has gotten much worse over time, but the managment was much
harder.

Scaleable codecs took more compute so not used a much today.

Rely lots on congestion control - that is what backs up the q's.

Like to see newer techniques that can speed up "faster" than today.

The priority system will gamed by the app. Systems often fail to model
other cross traffic.

Application will allways have to compete against across saturating
flows.

Persistent congestion should be dealt with by app and not trying to use
priorities to deal with long linved. Instead they should use priroties
to deal with short term congestion.

Strict priorites sound simple, but typically need fairness or policing
adding to it.

Christain: A combination of best effort and adequate queue managment.

Will: broad deployments may be better than narrow better

Jana: MoQ should be a framework that cna work for both. Like to
highlight transiant and persistant congestion. There is no solution to
persistent other than stop enseing. Transient is not predictable. So
something happen in short time frame and others like, ABR, operate in
longer time frame.

Suhas: Transient more imporant.

Will: Persitant congestion starts as transient.

Mo: Congestion controll and prirotization are very tightly coupled.

Christain: we have the multicast problem. If a million people getting
it, if one is getting poor quality, what to do.

Mo: that is application sepecific way that allow susbcriber to change.
ABR example.

Lucas: Is rate limit persistent congestion or something different?

Jana: can not solve persistent congestion with priorites.

Ian: Does jitter buffer size very and how does application adjust.

Mo: Knows jitter buffer and tolerence and receiver.

Taling about congestion control and priority. These two differnt things.
Can do rate adaptation for persistent congestion. Moq congestion can
happen differnt places. Don't solve congestion control with priority.

Jana: how do you see interactions FEC probing between controllers.

Mo: Probe up to next media reates.

Ian: Does Reed Solomon use up too much CPU.

Mo: Have other approaches that use less.

Christian: Can't apply RS to Iframe, instead do to QUIC.

Mo: open questions on how FEC gets mapped to MoQ. Could be seperate
track, or could be in QUIC but proposal have not got much traction.

Ian: MoQ might create demand for FEC in QUIC.

Mo: Erasure code tend to do packets, but could also do it at frames. But
actual loss is packets so probably more efficient to do packets.

Lucas: As QUIC chair, many requests on FEC. Encourage people to reach
out on Francois Michel who did PhD on this topic.

Victor 1:50 - MoQ Priorities and How to Think About Them - (20 min)

Showed exmaple where filling with newest first does gets worst user
experence than oldest first. There are case where LIFO is better and
cases where FIFO is best.

Worked example 2 where a bunch of video got put on link, then no room
for high priority but small audio.

Ian: Any time you have multiple rates, so if you don't think you can get
a given level thorugh for extended time, then don't send it.

Mo: We have had this problem with filling pipe. This happens when Wifi
rate jumps and upper layer has already sent a bunch. Right thing is
smaller windows, matching pacing, and faster detection at the quic
layer. We don't care about filling the link, we care about keeping the
quee empty.

Luke: Buffer bloat is you can't prioritize something in the queue.

Christian: that won't work. It takes 2RTT to detect actually detection.
When making a decision to schedule, you are making decision based on
networks state 2rtt in the past.

Cullen - we're not here to fix congestion control in QUIC.

Jana - making decisions as late as possibe is really useful in real time
systems.

Will: Agree on priortize live over VOD but don't want VOD dropped off
the use-cases.

Luke: want to be able to VOD with MoQ

Cullen - number of signals are constrained. HTTP priorities failed
because of vagueness. Need to know how relays will behave. Therefore we
need to be specific on relay behavior.

Victor - easiest place to innovate is on the sender.

Cullen - easier to innovate in JS in the browser. Winning design is to
nail one end and leave the other end flexible.

Lucas - respond we have to define someting and everyone needs behave to
it. Need to be able to ignore as part of policing. Don't want can set a
flag and break everyone.

Victor - hope to make it more flexible for relays to eperiment with
algorithms.

2:30 Whiteboard/Discussion of Priority Questions Part 1 (75 min)

Questions

Moderated by Chairs

Question #1

Christian: seperate application level priority and QUIC level. The
algrothm in relay may decide what number to pass to QUIC API.

Question #2.

Lucas: veto tree

Luke: it is optimzation problem and impossible to get perfect

Victor: would want something you can comunicate to WebTransport API

Suhas: this is about what to send next when you have a few things, not
when you have nothing

Ian: can we see the space of inputs from production or production like
systems ?

Jana: two things what are the signalling, and what is the decision
algorithm

Mo answing Ian: Have all the signalling, evey stream pinnned or
prioritzed by user, sender decision will never fill pipe with more than
congestion controller will take. Stop sending as soon as it gets
feedback from controller.

Ian: Have a model of buffer depth ?

Mo: It is known due to knowing app, but not so much communicated.

Ian: So webex goal trying to slightly under fill the pipe and make right
decision.

Mo: congestion feedback to congestion controller is more than normal
RTP.

Lucas: user agent sniffing and using past history is a thing that they
do consider and use. Another signal they use, class of customer which is
not on the wire.

Luke: Tried sending jitter buffer size from receiver to sender, and
tried to make ABR based on time remaining. This did not work out. Target
latency was about 2 seconds.

Ian: In determining what to send and not overfill the pipe, did you try
and calulate what quality would work.

Luke: viewer send everything they want, server round down on what could
look, and send most recent first. Wanted to get around HOL blockin in
HLS. Deliveriing older data makes sense but you have less time to
deliver it.

Question #3

Alan: seems there should be sender and receiver signal.

Will: Need to think about DOS

Luke: need both, need to de duplicate sending up

Cullen - DDOS and client trust is a problem for subscriber side.
End-subscriber signal should only effect it. Original publisher signal
can propagate because we trust it more.

Luke: if only one subscriber, then can propigate upstream

Ian: subscribe are hop by hop. Data send from Original Publisher is end
to end.

Christain: when multiple publisher are sending to same end subscriber,
hard to trust relative priorities between publishers

Jana: If

Cullen - clarification, signal from original publisher is propagated
hop-by-hop across all nodes.

Ian: End publisher info flows to all relays and they can all act on it

Lucas: .. lost his point ...

Victor: End publisher can flow info to all the relays on the path.

Christain: Mostly a subscriber signal. PUblisher puts information in
catalog, then subscriber susbcibes to the track. The end subscriber is
making decision of what tracks to subscribe to.

Mike: Some of the signals propigate, but the decisions is made by each
sender. Be more cautious about propigating

Cullen - if you ask a relay to do something and it doesn't do it, you
have a broken system. We should be clear about what is optional versus
what must be fulfilled or else return an error.

Suhas: Publish has intention of how to deliver data. Needs to have some
way to indicate what prefernces.

Suhas: Use cases are indicating we need differnt things.

Mo: very hard to discuss this in the abstract. Some people thinking
about priorities inside tracks vs across tracks. We don't have a good
word for a track set.

Ian: what info can that client not provide.

Victor: differnt clients will provide differn info. And hard to update.

Luke: goal for MoQ is differnt clients have different latency
requirements. Last hop is easy, other hoips are hard. Solution was to
let the publisher decide. Need some combination of both.

Ian: end publisher might say lower quality better than 4k and don't want
that to stop all other traffic.

Luke: but some end subsriber might want to pin 4k stream.

Jana: Original publisher signal flows across the relay chain. End
subscriber signal flows up to first relay. Then that relay can choose to
send the signal or a differnt value of subscriber singal up.

Luke: Relay forward first subscribe. One second susbcribe, update the
subscribe to just say default.

Victor: On an individual hop, if the subcribe ask, then it should be
followed, otherwise use what publisher.

Suhas: If each subscriber ask for something differnt, they will get. If
the original publish has an problem on publish, the publisher needs to
set that.

Ian: What would a relay do with a up the chain the driven. Not want to
propigate all the end subscriber all the way back to the beginning.

Cullen - if you have things that don't reliably propagate, that system
will be brittle.

Christian: On comment we don't have a channel for info to propogiate
infomation up, we do, we just update the subscribe.

Ian: arguing more than would not propigate up the chain

Mo: differnce is the relays have agregations. Two differennt susbcribers
want to differnt tracks to have priroty. If we take a concrete example
like this and try send up.

Suhas: Relay does more than just a subscriber and publisher. Ever time
we add more signal, it makes the agregation more complicated.

Chairs: We have consensus we need both publish and subscriber demo.

Chirstain:

Tim Evens:

Chairs: propose way forward.

Seems rought straw man is:

Tracks can change publisher priority over time.

Publihser Priority can not change on object after sent

Subscirbe can update subscriber priorites over time.

Lucas: the H3 extention mechanism was allowed due to lack of getting
consensus on a base algorithm. Have written two extentions that no one
seems interested in. Ends up being not be used.

3:35 Break (15 min)

3:40

Will proposal on priorities.

Fair share between connections.

Looking inside a connection.

Publisher priority is 1. Send priority is 1 for each object.

End sibscriber clients also have an end subscriber.

Subscriber orders override the send order.

Default would be FIFO drainin if no priorities.

Ian: terifing for relay to agregate upstream. Too many ways to game
this.

Ian: we probably need to talk about granularity.

Victor: look at stuff for inside the track

Luke: agreement on between tracks good, but parts inside track need work

Chairs: Will & Cullen, Ian come up with stuff between tracks. Will see
more proposal for inside track.

ADs: requests

3:15 Whiteboard/Discussion of Priority Questions Part 2 (90 min)

Backup scribe lost connection at this point. Need to recover

Jona: we are using priorities for receive order and express dependency.
We need infinite numbers for that.
Cullen: all use cases can be solved with small numbers. Could be varint.

Suhas: clarify that steps are executed in order. Cullen - yes.

Martin

Questions

Moderated by Chairs

4:45 Day 1 Wrap Up