
<p>Multicast Routing </p><p>•ꢀ Unicast: one source to one destination •ꢀ Multicast: one source to many destinations •ꢀ Two main functions: </p><p>•ꢀ Efficient data distribution •ꢀ Logical naming of a group </p><p>15-744: Computer Networking </p><p>L-20 Multicast </p><p>2</p><p></p><ul style="display: flex;"><li style="flex:1">Example Applications </li><li style="flex:1">Overview </li></ul><p></p><p>•ꢀ IP Multicast Service Basics </p><p>•ꢀ Broadcast audio/video •ꢀ Push-based systems •ꢀ Software distribution •ꢀ Web-cache updates </p><p>•ꢀ Multicast Routing Basics •ꢀ Overlay Multicast •ꢀ Reliability </p><p>•ꢀ Teleconferencing (audio, video, shared whiteboard, text editor) <br>•ꢀ Multi-player games •ꢀ Server/service location •ꢀ Other distributed applications </p><p>•ꢀ Congestion Control </p><p></p><ul style="display: flex;"><li style="flex:1">3</li><li style="flex:1">4</li></ul><p></p><p>1</p><p></p><ul style="display: flex;"><li style="flex:1">IP Multicast Architecture </li><li style="flex:1">Multicast – Efficient Data Distribution </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">Src </li><li style="flex:1">Src </li></ul><p></p><p><strong>Service model </strong></p><p>Hosts </p><p>Host-to-router protocol <br>(IGMP) </p><p>Routers </p><p>Multicast routing protocols <br>(various) </p><p></p><ul style="display: flex;"><li style="flex:1">5</li><li style="flex:1">6</li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">Multicast Router Responsibilities </li><li style="flex:1">IP Multicast Service Model (rfc1112) </li></ul><p></p><p>•ꢀ Each group identified by a single IP address •ꢀ Groups may be of any size •ꢀ Members of groups may be located anywhere in </p><p>•ꢀ Learn of the existence of multicast groups <br>(through advertisement) </p><p>•ꢀ Identify links with group members </p><p>the Internet </p><p>•ꢀ Establish state to route packets </p><p>•ꢀ Replicate packets on appropriate interfaces •ꢀ Routing entry: <br>•ꢀ Members of groups can join and leave at will •ꢀ Senders need not be members •ꢀ Group membership not known explicitly •ꢀ Analogy: </p><p></p><ul style="display: flex;"><li style="flex:1">Src, incoming interface </li><li style="flex:1">List of outgoing interfaces </li></ul><p></p><p>•ꢀ Each multicast address is like a radio frequency, on which anyone can transmit, and to which anyone can tune-in. </p><p></p><ul style="display: flex;"><li style="flex:1">7</li><li style="flex:1">8</li></ul><p></p><p>2</p><p></p><ul style="display: flex;"><li style="flex:1">IP Multicast Addresses </li><li style="flex:1">Multicast Scope Control – Small TTLs </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">•ꢀ Class D IP addresses </li><li style="flex:1">•ꢀ TTL expanding-ring search to reach or find </li></ul><p>a nearby subset of a group </p><p>•ꢀ 224.0.0.0 – 239.255.255.255 </p><p></p><ul style="display: flex;"><li style="flex:1">1 1 1 0 </li><li style="flex:1">Group ID </li></ul><p>s</p><p>•ꢀ How to allocated these addresses? </p><p>1</p><p>•ꢀ Well-known multicast addresses, assigned by IANA </p><p>2</p><p>•ꢀ Transient multicast addresses, assigned and reclaimed dynamically, e.g., by “sdr” program </p><p>3</p><p></p><ul style="display: flex;"><li style="flex:1">9</li><li style="flex:1">11 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">Multicast Scope Control – Large TTLs </li><li style="flex:1">Overview </li></ul><p></p><p>•ꢀ Administrative TTL Boundaries to keep multicast traffic within an administrative domain, e.g., for privacy or resource reasons </p><p>•ꢀ IP Multicast Service Basics </p><p>•ꢀ Multicast Routing Basics </p><p>•ꢀ Overlay Multicast •ꢀ Reliability </p><p>The rest of the Internet </p><p>TTL threshold set on interfaces to these links, greater than the diameter of the admin. domain </p><p>•ꢀ Congestion Control </p><p>An administrative domain </p><p></p><ul style="display: flex;"><li style="flex:1">12 </li><li style="flex:1">13 </li></ul><p></p><p>3</p><p></p><ul style="display: flex;"><li style="flex:1">IP Multicast Architecture </li><li style="flex:1">Multicast Routing </li></ul><p></p><p>•ꢀ Basic objective – build distribution tree for </p><p>Service model </p><p>multicast packets </p><p>Hosts </p><p>•ꢀ Multicast service model makes it hard </p><p>•ꢀ Anonymity </p><p>Host-to-router protocol <br>(IGMP) </p><p>Routers </p><p>•ꢀ Dynamic join/leave </p><p><strong>Multicast routing protocols </strong><br><strong>(various) </strong></p><p></p><ul style="display: flex;"><li style="flex:1">14 </li><li style="flex:1">15 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">Shared vs. Source-based Trees </li><li style="flex:1">Source-based Trees </li></ul><p></p><p>•ꢀ Source-based trees </p><p>Router <br>S</p><p>R</p><p>Source </p><p>•ꢀ Separate shortest path tree for each sender </p><p>Receiver </p><p>•ꢀ DVMRP, MOSPF, PIM-DM, PIM-SM </p><p>R<br>R</p><p>•ꢀ Shared trees </p><p>•ꢀ Single tree shared by all members •ꢀ Data flows on same tree regardless of sender •ꢀ CBT, PIM-SM </p><p>R</p><p>S<br>S</p><p>R</p><p></p><ul style="display: flex;"><li style="flex:1">16 </li><li style="flex:1">17 </li></ul><p></p><p>4</p><p></p><ul style="display: flex;"><li style="flex:1">Shared Tree </li><li style="flex:1">Shared vs. Source-Based Trees </li></ul><p></p><p>•ꢀ Source-based trees </p><p>Router </p><p>•ꢀ Shortest path trees – low delay, better load distribution •ꢀ More state at routers (per-source state) •ꢀ Efficient for in dense-area multicast </p><p>S</p><p>R</p><p>Source Receiver </p><p>R<br>R</p><p>•ꢀ Shared trees </p><p>•ꢀ Higher delay (bounded by factor of 2), traffic concentration </p><p>RP </p><p>R</p><p>S</p><p>•ꢀ Choice of core affects efficiency •ꢀ Per-group state at routers </p><p>S</p><p>•ꢀ Efficient for sparse-area multicast </p><p>R</p><p>•ꢀ Which is better? ꢀ extra state in routers is bad! </p><p></p><ul style="display: flex;"><li style="flex:1">18 </li><li style="flex:1">19 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">Routing Techniques </li><li style="flex:1">Routing Techniques </li></ul><p></p><p>•ꢀ Flood and prune </p><p>•ꢀ Core based protocols </p><p>•ꢀ Begin by flooding traffic to entire network •ꢀ Prune branches with no receivers •ꢀ Examples: DVMRP, PIM-DM </p><p>•ꢀ Specify “meeting place” aka core •ꢀ Sources send initial packets to core •ꢀ Receivers join group at core </p><p>•ꢀ <em>Unwanted state where there are no receivers </em></p><p></p><ul style="display: flex;"><li style="flex:1">•ꢀ Requires mapping between multicast group </li><li style="flex:1">•ꢀ Link-state multicast protocols </li></ul><p></p><p>address and “meeting place” </p><p>•ꢀ Routers advertise groups for which they have receivers to entire network <br>•ꢀ Compute trees on demand </p><p>•ꢀ Examples: CBT, PIM-SM </p><p>•ꢀ Example: MOSPF </p><p>•ꢀ <em>Unwanted state where there are no senders </em></p><p></p><ul style="display: flex;"><li style="flex:1">20 </li><li style="flex:1">21 </li></ul><p></p><p>5</p><p></p><ul style="display: flex;"><li style="flex:1">Distance-Vector Multicast Routing </li><li style="flex:1">Example Topology </li></ul><p></p><p>•ꢀ DVMRP consists of two major components: </p><p></p><ul style="display: flex;"><li style="flex:1">G</li><li style="flex:1">G</li></ul><p></p><p>•ꢀ A conventional distance-vector routing protocol <br>(like RIP) <br>•ꢀ A protocol for determining how to forward multicast packets, based on the routing table </p><p>•ꢀ DVMRP router forwards a packet if </p><p>S</p><p>•ꢀ The packet arrived from the link used to reach the source of the packet (reverse path forwarding check – RPF) <br>•ꢀ If downstream links have not pruned the tree </p><p>G</p><p></p><ul style="display: flex;"><li style="flex:1">22 </li><li style="flex:1">23 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">Broadcast with Truncation </li><li style="flex:1">Prune </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">G</li><li style="flex:1">G</li><li style="flex:1">G</li><li style="flex:1">G</li></ul><p></p><p><em>Prune (s,g) </em><br><em>Prune (s,g) </em></p><p></p><ul style="display: flex;"><li style="flex:1">S</li><li style="flex:1">S</li></ul><p></p><ul style="display: flex;"><li style="flex:1">G</li><li style="flex:1">G</li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">24 </li><li style="flex:1">25 </li></ul><p></p><p>6</p><p>Graft <br>Steady State </p><p></p><ul style="display: flex;"><li style="flex:1">G</li><li style="flex:1">G</li></ul><p></p><ul style="display: flex;"><li style="flex:1">G</li><li style="flex:1">G</li></ul><p></p><ul style="display: flex;"><li style="flex:1">G</li><li style="flex:1">G</li></ul><p></p><p><em>Report (g) </em><br><em>Graft (s,g) </em><br><em>Graft (s,g) </em></p><p></p><ul style="display: flex;"><li style="flex:1">S</li><li style="flex:1">S</li></ul><p>G<br>G</p><p>26 </p><p>27 </p><p></p><ul style="display: flex;"><li style="flex:1">Overview </li><li style="flex:1">Supporting Multicast on the Internet </li></ul><p></p><p>•ꢀ IP Multicast Service Basics •ꢀ Multicast Routing Basics </p><p>•ꢀ Overlay Multicast </p><p>Application </p><p><strong>?</strong></p><p>At which layer should multicast be implemented? </p><p><strong>?</strong></p><p>IP </p><p>•ꢀ Reliability </p><p>Network </p><p>•ꢀ Congestion Control </p><p>Internet architecture </p><p></p><ul style="display: flex;"><li style="flex:1">28 </li><li style="flex:1">29 </li></ul><p></p><p>7</p><p></p><ul style="display: flex;"><li style="flex:1">IP Multicast </li><li style="flex:1">End System Multicast </li></ul><p></p><p>MIT1 <br>MIT </p><p>MIT <br>Berkeley </p><p>UCSD <br>Berkeley <br>UCSD <br>MIT2 CMU1 <br>CMU </p><p>routers end systems multicast flow </p><p>CMU <br>CMU2 <br>Berkeley </p><p>MIT1 </p><p><strong>Overlay Tree </strong></p><p>MIT2 <br>UCSD </p><p>•ꢀ Highly efficient </p><p>CMU1 <br>CMU2 </p><p>•ꢀ Good delay </p><p></p><ul style="display: flex;"><li style="flex:1">30 </li><li style="flex:1">31 </li></ul><p></p><p>Potential Benefits Over IP Multicast <br>Concerns with End System Multicast </p><p>•ꢀ Self-organize recipients into multicast delivery </p><p>•ꢀ Quick deployment </p><p>overlay tree </p><p>•ꢀ All multicast state in end systems </p><p>•ꢀ Must be closely matched to real network topology to be efficient </p><p>•ꢀ Performance concerns compared to IP Multicast </p><p>•ꢀ Increase in delay </p><p>•ꢀ Computation at forwarding points simplifies support for higher level functionality </p><p>MIT1 <br>MIT </p><p>•ꢀ Bandwidth waste (packet duplication) </p><p>Berkeley </p><p></p><ul style="display: flex;"><li style="flex:1">MIT1 </li><li style="flex:1">MIT1 </li></ul><p>Berkeley <br>Berkeley </p><p>MIT2 <br>UCSD </p><p>UCSD <br>MIT2 <br>MIT2 <br>UCSD </p><p>CMU1 </p><p>CMU1 </p><p>CMU1 </p><p>CMU </p><p></p><ul style="display: flex;"><li style="flex:1">End System Multicast </li><li style="flex:1">IP Multicast </li></ul><p></p><p>CMU2 <br>CMU2 </p><p>CMU2 </p><p></p><ul style="display: flex;"><li style="flex:1">32 </li><li style="flex:1">33 </li></ul><p></p><p>8</p><p></p><ul style="display: flex;"><li style="flex:1">Overview </li><li style="flex:1">Implosion </li></ul><p></p><p>•ꢀ IP Multicast Service Basics </p><p></p><ul style="display: flex;"><li style="flex:1">Packet 1 is lost </li><li style="flex:1">All 4 receivers request a resend </li></ul><p></p><p>Resend request </p><p></p><ul style="display: flex;"><li style="flex:1">S</li><li style="flex:1">S</li></ul><p></p><p>•ꢀ Multicast Routing Basics •ꢀ Overlay Multicast </p><p>•ꢀ Reliability </p><p>1 2 </p><p></p><ul style="display: flex;"><li style="flex:1">R1 </li><li style="flex:1">R1 </li></ul><p></p><ul style="display: flex;"><li style="flex:1">R2 </li><li style="flex:1">R2 </li></ul><p></p><p>•ꢀ Congestion Control </p><p></p><ul style="display: flex;"><li style="flex:1">R3 </li><li style="flex:1">R4 </li><li style="flex:1">R3 </li><li style="flex:1">R4 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">34 </li><li style="flex:1">35 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">Retransmission </li><li style="flex:1">Exposure </li></ul><p></p><p>Packet 1 does not reach R1; Receiver 1 requests a resend <br>Packet 1 resent to all 4 receivers </p><p>•ꢀ Re-transmitter </p><p>Resend request </p><p>•ꢀ Options: sender, other receivers </p><p>Resent packet </p><p></p><ul style="display: flex;"><li style="flex:1">S</li><li style="flex:1">S</li></ul><p></p><p>•ꢀ How to retransmit </p><p></p><ul style="display: flex;"><li style="flex:1">1 2 </li><li style="flex:1">1</li></ul><p></p><p>•ꢀ Unicast, multicast, scoped multicast, retransmission group, … </p><p>1</p><p></p><ul style="display: flex;"><li style="flex:1">R1 </li><li style="flex:1">R1 </li></ul><p></p><p>•ꢀ Problem: Exposure </p><p></p><ul style="display: flex;"><li style="flex:1">R2 </li><li style="flex:1">R2 </li></ul><p></p><ul style="display: flex;"><li style="flex:1">R3 </li><li style="flex:1">R4 </li><li style="flex:1">R3 </li><li style="flex:1">R4 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">36 </li><li style="flex:1">37 </li></ul><p></p><p>9</p><p>Scalable Reliable Multicast (SRM) <br>Ideal Recovery Model </p><p>Packet 1 reaches R1 but is lost before reaching other Receivers <br>Only one receiver sends NACK to the nearest S or R with packet </p><p>•ꢀ Originally designed for <em>wb </em></p><p>Resend request Resent packet </p><p>Repair sent only to </p><p>•ꢀ Receiver-reliable </p><p></p><ul style="display: flex;"><li style="flex:1">S</li><li style="flex:1">S</li></ul><p></p><p>those that need packet </p><p></p><ul style="display: flex;"><li style="flex:1">1 2 </li><li style="flex:1">1</li></ul><p></p><p>•ꢀ NACK-based </p><p>•ꢀ Every member may multicast NACK or </p><p></p><ul style="display: flex;"><li style="flex:1">R1 </li><li style="flex:1">R1 </li></ul><p></p><p>retransmission </p><p>1</p><p></p><ul style="display: flex;"><li style="flex:1">R2 </li><li style="flex:1">R2 </li></ul><p></p><ul style="display: flex;"><li style="flex:1">R3 </li><li style="flex:1">R4 </li><li style="flex:1">R3 </li><li style="flex:1">R4 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">38 </li><li style="flex:1">39 </li></ul><p></p><p>SRM Request Suppression <br>Deterministic Suppression </p><p></p><ul style="display: flex;"><li style="flex:1">Packet 1 is lost; R1 requests </li><li style="flex:1">Packet 1 is resent; R2 and R3 no </li></ul><p></p><ul style="display: flex;"><li style="flex:1">longer have to request a resend </li><li style="flex:1">resend to Source and Receivers </li></ul><p></p><p>3d </p><p>Time </p><p>Resend request <br>Resent packet </p><p></p><ul style="display: flex;"><li style="flex:1">S</li><li style="flex:1">S</li></ul><p></p><p>ddata <br>2d </p><p></p><ul style="display: flex;"><li style="flex:1">1 2 </li><li style="flex:1">1</li></ul><p></p><p>X</p><p>dd</p><p></p><ul style="display: flex;"><li style="flex:1">R1 </li><li style="flex:1">R1 </li></ul><p></p><p>dd</p><ul style="display: flex;"><li style="flex:1">repair </li><li style="flex:1">nack </li></ul><p>= Sender <br>3d </p><p></p><ul style="display: flex;"><li style="flex:1">R2 </li><li style="flex:1">R2 </li></ul><p></p><p>= Repairer = Requestor </p><p>X</p><p>4d d</p><p>Delay = C<sub style="top: 0.1948em;">1</sub>ꢀd<sub style="top: 0.1948em;">S,R </sub><br>Delay varies </p><p>by distance </p><ul style="display: flex;"><li style="flex:1">R3 </li><li style="flex:1">R3 </li></ul><p></p><p>X</p><p></p><ul style="display: flex;"><li style="flex:1">40 </li><li style="flex:1">41 </li></ul><p></p><p>10 </p><p>SRM Star Topology </p><p>Packet 1 is lost; All Receivers request resends </p><p>SRM: Stochastic Suppression </p><p>Packet 1 is resent to all Receivers </p><p>0</p><p>Time </p><p>Resend request <br>Resent packet </p><p></p><ul style="display: flex;"><li style="flex:1">S</li><li style="flex:1">S</li></ul><p></p><p>ddata </p><p></p><ul style="display: flex;"><li style="flex:1">1 2 </li><li style="flex:1">1</li></ul><p></p><p>1d</p><p>X</p><p>repair </p><p>session msg d</p><p>d<br>2<br>NACK <br>3<br>2d </p><p></p><ul style="display: flex;"><li style="flex:1">R2 </li><li style="flex:1">R3 </li><li style="flex:1">R4 </li><li style="flex:1">R2 </li><li style="flex:1">R3 </li><li style="flex:1">R4 </li></ul><p></p><p>= Sender </p><p>Delay = U[0,D<sub style="top: 0.1948em;">2</sub>] ꢀd<sub style="top: 0.1948em;">S,R </sub></p><p>= Repairer = Requestor </p><p>Delay is same length </p><p></p><ul style="display: flex;"><li style="flex:1">42 </li><li style="flex:1">43 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">SRM (Summary) </li><li style="flex:1">Overview </li></ul><p></p><p>•ꢀ IP Multicast Service Basics •ꢀ Multicast Routing Basics •ꢀ Overlay Multicast </p><p>•ꢀ NACK/Retransmission suppression </p><p>•ꢀ Delay before sending •ꢀ Delay based on RTT estimation •ꢀ Deterministic + Stochastic components </p><p>•ꢀ Periodic session messages </p><p>•ꢀ Full reliability </p><p>•ꢀ Reliability </p><p>•ꢀ Estimation of distance matrix among members </p><p>•ꢀ Congestion Control </p><p></p><ul style="display: flex;"><li style="flex:1">44 </li><li style="flex:1">45 </li></ul><p></p><p>11 </p><p></p><ul style="display: flex;"><li style="flex:1">Multicast Congestion Control </li><li style="flex:1">Video Adaptation: RLM </li></ul><p></p><p>•ꢀ What if receivers have very <br>•ꢀ Receiver-driven Layered Multicast •ꢀ Layered video encoding </p><p>100Mb/s </p><p>different bandwidths? <br>•ꢀ Each layer uses its own mcast group •ꢀ On spare capacity, receivers add a layer •ꢀ On congestion, receivers drop a layer •ꢀ Join experiments used for shared learning </p><p>100Mb/s </p><p>R<br>S</p><p>•ꢀ Send at max? </p><p>R</p><p>1Mb/s <br>???Mb/s </p><p>•ꢀ Send at min? </p><p>1Mb/s </p><p>R</p><p>•ꢀ Send at avg? </p><p>R</p><p>56Kb/s </p><p></p><ul style="display: flex;"><li style="flex:1">46 </li><li style="flex:1">47 </li></ul><p></p><p>Layered Media Streams <br>Drop Policies for Layered Multicast </p><p>•ꢀ Priority </p><p>R1 joins layer 1, joins layer 2 joins layer 3 </p><p>•ꢀ Packets for low bandwidth layers are kept, drop queued packets for higher layers </p><p>R2 <br>10Mbps <br>R1 </p><p>•ꢀ Requires router support </p><p>10Mbps </p><p>•ꢀ Uniform (e.g., drop tail, RED) </p><p>R2 join layer 1, join layer 2 fails at layer 3 </p><p>512Kbps <br>S<br>R</p><p>•ꢀ Packets arriving at congested router are dropped regardless of their layer </p><p>R<br>10Mbps </p><p>128Kbps </p><p>•ꢀ Which is better? </p><p>R3 </p><p>R3 joins layer 1, fails at layer 2 </p><p></p><ul style="display: flex;"><li style="flex:1">48 </li><li style="flex:1">49 </li></ul><p></p><p>12 </p><p></p><ul style="display: flex;"><li style="flex:1">RLM Intuition </li><li style="flex:1">RLM Intuition </li></ul><p></p><p>•ꢀ Uniform </p><p>•ꢀ Better incentives to well-behaved users •ꢀ If oversend, performance rapidly degrades •ꢀ Clearer congestion signal •ꢀ Allows shared learning </p><p>•ꢀ Priority </p><p>•ꢀ Can waste upstream resources •ꢀ Hard to deploy </p><p>•ꢀ RLM approaches optimal operating point </p><p>•ꢀ Uniform is already deployed •ꢀ Assume no special router support </p><p></p><ul style="display: flex;"><li style="flex:1">50 </li><li style="flex:1">51 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">RLM Join Experiment </li><li style="flex:1">Join Experiments </li></ul><p></p><p>•ꢀ Receivers periodically try subscribing to higher layer </p><p>Layer <br>4</p><p>•ꢀ If enough capacity, no congestion, no drops </p><p>ꢀ Keep layer (& try next layer) </p><p>32</p><p>•ꢀ If not enough capacity, congestion, drops </p><p>ꢀ Drop layer (& increase time to next retry) </p><p>•ꢀ What about impact on other receivers? </p><p>1<br>Time </p><p></p><ul style="display: flex;"><li style="flex:1">52 </li><li style="flex:1">53 </li></ul><p></p><p>13 </p><p>RLM Scalability? </p><p>•ꢀ What happens with more receivers? •ꢀ Increased frequency of experiments? </p><p>•ꢀ More likely to conflict (false signals) •ꢀ Network spends more time congested </p><p>•ꢀ Reduce # of experiments per host? </p><p>•ꢀ Takes longer to converge </p><p>•ꢀ Receivers coordinate to improve behavior </p><p>54 </p><p>14 </p>
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages14 Page
-
File Size-