350 likes | 554 Views
Peer-to-Peer Streaming Using A Novel Hierarchical Clustering Approach. 陈昴. 提纲. 解决的问题 特点 树的表示 规则 控制协议 Peer 的加入,离开 Cluster 的分裂,合并 优化. 解决的问题. 1.peer 接收到 stream 的延迟 2.peer 的加入和离开对 system 的影响 3.peer 之间的通信 (control overhead) 应用层组播的衡量标准: Stress(defined per-link)
E N D
Peer-to-Peer Streaming Using A Novel HierarchicalClustering Approach 陈昴
提纲 • 解决的问题 • 特点 • 树的表示 • 规则 • 控制协议 • Peer的加入,离开 • Cluster的分裂,合并 • 优化
解决的问题 • 1.peer接收到stream的延迟 • 2.peer的加入和离开对system的影响 • 3.peer之间的通信(control overhead) 应用层组播的衡量标准: • Stress(defined per-link) 每条底层链路上重复发送的相同packet的数量 • Stretch(defined per-member) peer在组播树中的路径长度:直接从server连接到peer的长度
解决的问题 • 特点 • 树的表示 • 规则 • 控制协议 • Peer的加入,离开 • Cluster的分裂,合并 • 优化
特点 • 1.每个peer的degree是O(k) • 2.树高度是logkN • 3.failure recovery不会扩散, 只需要与O(k)个peer通信,不用增大server的压力 • 4.一个peer的control info最多需要与O(k*logkN)个peer交互, 但是平均下来只有O(k)个。 • 5.新peer加入之后,组播树的规则和cluster size要保证
解决的问题 • 特点 • 树的表示 • 规则 • 控制协议 • Peer的加入,离开 • Cluster的分裂,合并 • 优化
树的结构: cluster size在[k,3k-1]之间,由相互比较接近的peers组成。 *上限是3k-1而不是2k-1的原因: 由于cluster的split和merge代价较大,所以给它们留出了些 ”buffer” 。如果是2k-1很可能频繁的发生split和merge。 cluster head和vice-head是cluster的中心(为了join的peer很容易找到自己在hierarchy中的位置),Li层的head加入Li+1。 Head收集cluster的控制信息,负责组播树的调整。比如join,split,merge都要通过head来操作。 Vice-head是真正给其他peers发送data stream的节点。它负责自己cluster内non-head节点的输入。它自己的输入来自上层的non-head节点或者vice-head节点。
解决的问题 • 特点 • 树的表示 • 规则 • 控制协议 • Peer的加入,离开 • Cluster的分裂,合并 • 优化
C-Rule • 1.peer不在最高层不能传入传出stream • 2.non-head peer只能从他的vice-head接收 *用head直接传输stream会导致head degree的阶上升到O(klogkN)。而且head主要负责处理control信息。 • 3.vice-head从他的一个sibling head得到资源 *从sibling head得到资源的结果是有些高层的peer在传统view里看是没有子节点的。因为有些高层节点由于自身网络状况限制不适合为别的peer提供stream
定理1: 组播树peer的最大度数是6k-3(vice-head可能达到)。 • 定理2: 组播树的高度至多是2*logkN+1(最长的path中所有的vice-head的outlink都是同层的non-head clustermate)
解决的问题 • 特点 • 树的表示 • 规则 • 控制协议 • Peer的加入,离开 • Cluster的分裂,合并 • 优化
控制协议 • Peer需要与clustermate,children,parent交互。 • to non-head clustermate: [degree] • to cluster-head: [该peer负责给哪些clustermate传输数据该peer负责给哪些sibling cluster的vice-head传数据] • to children,parent: [degree,Reachable(X),Addable(X)]
定理3: control overhead至多是O(klogkN): 最多有(j+1)(3k-1)个clustermates和6k-3个children 平均是O(k): peer的highest layer是j的可能性最多有1/k^j。 平均的代价=∑j∈ [0,H-1] (1/k^j)(j(3k-1)+9k-3)) --> O(k)
解决的问题 • 特点 • 树的表示 • 规则 • 控制协议 • Peer的加入,离开 • Cluster的分裂,合并 • 优化
Peer join算法: join(P,X) if(X is layer-0 vice-head) add P to the cluster of X Make P a new child of X else if(Addable(X) ) select a child Y[where Addble(Y) and D(Y)+d(Y,P) is min] join(P,Y) else select a child Y[where Reachable(Y) and D(Y)+d(Y,P) is min] join(P,Y)
D(Y)是从server到Y的delay d(Y,P)是从Y到P的delay *不用判断X是否是Reachable的: 只有Reachable的peer能够从parent那里得到join的消息 • 定理4: join的overhead是O(klogkN) *因为2个select child操作的代价最多是6k-3,树的高度最多是2logkN+1
Peer depart过程: 1.parent removes link to X 2.children find a new parent 3.所有X的layer-i cluster(0<=i<=j-1)找到一个新head 4.如果X是layer-j那个cluster的vice-head,那么为这个cluster找个新的vice-head (该cluster的head负责寻找) • 定理5: 一次fail导致重新连接的peer个数最多是6k-2
解决的问题 • 特点 • 树的表示 • 规则 • 控制协议 • Peer的加入,离开 • Cluster的分裂,合并 • 优化
Cluster split过程: 从旧的cluster中分出一个新的cluster,新cluster的head与旧的head一样从j+1层的vice-head节点得到stream。 新cluster的vice-head从旧vice-head的parent得到stream。 挑选新cluster的peer: • j=0: 将{X0,...Xn}按照其delay从大到小排序,前一半组成新的cluster中,X1和X2分别是新的head和vice-head (理由是后一半的delay短,也就是说到原来的vice-head距离比较小;而选择X1,X2是可以将原来很高的delay改变很多)
0<j<H-1: *定义bool变量xil,=1表示Xi是Xl在layer(j-1)的vice-head的parent。 (根据C-rulexii是0) 1.将{X1,...Xn}分成2组,满足:|U|,|V|都在[k,3k]之间,且∑Xi∈U,Xl∈V ( Xil+Xli ) 值最小。 *这样保证了reconnect的数量最少 2.如果xil=1,且Xi,Xl分别在U,V中,则重新为Xl在layer(j-1)的vice-head在V中找个新的parent。 U中同样操作。 3.选择新的head and vice-head of V *选择degree最少的peer作为head和vice-head,因为head会将他的children转移给其他clustermate,而vice-head会给它的clustermates提供stream,都需要自己原来的degree比较少
j=H-1: 前3步同上; 4.由于在最高层server既是head又是vice-head,所以在split之前server会向lay(j-1)的peer提供stream。在split之后,server会被提高到layer(H),所以不能继续向lay(j-1)的peer直接提供stream,它们会转而从新的vice-head来获取stream • 定理6: split的overhead最大值是O(k)
Split的另一种考虑方式: 从划分后组内peers之间的距离来决定。 给定一组peers,以及两两间的”距离”,需要将它们分成k组,保证组内的最大”距离”最小化。这个问题就是带有size限制的k-center问题(NP-hard) • 近似解: head将其分成2组相同大小的cluster,并保证组内”最大距离”最小化。如果达不到size要求,继续split。
Cluster merge过程: 合并从上到下 合并的两个cluster的head和vice-head分别为:Xu,Xv和Yu,Yv • 若Xu是layer(j+1)的head: 1.Xu和Yv分别是新cluster的head和vice-head,其他的U+V中的peer都reconnect到Yv 2.Xv不能在layer(j+1)中再次出现,于是它原来的children需要寻找新的parent 3.如果Xv是原来layer(j+1)的vice-head,Xu负责寻找新的来代替(这里Xu优先于Xv的原因是作为j+1层的head,Xu很有可能可以在j+2,j+3层都存在,替换掉Xu影响会很大)
若Xu是layer(j+1)的vice-head,同上。 • 若Xu和Xv都不是layer(j+1)的head: 1.在Xu和Xv中,选取高degree的节点作为U+V的head,Xu接管原来Xv的children 2.从Yu和Yv中,选取高degree的节点作为U+V的vice-head 3.如果原来Yv是Xu的children,则为其选取新的parent(假设选取的是Xu和Yv) • 定理7:merge的最大代价为7k (最多需要reconnect |U|+|V|+|Xu或者Xv在layer(j-1)的children <= k+3k+3k)
解决的问题 • 特点 • 树的表示 • 规则 • 控制协议 • Peer的加入,离开 • Cluster的分裂,合并 • 优化
Load balancing算法: 除了degree还要考虑peer的bandwidth因素 For(i=1;i<=m;i++) select a non-head clustermate Y: Y is not the head of Xi; (dx/Bx-dy/By)^2 – ((dx-1)/Bx-(dy+1)/By)^2 > 0 取上式的最大值 if such Y exists Redirect Xi to Y Update dx and dy accordingly
该算法为了减小X和Y的load之间的difference *每调用一次算法的代价是3k-1,经常调用会导致peer频繁reconnect • 于是采取当一个peer的load大于一个临界值△的时候调用 • △的选取: 如果一个cluster除了head之外有X1...Xn这n个节点的话,那么该cluster总共的degree应该是2n。如果load合理分布,load(Xi)=2n*Bi/B 其中B是Xi带宽之和。 △可以根据这个数进行估计,比如double
delay shortening: 主要通过周期性的选取新的vice-head来做到。 扩展control protocal,实现每个peer定时测量其到其他所有non-head clustermates的delay,然后将这些delay的平均值传送给head,由head选取新的vice-head