SRM: Scalable Reliable Multicast


ここでは、規模拡張性のある高信頼マルチキャストプロトコルであるSRM( Scalable Reliable Multicast)について、その基礎概念、配送手法および 配送の特性について説明する。

基礎概念

SRMは、アプリケーションにとって意味のあるデータ単位で信頼性の確保をおこなうべきであるというALF(Application Level Framing)の概念に基づき設計されている。ユニキャスト通信を行なうTCPでは、パケットにシーケンス番号を付与し送出し、そのギャップにより損失の検知が行なわれる。このような方式をマルチキャスト通信に適用した場合、受信側アプリケーションが主体的に再送要求を行ない意味のある単位で信頼性の確保を行なう事ができない。ALFは、アプリケーションの制御の範囲をトランスポート層まで広げるべきであると主張である。

この考え方に基づき設計されたSNAP(Scalabe Naming and Announcement Protocol)は、配送されるデータの単位に階層的な名前づけを行い、その状態を広告するプロトコルである。SRMは、アプリケーションが定義する名前空間をSNAPを用いて広告し、受信者にとって意味のある単位での再送要求することで信頼性の確保を行なうプロトコルである。

SNAPは、階層的な名前空間を定義し、ネットワーク上で共有するためのプロトコルである。下図にしめすような、ADU(Application Data Unit)、フラグメント、名前空間を定義し階層的な名前空間を構成する。

ここでADUはアプリケーションに取って意味のある単位であり、wb(White Borad)のようなアプリケーションでは、一つ一つの描画操作を格納する。また、ディレクトリに格納されているファイルをすべて転送させるようなアプリケーションでは、ファイル一つ一つがADUになりうる。

フラグメント(断片)は、ADUをネットワークで転送するための機構で、ADUの大きさが下位層で定義されている最大転送単位(MTU)よりも大きい場合、ADUは2つ以上複数のフラグメントに分割される。ALFの枠組関する提案ではアプリケーションは『ネットワークを意識する(Network aware)』べきであるとされておりアプリケーションが意識的にMTUを越えないADUを選択する事を推奨している。しかし、SNAPではフラグメント機構を導入することで、アプリケーションに柔軟性を与えている。

コンテナはある階層の構成要素を格納するための器でこれを階層的に配置することで名前空間を構成する。すなわちあるコンテナは下位層のコンテナもしくはADUへの参照を保持するデータ構造体で実現される。

SRMの配送動作
SRMの損失検知

SRMは、このSNAPで定義される名前空間の状態を広告し、アプリケーションが名前空間に対応づけられたデータを共有するためのプロトコルである。この節ではSRMの配送動作について解説する。SRMでは、パケットの損失が検知されたときに、再送を行なう事で信頼性を確保する。ADUもしくはフラグメントのパケットにはシーケンス番号が付与されている。損失の検出はこのシーケンス番号のギャップから検出される。また、コンテナにはCIDが連続的に付与されており、このギャップからコンテナ自信の損失を検知することができる。しかし、この方法だけではコンテナ中の最後のADUの損失を検出することができない。したがってSRMでは、各コンテナ毎の状態をセッションメッセージとして広告する。

SRMの損失回復
この機構によりパケットの損失検知がなされた場合には、再送を要求する制御パケットを送付する。再送要求はランダムな時間が経過した後にrepare requestと呼ばれる制御パケットをマルチキャストすることで行なわれる。待ち時間は、セッションメッセージのタイムスタンプにより求められたノード間の距離(d_s,a)を元にして、下図で示される範囲の一様乱数として計算される。

ここでC1,C2は定数である。このタイマが時間切れになる前に他のノードが先に時間切れを起こし同じrepare requestがマルチキャストされた場合には、repare requestは指数バックオフされ制御パケット送付が抑止される。要求されたデータを持つノードは、同様に距離にもとづいて計算されるランダムな時間待ってrepare packetを送付する。その範囲は上図のC1,C2をD1,D2で置き換えたもので表すとする。

この様子を図で示したものを下に示す。
この図は、http://www.mlab.t.u-tokyo.ac.jp/~mrj/katsu/rinko/sld019.htm より引用 したものである。

なお、ノード間の距離の測定にはNTPで用いられている方法と同様の方法が用いられているので、ノード間で時刻が同期している必要はない。ただし、ノード間で転送されるパケットの経路が対称であることが必要である。

ネットワークトポロジーとSRM

これまでの説明で明らかなように、SRMはパケット損失要求を行なったノードに一番近いノードが高い確率で応答する機構をじ告げいしている。ここで、SRMの特性を明らかにするために、上で定義した、C1,C2,D1,D2およびネットワークトポロジの関係について解説する。

まず、ネットワークトポロジーとして均一な状態、すべてのノードがスター状のトポロジーで接続されている状態では、すべてのノード間の距離が等しくなる。したがって、同じ意味のパケットがネットワーク上に送出される機会を減らすためにはC2,D2を大きくすることが必要である。

次に、ノードが一列の鎖状に配置された例を考える。今、一列にならんだノードのあるリンクが輻輳しており、輻輳リンクを越えてシーケンシャル番号が飛んだデータパケットが到着している状態を想定する。輻輳リンクに最も近いノード(n1)は、時刻t1に損失を検知する。次に接続されたノード(n2)はちょうどは、n1とn2の距離だけ送れた時刻t2に損失を検知する。同様に次のノード(n3)は時刻t3に損失を検知するとする。C1とC2がともに0の場合を想定すると、n1,n2,n3がそれぞれt1,t2,t3にrepare requestを行ないネットワーク上に複数のrepare requestが送出される。C2を大きくする事でn2,n3のrepair requestの重複を確率的に減らせる事がわかる。

最後にノード間の距離が不均一な例を考える。この場合C1(同様にD1)を大きくする事でこれを抑止する事が期待できる。

@@ローカルリカバリー

SRMの配送動作

@@ libsrm **

SRMの特性

@@アプリケーションの設計者からみたSRMを用いた配送の特性を解説する。@@