(58)【調査した分野】(Int.Cl.,DB名)
前記トポロジ情報抽出部は、前記トレーニングリポートパケットを用いて前記第1ノードのパケット受信率を演算し、前記パケット受信率が予め定められた閾値レベル以上である場合、前記第1ノードをリレーノード候補として選択することを特徴とする請求項2に記載のソースノード。
前記トポロジ情報抽出部は、前記第2ノードが受信したトレーニングパケットに関する情報を前記リレーノード候補が取得した場合、前記リレーノード候補から前記第2ノードに関する情報及び前記第2ノードが受信したトレーニングパケットに関する情報を含むネイバーリポートパケットを受信することを特徴とする請求項4に記載のソースノード。
前記リレーノード選択部は、前記選択されたリレーノードの総パケット送信量が予め定められた最大パケット送信量よりも小さい場合、前記潜在的要求自由度、前記要求送信量、前記最小要求送信量、前記最大要求送信量、及び前記第1ユーティリティを、前記選択されたリレーノードに基づいてアップデートし、前記複数のリレーノード候補のうちから前記リレーノードを選択することを特徴とする請求項13に記載のソースノード。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の目的は、マルチキャストネットワークにおける効率的なリアルタイムサービス伝送を最小限のオーバヘッド追加で具現できるソースノード
及びその動作方法を提供することにある。
【課題を解決するための手段】
【0004】
一実施形態に係るソースノードは、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得し、前記マルチキャストネットワークのトポロジ情報を抽出するトポロジ情報抽出部と、前記トポロジ情報に基づいて前記複数のノードのうちから、ソースノードから送信されたパケットを中継するリレーノードを選択するリレーノード選択部と、を含む。
【0005】
前記トポロジ情報抽出部は、前記複数のノードのうち前記ソースノードを除いた残りのノードが受信したパケットに関する情報に基づいて前記トポロジ情報を抽出してもよい。
【0006】
前記トポロジ情報抽出部は、前記複数のノードのうち前記ソースノードを除いた残りのノードのうち第1ノードにトレーニングパケットを送信し、前記第1ノードが受信したトレーニングパケットに関する情報を含むトレーニングリポートパケットが前記第1ノードからフィードバックされてもよい。
【0007】
前記トポロジ情報抽出部は、前記トレーニングリポートパケットを用いて前記第1ノードのパケット受信率を演算し、前記パケット受信率が予め定められた閾値レベル以上である場合、前記第1ノードを前記リレーノード候補として選択してもよい。
【0008】
前記トポロジ情報抽出部は、前記複数のノードのうち前記ソースノードを除いた残りのノードのうち選択されたリレーノード候補が前記残りのノードのうち第2ノードに前記トレーニングパケットを送信するようにするトレーニング下りパケットを前記リレーノード候補に送信してもよい。
【0009】
前記トポロジ情報抽出部は、前記リレーノード候補が複数である場合、予め定められた順序に応じて前記複数のリレーノード候補に前記トレーニング下りパケットを送信してもよい。
【0010】
前記トポロジ情報抽出部は、前記第2ノードが受信したトレーニングパケットに関する情報を前記リレーノード候補が取得した場合、前記リレーノード候補から、前記第2ノードに関する情報及び前記第2ノードが受信したトレーニングパケットに関する情報を含むネイバーリポートパケットを受信してもよい。
【0011】
前記トポロジ情報抽出部は、前記残りのノードのうち一部のノードが受信したトレーニングパケットに関する情報を前記リレーノード候補が取得した場合、前記リレーノード候補から、前記一部のノードに前記トレーニングパケットを送信したノードに関する情報、前記一部のノードに関する情報及び前記一部のノードが受信したトレーニングパケットに関する情報を含むブロックトレーニングリポートパケットを受信してもよい。
【0012】
前記トポロジ情報抽出部は、前記複数のノードのうち前記ソースノードを除いた残りのノードのうち一部のノードをトレーニングノードとして選定し、前記選定されたトレーニングノードが受信したパケットに関する情報に基づいて前記トポロジ情報を抽出してもよい。
【0013】
前記トポロジ情報抽出部は、前記複数のノードのうち前記ソースノードを除いた残りのノードが収集した前記複数のノード間の前記チャネル状態に対する統計情報を受信し、前記統計情報に基づいて前記トポロジ情報を抽出してもよい。
【0014】
前記リレーノード選択部は、前記トポロジ情報に基づいて、前記複数のノードのうち前記ソースノードを除いた残りのノードを1−ホップノードグループ及び2−ホップノードグループに分類し、複数のリレーノード候補のパケット送信が前記残りのノードのうち少なくとも一部に及ぼす影響を考慮して前記複数のリレーノード候補のうち前記リレーノードを選択してもよい。
【0015】
前記リレーノード選択部は、前記トポロジ情報を用いて前記残りのノード各々の予想パケット受信量(ここで、前記予想パケット受信量は、前記残りのノード各々が目標パケット受信量以上のパケットを受信する確率が予め定められた閾値確率以上となるようにする前記残りのノード各々のパケット受信量を意味する)を推定し、前記残りのノード各々に対して、前記残りのノードの予想パケット受信量に基づいて、前記残りのノード各々が異なるノードからパケットを受信した後に追加的に受信しなければならないパケットの量を示す潜在的要求自由度を推定し、前記潜在的要求自由度が低いノードを前記1−ホップノードグループに、前記潜在的要求自由度が高いノードを前記2−ホップノードグループに決定してもよい。
【0016】
前記リレーノード選択部は、前記2−ホップノードグループに含まれた少なくとも1つのノード各々に対して、前記複数のリレーノード候補各々に対する前記2−ホップノードグループに含まれた少なくとも1つのノード各々の前記潜在的要求自由度に基づいて、前記2−ホップノードグループに含まれた少なくとも1つのノード各々が、前記複数のリレーノード候補各々に対して送信を要求するパケットの量を示す要求送信量を演算し、前記少なくとも1つのノード各々の前記要求送信量に基づいて前記複数のリレーノード候補のうちから前記リレーノードを選択してもよい。
【0017】
前記リレーノード選択部は、前記少なくとも1つのノード各々に対して、前記少なくとも1つのノード各々の前記要求送信量のうち量が最も少ない要求送信量を示す最小要求送信量を推定し、前記複数のリレーノード候補各々に対して、前記少なくとも1つのノードのうち当該リレーノード候補に前記最小要求送信量でパケット送信をリクエストするノードから構成された最適ノードグループを抽出し、前記複数のリレーノード候補各々に対して、前記最適ノードグループに含まれたノードの前記最小要求送信量のうち量が最も多い最小要求送信量を示す最大要求送信量を推定し、前記複数のリレーノード候補各々に対して、前記複数のリレーノード候補各々の前記最大要求送信量による前記最適ノードグループに含まれたノードへのパケット送信が、前記残りのノードのうち少なくとも一部に及ぼす影響を示す第1ユーティリティを推定してもよい。
【0018】
前記リレーノード選択部は、前記複数のリレーノード候補のうち前記第1ユーティリティの大きさが最も大きいリレーノード候補を前記リレーノードとして決定してもよい。
【0019】
前記リレーノード選択部は、前記複数のリレーノード候補のうち前記最大要求送信量の大きさが最も大きいリレーノード候補を前記リレーノードとして決定してもよい。
【0020】
前記リレーノード選択部は、前記選択されたリレーノードの総パケット送信量が予め定められた最大パケット送信量よりも小さい場合、前記潜在的要求自由度、前記要求送信量、前記最小要求送信量、前記最大要求送信量、及び前記第1ユーティリティを、前記選択されたリレーノードに基づいてアップデートし、前記複数のリレーノード候補のうちから前記リレーノードを選択してもよい。
【0021】
前記リレーノード選択部は、前記2−ホップノードグループに含まれたノード各々に対して、前記複数のリレーノード候補各々の前記2−ホップノードグループに含まれたノードへのパケット送信による前記2−ホップノードグループに含まれたノードの満足度を示す第2ユーティリティを推定し、前記複数のリレーノード候補各々に対して、前記2−ホップノードグループに含まれたノード各々の第2ユーティリティに基づいて、前記複数のリレーノード候補各々の前記パケット送信による前記2−ホップノードグループの満足度を示すネットワークユーティリティを推定し、前記複数のリレーノード候補各々のネットワークユーティリティに基づいて、前記複数のリレーノード候補のうちkara前記リレーノードを選択してもよい。
【0022】
前記リレーノード選択部は、前記リレーノード候補に送信するパケットの量による前記ネットワークユーティリティの傾きが変更されるごとに、前記複数のリレーノード候補各々の第2ユーティリティをアップデートし、前記複数のリレーノード候補のうち、前記リレーノード候補に送信するパケットの量による前記第2ユーティリティの傾きが最も大きいリレーノード候補を前記リレーノードとして選択してもよい。
【0023】
一実施形態に係るノードは、ランダム行列を用いてオリジナルパケットを符号化されたパケットに変換する符号化部と、前記符号化されたパケットに基づいて生成された生成子行列を用いて、前記符号化されたパケットを前記オリジナルパケットに変換する復号化部とを含む。
【0024】
前記符号化部は、前記オリジナルパケットを複数のサブパケットに分類し、前記複数のサブパケットと前記ランダム行列を演算して符号化されたデータを生成してもよい。
【0025】
前記符号化部は、前記符号化されたデータに、前記符号化されたデータに関する情報を含む第1ヘッダを付加して前記符号化されたパケットを生成してもよい。
【0026】
前記第1ヘッダは、前記オリジナルパケットの個数に関する情報、前記ランダム行列の長さに関する情報、前記符号化されたパケットの識別子に関する情報、前記ランダム行列の係数に関する情報、及び前記符号化されたパケットのタイプに関する情報のうち少なくとも1つを含んでもよい。
【0027】
前記符号化されたパケットのタイプに関する情報は、前記符号化されたパケットを無線LANモジュールに送信する以前に前記オリジナルパケットを前記無線LANモジュールに送信する組織コード、及び前記符号化されたパケットのみを前記無線LANモジュールに送信する非組織コードを含んでもよい。
【0028】
前記符号化部は、前記符号化されたパケットに前記オリジナルパケットのイーサネット(登録商標)タイプに関する情報を含む第2ヘッダを付加してもよい。
【0029】
前記符号化部は、イーサネット(登録商標)モジュールから受信した前記オリジナルパケットの個数がK個である場合、前記K個のランダム行列を用いて前記K個のオリジナルパケットをN個の符号化されたパケットに変換し、前記N個の符号化されたパケットを無線LANモジュールに送信してもよい。
【0030】
前記復号化部は、前記符号化されたパケットから抽出された行列係数に基づいて前記生成子行列を生成し、前記符号化されたパケットと前記生成子行列の逆行列を演算して前記オリジナルパケットを抽出してもよい。
【0031】
前記復号化部は、LU分解方式を用いて前記符号化されたパケットを前記オリジナルパケットに変換してもよい。
【0032】
前記復号化部は、前記符号化されたパケットをパケットキューリストに含まれたパケットキューに挿入し、前記パケットキューに挿入された前記符号化されたパケットが予め定められた個数以上である場合、前記符号化されたパケットを前記オリジナルパケットに変換してもよい。
【0033】
前記パケットキューは、前記パケットキューリストに含まれた残りのパケットキューと連結リストの形態に接続され、前記パケットキューに挿入される前記符号化されたパケットの識別子に関する情報、及び前記符号化されたパケットが前記パケットキューに挿入される時間に関する情報を含んでもよい。
【0034】
前記復号化部は、前記符号化されたパケットが前記パケットキューに挿入される時間が予め定められた閾時間より先である場合、前記パケットキューリストから前記パケットキューを削除してもよい。
【0035】
前記復号化部は、無線LANモジュールから受信した前記符号化されたパケットの識別子が予め定められた時間の間にオリジナルパケットに変換された符号化されたパケットの識別子と同一ではない場合、前記符号化されたパケットを前記パケットキューに挿入してもよい。
【0036】
前記復号化部は、無線LANモジュールから受信した前記符号化されたパケットの識別子が、前記パケットキューリストに含まれた複数のパケットキューに挿入された符号化されたパケットの識別子と同一ではない場合、前記符号化されたパケットを前記パケットキューに挿入してもよい。
【0037】
前記復号化部は、前記生成子行列のうち前記符号化されたパケットに対応する成分が線形従属的である場合、前記パケットキューから前記符号化されたパケットを削除してもよい。
【0038】
一実施形態に係るソースノードは、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得し、前記マルチキャストネットワークのトポロジ情報を抽出するトポロジ情報抽出部と、前記トポロジ情報に基づいて、前記複数のノードのうちソースノードで送信されたパケットを中継するリレーノードを選択するリレーノード選択部と、ランダム行列を用いてオリジナルパケットを符号化されたパケットに変換して前記リレーノードに前記符号化されたパケットを送信し、且つ、前記リレーノードから受信した前記符号化されたパケットに基づいて生成された生成子行列を用いて前記符号化されたパケットを前記オリジナルパケットに変換する変換部と、を含む。
【0039】
一実施形態に係るソースノードの動作方法は、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得し、前記マルチキャストネットワークのトポロジ情報を抽出するステップと、前記トポロジ情報に基づいて前記複数のノードのうちから、ソースノードから送信されたパケットを中継するリレーノードを選択するステップと、を含む。
【0040】
一実施形態に係るソースノードの動作方法は、ランダム行列を用いてオリジナルパケットを符号化されたパケットに変換するステップと、前記符号化されたパケットに基づいて、生成された生成子行列を用いて前記符号化されたパケットを前記オリジナルパケットに変換するステップとを含む。
【0041】
一実施形態に係るソースノードの動作方法は、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得し、前記マルチキャストネットワークのトポロジ情報を抽出するステップと、前記トポロジ情報に基づいて、前記複数のノードのうちソースノードから送信されたパケットを中継するリレーノードを選択するステップと、ランダム行列を用いてオリジナルパケットを符号化されたパケットに変換して前記リレーノードに前記符号化されたパケットを送信し、且つ前記リレーノードから受信した前記符号化されたパケットに基づいて生成された生成子行列を用いて前記符号化されたパケットを前記オリジナルパケットに変換するステップとを含む。
【発明の効果】
【0042】
本発明によると、マルチキャストネットワークにおいて、ソースノードが、前記マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得し前記マルチキャストネットワークのトポロジ情報を抽出するトポロジ情報抽出部と、前記トポロジ情報に基づいて前記複数のノードのうちから、ソースノードから送信されたパケットを中継するリレーノードを選択するリレーノード選択部と、を含むので、効率的なリアルタイムサービス伝送を最小限のオーバヘッド追加で具現できるソースノード及びノード、並びにそれらの動作方法を提供できる。
【発明を実施するための形態】
【0044】
以下、添付する図面を参照しながら実施形態を詳細に説明する。各図面に提示される同一の参照符号は同一の部材を示す。
【0045】
以下で説明する実施形態には様々な変更が加えられ得る。下記で説明する実施形態は本発明の範囲を該実施形態に限定するためのものではなく、これに対応する全ての変更、均等物ないし代替物を含むものとして理解しなければならない。
【0046】
以下に説明する実施形態で用いる用語は、単に特定の実施形態を説明するために用いられており、実施形態を限定しようとする意図はない。単数の表現は文脈上、明らかに単数の表現を意味しない限り複数の表現を含む。本明細書において、「含む」又は「有する」などの用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品又はこれを組み合わせたものの存在を指定するためのものであって、1つ又はそれ以上の他の特徴や数字、段階、動作、構成要素、部品又はこれを組み合わせたものなどの存在又は付加可能性を予め排除しないものとして理解しなければならない。
【0047】
特別に定義されない限り、ここで用いられる全ての技術的又は科学的な用語を含む用語は実施形態が属する技術分野で通常の知識を有する者によって一般的に理解されるものと同じ意味を有する。一般的に用いられる予め定義されているような用語は、関連技術の文脈上に有する意味と一致する意味を有するものと解釈すべきであり、本出願で明らかに定義しない限り、理想的な意味、又は過度に形式的な意味に解釈すべきではない。
【0048】
また、添付の図面を参照して説明する際に、図面番号に関係なく同じ構成要素には同じ参照符号を付与し、それに対する重複する説明は省略する。実施形態を説明する際に関連する公知技術に対する具体的な説明が実施形態の要旨を却って曖昧にすると判断される場合、その詳細な説明を省略する。
<マルチキャストネットワークにおけるノード>
【0049】
図1は、一実施形態に係るマルチキャストネットワークにおけるノード100を示すブロック図である。
【0050】
図1を参照すると、マルチキャストネットワークは複数のこのようなノード100を含む。マルチキャストネットワークにおいてソースノードは複数のノード100にパケットを送信する。この場合、ソースノードは、複数のノード100のうちからリレーノードを選択し、リレーノードを経由して残りのノードにパケットを送信する。これによりソースノードの送信カバレッジは拡大し、ソースノードのパケット送信効率は向上する。
【0051】
一実施形態では、マルチキャストネットワークにおいてノード100は、イーサネット(登録商標)モジュール110、無線LANモジュール120、及びマトリックスネットワークコーディングモジュール130を含む。マトリックスネットワークコーディングモジュール130は、イーサネット(登録商標)モジュール110と無線LANモジュール120との間に位置する。一実施形態では、マトリックスネットワークコーディングモジュール(MNCモジュール)130の位置は、イーサネット(登録商標)モジュール110と無線LANモジュール120との間に限定されない。例えば、無線LANモジュール120がイーサネット(登録商標)モジュール110を経由することなく、L3レイヤからパケットを受信する場合、マトリックスネットワークコーディングモジュール130は無線LANモジュール120上に位置することもある。
【0052】
マトリックスネットワークコーディングモジュール130は、トポロジ情報抽出部140、リレーノード選択部150、及び変換部160を含む。トポロジ情報抽出部140は、マルチキャストネットワークを構成する複数のノード100間のチャネル状態に関する情報を取得し、マルチキャストネットワークのトポロジ情報を抽出する。例えば、ノード100は、マルチキャストネットワーク内の他のノードとパケットを送受信する場合、トポロジ情報抽出部140は、無線LANモジュール120を介して送受信したパケットを取得する。トポロジ情報抽出部140は、送受信したパケットに基づいてノード100と該他のノードとの間のチャネル状態に関する情報を抽出する。また、トポロジ情報抽出部140は、ノード100自身を除く2つの他のノードが相互間に送受信したパケットを無線LANモジュール120を介して取得し、トポロジ情報抽出部140は、無線LANモジュール120を介して取得したパケットに基づいて、他のノード間のチャネル状態に関する情報を抽出する。このようにして、トポロジ情報抽出部140は、ノード100と他のノードとの間のチャネル状態に関する情報及び他のノード間のチャネル状態に関する情報を用いて、マルチキャストネットワークのトポロジ情報を抽出する。
【0053】
リレーノード選択部150は、トポロジ情報に基づいてマルチキャストネットワークを構成している複数のノードのうち、ノード100から送信されたパケットを中継するべきリレーノードを選択する。また、リレーノード選択部150は、リレーノードのパケット送信量を決定する。一実施形態では、ノード100がソースノードではない場合、ノード100はソースノードの選択によってリレーノードになり得る。
【0054】
変換部160はランダム行列を用いて、イーサネット(登録商標)モジュール110から受信したオリジナルパケットを符号化されたパケットに変換し、符号化されたパケットを無線LANモジュール120に送信する。そのようにして、符号化されたパケットは、無線LANモジュール120を介してリレーノード又は他のノードに送信する。また、ノード100がリレーノード又は他のノードから符号化されたパケットを受信する場合、変換部160は無線LANモジュール120を介して符号化されたパケットを受信し、符号化されたパケットに基づいて生成された生成子行列を用いて符号化されたパケットをオリジナルパケットに変換し、オリジナルパケットをイーサネット(登録商標)モジュール110に送信する。その際、ノード100がソースノードである場合、ノード100は、トポロジ情報を取得して複数のノードのうちからリレーノードを選択し、リレーノードに符号化されたパケットを送信し、一方、符号化されたパケットをリレーノードから受信して符号化されたパケットをオリジナルパケットに復号化する。また、ノード100がソースノードではない場合、ノード100は、ソースノードの制御によってリレーノードとして選択され得る。ノード100がリレーノードとして選択される場合、ノード100はソースノードから符号化されたパケットを受信し、符号化されたパケットを他のノードに中継する。また、ノード100がリレーノードとして選択されない場合、ノード100はリレーノードから符号化されたパケットを受信し、符号化されたパケットをオリジナルパケットに復号化する。
<トポロジ情報抽出方式>
【0055】
図2は、一実施形態に係るソースノードを示すブロック図である。
【0056】
図2を参照すると、ソースノード200は、トポロジ情報抽出部210及びリレーノード選択部220を含む。一実施形態では、ソースノード200は、変換部(図示せず)をさらに含み得る。変換部(図示せず)は、ソースノード200がランダム行列を用いてオリジナルパケットを符号化されたパケットに符号化し、符号化されたパケットに基づいて生成された生成子行列を用いて符号化されたパケットをオリジナルパケットに復号化する。
【0057】
トポロジ情報抽出部210は、マルチキャストネットワークに含まれる複数のノードのうち、ソースノード200を除いた残りのノードが受信したパケットに関する情報に基づいてトポロジ情報を抽出する。トポロジ情報抽出部210は、残りのノードが受信したパケットに関する情報を用いて、ソースノード200と残りのノードとの間のチャネル状態及び残りのノード間のチャネル状態に関する情報を取得し、取得したチャネル状態に関する情報を用いてトポロジ情報を推定する。
【0058】
一実施形態において、トポロジ情報抽出部210は、ソースノード200の周辺ノードにトレーニングパケットを送信し、トレーニングパケットを受信した周辺ノードからトレーニングリポートパケットがフィードバックされる。ここで、特定ノードの周辺ノードは、特定ノードと距離の相対的に近いノード(即ち、特定ノードと相対的に近い位置にあるノード)を意味し、実施形態によってはマルチキャストネットワークに含まれた全てのノードを意味する。トレーニングパケットは、トポロジ情報抽出部210がパケット受信率を測定するためにパケット受信率を測定しようとするノードに送信するパケットを意味する。トレーニングリポートパケットは、トレーニングパケットを受信したノードがトレーニングパケットを送信したノードにトレーニングパケットの受信に関する報告を行うためのパケットを意味する。トレーニングリポートパケットは、周辺ノードが受信したトレーニングパケットに関する情報を含む。例えば、トポロジ情報抽出部210が第1ノードにK個のトレーニングパケットを送信するとき、ソースノード200と第1ノードとの間のチャネル状態に応じて、第1ノードは(K−2)個のトレーニングパケットを受信する場合がある。これに対して第1ノードは、受信したトレーニングパケットの個数に関する情報を含むトレーニングリポートパケットを生成し、生成したトレーニングレポートパケットをトポロジ情報抽出部210に送信する。
【0059】
また、トポロジ情報抽出部210は、トレーニングリポートパケットを用いてトレーニングリポートパケットを送信した周辺ノードのパケット受信率を演算する。一実施形態では、トポロジ情報抽出部210は、パケット受信率が予め定められた閾値レベル以上であるノードをリレーノード候補として選択する。例えば、第1ノードで送信したトレーニングリポートパケットから、トポロジ情報抽出部210は、トポロジ情報抽出部210が10個のトレーニングパケットを第1ノードに送信し、第1ノードが8個のトレーニングパケットを受信し、第1ノードのパケット受信率を80%として算出する。ここで、予め定められた閾値レベルが70%である場合、トポロジ情報抽出部210は、該予め定められた閾値レベル以上のパケット受信率を有する第1ノードをリレーノード候補として決定する。
【0060】
また、トポロジ情報抽出部210は、リレーノード候補にトレーニング下りパケットを送信する。ここで、トレーニング下りパケットは、トレーニング下りパケットを受信したノードがトレーニング下りパケットを受信したノードの周辺ノードにトレーニングパケットを送信するようにするパケットである。その際リレーノード候補は、周辺ノードにトレーニングパケットを送信し、トレーニングパケットを受信した周辺ノードから周辺ノードが受信したトレーニングパケットの個数に関する情報を含むトレーニングリポートパケットを受信する。リレーノード候補は、トレーニングリポートパケットの受信に応答してネイバー(ここで「ネイバー」は、近隣ノードを意味する)リポートパケット(neighbor report packet)を生成し、ネイバーリポートパケットをトポロジ情報抽出部210に送信する。ここで、ネイバーリポートパケットは、トレーニング下りパケットによってリレーノード候補が周辺ノードにトレーニングパケットを送信し、リレーノード候補が周辺ノードからトレーニングリポートパケットを受信した場合、受信したトレーニングリポートパケットをソースノードに報告するためのパケットを意味する。
ネイバーリポートフィールドは、トレーニングリポートパケットを送信した周辺ノードに関する情報、及び周辺ノードが受信したトレーニングパケットに関する情報を含む。例えば、ソースノード200と第2ノードとの間の距離が相対的に遠い場合、第2ノードのパケット受信率を抽出するためトポロジ情報抽出部210はソースノード200との距離が相対的に近い第1ノードにトレーニング下りパケットを送信し、第1ノードは、トレーニング下りパケットの受信に応答して第2ノードにトレーニングパケットを送信する。第2ノードは、受信したトレーニングパケットの個数に関する情報を含むトレーニングリポートパケットを生成し、該トレーニングリポートパケットを第1ノードに送信する。第1ノードは、受信したトレーニングリポートパケットに基づいて、第2ノードに関する情報及び第2ノードが受信したトレーニングパケットに関する情報を含むネイバーリポートパケットを生成する。ソースノード200は、第1ノードからネイバーリポートパケットを受信し、ネイバーリポートパケットを用いて、第1ノードに対する第2ノードのパケット受信率を演算する。
【0061】
一実施形態では、トポロジ情報抽出部210が送信するトレーニングパケットとリレーノード候補が送信するトレーニングパケットとを区別する。例えば、ソースノード200が送信するトレーニングパケットはタイプフィールドのフィールド値が1であり、リレーノード候補が送信するトレーニングパケットはタイプフィールドのフィールド値が2である。また、トポロジ情報抽出部210が受信するトレーニングリポートパケットと、リレーノード候補が受信するトレーニングリポートパケットとは区別される。例えば、トポロジ情報抽出部210が受信するトレーニングリポートパケットは、タイプフィールドのフィールド値が3であり、リレーノード候補が受信するトレーニングリポートパケットはタイプフィールドのフィールド値が4である。
【0062】
また、ソースノード200の周辺ノードが複数の他のノードからトレーニングリポートパケットを取得した場合、トポロジ情報抽出部210は、ソースノード200の周辺ノードからブロックトレーニングリポートパケット(block training report packet)を受信する。ここで、ブロックトレーニングリポートパケットは、ソースノード以外のノードが複数の他のノードからトレーニングリポートパケットを受信した場合、受信したトレーニングリポートパケットをソースノードに報告するためのパケットを意味する。ブロックトレーニングリポートパケットは、複数の他のノードにトレーニングパケットを送信したノードに関する情報、複数の他のノードに関する情報、及び複数の他のノードが受信したトレーニングパケットに関する情報を含む。
例えば、トポロジ情報抽出部210がリレーノード候補の第1ノードにトレーニング下りパケットを送信し、トレーニング下りパケットの受信に応答して第1ノードは第2ノード及び第3ノードにトレーニングパケットを送信する。第1ノードは、第2ノード及び第3ノード各々からトレーニングリポートパケットを受信し、受信したトレーニングリポートパケットを用いてブロックトレーニングリポートパケットを生成する。ここで、ブロックトレーニングリポートパケットは、第1ノードに関する情報、第2ノード及び第3ノードに関する情報、及び第2ノード及び第3ノードが受信したトレーニングパケットに関する情報を含む。トポロジ情報抽出部210は、第1ノードからブロックトレーニングリポートパケットを受信し、ブロックトレーニングリポートパケットから第2ノード及び第3ノードの各々と第1ノード間のチャネル状態を推定する。
【0063】
一実施形態において、トポロジ情報抽出部210は、マルチキャストネットワークに含まれた複数のノードのうち一部のノードをトレーニングノードとして選定し、複数のノードが一般パケットを送受信する途中周期的又は非周期的に選定されたトレーニングノードが受信したパケットに関する情報に基づいてトポロジ情報を抽出する。従って、トポロジ情報抽出部210は、複数のノード全体ではない一部のノードとトポロジ情報を抽出するためのパケットを送受信し、そのためにマルチキャストネットワークの負荷が減少し得る。
【0064】
一実施形態において、トポロジ情報抽出部210は、マルチキャストネットワークに含まれた複数のノードが一般パケットを送受信する際、複数のノードは、該複数のノード間のチャネル状態を持続的にモニタリング及びアップデートしてチャネル状態に対する統計情報をトポロジ情報抽出部210に送信する。トポロジ情報抽出部210は、受信した複数のノード間のチャネル状態に関する情報に基づいてトポロジ情報を抽出する。
【0065】
図3は、一実施形態に係るパケットの構造を説明するための図である。
図3及び
図4に対する説明で、ソースノードの動作は
図2に示すトポロジ情報抽出部210の動作を示す。
【0066】
図3を参照すると、ソースノードは、トレーニングパケット310、トレーニングリポートパケット320、トレーニング下りパケット330、ネイバーリポートパケット340、及びブロックトレーニングリポートパケット350を用いてマルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得する。
【0067】
トレーニングパケット310は、ソースノードがパケット受信率を測定するためにパケット受信率を測定しようとするノードに送信するパケットを意味する。トレーニングパケット310は、イーサヘッダ311、タイプフィールド312、送信量フィールド313、シーケンスフィールド314、及びデータフィールド315を含む。イーサヘッダ311はトレーニングパケット310のイーサネット(登録商標)タイプを示し、タイプフィールド312はトレーニングパケット310の属性を示す。例えば、タイプフィールド312のフィールド値が1である場合、トレーニングパケット310はソースノードから送信されるトレーニングパケットであり、タイプフィールド312のフィールド値が2である場合、トレーニングパケット310はソースノード以外の他のノードから送信されるトレーニングパケットである。
送信量フィールド313はノードから送信されるトレーニングパケットの全体送信個数を示し、シーケンスフィールド314はノードから送信されるトレーニングパケットのうち、トレーニングパケット310が何番目のトレーニングパケットであるかに関する情報を含む。データフィールド315は、ガロアフィールド(galois field)上におけるランダムデータを含む。一実施形態では、データフィールド315は、実際ノードが送受信するパケットの長さと同一である。例えば、ソースノードが第1ノードに1353bytesのパケットを送受信する場合、ソースノードは、データフィールド315を1353bytesに設定する。
【0068】
トレーニングリポートパケット320は、トレーニングパケットを受信したノードがトレーニングパケットを送信したノードにトレーニングパケットの受信に対する報告をするためのパケットを意味する。トレーニングリポートパケット320は、イーサヘッダ321、タイプフィールド322、送信量フィールド323、受信量フィールド324、及び処理率フィールド325を含む。イーサヘッダ321はトレーニングリポートパケット320のイーサネット(登録商標)タイプを示し、タイプフィールド322はトレーニングリポートパケット320の属性を示す。
例えば、タイプフィールド322のフィールド値が3である場合、トレーニングリポートパケット320は、ソースノードから送信されるトレーニングパケットに対するトレーニングリポートパケットであり、タイプフィールド322のフィールド値が4である場合、トレーニングリポートパケット320は、ソースノード以外の他のノードから送信されるトレーニングパケットに対するトレーニングリポートパケットである。送信量フィールド323はトレーニングパケットの全体送信個数を示し、受信量フィールド324はノードが実際に受信したトレーニングパケットの個数を示す。処理量フィールド325は、トレーニングリポートパケット320を送信するノードが測定した処理量を示す。
【0069】
トレーニング下りパケット330は、トレーニング下りパケットを受信したノードがトレーニング下りパケットを受信したノードの周辺ノードにトレーニングパケットを送信するようにするパケットを意味する。トレーニング下りパケット330は、イーサヘッダ331及びタイプフィールド332を含む。イーサヘッダ331はトレーニング下りパケット330のイーサネット(登録商標)タイプを示し、タイプフィールド332はトレーニング下りパケット330の属性を示す。一実施形態では、トレーニング下りパケット330のタイプフィールド332のフィールド値は5である。
【0070】
ネイバーリポートパケット340は、トレーニング下りパケットによりリレーノード候補が周辺ノードにトレーニングパケットを送信し、リレーノード候補が周辺ノードからトレーニングリポートパケットを受信した場合、受信したトレーニングリポートパケットをソースノードに報告するためのパケットを意味する。ネイバーリポートパケット340は、イーサヘッダ341、タイプフィールド342、リポートパケット数量フィールド343、アドレスフィールド344、送信量フィールド345、受信量フィールド346、処理量フィールド347を含む。
イーサヘッダ341はネイバーリポートパケット340のイーサネット(登録商標)タイプを示し、タイプフィールド342はネイバーリポートパケット340の属性を示す。例えば、タイプフィールド342のフィールド値は6である。リポートパケット数量フィールド343は、ネイバーリポートパケット340が報告するトレーニングリポートパケットの個数を示し、アドレスフィールド344は、n番目のトレーニングリポートフィールドに対応するノードのMACアドレスを示し、送信量フィールド345は、n番目のトレーニングリポートフィールドに対応するノードに送信したトレーニングパケットの個数を示し、受信量フィールド346は、n番目のトレーニングリポートフィールドに対応するノードが実際に受信したトレーニングパケットの個数を示す。処理量フィールド347は、ネイバーリポートパケット340が報告するトレーニングリポートパケット各々に対応するノードの測定処理量を示す。
【0071】
ブロックトレーニングリポートパケット350は、ソースノード以外のノードが他のノードからトレーニングリポートパケットを受信した場合、受信したトレーニングリポートパケットをソースノードに報告するためのパケットを意味する。ブロックトレーニングリポートパケット350は、イーサヘッダ351、タイプフィールド352、リポートパケット数量フィールド353、受信者アドレスフィールド354、送信者アドレスフィールド355、送信量フィールド356、受信量フィールド357、処理量フィールド358を含む。
【0072】
イーサヘッダ351はブロックトレーニングリポートパケット350のイーサネット(登録商標)タイプを示し、タイプフィールド352はブロックトレーニングリポートパケット350の属性を示す。例えば、タイプフィールド352のフィールド値は7である。リポートパケット数量フィールド353は、ブロックトレーニングリポートパケット350を生成するノードが受信したトレーニングリポートパケットの個数を示し、受信者アドレスフィールド354は、n番目のトレーニングリポートフィールドに対応するノードのアドレスを示し、送信者アドレスフィールド355は、n番目のトレーニングリポートフィールドに対応するノードにトレーニングパケットを送信したノードのアドレスを示し、送信量フィールド356は、n番目のトレーニングリポートフィールドに対応するノードに送信したトレーニングパケットの個数を示し、受信量フィールド357は、n番目のトレーニングリポートフィールドに対応するノードが実際に受信したトレーニングパケットの個数を示す。処理量フィールド358は、ブロックトレーニングリポートパケット350が報告するトレーニングリポートパケット各々に対応するノードが測定した処理量を示す。
【0073】
図4は、一実施形態に係る複数のノードの動作を説明するための図である。
【0074】
図4を参照すると、マルチキャストネットワークは、ソースノード410、第1ノード421、第2ノード422、第3ノード431、及び第4ノード432を含む。ここで例えば、第1ノード421及び第2ノード422は、ソースノード410からパケットを受信する1−ホップノードであり、第3ノード431及び第4ノード432は、1−ホップノードからパケットを受信する2−ホップノードである。
【0075】
ソースノード410は、予め定められた周期によりトポロジ情報を抽出するか、又は外部からの制御によりトポロジ情報を抽出する。ソースノード410は、第1ノード421及び第2ノード422にマルチキャストでトレーニングパケットを送信する。第1ノード421及び第2ノード422は、受信したトレーニングパケットの個数を測定し、トレーニングパケットの受信に応答してトレーニングリポートパケットをユニキャストでソースノード410に送信する。ソースノード410は、受信したトレーニングリポートパケットを用いて第1ノード421及び第2ノード422のパケット受信率を演算し、第1ノード421及び第2ノード422のパケット受信率が予め定められた閾値レベル以上である場合、第1ノード421及び第2ノード422をリレーノード候補として選択する。
ソースノード410は、トレーニングリポートパケットを受信した後、予め定められた時間が経過した後に、予め定められた規則に応じてリレーノード候補の第1ノード421及び第2ノード422のうち第1ノード421に先にトレーニング下りパケットを送信する。ソースノード410は、第1ノード421からネイバーリポートパケットを受信した後、第2ノード422にトレーニング下りパケットを送信する。一実施形態では、予め定められた時間の間に第1ノード421からネイバーリポートパケットを受信できない場合、ソースノード410は、第1ノード421にネイバーリポートパケットの再送信を要求する。もし、最大再送信回数に達するまで、ソースノード410が第1ノード421からネイバーリポートパケットを受信できない場合、ソースノード410は、第2ノード422にトレーニング下りパケットを送信する。
トレーニング下りパケットを受信した第1ノード421は、第3ノード431及び第4ノード432にトレーニングパケットを送信する。第1ノード421は、第3ノード431及び第4ノード432からトレーニングリポートパケットを受信し、予め定められた時間の経過後、受信したトレーニングリポートパケットに基づいてネイバーリポートパケットを生成し、生成したネイバーリポートパケットをソースノード410に送信する。一実施形態では、第1ノード421とソースノード410との間のチャネル状態が良好ではない場合、第1ノード421は、第3ノード431及び第4ノード432から受信したトレーニングリポートパケットに基づいてブロックトレーニングリポートパケットを生成し、生成したブロックトレーニングリポートパケットを第2ノード422に送信する。第2ノード422は、第1ノード421から受信したブロックトレーニングリポートパケットをソースノード410に送信する。ソースノード410は、他のノード421、422、431、432から受信したトレーニングリポートパケット、ネイバーリポートパケット、又はブロックトレーニングリポートパケットを用いてマルチキャストネットワークのトポロジ情報を抽出できる。
<リレーノード選択方式>
【0076】
図2を参照すると、リレーノード選択部220は、トポロジ情報抽出部210で抽出されたトポロジ情報に基づいてマルチキャストネットワークを構成する複数のノードのうちからリレーノードを選択する。ここで、リレーノードは、ソースノード200からパケットを受信し、受信したパケットを他のノードに中継するノード意味する。リレーノード選択部220は、トポロジ情報に基づいて複数のノードのうち、ソースノード200を除いた残りのノードを1−ホップノードグループ及び2−ホップノードグループに分類し、複数のリレーノード候補のパケット送信が残りのノードのうち少なくとも一部に及ぼす影響を考慮して、複数のリレーノード候補のうちからリレーノードを選択する。リレーノード選択部220の具体的な動作については、
図5乃至
図10を参照して詳細に説明する。
図5乃至
図10に関する説明で、ソースノードの動作は
図2に示すリレーノード選択部220の動作を示す。
【0077】
図5乃至
図10を説明するために、以下ではリレーノード選択部220で用いられるパラメータについて定義する。
【0078】
[1]予想パケット受信量
予想パケット受信量は、パケット送信成功率が一定の環境で、受信ノードが目標パケット受信量以上のパケットを受信する確率が閾値確率以上になるようにする受信ノードのパケット受信量を示す。ここで、受信ノードは、2−ホップノードを意味する。送信ノードのパケット送信成功率がpであり、送信ノードのパケット送信と異なるノードへのパケット送信は互いに独立的であると仮定するとき、受信ノードが目標受信量だけパケットを受信する確率は下記の数式(1)のように示される。
【0080】
ここで、Xは受信ノードのパケット受信量を示し、kは目標受信量を示し、Nは送信ノードのパケット送信量を示し、pは送信ノードのパケット送信成功率を示す。
【0081】
また、受信ノードが目標パケット受信量以上のパケットを受信する確率が閾値確率以上になるようにする受信ノードのパケット受信量の予想パケット受信量は、下記の数式(2)のように示される。
【0083】
ここで、Nは送信ノードのパケット送信量を示し、pは送信ノードのパケット送信成功率を示し、P
thは閾値確率を示す。Xは受信ノードのパケット受信量を示し、kは目標受信量を示し、k
*は予想パケット受信量を示す。そのため、予想パケット受信量k
*(N,p,P
th)は、パケット送信成功率がpである環境で送信ノードがN個のパケットを送信するとき、受信ノードが目標パケット受信量以上のパケットを受信する確率が閾値確率P
th以上になるようにする受信ノードのパケット受信量を意味する。予想パケット受信量k
*(N,p,P
th)の演算は算出複雑度が高い場合がある。そのような演算を回避するため、予想パケット受信量k
*(N,p,P
th)は、パケット送信量Nとパケット送信成功率pに対する多項式形態で近似化される。
一実施形態では、閾値確率P
thが0.99である時、予想パケット受信量k
*(N,p,P
th)はパケット送信量Nが10乃至20であり、パケット送信成功率pが0乃至1である領域に対してaNp
2の式で近似化される。例えば、aが0.7656に設定される場合、aNp
2は平均誤差が0.6である。
また、一実施形態では、予想パケット受信量k
*(N,p,P
th)は、ルックアップテーブルを用いて演算される。例えば、各々のパケット送信量N、パケット送信成功率p、及び閾値確率P
thに対する予想パケット受信量k
*(N,p,P
th)が予め算出されてルックアップテーブル形態として格納された場合、ノードはルックアップテーブルを参照して予想パケット受信量k
*(N,p,P
th)を抽出できる。
【0084】
[2]潜在的要求自由度(Potentially Required Degree of Freedom、PR−DoF)
潜在的要求自由度は、送信ノードからパケットを受信した受信ノードが追加的に受信しなければならないパケットの量を示す。ソースノードがノードiにパケットを送信する場合、ノードiの潜在的要求自由度は下記の数式(3)のように示される。
【0086】
ここで、PR−DoF
iはノードiの潜在的要求自由度を示し、Kはソースノードがオリジナルパケットを、ランダム行列を用いて符号化されたパケットに変換して符号化されたパケットをノードiに送信する場合のオリジナルパケットの個数を示し、N
sはソースノードがノードiに送信する符号化されたパケットの個数を示し、p
siはソースノードとノードiの間のパケット送信成功率を示し、P
thは閾値確率を示し、k
*はノードiの予想パケット受信量を示す。数式(3)は下記の数式(4)のように一般化できる。
【0088】
ここで、PR−DoF
ijは送信ノードiに対する受信ノードjの潜在的要求自由度を示し、K
j’は受信ノードjの以前潜在的要求自由度を示し、N
iは送信ノードiが受信ノードjに送信する符号化されたパケットの個数を示し、p
ijは送信ノードiと受信ノードjの間のパケット送信成功率を示し、P
thは閾値確率を示す。k
*は受信ノードjの予想パケット受信量を示す。これにより、ノードjの現在の潜在的要求自由度は、ノードjの以前潜在的要求自由度からノードjの予想パケット受信量を引いた値が正値の場合はその値を意味する。
【0089】
[3]要求送信量(number of required transmissions、RTX)
要求送信量は、ノードがリレーノード候補に送信を要求するパケットの量を意味する。ノードiのリレーノード候補jに対する要求送信量は数式(5)のように示される。
【0091】
ここで、M
ijはノードiのリレーノード候補jに対する要求送信量を示し、PR−DoF
iはノードiに対するリレーノード候補jの潜在的要求自由度を示し、K
j’はリレーノード候補jの以前潜在的要求自由度を示し、N
iはノードiがリレーノード候補jに送信する符号化されたパケットの個数を示し、p
ijはノードiとリレーノード候補jの間のパケット送信成功率を示し、P
thは閾値確率を示し、k
*は予想パケット受信量を示す。
【0092】
[4]最小要求送信量(minimum RTX、mRTX)
受信ノードの複数の送信ノードに対する要求送信量のうち量が最も少ない要求送信量を意味する。受信ノードjのリレーノード候補iに対する最小要求送信量は数式(6)のように示される。
【0094】
ここで、mRTX M
j*は受信ノードjの最小要求送信量を示す。
【0095】
[5]最適ノードグループ(Best Two−hop node Group、BTG)
最適ノードグループは、受信ノードのうち当該リレーノード候補に最小要求量のパケット送信をリクエストするノードから構成されたグループを意味する。リレーノード候補iの最適ノードグループは数式(7)のように示される。
【0097】
ここで、BTG
iはリレーノード候補iの最適ノードグループを示し、M
j*は受信ノードjの最小要求送信量を示し、M
ijは受信ノードjのリレーノード候補iに対する要求送信量を示す。これにより、リレーノード候補iの最適ノードグループは、複数のノードのうち最小要求送信量がリレーノード候補iに関する受信ノードから構成されたグループである。
【0098】
[6]最大要求送信量(Maximum RTX、MmRTX)
最大要求送信量は、最適ノードグループに含まれたノードの最小要求送信量のうち量が最も多い最小要求送信量を意味する。リレーノード候補iの最大要求送信量は、数式(8)のように示される。
【0100】
M
i’はリレーノード候補iの最大要求送信量を示し、M
j*は受信ノードjの最小要求送信量を示し、BTG
iはリレーノード候補iの最適ノードグループを示す。一実施形態では、リレーノード候補iの最大要求送信量は、リレーノード候補iの最適ノードグループに含まれたノードに送信しなければならないパケットの量を意味する。
【0101】
[7]第1ユーティリティ(utility)
第1ユーティリティは、リレーノード候補の最大要求送信量による最適ノードグループに含まれたノードへのパケット送信が周辺ノードに及ぼす影響を示す。リレーノード候補iの第1ユーティリティは数式(9)のように示される。
【0103】
ここで、Sは受信ノードの集合を示す。マルチキャストネットワークの状況に応じて、集合Sはリレーノード候補iの最適ノードグループを示すか、又はマルチキャストネットワークを構成する複数のノード全体を示す。U
iはリレーノード候補iの第1ユーティリティを示し、K
j’は受信ノードjの以前潜在的要求自由度を示し、p
ijはリレーノード候補iと受信ノードjの間のパケット送信成功率を示し、P
thは閾値確率を示し、M
i’はリレーノード候補iの最大要求送信量を示し、k
*は受信ノードjの予想パケット受信量を示す。そのため、数式(9)による第1ユーティリティは、リレーノード候補iがM
i’個のパケットを再送信する場合、マルチキャストネットワークを構成する複数のノードに送信できるパケットの数を意味する。
【0104】
また、第1ユーティリティは数式(10)のように示される。
【0106】
ここで、U
iはリレーノード候補iの第1ユーティリティを示し、BTG
iはリレーノード候補iの最適ノードグループを示す。そのため、数式(10)による第1ユーティリティは、リレーノード候補iが満足する受信ノードの個数を意味する。一実施形態において、ソースノードは、リレーノード候補iの数式(10)による第1ユーティリティとリレーノード候補jの数式(10)による第1ユーティリティとが互いに同一である場合、最大要求送信量が小さいリレーノード候補をリレーノードとして決定する。
【0107】
また、第1ユーティリティは数式(11)のように示される。
【0109】
ここで、U
iはリレーノード候補iの第1ユーティリティを示し、Sはマルチキャストネットワークを構成する複数のノードの集合を示し、K
j’は受信ノードjの以前潜在的要求自由度を示し、N
iはリレーノード候補iが受信ノードjに送信する符号化されたパケットの個数を示し、p
ijはリレーノード候補iと受信ノードjの間のパケット送信成功率を示し、P
thは閾値確率を示す。
【0110】
図5は、一実施形態に係るリレーノード選択方式を説明するための動作フローチャートである。
【0111】
図5を参照すると、ソースノードはトポロジ情報を取得する(S510)。即ち、ソースノードは、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得してマルチキャストネットワークのトポロジ情報を抽出する。
【0112】
また、ソースノードは、マルチキャストネットワークを構成する複数のノードのうち、ソースノードを除いた残りのノードを、1−ホップノードグループ及び2−ホップノードグループに分類する(S520)。ここで、1−ホップノードグループはソースノードからパケットを受信するノードのグループを意味し、2−ホップノードグループはソースノードで送信されたパケットを1−ホップノードの中継により受信するノードのグループを意味する。ソースノードは、トポロジ情報を用いて、マルチキャストネットワークを構成する複数のノードのうち、ソースノードを除いた残りのノード各々の予想パケット受信量を上述した数式(2)により推定する。ここで、予想パケット受信量は、残りのノード各々が目標パケット受信量以上のパケットを受信する確率が予め定められた閾値確率以上にする残りのノード各々のパケット受信量を意味する。
ソースノードは、上述した数式(3)により、残りのノードの予想パケット受信量に基づいて残りのノード各々の潜在的要求自由度を推定する。ここで、潜在的要求自由度は、残りのノード各々が他のノードからパケットを受信した後に追加的に受信しなければならないパケットの量を示す。ソースノードは、潜在的要求自由度が低いノードを1−ホップノードグループに決定し、潜在的要求自由度が高いノードを2−ホップノードグループに決定する。例えば、ソースノードは、潜在的要求自由度が0であるノードを1−ホップノードグループに決定し、潜在的要求自由度が0よりも大きいノードを2−ホップノードグループに決定する。
【0113】
また、ソースノードは、システムパラメータを推定する(S530)。ここで、システムパラメータは、要求送信量、最小要求送信量、最大要求送信量、及び第1ユーティリティを含む。
【0114】
一実施形態では、ソースノードは2−ホップノードグループに含まれた少なくとも1つのノード各々に対して要求送信量を演算する。そのために、ソースノードは、上述した数式(4)により複数のリレーノード候補各々に対する2−ホップノードグループに含まれた少なくとも1つのノード各々の潜在的要求自由度を演算する。ソースノードは、上述した数式(5)により、複数のリレーノード候補各々に対する2−ホップノードグループに含まれた少なくとも1つのノード各々の潜在的要求自由度に基づいて、2−ホップノードグループに含まれた少なくとも1つのノード各々の複数のリレーノード候補各々に対する要求送信量を演算する。
【0115】
一実施形態において、ソースノードは、上述した数式(6)に基づいて2−ホップノードグループに含まれた少なくとも1つのノード各々に対し、2−ホップノードグループに含まれた少なくとも1つのノード各々の要求送信量のうち量が最も少ない要求送信量を示す最小要求送信量を推定する。
【0116】
一実施形態では、ソースノードは、上述した数式(7)に基づいて複数のリレーノード候補各々に対して、2−ホップノードグループに含まれた少なくとも1つのノードのうち、当該リレーノード候補に最小要求量のパケット送信をリクエストするノードから構成された最適ノードグループを抽出する。
【0117】
一実施形態では、ソースノードは、上述した数式(8)に基づいて複数のリレーノード候補各々に対して、最適ノードグループに含まれたノードの最小要求送信量のうち量が最も多い最小要求送信量を示す最大要求送信量を推定する。
【0118】
一実施形態において、ソースノードは、上述した数式(9)、数式(10)又は数式(11)のうち少なくとも1つに基づいて、複数のリレーノード候補各々に対して第1ユーティリティを推定する。ここで、第1ユーティリティは、複数のリレーノード候補各々の最大要求送信量による最適ノードグループに含まれたノードへのパケット送信が残りのノードのうち少なくとも一部に及ぼす影響を示す。
【0119】
また、ソースノードは、リレーノード及びリレーノードのパケット送信量を決定する(S540)。一実施形態において、ソースノードは、複数のリレーノード候補のうち第1ユーティリティの大きさが最も大きいリレーノード候補をリレーノードとして決定し、選択されたリレーノードのパケット送信量を決定する。他の一実施形態では、ソースノードは、複数のリレーノード候補のうち最大要求送信量の大きさが最も大きいリレーノード候補をリレーノードとして決定し、選択されたリレーノードのパケット送信量を決定する。
【0120】
また、ソースノードは、リレーノードの総パケット送信量が予め定められた最大パケット送信量以下であるか否かを判断する(S550)。リレーノードの総パケット送信量が予め定められた最大パケット送信量よりも大きい場合、ソースノードは、リレーノードのパケット送信量が予め定められた最大パケット送信量以下となるようにリレーノードのパケット送信量を修正する(S551)。
【0121】
また、ソースノードは、リレーノードの総パケット送信量が予め定められた最大パケット送信量以下である場合、システムパラメータをアップデートする(S560)。一実施形態では、ソースノードは、潜在的要求自由度、要求送信量、最小要求送信量、最大要求送信量、及び第1ユーティリティをリレーノードに基づいてアップデートする。
【0122】
また、ソースノードは、残りのノードがパケット受信を完了したか否かを判断する(S570)。残りのノードがパケット受信を完了していない場合、ソースノードは、ステップS530乃至ステップS570を繰り返して行う。残りのノードがパケット受信を完了した場合、ソースノードは遊休(idle)状態になる。
【0123】
図6は、他の一実施形態に係るリレーノード選択方式を説明するための動作フローチャートである。
【0124】
図6を参照すると、ソースノードはトポロジ情報を取得する(S610)。ソースノードは、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得して、チャネル状態の情報からマルチキャストネットワークのトポロジ情報を抽出する。
【0125】
また、ソースノードは、マルチキャストネットワークを構成する複数のノードのうち、ソースノードを除いた残りのノードの潜在的要求自由度を推定する(S620)。潜在的要求自由度は、残りのノード各々が他のノードからパケットを受信した後に追加的に受信しなければならないパケットの量を示す。ソースノードは、残りのノード各々の上述した数式(2)により予想パケット受信量を予測し、上述した数式(3)により残りのノードの予想パケット受信量に基づいて残りのノード各々の潜在的要求自由度を推定する。
【0126】
また、ソースノードは、残りのノードを1−ホップノードグループ及び2−ホップノードグループに分類する(S630)。ソースノードは、潜在的要求自由度の低いノードを1−ホップノードグループに決定し、潜在的要求自由度の高いノードを2−ホップノードグループに決定する。例えば、ソースノードは、潜在的要求自由度が0であるノードを1−ホップノードグループに決定し、潜在的要求自由度が0よりも大きいノードを2−ホップノードグループに決定する。
【0127】
また、ソースノードは、2−ホップノードグループに含まれた少なくとも1つのノード各々に対して要求送信量を演算する(S640)。ソースノードは、上述した数式(5)により、複数のリレーノード候補各々に対する2−ホップノードグループに含まれた少なくとも1つのノード各々の潜在的要求自由度に基づいて、2−ホップノードグループに含まれた少なくとも1つのノード各々の複数のリレーノード候補各々に対する要求送信量を演算する。
【0128】
また、ソースノードは、最小要求送信量、最大要求送信量、及び第1ユーティリティを推定する(S650)。ソースノードは、上述した数式(6)に基づいて2−ホップノードグループに含まれた少なくとも1つのノード各々の最小要求送信量を推定する。また、ソースノードは、上述した数式(7)に基づいて複数のリレーノード候補各々の最適ノードグループを抽出し、上述した数式(8)に基づいて、複数のリレーノード候補各々の最大要求送信量を推定する。また、ソースノードは、上述した数式(9)、数式(10)又は数式(11)のうち少なくとも1つに基づいて、複数のリレーノード候補各々に対して第1ユーティリティを推定する。
【0129】
また、ソースノードは、リレーノード及びリレーノードのパケット送信量を決定する(S660)。一実施形態では、ソースノードが上述した数式(9)又は数式(10)に基づいて複数の候補リレーノード各々に対して第1ユーティリティを推定した場合、ソースノードは、複数のリレーノード候補のうち第1ユーティリティの大きさが最も大きいリレーノード候補をリレーノードとして決定し、選択されたリレーノードの最大要求送信量をリレーノードのパケット送信量として決定する。他の一実施形態において、ソースノードは、複数のリレーノード候補のうち最大要求送信量の大きさが最も大きいリレーノード候補をリレーノードとして決定し、選択されたリレーノードの最大要求送信量をリレーノードのパケット送信量として決定する。
【0130】
また、ソースノードは、リレーノードの総パケット送信量が予め定められた最大パケット送信量以下であるか否かを判断する(S670)。一実施形態では、予め定められた最大パケット送信量は、リレーノードが測定した処理量に基づいて設定される。リレーノードの総パケット送信量が予め定められた最大パケット送信量よりも大きい場合、ソースノードは、リレーノードのパケット送信量が予め定められた最大パケット送信量以下となるようにリレーノードのパケット送信量を修正する(S671)。
【0131】
また、ソースノードは、リレーノードの総パケット送信量が予め定められた最大パケット送信量以下である場合、残りのノードの潜在的要求自由度をアップデートする(S680)。
【0132】
また、ソースノードは、残りのノードの潜在的要求自由度が0であるか否かを判断する(S690)。残りのノードのうちの潜在的要求自由度が0よりも大きいノードが存在する場合、ソースノードはステップS650乃至ステップS690を繰り返して行う。残りのノードの潜在的要求自由度が0である場合、ソースノードは遊休状態となる。一実施形態では、マルチキャストネットワークを構成する複数のノードで送信されたパケットの個数が予め定められた閾値個数以上である場合、ソースノードは遊休状態となる。
【0133】
図7は、一実施形態に係るリレーノードの選択を説明するための図である。
【0134】
図7を参照すると、マルチキャストネットワーク700は、複数のノード710乃至760を含む。ソースノード710は、複数のノード710乃至760のトポロジ情報を取得する。
図7に示す例として、各ノード間の線上に表示された数は各線に連結されているノード間における送信ノードのパケット送信成功率を示す。ソースノード710は、トポロジ情報を用いて複数のノード710乃至760間のパケット送信成功率に関する情報を抽出する。ソースノード710は、10個のオリジナルパケットを20個の符号化されたパケットに符号化し、各々のノードに20個の符号化されたパケットを送信する。
【0135】
ソースノード710は、上述したように、数式(2)を近似化した式、aNp
2を用いて残りのノード720乃至760の予想パケット送信量を推定する。ここで、aは例えば0.8に設定される。また、ソースノード710は、上述した数式(3)を用いて残りのノード720乃至760の潜在的要求自由度を推定する。この場合、第1ノード720及び第2ノード730の潜在的要求自由度は0と推定され、第3ノード740の自由度は8と推定され、第4ノード750の自由度は10と推定され、第5ノード760の自由度は10と推定される。この結果を用いて、ソースノード710は、潜在的要求自由度が0である第1ノード720及び第2ノード730を1−ホップノードグループに分類し、潜在的要求自由度が0を超過する第3ノード740、第4ノード750及び第5ノード760を2−ホップノードグループに分類する。
【0136】
ソースノード710は、上述した数式(5)に基づいて2−ホップノードグループに含まれたノード740乃至760の要求送信量を推定する。この場合、第3ノード740の第1ノード720に対する要求送信量M
13は13と推定され、第3ノード740の第2ノード730に対する要求送信量M
23は28と推定される。第4ノード750の第1ノード720に対する要求送信量M
14は20と推定され、第4ノード750の第2ノード730に対する要求送信量M
24は16と推定され、第5ノード760の第2ノード730に対する要求送信量M
25は20と推定される。
【0137】
また、ソースノード710は上述した数式(6)により、第3ノードの最小要求送信量M
3*を第3ノード740の第1ノード720に対する要求送信量M
13である13と推定し、第4ノードの最小要求送信量M
4*を第4ノード750の第2ノード730に対する要求送信量M
24である16と推定し、第5ノードの最小要求送信量M
5*を第5ノード760の第2ノード730に対する要求送信量M
25である20と推定する。
【0138】
また、ソースノード710は、上述した数式(7)に基づいて第1ノード720の最適ノードグループに第3ノード740を含ませ、上述した数式(8)により第1ノード720の最大要求送信量M
1’を第3ノード740の第1ノード720に対する要求送信量M
13である13と推定する。また、ソースノード710は、上述した数式(7)に基づいて、第2ノード730の最適ノードグループに第4ノード750及び第5ノード760を含ませ、上述した数式(8)により第2ノード730の最大要求送信量M
2’を第5ノード760の第2ノード730に対する要求送信量M
25である20と推定する。
【0139】
また、ソースノード710は、上述した数式(9)に基づいて第1ノード720の第1ユーティリティU
1を14と推定し、第2ノード730の第1ユーティリティU
2を25と推定する。一実施形態では、第2ノード730の第1ユーティリティU
2が第1ノード720の第1ユーティリティU
1より値が大きいため、ソースノード710は第2ノード730をリレーノードとして決定し、第2ノード730のパケット送信量を第2ノード730の最大要求送信量M
2’である20に決定する。
【0140】
リレーノードである第2ノード730のパケット送信量が予め定められた最大パケット送信量よりも小さいと判断された場合、ソースノード710は上述した数式(3)を用いて、残りのノード720乃至760の潜在的要求自由度をアップデートする。この場合、第1ノード720、第2ノード730、第4ノード750、及び第5ノード760の潜在的要求自由度は0と推定される、第3ノード740の自由度は3と推定される。その場合、ソースノード710は、潜在的要求自由度は0である第1ノード720、第2ノード730、第4ノード750、及び第5ノード760を1−ホップノードグループに分類し、潜在的要求自由度が0を超過する第3ノード740を2−ホップノードグループに分類できる。
【0141】
ソースノード710は、上述した数式(5)に基づいて2−ホップノードグループに含まれたノードである第3ノード740の要求送信量を推定する。この場合、第3ノード740の第1ノード720に対する要求送信量M
13は5と推定される。また、ソースノード710は上述した数式(6)により、第3ノード740の最小要求送信量M
3*を第3ノード740の第1ノード720に対する要求送信量M
13である5と推定し、ソースノード710は、上述した数式(7)に基づいて第1ノード720の最適ノードグループに第3ノード740を含ませ、上述した数式(8)により第1ノード720の最大要求送信量M
1’を第3ノード740の第1ノード720に対する要求送信量M
13である5と推定する。
【0142】
また、ソースノード710は、上述した数式(9)に基づいて第1ノード720の第1ユーティリティU
1を3と推定し、第1ノード720をリレーノードとして決定する。また、ソースノード710は、第1ノード720のパケット送信量を第1ノード720の最大要求送信量M
1’である3に決定する。その後、リレーノードである第1ノード720のパケット送信量が予め定められた最大パケット送信量よりも小さいと判断された場合、ソースノード710は、上述した数式(3)を用いて残りのノード720乃至760の潜在的要求自由度をアップデートする。アップデートの結果、残りのノード720乃至760の潜在的要求自由度が0である場合、ソースノード710は遊休状態になる。
【0143】
図8(A)及び(B)は、一実施形態に係るネットワークユーティリティを説明するための図である。
【0144】
図8(A)及び(B)を参照すると、グラフ810は、リレーノード候補iに送信するパケットの量N
iによる受信ノードjの第2ユーティリティの変化を示すグラフである。ここで、受信ノードjの第2ユーティリティは、リレーノード候補iの受信ノードjへのパケット送信による受信ノードjの満足度を示す。ここで、受信ノードjは、2−ホップノードグループに含まれるものとする。リレーノード候補iの受信ノードjへのパケット送信による受信ノードjの第2ユーティリティは、数式(12)のように示される。
【0146】
U
ijはリレーノード候補iの受信ノードjへのパケット送信による受信ノードjの第2ユーティリティを示し、k
*は受信ノードjの予想パケット受信量を示し、K
j’は受信ノードjの以前潜在的要求自由度を示し、N
iはリレーノード候補iが受信ノードjに送信する符号化されたパケットの個数を示し、p
ijはリレーノード候補iと受信ノードjとの間のパケット送信成功率を示し、P
thは閾値確率を示す。一実施形態では、受信ノードjの第2ユーティリティは受信ノードjの以前潜在的要求自由度K
j’に収斂する。
【0147】
グラフ820は、リレーノード候補iが送信するパケットの量によるリレーノード候補iのネットワークユーティリティの変化を示すグラフである。ここで、リレーノード候補iのネットワークユーティリティは、リレーノード候補iのパケット送信による2−ホップノードグループの満足度を示す。リレーノード候補iのネットワークユーティリティは、数式(13)のように示される。
【0149】
ここで、U
iはリレーノード候補iのネットワークユーティリティを示し、U
ijはリレーノード候補iの受信ノードjへのパケット送信による受信ノードjの第2ユーティリティを示し、Sは受信ノードの集合を示す。マルチキャストネットワークにより、集合Sは可変される。集合Sに属する受信ノードjの第2ユーティリティU
ijの和は最大値が特定値に収斂する。例えば、集合Sに属する受信ノードjの第2ユーティリティU
ijの和は、受信ノードjの以前潜在的要求自由度K
j’の和である、
に収斂する。一実施形態では、グラフ820の「変曲点」(ここでは、傾きが不連続に変化する点)821、822、823のように、リレーノード候補iに送信するパケットの量によるリレーノード候補iのネットワークユーティリティの傾きが変更されるごとに、ソースノードは新しいリレーノードを選定し、選定されたリレーノードのパケット送信量を決定する。
【0150】
図9は、更なる一実施形態に係るリレーノード選択方式を説明するための動作フローチャートである。
【0151】
図9を参照すると、ソースノードはトポロジ情報を取得する(S910)。ソースノードは、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得して、チャネル状態の情報からマルチキャストネットワークのトポロジ情報を抽出する。
【0152】
また、ソースノードは、マルチキャストネットワークを構成する複数のノードのうち、ソースノードを除いた残りのノードを1−ホップノードグループ及び2−ホップノードグループに分類する(S920)。ソースノードは、トポロジ情報を用いて、マルチキャストネットワークを構成する複数のノードのうち、ソースノードを除いた残りのノード各々の予想パケット受信量を上述した数式(2)により推定する。また、ソースノードは、上述した数式(3)により、残りのノードの予想パケット受信量に基づいて残りのノード各々の潜在的要求自由度を推定する。また、ソースノードは、潜在的要求自由度の低いノードを1−ホップノードグループに決定し、潜在的要求自由度の高いノードを2−ホップノードグループに決定する。
【0153】
また、ソースノードは、複数のリレーノード候補各々のネットワークユーティリティを推定する(S930)。ソースノードは、2−ホップノードグループに含まれたノード各々に対して、上述した数式(12)に基づいて複数のリレーノード候補各々の2−ホップノードグループに含まれたノードへのパケット送信による2−ホップノードグループに含まれたノードの満足度を示す第2ユーティリティを推定し、複数のリレーノード候補各々に対して、上述した数式(13)に基づいてネットワークユーティリティを推定する。
【0154】
また、ソースノードは、リレーノード及びリレーノードのパケット送信量を決定する(S940)。ソースノードは、ソースノードがマルチキャストネットワークを構成する複数のノードのうち、ソースノードを除いた残りのノードにパケットを送信すると仮定するとき、上述した数式(13)を用いてソースノードのネットワークユーティリティを推定し、ソースノードが送信するパケットの量によるソースノードのネットワークユーティリティの傾きを抽出する。
ソースノードが送信するパケットの量によるソースノードのネットワークユーティリティの傾きが変更される場合、ソースノードは、上述した数式(13)に基づいて複数のリレーノード候補各々のネットワークユーティリティを推定し、複数のリレーノード候補各々に対して、複数のリレーノード候補各々が送信するパケットの量による複数のリレーノード候補各々のネットワークユーティリティの傾きを抽出する。ソースノードは、抽出されたノードのネットワークユーティリティの傾きを比較し、傾きが最も大きいノードをリレーノードとして決定する。
また、リレーノードに送信するパケットの量によるリレーノードのネットワークユーティリティの傾きが変更されるごとに、ソースノードは複数のリレーノード候補各々の第2ユーティリティをアップデートし、複数のリレーノード候補のうち、リレーノード候補に送信するパケットの量による第2ユーティリティの傾きが最も大きいリレーノード候補をリレーノードとして選択する。
一実施形態では、リレーノードに送信するパケットの量によるリレーノードのネットワークユーティリティの傾きが変更されるとき、ソースノードは、追加されるリレーノード候補があるか否かを判断する。追加されるリレーノード候補が存在する場合、ソースノードは、追加されるリレーノード候補のネットワークユーティリティを推定し、追加されるリレーノード候補が送信するパケットの量による追加されるリレーノード候補のネットワークユーティリティの傾きを抽出する。
また、一実施形態では、リレーノードを選択する場合、リレーノードに送信するパケットの量によるリレーノードのネットワークユーティリティの傾きが変更されるまで、選択されたリレーノードのパケット送信量を決定する。
【0155】
また、ソースノードは、リレーノードの総パケット送信量が予め定められた最大パケット送信量以下であるか否かを判断する(S950)。一実施形態では、予め定められた最大パケット送信量は、リレーノードが測定した処理量に基づいて設定され得る。リレーノードの総パケット送信量が予め定められた最大パケット送信量よりも大きい場合、ソースノードは、リレーノードのパケット送信量が予め定められた最大パケット送信量以下となるようにリレーノードのパケット送信量を修正する(S951)。
【0156】
また、ソースノードは、残りのノードがパケット受信を完了したか否かを判断する(S960)。残りのノードがパケット受信を完了していない場合、ソースノードは、ステップS940乃至ステップS960を繰り返して行う。残りのノードがパケット受信を完了した場合、ソースノードは遊休状態になる。
【0157】
図10は、一実施形態に係るリレー選択パケットの構造を説明するための図である。
【0158】
図10を参照すると、ソースノードが複数のリレーノード候補のうちからリレーノード及びリレーノードのパケット送信量を選択する場合、ソースノードは、リレーノードにリレー選択パケット1000を送信する。
【0159】
一実施形態では、リレー選択パケット1000は、イーサヘッダ1010、タイプフィールド1020、オリジナルパケットフィールド1030、及び符号化パケットフィールド1040を含む。イーサヘッダ1010はリレー選択パケット1000のイーサネット(登録商標)タイプを示し、タイプフィールド1020はリレー選択パケット1000の属性を示す。例えば、タイプフィールド1020のフィールド値は8である。オリジナルパケットフィールド1030は、符号化されたパケットに変換するオリジナルパケットの数を示し、符号化パケットフィールド1040は、変換される符号化されたパケットの数を示す。
<マトリックスネットワークコーディングを用いた符号化及び復号化方式>
【0160】
図11は、一実施形態に係るノードを示すブロック図である。
【0161】
図11を参照すると、ノード1100は、符号化部1110及び復号化部1120を含む。符号化部1110は、イーサネット(登録商標)モジュールからオリジナルパケットを受信し、オリジナルパケットを複数のサブパケットに分類し、複数のサブパケットとランダム行列を演算して符号化されたデータを生成する。一実施形態において、符号化部1110は、符号化されたデータに符号化されたデータに関する情報を含む第1ヘッダを付加する。ここで、第1ヘッダは、オリジナルパケットの個数に関する情報、ランダム行列の長さに関する情報、符号化されたパケットの識別子に関する情報、ランダム行列の係数に関する情報、及び符号化されたパケットのタイプに関する情報のうち少なくとも1つを含む。
ここで、符号化されたパケットのタイプに関する情報は、組織コード(systematic code)及び非組織コード(non−systematic code)を含む。組織コードは、符号化されたパケットを無線LANモジュールに送信する以前にオリジナルパケットを無線LANモジュールに送信するコードを意味し、非組織コードは、符号化されたパケットのみを無線LANモジュールに送信するコードを意味する。また、符号化部1110は、符号化されたパケットにオリジナルパケットのイーサネット(登録商標)タイプに関する情報を含む第2ヘッダを付加する。
【0162】
一実施形態において、符号化部1110は、受信したK個のオリジナルパケットを、マトリックスネットワークコーディングを用いてN個の符号化されたパケットに変換する(N≧K)。例えば、符号化部1110は、K個のランダム行列を用いてイーサネット(登録商標)モジュールから受信したK個のオリジナルパケットをN個の符号化されたパケットに変換し、N個の符号化されたパケットを無線LANモジュールに送信する。ノード1100は、N個の符号化されたパケットを他のノードに送信する。
一実施形態では、符号化されたパケットを受信するノードがN個の符号化されたパケットのうちK個以上の符号化されたパケットを受信する場合、符号化されたパケットを受信するノードがK個のオリジナルパケットを取得する確率が高まり、信頼性は増加する。一方、ノード1100が送信する符号化されたパケットの個数が増加するほど、符号化されたパケットを送受信するノードのオーバヘッドも増加する。これに対処するため、ノード1100は、オリジナルパケットの個数のK個と符号化されたパケットの個数のN個の比率を調整し、符号化されたパケットを送受信するノードの信頼度及びオーバヘッドを調整する。
【0163】
復号化部1120は、他のノードから受信した符号化されたパケットに基づいて生成された生成子行列を用いて符号化されたパケットをオリジナルパケットに変換する。一実施形態では、復号化部1120は、受信した符号化されたパケットから行列係数を抽出して生成子行列を生成する。例えば、受信した符号化されたパケットの個数がK個である場合、復号化部1120は、K個の符号化されたパケットから行列係数を抽出し、pK×pKの大きさの生成子行列を生成する。ここで、pは、符号化部1110でオリジナルパケットが分割された複数のサブパケット各々の長さを意味する。復号化部1120は、生成子行列の逆行列を抽出し、符号化されたパケットと生成子行列の逆行列を乗算してオリジナルパケットを抽出する。ここで、復号化部1120は、LU分解(LU decomposition)方式を用いてもよい。これにより、復号化部1120の復号化速度を向上できる。
【0164】
図12は、一実施形態に係る符号化方式を説明するための図である。
図12及び
図13に対する説明において、ノードの動作は
図11に示す符号化部1110の動作を示す。
【0165】
図12を参照すると、K個のオリジナルパケット1210を符号化するために、ノードは、K個のオリジナルパケット1210の各々をq個のサブパケットに分割する。ここで、K個のオリジナルパケット1210の各々はLシンボルの長さを有し、q個のサブパケットの各々はpシンボルの長さを有する。ノードは、p×pの大きさを有するK個のランダム行列A
1乃至A
Kを生成し、K個のオリジナルパケット1210の各々に対してインデックスの一致するランダム行列を選択し、当該インデックスを有するオリジナルパケットのサブパケットと選択されたランダム行列を乗算する。
例えば、第1パケット1221の各サブパケットは第1ランダム行列A
1(1231)と乗算され、第2パケット1222の各サブパケットは第2ランダム行列A
2(1232)と乗算され、第Kパケット1223のサブパケットは第Kランダム行列A
K(1233)と乗算される。ノードは、ランダム行列と乗算された各々のサブパケットを加算して1つの符号化されたパケット1240を生成する。一実施形態では、
図12におけるシンボル及び演算は、ガロアフィールドで定義されたものと仮定する。ノードは上述した過程をN番繰り返し、N個の符号化されたパケットを生成できる。
【0166】
図13は、一実施形態に係る符号化されたパケットの構造を説明するための図である。
【0167】
図13を参照すると、オリジナルパケット1310は、イーサヘッダ1311、IPフィールド1312、UDPフィールド1313、及びデータフィールド1314を含む。イーサヘッダ1311は、オリジナルパケット1310のイーサネット(登録商標)タイプを示す。ノードは、IPフィールド1312、UDPフィールド1313、及びデータフィールド1314に対して符号化を行う。
【0168】
符号化されたパケット1320は、イーサヘッダ1321、MNCヘッダ1322、及び符号化されたデータフィールド1323を含む。符号化されたデータフィールド1323は、オリジナルパケット1310のIPフィールド1312、UDPフィールド1313、及びデータフィールド1314が変換された部分を意味する。イーサヘッダ1321は、符号化されたパケット1320のイーサネット(登録商標)タイプを示す。MNCヘッダ1322は、Kフィールド1331、pフィールド1332、eidフィールド1333、sysフィールド1334、及びcoefficientフィールド1335を含む。
【0169】
Kフィールド1331はオリジナルパケットの個数Kを示し、pフィールド1332は、符号化を行うときにオリジナルパケット1310のサブパケットに乗算されるランダム行列の長さpを示す。eidフィールド1333は、符号化されたパケットの識別子を示す。例えば、ノードは符号化を行うごとにeidフィールド1333の値を1ずつ増加し、符号化されたパケットを区別する。sysフィールド1334は、符号化されたパケットのタイプを示す。ここで、符号化されたパケットのタイプに関する情報は、組織コード及び非組織コードを含む。組織コードは、符号化されたパケットをノードの無線LANモジュールに送信する以前に、オリジナルパケットをノードの無線LANモジュールに送信するコードを意味し、非組織コードは、符号化されたパケットのみをノードの無線LANモジュールに送信するコードを意味する。coefficientフィールド1335は、有限フィールドの元素として、ノードは有限フィールド演算を用いて符号化及び復号化を行う。coefficientフィールド1335の大きさは、符号化にために用いた有限フィールドの大きさfinite_field_size、ランダム行列の長さp、及びオリジナルパケットの個数Kに比例する。一実施形態では、coefficientフィールド1335の大きさは、数式(14)のように示される。
【0171】
ここで、|finite_field_size|は符号化にために用いた有限フィールドの大きさを示し、pはランダム行列の長さを示し、Kはオリジナルパケットの個数を示す。一実施形態では、ノードは、予め定められた処理方式を用いてMNCヘッダ1322の大きさを減し得る。
【0172】
一実施形態では、ノードはオリジナルパケットを取得する場合、これをパケットキュー(packet_queue、以下、MNCキューともいう)に格納し、パケットキューにK個のオリジナルパケットが格納された場合、ノードは符号化を行う。ここで、符号化されたパケットが組織コードに従う場合、ノードはK個のオリジナルパケットにMNCヘッダ1322を付加し、(N−K)個の符号化されたパケットを生成し、符号化されたパケットにMNCヘッダ1322を付加する。また、符号化されたパケットが非組織コードに従う場合、ノードはN個の符号化されたパケットを生成し、符号化されたパケットにMNCヘッダ1322を付加する。一実施形態では、予め定められた時間の間にノードがK個のオリジナルパケットを取得できない場合、ノードは格納されているパケットのみを符号化する。これは、符号化の遅延時間が長くなることを防止するためである。
【0173】
図14は、一実施形態に係る復号化方式を説明するための図である。
図14に対する説明において、ノードの動作は
図11に示す復号化部1120の動作を示す。
【0174】
図14を参照すると、ノードは、パケットキューリストを用いて符号化されたパケットを復号化する。パケットキューリストは、パケットキューヘッド1410と複数のパケットキュー1420、1430、1440を含む。パケットキューヘッド1410及び複数のパケットキュー1420、1430、1440は、連結リスト(linked list)の形態に構成される。パケットキューヘッド1410は、パケットキューリストの初期ポインタを示す。パケットキューヘッド1410は、「next」データ1411及び「qlen」データ1412を含む。「next」データ1411は第1パケットキュー1420のアドレス値を示し、「qlen」データ1412は複数のパケットキュー1420、1430、1440の個数を示す。第1パケットキュー1420は、「next」データ1421、「prev」データ1422、「list」データ1423、「eid」データ1424、「etime」データ1425、及びパケットデータ1426を含んでもよい。「next」データ1421は第2パケットキュー1430のアドレス値を示し、「prev」データ1422は以前パケットキューのアドレス値を示す。第1パケットキュー1420の場合、以前パケットキューが存在しないため、prevデータ1422は「null」である。「list」データ1423は、パケットキューヘッド1410の「next」データ1411を指示し、パケットデータ1426は、第1パケットキュー1420に挿入されたパケットを含む。ここでパケットは、符号化されないパケット及び符号化されたパケットを含む。「etime」データ1425は、第1パケットキュー1420に最後にパケットが挿入された時間を示し、「eid」データ1424は、パケットキュー1420に挿入されたパケットの識別子を示す。そのため、1つのパケットキューに挿入されたパケットは全て同一の識別子を有する。
【0175】
一実施形態では、他のノードからパケットを受信した場合、ノードは、当該パケットをパケットキューリストに含まれたパケットキューに挿入する。ここで、ノードは、パケットがパケットキューに挿入される時間と予め定められた閾時間とを比較し、パケットキューに挿入される時間が予め定められた閾時間よりも先である場合、パケットキューリストから当該パケットキューを削除する。また、ノードは、パケットの識別子が予め定められた時間の間にオリジナルパケットに変換された符号化されたパケットの識別子と同一である場合、パケットをパケットキューに挿入できないことがある。パケットの識別子が予め定められた時間の間にオリジナルパケットに変換された符号化されたパケットの識別子と同一でない場合、パケットをパケットキューに挿入し、パケットキューの「etime」データをアップデートする。
【0176】
一実施形態において、パケットキューにK個のパケットが挿入された場合、ノードは、パケットキューに挿入されたパケットが符号化されないパケットであるか、又は符号化されたパケットであるか否かを判断する。パケットキューに挿入された全てのパケットが符号化されないパケットである場合、ノードは別途の復号化を行うことなく、符号化されていないパケットのうち、オリジナルパケットに挿入されたフィールドのみを除去してオリジナルパケットを抽出する。
パケットキューに挿入されたパケットのうち、符号化されたパケットが1つでも存在する場合、ノードは生成子行列を用いて復号化を行う。この場合、ノードは生成子行列を生成し、生成子行列の逆行列を抽出し、符号化されたパケットと生成子行列の逆行列を乗算してオリジナルパケットを抽出する。一実施形態では、特定符号化されたパケットに対応する成分が線形従属的(linearly dependent)である場合、ノードは生成子行列の逆行列を抽出できない場合もある。この場合、ノードは、パケットキューで線形従属的な成分と対応する符号化されたパケットを削除する。
<マルチキャストネットワークにおけるノードの動作方法>
【0177】
図15は、一実施形態に係るソースノードの動作方法を示した動作フローチャートである。
【0178】
図15を参照すると、ソースノードは、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得し、チャネル状態の情報からマルチキャストネットワークのトポロジ情報を抽出する(S1510)。
【0179】
また、ソースノードは、トポロジ情報に基づいて複数のノードのうちソースノードから送信されたパケットを中継するリレーノードを選択する(S1520)。
【0180】
図15に示された一実施形態に係るソースノードの動作方法は、
図1乃至
図14を参照して説明した内容がそのまま適用されるので、より詳細な説明は省略する。
【0181】
図16は、一実施形態に係るノードの動作方法を示した動作フローチャートである。
【0182】
図16を参照すると、ノードは、ランダム行列を用いてオリジナルパケットを符号化されたパケットに変換する(S1610)。
【0183】
また、ノードは、符号化されたパケットに基づいて生成された生成子行列を用いて符号化されたパケットを前記オリジナルパケットに変換する(S1620)。
【0184】
図16に示された一実施形態に係るノードの動作方法は、
図1乃至
図14を参照して説明した内容がそのまま適用されるので、より詳細な説明は省略する。
【0185】
図17は、他の一実施形態に係るソースノードの動作方法を示した動作フローチャートである。
【0186】
図17を参照すると、ソースノードは、マルチキャストネットワークを構成する複数のノード間のチャネル状態に関する情報を取得し、チャネル状態の情報からマルチキャストネットワークのトポロジ情報を抽出する(S1710)。
【0187】
また、ソースノードは、トポロジ情報に基づいて複数のノードのうちソースノードから送信されたパケットを中継するリレーノードを選択する(S1720)。
【0188】
また、ソースノードは、ランダム行列を用いてオリジナルパケットを符号化されたパケットに変換し、リレーノードに符号化されたパケットを送信し、リレーノードから受信した符号化されたパケットに基づいて生成された生成子行列を用いて符号化されたパケットをオリジナルパケットに変換する(S1730)。
【0189】
図17に示された一実施形態に係るソースノードの動作方法は、
図1乃至
図14を参照して説明した内容がそのまま適用されるので、より詳細な説明は省略する。
【0190】
以上で説明された装置は、ハードウェア構成要素、ソフトウェア構成要素、及び/又はハードウェア構成要素及びソフトウェア構成要素の組み合わせで実現される。例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPA(field programmable array)、PLU(programmable logic unit)、マイクロプロセッサー、又は、命令(instruction)を実行して応答できる異なる装置のように、1つ以上の汎用コンピュータ又は特殊目的のコンピュータを用いて実現される。処理装置は、オペレーティングシステム(OS)及び前記オペレーティングシステム上で行われる1つ以上のソフトウェアアプリケーションを行う。また、処理装置は、ソフトウェアの実行に応答してデータをアクセス、格納、操作、処理及び生成する。理解の便宜のために、処理装置は1つ使用されるものと説明される場合もあるが、当該の技術分野で通常の知識を有する者には、処理装置が複数の処理要素(processing element)及び/又は複数類型の処理要素を含んでいることが理解できるであろう。例えば、処理装置は、複数のプロセッサ又は1つのプロセッサ及び1つのコントローラを含む。また、並列プロセッサ(parallel processor)のような、他の処理構成も可能である。
【0191】
ソフトウェアはコンピュータプログラム、コード、命令、又はこのうちの1つ以上の組み合わせを含み、希望の通りに動作するよう処理装置を構成したり独立的又は結合的に処理装置を命令する。ソフトウェア及び/又はデータは、処理装置によって解釈され、処理装置に命令又はデータを提供するための、何らかの類型の機械、構成要素、物理的装置、仮想装置、コンピュータ格納媒体又は装置、及び/又は、送受信される信号波形として永久的又は一時的に具現化される。ソフトウェアは、ネットワークに接続されたコンピュータシステム上に分散し、分散された方法で格納され、実行され得る。ソフトウェア及びデータは1つ以上のコンピュータで読み出し可能な記録媒体に格納され得る。
【0192】
実施形態に係る方法は、多様なコンピュータ手段を介して様々な処理を実行できるプログラム命令の形態で実現され、コンピュータにより読取可能な記録媒体に記録される。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうち1つ又はその組み合わせを含む。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものであるか、又はコンピュータソフトウェア分野の技術を有する当業者にとって公知、且つ、使用可能なものである。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、光ディスクのような光磁気媒体、及び、ROM、RAM、フラッシュメモリのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって作られるような機械語コードだけでなく、インタープリタなどを用いてコンピュータによって実行できる高級言語コードが含まれる。前記したハードウェア装置は、本発明の動作を行うために1つ以上のソフトウェアモジュールとして動作するように構成され、その逆も同様である。
【0193】
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能であろう。
【0194】
従って、本発明の範囲は、開示された実施形態に限定されず、特許請求の範囲だけではなく特許請求の範囲と均等なものによって定められるべきである。