15-744: Computer Networking Multicast Routing Example Applications Overview

15-744: Computer Networking Multicast Routing Example Applications Overview

<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 (&amp; try next layer) </p><p>32</p><p>•ꢀ If not enough capacity, congestion, drops </p><p>ꢀ Drop layer (&amp; 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>

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    14 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us