├── .gitignore
├── meetings
├── slides-2021-06-23.1-jholland.pdf
├── README.md
└── minutes
│ ├── minutes-2021-08-04.md
│ ├── tpac-2021-agenda.md
│ ├── minutes-2021-10-27-tpac-2021-notes.md
│ ├── minutes-2021-09-01.md
│ ├── minutes-2021-10-06.md
│ └── minutes-2021-10-27-tpac.md
├── w3c.json
├── LICENSE.md
├── consensus-transport-protocols.md
├── CONTRIBUTING.md
├── consensus-dependency-specs.md
├── README.md
├── WORK.md
├── primers
└── 01-getting-started.md
└── multicast-cg-charter.html
/.gitignore:
--------------------------------------------------------------------------------
1 | .*.sw?
2 | *~
3 |
--------------------------------------------------------------------------------
/meetings/slides-2021-06-23.1-jholland.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/w3c/multicast-cg/HEAD/meetings/slides-2021-06-23.1-jholland.pdf
--------------------------------------------------------------------------------
/w3c.json:
--------------------------------------------------------------------------------
1 | {
2 | "group": ["cg/multicast"]
3 | , "contacts": ["dontcallmedom"]
4 | , "repo-type": "cg-report"
5 | }
6 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | All Reports in this Repository are licensed by Contributors
2 | under the
3 | [W3C Software and Document License](https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document).
4 |
5 | Contributions to Specifications are made under the
6 | [W3C CLA](https://www.w3.org/community/about/agreements/cla/).
7 |
8 | Contributions to Test Suites are made under the
9 | [W3C 3-clause BSD License](https://www.w3.org/Consortium/Legal/2008/03-bsd-license.html)
10 |
11 |
--------------------------------------------------------------------------------
/consensus-transport-protocols.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | This is the list of transport protocols recommended for consideration by the Multicast Web Community Group as use cases that might be worth supporting in later-phase work for transport features (as described in the [charter](TBD:URI)). This list should be updated as needed according to group consensus while the Multicast work incubates.
4 |
5 | # Protocols
6 |
7 | - [FLUTE (RFC 6726)](https://datatracker.ietf.org/doc/html/rfc6726)
8 | - [FCAST (RFC 6968)](https://datatracker.ietf.org/doc/html/rfc6968)
9 | - [NORM (RFC 5740)](https://datatracker.ietf.org/doc/html/rfc5740)
10 | - [RTP (RFC 3550)](https://datatracker.ietf.org/doc/html/rfc3550) (with a focus on multicast-based profiles)
11 |
12 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Multicast Community Group
2 |
3 | This repository is being used for work in the W3C [Multicast Community Group](https://www.w3.org/community/multicast/), governed by the [W3C Community License Agreement (CLA)](https://www.w3.org/community/about/agreements/cla/). To make substantive contributions, you must join the CG.
4 |
5 | If you are not the sole contributor to a contribution (pull request), please identify all
6 | contributors in the pull request comment.
7 |
8 | To add a contributor (other than yourself, that's automatic), mark them one per line as follows:
9 |
10 | ```
11 | +@github_username
12 | ```
13 |
14 | If you added a contributor by mistake, you can remove them in a comment with:
15 |
16 | ```
17 | -@github_username
18 | ```
19 |
20 | If you are making a pull request on behalf of someone else but you had no part in designing the
21 | feature, you can remove yourself with the above syntax.
22 |
--------------------------------------------------------------------------------
/consensus-dependency-specs.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | This is a list of IETF specifications that are considered likely-necessary underpinnings for success on the deliverables of the Multicast Web Community Group, and members of the group are therefore encouraged to review and track their progress. This list should be updated as needed according to group consensus while the Multicast work incubates.
4 |
5 | # Specifications
6 |
7 | - [DORMS](https://datatracker.ietf.org/doc/html/draft-ietf-mboned-dorms)
8 | - [AMBI](https://datatracker.ietf.org/doc/html/draft-ietf-mboned-ambi)
9 | - Possibly [CBACC](https://datatracker.ietf.org/doc/html/draft-ietf-mboned-cbacc)
10 | - Possibly [MNAT](https://datatracker.ietf.org/doc/html/draft-ietf-mboned-mnat)
11 | - At least one multicast-specific web security considerations document ([a likely starting point](https://github.com/squarooticus/draft-krose-multicast-security) is begun, loosely modeled on the [WebRTC Security Considerations (RFC 8826)](https://www.rfc-editor.org/rfc/rfc8826.html))
12 |
13 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Multicast Community Group
2 |
3 | Repository for the Multicast Community Group
4 |
5 | See also the following resources:
6 |
7 | * [Home Page](https://www.w3.org/community/multicast/)
8 | * [Multicast Community Group Charter](https://w3c.github.io/multicast-cg/multicast-cg-charter.html)
9 | * [Public Mailing List archive](https://lists.w3.org/Archives/Public/public-multicast/)
10 |
11 | With a (free) W3C account login, you can join the community group at [https://www.w3.org/groups/cg/multicast](https://www.w3.org/groups/cg/multicast).
12 |
13 | We have a [recurring meeting](https://lists.w3.org/Archives/Public/public-multicast/2021Jul/0004.html) scheduled for the first Wednesday of the month at 10:30am Eastern time (2:30pm UTC during [US daylight savings](https://www.timeanddate.com/time/change/usa), or 3:30pm UTC during standard time). If you would like to attend except that this time is unfriendly for your time zone, please [open an issue](https://github.com/w3c/multicast-cg/issues) and we will look for a good way to accommodate the request.
14 |
15 | ## Code of Conduct
16 |
17 | The Multicast CG operates under the [W3C Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/).
18 |
--------------------------------------------------------------------------------
/meetings/README.md:
--------------------------------------------------------------------------------
1 | # Meeting Log
2 |
3 | * 2022-09-07: [minutes](https://docs.google.com/document/d/1DoQc49twZk9OZeTJEryI1ZBRAkXIy4Nud6lxgaRMb4E), [video](https://youtu.be/d939HLoIhYs)
4 | * 2022-08-02: [minutes](https://docs.google.com/document/d/1vop1sEctzAGANR6zG37_6QxnUuP-z3R6-LdWXIQ-yfk), [video](https://youtu.be/ShVX7_jacyY)
5 | * 2022-07-06: [minutes](https://docs.google.com/document/d/1aGyLFiaIuwlcvRGueVKsPmpF1EYVAKSJHf8usxfQvoE), [video](https://youtu.be/3EgWETPIx1M)
6 | * 2022-06-01: [minutes](https://docs.google.com/document/d/1eFGd6EU3Uv2Vnqdq2QxlCOhcGKdxwdfIJbMUF3KlVGo), [video](https://youtu.be/0FIfsH6DgX8)
7 | * 2022-05-04: [minutes](https://docs.google.com/document/d/1eoGvNcbh26wUPEGZOHJWzd4Y1gKZIAUx3_0NWaghNwg), [video](https://youtu.be/ctHGeIU_WkU)
8 | * 2022-04-06: [minutes](https://docs.google.com/document/d/1MMvQuMfDtcj_cRVPWDnVUMNKWhcmF9um3WsUXK5EC3E), [video](https://www.youtube.com/watch?v=YMgTnplh6S8)
9 | * 2022-03-02: [minutes](https://docs.google.com/document/d/1dcvvcHm59bqO5QWP-sfjclW6HhdPQt9L9g0UNJfUKR8/), [video](https://www.youtube.com/watch?v=Kc3an8kUfK0)
10 | * (2022 February meeting cancelled, [announcement](https://lists.w3.org/Archives/Public/public-multicast/2022Feb/0000.html))
11 | * 2022-01-07: [minutes](https://docs.google.com/document/d/1hhtgQVjy73FTWP4AIZA_F3C2Pkqtc0Sy_NG2ebwy-fU), [video](https://www.youtube.com/watch?v=StMuMXMRYxQ)
12 | * 2021-12-01: [minutes](https://www.w3.org/2021/12/01-multicast-minutes.html)/[minutes-raw](minutes/minutes-2021-12-01.md), [video](https://youtu.be/nVUO28amBT4)
13 | * 2021-10-27 (TPAC 2021): [minutes](https://www.w3.org/2021/10/27-multicast-minutes.html) (or the [captured text](minutes/minutes-2021-10-27-tpac.md) in case of availability issues), [video](https://www.youtube.com/watch?v=VV4gbOczhkU), [slides](https://docs.google.com/presentation/d/1YAFs3Pif0o2e3hLdFbEnpm0iAC8NBPXuDBZKi2FTO6A)
14 | * 2021-10-06: [minutes](minutes/minutes-2021-10-06.md), [video](https://youtu.be/ukm0bzwDEno)
15 | * 2021-09-01: [minutes](minutes/minutes-2021-09-01.md), [video](https://youtu.be/mTAtgUrPbt4)
16 | * 2021-08-04: [minutes](minutes/minutes-2021-08-04.md)
17 | * 2021-06-23: [minutes](https://www.w3.org/2021/06/23-multicast-minutes.html), [Jake's slides](slides-2021-06-23.1-jholland.pdf)
18 |
19 |
--------------------------------------------------------------------------------
/meetings/minutes/minutes-2021-08-04.md:
--------------------------------------------------------------------------------
1 | I forgot to record the session, but I captured a few notes from the
2 | meeting.
3 |
4 | Attendees:
5 |
6 | - Jake Holland
7 | - Kyle Rose
8 | - Sam Hurst
9 |
10 | (Brett Sheffield also sent apologies offline, and hopes to make it
11 | next time.)
12 |
13 | Agenda:
14 |
15 | * Welcome & Agenda-bash
16 | * Questions/comments on recent IETF 111 and upcoming TPAC
17 | * Discuss using QUIC and libnghq to solve the packet level encryption problem
18 | 5 minutes: Schedule working session in 1-2 weeks for those
19 | who are interested.
20 |
21 | Recommended reading:
22 |
23 | * https://github.com/bbc/nghq/blob/master/docs/public-api.md
24 | * https://datatracker.ietf.org/doc/html/draft-pardue-quic-http-mcast
25 | I've got a couple of points of confusion here that I'm hoping
26 | to clear up by digging on it over the next week or 2, and
27 | anyone who can help shed light here will be invited to do so.
28 |
29 | After a brief "no particular questions or comments" about the IETF
30 | meetings, we dove into details on the QUIC/nhgq implementation
31 | questions.
32 |
33 | Notable clarifications we covered included:
34 |
35 | - the unidirectional streams don't need session establishment or alpn
36 | - but it does need to get the push promises or it might throw things
37 | away. (Sam mentioned some unimplemented thoughts toward repeating
38 | the push promise later to cover losses/late starts better, and the
39 | same with headers)
40 | - unicast recovery is (optionally) done at the app layer, not built
41 | into the library
42 | - there's not a built-in concept of coupling between multicast and
43 | unicast streams, though there's ways to set the connection and
44 | session ids in the library and that might be a path to having one
45 | - Sam explained that in DVB they've been aiming to support a satellite
46 | broadcast use case with no return path, so some of the design on the
47 | library has aimed toward that.
48 | - There's not datagram support implemented now
49 | - I mentioned I was thinking datagram support would be a useful way
50 | to do a transparent port of existing UDP multicast apps, so I'd
51 | probably want to get that working.
52 |
53 | The rough plan over the next couple of weeks is:
54 |
55 | - bring up the example sender & receiver as-is
56 | - make it use some encryption (the example just uses memcpy and passes
57 | the data in the clear in the encrypt/decrypt callbacks)
58 | - try to get it running with the browser
59 | - this likely needs some browser API changes, where things will
60 | maybe get interesting, but as a starting point try to make the
61 | object payloads arrive at the app via the ReadableStream and
62 |
63 | We did not schedule a working session, but might do so later as part
64 | of step 3 of that plan.
65 |
66 | Kyle had a late agenda-bash with draft-krose-multicast-security. We
67 | decided "as soon as practical" was the best time to raise it on
68 | secdispatch, so he's going to kick that off after a few changes he
69 | has pending, with Friday as the target.
70 |
71 | We did not touch on the TPAC question, I expect we'll do that next
72 | time instead.
73 |
74 |
--------------------------------------------------------------------------------
/meetings/minutes/tpac-2021-agenda.md:
--------------------------------------------------------------------------------
1 |
2 | # Proposed Agenda
3 |
4 | 1. Welcome, Agenda-bash (~5 mins)
5 | 2. Intro to Multicast-CG (15 mins)
6 | 3. Next Steps: discuss briefly & schedule working sessions (25 mins)
7 | 1. QUIC with multicast (https://datatracker.ietf.org/doc/html/draft-pardue-quic-http-mcast)
8 | 1. Get basic functionality demo running (no browser) with
9 | 2. Also look into the latest [webtransport implementation](https://github.com/web-platform-tests/wpt/tree/master/tools/webtransport/h3), which has datagrams. See about hacking in multicast like nghq did?
10 | 3. Once something works, get it running in browser.
11 | 1. datagrams+webtransport better match to existing api? nghq's object approach better match for xhr, I think. Any others?
12 | 4. Look into addding AMBI to quic-http-mcast ()
13 | 2. Anyone know anyone willing who hasn't chimed in on IETEF secdispatch support for work on ?
14 | 3. IETF hackathon to play VLC mcast streams from internet2 in browser demo. Thread:
15 | 1. This can anchor the datagrams use case and carry forward if we can get it working.
16 | 4. Wrap-up & Summary (5 mins)
17 |
18 | # Logistics
19 |
20 | Please note:
21 |
22 | 1. This meeting will be recorded if nobody withholds consent, as covered by the latest draft process guidelines:\
23 |
24 |
25 | The purpose of recording is to aid with minutes, enable later review of comments, and to help future new or prospective group members get oriented. The video will be posted to Youtube and made publicly available without an expiration. However, if requested by recorded participants, sections of the public recording will be redacted to their satisfaction as needed, before or after publication (though after publication of course there may be copies outside our control). A link to the recording will be kept in the meeting log here (and updated if replaced with a redacted recording):
26 |
27 |
28 | 2. This is a W3C Community Group meeting, so it's to operate under
29 | the W3C Code of Ethics and Professional Conduct:
30 |
31 |
32 | # Coordinates
33 |
34 | 1. Meeting link should work for most (webex client install if missing):\
35 |
36 |
37 | Otherwise, should let you put in the meeting number and password:
38 |
39 | * Meeting number: 2598 001 6648
40 | * Password: yay-multicast!
41 |
42 | 2. Join by phone:
43 |
44 | * 1-408-792-6300 Call-in number (US/Canada)
45 | * 1-877-668-4490 Call-in toll-free number (US/Canada)
46 |
47 | 3. Join by video system:
48 |
49 | * Dial 25980016648@akamai.webex.com
50 | * Access code: 2598 001 6648
51 |
52 | Global call-in numbers:
53 |
54 | Toll-free calling restrictions:
55 |
56 |
57 |
--------------------------------------------------------------------------------
/WORK.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | This doc lists work items believed to be in scope for the multicast community group.
4 |
5 | # Docs targeting normative consensus
6 |
7 | ## W3C
8 |
9 | To be authored by this group, targeting adoption by a WG for development as a standard:
10 |
11 | * WebTransport Extension:\
12 | Formal proposal for a suitable API extension to WebTransport
13 |
14 | ## IETF
15 |
16 | Known high-priority dependencies for this group's scope:
17 |
18 | * [Multicast Security Considerations](https://github.com/squarooticus/draft-krose-multicast-security)
19 | * [AMBI](https://datatracker.ietf.org/doc/html/draft-ietf-mboned-ambi)
20 |
21 | See also:
22 |
23 | * [DORMS](https://datatracker.ietf.org/doc/html/draft-ietf-mboned-dorms) (AMBI dependency)
24 | * [CBACC](https://datatracker.ietf.org/doc/html/draft-ietf-mboned-cbacc) (may be required for certain threat models)
25 | * [MNAT](https://datatracker.ietf.org/doc/html/draft-ietf-mboned-mnat) (may be required for certain networks)
26 |
27 | Possibly important items for consideration:
28 |
29 | * A new DNS RRType to provide a multicast channel via domain name, instead of IP pair.
30 | * URL-based generic multicast streams? (see expired [draft-singer-appsawg-mcast-url](https://datatracker.ietf.org/doc/html/draft-singer-appsawg-mcast-url))
31 | * perhaps a new url scheme to indicate secured multicast channel?
32 |
33 | # Implementation & Test
34 |
35 | ## API/API components
36 |
37 | * [chromium demo implementation](https://github.com/GrumpyOldTroll/chromium_fork)
38 | * Needs authentication ([AMBI](https://datatracker.ietf.org/doc/draft-ietf-mboned-ambi/))
39 | * Probably needs batched payload transfer (or more generally a performance pass)
40 | * Needs automated tests in the build process
41 | * with coverage reports
42 | * with fuzzing
43 | * May need MNAT support
44 | * [libmcrx](https://github.com/GrumpyOldTroll/libmcrx) (used by chromium implementation)
45 | * Needs implementations for:
46 | * Windows
47 | * Android
48 | * IOS
49 | * Needs packaging for distros
50 | * Needs test suite with coverage checking
51 | * Port to more browsers besides Chromium:
52 | * Firefox at least. (libmcrx wrapper for rust or separate implementation?)
53 | * Others as volunteers are willing
54 | * WPT test suite
55 |
56 | ## Sample Apps
57 |
58 | * [Demo page](https://htmlpreview.github.io/?https://github.com/GrumpyOldTroll/wicg-multicast-receiver-api/blob/master/demo-multicast-receive-api.html) ([source](https://github.com/GrumpyOldTroll/wicg-multicast-receiver-api/blob/master/demo-multicast-receive-api.html))
59 |
60 | # Non-normative Documents
61 |
62 | * [Explainer](https://github.com/GrumpyOldTroll/wicg-multicast-receiver-api/blob/master/explainer.md)
63 |
64 | ## Tutorials/primers
65 |
66 | * Getting Started:\
67 | how to receive multicast traffic in a lab web browser, the better to experiment with
68 | * Building:\
69 | how to build a browser that can receive multicast
70 | * Example app:\
71 | an app that does something useful
72 |
73 | ## Useful resources
74 |
75 | * Evangelization/enabling docs
76 | * Case studies
77 | * ROI/cost analyses
78 | * Efficiency/savings modeling
79 | * Notes about devices
80 | * Gotchas encountered (with model & version, ideally)
81 | * Confirmed-good reports (with sample configs, ideally)
82 | * Vendor statements
83 |
84 |
--------------------------------------------------------------------------------
/meetings/minutes/minutes-2021-10-27-tpac-2021-notes.md:
--------------------------------------------------------------------------------
1 | Video: https://www.youtube.com/watch?v=VV4gbOczhkU
2 | Slides: https://docs.google.com/presentation/d/1YAFs3Pif0o2e3hLdFbEnpm0iAC8NBPXuDBZKi2FTO6A/edit
3 |
4 | Present:
5 |
6 | Discussion 1: 11m50s
7 | Eric: - sustainability +1
8 | - suggestion: get the same metric estimate value for video game downloads and video (instead of % of total carbon footprint for 1 vs. tonnes for the other)
9 | - it'd be good to educate the stakeholders on how much impact multicast would have
10 | - jake: did some of this with ISPs especially, gave them some data about offloadability for them. Peak traffic especially interesting to the ISPs we spoke to (user experience angle), but energy usage savings likely come heavily from average/day-to-day usage.
11 |
12 |
13 | Discussion 2: (24m)
14 | - how active are the browser vendors in IETF work so far?
15 | - jake: not very. Ekr from Mozilla responded but was somewhat negative. In general browsers not yet interested.
16 | - Amazon involved?
17 | - jake: not at IETF. Amazon did call to ask about multicast due to NFL TNF deal over next 10 years. They are examining options. We don't have a production implementation yet, but they are looking for a way to start next year. They're supportive of the standards work, they may or may not be able to use it on the early side. Also had conversations with some at Google, not everyone there is convinced. A few have have privately expressed support, but have not publicly engaged. Lots of people start out skeptical on multicas--ASM was a big false start that got a lot of burned fingers. However, this means it's already widely deployed for some purposes and is in active use in many networks, but not for global interdomain traffic.
18 | - Eric: first task for CG is to articulate pain points and business prop for stakeholders. CG should be engaging them and gaining support. Youtube would be a natural supporter, Amazon as well. Need to get them to feel the pain points and get them interested in this, and the other one is how to get the Chrome people comfortable with the security story
19 | - jake: there's a chicken and egg problem here. If the technical capability is actually executable, this raises interest level. The slideware demos are unconvincing, especially given multicast history.
20 | - Eric: can you get the ISPs involved here?
21 | - jake: a few have joined the group, mostly haven't really dug in yet. Some are members, but are only tangentially interested in the browser work, they just want it to be there. I'd love to have a big-picture plan in place that works well. The multicast-cg is about getting the browser in shape, but some of this has to happen outside standards bodies.
22 | - Eric: It's a good point, the business people have to drive the standards. My big concern here is that business won't adopt, that has to be the immediate challenge to address. The benefits are quite obvious, but how do we as a group rally the ecosystem around it?
23 | - jake: this is why I was engaging with demos, and why my next steps are getting the demos closer to releasable. Having a browser fork that does something useful is to me one of the key next steps to make the case that we can do something real here that people will believe. And a key piece of that is the browser tech side, particularly the security. It has to be a credible proposal for the browser people to pay attention. Right now, yes it can play video but not in a way that can be accepted into browsers, and if we can get it to where it could be, with growing consensus that it's workable, that would make it more likely for browsers to become interested. But you're right, this is just a hope, and we're missing the buy-in we need, even from people who have a lot to gain here. Our analysis says there's a lot of money to be saved here, we think the low interest is because people don't think it's credible until they spend effort looking at it for real, but not sure.
24 | - Dominique: interesting challenge to coordinate the challenges. Part o the conversation that might be needed would be bound to the timeline. What's your best guess on the time needed to align the stars? Like the demo, how long before the browser is operational, and then how long to go door to door and convince people?
25 | - jake: you probably shouldn't trust my estimate. I thought I had a demo running, so I thought I'd be done by now.
26 | - dom: so what I'm hearing is that in your plan, the security obstacle is a key one to lift to give confidence we can build momentum across stakeholders--once you have something you can convince a browser to ship, then you have something you can convince at least one ISP and one content owner to use, and then you'd build steam
27 | - jake: basically, yes. There's a few other rays of hope, for instance geant and internet2 have some interdomain multicast delivery today, and on both their timelines are deploying some ingest platform instances to pull in multicast and distribute it, which is a big part of what the ISP lab tests were doing. There's several moving parts here, some of which are outside the w3c charter, but are critical to the ultimate success here. So in this CG, I was hoping to move forward the receiver distribution side of this story, but I do encourage people to engage in IETF as well.
28 | - Gang: question: customers want this if it's transparent. In DVB, they do this thru an mpeg-dash player, and they don't seem to have the same complex security model problem. Here we seem to need to manage the source and the encryption on each multicast stream. Can we do this on the server side instead in an edge server? Won't this help with the last mile bandwidth issue? If we do it from the edge server doesn't it simplify the security problem?
29 | - Jake: If you're making use of the broadcast capability at the edge that way, you're trusting the edge servers. There's been a history of abuses like ad-theft, when you send stuff an ISP can change on the way. That's actually the way it works today in the broadcast tv world because you can't get the scale, but there's a gap on security considerations for doing this transparently. The current proposal addresses this with AMBI, which makes it impossible to do unauthenticated injection in a way not done with the handoff model. The idea that the broadcast part happens inside the walled-gardens is possible to make some of this happen, but then you have new problems, which is that each use case needs a separate set of specs. If you standardize on video, you won't get VR or downloads. It's possible to do it separately for those, but then you still have trouble--4g had this capability and nobody used it, the northbound interfaces were challenging.
30 | - Gang: yes, but there's an incentive for the ISP to make a change since it'll save them bandwidth. It's easier to make the change from the ISP position
31 | - jake: I think the way we've proposed is the easier way for the ISP, they don't have content to manage that they have to be the source of, and own the send/receive and the protocols those use. But yes, this is one of the big design questions, should it be only the end isp is the one that can broadcast and you have to give it to them as an object they can unpack and distribute, or is there a way to do this as opaque multicast packets they can just stream through? People have different opinions, mine is that we should do packet streaming. Most of the ISPs we've talked to tend to prefer this moel because they don't have as much to maintain, because they can focus on deelivring packets, without having to maintain user applications, and things that work with some content but not others, they can just standardize on ip transport, which brings it closer to the way http works. But yes, great question, and opinions sometimes differ.
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/meetings/minutes/minutes-2021-09-01.md:
--------------------------------------------------------------------------------
1 | Attended:
2 |
3 | - Jake Holland
4 | - Casey Russell
5 | - Chris Lenart
6 | - Chris Needham
7 |
8 | Recording:
9 |
10 | -
11 |
12 | # Introduction
13 |
14 | Jake: Thank you for joining. I’ll give an update on what I’ve been doing, then go through some of the important things to move this work forward. I want to enable anyone who wants to contribute. I have a list (see email), and we can look at how we organize
15 |
16 | At the last meeting, Sam and Kyle were here. We talked about the BBC QUIC implementation that has multicast transport. I didn’t have time to get that running. Need to know what the achievable offload looks like. I hope to get that done, then return to the standards work next week. Not much progress outside that. We posted the security considerations document to IETF secdispatch, but nobody has responded yet. We got a pre-review offline, saying that we have to get people interested, but the doc looks in good shape for review.
17 |
18 | Casey: Current state of internet2 (sp?), I can’t say the final decision, but those who want to participate in multicast transmission to backbone will use an L3 VPN layer, opt-in not automatic. So you’d build some VLANs at layer 3, as opposed to it being native on the existing peering session.
19 |
20 | Jake: That makes sense to me. Happy to keep involvement.
21 |
22 | Casey: Sounds like Cisco is working on whatever prevents them doing this on their peering sessions, but no timeline for that yet.
23 |
24 | Jake (?) are setting up a similar relay system, putting it into i2. They haven’t started on ingest yet.
25 |
26 | # Timelines
27 |
28 | From the email:
29 |
30 | - Standards Efforts
31 | - Soliciting some engagement on security considerations doc:
32 | https://datatracker.ietf.org/doc/html/draft-krose-multicast-security
33 | - Can we find people to respond to the secdispatch thread expressing
34 | interest?
35 | https://mailarchive.ietf.org/arch/msg/secdispatch/LRMHRKiHfk3vgV43KRbG31x-y4I/
36 | - confirming that consensus on this-or-similar along with robust implementation
37 | would address feedback from chromium net-dev (recently raised offline as a
38 | point of uncertainty):
39 | https://groups.google.com/a/chromium.org/g/net-dev/c/TjbMyPKuRHs/m/79PVEJl-GwAJ
40 | - Making progress with quic:
41 | https://github.com/bbc/nghq
42 | (status: got hung up on my side this month, but progress from others
43 | would be welcome also)
44 | - Also an integrated AMBI
45 | - TPAC?
46 | - Ask for half an hour each with Networking Interest group and WebTransport?
47 | Anyone else? (Media interest group?)
48 | - Shift November meeting a week early and get on the CG list?
49 | https://www.w3.org/wiki/TPAC/2021/GroupMeetings
50 | - Implementation & Deliverables Efforts
51 | - Tests, interesting use cases/demos, API change proposals?
52 | - we previously discussed trying to see if webcodecs can do anything with
53 | the vlc traffic from some of the internet2 streams
54 | - I saw a very cool talk from Brett about a chat server--maybe an integration?
55 | - Review/confirmation on the first primer?
56 | https://github.com/w3c/multicast-cg/blob/main/primers/01-getting-started.md
57 | - Other primers needed?
58 | - Deployability Efforts
59 | - known stream monitoring & up/down reporting
60 | - tests, refinements, review on connectivity specs (ingest platform & mnat
61 | prototype cleanup, more & better IPv6 testing & examples)
62 |
63 | # W3C TPAC Demo
64 |
65 | Jake: The most urgent of these is probably TPAC. Sudeep sent something in the Web & Networks Interest Group. They’re collecting short video demos to make available as part of TPAC. So putting together a demo could be a good idea.
66 |
67 | Demo video message last night:
68 |
69 | -
70 |
71 | Chris Needham: W3C will create a showcase of demos, open invitation to all W3C groups if they want to show something
72 |
73 | Jake: I could put something together. Does anyone want to be involved in that? It could be a screen recording of a video playing in the Chromium fork, with a pitch to get involved in the group. The video is probably the best demo I have. The video is creative commons, so should show the credits.
74 |
75 | Chris Lenart: It would be good if there’s a video of the Chromium fork with something in the background showing the AMT gateway server log, to show something’s happening. I haven’t set up the demo yet. Showing it working would be a huge step.
76 |
77 | Jake: It’s a good idea. I usually use iftop, which keeps track of which traffic goes to which addresses. It should fit in two minutes.
78 |
79 | Chris Needham: Also show the API part?
80 |
81 | Jake: I could point to the API proposal location. There’s a demo page that lets you type in. The video demo is web assembly with hooks for the multicast API. It’s come from our TV delivery system. It could be harder to follow and the code may be confidential.
82 |
83 | Jake: The QUIC part is the most important development work, I think. It’s on the critical path to addressing the feedback we got on encryption. I hope to get that moving, but it probably comes behind building engagement.
84 |
85 | Jake: The other thing is getting interest expressed on the security considerations document. We brought something to secdispatch a few years ago, on an earlier direction with an authentication stream, where you can refer to other packets in the stream with crypto hashes. [draft](https://datatracker.ietf.org/doc/html/draft-krose-mboned-alta-01)[Modadugu2001](https://crypto.stanford.edu/~pgolle/papers/auth.pdf) Probably still useful for AMBI delivery, but that’s phase 2. At the time, when we took it to secdispatch, a few people expressed interest but not enough. It’s the same this time, we need people to express to IETF to move this forward. It’s a blocker for W3C adoption. The feedback from Chromium net-dev was that we need a consensus position on the security model, as it’s different from TLS. Anything that’s not TLS is tricky from a security point of view.
86 |
87 | Jake: It’s not impossible, WebRTC did it. So we based our document on the WebRTC security considerations document. That’s the second most important thing to me. The target timeline is before the November IETF meeting. If we can get some serious thought at IETF 112, getting people to highlight the importance, ISPs, maybe BBC would want to comment here too. Getting the people who stand to gain by having the multicast ability in browsers to comment, demonstrate interest.
88 |
89 | Jake: Is anyone interested in doing some hacking? There’s a few things: getting the Chromium build running, trying some of the QUIC work (Sam has offered to answer questions, and is supportive of the idea), doing projects or demos that use the API in the browser. Integrating into the API to tighten up the implementation, which is currently prototype-level. It needs tests and coverage reporting, fuzzing, adding something that can support the API to Web Platform Tests. It’s another hurdle to get over, in addition to the security questions. Also other browsers, if we think Firefox is a good fit too, I’d support having two implementations.
90 |
91 | Casey: I’d be willing to spend time, but I’m not a programmer.
92 |
93 | Jake: You might be interested in setting up the ingest platform. This would make it so that you can pull traffic from off i2 and forward it from there. It’s wrapped multicast packets in a UDP tunnel. I have a downloader where it puts out an Ubuntu desktop image. You can run a downloader that downloads this large file. Also the web pages that do streaming.
94 |
95 | *
96 |
97 | Casey: So I’ll look at the GitHub link and follow up with questions.
98 |
99 | Jake: Thank you. There’s one thing with the way i2 runs, but we can work that out. It’s a bit aside from the web API part, but it’s important. It’s a prototype, so long as you’re OK with that.
100 |
101 | # IETF secdispatch
102 |
103 | Jake: Would anyone be willing to express interest on IETF secdispatch, or are there any blockers to doing that?
104 |
105 | Chris Needham: I can mention to Sam and Richard.
106 |
107 | Jake: It’d be good to get an opinion from them. Chris, how about you? If I can get more interest from networks, it would help convince the security experts.
108 |
109 | Chris Lenart: I’m not a security expert, so if it’s more a case of voicing support, it’s something I could do.
110 |
111 | Jake: When someone has a security related proposal for IETF work, secdispatch is the entry point for finding a venue.
112 |
113 | Chris Lenart: So the gap was authentication and encryption?
114 |
115 | Jake: Yes, the document we want to get traction on is about describing how the traffic is different, and how to make it safe for users and operators
116 |
117 | Chris Lenart: Related to QUIC over HTTP. QUIC also has mechanisms like this
118 |
119 | Jake: The nghq implementation is not sufficient for authentication because it’s a symmetric key. So we’ve separated the two, only talked about authentication so far, so you can verify traffic comes from a specific source. Feedback said to add encryption as well, but this could be weaker than unicast. We need expert review on it, to get to IETF consensus, on the considerations for doing multicast on the web.
120 |
121 | Jake: So it’s more a case of expressing interest and saying that security work is needed on it.
122 |
123 | Chris Lenart: I’ll follow up with you offline on that.
124 |
125 | Jake: I’d like to coordinate several people to do that. Even people without lots of traffic can express support. I can share any resources you need. Anyone else in other organisations? We could plan to make a push during next month.
126 |
127 | Chris Lenart: Makes sense. Had a call with Bell Canada.
128 |
129 | Jake: Even if you can’t guarantee you’d be deploying it, there’s value in saying you want it to progress, to evaluate. I appreciate your help.
130 |
131 | Jake: I’ll share an update next month, if I get anywhere with QUIC. I’ll do the video demo, but the deadline is coming soon. If anyone wants to be involved, let me know.
132 |
133 | # W3C TPAC Meeting
134 |
135 | Chris Needham: Also have a group meeting at TPAC?
136 |
137 | Jake: We could ask for a 10 minute slot at Web & Networks and Web Transport.
138 |
139 | Chris Needham: It’s an opportunity to bring to a wider W3C audience. A WebTransport meeting could be focused on the integration points.
140 |
141 | Jake: Could have our regular meeting a week early, as part of the breakout week. Then the demo could generate interest.
142 |
143 | Chris Needham: Let’s follow up.
144 |
145 | Jake: Let me know if there’s anything you want to redact from the recording. I’ll share on the private list. See you next month.
146 |
147 |
148 |
--------------------------------------------------------------------------------
/meetings/minutes/minutes-2021-10-06.md:
--------------------------------------------------------------------------------
1 | Present: Brett Sheffield, Chris Needham, Jake Holland, Kyle Rose, Michiel De Backker, Sam Hurst
2 |
3 | Chair: Jake
4 |
5 | Scribe: Chris
6 |
7 | Topic: TPAC plans
8 |
9 | Jake: We have a scheduled slot, hoping to get some new people to join. Not sure what to expect. Ideal would be line up some development work to experiment with the QUIC library. I haven't had time to do that so far. The demo video is up: https://www.w3.org/2021/10/TPAC/demos/multicast.html. I'll give intro, then go into the ongoing work, things we need to solve to integrate into browsers, on security.
10 |
11 | Chris: Anyone we'd specifically want to try to bring in?
12 |
13 | Jake: Harald Alvestrand has been supportive of the work, and has experience with WebRTC. A few people at the last IETF BAR BOF, not sure how much overlap with W3C members though. I'd like to get more people who can help with the browser integration questions to give feedback.
14 |
15 | Chris: Probably the same people as on the blink-dev email thread
16 |
17 | Jake: Anyone from Chrome or Firefox who can help describe potential obstacles
18 |
19 | Brett: Who's working on it at the moment?
20 |
21 | Jake: There have been people involved at Akamai from time to time, but right now I'm the only one.
22 |
23 | Brett: We've had people say they're keeping an eye on it, but not getting involved in development. In terms of feedback from other people outside Akamai?
24 |
25 | Jake: Some from IETF, at the BAR BOF, about 26 people. People were supportive, but not writing code.
26 |
27 | Topic: IPv6
28 |
29 | Brett: I'm quite enthusiastic. There's some overlap between my work and yours, on IPv6, multicast and transitional tunneling. I had a chat app using WebSockets with multicast in the background. Maybe we can do something with that.
30 |
31 | Jake: On IPv6, ?? asked for this recently. They're setting up AMT relays and peer forwarding in their network. There's an IETF hackathon upcoming, early November.
32 |
33 | Brett: Is that IPv4 only?
34 |
35 | Jake: I believe it supports both v4 and v6. The gateway and AMT relay. I added IPv6 support a few years back, and it worked fine. I don't have any relays running yet, it's on the list. I was hoping to set one up for you to send VLC traffic. It's a useful test. The next step would be to render in a browser. It should in principle be similar to what WebCodecs does. How it handles missing packets is a question. Building that is an aim for the hackathon.
36 |
37 | Jake: I also have what's shown in the demo video. A port of a TV receiver to WASM, running in the browser. That's a reliable transport, rebuilding the segments from the multicast data. They checksum checked before feeding them in, and there's a unicast fallback. The code isn't public though.
38 |
39 | Jake: When we get to the QUIC implementation, that will be similar. There's a reliable transport that rebuilds segments after receiving over multicast, then play with MSE. It could be inside the XHR rather than WebTransport, where you'd have a ReadableStream. That's a different path in the implementation. I'd like to get it so that datagrams go through a ReadableStream path that could be used in WebTransport.
40 |
41 | Sam: There's no datagram support in that yet.
42 |
43 | Jake: It might not be hard to add v6 support. If I manage to get a v6 relay up, I'll share an update.
44 |
45 | Brett: Our approach with Librecast is v6 only, which uses tunneling. If there's only v4 multicast we'd still tunnel to get v6 going. Some of the things we're doing require v6 such as 112 bits for group addresses.
46 |
47 | Jake: In SSM I think you have only 31 bits.
48 |
49 | Brett: You lose some bits if you're embedding the address there.
50 |
51 | Jake: The part assigned to SSM is /96 with the top bit reserved
52 |
53 | Brett: Some later RFC use more bits.
54 |
55 | Jake: I'll find a reference - IANA considerations in RFC 4607.
56 |
57 | Jake: We're doing SSM as ASM has been deprecated for interdomain multicast (RFC 8815)?
58 |
59 | Brett: It's an acknowledgement that ASM doesn't work for inter-domain.
60 |
61 | Jake: Would you use a v4 tunnel?
62 |
63 | Brett: The multicast we use is v6 only, so if only v4 is available we'd tunnel. ipv4 unicast is sufficient
64 |
65 | Jake: Let's follow-up offline. We do want v6 to work in the browser.
66 |
67 | Topic: TPAC meetings
68 |
69 | JakeL Not sure if we'll get a slot in WebTransport WG. We have an hour in Second Screen. Not sure
70 |
71 | Chris: They're focused on discoveery on a local network. Potential collaborations with them?
72 |
73 | Jake: Interested in the privacy issues. Privacy exposure footprint to the local network. Is there a threat model to exposing information on the local network.
74 |
75 | https://github.com/w3c/secondscreen-wg/issues/3#issuecomment-935156371
76 |
77 | Raised in the net-dev threat that there's different privacy aspect than with TLS, so the exposure footprint is an area of concern, and questions about how usable it may be.
78 |
79 | The other issue to dicuss is the discovery of a join to the local network. The last-hop router will know where its routing streams. Exposure from discovery protocols on the network.
80 |
81 | Brett: Didn't Apple have something recently about blocking multicast from apps, to prevent fingerprinting on the local network?
82 |
83 | Jake: Yes, saw that. I think it might be helpful to the security story. On those platforms, there's a mechanism to switch it off if there's abuse. Well-behaved developers register the purpose of their usage. If they misbehave, their app can be prevented from using the capability. It's not necessarily a full solution, but it helps address some concern. Untrusted apps could be blocked by the OS.
84 |
85 | Chris: The Open Screen Protocol design was careful to avoid not exposing information, and decisions made on what information to share during disovery and after authentication. Could be valuable to learn from their approach.
86 |
87 | Jake: I can imagine someone wants to subscribe to the same multicast stream from mutliple screens for synchronized playback. If that's the intent, multicast has some restrictios over WiFi, RFC 9119, soon to be published. Links in the GitHub comment. If anyone does have that in mind, not sure of the strategy for handling Wifi constraints.
88 |
89 | Jake: Could make sense if there's lots of devices on the network. Could do with wired. 50 screens all showing the same thing could usefully be subscribed to the same multicast stream, even on Wifi
90 |
91 | Jake: I'm hoping to get some of the Second Screen group members interested.
92 |
93 | Michiel: They're publishing to browsers, are you also thinking of publishing from the browser?
94 |
95 | Jake: So far it's receive only. Don't want to rule it out. Could be possible to subscribe to the same multicast stream from the outside, but you probably won't get gains if it's over Wifi. If it's on a wired network or potentially a cell network, it could be worthwhile.
96 |
97 | Jake: It's why UDP sockets were turned off, web pages could use for a DDoS attack. Needs rate controls with some feedback channel. There's although authentication that's hard to do
98 |
99 | Kyle: I can imagine a case in future where someone wants to use mutlicast to do user-to-user video conferencing. You'd be sending to a multicast group. There could be a case for allowing UDP packets to be sent to a multicast group address only, but needs protection. For SSM, need to ensure you can't spoof a source address. You don't want someone's browser to be able to inject packets into someone else's multicast. So there could be some cases that could be made safe, but receive only is reasonable for now.
100 |
101 | Jake: That would be beyond the browser's capability, I think. Not doing outbound mutlicast here.
102 |
103 | Brett: Allowing unicast outbound UDP is quite a risk, but outbound mutlicast UDP isnt' a smilar risk. Could be dropped by the router, can't do an amplification attack. Are we protecting against a threat that's not there? If TTL1 was necessary, we wouldn't be here now. Read-only works well if you're only thinking about video streaming. But for a chat application over multicast, you need to read and write.
104 |
105 | Kyle: That's what I was thinking of. Send stream to everyone watching, rather than the hub and spoke model
106 |
107 | Michiel: Ad networks could create shadow networks on your LAN for fingerprinting. Gets hairy quickly. Jake's probably right to keep to read only for now to avoid those concerns.
108 |
109 | Kyle: I agree, just saying "never say never".
110 |
111 | Jake: That's right, but it's not our focus.
112 |
113 | Michiel: I try to generalise with what the second screen is doing. I suggested that to the WICG on that: https://discourse.wicg.io/t/idea-local-devices-api-lan-services/5056
114 |
115 | Topic: Hackathon
116 |
117 | Jake: We could try receiving VLC, pass to WebCodecs. Has anyone done that before?
118 |
119 | Kyle: What's the structure of the hackathon?
120 |
121 | Jake: It's similar to before, but remote. A champion registers it in the wiki page, notifies IETF. It's the week before the meeting. Can structure it how you want in the group. There are lightning talks to share what you did.
122 |
123 | Jake: I'll send an update on that. It might be relevant use case for datagrams more than the QUIC work. The vision there is exising multicast capable things like VLC, and put something in the front, encode UDP packets, within certain constraints. You can turn that into a QUIC UDP datagram, build the hash, send to AMBI, send to browser and unpack and handle. From the browser point of view, it'll look the same as a raw UDP payload, with the QUIC part built around it. It opens the door to things that already exist. For performance, eed to batch datagrams when delivering to the API, and avoid copying. The demo currently uses a lot of CPU.
124 |
125 | Michiel: Currently the JS API uses ReadableStream. Are you also thinking about direct handover to media APIs, such as painting to a canvas or a video element? I'd advocate for both.
126 |
127 | Jake: Good suggestion, which also came up in the net-dev thread. Our charter says we'd look at that. Targeted APIs would be fine, but we're aiming at WebTransport first. With MSE, as long as you're building sem
128 |
129 | Chris: WebCodecs for MSE is coming, so you could have multicast reception, decode using WebCodecs, pass to MSE for buffered playback.
130 |
131 | Jake: Seems useful too, opens it up to streaming. I'd like to avoid cutting things out like chat, so want to still keep transport of HTTP objects for that use case. Datagrams is also handy. If MSE accepts a WebCodecs input, that might make.
132 |
133 | Jake: How does WebCodecs handle unreliable transport?
134 |
135 | Chris: I haven't tried using it, so don't know.
136 |
137 | Michiel: May want to talk to WebRTC about it, as SRTP handles that.
138 |
139 | Jake: Thank you.
140 |
141 | [Adjourned]
142 |
--------------------------------------------------------------------------------
/primers/01-getting-started.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | This is a walkthrough for how to get started with receiving multicast traffic in a web app.
4 |
5 | # Implementations
6 |
7 | In 2021-06 there's only 1 implementtion yet, which is a demo fork of chromium that does not yet have the security model implementation.
8 |
9 | ## How to Install
10 |
11 | The latest binary .deb installer (from a patch applied to a recent chromium stable build) can be downloaded from the top link here:
12 |
13 | * [CURRENT_BINARIES.stable.md](https://github.com/GrumpyOldTroll/chromium_fork/blob/main/CURRENT_BINARIES.stable.md)
14 |
15 | ~~~
16 | URL=$(curl https://raw.githubusercontent.com/GrumpyOldTroll/chromium_fork/main/CURRENT_BINARIES.stable.md | grep https | head -n 1 | cut -f3 -d " ")
17 | curl -O ${URL}
18 | sudo apt install ./$(basename ${URL})
19 | ~~~
20 |
21 | To remove it later:
22 |
23 | ~~~
24 | sudo apt remove chromium-browser-mc-unstable
25 | ~~~
26 |
27 | ## How to Build (optional)
28 |
29 | If you want to build the installer yourself instead of downloading the binary. You need plenty of RAM and disk space (at least ~8 and ~100 GB respectively in 2021-06, but it may grow). It takes something like 10 hours.
30 |
31 | ### Ubuntu/Debian
32 |
33 | (tested on Ubuntu 18.04 and 20.04)
34 |
35 | ~~~
36 | sudo apt-get install -y docker.io screen snapd git python3 python-is-python3
37 | sudo snap install jq
38 | git clone https://github.com/GrumpyOldTroll/chromium_fork/
39 | sudo usermod -aG docker ubuntu
40 | # log out and back in
41 | CHAN=stable
42 | VER=$(curl -s -q -f https://raw.githubusercontent.com/GrumpyOldTroll/chromium_fork/main/LAST_GOOD.${CHAN}.sh | grep LAST_GOOD_TAG | cut -f2 -d=)
43 | cd chromium_fork
44 | CHAN=${CHAN} VER=${VER} ./nightly.sh
45 | ~~~
46 |
47 | ### Cloud build (AWS)
48 |
49 | Also possible is building on a cloud device. (NB: This can't be done on free tier, the machines don't have enough ram, and the disk space also needs to be bigger.)
50 |
51 | These will all try to pick decent defaults, but if you don't have a key pair in the default region (us-west-1) or the first key-pair isn't the one you've got loaded with ssh-add it won't work if nothing is set explicitly, so you may need to set one or more variables:
52 |
53 | Most likely to be necessary:
54 |
55 | * [REGION](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html#Concepts.RegionsAndAvailabilityZones.Regions) (AWS region)
56 | * [KEYPAIR](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) (keypair for connecting to the instance)
57 |
58 | If you have a preference or you're aiming for something specific, several others are possible, for instance:
59 |
60 | * [INSTTYPE](https://aws.amazon.com/ec2/instance-types/) (the instance type)
61 | * [AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html) (image id). NB: the same release in different regions is a different id
62 | * CHAN: stable or dev
63 | * VER: version (recommended: LAST_GOOD_TAG from the [fork](https://github.com/GrumpyOldTroll/chromium_fork/blob/main/LAST_GOOD.stable.sh))
64 |
65 | Also setting 'KEEP' to anything besides 0 will keep the instance alive afterwards (this will have [extra costs](https://aws.amazon.com/ec2/pricing/on-demand/) and you'll need to manually clean it up).
66 |
67 | Note also that manual cleanup may be needed if anything goes wrong. This should make a single instance of INSTTYPE (default=c5.2xlarge) in REGION (default=us-west-1) and a single security group named `cbuild-sg-.
68 |
69 | ~~~
70 | curl -O https://github.com/GrumpyOldTroll/chromium_fork/blob/main/aws-build.sh
71 | chmod +x aws-build.sh
72 | KEYPAIR=my-key REGION=us-west-2 ./aws-build.sh
73 | ~~~
74 |
75 | # Traffic Sources
76 |
77 | In order to receive multicast, you'll need to have a source of multicast traffic sending from somewhere you can receive from.
78 |
79 | ## Running a Local Sender
80 |
81 | There's several ways to send traffic locally, and a few possibilities for where to run it from.
82 |
83 | ### External Machine on Same LAN
84 |
85 | If you've got your receiving device physically connected to a LAN and an external device on the receiver's default route, that's one of the easiest and most normal realistic cases. This one doesn't need any special routes, but it does need a separate device. Some VM setups can do this between VMs, but not always.
86 |
87 | From the sender:
88 |
89 | ~~~
90 | curl -O https://raw.githubusercontent.com/GrumpyOldTroll/libmcrx/master/test/send.py
91 | chmod +x send.py
92 | ./send.py -g 232.2.2.2 -p 6000 -i 500 -d 7200 &
93 | ./send.py -g ff3e::8002:202 -p 6000 -i 500 -d 7200 &
94 | ~~~
95 |
96 | A tcpdump should show these packets, either on the sender or the receiver:
97 |
98 | ~~~
99 | sudo tcpdump -n udp and ip dst 232.2.2.2
100 | sudo tcpdump -n udp and ip6 dst ff3e::8002:202
101 | ~~~
102 |
103 | If the sender has multiple interfaces and you want the sending on the non-default interface, you might have to add a route on the sender, giving it the output interface's device name for SSM addresses. You can check which interface is the output, either with tcpdump or by checking the route:
104 |
105 | ~~~
106 | ip route get 232.2.2.2
107 | ip -6 route get ff3e::8002:202
108 | ~~~
109 |
110 | If you need to change the output interface, setting the route for SSM addresses should do it (here the interface is named `xdn0`):
111 |
112 | ~~~
113 | sudo ip -6 route add ff3e::/96 dev xdn0
114 | sudo ip route add 232.0.0.0/8 dev xdn0
115 | ~~~
116 |
117 | If the packets are being sent but the receiver can't see them, it might mean you need to do a join first, or it might mean you'll need to use another method.
118 |
119 | At this point receiving should work with the steps in the "[Receiving Traffic](#receiving-traffic)" section, e.g. on the [demo page](https://grumpyoldtroll.github.io/wicg-multicast-receiver-api/demo-multicast-receive-api.html) or with `mcrx-check`:
120 |
121 | ~~~
122 | SRC=10.7.1.1
123 | ./mcrx-check -s ${SRC} -g 232.2.2.2 -p 6000 -c 50 -d 0 -v
124 | ~~~
125 |
126 | ### Internal Sender on Same Machine
127 |
128 | This doesn't require any external machines or traffic, which can be helpful for testing and development, but it does require setting local routes to get the traffic going the right way.
129 |
130 | The route for the destination group address needs to go to the sending interface, and the route for the source interface needs to go thru the receiving interface.
131 |
132 | There are a few different options, but perhaps the easiest is to run the sener in a [netns](https://man7.org/linux/man-pages/man8/ip-netns.8.html) connected by a [veth pair](https://man7.org/linux/man-pages/man4/veth.4.html). It can also be ok to just set the route for the send traffic on a veth pair without using a netns. (NB: For IPv4 I've also seen loopback interfaces work, but IPv6 had trouble with sending and receiving on the same interface.)
133 |
134 | ~~~
135 | sudo << EOF
136 | ip netns add sender
137 | ip link add vtx0 type veth peer name vrx0
138 | ip addr add 10.20.20.2/24 dev vrx0
139 | ip link set dev vtx0 netns sender
140 | ip netns exec sender ip addr add 10.20.20.1/24 dev vtx0
141 | ip netns exec sender ip link set up dev vtx0
142 | ip netns exec sender ip route add default dev vtx0
143 | EOF
144 | sudo ip netns exec sender python3 src2/libmcrx/test/send.py -g 232.2.2.2 -p 6000 -i 500 -d 7200 &
145 | ~~~
146 |
147 | At this point receiving should work with the steps in the "[Receiving Traffic](#receiving-traffic)" section, e.g. on the [demo page](https://grumpyoldtroll.github.io/wicg-multicast-receiver-api/demo-multicast-receive-api.html) or with `mcrx-check`:
148 |
149 | ~~~
150 | SRC=10.20.20.1
151 | ./mcrx-check -s ${SRC} -g 232.2.2.2 -p 6000 -c 50 -d 0 -v
152 | ~~~
153 |
154 | ### Other Senders
155 |
156 | In addition or instead of running `send.py` or similar test traffic, it's also possible to run video traffic that can be consumed by [VLC](https://www.videolan.org/) and probably [ffmpeg](https://www.ffmpeg.org/).
157 |
158 | ~~~
159 | vlc -vvv ./vid.mp4 --sout '#udp{dst=232.3.3.3,port=5004,mux=ts}' --ttl 15 --loop --file-caching 10000
160 | ~~~
161 |
162 | ~~~
163 | ffmpeg -re -i vid.mp4 -c copy -f mpegts udp://232.10.10.2:12000?pkt_size=1316
164 | ~~~
165 |
166 | ## Tunneling a Remote Sender
167 |
168 | These instructions are to sort of manually set up the network to tunnel the external multicast traffic into the local machine.
169 |
170 | It's possible to set this all up externally. Ideally your network will be the one that does this, in which case you have nothing to do here, your browser can just receive the traffic.
171 |
172 | But until your network gets to that, you can still tunnel the traffic in yourself.
173 |
174 | For advanced and persistent setup, you can stand up a multicast-capable network that does the ingest for you. There are instructions in the [multicast-ingest-platform](https://github.com/GrumpyOldTroll/multicast-ingest-platform/blob/master/sample-network/README.md) repo. The sections below describe how to do the same thing manually for your local machine.
175 |
176 | ### Internet2 Sources
177 |
178 | Internet2 has several public relays running. To connect to one of the relays, run an [AMT](https://www.rfc-editor.org/rfc/rfc7450.html) gateway instance:
179 |
180 | ~~~
181 | AMTIP=$(dig +short amt-relay.m2icast.net | head -n 1)
182 | sudo docker run -d --rm --name amtgw --privileged grumpyoldtroll/amtgw ${AMTIP}
183 | ~~~
184 |
185 | There's a bunch of sources sending traffic reachable via those relays. There's a [catalogue](https://multicastmenu.herokuapp.com/) that's kept more or less up to date. Many of the entries say their UDP port, and most of them use `1234`.
186 |
187 | You can pick a source and group from that catalogue:
188 |
189 | ~~~
190 | SRC=162.250.138.201
191 | GRP=232.162.250.141
192 | PORT=1234
193 | ~~~
194 |
195 | You also need the source to be routed via the gateway so the join will go in that direction:
196 |
197 | ~~~
198 | sudo ip route add ${SRC}/32 dev docker0
199 | ~~~
200 |
201 | At this point receiving should work with the steps in the "[Receiving Traffic](#receiving-traffic)" section, e.g. on the [demo page](https://grumpyoldtroll.github.io/wicg-multicast-receiver-api/demo-multicast-receive-api.html) or with `mcrx-check`:
202 |
203 | ~~~
204 | ./mcrx-check -s ${SRC} -g ${GRP} -p ${PORT} -c 50 -d 0 -v
205 | ~~~
206 |
207 | ### DRIAD Sources
208 |
209 | There are several sources that are publicly reachable whose relays are discoverable with [DRIAD](https://www.rfc-editor.org/rfc/rfc8777.html).
210 |
211 | You can pull in traffic from those by discovering the relay and setting the route for the source of the (S,G) to go through the docker interface:
212 |
213 | ~~~
214 | SRC=23.212.185.14
215 | GRP=232.1.1.1
216 | PORT=5001
217 | ~~~
218 |
219 | Setting up the docker container needs to do a DRIAD lookup:
220 |
221 | ~~~
222 | curl -O https://raw.githubusercontent.com/GrumpyOldTroll/libmcrx/master/driad.py
223 | AMTIP=$(python3 driad ${SRCIP})
224 | sudo docker run -d --rm --name amtgw --privileged grumpyoldtroll/amtgw ${AMTIP}
225 | ~~~
226 |
227 | And you need the source IP routed to the docker container:
228 |
229 | ~~~
230 | sudo ip route add ${SRC}/32 dev docker0
231 | ~~~
232 |
233 | At this point receiving should work with the steps in the "[Receiving Traffic](#receiving-traffic)" section, e.g. on the [demo page](https://grumpyoldtroll.github.io/wicg-multicast-receiver-api/demo-multicast-receive-api.html) or with `mcrx-check`:
234 |
235 | ~~~
236 | ./mcrx-check -s ${SRC} -g ${GRP} -p ${PORT} -c 50 -d 0 -v
237 | ~~~
238 |
239 | # Receiving Traffic
240 |
241 | ~~~
242 | URL="https://grumpyoldtroll.github.io/wicg-multicast-receiver-api/demo-multicast-receive-api.html"
243 | chromium-browser-mc-unstable --enable-blink-features=MulticastTransport ${URL}
244 | ~~~
245 |
246 | ## Network Troubleshooting with Simpler Receiver
247 |
248 | If it's all working right, the browser receive will work. But to check whether it's the networking or something in the browser build, it's also possible to use the underling receive library, [libmcrx](https://github.com/GrumpyOldTroll/libmcrx) for a more isolated test. There are many ways the browser test can go wrong that this one cannot, but if this one fails the browser test will not succeed.
249 |
250 | In either case, you'll need the source IP address of those packets, and you pass it to the libmcrx testing program like this:
251 |
252 | ~~~
253 | git clone https://github.com/GrumpyOldTroll/libmcrx
254 | cd libmcrx
255 | ./autogen.sh
256 | ./configure
257 | make
258 | ~~~
259 |
260 | Running is like this:
261 |
262 | ~~~
263 | SRC=10.7.1.1
264 | ./mcrx-check -s ${SRC} -g 232.2.2.2 -p 6000 -c 50 -d 0 -v
265 | ~~~
266 |
267 | The output should look like this:
268 |
269 | ~~~
270 | 06-27 16:25:48: joined to 10.7.1.1->232.2.2.2:6000 for 2s, 2 pkts received
271 | 06-27 16:25:50: joined to 10.7.1.1->232.2.2.2:6000 for 4s, 6 pkts received
272 | 06-27 16:25:52: joined to 10.7.1.1->232.2.2.2:6000 for 6s, 10 pkts received
273 | ~~~
274 |
275 | If that's not working, the first thing to check is whether the join is going out on the right interface. From another shell, tcpdump for igmp (for v4) or mld (for v6) on the receiving device:
276 |
277 | ~~~
278 | sudo tcpdump -n -vv igmp
279 | ~~~
280 |
281 | Output looks like this when joining if it's working:
282 |
283 | ~~~
284 | sudo tcpdump -n -vv igmp
285 | tcpdump: listening on enx00e04cab9b3b, link-type EN10MB (Ethernet), capture size 262144 bytes
286 | 16:47:24.578717 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 44, options (RA))
287 | 10.7.1.58 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 232.2.2.2 allow { 10.7.1.1 }]
288 | 16:47:24.894738 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 44, options (RA))
289 | 10.7.1.58 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 232.2.2.2 allow { 10.7.1.1 }]
290 | ~~~
291 |
292 | And like this when leaving (by e.g. killing the receiver):
293 |
294 | ~~~
295 | 16:47:32.186650 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 44, options (RA))
296 | 10.7.1.58 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 232.2.2.2 block { 10.7.1.1 }]
297 | 16:47:32.188429 IP (tos 0xc0, ttl 1, id 19185, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
298 | 10.7.1.1 > 232.2.2.2: igmp query v3 [max resp time 1.0s] [gaddr 232.2.2.2 { 10.7.1.1 }]
299 | 16:47:32.862698 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 44, options (RA))
300 | 10.7.1.58 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 232.2.2.2 block { 10.7.1.1 }]
301 | 16:47:32.864340 IP (tos 0xc0, ttl 1, id 19351, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
302 | 10.7.1.1 > 232.2.2.2: igmp query v3 [max resp time 1.0s] [gaddr 232.2.2.2 { 10.7.1.1 }]
303 | ~~~
304 |
305 | Or for IPv6, the tcpdump filter implementation as of 2021-06 is less mature:
306 |
307 | ~~~
308 | sudo tcpdump -n -vv icmp6 and ip[40]==128
309 | ~~~
310 |
311 | (NB: seeing some trouble in ubuntu 20.04, MLD apparently not going out.)
312 |
313 | ## Known Things to Check
314 |
315 | ### Is the Port Correct?
316 |
317 | If you're seeing packets in tcpdump but not in the packet count, the first thing to check is whether the destination UDP port matches what the receiver is listening to.
318 |
319 | ### Is a Firewall Blocking?
320 |
321 | In some setups we've seen firewall rules blocking the forwarding of traffic.
322 |
323 | The symptom here is that native multicast arrives on the expected interface (for example, docker0), but is not received by the receiver.
324 |
325 | Running `dmesg` in this case would show lines that look something like this:
326 |
327 | ~~~
328 | [5370076.311276] [UFW BLOCK] IN=docker0 OUT= PHYSIN=vethc1cd9d5 MAC=01:00:5e:00:00:01:02:42:ac:11:00:02:08:00 SRC=172.17.0.2 DST=224.0.0.1 LEN=36 TOS=0x00 PREC=0x00 TTL=1 ID=0 DF PROTO=2
329 | ~~~
330 |
331 | The workaround is to add an allow rule:
332 |
333 | ~~~
334 | sudo ufw allow in proto udp to 224.0.0.0/4
335 | ~~~
336 |
337 | This may require restarting the receiver and/or the gateway.
338 |
339 |
--------------------------------------------------------------------------------
/meetings/minutes/minutes-2021-10-27-tpac.md:
--------------------------------------------------------------------------------
1 | Please see the [IRC Log minutes](https://www.w3.org/2021/10/27-multicast-minutes.html) for a more readable version.
2 |
3 | The text dump from that is here, with many thanks to Chris Needham:
4 |
5 | ~~~
6 | IRC log of multicast on 2021-10-27
7 | Timestamps are in UTC.
8 |
9 | 15:03:40 [RRSAgent]
10 | RRSAgent has joined #multicast
11 | 15:03:40 [RRSAgent]
12 | logging to https://www.w3.org/2021/10/27-multicast-irc
13 | 15:03:41 [takio]
14 | takio has joined #multicast
15 | 15:03:46 [Zakim]
16 | Zakim has joined #multicast
17 | 15:03:55 [cpn]
18 | Meeting: Multicast CG TPAC meeting
19 | 15:04:07 [cpn]
20 | Topic: Introduction
21 | 15:04:17 [cpn]
22 | Jake: Welcome to the Multicast CG meeting
23 | 15:05:48 [cpn]
24 | Present: Jake_Holland, Eric_Siow, Dominique_Hazael-Massieux, Gang_Shen, Kazuhiro_Hoya, Kyle_Rose
25 | 15:06:02 [cpn]
26 | Present+ Chris_Needham
27 | 15:06:16 [cpn]
28 | Present+ Takio_Yamaoka
29 | 15:07:31 [cpn]
30 | ... [Reviews Code of Conduct and IPR policy]
31 | 15:08:06 [cpn]
32 | Present+ Sudeep_Divakaran
33 | 15:08:37 [cpn]
34 | Jake: I'll walk through what we're doing and where we are, then a review of next steps for the work
35 | 15:08:51 [cpn]
36 | ... We'll schedule some sessions for the next month. Anything to add to the agenda?
37 | 15:09:01 [cpn]
38 | ... (none)
39 | 15:09:24 [dom]
40 | Present+ AnssiKostiainen, XiaoqianWu
41 | 15:09:27 [cpn]
42 | ... We're aiming to add a multicast receive capability to browsers
43 | 15:09:45 [cpn]
44 | ... We've not decided on whether an API is needed
45 | 15:09:57 [cpn]
46 | ... It could possibly fit inside WebTransport
47 | 15:10:17 [cpn]
48 | ... There probably will be some form of API to allow web pages to use it, to leverage the multicast transport that exists
49 | 15:10:42 [cpn]
50 | ... The reasons for that are: user experience
51 | 15:10:44 [EricSiow]
52 | EricSiow has joined #multicast
53 | 15:11:21 [cpn]
54 | ... [Shows histogram] During peak times, it gets a bit worse. Increases at the low-end of rates achieved
55 | 15:11:36 [cpn]
56 | ... This is normal, but on a heavy traffic day it gets bad
57 | 15:11:58 [cpn]
58 | ... Half the goodput for about 9 hours, e.g., when a game download is released
59 | 15:12:10 [cpn]
60 | ... These can be addressed with multicast, doesn't have to hammer the network
61 | 15:12:27 [anssik]
62 | anssik has joined #multicast
63 | 15:12:35 [anssik]
64 | Present+ Anssi_Kostiainen
65 | 15:12:39 [cpn]
66 | ... Sometimes it's CDN traffic, sometimes others. We get complaints from networks because users see lower than usual performance
67 | 15:12:56 [cpn]
68 | ... The key problem that multicast solves is congestion on the access networks to homes
69 | 15:13:12 [cpn]
70 | ... These are typically oversubscribed. You can put caches in networks, but there's no IP addressability
71 | 15:13:29 [cpn]
72 | ... Not just cable networks, also fiber networks and different access types. 5G can leverage these thigns
73 | 15:13:49 [cpn]
74 | ... The slides show a rough guide to how much offload is achievable
75 | 15:14:23 [cpn]
76 | ... With 3000 customers on a cable loop, if a large percentage is watching a particular event or downloading a game, traffic could be shared
77 | 15:14:40 [cpn]
78 | ... If you try to do it from cache, you have the same problem as you send it 1:1 to each user
79 | 15:15:07 [cpn]
80 | ... Possible to share the traffic, e.g., video on demand that's not popular enough. Large file downloads and live video streams
81 | 15:15:34 [cpn]
82 | ... Can talk separately about the transport protocols, but there's interest from ISPs
83 | 15:16:07 [cpn]
84 | ... Also the climate impact. The internet takes a lot of power. A BBC research project concluded that the internet takes 3.7% of total carbon footprint
85 | 15:16:12 [dom]
86 | Present+ LouayBassbouss
87 | 15:16:32 [cpn]
88 | ... Some problems can't be addressed by multicast. We're looking to get that down to 1% of total carbon footprint
89 | 15:16:43 [EricSiow]
90 | Q+
91 | 15:16:49 [xiaoqian]
92 | xiaoqian has joined #multicast
93 | 15:16:55 [xiaoqian]
94 | present+
95 | 15:17:06 [cpn]
96 | ... The article talked about proof of work bitcoin. Usage changes, but 20% day to day or 50% on big days is addressable through wider use of multicast
97 | 15:17:25 [cpn]
98 | ... The other reason is cost reduction
99 | 15:18:16 [cpn]
100 | Eric: About climate change, we had a separate breakout session on sustainability
101 | 15:18:24 [dom]
102 | -> https://www.w3.org/2021/10/19-sustainability-minutes.html Environmental Concerns and Sustainability (s12y) of Web Technologies - TPAC 2021 breakout
103 | 15:18:32 [cpn]
104 | ... There's some interest and movement to include sustainability as a horizontal review
105 | 15:18:41 [cpn]
106 | ... It's good you're including this
107 | 15:19:16 [cpn]
108 | ... If we're quoting percentages, we should be consistent, e.g, give the same measure for video games as well
109 | 15:19:36 [cpn]
110 | ... It would be good to educate stakeholders in terms of how much impact multicast would have
111 | 15:20:14 [cpn]
112 | Jake: This is where we started. Before we came to W3C we did some work in IETF, then we went to ISPs to ask if they'd use it
113 | 15:20:36 [cpn]
114 | ... We showed them the traffic data, and potential reduction through multicast offload
115 | 15:20:54 [cpn]
116 | ... I've talked to more than 30 ISPs. There's been a range of responses
117 | 15:21:17 [cpn]
118 | ... Two said they don't plan to use it. One said they thought it would reduce revenue, they charge by traffic served
119 | 15:21:46 [cpn]
120 | ... Almost all ISPs were more positive, good to reduce traffic. Some identified logistical difficulties to roll it out
121 | 15:21:59 [cpn]
122 | ... We ran lab trials with four ISPs, showed it's practical
123 | 15:22:28 [cpn]
124 | ... Many were positive, different ranges of skepticism
125 | 15:23:16 [cpn]
126 | ... Some saw offloading peak traffic as beneficial, more so than the day to day, but that's where reductions are
127 | 15:23:32 [cpn]
128 | ... It's not an Akamai black-box, hence the standards approach
129 | 15:24:08 [cpn]
130 | ... [Avoidable traffic: video] Example of reduction in peak traffic in a sports event
131 | 15:24:42 [cpn]
132 | Jake: The CG has created a getting started primer, to try out the API. I can help people get set up
133 | 15:25:00 [cpn]
134 | ... Where we are now, on the IETF side, is we're trying to get engagement on the security model
135 | 15:25:28 [cpn]
136 | ... We got feedback from the Chromium net-dev list. They rejected our PR as it would be a new type of mixed content, and needs a better security model
137 | 15:26:25 [cpn]
138 | ... With that feedback, Kyle wrote a security document. I'm hoping to talk about this at IETF secdispatch in a few weeks, then take it into a standard we can build from to run multicast safely for web traffic
139 | 15:26:35 [cpn]
140 | ... That's a precondition for getting into browsers properly
141 | 15:27:10 [cpn]
142 | ... We need something integrated in the browser for authenticating packets. Also QUIC integration
143 | 15:27:16 [EricSiow]
144 | Q+ to ask question.
145 | 15:27:47 [cpn]
146 | ... The way backpressure works in that setup is different. There's a proposal for that in MBONED
147 | 15:28:07 [cpn]
148 | ... Could send the same kind of information in a QUIC frame in a WebTransport context
149 | 15:28:33 [cpn]
150 | ... Then there's signalling for browser APIs. The BBC QUIC multicast draft is a good place to start experimenting
151 | 15:29:04 [cpn]
152 | ... The current multicast CG charter says we'll go to WebTransport first, to get datagram support to plug in existing multicast applications thar un in walled garden context
153 | 15:29:33 [cpn]
154 | ... If you have WebTransport you can put something in front at the sender side that puts it into QUIC datagram framing, then unpack at the receiver side
155 | 15:29:59 [cpn]
156 | ... I can share a demo video. We ported our existing multicast receiver to WASM and used it to play video
157 | 15:30:23 [cpn]
158 | Eric: How are active are browser vendors involved in the IETF discussion?
159 | 15:30:56 [cpn]
160 | Jake: Not very. Eric Rescorla at Mozilla commented, but I'm hoping to see support
161 | 15:31:08 [cpn]
162 | Eric: What about companies like Amazon?
163 | 15:31:46 [cpn]
164 | Jake: I did get a call from Amazon. They signed a deal with the NFL for Thursday night football. We've explored whether it's viable to do this with multicast
165 | 15:32:15 [cpn]
166 | ... That has a lot of viewers, at the high end of what the internet can support
167 | 15:32:34 [cpn]
168 | ... They're supportive of the standards work we're doing. Not clear we'll be ready in their timeframe
169 | 15:32:57 [cpn]
170 | ... I've not seen them engage in the standards work, but I hope they will as they have a driving use case
171 | 15:33:24 [cpn]
172 | ... I've talked privately with people at Google. Not everyone is convinced. YouTube Live traffic
173 | 15:33:43 [cpn]
174 | ... I hope we can drive their interest, but I don't think we've successfully done that yet
175 | 15:34:16 [cpn]
176 | ... People in networking may be skeptical from the last attempt at multicast. A vast amount of work went into any source multicast, that didn't pan out
177 | 15:34:43 [cpn]
178 | ... RFC8815 deprecated anysource multicast for inter-domain usage. That was a big false start for multicast
179 | 15:34:59 [dom]
180 | -> https://datatracker.ietf.org/doc/rfc8815/ Deprecating Any-Source Multicast (ASM) for Interdomain Multicast - RFC8815
181 | 15:35:12 [cpn]
182 | ... It's widely deployed in the operating systems. IGMP is already there
183 | 15:35:51 [cpn]
184 | Eric: I think the first task for the CG is to articulate the pain points and benefit to stakeholders
185 | 15:36:32 [cpn]
186 | ... You have some natural stakeholders. Google has multiple groups, so YouTube could be a supporter. The goal is to get them to feel the pain points and get them on side
187 | 15:36:48 [cpn]
188 | ... How do you get the Chrome browser people comfortable with the security issue?
189 | 15:37:22 [cpn]
190 | Jake: There's a chicken and egg problem. It needs ISPs interested in delivering it. I'd like to have the technical capability in place, that creates interest
191 | 15:38:05 [cpn]
192 | ... A few ISPs have joined the group but not active, e.g., Verizon and Comcast. I'd like to get more
193 | 15:38:11 [dom]
194 | -> https://www.w3.org/community/multicast/participants Participants in the Multicast Community Group
195 | 15:38:26 [cpn]
196 | ... They'll be less interested in the browser work, which is the charter for this group
197 | 15:38:56 [cpn]
198 | ... I'd like to have a big-picture plan for how this comes together. The multicast group is about browser support, but it plays into the overall story of what needs to happen
199 | 15:39:06 [cpn]
200 | ... Some is outside standards groups, getting people to invest
201 | 15:39:24 [cpn]
202 | Eric: If the business need is there, they'll commit people to standards work
203 | 15:39:51 [cpn]
204 | ... The benefit is obvious, but how do we rally the ecosystem? That's the immediate challenge
205 | 15:40:25 [cpn]
206 | Jake: Getting demos closer to what's releasable helps. The standards work is important, but a browser fork that does something usable is a key next step to make the case
207 | 15:41:04 [cpn]
208 | ... The other piece is getting buy-in from the browser tech side. Most objections have come from the security side. The proposal needs to be credible for people to pay attention
209 | 15:41:41 [cpn]
210 | ... So my proposal for next steps is the demo. If it can play video and there's some consensus in standards that it satisfies security concerns
211 | 15:41:58 [cpn]
212 | ... We don't have the level of buy-in from the people who stand to gain
213 | 15:42:19 [cpn]
214 | ... Similar story for CDNs and content owners, who can realise cost savings
215 | 15:43:25 [cpn]
216 | Dom: The conversation may be bound to having a timeline. How much time is needed to align things?
217 | 15:43:56 [cpn]
218 | ... How long is needed for the demo, then getting stakeholder input using the demo?
219 | 15:44:28 [cpn]
220 | Jake: So I have a demo running, that's close to ready. There's a Chromium binary you can download and install
221 | 15:44:36 [dom]
222 | -> https://www.w3.org/2021/10/TPAC/demos/multicast.html Multicast for the Web - TPAC 2021 demo
223 | 15:44:38 [cpn]
224 | ... I can share a link to the demo
225 | 15:45:15 [cpn]
226 | ... There's the open question of whether it can ship in a browser. If it's there, will ISPs use it, then will content owners use it?
227 | 15:45:46 [cpn]
228 | Dom: I'm hearing that the security is a key part of the plan to build confidence to use it
229 | 15:46:36 [cpn]
230 | Jake: ?? and Internet2 have multicast working groups. They are supporting research, and I'm working with them
231 | 15:46:57 [cpn]
232 | ... Ingest protocol for how traffic gets into the network. Our labs tests with ISPs looked at this
233 | 15:47:08 [cpn]
234 | ... A number of moving parts are essential to adoption, but outside W3C
235 | 15:47:22 [cpn]
236 | ... In this group, what I'm hoping to do is move forward the receive side of the story
237 | 15:47:37 [cpn]
238 | ... I encourage people to engage in IETF, to get the whole picture to stakeholders
239 | 15:47:49 [cpn]
240 | ... There's a lot of money at stake and potential big impact
241 | 15:48:12 [cpn]
242 | Gang: I think customers want this to be as transparent as possible
243 | 15:48:28 [dom]
244 | s??/GEANT/
245 | 15:48:47 [cpn]
246 | ... DVB enable this through a MPEG DASH player. They have an easier problem
247 | 15:49:27 [cpn]
248 | ... We're considering the receiver side, but what about the server side, e.g., the 5G edge which is closer to the last mile. Our target is to resolve the last mile bandwidth issue
249 | 15:49:39 [cpn]
250 | ... Can we simplify this security model issue?
251 | 15:50:01 [cpn]
252 | Jake: If you really make use of the broadcast capability at the edge, it may be possible to do something
253 | 15:50:57 [cpn]
254 | ... The issue is that you're trusting the edge servers. Handing off control, if you send somethign that an ISP on the path can change, they could do that. This is a big source of concern at IETF
255 | 15:51:55 [cpn]
256 | ... It's part of what we addressed with AMBI authentication, there's not a way for it to be spoofed, it creates and end to end authentication chain, so there's no scope any more for ad theft or unauthenticated injection
257 | 15:52:03 [cpn]
258 | ... That's one of several problems
259 | 15:52:37 [cpn]
260 | ... In a walled garden, there's a different set of problems. Could be how you get the scale in the end
261 | 15:52:59 [cpn]
262 | ... But it only works for video, gameplay and other downloads need different solutions
263 | 15:53:18 [cpn]
264 | ... 4G had this capability, but people didn't use it. The north-bound interface is hard
265 | 15:53:27 [cpn]
266 | ... Multicast TV has been used, but not inter-domain yet
267 | 15:54:01 [kazho]
268 | kazho has joined #multicast
269 | 15:54:10 [cpn]
270 | Gang: There's an incentive for ISPs to make changes, saving bandwidth. With unicast fallback it's easy to make changes
271 | 15:54:37 [cpn]
272 | Jake: I think we way we proposed is easy, just pass through the streams. A design question is which way that can be done
273 | 15:55:18 [cpn]
274 | ... Give them a coherent object to unpack and distribute, or how to pass through an ingested stream
275 | 15:55:40 [cpn]
276 | ... ISPs tend to prefer this model, they have less to maintain, as they can focus on moving packets rather than end-user applications
277 | 15:56:08 [cpn]
278 | ... If it's just IP that you pass through, and senders and receivers decide how it's interpreted, there's less for them to do
279 | 15:56:13 [cpn]
280 | ... It's a great question
281 | 15:56:37 [cpn]
282 | Jake: What I'd like to do in the next month is some experiments with QUIC and WebTransport API integration
283 | 15:56:59 [cpn]
284 | ... If anyone would like to join me, I'd like to collaborate with people, probably after IETF
285 | 15:57:47 [cpn]
286 | ... Not sure whether the BBC nghq QUIC or aioquic will be easier, that's part of the investigation
287 | 15:58:00 [cpn]
288 | ... If you can comment on secdispatch, it's an important moment
289 | 15:58:20 [cpn]
290 | ... There's a hackathon opportunity to work on the browser demo, next week
291 | 15:58:37 [cpn]
292 | ... I can introduce you to the right people to follow up
293 | 15:58:52 [cpn]
294 | present+ LouayBassbouss
295 | 15:58:57 [cpn]
296 | Topic: Wrap up
297 | 15:59:33 [cpn]
298 | Jake: Thank you for all for coming. I hope I've piqued your interest to look into this
299 | 16:00:05 [cpn]
300 | ... The CG meets monthly, first Wednesday in December 7:30am Pacific. Feel free to contact me offline before then
301 | 16:01:14 [cpn]
302 | rrsagent, draft minutes
303 | 16:01:14 [RRSAgent]
304 | I have made the request to generate https://www.w3.org/2021/10/27-multicast-minutes.html cpn
305 | 16:01:18 [cpn]
306 | rrsagent, make log public
307 | 16:02:51 [takio]
308 | takio has left #multicast
309 | 18:58:31 [Zakim]
310 | Zakim has left #multicast
311 | ~~~
312 |
--------------------------------------------------------------------------------
/multicast-cg-charter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Multicast Community Group Charter
6 |
7 |
8 |
9 |
10 |
29 |
30 |
31 |
32 | Multicast Community Group Charter
33 |
34 |
35 |
36 | This Charter was ratified by group consensus on 2021-06-23. To submit feedback,
37 | please use the Github Repo Issues list.
38 |
53 | The mission of the Multicast web community group is to enable multicast
54 | IP transport for web traffic to efficiently solve scalability problems
55 | in networking and web operations.
56 |
57 |
58 | Scope of Work
59 |
60 |
In general, topics related to secure transport using multicast IP and the application-layer signaling to support it are in scope.
61 |
62 |
The CLA is applicable (as described in the process section) to any work contributing to normative specifications. This includes in-scope work such as:
63 |
64 |
Explore and incubate APIs to enable multicast transport on the
65 | web (and their test suites), leveraging existing protocols and
66 | APIs where possible
67 |
68 |
Define application layer negotiation mechanisms to signal
69 | multicast support and communicate necessary parameters
70 |
71 |
Define fallback mechanisms for networks where multicast
72 | availability is limited or disabled by the network.
73 |
74 |
75 |
76 |
Other work that's in-scope but where the CLA is not expected to directly apply includes activities like:
77 |
78 |
Identify and refine use cases that can improve network
79 | efficiency and user experience through the use of multicast
80 |
81 |
Find working group homes for incubated APIs after incubation
82 |
83 |
Evaluate multicast transport protocols, implementations, and
84 | deployment profiles on their performance characteristics and
85 | their suitability for web use cases.
86 |
87 |
Liaison statements suggesting refinements and fixes to existing
88 | and emerging specifications in the IETF or other standards bodies,
89 | especially with regard to security considerations and protocols
90 | relevant to web applications for multicast-based transport
91 |
92 |
Evangelize open web and internet standards and APIs that enable
93 | the use of multicast with web developers, browser vendors, and
94 | network operators
95 |
96 |
Evangelize the scalability benefits of leveraging multicast
97 | transport for appropriate use cases and where available.
98 |
99 |
100 |
101 |
102 | Considerations on Proprietary Protocols
103 |
104 |
Work on open standards is preferred, but many existing uses of multicast have proprietary implementations, and some of these may be possible to operate on top of some web APIs as they become available.
105 |
106 |
Existing proprietary transport protocols MAY be evaluated and tracked for their performance characteristics and potential to address scalability problems, as long as their usage is consistent with the appropriate security considerations. For example, evaluating performance characteristics of a proprietary implementation of a video player built on top of a multicast-enabled WebTransport API would not be out of scope for this group--it would be a case study of an example usage of a multicast WebTransport API.
107 |
108 |
Although such case studies may inform the analysis of use cases within the group, examination of such protocols does not imply that the proprietary implementation is subject to the CLA.
109 |
110 |
Proprietary implementations SHOULD NOT be individually evangelized by this group, but lists and reviews that include information about proprietary implementations without unduly highlighting specific vendors MAY be included during evangelization of multicast APIs in general.
111 |
112 |
113 | Out of Scope
114 |
115 |
The definition of network protocols for multicast transport or
116 | routing is out of scope for this group. In general, it is expected that
117 | protocol definition will be handled in the IETF. (Note however that
118 | liaison statements to appropriate IETF groups or evaluations of how
119 | such protocols impact performance or otherwise impact web use cases
120 | would be in scope.)
121 |
122 |
123 | Deliverables
124 |
125 |
126 | Specifications
127 |
128 |
129 | Phase 1
130 |
131 |
The initial priority will focus on a proposal to extend WebTransport with a multicast receive capability.
132 |
This is a low-level API that can be used to incubate the later stages by experimenting with transport protocols implemented inside web apps.
136 |
137 |
138 | Phase 2
139 |
140 |
Later work will aim to extend other W3C specifications that may be able to get improved performance by embedding interoperable open standards for multicast transport into various delivery APIs. Specifications under consideration for this phase will include:
141 |
149 | This work MAY proceed in parallel with higher priority work, provided there are group members actively engaged with it.
150 |
151 |
152 | Non-Normative Reports
153 |
154 |
The group may produce other Community Group Reports within the scope of
155 | this charter but that are not Specifications, for instance:
156 |
157 |
Use Cases document
158 |
159 |
Primers
160 |
161 |
Position statements
162 |
163 |
Resources for evangelism (explanatory docs for different audiences, statistics-gathering)
164 |
165 |
166 |
167 |
In general, other documents related to in-scope multicast work are welcome. If there are individuals who will commit to being editors for a document, the group should agree to accept it as a work item.
168 |
169 |
170 |
171 | Test Suites
172 |
173 |
174 | The group MAY produce test suites to support the Specifications. Any test suites produced by this group will be made available under the same license as WPT.
175 |
176 |
178 |
179 | Dependencies or Liaisons
180 |
181 |
Progress on any usage of multicast for web traffic will rely on progress on some IETF specifications, and group members will be encouraged to perform IETF reviews for these. The list of these specifications is maintained in the github repo at consensus-dependency-specs.md, to be updated as incubation proceeds according to group consensus.
182 |
183 |
Progress on the specifications in phase 2 will depend on
184 | interoperable open implementations of specifications for multicast-based
185 | transport protocols, and the group
186 | will need to consider the suitability of these protocols for addressing
187 | the specific use cases covered by the target APIs, and to evaluate what
188 | updates might be necessary to meet the requirements of the web security
189 | model. Several such candidate protocols exist, and the list of protocols
190 | recommended for consideration is maintained in the github repo under consensus-transport-protocols.md, to be updated as incubation proceeds according to group consensus.
191 |
192 |
It's expected that implementations of the receive side of these
193 | protocols on top of a secure WebTransport API can aid the success of
194 | these evaluation efforts, which is a key motivator for the phased
195 | approach outlined here.
196 |
197 |
198 | W3C Groups
199 |
200 |
The Multicast Web Community Group will also liaise with the following W3C Working groups:
201 |
202 |
240 | The group operates under the Community and Business
242 | Group Process. Terms in this Charter that conflict with those of the
243 | Community and Business Group Process are void.
244 |
245 |
246 | As with other Community Groups, W3C seeks organizational licensing
247 | commitments under the W3C Community
249 | Contributor License Agreement (CLA). When people request to
250 | participate without representing their organization's legal interests,
251 | W3C will in general approve those requests for this group with the
252 | following understanding: W3C will seek and expect an organizational
253 | commitment under the CLA starting with the individual's first request to
254 | make a contribution to a group Deliverable.
255 | The section on Contribution Mechanics describes
256 | how W3C expects to monitor these contribution requests.
257 |
269 | The group will not publish Specifications on topics other than those
270 | listed under Specifications above. See
271 | below for how to modify the charter.
272 |
283 | Specifications created in the Community Group must use the
285 | W3C Software and Document License. All other documents produced by
286 | the group should use that License where possible.
287 |
288 |
289 | Community Group participants agree to make all contributions in the
290 | GitHub repo the group is using for the particular document. This may be
291 | in the form of a pull request (preferred), by raising an issue, or by
292 | adding a comment to an existing issue.
293 |
294 |
295 | All Github repositories attached to the Community Group must contain a
296 | copy of the CONTRIBUTING
298 | and LICENSE
300 | files.
301 |
302 |
303 | Transparency
304 |
305 |
306 | The group will conduct all of its technical work in public. If the group
307 | uses GitHub, all technical work will occur in its GitHub repositories
308 | (and not in mailing list discussions). This is to ensure contributions
309 | can be tracked through a software tool.
310 |
311 |
312 | Meetings may be restricted to Community Group participants, but a public
313 | summary or minutes must be posted to the group's public mailing list, or
314 | to a GitHub issue if the group uses GitHub.
315 |
316 |
317 | Decision Process
318 |
319 |
320 | This group will seek to make decisions where there is consensus. Groups
321 | are free to decide how to make decisions (e.g. Participants who have
322 | earned Committer status for a history of useful contributions assess
323 | consensus, or the Chair assesses consensus, or where consensus isn't
324 | clear there is a Call for Consensus [CfC] to allow multi-day online
325 | feedback for a proposed course of action). It is expected that
326 | participants can earn Committer status through a history of valuable
327 | contributions as is common in open source projects. After discussion and
328 | due consideration of different opinions, a decision should be publicly
329 | recorded (where GitHub is used as the resolution of an Issue).
330 |
331 |
332 | If substantial disagreement remains (e.g. the group is divided) and the
333 | group needs to decide an Issue in order to continue to make progress, the
334 | Committers will choose an alternative that had substantial support (with
335 | a vote of Committers if necessary). Individuals who disagree with the
336 | choice are strongly encouraged to take ownership of their objection by
337 | taking ownership of an alternative fork. This is explicitly allowed (and
338 | preferred to blocking progress) with a goal of letting implementation
339 | experience inform which spec is ultimately chosen by the group to move
340 | ahead with.
341 |
342 |
343 | Any decisions reached at any meeting are tentative and should be recorded
344 | in a GitHub Issue for groups that use GitHub and otherwise on the group's
345 | public mail list. Any group participant may object to a decision reached
346 | at an online or in-person meeting within 7 days of publication of the
347 | decision provided that they include clear technical reasons for their
348 | objection. The Chairs will facilitate discussion to try to resolve the
349 | objection according to the decision process.
350 |
351 |
352 | It is the Chairs' responsibility to ensure that the decision process is
353 | fair, respects the consensus of the CG, and does not unreasonably favour
354 | or discriminate against any group participant or their employer.
355 |
356 |
357 | Chair Selection
358 |
359 |
360 | Participants in this group choose their Chair(s) and can replace their
361 | Chair(s) at any time using whatever means they prefer. However, if 5
362 | participants, no two from the same organisation, call for an election,
363 | the group must use the following process to replace any current Chair(s)
364 | with a new Chair, consulting the Community Development Lead on election
365 | operations (e.g., voting infrastructure and using RFC 2777).
367 |
368 |
369 |
Participants announce their candidacies. Participants have 14 days to
370 | announce their candidacies, but this period ends as soon as all
371 | participants have announced their intentions. If there is only one
372 | candidate, that person becomes the Chair. If there are two or more
373 | candidates, there is a vote. Otherwise, nothing changes.
374 |
375 |
Participants vote. Participants have 21 days to vote for a single
376 | candidate, but this period ends as soon as all participants have voted.
377 | The individual who receives the most votes, no two from the same
378 | organisation, is elected chair. In case of a tie, RFC2777 is used to
379 | break the tie. An elected Chair may appoint co-Chairs.
380 |
381 |
382 |
383 | Participants dissatisfied with the outcome of an election may ask the
384 | Community Development Lead to intervene. The Community Development Lead,
385 | after evaluating the election, may take any action including no action.
386 |
387 |
388 | Amendments to this Charter
389 |
390 |
391 | The group can decide to work on a proposed amended charter, editing the
392 | text using the Decision Process described above.
393 | The decision on whether to adopt the amended charter is made by
394 | conducting a 30-day vote on the proposed new charter. The new charter, if
395 | approved, takes effect on either the proposed date in the charter itself,
396 | or 7 days after the result of the election is announced, whichever is
397 | later. A new charter must receive 2/3 of the votes cast in the approval
398 | vote to pass. The group may make simple corrections to the charter such
399 | as deliverable dates by the simpler group decision process rather than
400 | this charter amendment process. The group will use the amendment process
401 | for any substantive changes to the goals, scope, deliverables, decision
402 | process or rules for amending the charter.
403 |