説明

データ配信ネットワークシステム及びデータ配信方法

【課題】ブロードキャスト、或いはマルチキャストによるデータ配信に関する問題、及びユニキャストによるデータ配信に関する問題という、相反する2つの問題を解決する。
【解決手段】サーバ10のデータ送信制御モジュール15は、送信用データの一部を先行送信データとして切り出すと、当該送信用データの残りの部分を遅延配信データとして遅延配信データ保持部16に保持すると共に、当該先行送信データをデバイスドライバ13及びネットワークインタフェース14を介してブロードキャスト、或いはマルチキャストする。クライアントは、サーバ10からの先行送信データを受信し、かつ当該先行送信データに対応する遅延配信データを必要とする場合、サーバ10に対して遅延配信データの送信を要求する。するとサーバ10のデータ送信制御モジュール15は、遅延配信データ保持部16に保持されている遅延配信データを要求元に送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロードキャスト、マルチキャストまたはユニキャストによりサーバコンピュータからクライアント端末にデータを配信するデータ配信ネットワークシステム及びデータ配信方法に関する。
【背景技術】
【0002】
従来から、サーバコンピュータが不特定多数、或いは特定多数のクライアント端末に対して同一データを配信するようなデータ配信ネットワークシステムが知られている。このようなデータ配信ネットワークシステムにおいて、データの配信には、以下に述べるように、ブロードキャスト、マルチキャスト、或いはユニキャストが用いられる。
【0003】
・ブロードキャスト、或いはマルチキャストを使用する場合
サーバコンピュータは、クライアント端末側がデータを所望しているか否かに関わらず、ヘッダ及びペイロードを含む送信用データ全体をブロードキャスト、或いはマルチキャストするのが一般的である。
【0004】
・ユニキャストを使用する場合
サーバコンピュータは、データを所望するクライアント端末にのみヘッダ及びペイロードを含む送信用データ全体を配信する。
【0005】
一方、例えば特許文献1には、コンピュータ上で動作するアプリケーションプログラムが特定の仮想アドレス(IO空間)を参照した場合にページフォルトを発生させ、ページフォルトハンドラの処理にて、データをネットワークに送信し、それに対する応答を受信すると、ページフォルトハンドラからアプリケーションプログラムに復帰する仮想分散制御システムが開示されている。
また、例えば特許文献2には、ネットワークを仮想ネットワークにより構築する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−127083号公報
【特許文献1】特開2008−042665号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述したように、従来のデータ配信ネットワークシステムに関する技術(以下、先行技術と称する)では、ブロードキャスト、或いは、マルチキャストを使用する場合、サーバコンピュータは、クライアント端末側がデータを所望しているか否かに関わらず、ヘッダ及びペイロードを含む送信用データ全体をブロードキャスト、或いはマルチキャストする。このため先行技術では、サーバコンピュータによって配信されるデータを受信するクライアント端末が存在しない状態で、当該データがネットワーク上を流れる可能性がある。また、大多数のクライアント端末が受信を所望しないようなデータがネットワーク上を流れる可能性もある。したがって先行技術には、サーバコンピュータによるデータのブロードキャスト、或いはマルチキャストにより、ネットワークリソースを浪費するといった問題がある。この問題は、ペイロードのサイズが大きい場合、特に顕著となる。なお、ネットワークリソースは、回線の帯域やネットワーク装置のリソースだけでなく、サーバコンピュータやクライアント端末のネットワークインタフェース、CPU及びメモリリソースも含む。
【0008】
これに対し、先行技術においてユニキャストを使用する場合、サーバコンピュータはデータを所望するクライアント端末にのみ送信用データ全体を送信する。このため先行技術であっても、ユニキャストを使用する場合には、上記ブロードキャスト、或いはマルチキャストを使用する場合のような問題は生じない。しかし先行技術では、少なくともサーバコンピュータ(或いはネットワークノード)は、データ受信を所望するクライアント端末を何らかの方法で特定する必要があり、データ配信ネットワークシステムを構築、管理することが高コストとなってしまう。
【0009】
本発明は上記事情を考慮してなされたものでその目的は、ブロードキャスト、或いはマルチキャストによるデータ配信に関する問題、及びユニキャストによるデータ配信に関する問題という、相反する2つの問題を解決することができるデータ配信ネットワークシステム及びデータ配信方法を提供することにある。
【課題を解決するための手段】
【0010】
本発明の1つの観点によれば、サーバコンピュータと複数のクライアント端末とがネットワークによって接続されたデータ配信ネットワークシステムが提供される。このデータ配信ネットワークシステムにおいて、前記サーバコンピュータは、前記ネットワークを介してデータを送受信する第1の送受信手段と、前記ネットワークを介して送信されるべき送信用データの一部を先行送信データとして切り出して、当該先行送信データを前記第1の送受信手段によりブロードキャスト、或いはマルチキャストするデータ送受信制御手段と、前記送信用データの前記先行送信データを除く部分を遅延配信データとして保持する遅延配信データ保持手段とを含む。一方、前記複数のクライアント端末の各々は、前記ネットワークを介してデータを送受信する第2の送受信手段と、前記サーバコンピュータからブロードキャスト、或いはマルチキャストされた前記先行送信データが前記第2の送受信手段によって受信され、かつ当該先行送信データに対応する前記遅延配信データを必要とする場合、前記第2の送受信手段により前記サーバコンピュータに対して前記遅延配信データの送信を要求する遅延配信データ送信要求手段とを含む。前記サーバコンピュータの前記データ送受信制御手段は、前記複数のクライアント端末のいずれかのクライアント端末から、前記遅延配信データの送信が要求された場合に、前記遅延配信データ保持手段に保持されている前記遅延配信データを前記第1の送受信手段により当該遅延配信データの送信を要求したクライアント端末宛てに送信する。
【発明の効果】
【0011】
本発明によれば、サーバコンピュータから、送信用データの一部のみが先行送信データとしてブロードキャスト、或いはマルチキャストされると、この先行送信データを受信し、かつ当該先行送信データに対応する未受信の残りのデータである遅延配信データを必要とするクライアント端末だけから、サーバコンピュータに遅延配信データの送信が要求され、この遅延配信データの送信を要求したクライアント端末だけに、サーバコンピュータから遅延配信データ(つまり残りのデータ)が送信される。これにより、ブロードキャスト、或いはマルチキャストによるデータ配信に関する問題、及びユニキャストによるデータ配信に関する問題という、相反する2つの問題を解決して、ネットワークリソースの浪費を防止し、かつクライアント管理の低コスト化を図ることができる。
【図面の簡単な説明】
【0012】
【図1】本発明の第1の実施形態に係るデータ配信ネットワークシステムの全体構成を示すブロック図。
【図2】第1の実施形態におけるクライアントの構成を示すブロック図。
【図3】第1の実施形態におけるサーバの構成を示すブロック図。
【図4】第1の実施形態で適用される受信バッファのデータ構造例を示す図。
【図5】送信用データ、先行送信データ及び遅延配信データの関係を、一般的な表現形式と、具体的な表現形式とでそれぞれ示す図。
【図6】受信バッファの初期データ構造例を示す図。
【図7】サーバにおける先行送信データ送信処理の手順を示すフローチャート。
【図8】クライアントにおける先行送信データ受信処理の手順を示すフローチャート。
【図9】ページフォルトハンドラによる遅延配信データ送信要求処理の手順を示すフローチャート。
【図10】サーバにおける遅延配信データ送信処理の手順を示すフローチャート。
【図11】クライアントにおける遅延配信データ受信処理の手順を示すフローチャート。
【図12】本発明の第2の実施形態で適用される一般的なOSによる仮想ネットワークインタフェースの実装例を示す図。
【図13】第2の実施形態で適用される一般的なOSによる仮想ネットワークインタフェースの実装例を示す図。
【図14】第2の実施形態におけるクライアントの構成を示すブロック図。
【図15】第2の実施形態におけるサーバの構成を示すブロック図。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態につき図面を参照して説明する。
<第1の実施形態>
[全体構成]
図1は本発明の第1の実施形態に係るデータ配信ネットワークシステムの全体構成を示すブロック図である。
【0014】
図1のデータ配信ネットワークシステムにおいて、サーバコンピュータ(以下、サーバと称する)10と、複数のクライアント端末、例えばn台(nは1より大きい整数)のクライアント端末(以下、クライアントと称する)20-1,20-2,…20-nは、ネットワーク30によって相互に接続されている。このネットワーク30が、単一のブロードキャストドメインをなしても、或いはルータ等により構成された複数ブロードキャストドメインをなしても構わない。
【0015】
サーバ10は、クライアント20-i(i=1,2,…n)に対して単一のサービス(データ配信)または複数のサービスを提供する。なお、図1の例では、単一のサーバ10がネットワーク30に接続されているが、サーバ10を含む複数のサーバがネットワーク30に接続されていてもよい。また、この複数のサーバが単一のサービスを提供するものであっても構わない。また、あるクライアント20-iが享受するサービスは単一とは限らず、単一のサーバ10から複数のサービスを享受する構成であっても構わない。また、サーバ10を含む複数のサーバがネットワーク30に接続されている場合、クライアント20-iが、当該複数のサーバから複数のサービスを享受する構成であっても構わない。
【0016】
[クライアント20-iの構成]
図2はクライアント20-iの構成を示すブロック図である。クライアント20-iは、バッファ管理モジュール21、ネットワークインタフェース22、デバイスドライバ23、ネットワークプロトコルモジュール24、ページフォルトハンドラ25、及びデータ処理モジュール26を有している。クライアント20-iは更に、遅延配信データ待ちバッファテーブル27及び定義情報記憶部28を有する。
【0017】
バッファ管理モジュール21は、デバイスドライバ23、ネットワークプロトコルモジュール24及びデータ処理モジュール26がデータ送受信に使用するバッファを管理する。バッファ管理モジュール21はまた、遅延配信データ待ちバッファテーブル27を管理する。
【0018】
ネットワークインタフェース22は、データ送受信を行う周知のデバイスである。ネットワークインタフェース22は、デバイスドライバ23によって制御される。
デバイスドライバ23は、ネットワークインタフェース22を制御する、例えばソフトウェアモジュールである。デバイスドライバ23は、通常の送受信処理に加え、サーバ10から受信した遅延配信データを、遅延配信データ待ちバッファテーブル27に保持されている受信バッファのバッファ制御情報に基づき、該当するページに格納する処理等も行う。
【0019】
ネットワークプロトコルモジュール24は、各通信レイヤに依存したデータ送受信を行うネットワークプロトコル群を有する。このネットワークプロトコルモジュール24が有するネットワークプロトコル群は、サーバ10からブロードキャスト、或いはマルチキャストされる後述する先行送信データが、通常の送信データ(以下、送信用データと称する)の先頭からどこまでを含むかにより変わる。ネットワークプロトコルモジュール24に含まれないネットワークプロトコルは、データ処理モジュール26に含まれて、当該データ処理モジュール26で処理される。
【0020】
ページフォルトハンドラ25は、ページフォルトが発生した場合に呼び出される機能モジュールである。ページフォルトハンドラ25は、サーバ10への遅延配信データの要求、及び遅延配信データ待ちバッファテーブル27への情報登録等を行う。
【0021】
データ処理モジュール26は、サーバ10によって配信されるデータを処理する処理主体をなす。データ処理モジュール26は、このデータに係わる処理に加えて、上記ネットワークプロトコルに含まれない部分のネットワークプロトコルに係わる処理を行う。
【0022】
遅延配信データ待ちバッファテーブル27は、後述する遅延配信データの待ち状態にある受信バッファの一覧(更に詳細に述べるならば受信バッファのバッファ制御情報の一覧)を保持するのに用いられるバッファ制御情報保持手段である。定義情報記憶部28については後述する。
【0023】
[サーバ10の構成]
図3はサーバ10の構成を示すブロック図である。サーバ10は、データ配信モジュール11、ネットワークプロトコルモジュール12、デバイスドライバ13、ネットワークインタフェース14及びデータ送信制御モジュール15を有する。サーバ10は更に、遅延配信データ保持部16及び定義情報記憶部17を有する。
【0024】
データ配信モジュール11は、サーバ10におけるデータ配信の処理主体をなす。ネットワークプロトコルモジュール12は、クライアント20-i内のネットワークプロトコルモジュール24と同様に、各通信レイヤに依存したデータ送受信を行うネットワークプロトコル群を有する。
【0025】
デバイスドライバ13は、ネットワークインタフェース14を制御する、例えばソフトウェアモジュールである。ネットワークインタフェース14は、クライアント20-i内のネットワークインタフェース22と同様に、データ送受信を行う周知のデバイスである。ネットワークインタフェース14は、デバイスドライバ13によって制御される。
【0026】
データ送信制御モジュール15は、先行技術であればブロードキャスト、或いはマルチキャストされる送信データ(以下、送信用データと称する)からの、本実施形態においてブロードキャスト、或いはマルチキャストすべきデータ(以下、先行送信データと称する)の切り出しと当該先行送信データの送信とを制御する。データ送信制御モジュール15はまた、送信用データから切り出されなかった残りのデータである遅延配信データを遅延配信データ保持部16に保持する。データ送信制御モジュール15は更に、先行送信データのブロードキャスト、或いはマルチキャストに応じてクライアント20-iから送られる未受信部分の送信要求に対する応答としての遅延配信データの送信を制御する。
【0027】
遅延配信データ保持部16は、データ送信制御モジュール15によって送信用データから切り出されなかったデータを、クライアント20-iからの未受信部分の送信要求に対して当該クライアント20-iに送信されるべき遅延配信データとして保持するのに用いられる。定義情報記憶部17については後述する。
【0028】
本実施形態において、サーバ10によりブロードキャスト、或いは、マルチキャストされる先行送信データに関する定義情報が、予めサーバ10と各クライアント20-iとの間で共有されているものとする。この定義情報は、送信用データのうち、ネットワークプロトコルヘッダ、或いは、ペイロードのどこまでが先行送信データに含まれるかを示すもので、先行送信データ長情報を含む。この先行送信データ長情報は、先行送信データのデータ長を示す。サーバ10が有する定義情報記憶部17及びクライアント20-iが有する定義情報記憶部28は、この定義情報を格納するのに用いられる。
【0029】
更に、サーバ10によるブロードキャスト、或いはマルチキャストで使用される宛先アドレスも、予め、サーバ10と各クライアント20-iとの間で共有されており、当該アドレスを宛先アドレスとして持つデータはクライアント20-iのネットワークインタフェース22により受信されるものとする。
【0030】
[受信バッファのデータ構造]
図4は、受信バッファのデータ構造例を示す。受信バッファはデータ(実体)を格納するためのメモリページ(以下、単にページと称する)とバッファ制御情報とから構成される。このページは仮想アドレス空間内の仮想ページであり、データを格納するのに用いられる場合、このページに物理ページが割り当てられる。
【0031】
バッファ制御情報は、対応する受信バッファを識別するための識別子(以下、配信データ識別子と称する)を含む。この配信データ識別子には、対応する遅延配信データを含む送信用データに固有のシーケンス番号、或いはサーバ10にて遅延配信データから算出されるハッシュ値等を用いることができる。
【0032】
バッファ制御情報はまた、対応する先行送信データ及び遅延配信データを合わせたデータ長を示す全データ長情報を含む。バッファ制御情報は更に、先行送信データの一部または全部を保持するのに用いられる受信バッファ内のページと、遅延配信データの一部または全部を保持するのに用いられる受信バッファ内のページの各々について、そのページを管理するためのページ情報を含む。ページ情報は、オフセット情報とデータ長情報と仮想アドレスとを含む。オフセット情報は、対応するページに格納されるデータ部分の始端の、送信用データにおける位置、つまりオフセット位置を示す。データ長情報は、上記データ部分のデータ長を示す。仮想アドレスは、対応するページの仮想アドレス空間におけるアドレス(ページアドレス)を示す。
【0033】
なお、以降の説明では、説明の簡略化のために、先行送信データ及び遅延配信データを格納するのに用いられるページは1ページのみであるとする。
【0034】
[送信用データ、先行送信データ及び遅延配信データの関係]
図5は送信用データ、先行送信データ及び遅延配信データの関係を、一般的な表現形式と、具体的な表現形式とでそれぞれ示す。
【0035】
図5(a)は一般的な表現形式の例を示しており、送信用データは、N個のネットワークプロトコルヘッダ#1〜#Nと、ペイロードとから構成されている。図5(a)の例では、先行送信データは、先頭のネットワークプロトコルヘッダ#1と、後続のネットワークプロトコルヘッダ#2の一部とから構成されている。しかし、先行送信データが、複数のネットワークプロトコルヘッダと、当該複数のネットワークプロトコルヘッダに後続するネットワークプロトコルヘッダ(つまり複数のネットワークプロトコルよりも上位の階層のネットワークプロトコルのヘッダ)の一部とから構成されていてもよい。また、先行送信データが、全てのネットワークプロトコルヘッダから構成されていても、或いは全てのネットワークプロトコルヘッダと、ペイロードの一部とから構成されていてもよい。
【0036】
ネットワークプロトコルヘッダは、標準化されたネットワークプロトコルのヘッダであり、システムによっては、プロトコル階層の中で複数回現れることもある。標準化されたネットワークプロトコルのヘッダとしては、例えば、イーサネット(登録商標)、PPP(Point to Point Protocol)等のリンク層プロトコルのヘッダ、IP(Internet Protocol)、ARP(Address Resolution Protocol)等のネットワーク層プロトコルのヘッダ、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、SCTP(Stream Control Transmission Protocol)、RTP(Real-time Transport Protocol)、RTCP(RTP Control Protocol)等のトランスポート層以上のプロトコルのヘッダが知られている。
【0037】
ペイロードとは、ある層のプロトコルから見た場合の上位層のデータのことであり、プロトコル層が変わればペイロードが意味する部分も異なる。ペイロードは、ある層のプロトコルから見た場合の上位層のプロトコルのヘッダ、アプリケーションのヘッダ(制御情報)、アプリケーションのデータ等である。
【0038】
図5(b)は具体的な表現形式の例を示しており、送信用データは、3つのネットワークプロトコルヘッダである、イーサネットヘッダ、IPヘッダ及びUDPヘッダと、ペイロードをなすアプリケーション制御情報及びアプリケーションデータとから構成されている。図5(b)の例では、先行送信データは、全てのネットワークプロトコルヘッダと、後続のアプリケーション制御情報の一部とから構成されている。
【0039】
本実施形態において、先行送信データに属する先頭のネットワークプロトコルヘッダは、送信用データの全データ長を示す全データ長情報を含むものとする。なお、送信用データ中の先頭のネットワークプロトコルヘッダの始端側の一部だけを、先行送信データとしても構わない。但し、先行送信データを構成する先頭のネットワークプロトコルヘッダの一部に、先行送信データがサーバからクライアントへ到達するために必要な情報が含まれている必要がある。
【0040】
[動作]
次に、図1に示されるデータ配信ネットワークシステムにおける動作について説明する。
まずクライアント20-iのバッファ管理モジュール21は、定義情報記憶部28に記憶されている定義情報に基づき、受信バッファを用意する。この受信バッファは初期化されたバッファ制御情報を含む。
【0041】
図6は、このときの受信バッファのデータ構造例を示す。図6に示すように、バッファ制御情報(初期バッファ制御情報)は、有効な配信データ識別子及び全データ長情報を含んでいない点に注意されるべきである。また、このバッファ制御情報は、図6の例では、2つのページ情報61及び62を含む。
【0042】
ページ情報61は、有効なオフセット情報、有効なデータ長情報及び有効な仮想アドレスを含む。ページ情報61中のオフセット情報、データ長情報は、それぞれ、オフセット0、先行送信データ長を示す。また、ページ情報61中の仮想アドレスは、先行送信データを格納するための受信バッファ内のページ63を指し示す。本実施形態において、このページ63には、当該ページ63を含む受信バッファが用意される際に、物理ページが割り当てられる。つまり受信バッファが用意される際、ページ(第1のメモリページ)63を指定するページ情報61中の仮想アドレス(第1の仮想アドレス)には、物理ページが割り当てられる。
【0043】
これに対し、ページ情報62は、有効なオフセット情報及び有効な仮想アドレスを含む一方、有効なデータ長情報を含んでいない。ページ情報62中のオフセット情報は先行送信データ長を示す。また、ページ情報62中の仮想アドレスは、遅延配信データを格納するための受信バッファ内のページ64を指し示す。本実施形態において受信バッファが用意される際、このページ情報62中の仮想アドレスによって指定されるページ64には、物理ページが割り当てられていない点に注意すべきである。つまり本実施形態では、受信バッファが用意される際、ページ(第2のメモリページ)64を指定するページ情報62中の仮想アドレス(第2の仮想アドレス)には、物理ページが割り当てられていない。ページ情報62に有効なデータ長情報が設定され、ページ64に物理ページが割り当てられるのは、クライアント20-iがサーバ10から遅延配信データを受信した場合である。
【0044】
さて、クライアント20-iのバッファ管理モジュール21によって図6に示されるような構造の受信バッファが用意されている状態で、サーバ10のデータ配信モジュール11が、不特定多数、或いは、特定多数のクライアント20-iに配信するデータを準備したものとする。これ以降のデータ配信ネットワークシステムにおける動作について、先行送信データ送信処理、先行送信データ受信処理、遅延配信データ送信要求処理、遅延配信データ送信処理及び遅延配信データ受信処理を例に順に説明する。
【0045】
・先行送信データ送信処理
まず、サーバ10における先行送信データ送信処理について、図7のフローチャートを参照して説明する。
サーバ10のデータ配信モジュール11は、準備したデータの送信をネットワークプロトコルモジュール12に依頼する。
【0046】
ネットワークプロトコルモジュール12は、データ配信モジュール11からのデータ送信の依頼を受け取ると、個々のプロトコル依存の処理を行うことにより、例えば図5に示されるような複数のネットワークプロトコルヘッダが付加された送信用データを生成する(ステップ701)。ネットワークプロトコルモジュール12は、生成した送信用データをデータ送信制御モジュール15に渡す。
【0047】
データ送信制御モジュール15は、ネットワークプロトコルモジュール12から送信用データを受け取ると、当該データの一部を先行送信データとして切り出す(ステップ702)。ここではデータ送信制御モジュール15は、送信用データの始端から、定義情報記憶部17に格納されている定義情報で示されるデータ長だけ、先行送信データとして切り出す。データ送信制御モジュール15は、送信用データから切り出した先行送信データのみの送信をデバイスドライバ13に依頼する。
【0048】
次にデータ送信制御モジュール15は、送信用データから切り出されなかった残りのデータ、つまり送信用データのうちの先行送信データの終端以降のデータを、遅延配信データとして遅延配信データ保持部16に保持する(ステップ703)。データ送信制御モジュール15は、この遅延配信データ保持部16における遅延配信データの保持期間を管理する。
【0049】
本実施形態では、遅延配信データ保持部16に保持されてから一定期間が経過した遅延配信データは、データ送信制御モジュール15によって廃棄される。なお、遅延配信データ保持部16に保持されている遅延配信データに対する送信要求を、データ送信制御モジュール15が一定数受信するまで、当該遅延配信データが遅延配信データ保持部16に保持される構成であっても構わない。また、廃棄されるべき遅延配信データがLRU(Least Recently Used)アルゴリズムにより決定される構成であっても構わない。また、遅延配信データ保持部16における遅延配信データの保持期間が、データ送信制御モジュール15とは別の専用の管理モジュール(遅延配信データ保持管理モジュール)によって管理されても構わない。
【0050】
本実施形態において、先行送信データの送信時と、遅延配信データの遅延配信データ保持部16への保持時には、当該データに配信データ識別子が付加される。この配信データ識別子には、前述したように、送信用データを構成する先行送信データ及び遅延配信データに固有のシーケンス番号、或いは遅延配信データのハッシュ値等、先行送信データと遅延配信データとの対応を取るための情報が用いられる。
【0051】
デバイスドライバ13は、データ送信制御モジュール15から依頼された、配信データ識別子が付加された先行送信データを、前述の予め決められたブロードキャストアドレス、或いはマルチキャストアドレスを宛先アドレスとして、ネットワークインタフェース14により送信する(ステップ704)。つまり先行送信データは、第1のデータ送受信手段として機能する、デバイスドライバ13及びネットワークインタフェース14によって、ブロードキャスト、或いはマルチキャストされる。
【0052】
・先行送信データ受信処理
次に、クライアント20-iにおける先行送信データ受信処理について、図8のフローチャートを参照して説明する。
上述のように、予め決められたブロードキャストアドレス、或いは、マルチキャストアドレスを宛先アドレスとして、サーバ10から先行送信データが送信されると、当該宛先アドレスを持つデータを受信するように設定されたクライアント20-iのデバイスドライバ23は、ネットワークインタフェース22により当該先行送信データを受信する(ステップ801)。つまりサーバ10からブロードキャスト、或いはマルチキャストされた先行送信データが、第2のデータ送受信手段として機能する、ネットワークインタフェース22及びデバイスドライバ23によって受信される。
【0053】
デバイスドライバ23は先行送信データを受信すると格納処理手段として機能して、バッファ管理モジュール21によって用意されている受信バッファのバッファ制御情報を参照する(ステップ802)。そしてデバイスドライバ23は、バッファ制御情報中のページ情報61に基づき、受信バッファ内の先行送信データ用のページ63、つまり物理ページが割り当てられているページ63を特定する(ステップ803)。
【0054】
デバイスドライバ23は、特定したページ63に、受信した先行送信データを格納する(ステップ804)。またデバイスドライバ23は、受信した先行送信データに付加されている配信データ識別子を、受信バッファのバッファ制御情報中に追加設定する(ステップ805)。
【0055】
またデバイスドライバ23は、受信した先行送信データに含まれている全データ長情報を受信バッファのバッファ制御情報中に追加設定する(ステップ806)。デバイスドライバ23は更に、この全データ長情報の示す送信用データの全データ長と、先行送信データのデータ長とから、未受信の遅延配信データのデータ長を算出する(ステップ807)。次にデバイスドライバ23は、遅延配信データがあたかも遅延配信データ用のページ64に格納されているかのように、上記算出した遅延配信データのデータ長を示すデータ長情報と、オフセット情報(先行送信データのデータ長と等価)とを、受信バッファのバッファ制御情報のページ情報62中に追加設定する(ステップ808)。このページ情報62は、前述したように遅延配信データ用のページ64を管理するための情報である。デバイスドライバ23はステップ808を実行すると、ステップ804〜806,808の処理が行われた受信バッファ(更に詳細に述べるならば受信バッファのバッファ制御情報)をネットワークプロトコルモジュール24に渡す。
【0056】
ネットワークプロトコルモジュール24は、デバイスドライバ23から受信バッファのバッファ制御情報を受け取ると、次のような処理を実行する。即ちネットワークプロトコルモジュール24は、バッファ制御情報のページ情報61によって示される受信バッファ内のページ63に格納されている受信データ(つまり先行送信データ)に対して個々のプロトコル依存の処理を行い、処理されたデータを、受信バッファのバッファ制御情報と共にデータ処理モジュール26に渡す(ステップ809)。なお、ここでは、ネットワークプロトコルの処理に必要なデータは全て先行送信データに含まれているものとする。もし、そのようなデータが含まれていない場合、そのデータ部分に関するネットワークプロトコルの処理をデータ処理モジュール26が受け持てばよい。つまり、先行送信データの内容(長さ)により、ネットワークプロトコルモジュール24とデータ処理モジュール26の役割分担(境界)は可変となることを意味する。
【0057】
データ処理モジュール26は、ネットワークプロトコルモジュール24からプロトコル処理済みの先行送信データ及びバッファ制御情報を受け取ると、当該データが所望のデータ(更に詳細には所望のデータの一部)であるかを判定する(ステップ810)。もし、所望のデータであるならば、データ処理モジュール26は所望の処理を行うために、バッファ制御情報中のページ情報62に基づいて、受信バッファ内の遅延配信データ用のページ64にアクセスする(ステップ811)。このとき、遅延配信データ用のページ64には物理ページが割り当てられていない。つまりデータ処理モジュール26は、ページ情報62中の物理アドレスが未割り当ての仮想アドレスの指し示すページ64にアクセスする。このため、遅延配信データ用のページ64へのアクセスに応じてページフォルトが発生し、ページフォルトハンドラ25が呼び出される。
【0058】
・遅延配信データ送信要求処理
次に、ページフォルトハンドラ25による遅延配信データ送信要求処理について、図9のフローチャートを参照して説明する。
ページフォルトハンドラ25はページフォルトの発生に応じて呼び出されると、当該ページフォルト発生の原因となった受信バッファ内の遅延配信データ用のページ64に対して物理ページを割り当てる(ステップ901)。つまりページフォルトハンドラ25は、物理ページ未割り当ての遅延配信データ用のページ64を指定する仮想アドレスに、物理ページを割り当てる。このことは、ページフォルトハンドラ25が、受信バッファ内に遅延配信データ用の物理ページを追加したことと等価である。
【0059】
次にページフォルトハンドラ25は、物理ページが割り当てられたページ64を含む遅延配信データの待ち状態にある受信バッファ(更に詳細には受信バッファのバッファ制御情報)を、遅延配信データ待ちバッファテーブル27に追加する(ステップ902)。
【0060】
次にページフォルトハンドラ25は遅延配信データ送信要求手段として機能して、遅延配信データ待ちバッファテーブル27に追加された受信バッファのバッファ制御情報によって示される当該受信バッファ内のページ63に格納されている先行送信データに対応する遅延配信データ、即ち送信用データ中の先行送信データを除く未受信のデータ部分の送信をサーバ10に対して要求する(ステップ903)。本実施形態では、このページフォルトハンドラ25からの遅延配信データの送信要求が、ネットワークプロトコルモジュール24及びデバイスドライバ23を用いて、ネットワークインタフェース22から送出されるものとする。この送信要求には、遅延配信データ待ちバッファテーブル27に追加された受信バッファのバッファ制御情報中の配信データ識別子が付加される。ページフォルトハンドラ25は、サーバ10に対して遅延配信データを要求すると、データ処理モジュール26を停止状態にして(ステップ904)、処理を終了する。
【0061】
・遅延配信データ送信処理
次に、サーバ10における遅延配信データ送信処理について、図10のフローチャートを参照して説明する。
クライアント20-iからサーバ10宛てに遅延配信データの送信要求が送信されると、、サーバ10のデータ送信制御モジュール15は、ネットワークインタフェース14及びデバイスドライバ13を介して、当該遅延配信データの送信要求を受信する(ステップ1001)。するとデータ送信制御モジュール15は、受信した遅延配信データの送信要求に付加されている配信データ識別子に基づき、要求された遅延配信データが遅延配信データ保持部16に存在するかを判定する(ステップ1002)。即ちデータ送信制御モジュール15は、クライアント20-iからの送信要求に付加されているのと同一の配信データ識別子が付加されている遅延配信データが遅延配信データ保持部16に存在するかを判定する。もし、要求された遅延配信データが存在するならば、データ送信制御モジュール15は、当該遅延配信データを、クライアント20-iからの送信要求に対する応答として、配信データ識別子が付加されている状態で、デバイスドライバ13及びネットワークインタフェース14を介して当該クライアント20-i宛てに送信する(ステップ1003)。ここでデータ送信制御モジュール15によってクライアント20-iに送信される遅延配信データの始端側には、当該遅延配信データがクライアント20-iで受信可能なように、当該クライアント20-iを宛先とし、サーバ10を送信元として指定するネットワークプロトコルヘッダが付加される。
【0062】
・遅延配信データ受信処理
次にクライアント20-iにおける遅延配信データ受信処理について、図11のフローチャートを参照して説明する。
クライアント20-iのデバイスドライバ23は、サーバ10からクライアント20-i宛てに遅延配信データが送信されると、当該遅延配信データをネットワークインタフェース22を介して受信する(ステップ1101)。するとデバイスドライバ23は、受信した遅延配信データに付加されているのと同一の配信データ識別子を含むバッファ制御情報が遅延配信データ待ちバッファテーブル27に保持されているかを判定する(ステップ1102)。
【0063】
もし、該当するバッファ制御情報が保持されているならば、デバイスドライバ23は、当該バッファ制御情報中のページ情報62に基づき、対応する受信バッファ内の遅延配信データ用のページ64を特定する(ステップ1103)。そしてデバイスドライバ23は、受信した遅延配信データを、ステップ1103で特定したページ64に格納し(ステップ1104)、停止状態に設定されているデータ処理モジュール26を動作状態にする(ステップ1105)。データ処理モジュール26は動作状態になると、ページフォルトが発生した時点から処理を再開する。
【0064】
デバイスドライバ23は、データ処理モジュール26を動作状態に設定すると、受信した遅延配信データに付加されているのと同一の配信データ識別子を含むバッファ制御情報を遅延配信データ待ちバッファテーブル27から削除する(ステップ1106)。このことは、遅延配信データ待ちバッファテーブル27によって遅延配信データの待ち状態にあるとして管理されていた受信バッファを、当該遅延配信データの待ち状態から解放したことと等価である。
【0065】
このように、本実施形態においてサーバ10は、送信用データの一部のみを先行送信データとして切り出して、当該先行送信データをブロードキャスト、或いはマルチキャストする。先行送信データは、送信用データ中の全ネットワークプロトコルのヘッダ、或いは、一部のネットワークプロトコルのヘッダと後続のネットワークプロトコルのヘッダの一部、或いは全ネットワークプロトコルのヘッダと後続のペイロードの一部、或いは先頭のネットワークプロトコルのヘッダの一部である。
【0066】
サーバ10からの先行送信データを受信したクライアント20-iは、当該受信したデータが所望のデータであるかを判定し、所望のデータである場合にのみ、サーバ10に対して残りのデータ(つまり未受信のデータ)である遅延配信データの送信を要求する。
【0067】
サーバ10は、クライアント20-iからの送信要求を受信することにより、当該クライアント20-iが、送信用データのうち、先行送信データとして切り出されなかった残りのデータを要求していることを検出する。そこでサーバ10は、送信用データのうちの残りのデータを要求しているクライアント20-iに対してのみ、当該残りのデータを遅延配信データとして送信する。
【0068】
これにより本実施形態においては、ブロードキャスト、或いはマルチキャストによるデータ配信に関する問題、及びユニキャストによるデータ配信に関する問題という、相反する2つの問題を解決し、ネットワークリソースの浪費を防止し、かつクライアント管理の低コスト化を図ることができる。
【0069】
[先行送信データ長の決定]
次に、定義情報記憶部28に格納されている定義情報によって定義される先行送信データ長について説明する。
【0070】
前述したように、第1の実施形態では、先行送信データに関する定義情報は、予めサーバ10と各クライアント20-iとの間で共有されている。つまり第1の実施形態では、定義情報によって定義される先行送信データ長は、サーバ10と各クライアント20-iに、静的に設定される。この先行送信データ長を決定し、運用する方法として、例えば次のような「コンフィグレーション」または「アナウンス」による方法が適用可能である。
【0071】
・コンフィグレーション
コンフィグレーションによる方法では、先行送信データ長が、サーバ10のデータ配信モジュール11及びクライアント20-iのデータ処理モジュール26の仕様、つまり、データ配信ネットワークシステム及びアプリケーションの仕様に従って予め決定される。この決定に従い、対応する先行送信データ長を含む定義情報が、サーバ10の定義情報記憶部17及び各クライアント20-iの定義情報記憶部28に、予め静的に設定される。
【0072】
・アナウンス
サーバ10のデータ配信モジュール11が、データ配信のサービス開始時、或いは定期的に、予め定められた手段、例えば、データ配信に使用するものと同じアドレスを使用して、先行送信データ長を含む定義情報をブロードキャスト、或いはマルチキャストする。各クライアント20-iは、サーバ10から定義情報がブロードキャスト、或いはマルチキャストされると、その定義情報を受信して、その受信した定義情報を定義情報記憶部28に格納する。クライアント20-iは、前述したように、定義情報記憶部28に格納されている定義情報に従い、処理を行う。この方法も、先行送信データ長が静的に設定される。
【0073】
・先行データ長の動的設定
しかし、以下に述べるように、サーバ10が動的に先行送信データ長を決定して、運用する方法を適用することも可能である。
【0074】
まず、サーバ10によって提供されるサービスを享受する各クライアント20-iは、先行送信データ長としてK、L、Mのいずれかを使用するものとする。K、L、Mは、0<K<L<Mであるものとする。ここで、先行送信データと遅延配信データとを合わせたデータ、つまり送信用データの全体長がNであるとすると、N、K、L、Mは、0<K<L<M<Nのような関係を有する。
【0075】
サーバ10の例えばデータ送信制御モジュール15は、各クライアント20-iに送信される先行送信データのデータ長である先行送信データ長を、例えばN、M、L、Kと変化させる。なお、M、L、K以外の長さでもよい。
サーバ10が、先行送信データ長を変化させると、各クライアント20-iが先行送信データ長として認識する長さの違いにより、以下のクライアントにてページフォルトが発生する。結果的にサーバ10は、ページフォルトが発生したクライアントから遅延配信データの送信要求を受け取ることになる。
【0076】
・先行送信データ長がNの場合
ページフォルトが発生するクライアントはない。
【0077】
・先行送信データ長がMの場合
先行送信データ長をMと認識しており、かつ、遅延配信データを所望するクライアントと、
先行送信データ長をLと認識しており、かつ、遅延配信データを所望するクライアントと、
先行送信データ長をKと認識しており、かつ、遅延配信データを所望するクライアントと
でページフォルトが発生。
【0078】
・先行送信データ長がLの場合
先行送信データ長をMと認識している全てのクライアントと、
先行送信データ長をLと認識しており、かつ、遅延配信データを所望するクライアントと、
先行送信データ長をKと認識しており、かつ、遅延配信データを所望するクライアントと
でページフォルトが発生。
【0079】
・先行送信データ長がKの場合
先行送信データ長をMと認識している全てのクライアントと、
先行送信データ長をLと認識している全てのクライアントと、
先行送信データ長をKと認識しており、かつ、遅延配信データを所望するクライアントと
でページフォルトが発生。
【0080】
・先行送信データ長“len”が0<len<Kの場合
先行送信データ長をMと認識している全てのクライアントと、
先行送信データ長をLと認識している全てのクライアントと、
先行送信データ長をKと認識している全てのクライアントと
でページフォルトが発生。
【0081】
このように、図1に示されるデータ配信ネットワークシステムにおいて、ページフォルトが発生するクライアント20-iの数、すなわち、サーバ10がクライアントから受け取る遅延配信データの送信要求の数(遅延配信データ送信要求数)は、先行送信データ長としてM、L、Kを使用しているクライアント20-iの割合、及び、更にその中で遅延配信データを所望するクライアント20-iの割合に依存する。
【0082】
そこでサーバ10の例えばデータ送信制御モジュール15は、上述のクライアント20-iの割合を前もって認識できない場合、先行送信データ長を逐次変化させることにより、先行送信データ長毎に、当該サーバ10が実際に受け取ることが期待される遅延配信データ送信要求数を調査することができる。
【0083】
ここで、遅延配信データ送信要求数は、上述の先行送信データ長とページフォルトが発生するクライアントとの関係から、先行送信データ長が短くなるほど多くなる傾向にある。もし、遅延配信データ送信要求数がより多くなるように、先行送信データ長が設定されるならば、ネットワークリソースを効率的に使用することができる。但し、遅延配信データ送信要求数が多くなると、サーバ10が処理しきれなくなるおそれもある。
【0084】
そこでサーバ10は、当該サーバ10自身の処理能力で決まる、予め定められた単位時間内に処理可能な遅延配信データ送信要求数をQとすると、先行送信データ長毎の遅延配信データ送信要求数(つまり遅延配信データの送信を要求するクライアントの数)に基づき、Q以下に収まる最小の先行送信データ長を、新たに適用する送信データ長として選択する。最小の先行送信データ長を選択する理由は、サーバ10が処理可能な範囲で、ネットワークリソースを最も効率的に使用するためである。
【0085】
サーバ10が単位時間内に処理可能な遅延配信データ送信要求数は、当該サーバ10自身の処理能力以外に、以下の情報
・ネットワーク帯域、ネットワーク使用状況(輻輳発生の有無等)
・データ配信の遅延時間
・データ配信の頻度
によっても変わる。
このため、これらの情報とサーバ10自身の処理能力のうちの少なくとも1つに基づいて、上記Qが決定されてもよい。
【0086】
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。
前記第1の実施形態では、クライアント20-iのデバイスドライバ23が、サーバ10からの先行送信データと遅延配信データとを区別して受信し、先行受信データを受信バッファ内の先行送信データ用のページ63に格納する処理(ステップ801〜804)、遅延配信データを受信バッファ内の遅延配信データ用のページ64に格納する処理(ステップ1101〜1104)を実行している。
【0087】
しかし近年は、ネットワークインタフェースがDMA(Direct Memory Access)により、デバイスドライバの介入なしに直接受信データを受信バッファに格納することが一般的である。このためデバイスドライバは、受信バッファにデータが既に格納されていることを前提として以後の処理を行うことが通常である。
【0088】
しかも、通常、ネットワークインタフェースは、第1の実施形態で適用されるような先行送信データや遅延配信データを意識してDMAする仕組みを持たない。このため、第1の実施形態で適用されるような処理手順を実現するには、受信バッファ内のページ(メモリページ)とは別に用意されるメモリ領域にネットワークインタフェースがDMAにてデータを一旦格納した後、改めてデバイスドライバが、ステップ801〜804及びステップ1101〜1104のような処理を行う必要がある。この場合、メモリコピーが2度発生することとなり、性能上、非効率的である。
【0089】
このような問題を回避するために、先行送信データ及び遅延配信データを区別して、受信バッファの適切なページにDMAするような仕組みをネットワークインタフェースに実装することも可能である。しかし、開発コストが高くなる可能性がある。
【0090】
一方、今日では、仮想ネットワークが普及し始めている。このため、通常のネットワークインタフェースに対してはコストその他の要因で導入が困難である様々な仕組みを、仮想ネットワークがソフトウェアエミュレートで実現されるメリットを生かし、仮想ネットワークインタフェースに導入することが可能となってきている。例えば仮想イーサネットは、ソフトウェアによりエミュレートされる仮想的なスイッチングノードである仮想ハブと、同じくソフトウェアによりエミュレートされる仮想ネットワークインタフェース(クライアント上で動作)により構成される。
【0091】
第2の実施形態の特徴は、第1の実施形態においてクライアント20-iのデバイスドライバ23が担っていた役割を仮想ネットワークの仮想ネットワークインタフェースに持たせることにある。第2の実施形態によれば、仮想ネットワークインタフェースの上位層に特別な仕組みを導入する必要がなくなるという格別な効果を奏することができる。
【0092】
(仮想ネットワークインタフェースの実装例)
仮想ネットワークインタフェースの実装方法は、例えば前記特許文献2の段落0110〜0128、図13及び図14に記載されている。
図12及び図13は、第2の実施形態で適用される一般的なOS(オペレーティングシステム)による仮想ネットワークインタフェースの実装例を示す。図12及び図13は、それぞれ特許文献2の図13及び図14に相当する。
【0093】
図12に示す仮想ネットワークインタフェースの実装例は、一般的なIPトンネリングの仕組みを利用したものである。図12において、仮想ネットワークインタフェース1208はOSのカーネル1202の内部に実装される。ユーザプロセス1201内には、制御アプリケーションプログラム(以下、制御アプリケーションと称する)1203、及びその他のアプリケーションプログラム(以下、アプリケーションと称する)1204が存在する。仮想ネットワークインタフェース1208は、上位層であるイーサネット層1207からは単なるネットワークインタフェースとして見えるが、一方、下位層であるIP(アウターIP)層1209からは、TCP/UDP層1205と同様のトランスポート層として見える。仮想ネットワークインタフェース1208よりも下位のIP(アウターIP)層1209、イーサネット層1210及びネットワークインタフェース1211は、アンダーレイネットワーク1212を構成する。
【0094】
図13に示す仮想ネットワークインタフェースの実装例は、トンネルインタフェースの仕組みを利用したものである。図13(a)及び図13(b)において、仮想ネットワークインタフェース1303はユーザプロセス1301の一部として実装される。仮想ネットワークインタフェース1303とOSのカーネル1302内の通信プロトコルとのデータのやりとりは、トンネルインタフェース1311を介して行われる。
【0095】
図13(a)は、トンネルインタフェース1311がIPデータグラムを処理する(ユーザランドのプログラムとIPデータグラムをやりとりする)タイプである。一方、図13(b)は、トンネルインタフェース1311がイーサネットフレームを処理する(ユーザランドのプログラムとイーサネットフレームをやりとりする)タイプである。
【0096】
図13(a),(b)に示されるように、ユーザプロセス1301には、仮想ネットワークインタフェース1303の他に、制御アプリケーション1304、HTTP(Hyper Text Transfer Protocol)1306及びアプリケーション1307が実装される。一方、カーネル1302には、TCP/UDP層1309、IP層1310、トンネルインタフェース1311、イーサネット層1312、及びネットワークインタフェース1313が実装される。仮想ネットワークインタフェース1303よりも下位のHTTP1306、TCP/UDP層1309、IP層1310、イーサネット層1312、及びネットワークインタフェース1313は、アンダーレイネットワーク1308を構成する。
【0097】
いずれの実装方法でも、仮想ネットワークインタフェース(仮想ネットワークインタフェース1208または1303)は、受信データを何らかの形で(通常は第1の実施形態と同様に受信バッファを介して)上位層、例えば、イーサネット層、或いはIP層に渡す。このときに、仮想ネットワークインタフェースは、第1の実施形態においてクライアント20-iのデバイスドライバ23が実施している処理を行う。
【0098】
図14は、第2の実施形態で適用されるクライアント200-iの構成を示すブロック図である。なお、図14において、図2に示すクライアント20-iと等価な部分には便宜的に同一参照符号を付してある。第2の実施形態では、第1の実施形態におけるクライアント20-iに代えてクライアント200-iが用いられる。必要ならば、図1において、クライアント20-1〜20-nを、クライアント200-1〜200-nに置き換えられたい。
【0099】
図14に示すクライアント200-iでは、第1の実施形態におけるデバイスドライバ23に代えて、図12の仮想ネットワークインタフェース1208、または図13の仮想ネットワークインタフェース1303に相当する仮想ネットワークインタフェース230が用いられる。またクライアント200-iでは、第1の実施形態におけるネットワークインタフェース22に代えて、図12のアンダーレイネットワーク1212、または図13のアンダーレイネットワーク1308に相当するアンダーレイネットワーク220が用いられる。
【0100】
図14のクライアント200-iでは、当該クライアント200-iに適用される仮想ネットワークインタフェース230の実装方法により、ネットワークプロトコルモジュール24に含まれる機能が異なる(例えば、イーサネット層の有無等)。なお、アンダーレイネットワーク220とは、仮想ネットワークインタフェース230が使用するネットワークプロトコル群、物理的なネットワークインタフェースとそのデバイスドライバ全てを総称したものである。
【0101】
クライアント200-iの処理手順は第1の実施形態におけるクライアント20-iと同様である。必要ならば、第1の実施形態で適用される図8、図9及び図11のフローチャートに従う処理手順についての説明において、クライアント20-iをクライアント200-iに、デバイスドライバ23を仮想ネットワークインタフェース230に、そしてネットワークインタフェース22をアンダーレイネットワーク220に、それぞれ読み替えられたい。
【0102】
上述の説明では、クライアント側に仮想ネットワークの仮想ネットワークインタフェースの仕組みを適用したが、更に、サーバ側にも仮想ネットワークの仮想ネットワークインタフェースの仕組みを適用することも可能である。
【0103】
図15は、第2の実施形態で適用されるサーバ100の構成を示すブロック図である。なお、図15において、図3に示すサーバ10と等価な部分には便宜的に同一参照符号を付してある。第2の実施形態では、第1の実施形態におけるサーバ10に代えてサーバ100が用いられる。必要ならば、図1において、サーバ10を、サーバ100に置き換えられたい。
【0104】
図15に示すサーバ100では、第1の実施形態におけるデバイスドライバ13に代えて、図12の仮想ネットワークインタフェース1208、または図13の仮想ネットワークインタフェース1303に相当する仮想ネットワークインタフェース130が用いられる。またサーバ100では、第1の実施形態におけるネットワークインタフェース14に代えて、図12のアンダーレイネットワーク1212、または図13のアンダーレイネットワーク1308に相当するアンダーレイネットワーク140が用いられる。またサーバ100では、仮想ネットワークインタフェース130に、データ送信制御モジュール15が配置される。これにより第2の実施形態においては、仮想ネットワークインタフェース130を適用することによる上述の効果に加えて、仮想ネットワークインタフェース130の上位層に特別な仕組みを導入する必要がなくなるという効果をも奏することができる。
【0105】
サーバ100の処理手順は第1の実施形態におけるサーバ10と同様である。必要ならば、第1の実施形態で適用される図7及び図10のフローチャートに従う処理手順についての説明において、サーバ10をサーバ100に、デバイスドライバ13を仮想ネットワークインタフェース130に、そしてネットワークインタフェース14をアンダーレイネットワーク140に、それぞれ読み替えられたい。
第1の実施形態において適用される先行送信データ長の決定手法は、第2の実施形態においても適用可能である。
【0106】
なお、本発明は、上記実施形態(第1または第2の実施形態)そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【0107】
10,100…サーバ(サーバコンピュータ)、11…データ配信モジュール、12…ネットワークプロトコルモジュール、13…デバイスドライバ(第1の送受信手段)、14…ネットワークインタフェース(第1の送受信手段)、15…データ送信制御モジュール、16…遅延配信データ保持部、17…定義情報記憶部(第1の定義情報記憶手段)、20-1〜20-n,20-i,200-i…クライアント(クライアント端末)、21…バッファ管理モジュール、22…ネットワークインタフェース(第2の送受信手段)、23…デバイスドライバ(第2の送受信手段、格納処理手段)、24…ネットワークプロトコルモジュール、25…ページフォルトハンドラ(遅延配信データ送信要求手段)、26…データ処理モジュール、27…遅延配信データ待ちバッファテーブル(バッファ制御情報保持手段)、28…定義情報記憶部(第2の定義情報記憶手段)、61,62…ページ情報、63…ページ(第1のメモリページ),64…ページ(第2のメモリページ)、130…仮想ネットワークインタフェース、230…仮想ネットワークインタフェース(格納処理手段)、140…アンダーレイネットワーク(第1の送受信手段)、220…アンダーレイネットワーク(第2の送受信手段)。

