SlideShare a Scribd company logo
1 of 15
Download to read offline
Multicast to the Browser
Jake Holland, Akamai
draft-jholland-mboned-dorms
draft-jholland-mboned-ambi
draft-jholland-mboned-cbacc
WICG: https://discourse.wicg.io/t/proposal-multicastreceiver-api/3939
Goals
• Receive multicast in Javascript (W3C API)
• Port receivers to WebAssembly
• Including proprietary players & downloaders
• So web pages can play video, download files, etc. with multicast
• Safely
• Resist on-path packet injection/modification
• Malicious pages/scripts can’t blow out the network
Specs
WICG (W3C):
• MulticastReceiver API
IETF:
• DORMS: Discover and fetch extensible (S,G)-specific metadata
• AMBI: Authenticate packets with out-of-band manifests
• CBACC: Circuit-break streams if oversubscribed
Browser as Gatekeeper
var mr = new MulticastReceiver(
source=‘198.51.100.10’,
group=‘232.1.1.1’, port=5001,
dorms=‘dorms.example.com’);
mr.onmessage = function(evt) {
processPayloads(evt.data); }
mr.join()
Javascript
Browser
Fetch Metadata
(DORMS)
Safe Bitrate?
(CBACC)
dorms.example.com
(RESTCONF)
no
(error)
Subscribe
Internet
Authentication +
Loss Detection
(AMBI)
yes
Join(S,G)
data
integrity
stream
Authenticated payloads, loss stats
join()
Network as Gatekeeper
Javascript
Browser
DNS-SD query: SRV of
dorms._tcp.(reverse-src-ip)
=>dorms.example.com
On-path router
Fetch Metadata
(DORMS)
Safe Bitrate?
(CBACC)
no
(block)
RPF Propagate
(Optional for routers)
Authentication +
Loss Detection
(AMBI)
yes
Join(S,G)
data
Forward packets (optionally authenticated)
join()
Next Hop Router
Maybe
Downstream
Routers
DORMS -- Discovery Of RESTCONF Metadata for SSM
• RESTCONF: YANG-based HTTPS Restful API
• Authentication Hostname
• DNS Reverse IP -> DNS-SD provides hostname (for network)
• Known hostname provided by client (for browser API, pending wider DNSSEC/DoH)
• Bootstrap from hostname via standard RESTCONF (RFC 8040):
• /.well-known/host-meta
• /restconf/data/ietf-yang-library
• CORS
• Browser inserts origin header, server refuses unauthorized requests
• Network uses reverse IP as origin, optional client auth from server
• dorms.yang => Indexed fetch of (S,G)-specific metadata
DORMS
GET /top/restconf/data/
ietf-dorms:metadata/
sender=203.0.113.15/
group=232.1.1.1
Host: dorms-restconf.example.com
Accept: application/yang-data+json
HTTP/1.1 200 OK
Content-Type: application/yang-data+json
{
"ietf-dorms:group": [
{
"group-address":"232.1.1.1",
"udp-stream":[
{
"port":"5001”
}
]
}
]
}
DORMS + AMBI
GET /top/restconf/data/
ietf-dorms:metadata/
sender=203.0.113.15/
group=232.1.1.1
Host: dorms-restconf.example.com
Accept: application/yang-data+json
HTTP/1.1 200 OK
Content-Type: application/yang-data+json
{
"ietf-dorms:group": [
{
"group-address":"232.1.1.1",
"udp-stream":[
{
"port":"5001”,
"ietf-ambi:manifest-stream": [
"manifest-transport":[
"https://example.com/manifest1"
],
"hash-algorithm":"shake-128"
]
}
]
}
]
}
AMBI – Asymmetric Manifest-Based Integrity
• YANG augmentation of DORMS
• Adds yang data to the (S,G) nodes
• Out-of-band Stream of Manifests
• HTTPS Chunked Encoding (prototype at Hackathon)
• QUIC (H3 version of same)
• DTLS+FECFRAME (future work—reduce HOL blocking?)
• ALTA+FECFRAME (after DTLS–fate-sharing, better timing window, scalable)
• Manifests:
• List of sent packet digests (hash of contents)
AMBI (Asymmetric Manifest-Based Integrity)
Sender
Multicast Data
UDP Probably
Fanout & Forwarding
(Tunneling, PIM/BIER, IGMP/MLD)
Packet1
Packet2
Packet3
CDN/Elastic Cloud
Receivers
Packet without hash:
=> spoofed/corrupt
Hash without Packet:
=> loss
Packet1
Packet2
Packet3
Hash(Packet1)
Hash(Packet2)
Hash(Packet3)
1-3% of data:
Unicast-Authenticated Manifests
Manifests (Authenticated)
HTTPS/QUIC/DTLS
Hash(Packet1)
Hash(Packet2)
Hash(Packet3)
Also AMBI (phase 2, with ALTA)
Sender
Multicast Data
UDP Probably
Fanout & Forwarding
(Tunneling, PIM/BIER, IGMP/MLD)
Manifests (Signed)
UDP (another port
Signature
Hash(Packet1)
Hash(Packet2)
Hash(Packet3)
Packet1
Packet2
Packet3
CDN/Elastic Cloud
Receivers
Packet without hash:
=> spoofed/corrupt
Hash without Packet:
=> loss
Packet1
Packet2
Packet3
0% of data:
Unicast Authenticated
Public Keys (verify signatures)
Signature
Hash(Packet1)
Hash(Packet2)
Hash(Packet3)
Occasional Keys
CBACC – Circuit-Breaker Assisted Congestion Control
• YANG augmentation of DORMS
• Adds yang data to the (S,G) nodes
• Provides max-bitrate and priority metadata for (S,G)
• Defines circuit-breaker behavior
• Prune when oversubscribed
• Oversubscription threshold
• Static — typical for routers
• (default: X% interface capacity)
• Dynamic — typical for browser:
• Loss (shrink when there’s loss, grow when there’s not)
• History
• BW detection techniques (chirping/packet dispersion)
Circuit Breaker Assisted Congestion Control
Bit-rate metadata from senders
(via DORMS)
+ optional PIM population count for fair pruning decisions
(RFC 6807, experimental)
Notice oversubscribed
links, prune or block
flows.
draft-jholland-mboned-cbacc:
Implementation status
• Receive API (just basic join so far; to be extended)
• https://github.com/GrumpyOldTroll/libmcrx
• Hackathon AMBI implementation (POC; just the transport)
• https://github.com/GrumpyOldTroll/ambi
• Chromium with libmcrx & API (POC; do not use for browsing, not up to date)
• https://github.com/GrumpyOldTroll/chromium/tree/multicast
TBD:
- DORMS (with both CBACC and AMBI)
- CBACC
- AMBI ported to libmcrx
- Tunneling (AMT)
Next Steps
• Adoptions/dispatch?
• DORMS?
• CBACC?
• AMBI?
• WICG proposal
• Also needs support, please read and comment J
https://discourse.wicg.io/t/proposal-multicastreceiver-api/3939

More Related Content

Similar to Multicast to browser techniques and methods

Basic IT 2 (General IT Knowledge-2)
Basic IT 2 (General IT Knowledge-2)Basic IT 2 (General IT Knowledge-2)
Basic IT 2 (General IT Knowledge-2)kholis_mjd
 
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)Jakub Botwicz
 
