(57)【特許請求の範囲】
【請求項１】
ＴＣＰ（Transmission Control Protocol）に従ってデータを配信するソースからパケットを受信する受信部と、
ＴＣＰシーケンス番号の最大値の約数Ｌの格納領域を持つリングバッファにおいて、前記受信したパケットのＴＣＰシーケンス番号に基づき、前記受信したパケット内のデータを、前記受信したパケットのＴＣＰシーケンス番号をＬでモジュロ演算して得られる値によって表される格納領域に格納する格納部と、
前記受信したパケットをＴＣＰに従った配信を要求する第１のシンクに転送するＴＣＰ転送部と、
前記リングバッファから前記データを読み出し、当該読み出したデータをＵＤＰ（User Datagram Protocol）に従った配信を要求する第２のシンクに転送するＵＤＰ転送部と、
を有し、
前記格納部は、前記受信したパケットのＴＣＰシーケンス番号に基づき、受信していないデータが存在すると判断した場合、受信していないデータが存在することを示すロス情報を保持し、
前記ＵＤＰ転送部は、前記ロス情報が存在する場合には、当該ロス情報の手前まで受信したデータを前記リングバッファから読み出し、所定時間待機しても当該ロス情報に対応するデータが受信されない場合、当該ロス情報の後に受信したデータを前記リングバッファから読み出す、
転送装置。
【請求項２】
ＴＣＰ（Transmission Control Protocol）に従ってデータを配信するソースから、配信されたデータを処理する複数のシンクにデータを転送する転送装置における転送方法であって、
前記ソースからパケットを受信するステップと、
ＴＣＰシーケンス番号の最大値の約数Ｌの格納領域を持つリングバッファにおいて、前記受信したパケットのＴＣＰシーケンス番号に基づき、前記受信したパケット内のデータを、前記受信したパケットのＴＣＰシーケンス番号をＬでモジュロ演算して得られる値によって表される格納領域に格納するステップと、
前記受信したパケットをＴＣＰに従った配信を要求する第１のシンクに転送するステップと、
前記リングバッファから前記データを読み出し、当該読み出したデータをＵＤＰ（User Datagram Protocol）に従った配信を要求する第２のシンクに転送するステップと、
前記受信したパケットのＴＣＰシーケンス番号に基づき、受信していないデータが存在すると判断した場合、受信していないデータが存在することを示すロス情報を保持するステップと、
前記ロス情報が存在する場合には、当該ロス情報の手前まで受信したデータを前記リングバッファから読み出し、所定時間待機しても当該ロス情報に対応するデータが受信されない場合、当該ロス情報の後に受信したデータを前記リングバッファから読み出すステップと、
を有する転送方法。
【請求項３】
請求項１に記載の転送装置の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置、転送方法及びプログラムに関する。
【背景技術】
【０００２】
ＩＰ（Internet Protocol）ネットワークでは、ＴＣＰ（Transmission Control Protocol）及びＵＤＰ（User Datagram Protocol）等のトランスポートプロトコルが利用される。【０００３】
ＴＣＰは、再送制御等を行うことができるため信頼性の高いプロトコルである。ＵＤＰは、信頼性を確保する仕組みがないが、処理が簡単で遅延が少ないプロトコルである。【０００４】
１つのソース（防犯カメラ等）から複数のシンク（ビュワー等）に映像配信する従来の技術では、ＴＣＰベースのＰＵＢ／ＳＵＢモデルを用いた配信形態（非特許文献１参照）や、ＵＤＰベースのマルチキャスト（非特許文献２参照）が提案されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ISO/IEC 20922, 10 December 2015
【非特許文献２】IETF RFC 7761, March 2016
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の技術では、ノイズの無い高品質な映像視聴を必要とするシンクに対しては、ＴＣＰベースの配信が行われ、リアルタイムなストリームの映像視聴を必要とするシンクに対しては、ＵＤＰベースの配信が行われる。【０００７】
しかし、ＴＣＰベースの配信による高品質性の通信要件を持つシンクと、ＵＤＰベースの配信によるリアルタイム性の通信要件を持つシンクとが存在する場合、それぞれに対するソースが必要となり、１つのソースから、異なる通信要件を持つシンクに対して適切なトランスポートでの転送を行うことができない。【０００８】
本発明は、１つのソースから異なる通信要件を持つシンクに対してトランスポートでの転送を行うことを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一形態に係る転送装置は、
ＴＣＰ（Transmission Control Protocol）に従ってデータを配信するソースからパケットを受信する受信部と、
ＴＣＰシーケンス番号の最大値の約数Ｌの格納領域を持つリングバッファにおいて、前記受信したパケットのＴＣＰシーケンス番号に基づき、前記受信したパケット内のデータを、前記受信したパケットのＴＣＰシーケンス番号をＬでモジュロ演算して得られる値によって表される格納領域に格納する格納部と、
前記受信したパケットをＴＣＰに従った配信を要求する第１のシンクに転送するＴＣＰ転送部と、
前記リングバッファから前記データを読み出し、当該読み出したデータをＵＤＰ（User Datagram Protocol）に従った配信を要求する第２のシンクに転送するＵＤＰ転送部と、
を有し、
前記格納部は、前記受信したパケットのＴＣＰシーケンス番号に基づき、受信していないデータが存在すると判断した場合、受信していないデータが存在することを示すロス情報を保持し、
前記ＵＤＰ転送部は、前記ロス情報が存在する場合には、当該ロス情報の手前まで受信したデータを前記リングバッファから読み出し、所定時間待機しても当該ロス情報に対応するデータが受信されない場合、当該ロス情報の後に受信したデータを前記リングバッファから読み出す、
ことを特徴とする。
【００１０】
また、本発明の一形態に係る転送方法は、
ＴＣＰ（Transmission Control Protocol）に従ってデータを配信するソースから、配信されたデータを処理する複数のシンクにデータを転送する転送装置における転送方法であって、
前記ソースからパケットを受信するステップと、
ＴＣＰシーケンス番号の最大値の約数Ｌの格納領域を持つリングバッファにおいて、前記受信したパケットのＴＣＰシーケンス番号に基づき、前記受信したパケット内のデータを、前記受信したパケットのＴＣＰシーケンス番号をＬでモジュロ演算して得られる値によって表される格納領域に格納するステップと、
前記受信したパケットをＴＣＰに従った配信を要求する第１のシンクに転送するステップと、
前記リングバッファから前記データを読み出し、当該読み出したデータをＵＤＰ（User Datagram Protocol）に従った配信を要求する第２のシンクに転送するステップと、
前記受信したパケットのＴＣＰシーケンス番号に基づき、受信していないデータが存在すると判断した場合、受信していないデータが存在することを示すロス情報を保持するステップと、
前記ロス情報が存在する場合には、当該ロス情報の手前まで受信したデータを前記リングバッファから読み出し、所定時間待機しても当該ロス情報に対応するデータが受信されない場合、当該ロス情報の後に受信したデータを前記リングバッファから読み出すステップと、
を有することを特徴とする。
【００１１】
また、本発明の一形態に係るプログラムは、
上記の転送装置の各部としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、１つのソースから異なる通信要件を持つシンクに対してトランスポートでの転送を行うことが可能になる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例に係るデータ配信システムの全体構成を示す図である。
【図２】本発明の実施例に係るデータ配信システムにおける通信手順を示すシーケンス図（正常時）である。
【図３】本発明の実施例に係るデータ配信システムにおける通信手順を示すシーケンス図（パケットロス発生時）である。
【図４】本発明の実施例に係る転送装置の機能構成を示すブロック図である。
【図５】リングバッファ格納処理の概要を示す図である。
【図６】リングバッファ格納処理を示すフローチャートである。
【図７】リングバッファ読み出し処理の概要を示す図である。
【図８】リングバッファ読み出し処理を示すフローチャートである。
【図９】本発明の実施例に係る転送装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施例について説明する。
【００１５】
＜データ配信システムの全体構成＞
図１は、本発明の実施例に係るデータ配信システムの全体構成を示す図である。データ配信システムは、転送装置Ａ１０と、転送装置Ｂ２０と、ソース３０と、１つ以上のシンク４０と、１つ以上のシンク５０とを有する。それぞれの装置は、パケットロスが生じる可能性がある通信路を用いて接続される。
【００１６】
ソース３０は、ＴＣＰに従って映像のようなデータを配信する装置（配信元ノード）である。ソース３０の例として、カメラ、映像配信サーバ等がある。なお、ソース３０は、カメラと映像配信サーバの組み合わせのように、複数の装置によって構成されることも可能である。
【００１７】
シンク４０は、高品質性の通信要件を持ち、ソース３０からＴＣＰに従ったデータの配信を要求し、受信したデータを処理（表示、解析、保存など）する装置（配信先ノード）である。シンク５０は、リアルタイム性の通信要件を持ち、ソース３０からＵＤＰに従ったデータの配信を要求し、受信したデータを処理（表示、解析、保存など）する装置（配信先ノード）である。シンク４０及び５０の例として、ビュワー等がある。シンク４０及び５０も、それぞれビュワーと映像再生サーバの組み合わせのように、複数の装置によって構成されることも可能である。
【００１８】
転送装置Ａ１０は、ソース３０と、シンク４０に対してパケットを転送する転送装置Ｂ２０との間に介在し、ソース３０から受信したデータをシンク５０に対しても転送する装置である。転送装置Ａ１０は、異なる通信要件を持つシンク４０及び５０に対してデータを転送するために、ＴＣＰに従って配信されるデータを、コネクションを終端することなくミラーリングする。シンク４０に対しては、そのまま受信したパケットを転送し、シンク５０に対してはＵＤＰに従った通信に載せ替えて転送する。具体的には、転送装置Ａ１０は、シンク５０に対してデータを転送するために、受信したパケットのＴＣＰシーケンス番号に基づき、受信したパケット内のデータをリングバッファに一時的に格納する。ＴＣＰシーケンス番号に基づき、受信していないデータが存在すると判断した場合、受信していないデータが存在することを示すロス情報を保持する。ＵＤＰに従った通信への載せ替えは、リングバッファからデータを読み出して転送することによって実現する。ただし、ロス情報が存在する場合には、ロス情報の手前まで受信したデータをリングバッファから読み出し、所定時間待機してもロス情報に対応するデータが受信されない場合、ロス情報のデータの受取は破棄し、ロス情報の後に受信したデータの読み出しを再開する。なお、本発明の実施例において、転送装置Ａ１０においてリングバッファを用いる例について説明するが、ＵＤＰに従った通信への載せ替えのために用いるバッファは、リングバッファに限定されず、他の種類のバッファでもよい。
【００１９】
転送装置Ｂ２０は、ソース３０とＴＣＰで接続し、ソース３０から受信したパケットを宛先の装置に転送する装置である。転送装置Ｂ２０は、ＴＣＰに従った配信を要求するシンク４０に対してパケットを転送する必要がある場合、ソース３０とのＴＣＰコネクションを終端して、シンク４０に対してＴＣＰコネクションを設定してパケットを転送することができる。
【００２０】
上記のデータ配信システムにおける通信手順について説明する。
【００２１】
図２は、正常時の通信手順を示すシーケンス図である。
【００２２】
ソース３０は、転送装置Ｂ２０に対してＴＣＰに従ってデータを配信する（Ｓ１０１）。ソース３０と転送装置Ｂ２０との間に介在する転送装置Ａ１０は、コネクションを終端することなく、ＴＣＰシーケンス番号に基づき、受信したパケット内のデータをリングバッファに格納し、リングバッファからデータを読み出して、ＵＤＰに従った配信を要求するシンク５０に転送する（Ｓ１０３）。なお、転送装置Ａ１０は、複数のシンク５０に対してデータを転送することができる。
【００２３】
転送装置Ｂ２０がパケットを受信した場合、次に受け取る予定のデータを示す確認応答をソース３０に送信すると共に（Ｓ１０５）、パケットをシンク４０に転送する（Ｓ１０７）。なお、転送装置Ｂ２０は、複数のシンク４０に対してパケットを転送することができる。シンク４０がパケットを受信した場合、次に受け取る予定のデータを示す確認応答を転送装置Ｂ２０に送信する（Ｓ１０９）。
【００２４】
ソース３０が次のデータを送信する場合も同様に、データが配信される（Ｓ１１１〜Ｓ１１９）。
【００２５】
図３は、パケットロス発生時の通信手順を示すシーケンス図である。
【００２６】
ソース３０がデータを配信する途中でパケットロスが発生したものとする（Ｓ１２１）。ソース３０は、転送装置Ｂ２０に対して次のデータを配信する（Ｓ１２３）。転送装置Ａ１０は、ＴＣＰシーケンス番号に基づき、データをリングバッファに格納しているため、受信していないデータが存在することを認識できる。転送装置Ａ１０は、ロス情報を保持し、受信していないデータの受取を所定時間待機する。所定時間待機しても受信していないデータが受け取れない場合、転送装置Ａ１０は、リングバッファからデータを読み出して、シンク５０に転送する（Ｓ１２５）。
【００２７】
転送装置Ｂ２０がパケットを受信した場合、ＴＣＰシーケンス番号に基づき、受信していないデータが存在することを認識できる。転送装置Ｂ２０は、受信できたデータを示す確認応答をソース３０に送信すると共に（Ｓ１２７）、受信していないデータの再送要求をソース３０に送信する（Ｓ１２９）。
【００２８】
ソース３０は、再送要求に応じてパケットを再送する（Ｓ１３１）。転送装置Ｂ２０が再送要求に応じてパケットを受信した場合、次に受け取る予定のデータを示す確認応答をソース３０に送信すると共に（Ｓ１３５）、パケットをシンク４０に転送する（Ｓ１３７）。シンク４０がパケットを受信した場合、次に受け取る予定のデータを示す確認応答を転送装置Ｂ２０に送信する（Ｓ１３９）。なお、再送要求に応じて送信されたパケットが、転送装置Ａ１０が待機している間に到達した場合、転送装置Ａ１０は、パケット内のデータをシンク５０に転送することができる（図示せず）。
【００２９】
＜転送装置の構成及び動作＞
図４は、本発明の実施例に係る転送装置１０の機能構成を示すブロック図である。転送装置１０は、受信部１０１と、転送先判断部１０３と、格納部１０５と、ＴＣＰ転送部１０７と、ＵＤＰ転送部１０９とを有する。
【００３０】
受信部１０１は、ソース３０から送信されたパケットを受信する。また、受信部１０１は、シンク４０及び５０からソース３０に対して送信されたデータ配信要求を受信する。
【００３１】
転送先判断部１０３は、データの転送先のシンク４０及び５０を判断する。シンク４０及び５０がソース３０に対してデータ配信要求を送信した場合、転送先判断部１０３は、ソース３０のアドレス情報と、シンク４０及び５０のアドレス情報とをリスト等に保持する。転送先判断部１０３は、受信部１０１においてソース３０からデータを受信した場合、保持したアドレス情報を参照して、転送先のシンク４０及び５０を判断することができる。
【００３２】
格納部１０５は、受信したパケットのＴＣＰシーケンス番号に基づき、パケット内のデータをリングバッファに格納する。格納部１０５におけるリングバッファ格納処理については以下に詳細に説明する。
【００３３】
ＴＣＰ転送部１０７は、受信したパケットをＴＣＰに従った配信を要求するシンク４０に転送する。
【００３４】
ＵＤＰ転送部１０９は、リングバッファからデータを読み出し、読み出したデータをＵＤＰに従った配信を要求するシンク５０に転送する。ＵＤＰ転送部１０９におけるリングバッファ読み出し処理については以下に詳細に説明する。
【００３５】
図５は、リングバッファ格納処理の概要を示す図であり、図６は、リングバッファ格納処理を示すフローチャートである。
【００３６】
格納部１０５は、ＴＣＰシーケンス番号の最大値の約数Ｌの格納領域を持つリングバッファを作成する。リングバッファには、書き込みを行うアドレスｐ＿ｗｒｉｔｅと、読み出しを行うアドレスｐ＿ｒｅａｄとが存在する。
【００３７】
図５（１）に示すように、データを受信した場合、格納部１０５は、書き込みアドレスｐ＿ｗｒｉｔｅが、受信したパケットのＴＣＰシーケンス番号ＴＣＰＳＥＱをＬでモジュロ演算して得られる値、すなわち、ＴＣＰＳＥＱ  ｍｏｄ  Ｌに等しいかを判断する（Ｓ２０１）。等しい場合（Ｓ２０１：Ｙｅｓ）、図５（２）に示すように、そのアドレスｐ＿ｗｒｉｔｅが示す格納領域に、受信したパケット内のデータを記憶する（Ｓ２０３）。このように、格納部１０５は、ＴＣＰＳＥＱ  ｍｏｄ  Ｌによって表されるリングバッファの格納領域にデータを格納する。
【００３８】
図５（３）に示すように、パケットロスが発生して受信すべきデータがリングバッファに格納されていない状態で次のデータを受信した場合、格納部１０５は、書き込みアドレスｐ＿ｗｒｉｔｅがＴＣＰＳＥＱ  ｍｏｄ  Ｌに等しくないことを認識する（Ｓ２０１：Ｎｏ）。この場合、格納部１０５は、ロス情報をリスト等に保持する（Ｓ２０５）。ロス情報は、受信していないパケットのＴＣＰシーケンス番号としてもよく、受信していないデータがリングバッファに格納される領域の開始アドレスＰ＿ｓｏｌ〜終了アドレスＰ＿ｅｏｌとしてもよい。以下の説明では、ロス情報をＰ＿ｓｏｌ〜Ｐ＿ｅｏｌで表現する例について説明する。図５（４）に示すように、格納部１０５は、次のデータをＰ＿ｅｏｌに続く格納領域に格納する。
【００３９】
図７は、リングバッファ読み出し処理の概要を示す図であり、図８は、リングバッファ読み出し処理を示すフローチャートである。
【００４０】
図７（１）に示すように、ＵＤＰ転送部１０９は、データの読み出しを受け付ける。ＵＤＰ転送部１０９は、リングバッファの読み出しアドレスｐ＿ｒｅａｄが示す格納領域からデータを読み出す。図７は、ロス情報が存在する例を示しているが、ロス情報が存在しない場合には（Ｓ３０１：Ｙｅｓ）、ＵＤＰ転送部１０９は、書き込みアドレスｐ＿ｗｒｉｔｅまでデータを読み出す（Ｓ３０３）。
【００４１】
図７（２）に示すように、ロス情報が存在する場合（Ｓ３０１：Ｎｏ）、ＵＤＰ転送部１０９は、ロス情報の開始アドレスＰ＿ｓｏｌまでデータを読み出す（Ｓ３０５）。また、ＵＤＰ転送部１０９は、ロス情報に対応するデータを待機するため、所定時間後にタイムアウトするタイマーを開始する。図７（３）に示すように、ロス情報に対応するデータが受信されたかの判断（Ｓ３０７）は、タイマーがタイムアウトするまで（Ｓ３０９）行われる。タイマーがタイムアウトする前に（Ｓ３０９：Ｎｏ）ロス情報に対応するデータが受信された場合（Ｓ３０７：Ｎｏ）、格納部１０５がＴＣＰＳＥＱ  ｍｏｄ  Ｌによって表されるリングバッファの格納領域にデータを格納し、ロス情報である開始アドレスＰ＿ｓｏｌ及び終了アドレスＰ＿ｅｏｌを削除する。その他にロス情報が存在する場合（Ｓ３０１：Ｎｏ）、上記の処理が繰り返される。ロス情報が存在しなくなった場合（Ｓ３０１：Ｙｅｓ）、ＵＤＰ転送部１０９は、書き込みアドレスｐ＿ｗｒｉｔｅまでデータを読み出す。
【００４２】
図７（４）に示すように、タイマーがタイムアウトした場合（Ｓ３０９：Ｙｅｓ）、ロス情報に対応するデータの受取を破棄する（Ｓ３１１）。その後、リングバッファ内に読み出すべきデータが存在する場合（Ｓ３１３：Ｎｏ）、上記の処理が繰り返され、次のデータが読み出される。
【００４３】
＜本発明の実施例の効果＞
本発明の実施例によれば、１つのソースから異なる通信要件を持つシンクに対してトランスポートでの転送を行うことが可能になる。その結果、高品質性の通信要件を持つシンクと、リアルタイム性の通信要件を持つシンクとの双方の要求に同時に対応することが可能になる。また、シンクが増加してもソースの処理負荷及びソースと転送装置との間のネットワーク負荷は増加せず、効率的なデータ伝送が可能になる。
【００４４】
＜ハードウェア構成例＞
図９に、本発明の実施例に係る転送装置１０のハードウェア構成例を示す。転送装置１０は、ＣＰＵ（Central Processing Unit）１５１等のプロセッサ、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等のメモリ装置１５２、ハードディスク等の記憶装置１５３等から構成されたコンピュータでもよい。例えば、転送装置１０の機能及び処理は、記憶装置１５３又はメモリ装置１５２に格納されているデータやプログラムをＣＰＵ１５１が実行することによって実現される。また、転送装置１０へのデータの入力は、入出力インタフェース装置１５４から行われ、転送装置１０からのデータの出力は、入出力インタフェース装置１５４から行われてもよい。
【００４５】
＜補足＞
説明の便宜上、本発明の実施例に係る転送装置は機能的なブロック図を用いて説明しているが、本発明の実施例に係る転送装置は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。例えば、本発明の実施例は、コンピュータに対して本発明の実施例に係る転送装置の機能を実現させるプログラム、コンピュータに対して本発明の実施例に係る方法の各手順を実行させるプログラム等により、実現されてもよい。また、各機能部が必要に応じて組み合わせて使用されてもよい。また、本発明の実施例に係る方法は、実施例に示す順序と異なる順序で実施されてもよい。
【００４６】
以上、１つのソースから異なる通信要件を持つシンクに対してトランスポートでの転送を行うための手法について説明したが、本発明は、上記の実施例に限定されることなく、請求の範囲内において、種々の変更・応用が可能である。
【００４７】
本国際出願は２０１７年２月６日に出願した日本国特許出願２０１７−０１９８９０号に基づく優先権を主張するものであり、２０１７−０１９８９０号の全内容を本国際出願に援用する。
【符号の説明】
【００４８】
１０    転送装置
２０    転送装置
３０    ソース
４０    シンク
５０    シンク
１０１  受信部
１０３  転送先判断部
１０５  格納部
１０７  ＴＣＰ転送部
１０９  ＵＤＰ転送部
１５１  ＣＰＵ
１５２  メモリ装置
１５３  記憶装置
１５４  入出力インタフェース装置
【図１】
0006802295.tif 000002
【図２】
0006802295.tif 000003
【図３】
0006802295.tif 000004
【図４】
0006802295.tif 000005
【図５】
0006802295.tif 000006
【図６】
0006802295.tif 000007
【図７】
0006802295.tif 000008
【図８】
0006802295.tif 000009
【図９】
0006802295.tif 000010