P2P Multi-Tree based live video streaming is a way to improve the performance of video streaming systems. In this approach an overlay mechanism organizes peers into multiple trees. The video stream is split into some number of sub-streams, and a tree is constructed for each sub-stream. Every peer joins every tree. Peers are placed as an internal node in only one tree, and as a leaf node in other trees. Each internal node forwards any received packets to all of its child nodes.
In single tree live video streaming, the failure of one node, especially one closer to the root, can cause data delivery failure for a large number of users. The node may fail because it leaves or it does not have enough CPU power or bandwidth to serve all its children. The amount of the data lost depends on the repairing mechanism. In general, single tree systems do not efficiently utilize the available bandwidth and node resources. They have a large number of leaf nodes that do not contribute their bandwidth to uploading.
In contrast, if a peer fails or leaves in a P2P Multi-Tree system, all its children lose the sub-stream from that peer but they still receive the sub-streams from other peers. A peer joins the system by contacting a bootstrapping node to identify a parent node in each of the trees. A new peer is added as an internal node to the tree that has the minimum number of internal nodes. This keeps the population of internal nodes balanced among different trees.
The new internal peer is placed as close to the root as possible. A parent is chosen that has enough bandwidth to support a new child. If no such parent is available, then the new node must replace one of the existing nodes. The existing node then becomes a child of the new node, so the tree gains one level. As new nodes are added and removed, re-balancing might be needed to keep the trees short.
If a peer fails or leaves, each one of its child nodes and their sub-trees have to rejoin each of the trees. Peers in the sub-tree initially stay there and wait for the root of the sub-tree to rejoin the tree as an internal node. If the root is unable to join within a certain period of time, the sub-tree collapses and all of the individual peers independently rejoin the tree.
Since all peers are both internal and leaf nodes, all peers contribute some of their upload bandwidth. If a peer has high upload bandwidth, it can be placed as an internal node in several trees to make better use of its capabilities.
Multi-tree streaming requires little overhead when peers are not joining or leaving the system frequently. When they are joining or leaving frequently, the control messages can take up a significant amount of bandwidth. In this case, peers may need to buffer data while the tree is reconfigured.