Menu

Streaming Algorithms

Alex Libov

These strteaming algorithms are currently supported:

Coolstreaming

Based on a paper titled: "CoolStreaming/DONet: a data-driven overlay network for peer-to-peer live media streaming". In this service, nodes periodically exchange data availability information with their neighbors, retrieve unavailable data from one or more neighbors, or supply available data to their neighbors. Each node continuously exchanges availability bitmaps of its segment with the neighbors, and then schedules which segment should then be fetched from what neighbor.
The scheduling heuristic first calculates the number of potential suppliers for each segment.
The algorithm then determines the supplier of each segment by starting with those that have only one potential supplier.
When multiple potential suppliers could be chosen, Coolstreaming selects the one with the highest bandwidth and most ample time before the playback deadline.

<streamingAlgorithm algorithm="CoolStreaming">
    <overlayAlgorithm algorithm="AraneolaOverlay" S="12" gossipDelay="6" 
      amountToSend="3" L="3" H="10" connect_timeout="2" disconnect_timeout="2">
        <clusteringAlgorithm algorithm="FullCluster" />
    </overlayAlgorithm> 
</streamingAlgorithm>

Coolstreaming receives a single overlay algorithm. [Overlay Algorithms]

PushTree

In PushTree, the source node waits for chunks to become available and then sends chunks to each child.
Every node that receives content from its parent node immediately forwards the content to its children.

<streamingAlgorithm algorithm="PushTree">
    <overlayAlgorithm algorithm="TreeBoneOverlay"
        stableCoefficient="0.3" queryTimeout="3">
        <clusteringAlgorithm algorithm="FullCluster" />
    </overlayAlgorithm>
</streamingAlgorithm>

Coolstreaming receives a single overlay tree algorithm. [Overlay Algorithms]

mTreebone

mTreebone is a general protocol that uses a streaming algorithm for disseminating messages in the
normal case together with a fallback option to use Coolstreaming if the main overlay is not connected.

<streamingAlgorithm algorithm="MtreeBone">
    <streamingAlgorithm algorithm="PushTree">
        <overlayAlgorithm algorithm="TreeBoneOverlay"
            stableCoefficient="0.3" queryTimeout="3">
            <clusteringAlgorithm algorithm="FullCluster" />
        </overlayAlgorithm>
    </streamingAlgorithm >
    <overlayAlgorithm algorithm="AraneolaOverlay" S="22" gossipDelay="6" 
            amountToSend="3" L="11" H="12" connect_timeout="2" disconnect_timeout="2">
            <clusteringAlgorithm algorithm="FullCluster" />
    </overlayAlgorithm>
</streamingAlgorithm >

mTreebone receives one streamingAlgorithm and one overlayAlgorithm to be used as the overlay of coolstreaming. [Overlay Algorithms]


Related

Wiki: Experiment Description XML
Wiki: Overlay Algorithms