HTTP and 5G (fixed1)
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)dynamis
 
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...Dominik Gruber
 
The Network Protocol Stack Revisited
The Network Protocol Stack RevisitedThe Network Protocol Stack Revisited
The Network Protocol Stack Revisitedinbroker
 
IOT and System Platform From Concepts to Code
IOT and System Platform From Concepts to CodeIOT and System Platform From Concepts to Code
IOT and System Platform From Concepts to CodeAndy Robinson
 
.NET Conf 2022 - Networking in .NET 7
.NET Conf 2022 - Networking in .NET 7.NET Conf 2022 - Networking in .NET 7
.NET Conf 2022 - Networking in .NET 7Karel Zikmund
 
Architectures with Windows Azure
Architectures with Windows AzureArchitectures with Windows Azure
Architectures with Windows AzureDamir Dobric
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser NetwrokingShuya Osaki
 
Juglouvain http revisited
Juglouvain http revisitedJuglouvain http revisited
Juglouvain http revisitedmarctritschler
 
Networking in Docker Containers
Networking in Docker ContainersNetworking in Docker Containers
Networking in Docker ContainersAttila Kanto
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSocketsGunnar Hillert
 
HTTP/2 What's inside and Why
HTTP/2 What's inside and WhyHTTP/2 What's inside and Why
HTTP/2 What's inside and WhyAdrian Cole
 
Cloud Data Encryption (Aluhut Edition) - 2019
Cloud Data Encryption (Aluhut Edition) - 2019Cloud Data Encryption (Aluhut Edition) - 2019
Cloud Data Encryption (Aluhut Edition) - 2019Matthias Grawinkel
 
Dockerffm meetup 20150113_networking
Dockerffm meetup 20150113_networkingDockerffm meetup 20150113_networking
Dockerffm meetup 20150113_networkingAndreas Schmidt
 
