(57)【要約】【課題】送信装置がネットワークを介して複数の宛先にパケットを送信するに際して、ネットワークの種類によらずに送信装置のＣＰＵにかかる負荷を低減する。【解決手段】送信装置１０は、送信対象となるデータを出力する仮想Ｉ／Ｆ制御部１１０と、データを含むパケットを生成するパケット生成処理部と、パケットの宛先を複数記憶する記憶部と、パケット生成処理部により生成されたパケットに設定される宛先を記憶部により記憶されている複数の宛先のうちの１つにより書き換え、宛先を書き換えたパケットを出力する処理を複数の宛先について順次に行う仮想Ｉ／Ｆ１２０と、仮想Ｉ／Ｆ１２０によりパケットが出力されるたびにパケットをパケットに設定されている宛先に送信する実インタフェース１３０と、を備える。【選択図】図１
2011211618.tif 000002
【特許請求の範囲】
【請求項１】
送信対象となるデータを出力する仮想インタフェース制御部と、
前記データを含むパケットを生成するパケット生成処理部と、
前記パケットの宛先を複数記憶する記憶部と、
前記パケット生成処理部により生成された前記パケットに設定される宛先を前記記憶部により記憶されている複数の宛先のうちの１つにより書き換え、宛先を書き換えた前記パケットを出力する処理を前記複数の宛先について順次に行う仮想インタフェースと、
前記仮想インタフェースにより前記パケットが出力されるたびに前記パケットを前記パケットに設定されている前記宛先に送信する実インタフェースと、
を備える、送信装置。
【請求項２】
前記仮想インタフェース制御部は、
送信用ｓｏｃｋｅｔを生成し、生成した前記送信用ｓｏｃｋｅｔを介して前記仮想インタフェースに前記パケットを出力する、
請求項１に記載の送信装置。
【請求項３】
前記送信装置は、
受信用ｓｏｃｋｅｔを前記記憶部により記憶されている前記宛先ごとに生成し、生成した前記受信用ｓｏｃｋｅｔにより前記実インタフェースを介して前記パケットの送信エラーが発生した旨を示すレスポンスを受信すると、前記レスポンスを受信した前記受信用ｓｏｃｋｅｔに対応する前記宛先を前記記憶部により記憶されている前記宛先から削除する旨を示す宛先削除要求を前記仮想インタフェース制御部に出力する前記実インタフェース制御部、
をさらに備える、請求項２に記載の送信装置。
【請求項４】
前記仮想インタフェース制御部は、
前記実インタフェース制御部から前記宛先削除要求が出力されると、前記宛先を前記記憶部により記憶されている前記宛先から削除する旨を示す宛先削除要求を前記仮想インタフェースに出力し、
前記仮想インタフェースは、
前記仮想インタフェース制御部から前記宛先削除要求が出力されると、前記宛先を前記記憶部により記憶されている前記宛先から削除する、
請求項３に記載の送信装置。
【請求項５】
前記送信装置は、
再送用ｓｏｃｋｅｔを前記記憶部により記憶されている前記宛先ごとに生成し、生成した前記再送用ｓｏｃｋｅｔにより前記実インタフェースを介して前記パケットの欠損が発生した旨を示すレスポンスを受信すると、前記レスポンスを受信した前記再送用ｓｏｃｋｅｔに対応する前記宛先に欠損が発生した前記パケットを再送する前記実インタフェース制御部、
をさらに備える、請求項２に記載の送信装置。
【請求項６】
パケットの宛先を複数記憶するステップと、
送信対象となるデータを出力するステップと、
前記データを含むパケットを生成するステップと、
前記パケットに設定される宛先を前記複数の宛先のうちの１つにより書き換え、宛先を書き換えた前記パケットを出力する処理を前記複数の宛先について順次に行うステップと、
前記パケットが出力されるたびに前記パケットを前記パケットに設定されている前記宛先に送信するステップと、
を含む、送信方法。
【請求項７】
コンピュータを、
送信対象となるデータを出力する仮想インタフェース制御部と、
前記データを含むパケットを生成するパケット生成処理部と、
前記パケットの宛先を複数記憶する記憶部と、
前記パケット生成処理部により生成された前記パケットに設定される宛先を前記記憶部により記憶されている複数の宛先のうちの１つにより書き換え、宛先を書き換えた前記パケットを出力する処理を前記複数の宛先について順次に行う仮想インタフェースと、
前記仮想インタフェースにより前記パケットが出力されるたびに前記パケットを前記パケットに設定されている前記宛先に送信する実インタフェースと、
を備える、送信装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信装置、送信方法およびプログラムに関する。
【背景技術】
【０００２】
近年、送信装置が同一のデータを複数の宛先に送信する技術として様々なものが開示されている。第１の手法としては、    仮想ネットワークインタフェース（仮想ネットワークＩｎｔｅｒＦａｃｅ、以下、「仮想Ｉ／Ｆ」とも言う。）を介さずにユニキャストでパケットを複数回送信する技術が開示されている。例えば、特許文献１に開示されている技術は、ネットワークの帯域がボトルネックになっている場合に、複数のインタフェースを同時に利用することで、そのボトルネックを回避するためのものである。
【０００３】
また、第２の手法として、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）マルチキャストを利用して複数の宛先にパケットを送信する技術が開示されている。かかるＩＰマルチキャストを利用した技術によれば、パケット生成処理は１回行えばよく、送信処理も一回行えばよいので、ＣＰＵにかかる負荷は低減される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２９４７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、仮想Ｉ／Ｆ１２０を介さずにユニキャストで複数回送信する技術では、ＩＰパケット生成処理が宛先の数だけ行われることになり、ＣＰＵにかかる負荷が高くなってしまうという問題があった。特に、特許文献１に開示された技術では、ＣＰＵにかかる負荷が高まったときにはボトルネックを回避することができないという問題があった。
【０００６】
ＩＰマルチキャストを利用して複数の宛先にパケットを送信する技術では、ネットワークがＩＰマルチキャストに対応している必要があり、ＩＰマルチキャストに対応していないネットワークを介して通信を行う場合には利用できないという問題があった。また、送信対象となる全てのパケットがマルチキャストされてしまうため、選択的にパケットを再送するのは困難であるという問題があった。
【０００７】
そこで、本発明は、送信装置がネットワークを介して複数の宛先にパケットを送信するに際して、ネットワークの種類によらずに送信装置のＣＰＵにかかる負荷を低減することが可能な技術を提供しようとするものである。
【課題を解決するための手段】
【０００８】
本発明のある実施形態によれば、送信対象となるデータを出力する仮想インタフェース制御部と、上記データを含むパケットを生成するパケット生成処理部と、上記パケットの宛先を複数記憶する記憶部と、上記パケット生成処理部により生成された上記パケットに設定される宛先を上記記憶部により記憶されている複数の宛先のうちの１つにより書き換え、宛先を書き換えた上記パケットを出力する処理を上記複数の宛先について順次に行う仮想インタフェースと、上記仮想インタフェースにより上記パケットが出力されるたびに上記パケットを上記パケットに設定されている上記宛先に送信する実インタフェースと、を備える、送信装置が提供される。
【０００９】
上記仮想インタフェース制御部は、送信用ｓｏｃｋｅｔを生成し、生成した上記送信用ｓｏｃｋｅｔを介して上記仮想インタフェースに上記パケットを出力することとしてもよい。
【００１０】
上記送信装置は、受信用ｓｏｃｋｅｔを上記記憶部により記憶されている上記宛先ごとに生成し、生成した上記受信用ｓｏｃｋｅｔにより上記実インタフェースを介して上記パケットの送信エラーが発生した旨を示すレスポンスを受信すると、上記レスポンスを受信した上記受信用ｓｏｃｋｅｔに対応する上記宛先を上記記憶部により記憶されている上記宛先から削除する旨を示す宛先削除要求を上記仮想インタフェース制御部に出力する上記実インタフェース制御部、をさらに備えることとしてもよい。
【００１１】
上記仮想インタフェース制御部は、上記実インタフェース制御部から上記宛先削除要求が出力されると、上記宛先を上記記憶部により記憶されている上記宛先から削除する旨を示す宛先削除要求を上記仮想インタフェースに出力し、上記仮想インタフェースは、上記仮想インタフェース制御部から上記宛先削除要求が出力されると、上記宛先を上記記憶部により記憶されている上記宛先から削除することとしてもよい。
【００１２】
上記送信装置は、再送用ｓｏｃｋｅｔを上記記憶部により記憶されている上記宛先ごとに生成し、生成した上記再送用ｓｏｃｋｅｔにより上記実インタフェースを介して上記パケットの欠損が発生した旨を示すレスポンスを受信すると、上記レスポンスを受信した上記再送用ｓｏｃｋｅｔに対応する上記宛先に欠損が発生した上記パケットを再送する上記実インタフェース制御部、をさらに備えることとしてもよい。
【００１３】
また、本発明の別の実施形態によれば、上記パケットの宛先を複数記憶するステップと、送信対象となるデータを出力するステップと、上記データを含むパケットを生成するステップと、上記パケット生成処理部により生成された上記パケットに設定される宛先を上記記憶部により記憶されている複数の宛先のうちの１つにより書き換え、宛先を書き換えた上記パケットを出力する処理を上記複数の宛先について順次に行うステップと、上記仮想インタフェースにより上記パケットが出力されるたびに上記パケットを上記パケットに設定されている上記宛先に送信するステップと、を含む、送信方法が提供される。
【００１４】
また、本発明の別の実施形態によれば、コンピュータを、送信対象となるデータを出力する仮想インタフェース制御部と、上記データを含むパケットを生成するパケット生成処理部と、上記パケットの宛先を複数記憶する記憶部と、上記パケット生成処理部により生成された上記パケットに設定される宛先を上記記憶部により記憶されている複数の宛先のうちの１つにより書き換え、宛先を書き換えた上記パケットを出力する処理を上記複数の宛先について順次に行う仮想インタフェースと、上記仮想インタフェースにより上記パケットが出力されるたびに上記パケットを上記パケットに設定されている上記宛先に送信する実インタフェースと、を備える、送信装置として機能させるためのプログラムが提供される。
【発明の効果】
【００１５】
以上説明したように、本発明によれば、送信装置がネットワークを介して複数の宛先にパケットを送信するに際して、ネットワークの種類によらずに送信装置のＣＰＵにかかる負荷を低減することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係る送信装置の機能構成を示す図である。
【図２】仮想Ｉ／Ｆを利用しないで複数の宛先に同一データを送信する処理の流れを示すフローチャートである。
【図３】仮想Ｉ／Ｆを利用して複数の宛先に同一データを送信する処理の流れを示すフローチャートである。
【図４】本実施形態に係る送信装置の動作の具体例を示す図である。
【図５】本実施形態に係る送信装置による宛先の追加シーケンスを示す。
【図６】本実施形態に係る送信装置がＩＣＭＰエラーを受信した場合の動作の例を示した図である。
【図７】図６に示した処理をシーケンス図として表したものである。
【図８】本実施形態に係る送信装置をＲＴＰ／ＲＴＣＰストリーミングに適用した場合の選択的再送例を示す図である。
【図９】図８に示した処理をシーケンス図として表したものである。
【図１０】仮想Ｉ／Ｆにより実行される処理のフロー図を示す。
【図１１】本実施形態に係る送信装置をＴＣＰ通信に適用した場合の概要図である。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付すことにより重複説明を省略する。
【００１８】
また、以下の順序にしたがって当該「発明を実施するための形態」を説明する。
１．実施形態
１−１．送信装置の概要
１−２．送信装置の機能構成
１−３．仮想Ｉ／Ｆを利用しない場合
１−４．仮想Ｉ／Ｆを利用する場合
１−５．送信装置の動作の具体例
１−６．送信装置による宛先の追加シーケンス
１−７．送信装置がＩＣＭＰエラーを受信した場合の動作例
１−８．ＲＴＰデータの送信を行う場合の選択的再送例
１−９．仮想Ｉ／Ｆにより実行される処理
１−１０．送信装置をＴＣＰ通信に適用した場合
２．変形例
３．まとめ
【００１９】
＜１．実施形態＞
［１−１．送信装置の概要］
本実施形態に係る送信装置の概要について説明する。本実施形態に係る送信装置は、同一のデータを複数の宛先に送信する場合に、多地点送信用の仮想ネットワークインタフェース（以下、「仮想Ｉ／Ｆ１２０」とも言う。）を介してデータを送信することにより、ボトルネックとなるＩＰパケット生成処理の回数を減らし、送信装置のＣＰＵにかかる負荷を抑制することができる。送信対象となるデータは、映像ストリーム等であるが特に限定されるものではない。
【００２０】
また、送信装置の仮想Ｉ／Ｆ１２０は、設定された宛先情報にしたがって、パケットのＩＰヘッダとトランスポートヘッダとを書き換えながら、実ネットワークインタフェース（以下、「実Ｉ／Ｆ１３０」とも言う。）にパケットを転送することで、多地点送信を実現することができる。トランスポートヘッダには、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）のヘッダやＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のヘッダ等がある。
【００２１】
さらに、送信装置は、仮想Ｉ／Ｆ１２０を介する通信を行った場合には、送信装置内に生成されたＳｏｃｋｅｔが送信専用になってしまい、ＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）パケット等のレスポンスを受信できず、エラー制御ができない。そこで、送信装置内に受信専用のＳｏｃｋｅｔを生成し、レスポンスを受信できるようにする。
【００２２】
また、送信装置が仮想Ｉ／Ｆ１２０を介して送信するデータは、指定された全ての宛先に送信されてしまうので、選択的にデータを再送することができない。そこで、送信装置は、再送用のＳｏｃｋｅｔを生成し、生成した再送用のＳｏｃｋｅｔからデータを再送させることで選択的再送を行うことができる。
【００２３】
［１−２．送信装置の機能構成］
図１は、本実施形態に係る送信装置の機能構成を示す図である。図１に示すように、送信装置１０が備える図示しないＣＰＵにより実行されるアプリケーションには、仮想Ｉ／Ｆ制御部１１０を実現するためのアプリケーションと、実Ｉ／Ｆ制御部１４０を実現するためのアプリケーションとが含まれている。また、送信装置１０が備える図示しないＣＰＵにより実行されるデバイスドライバには、仮想Ｉ／Ｆ制御部１２０を実現するためのデバイスドライバと、実Ｉ／Ｆ１３０とが含まれている。
【００２４】
その他、送信装置１０が備える図示しないＣＰＵによりカーネルが実行されている。カーネルには、ネットワーク層のプロトコルにしたがった処理を行うためのプログラムやトランスポート層のプロトコルにしたがった処理を行うためのプログラムが含まれている。ここでは、ネットワーク層のプロトコルとしてはＩＰ、トランスポート層のプロトコルとしてはＵＤＰを使用することとするが、これらに限定されるものではない。これらのアプリケーションやカーネル、デバイスドライバ等のプログラムは、例えば、送信装置１０が備える図示しない記憶部により記憶されており、ＣＰＵにより実行されることで各機能ブロック（仮想Ｉ／Ｆ制御部１１０、仮想Ｉ／Ｆ制御部１２０、実Ｉ／Ｆ１３０、実Ｉ／Ｆ制御部１４０等）が実現される。
【００２５】
各機能ブロックにより使用されるデータは、例えば、送信装置１０が備える図示しない記憶部により記憶されているものを使用することができる。実Ｉ／Ｆ１３０による通信は、例えば、送信装置１０が備える図示しない通信装置を介して行うこととすることができる。
【００２６】
送信装置１０は、送信対象となるデータを、仮想Ｉ／Ｆ制御部１１０により、仮想Ｉ／Ｆ制御部１２０に対して送信する（ステップＳ１１０）。そして、カーネル内でＩＰパケット生成処理（ステップＳ１２０）がなされた後、カーネルによりＩＰパケットが仮想Ｉ／Ｆ制御部１２０に送信される（ステップＳ１３０）。カーネル内においてパケット生成処理を行う機能ブロックは、特に、パケット生成処理部の一例として機能する。仮想Ｉ／Ｆ制御部１２０により、ＩＰヘッダ、ＵＤＰヘッダを書き換えつつ（ステップＳ１４０）、ヘッダを書き換えたパケットを実Ｉ／Ｆ１３０に向けて複数回送信することで（ステップＳ１５０）、多地点配信を実現する。配信先となる宛先は、仮想Ｉ／Ｆ制御部１１０から仮想Ｉ／Ｆ制御部１２０に対して送信先追加／削除要求が出されることで制御される（ステップＳ１６０）。
【００２７】
ＩＣＭＰエラー等のレスポンスが宛先から実Ｉ／Ｆ１３０に返ってきた場合（ステップＳ１７０）、アプリケーションは、仮想Ｉ／Ｆ１２０経由ではエラーを受信できないので、実Ｉ／Ｆ制御部１４０により受信する。送信装置１０は、ネットワーク上でパケットが欠損した場合、そのパケットを再送する必要があるが、仮想Ｉ／Ｆ１２０経由でパケットを送信すると、全ての宛先にパケットが送信されてしまう。実Ｉ／Ｆ制御部１４０が、パケットが欠損した宛先にのみ、実Ｉ／Ｆ１３０を介してパケットを再送することで（ステップＳ１８０）、選択的な再送が実現できる。
【００２８】
［１−３．仮想Ｉ／Ｆを利用しない場合］
図２は、仮想Ｉ／Ｆ１２０を利用しないで宛先Ａ〜Ｃの３箇所に同一データを送信する処理の流れを示すフローチャートである。送信装置１０は、ネットワークを介して宛先Ａ〜Ｃと通信を行うものとする。仮想Ｉ／Ｆ１２０を利用しないで宛先Ａ〜Ｃの３箇所に同一データを送信する場合には、アプリケーションは、宛先Ａ〜Ｃにそれぞれデータを送信し（ステップＳ２１０Ａ〜ステップＳ２１０Ｃ）、カーネルによるパケット生成処理も３回行われる（ステップＳ２１１Ａ〜ステップＳ２１１Ｃ）。
【００２９】
［１−４．仮想Ｉ／Ｆを利用する場合］
図３は、仮想Ｉ／Ｆ１２０を利用して宛先Ａ〜Ｃの３箇所に同一データを送信する処理の流れを示すフローチャートである。本実施形態に係る送信装置１０は、仮想Ｉ／Ｆ１２０を利用して宛先Ａ〜Ｃの３箇所に同一データを送信する。アプリケーションは、ダミーの宛先である宛先Ｖにデータを送信する（ステップＳ３１０）。アプリケーションによるデータ送信（ステップＳ３１０）は、例えば、送信装置１０が備える図示しない入力部によりユーザから入力が受け付けられたデータおよび送信操作に基づいて行われる。
【００３０】
カーネルは、宛先Ｖあてのパケットを一回生成する（ステップＳ３１１）。仮想Ｉ／Ｆ１２０は、宛先テーブルを参照しながら（ステップＳ３１２）、生成されたパケットのヘッダを宛先Ａ〜Ｃに書き換えながら、ヘッダが書き換えられたパケットを３回送信する（ステップＳ３１３Ａ〜ステップＳ３１３Ｃ）。宛先テーブルは、例えば、送信装置が備える図示しない記憶部により記憶されており、仮想Ｉ／Ｆ１２０により読み込まれて使用される。このように、仮想Ｉ／Ｆ１２０を利用した場合には、パケット生成処理を１回行えばよいので、ＣＰＵにかかる負荷が軽減されている。
【００３１】
［１−５．送信装置の動作の具体例］
図４は、送信装置１０の動作の具体例を示す図である。仮想Ｉ／Ｆ１２０のアドレスとしては、例えば、ダミーのアドレス「１９２．１６８．１００．１」を設定しておく。仮想Ｉ／Ｆ制御部１１０は、そのダミーアドレスをｂｉｎｄ（）したｓｏｃｋｅｔを作成し、ダミーの宛先として「１９２．１６８．１００．２」にそのｓｏｃｋｅｔをｃｏｎｎｅｃｔ（）している。宛先テーブルには「（始点アドレス）１９２．１６８．０．１：１００００、（終点アドレス）１９２．１６８．１０．２：２００００」「（始点アドレス）１９２．１６８．０．１：１００００、（終点アドレス）１９２．１６８．１０．３：２００００」「（終点アドレス）１９２．１６８．０．１：１００００、（終点アドレス）１９２．１６８．１０．４：２００００」が設定されている。この設定はｉｏｃｔｌ（）で編集する。
【００３２】
仮想Ｉ／Ｆ制御部１１０は、作成したｓｏｃｋｅｔからデータを送信すると、カーネル内でＩＰパケット化され、ＩＰパケットが仮想Ｉ／Ｆ１２０に届く。仮想Ｉ／Ｆ１２０は、宛先テーブルにしたがって、ＩＰパケットのヘッダを書き換えながら、ＩＰパケットを実Ｉ／Ｆ１３０に転送する。実Ｉ／Ｆ１３０は、ヘッダが書き換えられたＩＰパケットをそのままネットワークに送出する。仮想Ｉ／Ｆ１２０においてヘッダが書き換えられているので、パケットを受信する側では、かかる手法により送信されたパケットと一般的な手法により送信されたパケットとの区別がつかない。
【００３３】
［１−６．送信装置による宛先の追加シーケンス］
図５に、送信装置１０による宛先の追加シーケンスを示す。まず、仮想Ｉ／Ｆ制御部１１０は、宛先追加要求を受け取ると（ステップＳ４１０）、実Ｉ／Ｆ制御部１４０に受信用／再送用ｓｏｃｋｅｔの作成を要求する（ステップＳ４２０）。仮想Ｉ／Ｆ制御部１１０により受け取られる宛先追加要求は、例えば、送信装置１０が備える図示しない入力部によりユーザから入力が受け付けられた宛先および宛先追加操作に基づいて行われる。実Ｉ／Ｆ制御部１４０は、ｓｏｃｋｅｔを作成した後（ステップＳ４３０）、ｓｏｃｋｅｔ作成完了応答を返信する（ステップＳ４４０）。その後、仮想Ｉ／Ｆ制御部１１０は、仮想Ｉ／Ｆ１２０に対して宛先追加要求を送信し（ステップＳ４５０）、仮想Ｉ／Ｆ１２０は、宛先追加要求により指定された宛先を宛先テーブルに追加する（ステップＳ４６０）。仮想Ｉ／Ｆ１２０は、宛先の追加が終わると、仮想Ｉ／Ｆ制御部１１０に宛先追加完了応答を返信する（ステップＳ４７０）。
【００３４】
［１−７．送信装置がＩＣＭＰエラーを受信した場合の動作例］
図６は、送信装置１０がＩＣＭＰエラーを受信した場合の動作の例を示した図である。実Ｉ／Ｆ制御部１４０は、受信用／再送用ｓｏｃｋｅｔにより実Ｉ／Ｆ１３０を介してＩＣＭＰエラーを受信し（ステップＳ５１０）、ＩＣＭＰエラーが発生した宛先向けのデータ送信を止めるように仮想Ｉ／Ｆ制御部１１０に宛先削除要求を送信する（ステップＳ５２０）。仮想Ｉ／Ｆ制御部１１０は、宛先削除要求を受信すると、仮想Ｉ／Ｆ１２０に対して宛先削除要求を送信し（ステップＳ５３０）、仮想Ｉ／Ｆ１２０は、宛先削除要求を受信すると、宛先削除要求により指定された宛先を宛先テーブルから削除する。これにより、当該宛先へのデータ送信が停止される。
【００３５】
図７は、図６に示した処理をシーケンス図として表したものである。まず、実Ｉ／Ｆ１３０は、ＩＣＭＰエラーを受信すると（ステップＳ５１０）、実Ｉ／Ｆ制御部１４０にＩＣＭＰエラーを送信する。実Ｉ／Ｆ制御部１４０は、受信用／再送用ｓｏｃｋｅｔによりＩＣＭＰエラーを受信すると、仮想Ｉ／Ｆ制御部１１０に宛先削除要求を送信する（ステップＳ５２０）。仮想Ｉ／Ｆ制御部１１０は、宛先削除要求を受信すると、仮想Ｉ／Ｆ１２０に宛先削除要求を送信する（ステップＳ５３０）。
【００３６】
仮想Ｉ／Ｆ１２０は、宛先削除要求により指定された宛先を宛先テーブルから削除し、（ステップＳ５４０）、宛先の削除が完了すると、宛先削除完了応答を仮想Ｉ／Ｆ制御部１１０に返信する（ステップＳ５５０）。仮想Ｉ／Ｆ制御部１１０は、宛先削除完了応答を受信すると、ｓｏｃｋｅｔ削除要求を実Ｉ／Ｆ制御部１４０に送信する（ステップＳ５６０）。実Ｉ／Ｆ制御部１４０は、ｓｏｃｋｅｔ削除要求を受信すると、当該宛先に対応する受信用／再送用ｓｏｃｋｅｔを削除し（ステップＳ５７０）、仮想Ｉ／Ｆ制御部１１０にｓｏｃｋｅｔ削除完了応答を返信する（ステップＳ５８０）。
【００３７】
［１−８．ＲＴＰデータの送信を行う場合の選択的再送例］
図８は、本実施形態に係る送信装置をＲＴＰ／ＲＴＣＰストリーミングに適用した場合の選択的再送例を示す図である。ＲＴＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）／ＲＴＣＰ（ＲＴＰ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ストリーミングでは、ＲＴＰパケットの欠損をＲＴＣＰにより通知して送信装置１０に再送を促すことができる。図８に示した例では、「１９２．１６８．０．４」の端末（宛先Ｃ）が、「２」のパケットが欠損していることを検知し、ＲＴＣＰにより「２」のパケットが欠損していることを送信装置１０に通知している（ステップＳ６１０）。ＲＴＰ／ＲＴＣＰ制御部１５０は、「２」のパケットが欠損していることを実Ｉ／Ｆ制御部１４０に送信し（ステップＳ６２０）、実Ｉ／Ｆ制御部１４０は、「２」のパケットが欠損していることを宛先Ｃに対応する受信用／再送用ｓｏｃｋｅｔにて受信し、実Ｉ／Ｆ１３０を経由して「１９２．１６８．０．４」の端末（宛先Ｃ）にのみパケットを再送する。
【００３８】
図９は、図８に示した処理をシーケンス図として表したものである。ＲＴＰ／ＲＴＣＰ制御部１５０は、宛先Ｖのアドレス「１９２．１６８．１００．２」宛に送信対象となるＲＴＰデータを送信し（ステップＳ７１０）、仮想Ｉ／Ｆ制御部１１０は、受信したＲＴＰデータをカーネル宛に送信する（ステップＳ７２０）。カーネルは、ＲＴＰデータを受信すると、ＲＴＰデータを含むパケットを生成し（ステップＳ７３０）、生成したパケットを仮想Ｉ／Ｆ１２０に送信する。仮想Ｉ／Ｆ１２０は、宛先テーブルを参照しながら（ステップＳ７４０）、生成されたパケットのヘッダを宛先Ａ〜Ｃのアドレスに書き換えながら（ステップＳ７５０Ａ〜ステップＳ７５０Ｃ）、ヘッダが書き換えられたパケットを３回送信する。
【００３９】
宛先Ｃによりパケットロスが検知されると（ステップＳ７６０）、宛先Ｃは、ＲＴＣＰによる通知がＲＴＰ／ＲＴＣＰ制御部１５０に通知し（ステップＳ６１０）、ＲＴＰ／ＲＴＣＰ制御部１５０は、実Ｉ／Ｆ制御部１４０にＲＴＰ再送要求を送信する（ステップＳ６２０）。実Ｉ／Ｆ制御部１４０は、ＲＴＰ再送要求を受信すると、実Ｉ／Ｆ１３０を介して、宛先Ｃにのみパケットを再送する（ステップＳ６２０）。
【００４０】
［１−９．仮想Ｉ／Ｆ１２０により実行される処理］
図１０に、仮想Ｉ／Ｆ１２０により実行される処理のフロー図を示す。仮想Ｉ／Ｆ１２０は、ＩＰパケットをカーネルから受け取ると、宛先テーブルを参照する（ステップＳ８１０）。仮想Ｉ／Ｆ１２０は、宛先テーブルに宛先データがあれば（ステップＳ８２０で「Ｙｅｓ」）、宛先データに基づき、ＩＰパケットのヘッダ（ＩＰヘッダ）を書き換え（ステップＳ８３０）、ＩＰチェックサムを再計算する（ステップＳ８４０）。そして、仮想Ｉ／Ｆ１２０は、ＩＰパケットのＵＤＰヘッダを書き換え（ステップＳ８５０）、ＵＤＰチェックサムを再計算し（ステップＳ８６０）、ＩＰパケットを実Ｉ／Ｆ１３０宛に送信する（ステップＳ８７０）。仮想Ｉ／Ｆ１２０は、宛先テーブルに宛先データがなくなるまでステップＳ８３０〜ステップＳ８７０で示された処理を行い、宛先テーブルに宛先データがなくなったら（ステップＳ８２０で「Ｎｏ」）、処理を終了する。
【００４１】
［１−１０．送信装置をＴＣＰ通信に適用した場合］
図１１は、本実施形態に係る送信装置をＴＣＰ通信に適用した場合の概要図である。ステップＳ９１０〜ステップＳ９４０、ステップＳ９６０は、ＵＤＰ通信を行う場合とほぼ同様にして行われる。ただし、ＴＣＰ通信を行う場合、ＴＣＰ層で再送やレート制御を行うので、仮想Ｉ／Ｆ１２０は、ＩＰパケットのヘッダを書き換えた後、ＩＰパケットをＴＣＰ層に転送する必要がある（ステップＳ９５０）。仮想Ｉ／Ｆ１２０は、ＵＤＰ通信を行う場合には、ＩＰパケットを直接ＩＰ層に転送している。
【００４２】
カーネルは、ＴＣＰ処理において、ＴＣＰ  ＡＣＫの内容によりパケットの欠損を検知すると（ステップＳ９７０）、アプリケーションに通知することなく選択的再送を行う（ステップＳ９８０）。実Ｉ／Ｆ制御部１４０は、選択的再送処理に関わらず、Ｓｏｃｋｅｔの生成／削除のみ行う（ステップＳ９９０）。例えば、ＴＣＰ  ＲＳＴが到着した場合、カーネルのＴＣＰ処理において、実Ｉ／Ｆ制御部１４０に通知し、実Ｉ／Ｆ制御部１４０は、Ｓｏｃｋｅｔを削除する等の処理を行う。本実施形態に係る送信装置をＴＣＰ通信に適用した場合、ＵＤＰ通信の場合よりもＣＰＵにかかる負荷は抑制できないが、一般的な通信と比較すれば効率化を図ることができる。
【００４３】
＜２．変形例＞
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【００４４】
例えば、本実施形態において使用されたシーケンス図やフローチャートに示されたステップは、必ずしもシーケンス図やフローチャートに示された順序で実行される必要はない。すなわち、本実施形態において使用されたシーケンス図やフローチャートに示されたステップは、適宜順序が変更されて実行されることとしてもよい。
【００４５】
＜３．まとめ＞
本実施形態によれば、送信装置がネットワークを介して複数の宛先にパケットを送信するに際して、ネットワークの種類によらずに送信装置のＣＰＵにかかる負荷を低減することができる。すなわち、例えば、ネットワークがＩＰマルチキャストに対応していなくても、送信装置のＣＰＵにかかる負荷を低減させつつ、送信装置がネットワークを介して複数の宛先にパケットを送信することができる。
【００４６】
これにより、送信装置によるデータ配信時に送信装置のＣＰＵにかかる負荷を抑制できるので、送信装置はより多くの宛先に配信できるようになる。また、送信装置のＣＰＵにかかる負荷を抑制することができるので、データ配信を行いながらデータ配信以外の処理を行うことが容易となる。本実施形態に係る送信装置は、ＣＰＵの能力に制限がある組み込み機器で多地点配信を行う場合等に特に適したものである。
【符号の説明】
【００４７】
１０    送信装置
１１０  仮想Ｉ／Ｆ制御部
１２０  仮想Ｉ／Ｆ
１３０  実Ｉ／Ｆ
１４０  実Ｉ／Ｆ制御部
１５０  ＲＴＰ／ＲＴＣＰ制御部
【図１】
2011211618.tif 000003
【図２】
2011211618.tif 000004
【図３】
2011211618.tif 000005
【図４】
2011211618.tif 000006
【図５】
2011211618.tif 000007
【図６】
2011211618.tif 000008
【図７】
2011211618.tif 000009
【図８】
2011211618.tif 000010
【図９】
2011211618.tif 000011
【図１０】
2011211618.tif 000012
【図１１】
2011211618.tif 000013