(57)【要約】      （修正有）【課題】サーバの負荷上昇を抑制しつつ、クライアントごとに異なる情報量のデータの転送を可能とするマルチキャスト通信を実現する通信システム、方法及びプログラムを提供する。【解決手段】通信システムは、サーバ装置１０１と、転送装置１０２を含む。さらに、サーバ装置１０１は、送信データを符号化する符号化部１１１と、符号化された送信データを基本データと冗長データに分離すると共に、基本データ及び冗長データのそれぞれを識別可能とするタグを付与するタグ付与部１１２と、タグを含むパケットをマルチキャストする通信制御部１１３を備える。転送装置１０２は、上記タグに基づいてマルチキャストされたパケットをフィルタリングする。【選択図】図１
2018117277.tif 000002
【特許請求の範囲】
【請求項１】
送信データを符号化する、符号化部と、
前記符号化された送信データを基本データと冗長データに分離すると共に、前記基本データ及び冗長データのそれぞれを識別可能とするタグを付与する、タグ付与部と、
前記タグを含むパケットをマルチキャストする、通信制御部と、
を備える、サーバ装置と、
前記タグに基づいて前記マルチキャストされたパケットをフィルタリングする、転送装置と、
を含む、通信システム。
【請求項２】
前記マルチキャストされたパケットを受信し、前記タグに基づいて前記送信データを復号する端末をさらに含む、請求項１の通信システム。
【請求項３】
前記符号化部は、送信データを階層化符号により符号化し、
前記タグ付与部は、前記階層化符号により符号化された、基本階層データ及び拡張階層データそれぞれにタグを付与し、
前記通信制御部は、前記基本階層データ及び拡張階層データのそれぞれをパケット化して、マルチキャストし、
前記転送装置は、自装置が接続されたネットワークの状況に応じて、前記拡張階層データのパケットを破棄する、請求項１又は２の通信システム。
【請求項４】
前記符号化部は、送信データを誤り訂正符号により符号化し、
前記タグ付与部は、前記誤り訂正符号により生成された冗長データを含むパケットを識別するタグを付与し、
前記通信制御部は、少なくとも前記冗長データによる訂正可能なデータ長に関する情報を含むペイロードを有するパケットを生成し、前記生成されたパケットをマルチキャストし、
前記転送装置は、前記誤り訂正符号により符号化された送信パケットを前記タグにより識別し、前記訂正可能なデータ長に基づいて、前記マルチキャストされたパケットにおけるペイロードの一部を削除する、請求項１又は２の通信システム。
【請求項５】
前記転送装置は、自装置が接続されたネットワークの状況と前記訂正可能なデータ長に応じて、前記マルチキャストされたパケットにおけるペイロードの一部を削除する、請求項４の通信システム。
【請求項６】
前記転送装置に処理規則を設定することで、前記転送装置のパケット転送動作を制御する、コントローラをさらに含み、
前記コントローラは、前記転送装置が接続されたネットワークの状況に応じて、前記拡張階層データを破棄する処理規則を前記転送装置に設定する、請求項３の通信システム。
【請求項７】
第１の前記転送装置と、前記第１の転送装置の前段に接続された第２の前記転送装置と、が含まれ、
前記コントローラは、前記第１の転送装置に対して前記拡張階層データを破棄する処理規則を設定し、且つ、前記破棄された拡張階層データが他の装置に転送されていない場合には、前記第２の転送装置に対して、前記第１の転送装置にて破棄された拡張階層データを破棄する処理規則を設定する、請求項６の通信システム。
【請求項８】
第１の前記転送装置と、前記第１の転送装置の前段に接続された第２の前記転送装置と、が含まれ、
前記第１の転送装置が前記拡張階層データのパケットを破棄し、且つ、前記破棄された拡張階層データが他の装置に転送されていない場合には、前記第１の転送装置は、前記第２の転送装置に前記破棄した拡張階層のデータに関する情報を通知し、
前記第２の転送装置は、前記第１の転送装置から通知された情報に基づき、前記第１の転送装置にて破棄された拡張階層のデータを前記第１の転送装置に非転送とする、請求項３の通信システム。
【請求項９】
送信データを符号化するステップと、
前記符号化された送信データを基本データと冗長データに分離すると共に、前記基本データ及び冗長データのそれぞれを識別可能とするタグを付与するステップと、
前記タグを含むパケットをマルチキャストするステップと、
前記タグに基づいて前記マルチキャストされたパケットをフィルタリングするステップと、
を含む、通信方法。
【請求項１０】
送信データを符号化する処理と、
前記符号化された送信データを基本データと冗長データに分離すると共に、前記基本データ及び冗長データのそれぞれを識別可能とするタグを付与する処理と、
前記タグを含むパケットをマルチキャストする処理と、
をサーバ装置に搭載されたコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信方法及びプログラムに関する。特に、マルチキャスト／ブロードキャスト通信に対応した、通信システム、通信方法及びプログラムに関する。
【背景技術】
【０００２】
マルチキャスト通信は、一台のサーバから複数のクライアントにデータを効率よく転送する方法の１つである。マルチキャスト通信が使用される例としては、映像データ等を複数の端末に配信するストリーム配信がある（特許文献１、２参照）。また、特許文献３には、階層化マルチキャスト方式のセキュリティ上の問題点を解消する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２０４１５７号公報
【特許文献２】特開２０００−７８５７３号公報
【特許文献３】特開２００６−２４６２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【０００５】
上述のように、マルチキャスト通信は一台のサーバから複数のクライアントにデータを効率よく転送する方法の１つである。しかし、端末（クライアント）ごとにネットワーク状況が異なる場合や受け取りたい情報量が異なる場合、一台のサーバから各端末に対し最適化された情報をマルチキャスト通信により転送するのは困難である。
【０００６】
例えば、ストリーミングデータを複数の端末（テレビ、パーソナルコンピュータ、スマートフォン等）に一台のサーバからマルチキャストで転送する場合などが該当する。この場合、クライアントごとに再生機器が異なる可能性があるため、ストリーミングデータは、クライアントの機器に合わせて異なる解像度で転送されることが望まれる。しかし、各端末のそれぞれが要求する解像度（即ち、情報量）に対し、一台のサーバで当該要求に応えるのは困難である。
【０００７】
このような例に限らず、クライアント側のネットワーク状況、例えば、回線速度やパケットロス率などが異なる場合にも、クライアント（端末）ごとに送るべき適切な情報量が変わるため、一台のサーバでクライアント側の要求に応えるのは困難である。
【０００８】
以上のように、マルチキャスト／ブロードキャスト通信は、複数のクライアントにデータを転送する上で効率的な転送方法の一つであるが、送信するデータが一つであるため、全てのクライアントは同一のデータを受信しなければならないという制約がある。あるいは、上記以外にも、各クライアントまでの経路状況（例えば、エラーレート）が異なり、経路の状況に合わせた冗長符号化（例えば、誤り訂正符号）を行うことが望ましい場合もある。この場合においても、上述した制約により既存のマルチキャスト／ブロードキャスト通信では、当該要望を実現することは困難である。
【０００９】
なお、各端末に最適化された情報を送信したいという要望に対する１つの解が特許文献３に記載されたような階層化マルチキャスト方式であると言える。しかし、特許文献３に記載されたように、サーバは、階層ごとに個別のマルチキャストアドレスを割り当てる必要があり、サーバの負荷上昇が問題となる。つまり、サーバは、ＩＰ（Internet Protocol）ヘッダ等が異なる複数種類のパケットを用意する必要があり、負荷が上昇する。
【００１０】
本発明は、サーバの負荷上昇を抑制しつつ、クライアントごとに異なる情報量のデータの転送を可能とするマルチキャスト通信を実現する、通信システム、通信方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の視点によれば、送信データを符号化する、符号化部と、前記符号化された送信データを基本データと冗長データに分離すると共に、前記基本データ及び冗長データのそれぞれを識別可能とするタグを付与する、タグ付与部と、前記タグを含むパケットをマルチキャストする、通信制御部と、を備える、サーバ装置と、前記タグに基づいて前記マルチキャストされたパケットをフィルタリングする、転送装置と、を含む、通信システムが提供される。
【００１２】
本発明の第２の視点によれば、送信データを符号化するステップと、前記符号化された送信データを基本データと冗長データに分離すると共に、前記基本データ及び冗長データのそれぞれを識別可能とするタグを付与するステップと、前記タグを含むパケットをマルチキャストするステップと、前記タグに基づいて前記マルチキャストされたパケットをフィルタリングするステップと、を含む、通信方法が提供される。
【００１３】
本発明の第３の視点によれば、送信データを符号化する処理と、前記符号化された送信データを基本データと冗長データに分離すると共に、前記基本データ及び冗長データのそれぞれを識別可能とするタグを付与する処理と、前記タグを含むパケットをマルチキャストする処理と、をサーバ装置に搭載されたコンピュータに実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（non-transient）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１４】
本発明の各視点によれば、サーバの負荷上昇を抑制しつつ、クライアントごとに異なる情報量のデータの転送を可能とするマルチキャスト通信を実現することに寄与する、通信システム、通信方法及びプログラムが、提供される。
【図面の簡単な説明】
【００１５】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係る通信システムの概略構成の一例を示す図である。
【図３】第１の実施形態に係る各装置の処理モジュールの一例を示す図である。
【図４】サーバ装置の動作の一例を示すフローチャートである。
【図５】転送装置の動作の一例を示すフローチャートである。
【図６】端末の動作の一例を示すフローチャートである。
【図７】第２の実施形態に係る通信システムの全体構成の一例を示す図である。
【図８】第３の実施形態に係る通信システムの全体構成の一例を示す図である。
【図９】第３の実施形態に係る各装置の処理モジュールの一例を示す図である。
【図１０】隣接ノード情報の一例を示す図である。
【図１１】コントローラにより計算される転送経路の一例を示す図である。
【図１２】第４の実施形態に係る通信システムの全体構成の一例を示す図である。
【図１３】第４の実施形態に係る各装置の処理モジュールの一例を示す図である。
【発明を実施するための形態】
【００１６】
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【００１７】
一実施形態に係る通信システムは、サーバ装置１０１と、転送装置１０２と、を含む（図１参照）。さらに、サーバ装置１０１は、送信データを符号化する、符号化部１１１と、符号化された送信データを基本データと冗長データに分離すると共に、基本データ及び冗長データのそれぞれを識別可能とするタグを付与する、タグ付与部１１２と、タグを含むパケットをマルチキャストする、通信制御部１１３と、を備える。転送装置１０２は、上記タグに基づいてマルチキャストされたパケットをフィルタリングする。
【００１８】
上記サーバ装置１０１は、符号化部１１１が符号化した送信データのうち冗長部分（冗長データ）が識別可能となるように、当該冗長データに対してタグ付けを行う。転送装置１０２は、当該タグにより識別されたデータに対してフィルタリング（例えば、パケットの一部破棄、又は、ペイロードの一部削除）を実行する。つまり、転送装置１０２は、符号化された送信データが転送され、当該データを受信した際に、例えば、トラフィックの状況に応じて、送信データのうちの冗長データを破棄する等の動作を実行する。その結果、マルチキャスト通信（ブロードキャスト通信も含む）において、符号化された送信データが転送装置１０２を介して転送される場合に、動的に転送先に適した情報量に調整することが可能となる。また、上記調整を実現するために必要なサーバ装置１０１の動作は、基本データと冗長データの分離、冗長データ等へのタグ付け等に限られ、サーバ装置１０１の負荷上昇は限定的である。
【００１９】
なお、本願開示において、冗長データ（冗長部分）とは、符号化されたデータから復号に最低限必要な分を取り除いた部分、もしくは、取り除いたデータの一部を少なくとも表す。
【００２０】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号（データ）の流れを模式的に示すものであり、双方向性を排除するものではない。
【００２１】
また、ブロードキャスト通信は、全ての端末にデータを送信する通信方法であるから、ブロードキャスト通信はマルチキャスト通信の一形態と言える。従って、本願開示において、特段の釈明なく、「マルチキャスト通信」と記載した場合には、ブロードキャスト通信も含むものとする。
【００２２】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００２３】
図２は、第１の実施形態に係る通信システムの概略構成の一例を示す図である。図２を参照すると、通信システムは、サーバ装置１０と、転送装置２０−１〜２０−３と、端末３０−１〜３０−３と、を含んで構成される。なお、以降の説明において、各構成要素がハイフンにより結合された数字等にて表記されている場合には、ハイフンの左側に記載された数字により各構成要素を代表するものとする。例えば、転送装置２０−１〜２０−３を区別する特段の理由がない場合には、「転送装置２０」と表記する。
【００２４】
図２において、サーバ装置１０と端末３０は、転送装置２０を介して接続されている。第１の実施形態では、サーバ装置１０から各端末３０に対しマルチキャスト通信を行う場合について説明する。より具体的には、サーバ装置１０が、ストリームデータを各端末３０にマルチキャストする場合について説明する。
【００２５】
通常、ストリームデータは所定の方式により圧縮（符号化）されて端末に送信される。第１の実施形態では、符号化方式として「階層符号化」を用いる場合について説明する。階層符号化は、データを基本階層と複数の拡張階層に符号化（エンコード）し、復号（デコード）時には基本階層を必ず必要とし、拡張階層の数が多いほど高品質に復号できる符号化方法である。第１の実施形態では、階層符号化としてＨ．２６４／ＳＶＣ（Scalable Video Coding）を使用する場合について説明する。
【００２６】
Ｈ．２６４／ＳＶＣは、ストリーミングデータを解像度の異なる端末（例えば、テレビやスマートフォン）に映像等を配信する際に使用される規格である。Ｈ．２６４／ＳＶＣでは、１つのピクチャの符号化データは複数のスライスからなる。このスライスのうち特定のスライスを間引くことにより、時間スケーラビリティやＳＮＲ（Signal Noise Ratio）スケーラビリティを実現できる。
【００２７】
このように、第１の実施形態では、サーバ装置１０は、送信データ（ストリームデータ）をＨ．２６４／ＳＶＣにより階層符号化し、符号化された送信データを基本データ（基本階層に属するデータ）と２つの冗長データ（拡張階層１、２に属するデータ）に分離する。また、サーバ装置１０は、基本データ及び冗長データをパケット化し、当該パケットをマルチキャストする。その際、パケット化されたストリーミングデータを伝送する際のプロトコルには、ＲＴＰ（Real time Transport Protocol）を使用し、各パケットが属する階層（基本階層、拡張階層１、拡張階層２）を識別するためにＤＳＣＰ（DiffServ Code Point）値を用いるものとする。
【００２８】
［概略動作］
続いて、図２を参照しつつ、第１の実施形態に係る通信システムの動作の概略を説明する。
【００２９】
サーバ装置１０は、ストリームデータをＨ．２６４／ＳＶＣにより階層符号化する。符号化後、サーバ装置１０は、生成されたスライスをＳＮＲの領域で分割し、基本階層、拡張階層１及び拡張階層２の３つ階層に分ける。基本階層は、復号時に最低限必要なスライスの集まりであり、最低限のＳＮＲを保障する階層データである。拡張階層１、拡張階層２はＳＮＲを向上させるための階層データである。
【００３０】
サーバ装置１０は、符号化データを３つの階層に分割した後、分割した階層データをペイロードとするＲＴＰパケットを生成する。サーバ装置１０は、当該パケットの生成時に、ＴｏＳ（Type of Service）フィールドにＤＳＣＰ値を設定する。なお、当該設定されるＤＳＣＰ値は、転送時のポリシを表現するため、階層ごとに異なった値を付加する。図２の例では、基本階層データ（基本階層のパケット）には「１０」、拡張階層１のデータには「１２」、拡張階層２のデータには「１４」のＤＳＣＰ値が付加されている。このようなＤＳＣＰ値を用いることで、転送装置２０で輻輳が発生しても、拡張階層２、拡張階層１、基本階層の順で優先的にパケットが破棄され、サービスの維持が可能となる。
【００３１】
サーバ装置１０は、ＲＴＰパケットを生成した後、マルチキャストにより端末３０に向けて当該パケットを送信する。
【００３２】
転送装置２０は、サーバ装置１０により付与されたタグに基づいて、マルチキャストされたパケットをフィルタリングする。より具体的には、各転送装置２０は、受信したパケットのＴｏＳフィールドを読み込み、ＤＳＣＰ値を確認する。転送装置２０は、当該ＤＳＣＰ値を確認した後、その値に応じた転送処理をする。例えば、転送装置２０−１は、端末３０−１に向けてパケットを送信する場合には、拡張階層２のパケット以外を送信する（拡張階層２のパケットを破棄する）。さらに、転送装置２０−１は、転送装置２０−２に向けてパケットを転送する場合には、基本階層、拡張階層１及び拡張階層２の全てのパケットを転送する。
【００３３】
端末３０は、マルチキャストされたパケットを受信し、サーバ装置１０により付与されたタグに基づいて送信データ（ストリームデータ）を復号する。より具体的には、端末３０は、受信したパケットからＤＳＣＰ値を取得し、受信したデータ（パケット）がどの階層のデータか識別する。端末３０は、転送装置２０でパケットが破棄されたか否か知ることができないので、受信したパケットが次のピクチャ情報をもつパケットであることが判明した時点で、それまでに受信できた階層データの復号を試みる。
【００３４】
その際、全ての階層データが揃っていない場合、端末３０は、基本階層データが受信できているか否かを確認する。基本階層が受信できていない場合、端末３０は、当該ピクチャの復号を断念し、他の階層データを破棄する。基本階層が受信できていた場合、端末３０は、拡張階層１のデータが受信できているか否かを確認する。拡張階層１のデータが受信できていない場合、端末３０は、基本階層だけを使用してピクチャを復号する。拡張階層１のデータが受信できている場合、端末３０は、基本階層と拡張階層１のデータを使用してピクチャを復号する。拡張階層２のデータに関しても同様に処理する。
【００３５】
図２の例では、タグ付け時に拡張階層パケットに破棄レベルの高いＤＳＣＰ値を付加しているため、転送装置２０で拡張階層パケットが優先して破棄される。そのため、途中の通信ネットワーク（転送装置２０）にて輻輳が起きても、優先的に冗長部分が破棄されるため、端末３０の側がデータを復号できる確率が増える。
【００３６】
なお、サーバ装置１０、転送装置２０及び端末３０のハードウェア構成は当業者にとって自明であるため、その説明を省略する。また、サーバ装置１０等の各処理モジュールが行う処理は、サーバ装置１０等に搭載されたコンピュータに、そのハードウェアを用いて、後述する各処理を実行させるコンピュータプログラムにより実現できる。
【００３７】
［処理モジュール］
次に、各装置の処理モジュールについて説明する。
【００３８】
図３は、各装置の処理モジュールの一例を示す図である。図３を参照すると、サーバ装置１０は、符号化部２０１と、タグ付与部２０２と、通信制御部２０３と、を含んで構成される。
【００３９】
符号化部２０１は、送信データを階層化符号により符号化する手段である。符号化部２０１は、映像、音声等の意味のあるデータを所定の符号化方法で符号化し、符号化した１まとまりのデータをタグ付与部２０２に引き渡す。
【００４０】
タグ付与部２０２は、階層化符号により符号化された、基本階層データ及び拡張階層データそれぞれにタグを付与する手段である。具体的には、タグ付与部２０２は、符号化部２０１から取得したデータを所定の箇所で分割し、分割した断片ごとにタグを付与する。上記の例では、タグ付与部２０２は、分割した断片が属する階層に応じたＤＳＣＰ値をそれぞれのデータに設定し、各階層のデータにタグ付けを行う。タグ付与部２０２は、タグ付けによって識別可能となったデータを通信制御部２０３に引き渡す。
【００４１】
なお、タグ付与部２０２がデータ（分割した断片）に付与するタグは１つだけでなく、別の意味を持ったタグを複数付与してもよい。例えば、Ｈ．２６４／ＳＶＣでは符号化時に生成されるＮＡＬ（Network Abstraction Layer）ユニットは階層情報とストリーム情報を有するため、複数のタグを備えていると捉えることができる。また、データの分割（データの断片化）は、タグ付与部２０２ではなく、符号化部２０１で行われてもよい。
【００４２】
あるいは、データ分割とタグの付与の両方が符号化部２０１で行われてもよい。例えば、Ｈ．２６４／ＳＶＣでは、符号化、データ分割及びタグ付けを同時に行っていると捉えることもできる。Ｈ．２６４／ＳＶＣでは、符号化時にデータを分割して階層化し、ＮＡＬユニットを生成する。ＮＡＬユニットは、当該データがどのような階層に属するのかを示す情報を持つため、符号化と同時にタグが付与されていると捉えることができる。
【００４３】
通信制御部２０３は、基本階層データ及び拡張階層データのそれぞれをパケット化して、マルチキャストする手段である。具体的には、通信制御部２０３は、タグ付与部２０２から取得したデータを他の装置（例えば、転送装置２０）に送信するためのデータ形式に整形し、物理インタフェース（ＮＩＣ；Network Interface Card）を介して、転送装置２０又は端末３０にパケットを出力する。つまり、通信制御部２０３は、送信データにＲＴＰヘッダを付与し、その後、タグ付与部２０２が決定したＤＳＣＰ値をＩＰ（Internet Protocol）のＴｏＳフィールドに設定することで、マルチキャストするパケットを生成する。
【００４４】
なお、上記タグ付けは、データ送信するためのデータ形式に整形する際に行われてもよい。例えば、タグにＴＣＰ（Transmission Control Protocol）／ＵＤＰ（User Datagram Protocol）のポート番号を利用する場合が該当する。
【００４５】
転送装置２０は、タグ読み取り部３０１と、フィルタリング部３０２と、を有する。
【００４６】
タグ読み取り部３０１は、物理インタフェースを介してサーバ装置１０、他の転送装置２０からパケットを受信する。タグ読み取り部３０１は、転送されてきたパケットにタグが付与されている場合、付与されたタグを読み取る。上述の例では、タグ読み取り部３０１は、ＴｏＳフィールドのＤＳＣＰ値を読み取る。タグ読み取り部３０１は、タグを認識できた場合、タグ情報とデータをフィルタリング部３０２に引き渡す。
【００４７】
フィルタリング部３０２は、タグ読み取り部３０１から取得したデータがタグ情報を有している場合、タグごとに異なるフィルタリングを行う（タグに応じたフィルタリングを行う）。フィルタリング部３０２は、上記フィルタリングの後、物理インタフェースを介して、他の転送装置２０、端末３０へパケットを出力する。
【００４８】
なお、フィルタリング部３０２によるフィルタリング実行のポリシは、予め定めておいても良いし、ネットワークの状況等に応じて動的に変更してもよい。例えば、端末３０の種類（スマートフォン、テレビ、パーソナルコンピュータ等）に応じて、拡張階層を破棄するか否かといったポリシを予めシステム運用者が定め、転送装置２０に設定しておいてもよい。
【００４９】
あるいは、転送装置２０がネットワーク状況を取得する機能を有するならば、フィルタリングの条件に自装置が接続されたネットワークの状況を使用してもよい。例えば、転送装置２０が回線使用率を取得できる場合、転送装置２０（フィルタリング部３０２）は、Ａというタグが付与されたデータは回線使用率が８０％以上ならば破棄するといったフィルタリングを実行してもよい。
【００５０】
端末３０は、通信制御部４０１と、タグ読み取り部４０２と、復号化部４０３と、を含んで構成される。
【００５１】
通信制御部４０１は、物理インタフェースを介して転送装置２０からパケットを受信する（場合によっては、サーバ装置１０から直接パケットを受信してもよい）。通信制御部４０１は、パケットの受信後、ヘッダ部分及びペイロード部分を取り出し、タグ読み取り部４０２に引き渡す。
【００５２】
タグ読み取り部４０２は、通信制御部４０１から取得したデータからタグを読み取り、データをタグ情報として復号化部４０３に引き渡す。なお、上記タグ読み取りに係る動作は、通信制御部４０１が整形されたデータからヘッダ部分、ペイロード部分を取り出す際に行われてもよい。例えば、タグとしてポート番号が利用されていた場合が上記ケースに該当する。
【００５３】
復号化部４０３は、タグ読み取り部４０２から取得したデータを蓄積する。受信しているデータ一つ一つは符号化された１まとまりのデータが分割された断片であるため、復号化部４０３は、データを復号するのに十分な断片が集まるまで蓄積する。蓄積されたデータが復号化可能なまとまりとなったら、復号化部４０３は、任意のタイミングで当該まとまりを復号する。なお、その際の復号化部４０３の処理は、上述のとおりであるので説明を省略する。
【００５４】
［各装置の動作］
続いて、図４〜図６を参照しつつ、各装置の動作を説明する。
【００５５】
図４は、サーバ装置１０の動作の一例を示すフローチャートである。
【００５６】
サーバ装置１０は、ストリームデータ等のデータを符号化する（ステップＳ１０１）。
【００５７】
次に、サーバ装置１０は、符号化されたデータを意味のある断片に分割する（ステップＳ１０２）。
【００５８】
次に、サーバ装置１０は、分割された断片がどのような意味を持つデータかを明示するタグ付けを行う（ステップＳ１０３）。
【００５９】
サーバ装置１０は、タグ付けされたデータを整形し（ステップＳ１０４）、物理インタフェースを介して端末３０、転送装置２０に向けてパケットを送信する（ステップＳ１０５）。
【００６０】
なお、本実施形態では、ステップＳ１０１〜Ｓ１０２までの処理にＨ．２６４／ＳＶＣによる符号化を用いているが、使用する符号化処理をＨ．２６４／ＳＶＣに限定する趣旨ではない。データを意味のある断片に分割し、且つ、分割したうちの一つ以上が冗長部分であるような符号化方法であれば他の方法であってもよい。例えば、音声データをフーリエ変換で周波数領域に変換（符号化）し、低周波数帯と高周波数帯に分割し、それぞれを基本階層、拡張階層とするような方法であってもよい。
【００６１】
さらに、本実施形態ではステップＳ１０３の処理でＤＳＣＰ値を用いるものとしているが、付与するタグをＤＳＣＰ値に限定するものではない。例えば、各プロトコル階層の各フィールドをタグとして用いてもよい。但し、タグは、転送装置２０でフィルタリングする際に使用するため、転送装置２０が扱い可能なフィールドであることが望ましい。ＤＳＣＰ値以外のタグの一例として、ＣｏＳ（Ｃｌａｓｓ  ｏｆ  Ｓｅｒｖｉｃｅ）値が挙げられる。ＣｏＳ値は、ＩＥＥＥ８０２．１Ｑタグ付けのイーサネット（登録商標）フレームのタグフィールドに定義され、フレームの優先度を示す。ＩＥＥＥ８０２．１Ｑタグに対応したスイッチは、当該フィールドを読み取れ、優先度によって転送処理を変更できる。
【００６２】
さらに、本実施形態では、ステップＳ１０４の処理にＲＴＰを使用しているが、当該ステップの処理をＲＴＰに限定する趣旨ではない。例えば、転送装置２０と端末３０で取り扱い可能な別のプロトコルとしてＵＤＰが挙げられる。ＲＴＰと異なり、ＵＤＰは、シーケンス番号を含んでいないが、順序情報を使用しない場合は、ＵＤＰを用いることもできる。
【００６３】
図５は、転送装置２０の動作の一例を示すフローチャートである。
【００６４】
転送装置２０は、物理インタフェースを介してサーバ装置１０又は他の転送装置２０からパケットを受信する（ステップＳ２０１）。
【００６５】
転送装置２０は、パケットを受信した後、付与されたタグを読み取る（ステップＳ２０２）。
【００６６】
転送装置２０は、タグを読み取った後、タグごとに異なるフィルタリング（タグに基づくフィルタリング）を実行する（ステップＳ２０３）。
【００６７】
その後、転送装置２０は、物理インタフェースを介して端末３０、転送装置２０にパケットを送信する（ステップＳ２０４）。
【００６８】
本実施形態では、ステップＳ２０３の処理でＤＳＣＰ値に応じた転送処理をしているが、タグを識別して、タグごとの転送処理を実現できる方法であれば他の方法でもよい。例えば、ＡＣＬ（Access Control List）を使用する方法が挙げられる。タグにＡＣＬでフィルタリング可能なものを用いれば、転送装置２０にＡＣＬを設定することで、タグごとに異なる転送処理を実現できる。
【００６９】
図６は、端末３０の動作の一例を示すフローチャートである。
【００７０】
端末３０は、物理インタフェースを介してサーバ装置１０、転送装置２０からパケットを受信する（ステップＳ３０１）。
【００７１】
端末３０は、パケットを受信した後、パケットに付与されたタグを読み取る（ステップＳ３０２）。
【００７２】
端末３０は、読み取ったタグ情報とデータを蓄積する（ステップＳ３０３）。
【００７３】
端末３０は、データを復号するのに十分なデータが蓄積されているか否かを判定する（ステップＳ３０４）。
【００７４】
復号化するのに十分なデータが集まっていない場合（ステップＳ３０４、Ｎｏ分岐）、端末３０は、タグ情報とデータの蓄積を続ける（ステップＳ３０３）。
【００７５】
復号化するのに十分なデータが集まっている場合（ステップＳ３０４、Ｙｅｓ分岐）、端末３０は、蓄積されたデータ（まとまり）を復号化する（ステップＳ３０５）。
【００７６】
以上のように、第１の実施形態に係る通信システムのサーバ装置１０は、複数の端末３０にマルチキャスト通信（ブロードキャスト通信も含む）にストリームデータ等を送信する際、データを基本部分と冗長部分に分離し、データが基本部分か冗長部分を識別可能となるようにタグ付けを行う。転送装置２０は、分割された各データのタグに基づいて、受信データ（マルチキャストされたパケット）のフィルタリングを実行する。即ち、転送装置２０では、符号化されたデータの冗長部分を識別し、冗長部分をフィルタリングする。その結果、転送装置２０にて、動的に情報量を制御することができ、クライアントごとに異なる情報量のデータをマルチキャスト通信でも転送することができる。
【００７７】
［第２の実施形態］
続いて、第２の実施形態について図面を参照して詳細に説明する。
【００７８】
第１の実施形態では、符号化方法として「階層化符号」を用いることを説明したが、本願開示は、符号化方法に誤り訂正符号を使用することも可能である。第２の実施形態では、符号化方法としてリード・ソロモン符号を使用する場合について説明する。
【００７９】
リード・ソロモン符号は、符号化されたデータを複数のシンボルと捉え、シンボル単位で誤りの訂正・検出を行う。なお、シンボルとは複数のビットの集まりである。リード・ソロモン符号は、符号化前のデータ長をＫ（Ｋは正の整数、以下同じ）、符号化後のデータ長をＮ（Ｎはより大きい正の整数、以下同じ）としたとき（Ｎ−Ｋ）／２までのシンボルを訂正することが可能な符号化方法である。例えば、１シンボルを８ビットとし、１５５バイトのデータを２５５バイトに符号化すれば、２５５バイト中５０バイト（５０シンボル）まで訂正可能となる。
【００８０】
図７は、第２の実施形態に係る通信システムの全体構成の一例を示す図である。
【００８１】
サーバ装置１０ａの符号化部２０１は、送信データをリード・ソロモン符号により符号化する。サーバ装置１０ａは、符号化後、符号化データをＵＤＰパケット化する。その際、サーバ装置１０ａのタグ付与部２０２は、リード・ソロモン符号により生成された冗長データ（冗長シンボル）を含むパケットを識別するためのタグを付与する。例えば、上記タグ（識別子）としてＵＤＰヘッダに含まれるポート番号が利用される。図７の例では、ＵＤＰヘッダのポート番号に「１００００」が設定されている。
【００８２】
また、サーバ装置１０ａの通信制御部２０３は、冗長データ（冗長シンボル）により訂正可能なデータ長（バイト数、シンボル数）と符号化データ長に関する情報を含むペイロードを有するパケットを生成する。つまり、サーバ装置１０ａは、送信データ（情報シンボル；上述の例では１５５バイト）のうち冗長データ（冗長シンボル）により訂正可能なデータ長（上述の例では５０バイト）と、符号化後のデータ長（上述の例では２５５バイト）と、に関する情報をＵＤＰペイロードに付加する（ペイロードの一部とする）。例えば、サーバ装置１０ａは、最初の１６ビットを訂正可能なデータ長、次の１６ビットを符号化データ長として設定する。図７の例では、訂正可能なデータ長に「５０」が符号化データ長に「２５５」がそれぞれ設定されている。
【００８３】
サーバ装置１０ａは、当該３２ビット以降の領域に符号化されたデータを設定し、物理インタフェースを介して転送装置２０ａ、端末３０ａに向けてＵＤＰパケットを送信する。
【００８４】
なお、本実施形態では誤り訂正符号の情報をＵＤＰヘッダやペイロード部分を使用して付加しているが、情報を記載する方法を当該手法に限定する趣旨ではない。他の既存のプロトコルや独自に定義したプロトコルを使用しても良い。
【００８５】
転送装置２０ａは、誤り訂正符号により符号化されたパケットを、サーバ装置１０ａが付与したタグにより識別する。具体的には、転送装置２０ａは、パケット受信後、ＵＤＰのヘッダ情報を読み取り、冗長化されたパケットか否かを判断する。図７の例では、サーバ装置１０ａが識別子としてポート番号１００００番を使用しているため、転送装置２０ａは、ポート番号が１００００番か否かを確認する。確認の結果、冗長化されたパケットであった場合、転送装置２０ａは、必要に応じて、訂正可能なデータ長に基づき、マルチキャストされたパケットにおけるペイロードの一部を削除する。より具体的には、転送装置２０ａは、転送先のトラフィック状況を取得し、トラフィック状況に応じて、パケットのペイロードの一部を削除する。
【００８６】
上述のように、リード・ソロモン符号により符号化されたデータは、一部のデータが存在しなくとも復元（訂正可能）可能であるという特徴を有する。例えば、上記の例では、１５５バイトの情報シンボルのうち５０バイト分のデータは冗長シンボルにより復元可能である。当該事実は、転送装置２０ａが最大５０バイト分のデータを削除したとしても、端末３０は削除されたデータを復元できることを意味する。
【００８７】
例えば、図７に示すように、各転送装置２０ａは、回線使用率を監視しており、回線使用率が８０％以上のときにペイロードの一部を削除する。より具体的には、転送装置２０ａ−１は、端末３０ａ−１の回線使用率が８０％以上であるので、当該端末に向けたパケットの一部を削除（ペイロードの一部を削除）し、送信する。対して、転送装置２０ａ−１は、転送装置２０ａ−２の回線使用率は８０％未満であるので、取得したパケットをそのまま転送装置２０ａ−２に向けて送信する。
【００８８】
なお、転送装置２０ａによるデータの一部削除は、ヘッダ情報やペイロードから訂正可能データ長、符号化データ長、現在のデータ長を取得し、削除するバイト数が訂正可能データ長（バイト数）を超えないように調整する。
【００８９】
また、ペイロードの一部を削除した影響により下位プロトコルのヘッダ情報に矛盾が生まれてしまう場合、転送装置２０ａは、当該矛盾を修正する。例えば、ＵＤＰヘッダはペイロードのデータ長を含んでおり、削除により矛盾が発生してしまうため、転送装置２０ａによるデータ長の修正が必要となる。但し、転送装置２０ａは、サーバ装置１０ａで付加した符号化データ長については修正を行わない（修正する必要はない）。
【００９０】
転送装置２０ａは、上記修正の後、物理インタフェースを介して他の転送装置２０ａ、端末３０ａにパケットを送信する。
【００９１】
なお、本実施形態では、転送装置２０ａが、訂正可能データ長と符号化データ長をパケットから取得し、回線使用率等のトラフィック状況に基づきフィルタリングをしているが、当該情報をパケットから取得せず、訂正可能データ長と符号化データ長を固定値として、それを前提としたフィルタリング設定をしてもよい。
【００９２】
端末３０ａは、パケットを受信した後、ＵＤＰのヘッダ情報を読み取り、当該パケットが冗長化されたパケットか否かを判断する。冗長化されたパケットであった場合、端末３０ａは、リード・ソロモン符号に対応する復号方法で復号する。但し、復号方法によっては、符号化データ長と現在のデータ長が異なるため、復号できない場合がある。その場合、端末３０ａは、ヘッダ情報に含まれている符号化データ長と現在のデータ長から削除されたバイト数を算出し、当該算出したバイト数に相当するデータを付加する等の整形を行えばよい。
【００９３】
なお、第２の実施形態に係るサーバ装置１０ａ、転送装置２０ａ、端末３０ａの各装置の内部構成は、第１の実施形態に係る各装置の内部構成と同様とすることができるので、第２の実施形態の図３に相当する説明は省略している。
【００９４】
以上のように、第２の実施形態では、転送装置２０ａは、自装置が接続されたネットワークの状況とサーバ装置１０ａが設定した訂正可能なデータ長に応じて、マルチキャストされたパケットにおけるペイロードの一部を削除する。その結果、マルチキャスト通信でも端末３０ａ（クライアント）ごとに異なる訂正能力を持ったデータを転送可能となる。つまり、符号化方式として誤り訂正符号を用いることで、誤り訂正符号の符号化率をサーバ装置１０ａではなく転送装置２０ａの側で動的に制御することが可能になる。
【００９５】
［第３の実施形態］
続いて、第３の実施形態について図面を参照して詳細に説明する。
【００９６】
本願開示は、転送装置の転送方法が集中管理サーバにより制御されるネットワークにも適用することができる。
【００９７】
図８は、第３の実施形態に係る通信システムの全体構成の一例を示す図である。図８では、ＯｐｅｎＦｌｏｗが適用されネットワークが構築されている。本実施形態では、一台のサーバ装置１０ｂが複数の端末３０ｂに対して、転送装置２０ｂを介して通信しているものとし、使用する符号化は基本部分と冗長部分に分けられる任意の符号化方式が使用できる。
【００９８】
初めに、サーバ装置１０ｂがデータを階層符号化する。階層符号化ではデータが基本階層、拡張階層１、拡張階層２に階層化される。拡張階層１は、拡張階層２よりも重要度が高い情報である。
【００９９】
サーバ装置１０ｂは、これらの階層データに別々のポート番号を付加してＲＴＰパケット化する。図８の例では、付加するポート番号は、基本階層に「１００００」、拡張階層１に「１０００１」、拡張階層２に「１０００２」である。
【０１００】
サーバ装置１０ｂは、物理インタフェースを介して、転送装置２０ｂ、端末３０ｂにパケットを送信する。なお、本実施形態では、タグ付けにポート番号を使用しているが、ＯｐｅｎＦｌｏｗで識別してフィルタリングできる情報であれば、他の情報を使用してもよい。
【０１０１】
コントローラ４０は、転送装置２０ｂに処理規則を設定することで、転送装置２０ｂのパケット転送動作を制御する装置である。コントローラ４０は、管理している転送装置２０ｂのトラフィック状況を定期的に取得し、必要に応じて各転送装置２０ｂに処理規則を設定することで、端末３０ｂ（クライアント）ごとに異なる情報量のマルチキャスト通信を実現する。より具体的には、コントローラ４０は、転送装置２０ｂが接続されたネットワークの状況に応じて、拡張階層データを破棄する処理規則を転送装置２０ｂに設定する。
【０１０２】
例えば、図８の例では、サーバ装置１０ｂと転送装置２０ｂ−１の間のトラフィックは良好（○印）、転送装置２０ｂ−１と端末３０ｂ−１の間のトラフィックは標準（△印）、転送装置２０ｂ−３と端末３０ｂ−３の間のトラフィックは不良（×印）、といった状況が把握されている。コントローラ４０は、このようなネットワーク状況に応じて、各転送装置２０ｂに処理規則を設定する。
【０１０３】
なお、図８において、転送装置２０ｂはＯｐｅｎＦｌｏｗスイッチであり、コントローラ４０はＯｐｅｎＦｌｏｗコントローラである。
【０１０４】
コントローラ４０と各転送装置２０ｂは専用の制御チャネル等により接続されており、コントローラ４０は、サーバ装置１０ｂから各端末３０ｂまでの転送経路を計算し、当該転送経路を実現するための処理規則を各転送装置２０ｂに設定する。また、コントローラ４０から動的に転送装置２０ｂの内部に構築されたフローテーブルを変更可能であるとする。
【０１０５】
また、コントローラ４０は、所定の条件に応じて、各転送装置２０ｂによるフィルタリング設定の最適化を行う。例えば、端末３０ｂ−３と転送装置２０ｂ−３の間のトラフィック状況が悪く、逼迫しそうであることが分かった場合、コントローラ４０は、転送装置２０ｂ−３のフローテーブルを書き換えて、端末３０ｂ−３宛の拡張階層のデータ（パケット）を破棄する設定を実現する。当該設定では、転送装置２０ｂ−３は、サーバ装置１０ｂから転送されてきたデータを端末３０ｂ−３に限り転送するため、転送装置２０ｂ−２と転送装置２０ｂ−３の間に流れる拡張階層のデータは不要なものである。そのため、トラフィックの最適化を考慮するのであれば、転送装置２０ｂ−２のフローテーブルを書き換え、転送装置２０ｂ−３宛の拡張階層のデータを破棄するのが望ましい。
【０１０６】
このような全体のトラフィック量を考えた最適なフィルタリングの設定をＯｐｅｎＦｌｏｗコントローラ（コントローラ４０）が行う。各転送装置２０ｂでは、階層データの識別やフィルタリングを意識する必要はなく、コントローラ４０が設定するフローテーブルに従いパケットの転送を行えばよい。
【０１０７】
端末３０ｂは、パケット受信後、受信したパケットに含まれている情報から同一の符号化の組を識別する。例えば、送信側（サーバ装置１０ｂ）で基本階層、拡張階層１、拡張階層２の順で送っているのであれば、端末３０ｂは、シーケンス番号から同一の符号化の組であると判断できる。また、いずれかの階層が欠けていてもシーケンス番号が連続していないことから、端末３０ｂは当該事実を判断できる。端末３０ｂは、符号化の組を識別した後、それらをまとめて復号する。
【０１０８】
本実施形態の構成要素は、図３に示す第１の実施形態の構成要素と異なる点も多いため、図９を参照しつつ本実施形態の各構成要素を説明する。図３と図９の相違点は、転送装置２０ｂとコントローラ４０であり、当該相違点を中心に説明する。
【０１０９】
図９を参照すると、転送装置２０ｂは、タグ読み取り部３０１と、フィルタリング部３０２、近接ノード検知部３１１と、転送装置情報アクセス部３１２と、を含んで構成される。
【０１１０】
タグ読み取り部３０１は、物理インタフェースを介してサーバ装置１０ｂ又は他の転送装置２０ｂからパケットを受信する。転送されてきたパケットにタグが付与されている場合、タグ読み取り部３０１は、付与されたタグを読み取る。タグが認識できた場合、タグ読み取り部３０１は、タグ情報と受信パケットをフィルタリング部３０２に引き渡す。
【０１１１】
フィルタリング部３０２は、タグ読み取り部３０１から取得したパケットがタグ情報を有する場合、タグごとに異なるフィルタリングを行う。フィルタリングの結果、受信したパケットの一部を破棄した場合、フィルタリング部３０２は、コントローラ４０の冗長経路計算部５０２に当該破棄したパケットに関する情報を通知する。具体的には、フィルタリング部３０２は、破棄したパケットの受信ポート、当該パケットの送信ポート（破棄したパケットを送信する予定であったポート）、破棄したパケットの詳細（パケットの階層）等を、冗長経路計算部５０２に通知する。
【０１１２】
フィルタリング部３０２は、タグに基づくフィルタリング後、物理インタフェースを介して転送装置２０ｂ、端末３０ｂにパケットを出力する。
【０１１３】
近傍ノード検知部３１１は、自ノードの各インタフェースの先にどのようなノードが隣接して接続されているかを定期的に検知する。例えば、近傍ノード検知部３１１は、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）や学習しているＭＡＣ（Media Access Control）アドレス情報を用いて、各インタフェースの先に接続されているノード（例えば、隣接する転送装置２０ｂや端末３０ｂ）を検知する。例えば、近傍ノード検知部３１１は、自ノードにＬＬＤＰ対応の機器（例えば、隣接する転送装置２０ｂ）が接続されている場合には、ＬＬＤＰを用いて自ノードに接続されているノードを検知する。また、近傍ノード検知部３１１は、自ノードに接続されている機器がＬＬＤＰ非対応であれば（例えば、サーバ装置や端末）、学習済みのＭＡＣアドレステーブルを利用して自ノードに接続されているノードを検知する。より具体的には、ＭＡＣアドレステーブルにはポートとそのポートの先にあるＭＡＣアドレス情報が含まれている。そこで、ポートがＭＡＣアドレスを学習していて、且つ、ＬＬＤＰでその先にスイッチ（転送装置２０ｂ）が存在しないことが分かった場合、近傍ノード検知部３１１は、学習しているＭＡＣアドレスに対応する機器は隣接している端末であると検知する。
【０１１４】
近接ノード検知部３１１は、検知した隣接ノードとインタフェースの情報を、転送装置情報アクセス部３１２に引き渡す。例えば、図８の転送装置２０ｂ−２の近接ノード検知部３１１は、図１０（ａ）に示すような情報（隣接ノード情報）を転送装置情報アクセス部３１２に引き渡す。また、転送装置２０ｂ−３の近接ノード検知部３１１は、図１０（ｂ）に示すような隣接ノード情報を転送装置情報アクセス部３１２に引き渡す。なお、図８の図面において、記号シャープ「♯」と共に併記された数字はポート番号を示す。
【０１１５】
転送装置情報アクセス部３１２は、ポート統計情報や隣接ノード情報を管理する手段である。具体的には、転送装置情報アクセス部３１２は、各ポート（受信ポート、送信ポート）にて処理したパケットの種類（パケットの階層）や各ポートにて処理したパケット数を計数する等して、ポート統計情報を生成する。このように、ポート統計情報には、転送装置２０ｂの各ポートにて処理したパケット数（受信パケット数、送信パケット数）に関する情報が含まれ、当該情報により各ポートでのトラフィック量等の計測が可能となる。
【０１１６】
また、転送装置情報アクセス部３１２は、近接ノード検知部３１１から取得した隣接ノード情報を記憶し、管理する。
【０１１７】
転送装置情報アクセス部３１２は、外部から転送装置２０ｂのポート統計情報や隣接ノード情報の提供を要求されたときに、当該要求された情報を提供する。
【０１１８】
図９を参照すると、コントローラ４０は、転送経路計算部５０１と、冗長経路計算部５０２と、トラフィック監視部５０３と、フィルタリング設定変更部５０４と、を含んで構成される。
【０１１９】
転送経路計算部５０１は、サーバ装置１０ｂと端末３０ｂ間のパケット転送経路を計算し、当該計算したパケット転送経路を実現する処理規則を各転送装置２０ｂに設定する。図８の例では、転送経路計算部５０１は、図１１に示すようなパケット転送経路を計算する。
【０１２０】
冗長経路計算部５０２は、転送装置２０ｂのフィルタリング部３０２から通知される破棄パケット情報を蓄積する。また、当該破棄パケット情報が通知されたタイミングで、冗長経路計算部５０２は、パケットを破棄した転送装置２０ｂの転送装置情報アクセス部３１２からポート統計情報、隣接ノード情報を取得し、当該転送装置２０ｂは、破棄したパケットを他の転送装置２０ｂへ転送していないか否かを確認する。
【０１２１】
他の転送装置２０ｂに対して破棄したパケットを転送していれば、冗長経路計算部５０２は、特段の処理を実行しない。例えば、図８の例では、転送装置２０ｂ−１は、端末３０ｂ−１向けには拡張階層２のパケットを破棄しているが、拡張階層２のパケットは転送装置２０ｂ−２に転送されているため、冗長経路計算部５０２は特段の処理を行わない。
【０１２２】
対して、破棄されたパケットが他の転送装置２０ｂに送信されていない場合、冗長経路計算部５０２は、当該パケットは破棄が生じた転送装置２０ｂに送られる前に破棄しても問題ない不要パケットと判断できる。例えば、図８の例では、転送装置２０ｂ−３にて拡張階層１及び２のパケットが破棄されており、当該拡張階層のパケットは他の装置に転送されていないため、転送装置２０ｂ−２から転送装置２０ｂ−３に当該拡張階層のパケットが送信されなくとも問題がない。
【０１２３】
そこで、不要パケットの送信元となる転送装置２０ｂを検索するため、冗長経路計算部５０２は、パケットを破棄した転送装置２０ｂの転送装置情報アクセス部３１２から取得した隣接ノード情報を利用する。冗長経路計算部５０２は、取得した隣接ノード情報から経路情報を算出し、当該算出した経路情報を含むパケット転送経路が存在（コントローラ４０の内部に登録）するか否かを確認する。
【０１２４】
具体的には、冗長経路計算部５０２は、フィルタリング部３０２から通知される情報から、破棄されたパケットの受信ポートと、当該破棄されたパケットを送信する予定であった送信ポート（単に送信ポートとも称する）が把握できる。図８の例では、転送装置２０ｂ−３にて破棄されるパケットは、ポート１を受信ポート、ポート２を送信ポートとすることが判明する。
【０１２５】
次に、冗長経路計算部５０２は、パケットを破棄した転送装置２０ｂ−３の転送装置情報アクセス部３１２から図１０（ｂ）に示すような隣接ノード情報を取得する。その結果、冗長経路計算部５０２は、破棄されたパケットの転送経路には（転送装置２０ｂ−２、転送装置２０ｂ−３、端末３０ｂ−３）が含まれることが確認できる。その後、冗長経路計算部５０２は、転送経路計算部５０１により計算されたパケット転送経路のうち、上記経路情報（転送装置２０ｂ−２、転送装置２０ｂ−３、端末３０ｂ−３）を含む転送経路が存在するか否かを確認する。例えば、図１１を参照すると、転送経路３に上記経路情報が含まれる。
【０１２６】
当該経路情報が登録されていた場合、冗長経路計算部５０２は、新たにフィルタリングを実行する転送装置２０ｂを決定する。具体的には、冗長経路計算部５０２は、パケットを破棄した転送装置２０ｂの前段に接続された転送装置２０ｂを、新たにフィルタリングを実行する転送装置２０ｂに定める。上記の例では、転送装置２０ｂ−２が新たにフィルタリングを実行する転送装置２０ｂであると決定される。
【０１２７】
その後、冗長経路計算部５０２は、当該転送装置（上記の例では、転送装置２０ｂ−２）から隣接ノード情報を取得する。その後、冗長経路計算部５０２は、当該隣接ノード情報に基づき、新たにフィルタリングを実行する転送装置２０ｂに設定する処理規則の生成に必要な情報を算出する。具体的には、冗長経路計算部５０２は、パケットを破棄するインタフェース、破棄するパケットの詳細を算出し、当該情報をフィルタリング設定変更部５０４に引き渡す。上記の例では、冗長経路計算部５０２は、新たにフィルタリングする転送装置２０ｂ−２のポート３（既にパケットを破棄している転送装置２０ｂ−３と接続されているポート）と破棄パケットの詳細として拡張階層１及び２をフィルタリング設定変更部５０４に引き渡す。
【０１２８】
トラフィック監視部５０３は、各転送装置２０ｂのポート統計情報を定期的に取得し、トラフィック量を監視する。トラフィック量が閾値を超えたときに、当該転送装置２０ｂで破棄可能なパケットがあれば、トラフィック監視部５０３は、該当する転送装置２０ｂ（パケットを破棄する転送装置２０ｂ）、インタフェース、破棄するパケットの詳細情報をフィルタリング設定変更部５０４に引き渡す。
【０１２９】
フィルタリング設定変更部５０４は、通知された転送装置２０ｂ、インタフェース、破棄するパケットの詳細情報に基づき、該当する転送装置２０ｂのフィルタリング部３０２の設定変更を行う。つまり、フィルタリング設定変更部５０４は、冗長経路計算部５０２又はトラフィック監視部５０３からの情報に基づき、転送装置２０ｂに設定する処理規則を計算し、当該処理規則を転送装置２０ｂに設定する。
【０１３０】
例えば、図８において、転送装置２０ｂ−３のトラフィック量が閾値を超え、当該事実がトラフィック監視部５０３から通知された場合を考える。この場合、トラフィック監視部５０３から、パケットの一部破棄を実行する転送装置２０ｂとして転送装置２０ｂ−３、インタフェース（ポート）としてポート２、破棄パケットの詳細として「拡張階層１及び２のパケット」が通知されるものとする。
【０１３１】
この場合、フィルタリング設定変更部５０４は、拡張階層１及び２のパケットを破棄させる処理規則を生成し、転送装置２０ｂ−３に設定する。具体的には、図８に示すような処理規則（マッチ条件と動作の組み）が転送装置２０ｂ−３に設定される。
【０１３２】
次に、上記処理規則が転送装置２０ｂ−３に設定されると、当該装置にてパケットの一部破棄が行われる。当該事実は、転送装置２０ｂ−３のフィルタリング部３０２により、冗長経路計算部５０２に通知される。冗長経路計算部５０２は、当該通知に応じて、パケットを破棄した転送装置２０ｂが関わる経路情報が既に登録されているか否かを確かめる。上記の例では、図１１の転送経路３に経路情報（転送装置２０ｂ−２、２０ｂ−３、端末３０ｂ−３）が含まれるので、冗長経路計算部５０２は、新たにフィルタリングする転送装置として転送装置２０ｂ−２を、インタフェースとしてポート３を、破棄パケットの詳細として「拡張階層１、２のパケット」を、フィルタリング設定変更部５０４に通知する。
【０１３３】
当該通知を受けたフィルタリング設定変更部５０４は、マッチ条件として「拡張階層１及び２のパケットの識別子」を設定し、当該マッチ条件を満たすパケットはポート３からは非転送とする（ポート３ではパケットを破棄する）処理規則を転送装置２０ｂ−２に設定する（図８参照）。その結果、転送装置２０ｂ−２において、端末３０ｂ−２に向けて送信されるパケットには影響を与えずに（当該端末には全てのパケットが転送される）、転送装置２０ｂ−３には拡張階層１及び２のパケットを非転送とする動作が実現できる。
【０１３４】
以上のように、第３の実施形態では、コントローラ４０は、一の転送装置（例えば、転送装置２０ｂ−３）に対して拡張階層データを破棄する処理規則を設定し、且つ、破棄された拡張階層データが他の装置に転送されていない場合には、他の転送装置（例えば、転送装置２０ｂ−２）に対して、既に転送装置にて破棄された拡張階層データを破棄する処理規則を設定する。その結果、ネットワーク全体を考慮してフィルタリングが可能となるため、不要データの転送を抑制することができる。
【０１３５】
［第４の実施形態］
続いて、第４の実施形態について図面を参照して詳細に説明する。
【０１３６】
第３の実施形態では最適なフィルタリング設定をするために集中管理サーバ（ＯｐｅｎＦｌｏｗコントローラ）により制御をしていたが、当該制御に替えて各転送装置がお互いに通信することにより最適なフィルタリング設定を実現してもよい。
【０１３７】
図１２は、第４の実施形態に係る通信システムの全体構成の一例を示す図である。なお、サーバ装置１０ｃと端末３０ｃに関しては、第３の実施形態と同様とすることができるため説明を省略する。
【０１３８】
サーバ装置１０ｃは、各端末３０ｃに向けて階層符号化されたデータをマルチキャスト通信で送信しているものとする。
【０１３９】
各転送装置２０ｃには、ポートの回線使用率が５０％以上になったとき、拡張階層２のパケットを破棄し、回線使用率が８０％を超えたら拡張階層パケットをすべて破棄するという設定が予めなされているものとする。
【０１４０】
また、転送装置２０ｃ−３において、サーバ装置１０ｃから転送されてきたマルチキャストパケットをフラッディングするすべてのポートで回線使用率が５０％以上となり、すべての拡張階層２のパケットが破棄され始めたとする。この時点で、転送装置２０ｃ−３は、転送装置２０ｃ−２と転送装置２０ｃ−３の間で送受信される拡張階層２のパケットは不要であると判断できる（当該事実を検知できる）。
【０１４１】
当該検知後、転送装置２０ｃ−３は、サーバ装置１０ｃのパケットが転送されてくるポートに接続された転送装置２０ｃ−２に対し、破棄しているパケットの詳細情報を通知する。通知を受けた転送装置２０ｃ−２は、破棄されているパケットを送信しているポートに対し、不要なパケット（拡張階層２のパケット）を破棄するフィルタリング設定をする。これにより、転送装置２０ｃ−２と転送装置２０ｃ−３の間で送受信されていた拡張階層２のパケットがなくなり、無用な転送を抑制することができる。
【０１４２】
本実施形態の構成要素は、図３に示す構成要素と異なる点も多いため、図１３を参照して本実施形態の各構成要素を説明する。ここでは、図１３と図３の相違点である、転送装置２０ｃについて説明する。
【０１４３】
転送装置２０ｃは、タグ読み取り部３０１と、フィルタリング部３０２と、不要パケット検知部３２１と、不要パケット通知受信部３２２と、を含んで構成される。
【０１４４】
タグ読み取り部３０１は、物理インタフェースを介してサーバ装置１０ｃ又は他の転送装置２０ｃからパケットを受信する。転送されてきたパケットにタグが付与されている場合、タグ読み取り部３０１は、付与されたタグを読み取る。その際、付与されたタグが不要パケット通知を示すものであれば、タグ読み取り部３０１は、データを不要パケット通知受信部３２２に引き渡す。それ以外のタグと認識できた場合、タグ読み取り部３０１は、タグ情報とパケット（データ）をフィルタリング部３０２に引き渡す。
【０１４５】
フィルタリング部３０２は、タグ読み取り部３０１から転送されてきたデータがタグ情報を有する場合、タグごとに異なるフィルタリングを行う。フィルタリングの結果、受信したパケットを破棄した場合、フィルタリング部３０２は、不要パケット検知部３２１に対し破棄したパケットの詳細情報を通知する。フィルタリング部３０２は、フィルタリング後、物理インタフェースを介して、転送装置２０ｃ又は端末３０ｃへとパケットを出力する。
【０１４６】
不要パケット検知部３２１は、フィルタリング部３０２から受信した破棄したパケットの詳細情報を蓄積する。また、不要パケット検知部３２１は、パケット情報を受信したタイミングで、破棄したパケットが他の転送装置２０ｃに転送されていないか確認する。破棄したパケットが他の転送装置２０ｂに転送されていれば、不要パケット検知部３２１は、特段の処理を行わない。例えば、図１２の例では、転送装置２０ｃ−１にて、拡張階層２のパケットが破棄されているが、当該パケットは転送装置２０ｃ−２に転送されているため、不要パケット検知部３２１は、特段の処理を行わない。
【０１４７】
破棄したパケットが他の転送装置２０ｃに転送されていない場合、不要パケット検知部３２１は、破棄したパケットを送信元で破棄しても問題ない不要パケットであると判断する。例えば、図１２の例では、転送装置２０ｃ−３にて、拡張階層２のパケットは端末３０ｃ−３、３０ｃ−４のいずれにも転送されていないため、不要パケット検知部３２１は、拡張階層２のパケットは不要パケットであると決定する。
【０１４８】
その後、不要パケット検知部３２１は、不要パケットが転送されてくるポートに接続された他の転送装置２０ｃに対し、不要パケット通知に係るパケットを送信する。図１２の例では、転送装置２０ｃ−３から転送装置２０ｃ−２に対し、転送装置２０ｃ−２のポート３から送信される拡張階層２のパケットは不要である旨が通知される。
【０１４９】
つまり、不要パケット通知のパケットは、当該不要パケット通知であることが識別できるタグと破棄したパケットの詳細情報（送信ポート、破棄される拡張階層のパケット）を含むパケットである。不要パケット通知受信部３２２は、受信した不要パケット通知のパケットから不要パケットの詳細情報を取りだし、当該パケットを破棄する設定をフィルタリング部３０２に行う。図１２の例では、転送装置２０ｃ−２の不要パケット通知受信部３２２は、自装置のフィルタリング部３０２に対し、ポート３から拡張階層２のパケットを送信しない設定を行う。
【０１５０】
なお、転送装置２０ｃが、不要パケット通知を送信する際には、各ポートに接続された機器を知る必要がある。このような情報は、ネットワーク管理者が予め転送装置２０ｃに設定しても良いし、第３の実施形態にて説明した近接ノード検知部３１１と同等の機能を転送装置２０ｃに組み込んでもよい。
【０１５１】
以上のように、第４の実施形態では、一の転送装置（例えば、転送装置２０ｃ−３）が拡張階層データのパケットを破棄し、且つ、破棄された拡張階層データが他の装置に転送されていない場合には、当該転送装置は、他の転送装置（例えば、転送装置２０ｃ−２）に破棄した拡張階層のデータに関する情報を通知する。当該通知を受けた転送装置は、他の転送装置から通知された情報に基づき、当該他の転送装置にて破棄された拡張階層のデータを当該他の転送装置に非転送とする。その結果、集中管理サーバを使用しなくとも、第３の実施形態と同様に転送装置間の無用な転送を抑制することができる。
【０１５２】
上記第１乃至第４の実施形態にて説明した通信システムの構成及び動作は例示であって、種々の変形が可能である。例えば、通信システムは、以下のような構成又は動作であってもよい。
【０１５３】
上記実施形態では、転送装置２０は、１個の独立した装置として説明したが、転送装置２０は、サーバ装置１０又は端末３０のＮＩＣ（Network Interface Card）又は仮想スイッチとして実装されてもよい。
【０１５４】
また、第４の実施形態では、不要なパケットが発生した場合の通知を転送装置２０ｃ自身が担っているが、当該通知を集中管理サーバ（Ｏｐｅｎｆｌｏｗコントローラ）に転送し、集中管理サーバから転送装置２０ｃにフィルタリング設定を行ってもよい。あるいは、転送装置２０ｃは、第４の実施形態の動作の通り隣接する転送装置２０ｃへ棄却しているパケット情報の通知を行い、中央集中管理サーバは輻輳判断の監視を行ってもよい。当該構成によれば、無駄な転送の抑制の最適化は転送装置間で行われる。
【０１５５】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
［付記１］
上述の第１の視点に係る通信システムのとおりである。
［付記２］
前記マルチキャストされたパケットを受信し、前記タグに基づいて前記送信データを復号する端末をさらに含む、付記１の通信システム。
［付記３］
前記符号化部は、送信データを階層化符号により符号化し、
前記タグ付与部は、前記階層化符号により符号化された、基本階層データ及び拡張階層データそれぞれにタグを付与し、
前記通信制御部は、前記基本階層データ及び拡張階層データのそれぞれをパケット化して、マルチキャストし、
前記転送装置は、自装置が接続されたネットワークの状況に応じて、前記拡張階層データのパケットを破棄する、付記１又は２の通信システム。
［付記４］
前記符号化部は、送信データを誤り訂正符号により符号化し、
前記タグ付与部は、前記誤り訂正符号により生成された冗長データを含むパケットを識別するタグを付与し、
前記通信制御部は、少なくとも前記冗長データによる訂正可能なデータ長に関する情報を含むペイロードを有するパケットを生成し、前記生成されたパケットをマルチキャストし、
前記転送装置は、前記誤り訂正符号により符号化された送信パケットを前記タグにより識別し、前記訂正可能なデータ長に基づいて、前記マルチキャストされたパケットにおけるペイロードの一部を削除する、付記１又は２の通信システム。
［付記５］
前記転送装置は、自装置が接続されたネットワークの状況と前記訂正可能なデータ長に応じて、前記マルチキャストされたパケットにおけるペイロードの一部を削除する、付記４の通信システム。
［付記６］
前記転送装置に処理規則を設定することで、前記転送装置のパケット転送動作を制御する、コントローラをさらに含み、
前記コントローラは、前記転送装置が接続されたネットワークの状況に応じて、前記拡張階層データを破棄する処理規則を前記転送装置に設定する、付記３の通信システム。
［付記７］
第１の前記転送装置と、前記第１の転送装置の前段に接続された第２の前記転送装置と、が含まれ、
前記コントローラは、前記第１の転送装置に対して前記拡張階層データを破棄する処理規則を設定し、且つ、前記破棄された拡張階層データが他の装置に転送されていない場合には、前記第２の転送装置に対して、前記第１の転送装置にて破棄された拡張階層データを破棄する処理規則を設定する、付記６の通信システム。
［付記８］
第１の前記転送装置と、前記第１の転送装置の前段に接続された第２の前記転送装置と、が含まれ、
前記第１の転送装置が前記拡張階層データのパケットを破棄し、且つ、前記破棄された拡張階層データが他の装置に転送されていない場合には、前記第１の転送装置は、前記第２の転送装置に前記破棄した拡張階層のデータに関する情報を通知し、
前記第２の転送装置は、前記第１の転送装置から通知された情報に基づき、前記第１の転送装置にて破棄された拡張階層のデータを前記第１の転送装置に非転送とする、付記３の通信システム。
［付記９］
上述の第２の視点に係る通信方法のとおりである。
［付記１０］
上述の第３の視点に係るプログラムのとおりである。
なお、付記９の形態及び付記１０の形態は、付記１の形態と同様に、付記２の形態〜付記８の形態に展開することが可能である。
【０１５６】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１５７】
１０、１０ａ〜１０ｃ、１０１  サーバ装置
２０、２０ａ〜２０ｃ、２０−１〜２０−３、２０ａ−１〜２０ａ−３、２０ｂ−１〜２０ｂ−３、２０ｃ−１〜２０ｃ−３、１０２  転送装置
３０、３０ａ〜３０ｃ、３０−１〜３０−３、３０ａ−１〜３０ａ−３、３０ｂ−１〜３０ｂ−３、３０ｃ−１〜３０ｃ−４  端末
４０  コントローラ
１１１、２０１  符号化部
１１２、２０２  タグ付与部
１１３、２０３、４０１  通信制御部
３０１、４０２  タグ読み取り部
３０２  フィルタリング部
３１１  近接ノード検知部
３１２  転送装置情報アクセス部
３２１  不要パケット検知部
３２２  不要パケット通知受信部
４０３  復号化部
５０１  転送経路計算部
５０２  冗長経路計算部
５０３  トラフィック監視部
５０４  フィルタリング設定変更部
【図１】
2018117277.tif 000003
【図２】
2018117277.tif 000004
【図３】
2018117277.tif 000005
【図４】
2018117277.tif 000006
【図５】
2018117277.tif 000007
【図６】
2018117277.tif 000008
【図７】
2018117277.tif 000009
【図８】
2018117277.tif 000010
【図９】
2018117277.tif 000011
【図１０】
2018117277.tif 000012
【図１１】
2018117277.tif 000013
【図１２】
2018117277.tif 000014
【図１３】
2018117277.tif 000015