Multicast
description
Transcript of Multicast
Multicast
An Engineering Approach to Computer NetworkingAn Engineering Approach to Computer Networking
Multicast routing
Unicast: single source sends to a single destinationUnicast: single source sends to a single destination Multicast: hosts are part of a Multicast: hosts are part of a multicast groupmulticast group
packet sent by packet sent by anyany member of a group are received by member of a group are received by allall Efficiency and Logical AddressingEfficiency and Logical Addressing
Useful forUseful for multiparty videoconferencemultiparty videoconference distance learningdistance learning resource locationresource location
Multicast group
Associates a set of senders and receivers with each otherAssociates a set of senders and receivers with each other but independent of thembut independent of them created either when a sender starts sending from a groupcreated either when a sender starts sending from a group or a receiver expresses interest in receivingor a receiver expresses interest in receiving even if no one else is there!even if no one else is there!
Sender does not need to know receivers’ identitiesSender does not need to know receivers’ identities rendezvous pointrendezvous point
Addressing
Multicast group in the Internet has its own Class D addressMulticast group in the Internet has its own Class D address looks like a host address, but isn’tlooks like a host address, but isn’t
Senders send to the addressSenders send to the address Receivers anywhere in the world request packets from that Receivers anywhere in the world request packets from that
addressaddress ““Magic” is in associating the two: Magic” is in associating the two: dynamic directory servicedynamic directory service Four problemsFour problems
which groups are currently activewhich groups are currently active how to express interest in joining a grouphow to express interest in joining a group discovering the set of receivers in a groupdiscovering the set of receivers in a group delivering data to members of a groupdelivering data to members of a group
Expanding ring search
A way to use multicast groups for resource discoveryA way to use multicast groups for resource discovery Routers decrement TTL when forwardingRouters decrement TTL when forwarding Sender sets TTL and multicastsSender sets TTL and multicasts
reaches all receivers <= TTL hops awayreaches all receivers <= TTL hops away Discovers local resources firstDiscovers local resources first Since heavily loaded servers can keep quiet, automatically Since heavily loaded servers can keep quiet, automatically
distributes loaddistributes load
Multicast flavors
Unicast: point to pointUnicast: point to point Multicast:Multicast:
point to multipointpoint to multipoint multipoint to multipointmultipoint to multipoint
Can simulate point to multipoint by a set of point to point Can simulate point to multipoint by a set of point to point unicastsunicasts
Can simulate multipoint to multipoint by a set of point to Can simulate multipoint to multipoint by a set of point to multipoint multicastsmultipoint multicasts
The difference is efficiencyThe difference is efficiency
Example
Suppose A wants to talk to B, G, H, I, B to A, G, H, ISuppose A wants to talk to B, G, H, I, B to A, G, H, I With unicast, 4 messages sent from each sourceWith unicast, 4 messages sent from each source
links AC, BC carry a packet in triplicatelinks AC, BC carry a packet in triplicate With point to multipoint multicast, 1 message sent from each sourceWith point to multipoint multicast, 1 message sent from each source
but requires establishment of two separate multicast groupsbut requires establishment of two separate multicast groups With multipoint to multipoint multicast, 1 message sent from each With multipoint to multipoint multicast, 1 message sent from each
source, source, single multicast groupsingle multicast group
Shortest path tree
Ideally, want to send exactly one multicast packet per linkIdeally, want to send exactly one multicast packet per link forms a forms a multicast treemulticast tree rooted at sender rooted at sender
Optimal multicast tree provides Optimal multicast tree provides shortestshortest path from sender to path from sender to every receiverevery receiver shortest-path shortest-path tree rooted at sendertree rooted at sender
Issues in wide-area multicast
Difficult becauseDifficult because sources may join and leave dynamicallysources may join and leave dynamically
need to dynamically update shortest-path treeneed to dynamically update shortest-path tree leaves of tree are often members of broadcast LANleaves of tree are often members of broadcast LAN
would like to exploit LAN broadcast capabilitywould like to exploit LAN broadcast capability
would like a receiver to join or leave without explicitly notifying would like a receiver to join or leave without explicitly notifying sendersender otherwise it will not scaleotherwise it will not scale
Multicast in a broadcast LAN
Wide area multicast can exploit a LAN’s broadcast capabilityWide area multicast can exploit a LAN’s broadcast capability E.g. Ethernet will multicast all packets with multicast bit set on E.g. Ethernet will multicast all packets with multicast bit set on
destination addressdestination address
Two problems:Two problems: what multicast MAC address corresponds to a given Class D what multicast MAC address corresponds to a given Class D
IP address?IP address? does the LAN have contain any members for a given group does the LAN have contain any members for a given group
(why do we need to know this?)(why do we need to know this?)
Class D to MAC translation
Multiple Class D addresses map to the same MAC addressMultiple Class D addresses map to the same MAC address Well-known translation algorithm => no need for a translation Well-known translation algorithm => no need for a translation
tabletable
01 00 5E
23 bits copied from IP address
IEEE 802 MAC Address
Class D IP address
Ignored‘1110’ = Class D indication
Multicast bit Reserved bit
Internet Group Management Protocol
Detects if a LAN has any members for a particular groupDetects if a LAN has any members for a particular group If no members, then we can If no members, then we can pruneprune the shortest path tree for the shortest path tree for
that group by telling parentthat group by telling parent Router periodically broadcasts a Router periodically broadcasts a query query messagemessage Hosts reply with the list of groups they are interested inHosts reply with the list of groups they are interested in To suppress trafficTo suppress traffic
reply after random timeoutreply after random timeout broadcast reply broadcast reply if someone else has expressed interest in a group, drop outif someone else has expressed interest in a group, drop out
To receive multicast packets:To receive multicast packets: translate from class D to MAC and configure adaptertranslate from class D to MAC and configure adapter
Wide area multicast
Assume Assume each endpoint is a router each endpoint is a router a router can use IGMP to discover all the members in its a router can use IGMP to discover all the members in its
LAN that want to subscribe to each multicast groupLAN that want to subscribe to each multicast group
GoalGoal distribute packets coming from any sender directed to a distribute packets coming from any sender directed to a
given group to all routers on the path to a group membergiven group to all routers on the path to a group member
Simplest solution
Flood packets from a source to entire networkFlood packets from a source to entire network If a router has not seen a packet before, forward it to all If a router has not seen a packet before, forward it to all
interfaces except the incoming oneinterfaces except the incoming one ProsPros
simplesimple always works!always works!
ConsCons routers receive duplicate packetsrouters receive duplicate packets detecting that a packet is a duplicate requires storage, which detecting that a packet is a duplicate requires storage, which
can be expensive for long multicast sessionscan be expensive for long multicast sessions
A clever solution
Reverse path forwardingReverse path forwarding RuleRule
forward packet from S to all interfaces if and only if packet forward packet from S to all interfaces if and only if packet arrives on the interface that corresponds to the shortest path arrives on the interface that corresponds to the shortest path toto S S
no need to remember past packetsno need to remember past packets C need not forward packet received from DC need not forward packet received from D
Cleverer Don’t send a packet downstream if you are not on the shortest Don’t send a packet downstream if you are not on the shortest
path from the downstream router to the sourcepath from the downstream router to the source How do you know that – one approach is RPB likeHow do you know that – one approach is RPB like
C need not forward packet from A to EC need not forward packet from A to E
Potential confusion if downstream router has a choice of Potential confusion if downstream router has a choice of shortest paths to source (see figure on previous slide)shortest paths to source (see figure on previous slide)
Pruning
RPF/B does not completely eliminate unnecessary RPF/B does not completely eliminate unnecessary transmissionstransmissions
B and C get packets even though they do not need itB and C get packets even though they do not need it Pruning => router tells parent in tree to stop forwarding Pruning => router tells parent in tree to stop forwarding
Can infer using routing tables (split horizon w/ poisonous Can infer using routing tables (split horizon w/ poisonous reverse) and membership reports reverse) and membership reports
Can be associated either with a multicast group or with a source Can be associated either with a multicast group or with a source and and groupgroup trades selectivity for router memory (#groups x #sources in trades selectivity for router memory (#groups x #sources in
group)group)
Rejoining
What if host on C’s LAN wants to receive messages from A after What if host on C’s LAN wants to receive messages from A after a previous prune by C?a previous prune by C? IGMP lets C know of host’s interestIGMP lets C know of host’s interest C can send a C can send a join(group, A) join(group, A) message to B, which propagates message to B, which propagates
it to Ait to A or, periodically flood a message; C refrains from pruningor, periodically flood a message; C refrains from pruning
DVMRP
Distance-vector Multicast routing protocolDistance-vector Multicast routing protocol Very similar to RIPVery similar to RIP
distance vectordistance vector hop count metrichop count metric
Used in conjunction withUsed in conjunction with flood-and-prune (to determine memberships)flood-and-prune (to determine memberships)
NMR/prunes store per-source and per-group information, NMR/prunes store per-source and per-group information, aging of NMRs, aging of NMRs,
reverse-path forwarding (to decide where to forward a reverse-path forwarding (to decide where to forward a packet)packet)
explicit cancel NMR messages to reduce join latency (but no explicit cancel NMR messages to reduce join latency (but no source info, so still need flooding) and handle topology source info, so still need flooding) and handle topology changeschanges
A problem
Reverse path forwarding requires a router to know shortest path Reverse path forwarding requires a router to know shortest path to a sourceto a source known from routing tableknown from routing table
Doesn’t work if some routers do not support multicastDoesn’t work if some routers do not support multicast virtual linksvirtual links between multicast-capable routers between multicast-capable routers shortest path to A from E is not C, but Fshortest path to A from E is not C, but F
A problem (contd.)
Two problemsTwo problems how to build virtual linkshow to build virtual links how to construct routing table for a network with virtual linkshow to construct routing table for a network with virtual links
Tunnels
Why do we need them?Why do we need them?
Consider packet sent from A to F via multicast-incapable DConsider packet sent from A to F via multicast-incapable D If packet’s destination is Class D, D drops itIf packet’s destination is Class D, D drops it If destination is F’s address, F doesn’t know multicast address!If destination is F’s address, F doesn’t know multicast address! So, put packet destination as F, but carry multicast address So, put packet destination as F, but carry multicast address
internallyinternally Encapsulate IP in IP => set protocol type to IP-in-IPEncapsulate IP in IP => set protocol type to IP-in-IP
Multicast routing protocol
Interface on “shortest path” to source depends on whether path Interface on “shortest path” to source depends on whether path is real or virtualis real or virtual
Shortest path from E to A is not through C, but FShortest path from E to A is not through C, but F so packets from F will be flooded, but not from Cso packets from F will be flooded, but not from C
Need to discover shortest paths only taking multicast-capable Need to discover shortest paths only taking multicast-capable routers into accountrouters into account DVMRPDVMRP
MOSPF
Multicast extension to OSPFMulticast extension to OSPF Routers flood group membership information with LSPsRouters flood group membership information with LSPs Each router independently computes shortest-path tree that Each router independently computes shortest-path tree that
only includes multicast-capable routersonly includes multicast-capable routers no need to flood and pruneno need to flood and prune
ComplexComplex interactions with external and summary recordsinteractions with external and summary records need storage per group per linkneed storage per group per link need to compute shortest path tree per source and groupneed to compute shortest path tree per source and group
Core-based trees
Problems with DVMRP-oriented approachProblems with DVMRP-oriented approach need to periodically flood and prune to determine group membersneed to periodically flood and prune to determine group members need to source per-source and per-group prune records at each need to source per-source and per-group prune records at each
routerrouter Charge routers not involved in multicastCharge routers not involved in multicast Dependence on similarity of multicast/unicast algorithms across Dependence on similarity of multicast/unicast algorithms across
Internet.Internet. Key idea with core-based treeKey idea with core-based tree
coordinate multicast with a coordinate multicast with a corecore router Each core router allowed 2^32 groups
host sends a join request to core router Name to (coreid,groupid) resolution via a directory service
routers along path mark incoming interface for forwarding
Example
ProsPros routers not part of a group are not involved in pruningrouters not part of a group are not involved in pruning explicit join/leave makes membership changes fasterexplicit join/leave makes membership changes faster router needs to store only one record per grouprouter needs to store only one record per group
ConsCons all multicast traffic traverses core, which is a bottleneckall multicast traffic traverses core, which is a bottleneck traffic travels on non-optimal paths (delay CBT/SPT <= 2, from Wall traffic travels on non-optimal paths (delay CBT/SPT <= 2, from Wall
1980. Simulations in Deering96 show 1.4)1980. Simulations in Deering96 show 1.4) Core placement ?Core placement ?
Protocol independent multicast (PIM) Tries to bring together best aspects of CBT and DVMRPTries to bring together best aspects of CBT and DVMRP DesiderataDesiderata
Efficient Sparse Group Support, Low delay data Efficient Sparse Group Support, Low delay data distribution, independence from underlying unicast, distribution, independence from underlying unicast, robustness to routing changes, interoperability with robustness to routing changes, interoperability with DVMRP/MOSPFDVMRP/MOSPF
Choose different strategies depending on whether multicast tree Choose different strategies depending on whether multicast tree is is densedense or or sparsesparse flood and prune good for dense groupsflood and prune good for dense groups
only need a few prunesonly need a few prunes CBT needs explicit join per source/groupCBT needs explicit join per source/group
CBT good for sparse groupsCBT good for sparse groups Dense mode PIM == DVMRPDense mode PIM == DVMRP Sparse mode PIM is similar to CBTSparse mode PIM is similar to CBT
but receivers can switch from CBT to a shortest-path treebut receivers can switch from CBT to a shortest-path tree
PIM basics
PIM basics
PIM (contd.)
In CBT, E must send to coreIn CBT, E must send to core In PIM, B discovers shorter path to E (by looking at unicast routing In PIM, B discovers shorter path to E (by looking at unicast routing
table)table) sends join message directly to Esends join message directly to E sends prune message towards coresends prune message towards core
Core no longer bottleneckCore no longer bottleneck Survives failure of coreSurvives failure of core
More PIM
rendezvous point rendezvous point is sort of like Core in CBTis sort of like Core in CBT because it no longer carries all the traffic like a CBT corebecause it no longer carries all the traffic like a CBT core
Rendezvous points periodically send “I am alive” messages Rendezvous points periodically send “I am alive” messages downstreamdownstream
Leaf routers set timer on receiptLeaf routers set timer on receipt If timer goes off, send a join request to alternative rendezvous If timer goes off, send a join request to alternative rendezvous
pointpoint ProblemsProblems
how to decide whether to use dense or sparse mode?how to decide whether to use dense or sparse mode? how to determine “best” rendezvous point?how to determine “best” rendezvous point?
Routing vs. policy routing
In standard routing, a packet is forwarded on the ‘best’ path to In standard routing, a packet is forwarded on the ‘best’ path to destinationdestination choice depends on load and link statuschoice depends on load and link status
With policy routing, routes are chosen depending on With policy routing, routes are chosen depending on policypolicy directives regarding things like directives regarding things like source and destination addresssource and destination address transit domains transit domains quality of servicequality of service time of daytime of day charging and accountingcharging and accounting
The general problem is still openThe general problem is still open fine balance between correctness and information hidingfine balance between correctness and information hiding
Multiple metrics
Simplest approach to policy routingSimplest approach to policy routing Advertise multiple costs per linkAdvertise multiple costs per link Routers construct multiple shortest path treesRouters construct multiple shortest path trees
Problems with multiple metrics
All routers must use the same rule in computing pathsAll routers must use the same rule in computing paths Remote routers may misinterpret policyRemote routers may misinterpret policy
source routing may solve thissource routing may solve this but introduces other problems (what?)but introduces other problems (what?)
Provider selection
Another simple approachAnother simple approach Assume that a single service provider provides almost all the Assume that a single service provider provides almost all the
path from source to destinationpath from source to destination e.g. AT&T or MCIe.g. AT&T or MCI
Then, choose policy simply by choosing providerThen, choose policy simply by choosing provider this could be dynamic (agents!)this could be dynamic (agents!)
In Internet, can use a loose source route through service In Internet, can use a loose source route through service provider’s access pointprovider’s access point
Or, multiple addresses/names per hostOr, multiple addresses/names per host
Crankback
Consider computing routes with QoS guaranteesConsider computing routes with QoS guarantees Router returns packet if no next hop with sufficient QoS can be Router returns packet if no next hop with sufficient QoS can be
foundfound In ATM networks (PNNI) used for the call-setup packet In ATM networks (PNNI) used for the call-setup packet In Internet, may need to be done for _every_ packet!In Internet, may need to be done for _every_ packet!
Will it work?Will it work?