Sockets in unix
Sockets in unixSockets in unix
Sockets in unixswtjerin4u
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric OverviewMichelle Holley
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaJoe Stein
 

Similar to Multicast to browser techniques and methods (20)

Basic IT 2 (General IT Knowledge-2)
Basic IT 2 (General IT Knowledge-2)Basic IT 2 (General IT Knowledge-2)
Basic IT 2 (General IT Knowledge-2)
 
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
 
HTTP and 5G (fixed1)
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)
 
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
 
The Network Protocol Stack Revisited
The Network Protocol Stack RevisitedThe Network Protocol Stack Revisited
The Network Protocol Stack Revisited
 
IOT and System Platform From Concepts to Code
IOT and System Platform From Concepts to CodeIOT and System Platform From Concepts to Code
IOT and System Platform From Concepts to Code
 
.NET Conf 2022 - Networking in .NET 7
.NET Conf 2022 - Networking in .NET 7.NET Conf 2022 - Networking in .NET 7
.NET Conf 2022 - Networking in .NET 7
 
Architectures with Windows Azure
Architectures with Windows AzureArchitectures with Windows Azure
Architectures with Windows Azure
 
Part 6 : Internet applications
Part 6 : Internet applicationsPart 6 : Internet applications
Part 6 : Internet applications
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser Netwroking
 
Juglouvain http revisited
Juglouvain http revisitedJuglouvain http revisited
Juglouvain http revisited
 
Networking in Docker Containers
Networking in Docker ContainersNetworking in Docker Containers
Networking in Docker Containers
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
 
HTTP/2 What's inside and Why
HTTP/2 What's inside and WhyHTTP/2 What's inside and Why
HTTP/2 What's inside and Why
 
Cloud Data Encryption (Aluhut Edition) - 2019
Cloud Data Encryption (Aluhut Edition) - 2019Cloud Data Encryption (Aluhut Edition) - 2019
Cloud Data Encryption (Aluhut Edition) - 2019
 
6 app-tcp
6 app-tcp6 app-tcp
6 app-tcp
 
Dockerffm meetup 20150113_networking
Dockerffm meetup 20150113_networkingDockerffm meetup 20150113_networking
Dockerffm meetup 20150113_networking
 
Sockets in unix
Sockets in unixSockets in unix
Sockets in unix
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric Overview
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
 

