1. 程式人生 > 程式設計 >Cloud 學習筆記 11.Multicast 組播

Cloud 學習筆記 11.Multicast 組播

Multicast 組播

組播是指從某一地址把資訊同時傳遞給一組目的地址。

單播 點對點發訊息
組播 某一點對一組目的傳送訊息
廣播 從某一點對所有地址傳送訊息

地址在IP層語境下,一般是指IP地址。在分散式系統裡,一般指程式.

相對於廣播組播(也叫多播)的傳輸更受限制。組播只在一組地址(程式)中傳播

組播的需求

雲端計算環境下,組播協議需要滿足兩個條件:容錯(fault-tolerance)可拓展性(scalability)

  • 容錯(fault-tolerance): 節點故障、資料包丟失、底層網路延遲...
  • 可拓展性(scalability): 節點數量可能快速增長,而協議開銷不能增長過快(慢於O(n)
    )

集中式解決方案

centralized是最簡單的解決方案。sender通過for/while loop向所有receiver傳送資訊。

但是會導致兩個問題:

  1. 無法容錯。如果在迴圈中出現異常,loop會被中斷,之後的receiver將不會收到訊息
  2. 開銷高。receiver接收訊息的平均時間為O(n),網路延遲高

基於樹的解決方案

為瞭解決上述兩個問題,於是有了tree-based方案 (e.g. IP組播,SRM,RMTP,TRAM,TMTP)

如果樹足夠平衡,那麼樹的高度應該是O(log n),並且子節點為常數。 對於雲來說,故障是常態,所以樹需要額外的固定開銷來持續維護/修復樹。

通常會在多播組之間生成樹,並使用生成樹演演算法來傳播組播訊息。隨後再用ACK(acknowledgments)NAK(negative acknowledgments)來修復失敗的組播

SRM(Scalable Reliable Multicast)

  • 使用NAK
    • 如果一個節點一段時間沒有收到組播訊息,那麼它會向root方向(父節點)傳送修復請求。當另一個節點收到修復請求,它會重發所需的組播訊息
  • NAK/ACK風暴: 當網路不穩定時,整個網路中可能瞬間充滿大量的NAK/ACK資訊。為了避免NAK風暴
    • 隨機延遲一段時間傳送請求
    • 使用exponential backoff:每次請求的間隔為上一次時長的兩倍

RMTP(Relicable Multicast Transport Protocol)

  • 使用ACK
  • recevier定期向sender傳送一個資訊摘要(digest)。如果sender發現recevier缺少資訊,就會重新傳送一份資料
  • 為了避免ACK風暴,只有一部分節點會被指定(designated receiver)。這部分節點會負責轉發缺失的組播訊息

然而,這些協議依然會造成O(n)ACK/NAK開銷