Introduction ► in tree-based multicast systems, a relatively small number of interior nodes carry the load of forwarding multicast messages. ► SplitStream: enables efficient cooperative distribution of high- bandwidth content in a peer-to-peer system. splits content into stripes and multicasts each stripe in a separate tree. peers join as many trees as there are stripes and specify an upper bound improved robustness to node failure and sudden node departures
SplitStream approach ► a participating node: leaf or interior node. ► splitting the multicast stream into multiple stripes ► use of separate multicast trees to distribute each stripe ► participating peers can control their inbound or outbound bandwidth requirements.
► Applications need to encode the content such that: each stripe requires approximately the same bandwidth the content can be reconstructed from any subset of the stripes of sufficient size (ex: media stream encoded using MDC, multicasting of file data with erasure coding) Control when to create and tear down a splitstream forest
SplitStream approach ► Notations: N – number of nodes, k – numbers of stripes I i – desired indegree, C i – forwarding capacity S – source nodes ► Conditions: 1 - the sum of the desired indegrees cannot exceed the sum of the forwarding capacities: ∑I i <= ∑C i 2 - Ci > Ii ⇒ Ii + Ti = k.
Background ► implementation using Pastry and Scribe. ► Pastry: scalable, self-organizing structured peer-to-peer overlay network nodes and objects are asigned random identifiers -> nodeIds and keys. routes the message to the node with the nodeId that is numerically closest to the key. each node maintains a routing table and a leaf set.
Background ► ► Scribe: application-level group communication system built upon Pastry groupId chosen for each multicast tree the multicast tree is formed by the union of the Pastry routes from each group member to root.
SplitStream design ► ► Building interior-node-disjoint trees: separate Scribe multicast tree for each stripe nodeIds of all interior nodes share some number of digits with the tree’s groupId condition is to choose groupIds for the trees that all differ in the most significant digit
► ► Limiting node degree: inbound bandwidth is proportional to the desired indegree Scribe has a built-in mechanism (called “push- down”) to limit a node’s outdegree ► ► Locating parents: the node adopts the prospective child regardless of the outdegree limit evaluates the new set of children and chooses one to reject
SplitStream design Cryterias: ► ► reject children in stripes whose stripeIds do not share a prefix with the node’s nodeID ► ► the child whose nodeId has the shortest prefix match with that stripeId
SplitStream design ► ► Spare capacity group: the orphan node sends an anycast message to the group members – nodes that have less children in stripe trees than their forwarding capacity conditions to take an orphan as a child: ► ► it is not an ancestor ► ► you receive the stripe needed by the child
SplitStream design Failure scenarios: ► ► the spare capacity group is empty ► ► if attaching the orphan to receive the stripe from any of the members causes a cycle ► ► no member of the spare capacity group provides any of the desired stripes.
EXPERIMENTAL EVALUATION ► ► Experimental setup: Network simulation: ► ► network simulator ► ► 3 network topologies: GATech, Mercator and CorpNet. SplitStream configuration: ► ► leaf set size with l = 16, number of stripes k = 16 ► ► six different configurations of node degree constraints: 16x16, 16x18, 16x32, 16xNB.
EXPERIMENTAL EVALUATION SplitStream implementation: 3 optimisations ► ► Forest construction overhead: 2 metrics: node stress and link stress.
Conclusions ► ► balance forwarding load ► ► tolerate faults ► ► respect individual node bandwidth constraints ► ► small overhead of forest construction and maintenanace ► ► multicasts using forest do not load nodes beyond their bandwidth constraints