v152 · isolated web apps · proposed

Source Specific Multicast for Direct Sockets API

Joining a multicast group with plain joinGroup("239.0.0.1") is Any-Source Multicast: the socket receives from whoever sends to the group — which is why RFC 8815 deprecates ASM between domains as a DDoS vector. This proposal adds one optional dictionary member, MulticastGroupOptions.sourceAddress, turning the join into Source-Specific Multicast: packets arrive only from the source you named. Direct Sockets — and therefore all of this — exists only inside Isolated Web Apps; a normal page like this one genuinely cannot open a UDPSocket, and these demos never pretend otherwise.

concepts

  1. Isolated-context probe

    The honest capability read: probe UDPSocket, TCPSocket and MulticastController for real, alongside the context facts that explain the result — secure context, cross-origin isolation, the permissions-policy register. The point is the why: these interfaces carry [IsolatedContext], so their absence here is the IWA gate, not browser age.

  2. SSM vs ASM lab

    An interactive network diagram — three senders, one group, one receiver. Build the exact joinGroup() call with or without sourceAddress, toggle which senders transmit (including a spoofing attacker), and watch which datagrams the membership actually delivers. Clearly labelled a model of the spec's filtering behavior, never a live socket.

  3. Join validation bench

    The edge and failure angle: the spec's joinGroup() steps, run in order against any group/source pair you type. Family mismatches, non-multicast groups, loopback sources, duplicate memberships, ASM/SSM mixing, leaving with the wrong source — each stops at the exact step the spec names, with the exact exception (TypeError, InvalidStateError, NetworkError) a real IWA would see.

why it shipped

It is proposed for Chrome 160 (per ChromeStatus) and incubating in WICG. The driver is security at scale: Harald Alvestrand's review of the multicast proposal put it bluntly — any-source multicast beyond the local network "is a high-powered DDOS vector, not something that it's safe to build services on", recommending single-source support. SSM fixes that at the network layer: receivers declare the one source they trust, routers stop maintaining state for every possible sender, and attackers can't inject into the stream without owning the expected source address. Node's dgram grew the same capability (addSourceSpecificMembership), and the ChromeApps sockets.udp API this ports from had multicast for a decade. The use cases — synchronized video walls, mDNS-style device discovery — come straight from the explainer.

research record — use cases & exact surface

references