【特許請求の範囲】
【請求項1】
サーバコンピュータと複数のクライアント端末とがネットワークによって接続されたデータ配信ネットワークシステムであって、
前記サーバコンピュータは、
前記ネットワークを介してデータを送受信する第1の送受信手段と、
前記ネットワークを介して送信されるべき送信用データの一部を先行送信データとして切り出して、当該先行送信データを前記第1の送受信手段によりブロードキャスト、或いはマルチキャストするデータ送受信制御手段と、
前記送信用データの前記先行送信データを除く部分を遅延配信データとして保持する遅延配信データ保持手段とを含み、
前記複数のクライアント端末の各々は、
前記ネットワークを介してデータを送受信する第2の送受信手段と、
前記サーバコンピュータからブロードキャスト、或いはマルチキャストされた前記先行送信データが前記第2の送受信手段によって受信され、かつ当該先行送信データに対応する前記遅延配信データを必要とする場合、前記第2の送受信手段により前記サーバコンピュータに対して前記遅延配信データの送信を要求する遅延配信データ送信要求手段とを含み、
前記サーバコンピュータの前記データ送受信制御手段は、前記複数のクライアント端末のいずれかのクライアント端末から、前記遅延配信データの送信が要求された場合に、前記遅延配信データ保持手段に保持されている前記遅延配信データを前記第1の送受信手段により当該遅延配信データの送信を要求したクライアント端末宛てに送信する
ことを特徴とするデータ配信ネットワークシステム。
【請求項2】
前記複数のクライアント端末の各々は、
初期状態において物理ページ割り当て済みの第1の仮想アドレスで指定される第1のメモリページ、及び初期状態において物理ページ未割り当ての第2の仮想アドレスで指定される第2のメモリページを含む受信バッファと、
前記第2の送受信手段によって受信された前記先行送信データを前記第1のメモリページに格納する格納処理手段と、
前記第1のメモリページに格納された前記先行送信データに対応する前記遅延配信データを必要とする場合、前記第2のメモリページにアクセスするデータ処理手段と、
前記データ処理手段による前記第2のメモリページへのアクセスに応じてページフォルトが発生した場合、前記第2の仮想アドレスに対して物理ページを割り当てるページフォルトハンドラであって、前記遅延配信データ送信要求手段を含むページフォルトハンドラとを更に含み、
前記格納処理手段は、前記第2の送受信手段によって受信された前記遅延配信データを、前記物理ページが割り当てられた前記第2の仮想アドレスで指定される前記第2のメモリページに格納する
ことを特徴とする請求項1記載のデータ配信ネットワークシステム。
【請求項3】
前記送信用データは、複数のネットワークプロトコルヘッダとペイロードとから構成され、
前記先行送信データは、前記送信用データ中の前記複数のネットワークプロトコルヘッダの少なくとも先頭のネットワークプロトコルヘッダの始端側の一部を含み、
前記遅延配信データは、前記送信用データ中の少なくとも前記ペイロードの終端側の一部を含む
ことを特徴とする請求項1または2に記載のデータ配信ネットワークシステム。
【請求項4】
前記サーバコンピュータは、前記先行送信データの長さを含む当該先行送信データに関する定義情報を記憶するための第1の定義情報記憶手段を更に含み、
前記複数のクライアント端末の各々は、
前記定義情報を記憶するための第2の定義情報記憶手段と、
前記遅延配信データの待ち状態にある前記受信バッファのバッファ制御情報であって、前記第1の仮想アドレス及び前記第2の仮想アドレスを含むバッファ制御情報を保持するためのバッファ制御情報保持手段と、
前記第2の定義情報記憶手段に記憶されている前記定義情報に基づいて前記受信バッファを確保するバッファ管理手段とを更に含み、
前記サーバコンピュータの前記データ送受信制御手段は、前記第1の定義情報記憶手段に記憶されている前記定義情報に基づいて、前記送信用データから前記先行送信データを切り出し、
前記複数のクライアント端末の各々の前記遅延配信データ送信要求手段は、前記第2の仮想アドレスに対して前記物理ページが割り当てられた際に、当該第2の仮想アドレスで指定される第2のメモリページを含む受信バッファの前記バッファ制御情報を前記バッファ制御情報保持手段に追加する ことを特徴とする請求項1乃至3のいずれかに記載のデータ配信ネットワークシステム。
【請求項5】
前記サーバコンピュータの前記データ送受信制御手段は、前記先行送信データを、当該先行送信データの長さを逐次変化させながら、前記複数のクライアント端末に送信することにより、当該先行送信データの長さ毎に、前記遅延配信データの送信を要求するクライアント端末の数を計測し、計測された数が、予め定められた単位時間内に前記サーバコンピュータで処理可能な遅延配信データの送信要求の数以下となる最小の長さを、新たに適用する前記送信データの長さとして決定することを特徴とする請求項1乃至4のいずれかに記載のデータ配信ネットワークシステム。
【請求項6】
前記複数のクライアント端末の各々に含まれる前記格納処理手段が、ネットワークインタフェースのデバイスドライバまたは仮想ネットワークの仮想ネットワークインタフェースから構成されることを特徴とする請求項2記載のデータ配信ネットワークシステム。
【請求項7】
第1の送受信手段、データ送受信制御手段及び遅延配信データ保持手段を含むサーバコンピュータと、第2の送受信手段及び遅延配信データ送信要求手段をそれぞれ含む複数のクライアント端末とがネットワークによって接続されたデータ配信ネットワークシステムにおいて、前記サーバコンピュータからデータを配信するためのデータ配信方法であって、
前記サーバコンピュータの前記データ送受信制御手段が、前記ネットワークを介して送信されるべき送信用データの一部を先行送信データとして切り出すステップと、
前記サーバコンピュータの前記データ送受信制御手段が、前記送信用データの前記先行送信データを除く部分を遅延配信データとして前記遅延配信データ保持手段に保持するステップと、
前記サーバコンピュータの前記データ送受信制御手段が、前記先行送信データを前記第1の送受信手段によりブロードキャスト、或いはマルチキャストするステップと、
前記ブロードキャスト、或いはマルチキャストされた前記先行送信データが、前記複数のクライアント端末のいずれかのクライアント端末の前記第2の送受信手段で受信され、かつ当該クライアント端末が当該先行送信データに対応する前記遅延配信データを必要とする場合、当該クライアント端末の前記遅延配信データ送信要求手段が、前記第2の送受信手段により前記サーバコンピュータに対して前記遅延配信データの送信を要求するステップと、
前記複数のクライアント端末のいずれかのクライアント端末から前記サーバコンピュータに対して前記遅延配信データの送信が要求された場合に、当該サーバコンピュータの前記データ送受信制御手段が、前記遅延配信データ保持手段に保持されている前記遅延配信データを前記第1の送受信手段により当該遅延配信データの送信を要求したクライアント端末宛てに送信するステップと
を具備することを特徴とするデータ配信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2011−61716(P2011−61716A)
【公開日】平成23年3月24日(2011.3.24)
【国際特許分類】
【出願番号】特願2009−212166(P2009−212166)
【出願日】平成21年9月14日(2009.9.14)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】