Recently uploaded

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Recently uploaded (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Multicast to browser techniques and methods

  • 1. Multicast to the Browser Jake Holland, Akamai draft-jholland-mboned-dorms draft-jholland-mboned-ambi draft-jholland-mboned-cbacc WICG: https://discourse.wicg.io/t/proposal-multicastreceiver-api/3939
  • 2. Goals • Receive multicast in Javascript (W3C API) • Port receivers to WebAssembly • Including proprietary players & downloaders • So web pages can play video, download files, etc. with multicast • Safely • Resist on-path packet injection/modification • Malicious pages/scripts can’t blow out the network
  • 3. Specs WICG (W3C): • MulticastReceiver API IETF: • DORMS: Discover and fetch extensible (S,G)-specific metadata • AMBI: Authenticate packets with out-of-band manifests • CBACC: Circuit-break streams if oversubscribed
  • 4. Browser as Gatekeeper var mr = new MulticastReceiver( source=‘198.51.100.10’, group=‘232.1.1.1’, port=5001, dorms=‘dorms.example.com’); mr.onmessage = function(evt) { processPayloads(evt.data); } mr.join() Javascript Browser Fetch Metadata (DORMS) Safe Bitrate? (CBACC) dorms.example.com (RESTCONF) no (error) Subscribe Internet Authentication + Loss Detection (AMBI) yes Join(S,G) data integrity stream Authenticated payloads, loss stats join()
  • 5. Network as Gatekeeper Javascript Browser DNS-SD query: SRV of dorms._tcp.(reverse-src-ip) =>dorms.example.com On-path router Fetch Metadata (DORMS) Safe Bitrate? (CBACC) no (block) RPF Propagate (Optional for routers) Authentication + Loss Detection (AMBI) yes Join(S,G) data Forward packets (optionally authenticated) join() Next Hop Router Maybe Downstream Routers
  • 6. DORMS -- Discovery Of RESTCONF Metadata for SSM • RESTCONF: YANG-based HTTPS Restful API • Authentication Hostname • DNS Reverse IP -> DNS-SD provides hostname (for network) • Known hostname provided by client (for browser API, pending wider DNSSEC/DoH) • Bootstrap from hostname via standard RESTCONF (RFC 8040): • /.well-known/host-meta • /restconf/data/ietf-yang-library • CORS • Browser inserts origin header, server refuses unauthorized requests • Network uses reverse IP as origin, optional client auth from server • dorms.yang => Indexed fetch of (S,G)-specific metadata
  • 7. DORMS GET /top/restconf/data/ ietf-dorms:metadata/ sender=203.0.113.15/ group=232.1.1.1 Host: dorms-restconf.example.com Accept: application/yang-data+json HTTP/1.1 200 OK Content-Type: application/yang-data+json { "ietf-dorms:group": [ { "group-address":"232.1.1.1", "udp-stream":[ { "port":"5001” } ] } ] }
  • 8. DORMS + AMBI GET /top/restconf/data/ ietf-dorms:metadata/ sender=203.0.113.15/ group=232.1.1.1 Host: dorms-restconf.example.com Accept: application/yang-data+json HTTP/1.1 200 OK Content-Type: application/yang-data+json { "ietf-dorms:group": [ { "group-address":"232.1.1.1", "udp-stream":[ { "port":"5001”, "ietf-ambi:manifest-stream": [ "manifest-transport":[ "https://example.com/manifest1" ], "hash-algorithm":"shake-128" ] } ] } ] }
  • 9. AMBI – Asymmetric Manifest-Based Integrity • YANG augmentation of DORMS • Adds yang data to the (S,G) nodes • Out-of-band Stream of Manifests • HTTPS Chunked Encoding (prototype at Hackathon) • QUIC (H3 version of same) • DTLS+FECFRAME (future work—reduce HOL blocking?) • ALTA+FECFRAME (after DTLS–fate-sharing, better timing window, scalable) • Manifests: • List of sent packet digests (hash of contents)
  • 10. AMBI (Asymmetric Manifest-Based Integrity) Sender Multicast Data UDP Probably Fanout & Forwarding (Tunneling, PIM/BIER, IGMP/MLD) Packet1 Packet2 Packet3 CDN/Elastic Cloud Receivers Packet without hash: => spoofed/corrupt Hash without Packet: => loss Packet1 Packet2 Packet3 Hash(Packet1) Hash(Packet2) Hash(Packet3) 1-3% of data: Unicast-Authenticated Manifests Manifests (Authenticated) HTTPS/QUIC/DTLS Hash(Packet1) Hash(Packet2) Hash(Packet3)
  • 11. Also AMBI (phase 2, with ALTA) Sender Multicast Data UDP Probably Fanout & Forwarding (Tunneling, PIM/BIER, IGMP/MLD) Manifests (Signed) UDP (another port Signature Hash(Packet1) Hash(Packet2) Hash(Packet3) Packet1 Packet2 Packet3 CDN/Elastic Cloud Receivers Packet without hash: => spoofed/corrupt Hash without Packet: => loss Packet1 Packet2 Packet3 0% of data: Unicast Authenticated Public Keys (verify signatures) Signature Hash(Packet1) Hash(Packet2) Hash(Packet3) Occasional Keys
  • 12. CBACC – Circuit-Breaker Assisted Congestion Control • YANG augmentation of DORMS • Adds yang data to the (S,G) nodes • Provides max-bitrate and priority metadata for (S,G) • Defines circuit-breaker behavior • Prune when oversubscribed • Oversubscription threshold • Static — typical for routers • (default: X% interface capacity) • Dynamic — typical for browser: • Loss (shrink when there’s loss, grow when there’s not) • History • BW detection techniques (chirping/packet dispersion)
  • 13. Circuit Breaker Assisted Congestion Control Bit-rate metadata from senders (via DORMS) + optional PIM population count for fair pruning decisions (RFC 6807, experimental) Notice oversubscribed links, prune or block flows. draft-jholland-mboned-cbacc:
  • 14. Implementation status • Receive API (just basic join so far; to be extended) • https://github.com/GrumpyOldTroll/libmcrx • Hackathon AMBI implementation (POC; just the transport) • https://github.com/GrumpyOldTroll/ambi • Chromium with libmcrx & API (POC; do not use for browsing, not up to date) • https://github.com/GrumpyOldTroll/chromium/tree/multicast TBD: - DORMS (with both CBACC and AMBI) - CBACC - AMBI ported to libmcrx - Tunneling (AMT)
  • 15. Next Steps • Adoptions/dispatch? • DORMS? • CBACC? • AMBI? • WICG proposal • Also needs support, please read and comment J https://discourse.wicg.io/t/proposal-multicastreceiver-api/3939