610 likes | 721 Vues
Free Riding Multicast (FRM) represents a radical restructuring of inter-domain multicast, aimed at simplifying group membership and multicast route construction. Authored by Sylvia Ratnasamy, Andrey Ermolinskiy, and Scott Shenker, this paper discusses the inadequacies of current multicast implementations, primarily due to their complexity and economic mismatch. FRM seeks to decouple group membership discovery from multicast routing, centralizing computation at the origin border router and utilizing BGP for membership information dissemination. The approach promises enhanced efficiency while reducing operational overhead.
E N D
Free Riding Multicast Sylvia Ratnasamy (Intel Research) Andrey Ermolinskiy (U.C. Berkeley) Scott Shenker (U.C. Berkeley andICSI) ACM SIGCOMM 2006
IP Multicast • Extensively researched, limited deployment • Some intra-domain/enterprise usage • Virtually no inter-domain deployment • Why? • Poor match with underlying economics? • Too complex? • PIM-SM, PIM-DM, MBGP, MSDP, BGMP, IGMP, etc. • FRM goal: make inter-domain multicast simple
FRM Overview • Free Riding Multicast: radical restructuring of inter-domain multicast • Key design choice: decouple group membership discovery from multicast route construction • Principal trade-off: avoidance of distributed route computation at the expense of optimal efficiency
Talk Outline • Free Riding Multicast (FRM) • Approach overview • Overhead evaluation • Design tradeoffs • Implementation
FRM Approach • Group membership discovery • Extension to BGP - augment route advertisements with group membership information
FRM Approach • Group membership discovery • Extension to BGP - augment route advertisements with group membership information • Multicast route construction • Centralized computation at the origin border router • Exploit knowledge of unicast BGP routes • Eliminate the need for a separate routing algorithm
Group Membership Discovery • Augment BGP with per-prefix group membership information AS X AS Y a.b.*.* c.d.e.* AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V
Group Membership Discovery • Augment BGP with per-prefix group membership information AS X AS Y a.b.*.* c.d.e.* AS P AS Z T AS • Domain X joins G1 h.i.*.* f.g.*.* AS Q AS R AS V
a.b*.* {G1} Group Membership Discovery • Augment BGP with per-prefix group membership information AS X AS Y a.b.*.* c.d.e.* AS P AS Z T AS • Domain X joins G1 h.i.*.* f.g.*.* AS Q AS R • Border router at X re-advertises its prefix, attaches encoding of active groups AS V BGP UPDATE Dest AS Path FRM group membership a.b.*.* X {G1}
a.b*.* {G1} Group Membership Discovery • BGP disseminates membership change AS X AS Y a.b.*.* c.d.e.* • Border routers maintain membership info. as part of per-prefix state in BGP RIB AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V
a.b*.* {G1} Group Membership Discovery • BGP disseminates membership change AS X AS Y a.b.*.* c.d.e.* • Border routers maintain membership info. as part of per-prefix state in BGP RIB AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V
a.b*.* a.b*.* a.b*.* a.b*.* {G1} {G1} {G1} {G1} Group Membership Discovery • BGP disseminates membership change AS X AS Y a.b.*.* c.d.e.* • Border routers maintain membership info. as part of per-prefix state in BGP RIB AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V
a.b*.* a.b*.* a.b*.* a.b*.* a.b*.* a.b*.* a.b*.* a.b*.* {G1} {G1} {G1} {G1} {G1} {G1} {G1} {G1} Group Membership Discovery • BGP disseminates membership change AS X AS Y a.b.*.* c.d.e.* • Border routers maintain membership info. as part of per-prefix state in BGP RIB AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V
a.b*.* {G1} Group Membership Discovery • BGP disseminates membership change AS X AS Y a.b.*.* c.d.e.* • Border routers maintain membership info. as part of per-prefix state in BGP RIB AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V
Group Membership Discovery • Domains Y and Z join G1 AS X AS Y a.b.*.* c.d.e.* AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS AS V V
c.d.e.* f.g.*.* {G1} {G1} Group Membership Discovery • Domains Y and Z join G1 AS X AS Y a.b.*.* c.d.e.* AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V
c.d.e.* f.g.*.* {G1} {G1} Group Membership Discovery • Domains Y and Z join G1 AS X AS Y a.b.*.* c.d.e.* AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V
Packet Forwarding AS X AS Y a.b.*.* c.d.e.* AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R AS V Domain V: Send(G1, Pkt)
Packet Forwarding Dissemination tree AS X AS Y a.b.*.* c.d.e.* AS P AS Z T AS h.i.*.* f.g.*.* AS Q AS R {G1 } Lookup AS V Domain V: Send(G1, Pkt)
Packet Forwarding Dissemination tree AS X AS Y a.b.*.* c.d.e.* V AS P Q AS Z T AS P h.i.*.* f.g.*.* AS Q AS R X {G1 } Lookup AS V Domain V: Send(G1, Pkt)
Packet Forwarding Dissemination tree AS X AS Y a.b.*.* c.d.e.* V AS P Q AS Z T AS P h.i.*.* f.g.*.* AS Q AS R X Y {G1 } Lookup AS V Domain V: Send(G1, Pkt)
Packet Forwarding Dissemination tree AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y {G1 } Lookup AS V Domain V: Send(G1, Pkt)
Packet Forwarding Dissemination tree AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y {G1 } Lookup AS V Domain V: Send(G1, Pkt)
G1 G1 SubtreeQ SubtreeR Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y SubtreeQ SubtreeR AS V Domain V: Send(G1, Pkt) • V forwards packet to its children on the tree, attaches encoding the subtree in a “shim” header
G1 G1 SubtreeR SubtreeQ Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y AS V Domain V: Send(G1, Pkt) • V forwards packet to its children on the tree, attaches encoding the subtree in a “shim” header
G1 G1 SubtreeQ SubtreeR Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y AS V • Transit routers inspect FRM header, forward packet to their children on the tree Domain V: Send(G1, Pkt)
G1 G1 SubtreeQ SubtreeR Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* No AS Q AS R X Y AS V • Transit routers inspect FRM header, forward packet to their children on the tree Domain V: Send(G1, Pkt)
G1 G1 SubtreeR SubtreeQ Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y No AS V • Transit routers inspect FRM header, forward packet to their children on the tree Domain V: Send(G1, Pkt)
G1 G1 SubtreeR SubtreeQ Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R Yes AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y AS V • Transit routers inspect FRM header, forward packet to their children on the tree Domain V: Send(G1, Pkt)
G1 G1 G1 SubtreeR SubtreeQ TREE_BFQ Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y AS V • Transit routers inspect FRM header, forward packet to their children on the tree Domain V: Send(G1, Pkt)
G1 SubtreeR Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y AS V • Transit routers inspect FRM header, forward packet to their children on the tree Domain V: Send(G1, Pkt)
G1 SubtreeR Packet Forwarding AS X AS Y a.b.*.* c.d.e.* V AS P Q R AS Z T AS P Z h.i.*.* f.g.*.* AS Q AS R X Y AS V • Transit routers inspect FRM header, forward packet to their children on the tree Domain V: Send(G1, Pkt)
FRM Details • Encoding group membership • Border routers encode locally active groups using a Bloom filter • Transmit encoding using a new path attribute in BGP UPDATE message • Encoding the dissemination tree • Encode edges into a shim header using a Bloom filter • Tree computation is expensive Border routers maintain shim header cache
Talk Outline • Free Riding Multicast (FRM) • Approach overview • Overhead evaluation • Router storage requirements • Forwarding bandwidth overhead (in paper) • Design tradeoffs • Implementation
FRM Overhead – Router Storage AS X AS Y a.b.*.* c.d.e.* AS P Transit router AS Z T AS Transit forwarding state (per-neighbor, line card memory) h.i.*.* f.g.*.* AS Q AS R AS V Origin border router 1. Source forwarding state (per-group, line card memory) 2. Group membership state(per-prefix, BGP RIB)
FRM Overhead – Router Storage AS X AS Y a.b.*.* c.d.e.* AS P Transit router AS Z T AS Transit forwarding state (per-neighbor, line card memory) h.i.*.* f.g.*.* AS Q AS R AS V Origin border router 1. Source forwarding state (per-group, line card memory) 2. Group membership state(per-prefix, BGP RIB)
Forwarding State (Source Border Router) • A -- number of groups with sources in the local domain • Zipfian group popularity with a minimum of 8 domains per group • 25 groups have members in every domain (global broadcast) 256 MB of line card memory enables fast-path forwarding for ~200000 active groups
FRM Overhead – Router Storage AS X AS Y a.b.*.* c.d.e.* AS P Transit router AS Z T AS Transit forwarding state (per-neighbor, line card memory) h.i.*.* f.g.*.* AS Q AS R AS V Origin border router 1. Source forwarding state (per-group, line card memory) 2. Group membership state(per-prefix, BGP RIB)
Group Membership State Requirements • Total of A multicast groups • Domains of prefix length phave 232-pusers • Each user chooses and joins k distinct groups from A • 10 false positives per prefix allowed 1M simultaneously active groups and 10 groups per user require~3GBof route processor memory (not on the fast path)
FRM Overhead – Router Storage AS X AS Y a.b.*.* c.d.e.* AS P Transit router AS Z T AS Transit forwarding state (per-neighbor, line card memory) h.i.*.* f.g.*.* AS Q AS R AS V Origin border router 1. Source forwarding state (per-group, line card memory) 2. Group membership state(per-prefix, BGP RIB)
Forwarding State (Transit Router) • Number of forwarding entries = number of neighbor ASes • Independent of number of groups! • 90% of ASes: 10 forwarding entries • 99% of ASes: 100 forwarding entries • Worst case: 2400 forwarding entries AS P T AS ? ? AS Q ? AS V
Talk Outline • Free Riding Multicast (FRM) • Approach overview • Overhead evaluation • Design tradeoffs • Implementation
FRM Design Tradeoffs • Protocol simplicity • Can be implemented as a straightforward extension to BGP • Centralized route construction (tree is computed at source border router from existing unicast routes)
FRM Design Tradeoffs • Protocol simplicity • Can be implemented as a straightforward extension to BGP • Centralized route construction (tree is computed at source border router from existing unicast routes) • Ease of configuration • Avoid rendezvous point selection
FRM Design Tradeoffs • Protocol simplicity • Can be implemented as a straightforward extension to BGP • Centralized route construction (tree is computed at source border router from existing unicast routes) • Ease of configuration • Avoid rendezvous point selection • Enables ISP control over sources/subscribers • To block traffic for an undesired group, drop it from BGP advertisement • Source controls dissemination tree facilitates source-based charging [Express].
FRM Design Tradeoffs • Group membership state maintenance • Membership information disseminated more widely
FRM Design Tradeoffs • Group membership state maintenance • Membership information disseminated more widely • Nontrivial bandwidth overhead (see paper for results) • Per-packet shim header • Redundant packet transmissions
FRM Design Tradeoffs • Group membership state maintenance • Membership information disseminated more widely • Nontrivial bandwidth overhead (see paper for results) • Per-packet shim header • Redundant packet transmissions • New packet forwarding techniques • Full scan of the BGP RIB at source border router • Bloom filter lookups at transit routers • Group membership state maintenance • Membership information disseminated more widely
FRM Implementation • A proof-of-concept prototype on top of Linux 2.4 and the eXtensible Open Router Platform (http://www.xorp.org). • Functional components: • FRM kernel module (3.5 KLOC of new Linux kernel code) • Interfaces with the Linux kernel IP layer and implements the packet forwarding plane • FRM user-level component (1.9 KLOC of new code) • Extension to the XORP BGP daemon • Implements tree construction and group membership state dissemination • Configuration and management tools (1.4 KLOC of new code)