第四章、 演算法設計
4.3 區域最佳化演算法
除了透過 Tracking server 提供 PCL 來達到適當配置節點位置的目的外,我們也期望 透過分散式的區域最佳化演算法進一步降低系統的平均播放延遲時間。我們令加入網路 後的節點,每隔一段時間須執行一次區域最佳化。如圖 12 所示,對於正在執行區域最 佳化的節點 P,找到一個以 P 之父節點 G 為樹根的 Degree-constraint spanning tree 來連 接 P 及 P 的子節點 C = {C1, C2, …, Ck},使得該區域具有最小的平均播放延遲時間。
圖 12 區域最佳化
我們共提出了四種可能的演算法以供比較,並從中選擇較合適者成為區域最佳化演 算法。在演算法 2 中,我們提供一個基於隨機排程的 Random 演算法。在演算法 3 中,
我們提供一個考慮最大上載頻寬的 Largest upload bandwidth 演算法。在演算法 4 中,我 們提供一個考慮最小播放延遲時間的 Lowest playback delay 演算法。在演算法 5 中,我 們以列舉的方式求得區域最佳化的最佳解(Optimal)。
26
演算法 2 Random 演算法 AvailableParent ← {G}
Children ← {P}∪C
while AvailableParent ≠ Ø and Children ≠ Ø do
PCandidate ← Randomly pick a peer from AvailableParent CCandidate ← Randomly pick a peer from Children
Set PCandidate to be the new parent of CCandidate dCCandidate← dPCandidate + dPCandidate,CCandidate
rPCandidate ← rPCandidate – R
if rPCandidate < R then AvailableParent ← AvailableParent – {PCandidate}
Children ← Children – {CCandidate}
if rCCandidate ≧ R then AvailableParent ← AvailableParent ∪ {CCandidate}
end while
if Children = Ø and new local avg playback delay is lower than the origin then
Commit this optimization end if
27
演算法 3 Largest upload bandwidth 演算法 AvailableParent ← {G}
Children ← {P}∪C
while AvailableParent ≠ Ø and Children ≠ Ø do
CCandidate ← Peer∈Children where bPeer is maximum
PCandidate ← Peer∈AvailableParent where dPeer + dPeer,CCandidate is minimum Set PCandidate to be the new parent of CCandidate
dCCandidate← dPCandidate + dPCandidate,CCandidate
rPCandidate ← rPCandidate – R
if rPCandidate < R then AvailableParent ← AvailableParent – {PCandidate}
Children ← Children – {CCandidate}
if rCCandidate ≧ R then AvailableParent ← AvailableParent ∪ {CCandidate}
end while
if Children = Ø and new local avg playback delay is lower than the origin then
Commit this optimization end if
28
演算法 4 Lowest playback delay 演算法 AvailableParent ← {G}
Children ← {P}∪C
while AvailableParent ≠ Ø and Children ≠ Ø do
PCand∈AvailableParent, CCand∈Children
Find the best (PCand, CCand) pair such that dPCand + dPCand,CCand is minimum Set PCand to be the new parent of CCand
dCCand← dPCand + dPCand,CCand
rPCand ← rPCand – R
if rPCand < R then AvailableParent ← AvailableParent – {PCand}
Children ← Children – {CCand}
if rCCand ≧ R then AvailableParent ← AvailableParent ∪ {CCand}
end while
if Children = Ø and new local avg playback delay is lower than the origin then
Commit this optimization end if
29
演算法 5 Optimal 演算法 AvailableParent ← {G}
Children ← {P}∪C
Use brute force method to find the optimal spanning tree Commit the optimization
我們以模擬實驗的方式來比較上述四種區域最佳化演算法。在模擬環境中,我們假 設每次最佳化中,包含 G、P 和 P 的所有子節點,且 P 平均有 1 到 4 個子節點,他們之 間的點對點延遲時間均勻分佈在 1 毫秒至 1000 毫秒之間。由於所提供的串流資料率(Data rate)不同,不同演算法可能有不同的表現結果,因此我們分別考慮三種不同的情境。
從第一種至第三種情境中所提供的 Data rate 越來越低,也就是每個節點平均可服務 的子節點個數越來越多。在第一種情境中,每個節點可服務的子節點個數平均分佈在 0 個到 2 個之間。在第二種情境中,每個節點可服務的子節點個數平均分佈在 0 個到 4 個 之間。在第三種情境中,每個節點可服務的子節點個數平均分佈在 0 個到 8 個之間
如圖 13 所示,Random 演算法在四種情境中的平均播放延遲時間都是最高的。
Largest upload bandwidth 演算法在四種情境中有著次高的平均播放延遲時間。Lowest playback delay 演算法在四種情境中有第二小的平均播放延遲時間。而 Optimal 演算法有 著最低的平均播放延遲時間。
30
圖 13 區域最佳化演算法比較
Lowest playback delay 演算法雖然表現不如列舉,但其平均播放延遲時間僅高於 Optimal 演算法兩個百分比,而計算複雜度遠小於 Optimal 演算法。因此,我們採用 Lowest playback delay 演算法作為區域最佳化演算法。
(0,2) (0,4) (0,8)
0 100 200 300 400 500 600 700 800
Fan-out distribution
Average playback delay (ms)
Optimal
Lowest playback delay Largest upload bandwidth Random
31