【手続補正書】
【提出日】令和2年4月16日(2020.4.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ配信方法であって、当該方法は、配信サーバに適用され、当該方法は、
アップストリームノードが送信する第1のアップストリームデータパケット及び第2のアップストリームデータパケットを連続的に受信するステップと、
前記第1のアップストリームデータパケットをコピーし、確立されている接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、ダウンストリームノード又はユーザ端末に、変換によって得られる第1のダウンストリームデータパケットを送信し、そして、前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、
前記第2のアップストリームデータパケットをコピーし、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第2のダウンストリームデータパケットを送信し、そして、前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、を含み、
前記接続マッピングテーブルは、アップストリーム接続情報とダウンストリーム接続情報との間のマッピング関係を提供する、
方法。
【請求項２】
前記第1のアップストリームデータパケットのシーケンス番号及び前記第2のアップストリームデータパケットのシーケンス番号は、非連続的であり、前記第1のアップストリームデータパケットは、前記第2のアップストリームデータパケットの前に受信される、請求項1に記載の方法。
【請求項３】
前記接続マッピングテーブルは、複数のマッピングエントリを含み、各々のマッピングエントリは、アップストリーム接続のNタプル情報、前記アップストリーム接続の前記Nタプル情報と一致するダウンストリーム接続のNタプル情報、及び、前記アップストリーム接続の初期シーケンス番号と前記ダウンストリーム接続の初期シーケンス番号との間の差を提供し、
コピーによって得られる2つのパケットのうちの第1のパケットを変換する前記ステップは、
前記第1のパケットの中のNタプル情報を取得するステップと、
前記第1のパケットの中の前記Nタプル情報に基づいて、前記接続マッピングテーブルを照会して、前記第1のパケットの中の前記Nタプル情報と一致するターゲットマッピングエントリを取得するステップと、
前記第1のパケットの中の前記Nタプル情報を、前記ターゲットマッピングエントリに含まれるターゲットダウンストリーム接続のNタプル情報と置き換え、そして、前記ターゲットマッピングエントリに含まれるターゲット初期シーケンス番号と前記第1のパケットの中で搬送されるシーケンス番号との間の差に基づいて、前記ターゲットダウンストリーム接続のシーケンス番号を算出するステップと、を含む、請求項1に記載の方法。
【請求項４】
前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する前記ステップは、
前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対する肯定応答ACKパケットを送信するステップを含む、請求項1又は2に記載の方法。
【請求項５】
当該方法は、
前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第3のダウンストリームデータパケットに変換するステップと、
バッファの中に前記第3のダウンストリームデータパケットを格納し、そして、タイムアウトタイマを設定するステップと、
前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第3のダウンストリームデータパケットを送信するステップと、をさらに含む、請求項4に記載の方法。
【請求項６】
アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、当該方法は、
前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第3のダウンストリームデータパケットを削除するステップをさらに含む、請求項5に記載の方法。
【請求項７】
当該方法は、
前記アップストリームノードが再送信する第3のアップストリームデータパケットを受信するステップであって、前記第3のアップストリームデータパケットのシーケンス番号及び前記第1のアップストリームデータパケットの前記シーケンス番号は、連続的である、ステップと、
前記第3のアップストリームデータパケットをコピーし、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信し、そして、前記第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、をさらに含む、請求項1又は2に記載の方法。
【請求項８】
前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する前記ステップは、
前記第2のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対するACKパケットを送信するステップを含む、請求項2に記載の方法。
【請求項９】
配信サーバであって、当該サーバは、
アップストリームノードが送信する第1のアップストリームデータパケット及び第2のアップストリームデータパケットを連続的に受信し、前記第1のアップストリームデータパケットをコピーし、そして、前記第2のアップストリームデータパケットをコピーする、ように構成される第1の受信モジュールと、
確立されている接続マッピングテーブルに基づいて、前記第1のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、ダウンストリームノード又はユーザ端末に、変換によって得られる第1のダウンストリームデータパケットを送信する、ように構成されるデータ転送モジュールと、
前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するように構成される制御管理モジュールと、を含み、
前記データ転送モジュールは、さらに、前記接続マッピングテーブルに基づいて、前記第2のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第2のダウンストリームデータパケットを送信する、ように構成され、
前記制御管理モジュールは、さらに、前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するように構成され、
前記接続マッピングテーブルは、アップストリーム接続情報とダウンストリーム接続情報との間のマッピング関係を提供する、
サーバ。
【請求項１０】
前記第1のアップストリームデータパケットのシーケンス番号及び前記第2のアップストリームデータパケットのシーケンス番号は、非連続的であり、前記第1のアップストリームデータパケットは、前記第2のアップストリームデータパケットの前に受信される、請求項9に記載のサーバ。
【請求項１１】
前記接続マッピングテーブルは、複数のマッピングエントリを含み、各々のマッピングエントリは、アップストリーム接続のNタプル情報、前記アップストリーム接続の前記Nタプル情報と一致するダウンストリーム接続のNタプル情報、及び、前記アップストリーム接続の初期シーケンス番号と前記ダウンストリーム接続の初期シーケンス番号との間の差を提供し、
前記データ転送モジュールは、さらに、前記第1のパケットの中のNタプル情報を取得し、前記第1のパケットの中の前記Nタプル情報に基づいて、前記接続マッピングテーブルを照会して、前記第1のパケットの中の前記Nタプル情報と一致するターゲットマッピングエントリを取得し、前記第1のパケットの中の前記Nタプル情報を、前記ターゲットマッピングエントリに含まれるターゲットダウンストリーム接続のNタプル情報と置き換え、そして、前記ターゲットマッピングエントリに含まれるターゲット初期シーケンス番号と前記第1のパケットの中で搬送されるシーケンス番号との間の差に基づいて、前記ターゲットダウンストリーム接続のシーケンス番号を算出する、ように構成される、請求項9に記載のサーバ。
【請求項１２】
前記制御管理モジュールは、さらに、前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対する肯定応答ACKパケットを送信する、ように構成される、請求項9又は10に記載のサーバ。
【請求項１３】
前記制御管理モジュールは、さらに、前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第3のダウンストリームデータパケットに変換し、バッファの中に前記第3のダウンストリームデータパケットを格納し、タイムアウトタイマを設定し、そして、前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第3のダウンストリームデータパケットを送信する、ように構成される、請求項12に記載のサーバ。
【請求項１４】
アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、
前記制御管理モジュールは、さらに、前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第3のダウンストリームデータパケットを削除するように構成される、請求項13に記載のサーバ。
【請求項１５】
前記第1の受信モジュールは、さらに、前記アップストリームノードが再送信する第3のアップストリームデータパケットを受信し、そして、前記第3のアップストリームデータパケットをコピーする、ように構成され、前記第3のアップストリームデータパケットのシーケンス番号及び前記第1のアップストリームデータパケットの前記シーケンス番号は、連続的であり、
前記データ転送モジュールは、さらに、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信し、そして、前記第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する、ように構成される、請求項9又は10に記載のサーバ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【発明の名称】データ配信方法及び配信サーバ
【技術分野】
【０００１】
[関連出願への相互参照]
この出願は、2017年11月24日付で中国専利局に出願された"データ配信方法及び配信サーバ"と題する中国特許出願番号第201711189288.1号に基づく優先権を主張し、その内容は、その全体が参照により本明細書に組み込まれる。
【０００２】
[技術分野]
この開示は、ネットワーク技術の分野に関し、特に、データ配信方法及び配信サーバに関する。
【背景技術】
【０００３】
配信サーバは、通常、コンテンツ配信ネットワーク(Content  Delivery  Network,  CDN)の中で使用される。コンテンツ配信ネットワークは、従来の通信ネットワークに基づいて、(例えば、図1の中のCDN中間ノード及びCDNエッジノード等の)複数のレベルのCDNノードを使用することによって構築されるオーバレイネットワークである。コンテンツ配信ネットワークの規模に基づいて、各々のレベルのCDNノードは、1つ又は複数の配信サーバを含み、各々の配信サーバは、ハイパーテキスト転送プロトコル(HyperText  Transfer  Protocol,  HTTP)又はリアルタイムメディアプロトコル(Real  Time  Media  Protocol,  RTMP)に基づいて、ユーザ端末のためのビデオ、写真、又はファイル等のデータの配信サーバを提供することが可能である。コンテンツ配信ネットワークにおいては、配信サーバは、ユーザ端末が要求するデータをその配信サーバが格納しているか否かに基づいて、2つの配信サービス、すなわち、ヒットサービス及び転送サービスを提供することが可能である。ヒットサービスは、ユーザ端末が要求するデータを配信サーバが格納しているときに生起し、転送サービスは、ユーザ端末が要求するデータを配信サーバが格納しておらず、さらに、他の配信サーバ又はソース局にコンテンツ要求を転送する必要があるときに生起する。
【０００４】
図2は、転送サービスを提供する配信サーバの内部的なアーキテクチャの概略的な図である。配信サーバは、主として、プロトコルスタック及びアプリケーション層の2つの部分を含む。図2に示されているように、プロトコルスタックは、インターネットプロトコル(Transmission  Control  Protocol/Internet  Protocol,  TCP/IP)に関連するプロトコル処理に関与し、サーバ(server)/クライアント(client)の2つのモジュールを含む。サーバは、ダウンストリーム接続の確立、データパケットの配信、(例えば、レート制御等の)信頼性制御管理、及びアプリケーション層のサーバへのデータパケットの転送を含む(以下、略して、ダウンストリーム接続と称される)ユーザ端末へのTCP接続の処理に関与する。クライアントは、アップストリーム接続の確立、データパケットの受信、(例えば、データパケットの順序が正しくないか否か等の)信頼性制御管理、及びアプリケーション層のクライアントへのデータパケットの転送を含む(以下、略して、アップストリーム接続と称される)アップストリームノードへのTCP接続の処理に関与する。
【０００５】
加えて、アプリケーション層は、また、サーバ/クライアントの2つのモジュールを含む。アプリケーション層のサーバは、ユーザ端末のコンテンツ要求の受信、アップストリームノードからのデータの要求(get)のためのアプリケーション層のクライアントのトリガ、アップストリームノードが送信するとともにアプリケーション層のクライアントが転送するデータパケットの受信、及び、ダウンストリームノード又はユーザ端末への受信したデータパケットの送信のためのプロトコルスタックのサーバへのデータパケットの転送に関与する。アプリケーション層のクライアントは、アプリケーション層のサーバによってトリガされて、アップストリームノードへのコンテンツ要求を開始し、そのコンテンツ要求は、アップストリームノードへの接続を確立するように、プロトコルスタックのクライアントをトリガする。その次に、アプリケーション層のクライアントは、プロトコルスタックのクライアントがアップストリームノードから取得するデータパケットを受信し、そして、アプリケーション層のサーバにそのデータパケットを転送する。
【０００６】
簡単に述べると、通常のデータパケット処理手順においては、データパケットは、(例えば、データパケットの順序が正しくないか否かの検出等の)プロトコルスタックの制御管理を受ける必要があり、アプリケーション層に送信され、そして、その後、アプリケーション層によってプロトコルスタックに転送され、(例えば、レート制御等の)プロトコルスタックの制御管理を受け、そして、最後に、プロトコルスタックによってユーザ端末に送信されて、データ配信を実装する。
【０００７】
本発明の発明者は、この開示を実装する過程において、関連する技術が、少なくとも、以下の問題を有しているということを見出している。すなわち、データパケット配信プロセスにおいて、データ配信プロセス及び制御管理プロセスは、大幅に混ざり合う、言い換えると、データパケットに対して制御管理を実行した後にのみ、そのデータパケットを配信することが可能である。結果として、その制御管理プロセスは、データパケットの配信を遅延させ、比較的大きな遅延を引き起こす。
【発明の概要】
【０００８】
この開示の複数の実施形態は、データ配信方法及び配信サーバを提供して、データ配信遅延が比較的大きいという関連技術の問題を解決する。それらの複数の技術的解決方法は、以下のようになる。
【０００９】
第1の態様によれば、データ配信方法が提供され、当該方法は、配信サーバに適用され、当該方法は、
アップストリームノードが送信する第1のアップストリームデータパケット及び第2のアップストリームデータパケットを連続的に受信するステップと、
前記第1のアップストリームデータパケットをコピーし、確立されている接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、ダウンストリームノード又はユーザ端末に、変換によって得られる第1のダウンストリームデータパケットを送信し、そして、前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、
前記第2のアップストリームデータパケットをコピーし、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第2のダウンストリームデータパケットを送信し、そして、前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、を含む。
【００１０】
前記接続マッピングテーブルは、アップストリーム接続情報とダウンストリーム接続情報との間のマッピング関係を提供する。具体的には、前記接続マッピングテーブルは、複数のマッピングエントリを含み、各々のマッピングエントリは、アップストリーム接続のNタプル情報、前記アップストリーム接続の前記Nタプル情報と一致するダウンストリーム接続のNタプル情報、及び、前記アップストリーム接続の初期シーケンス番号と前記ダウンストリーム接続の初期シーケンス番号との間の差を提供する。
【００１１】
加えて、配信サーバは、少なくとも、アプリケーション層、プロトコルスタック、及びデータ転送層を含む。データ転送及び制御管理を分離するために、データ転送層は、上記のデータ配信手順に関与し、プロトコルスタックは、上記の制御管理手順に関与する。具体的には、プロトコルスタックは、第1の有効化インターフェイスを含み、アプリケーション層は、アップストリームノードにユーザ端末のコンテンツ要求を送信する前に、プロトコルスタックの第1の有効化インターフェイスを起動する。第1の有効化インターフェイスは、アップストリーム/ダウンストリーム接続識別子と、データ転送機能及び制御管理機能を分離するように指示する有効化フラグと、を搬送する。アプリケーション層によって起動された後に、プロトコルスタックは、アップストリーム/ダウンストリーム接続のデータ転送機能及び制御管理機能を分離する。
【００１２】
加えて、データ転送層は、第2の有効化インターフェイスを含み、アプリケーション層によって起動された後に、プロトコルスタックは、データ転送層の第2の有効化インターフェイスを起動する。第2の有効化インターフェイスは、アップストリーム接続情報及びダウンストリーム接続情報を搬送し、プロトコルスタックによって起動された後に、データ転送層は、接続マッピングテーブルを確立する。
【００１３】
第1の態様の第1の可能な実装において、前記第1のアップストリームデータパケットのシーケンス番号及び前記第2のアップストリームデータパケットのシーケンス番号は、非連続的であり、前記第1のアップストリームデータパケットは、前記第2のアップストリームデータパケットの前に受信される。
【００１４】
言い換えると、アップストリームパケットの損失が発生し、その結果、データパケットは失われ、配信サーバは、そのデータパケットを受信しない。
【００１５】
第1の態様に関して、第1の態様の第2の可能な実装において、コピーによって得られる2つのパケットのうちの第1のパケットを変換する前記ステップは、前記第1のパケットの中のNタプル情報を取得するステップと、前記第1のパケットの中の前記Nタプル情報に基づいて、前記接続マッピングテーブルを照会して、前記第1のパケットの中の前記Nタプル情報と一致するターゲットマッピングエントリを取得するステップと、前記第1のパケットの中の前記Nタプル情報を、前記ターゲットマッピングエントリに含まれるターゲットダウンストリーム接続のNタプル情報と置き換え、そして、前記ターゲットマッピングエントリに含まれるターゲット初期シーケンス番号と前記第1のパケットの中で搬送されるシーケンス番号との間の差に基づいて、前記ターゲットダウンストリーム接続のシーケンス番号を算出するステップと、を含む。
【００１６】
第1の態様又は第1の態様の第1の可能な実装に関して、第1の態様の第3の可能な実装において、前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する前記ステップは、前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対するACK(Acknowledgement,  肯定応答)パケットを送信するステップを含む。
【００１７】
第1の態様の第3の可能な実装に関して、第1の態様の第4の可能な実装において、当該方法は、前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第3のダウンストリームデータパケットに変換するステップと、バッファの中に前記第3のダウンストリームデータパケットを格納し、そして、タイムアウトタイマを設定するステップと、前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第3のダウンストリームデータパケットを送信するステップと、をさらに含む。
【００１８】
第1の態様の第4の可能な実装に関して、第1の態様の第5の可能な実装において、アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、当該方法は、前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第3のダウンストリームデータパケットを削除するステップをさらに含む。
【００１９】
アップストリームノードが失われたデータパケットを再送信するときに、配信サーバは、さらに、再送信されたデータパケットを転送するステップ、及び、再送信されたデータパケットに対して制御管理を実行するステップを実行する。
【００２０】
第1の態様又は第1の態様の第1の可能な実装に関して、第1の態様の第6の可能な実装において、当該方法は、
前記アップストリームノードが再送信する第3のアップストリームデータパケットを受信するステップであって、前記第3のアップストリームデータパケットのシーケンス番号及び前記第1のアップストリームデータパケットの前記シーケンス番号は、連続的である、ステップと、前記第3のアップストリームデータパケットをコピーし、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信し、そして、前記第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、をさらに含む。
【００２１】
第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するプロセスは、第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するプロセスと同様である。具体的にいうと、第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して、不適切順序検査を実行し、アップストリームノードにACKパケットを送信し、第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットを、ダウンストリームデータパケットに変換し、バッファの中に、得られたダウンストリームデータパケットを格納し、タイムアウトタイマを設定し、タイムアウトタイマが終了するときに、ダウンストリームノード又はユーザ端末に、格納されているダウンストリームデータパケットを送信し、そして、タイムアウトタイマが終了する前に、ダウンストリームノード又はユーザ端末が返送するACKパケットを受信するときに、バッファの中に格納されているダウンストリームデータパケットを削除する。
【００２２】
第1の態様又は第1の態様の第1の可能な実装に関して、第1の態様の第7の可能な実装において、前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する前記ステップは、
前記第2のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対するACKパケットを送信するステップを含む。
【００２３】
第1の態様の第7の可能な実装に関して、第1の態様の第8の可能な実装において、当該方法は、第4のダウンストリームデータパケットが前記ダウンストリームノード又は前記ユーザ端末に送信された後に、前記第2のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第5のダウンストリームデータパケットに変換するステップと、バッファの中に前記第5のダウンストリームデータパケットを格納し、そして、タイムアウトタイマを設定するステップと、前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第5のダウンストリームデータパケットを送信するステップと、をさらに含む。
【００２４】
第1の態様の第8の可能な実装に関して、第1の態様の第9の可能な実装において、アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、当該方法は、
前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第5のダウンストリームデータパケットを削除するステップをさらに含む。
【００２５】
ダウンストリームパケット損失がアップストリームパケット損失によって引き起こされる場合には、配信サーバは、さらに、以下の処理を実行する。
【００２６】
第1の態様の第6の可能な実装に関して、第1の態様の第10の可能な実装において、当該方法は、前記アップストリームノードが再送信する前記第3のアップストリームデータパケットを受信する前に、前記ダウンストリームノード又は前記ユーザ端末が送信するACKをM回繰り返して受信する場合に、前記アップストリームノードが前記第3のアップストリームデータパケットを再送信するのを待つステップであって、M回繰り返される前記ACKは、前記第1のアップストリームデータパケットに対するACKである、ステップと、前記再送される第3のアップストリームデータパケットを受信した後に、前記第3のアップストリームデータパケットをコピーし、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、そして、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信するステップを実行するステップと、をさらに含む。
【００２７】
第1の態様の第6の実装に関して、第1の態様の第11の可能な実装において、当該方法は、
前記アップストリームノードが再送信する前記第3のアップストリームデータパケットを受信した後に、前記ダウンストリームノード又は前記ユーザ端末が送信するACKをM回繰り返して受信する場合に、前記ダウンストリームノード又は前記ユーザ端末に、バッファの中に格納されているとともに、前記第3のアップストリームデータパケットと一致する第6のダウンストリームデータパケットを送信するステップをさらに含む。
【００２８】
第2の態様によれば、配信サーバが提供され、当該サーバは、第1の態様にしたがったデータ配信方法を実行するように構成される。
【００２９】
この開示の複数の実施形態によって提供される複数の技術的解決方法によってもたらされる有益な効果は、以下の通りである。
【００３０】
2つのアップストリームデータパケットを連続して受信した場合に、それらの2つのパケットのシーケンス番号が連続しているか否かにかかわらず、配信サーバは、各々のアップストリームデータパケットをコピーして、2つのパケットを取得し、一方のパケットに対してデータ転送を直ちに実行し、他方のパケットに対して制御管理を実行する。この開示の複数の実施形態においては、データ配信プロセス及び制御管理プロセスは、分離され、データパケットに対して制御管理を実行した後に、そのデータパケットを配信する必要がなく、データパケットを転送するために消費される時間を大幅に短縮する。加えて、パケット損失が発生するか否かにかかわらず、配信サーバは、パケットを受信した後に、直ちにパケットを転送し、データ配信遅延を大幅に短縮する。
【図面の簡単な説明】
【００３１】
【図１】この開示の背景技術にしたがったCDNネットワークの概略的な構成図である。
【図２】この開示の背景技術にしたがった配信サーバの内部アーキテクチャの概略的な図である。
【図３】この開示のある1つの実施形態にしたがったCDNヒットサービスの概略的なシナリオ図である。
【図４】この開示のある1つの実施形態にしたがったCDN転送サービスの概略的なシナリオ図である。
【図５】この開示のある1つの実施形態にしたがったデータ配信方法の第1の適用シナリオの図である。
【図６】この開示のある1つの実施形態にしたがったデータ配信方法の第1の適用シナリオの図である。
【図７】この開示のある1つの実施形態にしたがったデータ配信方法の第1の適用シナリオの図である。
【図８Ａ】この開示のある1つの実施形態にしたがった配信サーバの内部アーキテクチャの概略的な図である。
【図８Ｂ】この開示のある1つの実施形態にしたがった配信サーバの内部アーキテクチャの概略的な図である。
【図９Ａ】この開示のある1つの実施形態にしたがったデータ配信方法の中核の処理のフローチャートである。
【図９Ｂ】この開示のある1つの実施形態にしたがったデータ配信方法の中核の処理のフローチャートである。
【図９Ｃ】この開示のある1つの実施形態にしたがったデータ配信方法の中核の処理のフローチャートである。
【図１０Ａ】この開示のある1つの実施形態にしたがった第1のデータ配信方法のフローチャートである。
【図１０Ｂ】この開示のある1つの実施形態にしたがった第1のデータ配信方法のフローチャートである。
【図１０Ｃ】この開示のある1つの実施形態にしたがった第1のデータ配信方法のフローチャートである。
【図１１Ａ】この開示のある1つの実施形態にしたがった第2のデータ配信方法のフローチャートである。
【図１１Ｂ】この開示のある1つの実施形態にしたがった第2のデータ配信方法のフローチャートである。
【図１１Ｃ】この開示のある1つの実施形態にしたがった第2のデータ配信方法のフローチャートである。
【図１２】この開示のある1つの実施形態にしたがった配信サーバの概略的な構成図である。
【図１３Ａ】この開示のある1つの実施形態にしたがった第3のデータ配信方法のフローチャートである。
【図１３Ｂ】この開示のある1つの実施形態にしたがった第3のデータ配信方法のフローチャートである。
【図１３Ｃ】この開示のある1つの実施形態にしたがった第3のデータ配信方法のフローチャートである。
【図１４】この開示のある1つの実施形態にしたがった配信サーバの概略的な構成図である。
【発明を実施するための形態】
【００３２】
この開示の目的、技術的解決方法、及び利点をより明確にするために、以下の記載は、さらに、複数の添付の図面を参照して、この開示の複数の実装を詳細に説明する。
【００３３】
この開示の複数の実施形態を詳細に説明する前に、この開示のそれらの複数の実施形態において使用される場合があるいくつかの用語を最初に説明する。
【００３４】
ヒットサービス:  図3に示されているように、配信サーバが、コンテンツ要求によって要求されているデータを格納している場合に、その配信サーバは、上位レベルのCDNノードにコンテンツ要求を転送することなく、そのコンテンツ要求に直接的に応答する。図3は、CDNエッジノードが、受信したコンテンツ要求によって要求されているデータを格納している場合を示している。図3に示されているように、CDNエッジノードは、受信したコンテンツ要求に直接的に応答し、そして、ユーザ端末に応答データを返送する。
【００３５】
転送サービス:  図4に示されているように、CDN中間ノード及びCDNエッジノードのいずれもが、コンテンツ要求によって要求されているデータを格納していない場合に、CDNノードは、コンテンツ要求がソース局に到達するまで、そのコンテンツ要求を転送する。最終的に、ソース局は、応答データを提供し、各々のCDNノードは、レベル毎に応答データを転送して、ユーザ端末に応答データを配信する。図4の中の各々のシーケンス番号は、データ要求及びデータ配信のシーケンスを表す。
【００３６】
各々のビデオウェブサイトが提供するビデオ及び画像等の一般的な静的なコンテンツは、長時間にわたって変化しない状態に維持されるため、その静的なコンテンツは、例えば、図3及び図4に示されているCDN中間ノード及びCDNエッジノード等のCDN局として機能する配信サーバの中にバッファリングされてもよいということに留意すべきである。そのCDN局は、ヒットサービスを提供する。(例えば、生放送のコンテスト及び生放送のホットイベント等の)生放送のビデオ、(例えば、ソース局がリアルタイムでウェブページを生成する必要がある)動的なコンテンツ、及び、静的なコンテンツが、初めて配信されるときに、上記の配信サーバは、転送サービスを提供する必要があり、ソース局は、ヒットサービスを提供する。
【００３７】
他の実施形態においては、上記の配信サーバは、通常、さらに、例えば、オンデマンドビデオ及び静的な画像等のバッファリング可能であるコンテンツを近傍に格納するのに使用され、近傍のユーザにサービスを提供し、それにより、送信ネットワーク帯域幅の消費を減少させるとともに、ユーザ端末の体験を改善する。さらに、例えば、仮想現実感(Virtual  Reality,  VR)ビデオ、生放送のビデオ、及び動的なコンテンツ等のリアルタイムパフォーマンスに厳格な要件を課すコンテンツの場合には、CDN中間ノード及びCDNエッジノードを含むCDNネットワークは、通常、インテリジェントルーティング、言い換えると、転送サービスを提供するのに使用され、低遅延配信を実装するということに留意すべきである。ソース局は、ヒットサービスを提供する。この開示のそれらの複数の実施形態によって提供される解決方法は、低遅延配信サービスを実装する方法に焦点を当てている。
【００３８】
低遅延配信サーバを実装するために、この開示のそれらの複数の実施形態は、低遅延配信機能を有する配信サーバを提供し、それによって、データ配信経路を短縮することが可能であるとともに遅延を短縮することが可能であるのみならず、データ配信プロセス及び制御管理プロセスを分離することによって、制御管理によって引き起こされるデータ配信遅延を短縮することが可能である。簡潔にするために、この開示のそれらの複数の実施形態によって提供される配信サーバは、主として、以下の複数の改良を実装する。
【００３９】
(1)  (データ転送層とも称される)TCP薄層が、新たに追加され、もっぱら、処理手順においてデータ配信動作を実行し、そして、待機することなしで転送を実行する。TCP薄層の転送プロセスは、以下のように簡潔に説明される。
【００４０】
a.  TCP薄層がアップストリームデータパケットを受信するたびに、TCP薄層は、確立された接続マッピングテーブルに基づいて、受信したアップストリームデータパケットを直ちに変換し、例えば、そのデータパケットの中のNタプル情報及びシーケンス番号を置き換える。
【００４１】
b.  変換が終了した後に、TCP薄層は、ダウンストリームノード又はユーザ端末に、変換によって得られるダウンストリームデータパケットを直ちに送信し、そして、待機することなしに転送を実行する。
【００４２】
例えば、パケットの順序が正しくないか否か又はパケットの送信が許可されているか否か等の制御管理は、上記のプロセスにおいては実行されず、制御管理プロセスによって引き起こされるデータ配信遅延を回避するということに留意すべきである。
【００４３】
(2)  データ配信及び制御管理を分離するために、ソケット(socket)インターフェイスが、プロトコルスタックに新たに追加され、そのインターフェイスは、アプリケーション層によって起動される。プロトコルスタックの新たに追加されたインターフェイスの詳細な説明については、後続の実施形態を参照すべきである。
【００４４】
(3)  データ配信プロセス及び制御管理プロセスの分離をサポートするために、アプリケーション層によって起動された後に、プロトコルスタックは、伝送制御プロトコル(Transmission  Control  Protocol,  TCP)接続を設定して、再送信のみのためにデータパケットを受信する必要があり、もはやデータパケットを配信しない、言い換えると、プロトコルスタックは、制御管理のみを実装する。TCP薄層は、データ配信を実行する。
【００４５】
(3)  TCP薄層がデータ配信を実行するのを支援するために、アプリケーション層によって起動された後に、プロトコルスタックは、TCP薄層の有効化インターフェイスを起動して、接続マッピングテーブルを確立し、そして、TCP薄層のデータ配信能力を有効化するようにTCP薄層に指示する必要がある。TCP薄層の有効化インターフェイスの詳細な説明については、後続の実施形態を参照すべきである。
【００４６】
この開示のそれらの複数の実施形態によって提供される複数の解決方法を詳細に説明する前に、この開示のそれらの複数の実施形態のシステムアーキテクチャ又は適用シナリオを、以下で、最初に説明する。
【００４７】
図5は、この開示のある1つの実施形態にしたがった解決方法の第1の適用シナリオを示している。具体的にいうと、コンテンツ要求を開始する前に、ユーザ端末は、最初に、決定サーバへの要求を開始する。決定サーバは、コンテンツ要求を処理する配信サーバのタイプを決定する。例えば、ソース局アプリケーション製造業者は、それらの複数のアプリケーションの遅延要件に基づいて、2つのタイプに、複数のアプリケーションのドメイン名を分類してもよく、一方のタイプは、リアルタイムドメイン名であり、例えば、vr/live/rtmp/dynamic等のワードを含むドメイン名は、リアルタイムドメイン名である。もう1つのタイプは、非リアルタイムドメイン名である。ユーザ端末が開始するコンテンツ要求のドメイン名が、リアルタイムドメイン名であるということを検出すると、低遅延の配信機能を有する配信サーバのインターネットプロトコル(Internet  Protocol,  IP)アドレスが直接的に返送される。その次に、ユーザは、配信サーバへのコンテンツ要求を開始する。配信サーバは、インターネットユーザを判別しないが、すべての受信したコンテンツ要求のために低遅延配信を可能とする。配信サーバが、アップストリーム配信ノードを検索するときに、そのアップストリーム配信ノードは、依然として、決定サーバによって決定されてもよい。プロセスの中で低遅延の配信機能を有するすべての配信サーバは、デフォルトで、すべての受信したコンテンツ要求のために低遅延の配信機能を有効化する。
【００４８】
図6は、この開示のある1つの実施形態にしたがった解決方法の第2の適用シナリオを示している。具体的にいうと、ユーザ端末にインストールされているアプリケーションクライアントは、低遅延配信に対する要件を検知する。そのアプリケーションクライアントは、プロトコルフィールドを拡張して、開始されたコンテンツ要求が低遅延配信を必要とするということを示しているフラグビットを搬送する必要があり、プロセス中の各々の配信サーバは、データパケットの中のプロトコルフィールドを自動的に識別して、そのデータパケットが属するフローのために低遅延の配信能力を有効化し、そして、その次に、そのフローの以降のデータパケットに対して低遅延転送を実行する。
【００４９】
図7は、この開示のある1つの実施形態にしたがった解決方法の第3の適用シナリオを示している。具体的にいうと、配信サーバは、低遅延配信に対する要件を検知する。例えば、コンテンツ要求のユニフォームリソースロケータ(Uniform  Resource  Locator,  url)は、dynamic/vr/live/rtmp等のキーワードを搬送する。配信サーバは、そのキーワードを検知した後に、対応するフローのために低遅延の配信能力を自動的に有効化し、そして、その次に、そのフローの以降のデータパケットのために低遅延転送を提供する。
【００５０】
図8A及び図8Bは、この開示のある1つの実施形態にしたがった低遅延の配信機能を有する配信サーバの内部アーキテクチャの概略的な図である。図8A及び図8Bを参照すると、配信サーバは、アプリケーション層801、プロトコルスタック802、及びデータ転送層803を含む。
【００５１】
(TCP薄層とも称される)データ転送層803は、データ配信に関与し、ソフトウェア又はハードウェアによって実装されてもよい。このことは、この開示のこの実施形態においては特には限定されない。データ転送層803は、有効化インターフェイス8031を含み、主として、以下の機能を実装する。
【００５２】
(1)  データ転送層803は、有効化インターフェイス8031を使用することによって、上位層におけるプロトコルスタック802(又はアプリケーション層801)によって起動されて、(例えば、新たに追加する/削除するといったように)接続マッピングテーブルを維持する。接続マッピングテーブルは、アップストリーム接続情報及びダウンストリーム接続情報を提供する。例えば、接続マッピングテーブルは、アップストリーム接続のNタプル情報、ダウンストリーム接続のNタプル情報、及びアップストリーム接続の初期シーケンス番号とダウンストリーム接続の初期シーケンス番号との差を提供する。このことは、この開示のこの実施形態においては特には限定されない。
【００５３】
(2)  データ転送層803が、アップストリームノードが送信するアップストリームデータパケットを受信するたびごとに、データ転送層803は、アップストリームデータパケットの中のNタプル情報を取得し、アップストリームデータパケットの中のNタプル情報に基づいて、パケット置換のために、確立された接続マッピングテーブルを照会して、例えば、アップストリームデータパケットの中のNタプル情報を置き換え、そして、TCP接続のシーケンス番号を修正する。加えて、変換を実行するときに、データ転送層803は、さらに、関連する検査を実行するか、又は、他のフィールドを修正してもよい。このことは、この開示のこの実施形態においては特には限定されない。
【００５４】
加えて、プロトコルスタック802は、制御管理に関与する。図8A及び図8Bに示されているように、クライアントモジュール8021及びサーバモジュール8022に加えて、プロトコルスタックは、有効化インターフェイス8023をさらに含む。新たに追加された有効化インターフェイス8023は、アプリケーション層801によって起動されて、プロトコルスタック802がデータ配信及び制御管理を分離することを可能とし、それによって、プロトコルスタック802のデータ配信機能が除外され、制御管理機能のみが保持される。
【００５５】
この開示のこの実施形態においては、有効化インターフェイス8023は、データ転送機能及び制御管理機能を分離するように指示するための有効化フラグとアップストリーム/ダウンストリーム接続識別子とを搬送する必要がある。アップストリーム/ダウンストリーム接続記述子及び有効化フラグ等のアップストリーム/ダウンストリーム接続識別子は、主として、データ配信及び制御管理を分離するようにプロトコルスタック802に指示するのに使用される。
【００５６】
加えて、プロトコルスタック802は、具体的にいうと、データ配信のためにアプリケーション層801によって起動されるときに、データ配信機能を除外する必要があり、プロトコルスタック802は、受信したデータパケットをカプセル化して、TCPパケットとし、そして、バッファ(buffer)の中にTCPパケットを格納するが、TCPパケットを送信しない。TCPパケットは、以降の制御管理のために使用されるにすぎない。上記の場合には、プロトコルスタック802は、さらに、タイムアウトタイマ(すなわち、再送信タイマ)をリセットする必要がある。ダウンストリームノード又はユーザ端末の正常なACKを受信するときに、プロトコルスタック802は、バッファの中の対応するTCPパケットを削除し、そして、タイムアウトタイマを更新する。プロトコルスタック802が、ダウンストリームノード又はユーザ端末のACKを3回繰り返して受信するとき、又は、タイムアウトタイマが終了するときに、プロトコルスタック802は、輻輳制御メカニズムにしたがって、再送信のためにバッファから対応するTCPパケットを抽出する。
【００５７】
アプリケーション層801は、クライアントモジュール8011及びサーバモジュール8012を含む。他の実施形態においては、データ転送層803の有効化インターフェイス8031は、さらに、起動される必要があってもよく、それによって、データ転送層803は、接続マッピングテーブルを維持し、そして、データ配信機能を有効化する。この部分の説明については、後続の実施形態を参照すべきである。
【００５８】
この開示のこの実施形態によって提供される配信サーバによれば、データパケットの変換及び送信に専用のTCP薄層を追加し、TCP薄層の低遅延の配信能力を有効化し、プロトコルスタックのデータ転送機能を除外し、そして、プロトコルスタックの制御管理機能のみを保持し、それによって、プロトコルスタックの制御管理機能及びデータ転送機能を分離し、制御管理プロセスによってデータ転送プロセスに与えられる影響を減少させる。したがって、TCP薄層は、受信したデータパケットを直ちに変換して、送信することが可能であり、データパケットを転送するための経路を短縮するとともに、遅延を大幅に短縮することが可能である。
【００５９】
この開示のこの実施形態における低遅延配信を達成する中核の処理手順は、図8A及び図8Bにおいて説明されている低遅延の配信機能を有する配信サーバの構成図を参照して、以下で簡潔に要約される。図9A、図9B、及び図9Cは、この開示のある1つの実施形態にしたがった解決方法の中核の処理のフローチャートである。
【００６０】
ステップ1:  ダウンストリームノード又はユーザ端末は、配信サーバへの要求を開始する。その要求は、最初に、プロトコルスタックのサーバの接続要求に到達し、その次に、アプリケーション層のサーバのコンテンツ要求に到達する。
【００６１】
ステップ2:  ユーザが要求するコンテンツが局所的に格納されていないということを検出した後に、配信サーバは、アップストリームノードへの接続要求を開始するように、アプリケーション層のクライアントをトリガする。
【００６２】
ステップ3:  アップストリームノードへの接続を確立した後に、アプリケーション層は、プロトコルスタックの有効化インターフェイスを起動して、アップストリーム/ダウンストリーム接続のためのデータ転送及び制御管理を分離するようにプロトコルスタックを制御し、それによって、そのプロトコルスタックは、TCP薄層の有効化インターフェイスを起動して、アップストリーム/ダウンストリーム接続のための接続マッピングテーブルを確立し、そして、低遅延の転送能力を有効化するようにTCP薄層に指示する。
【００６３】
ステップ4:  アプリケーション層のクライアントは、アップストリームノードへのコンテンツ要求を開始する。
【００６４】
ステップ5:  アップストリームノードが送信するアップストリームデータパケットは、通常は、配信サーバに到達し、TCP薄層は、接続マッピングテーブルを検索し、そして、例えば、アップストリームデータパケットの中のNタプル情報及びシーケンス番号情報を置き換えて、アップストリームデータパケットをダウンストリームデータパケットに変換するといったように変換を実行し、そして、その次に、TCP薄層は、ダウンストリームノード又はユーザ端末にそのダウンストリームデータパケットを直ちに送信する。
【００６５】
ステップ6:  配信サーバは、プロトコルスタックにアップストリームデータパケットを送信し、プロトコルスタックは、データパケットの順序が正しくないか否かを検査することに関与し、データパケットの順序が正しくない場合には、アップストリームノードに通常のACKを送信して、そのデータパケットが受信されているということを決定する。
【００６６】
ステップ7:  プロトコルスタックのクライアントは、アプリケーション層のクライアントにアップストリームデータパケットを送信し、それによって、アプリケーション層のそのクライアントは、アプリケーション層のサーバにアップストリームデータパケットを転送し、そして、その次に、プロトコルスタックのサーバにアップストリームデータパケットを送信する。この場合には、プロトコルスタックのそのサーバは、アップストリームデータパケットをカプセル化して、TCPパケットとし、そして、その次に、バッファの中にそのTCPパケットを配置するが、そのTCPパケットを送信しない。プロトコルスタックのサーバは、タイムアウトタイマを設定し、そのタイムアウトタイマが終了した後に、TCPパケットを再送信するか、或いは、ダウンストリームノード又はユーザ端末が返送する正常なACKを受信した後に、そのTCPパケットを削除する。
【００６７】
ステップ8:  ダウンストリームノード又はユーザ端末は、通常、ダウンストリームデータパケットを受信し、そして、ACKを返送し、プロトコルスタックのサーバは、バッファの中の対応するTCPパケットを削除し、そして、そのACKを受信した後に、タイムアウトタイマを更新する。
【００６８】
ステップ9:  パケット損失がアップストリームノードにおいて発生する場合、例えば、アップストリームデータパケットP2/P4/P5/P6が正常に到達しているが、アップストリームデータパケットP3が到達していない場合に、TCP薄層は、受信したアップストリームデータパケットP2/P4/P5/P6を変換し、そして、その次に、変換によって得られるデータパケットを直ちに送信する。
【００６９】
ステップ10:  アップストリームデータパケットP4/P5/P6を受信するときに、プロトコルスタックは、(アップストリームデータパケットP3を受信しておらず、アップストリームデータパケットP4が、アップストリームデータパケットP2の後に位置しているといったように)パケットの順序が正しくないということを発見し、したがって、そのプロトコルスタックは、アップストリームデータパケットを受信するたびごとに、アップストリームデータパケットP2に対して反復されたACKを送信する。
【００７０】
ステップ11:  3回繰り返してACKを受信するときに、アップストリームノードは、アップストリームデータパケットP3を再送信し、TCP薄層は、アップストリームデータパケットP3を変換し、そして、その次に、変換により得られるデータパケットを直ちに送信する。この場合には、プロトコルスタックは、パケットの順序が正しくないということを検出し、したがって、アプリケーション層のクライアントにアップストリームデータパケットP2乃至P6を転送し、そして、その次に、プロトコルスタックのサーバにアップストリームデータパケットP2乃至P6を転送する。
【００７１】
加えて、ダウンストリームパケットの損失については、後続の実施形態を参照するべきである。
【００７２】
図10A、図10B、及び図10Cは、この開示のある1つの実施形態にしたがったデータ配信方法のフローチャートである。この実施形態においては、主として、低遅延の配信機能を有効化するプロセス及びパケット損失を発生させることなくデータ配信を実行するプロセスを説明する。図10A、図10B、及び図10Cを参照すると、この開示のこの実施形態によって提供される方法の手順は、以下のステップを含む。
【００７３】
1001.  ダウンストリームノード/ユーザ端末は、配信サーバとの間でTCPの3方向ハンドシェイクを実行して、TCP接続を確立する。
【００７４】
このステップにおいて確立されるTCP接続は、ダウンストリーム接続である。ダウンストリームノード/ユーザ端末への接続を確立するピアエンドは、配信サーバの中のプロトコルスタックのサーバである。
【００７５】
1002.  ダウンストリームノード/ユーザ端末は、確立されたダウンストリーム接続を使用することによって、配信サーバにコンテンツ要求を送信する。
【００７６】
コンテンツ要求は、最終的に、配信サーバの中のアプリケーション層のサーバに到達する。
【００７７】
加えて、コンテンツ要求のために、HTTP及びRTMP等の複数のプロトコルを使用してもよい。コンテンツ要求を受信した後に、アプリケーション層のサーバは、ローカルバッファを検査する。コンテンツ要求によって要求されるデータが、局所的に格納されていない場合に、アプリケーション層のサーバは、TCP接続の確立のための要求をアップストリームノードに対して開始するように、プロトコルスタックのクライアントをトリガする。
【００７８】
1003.  アプリケーション層のクライアントは、TCP接続を確立するための要求をアップストリームノードに対して開始するようにプロトコルスタックのクライアントをトリガし、TCPの3方向ハンドシェイクが実行された後に、アップストリーム接続の確立に成功する。アップストリーム接続は、ステップ1001において言及されているダウンストリーム接続に対応する。本明細書においては、詳細は説明されない。
【００７９】
アプリケーション層のクライアントが、アップストリームノードに対してコンテンツ要求を開始する前に、この開示のこの実施形態は、配信サーバの低遅延の配信能力を最初に有効化するステップをさらに含むということに留意すべきである。詳細については、以下のステップ1004(a)乃至1004(c)を参照するべきである。
【００８０】
1004(a).  アプリケーション層は、プロトコルスタックの第1の有効化インターフェイスを起動して、低遅延の配信能力を有効化するようにプロトコルスタックに指示する。
【００８１】
プロトコルスタックの新たに追加された有効化インターフェイスとTCP薄層のその後の有効化インターフェイスとを区別するために、上記の2つの有効化インターフェイスは、この開示のこの実施形態においては、第1の有効化インターフェイス及び第2の有効化インターフェイスを使用することによってそれぞれ識別される。
【００８２】
この開示のこの実施形態においては、プロトコルスタックの新たに追加された有効化インターフェイスは、アップストリーム/ダウンストリーム接続識別子と、データ転送機能及び制御管理機能を分離するように指示するための有効化フラグと、を搬送する。アップストリーム/ダウンストリーム接続識別子は、アップストリーム/ダウンストリーム接続記述子fd_client又はfd_serverを含んでもよい。このことは、この開示のこの実施形態においては特には限定されない。新たに追加された第1の有効化インターフェイスは、例えば、int  setsockopt(int  sockfd,  int  level,  int  optname,const  void  *optval,  socklen_t  optlen)等のsetsockopt  API形式であってもよく、
"optval"は、制御管理及びデータ転送を分離する必要があるということを示しているアップストリーム/ダウンストリーム接続識別子を搬送し、"optname"は、データ配信及び制御管理を分離するよう指示するための有効化フラグを搬送し、低遅延配信を表す。例えば、"optname"の値は、TCP_ZERODELAYであってもよく、TCP_ZERODELAYは、待機することなしに転送することを表す。
【００８３】
1004(b).  アプリケーション層によって起動された後に、プロトコルスタックは、アップストリーム/ダウンストリーム接続のデータ転送機能及び制御管理機能を分離する。
【００８４】
分離中に、特に、"fd_server"に対応するTCP接続のデータ転送機能及び制御管理機能を分離し、具体的にいうと、動作を実行した後にデータパケットを受信し、データパケットをカプセル化してTCPパケットとするのみで、送信は行わず、タイムアウト又はACKによって制御管理をトリガするか、或いは、特に、"fd_client"に対応するTCP接続のデータ転送機能及び制御管理機能を分離し、具体的にいうと、動作を実行した後にデータパケットを受信し、データパケットをカプセル化してTCPパケットとするのみで、送信は行わず、タイムアウト又はACKによって制御管理をトリガする。
【００８５】
fd_serverに対応するTCP接続の処理は、主として、アップストリームノードによってノードに転送され、そして、その次に、ダウンストリームノード又はユーザ端末に転送されるデータのための処理であり、CDN配信の典型的な場合であるということに留意すべきである。したがって、この解決方法においては、この場合のみを詳細に説明する。fd_clientに対応するTCP接続の処理は、その処理と同様であり、この解決方法においては説明されない。
【００８６】
1004(c).  アプリケーション層によって起動された後に、プロトコルスタックは、TCP薄層の第2の有効化インターフェイスを起動して、接続マッピングテーブルを確立し、そして、TCP薄層の低遅延の配信能力を有効化するようにTCP薄層に指示する。
【００８７】
この開示のこの実施形態においては、分離動作に加えて、プロトコルスタックは、さらに、TCP薄層の低遅延の配信能力を有効化する必要がある。したがって、アプリケーション層によって起動された後に、プロトコルスタックは、TCP薄層の第2の有効化インターフェイスを起動して、接続マッピングテーブルを確立し、そして、TCP薄層の低遅延の配信能力を有効化するようにTCP薄層に指示し、その確立された接続マッピングテーブルに基づいて、接続マッピング条件を満たしているすべてのその後に受信したデータパケットを変換するようにTCP薄層に指示する。その次に、プロトコルスタックは、取得したデータパケットを直接的に転送する。
【００８８】
TCP薄層の第2の有効化インターフェイスは、例えば、
int  settcpmap(const  void  *client_conn_info,  void  *server_conn_info,  bool  enable)の形式であり、
"client_conn_info"は、アップストリーム接続情報を搬送し、(例えば、ソースIP/ポート及び宛先IP/ポート等の)Nタプル情報及び初期シーケンス番号を含んでもよく、"server_conn_info"は、ダウンストリーム接続情報を搬送し、(例えば、ソースIP/ポート及び宛先IP/ポート等の)Nタプル情報及び初期シーケンス番号を含んでもよい。"enable"について、"true"は、接続マッピングテーブルが確立されているということを示し、"false"は、接続マッピングテーブルが削除されているということを示す。
【００８９】
TCP薄層は、2つの接続マッピングテーブルを確立する必要があり、一方の接続マッピングテーブルは、データがアップストリームからダウンストリームへと送信されるということを表し、もう1つの接続マッピングテーブルは、データがダウンストリームからアップストリームへと送信されるということを表すということに留意すべきである。それらの2つの接続マッピングテーブルの実装方法は、同じである。この開示のこの実施形態においては、データがアップストリームからダウンストリームへと送信される例のみが、説明のために使用される。このシナリオについては、接続マッピングテーブルは、例えば、表1に示されている形式である。
【表１】
2020537454.tif 000001
【００９０】
Nタプル情報は、4タプル情報であると仮定する。アップストリーム接続の4タプル情報は、(IPup,  Portup,  IPc,  及びPortc)であり、アップストリーム接続の初期シーケンス番号は、"Sequpinit"である。ダウンストリーム接続の4タプル情報は、(IPs,  Ports,  IPdown,  及びPortdown)であり、ダウンストリーム接続の初期シーケンス番号は、"Seqdowninit"である。
【００９１】
"IPup"及び"Portup"は、アップストリームノードの検知アドレス及びポートを表し、"IPc"及び"Portc"は、配信サーバがアップストリーム接続を開始するときに使用されるアドレス及びポートを表し、"IPs"及び"Ports"は、配信サーバの検知アドレス及びポートを表し、"IPdown"及び"Portdown"は、ダウンストリームノードがダウンストリーム接続を開始するときに使用されるアドレス及びポートを表す。データがアップストリームからダウンストリームへと送信されるときに、対応する接続マッピングテーブルは、表1の代わりに表2であってもよい。
【表２】
2020537454.tif 000002
【００９２】
表1及び表2においては、インデックスとして"Src"を使用し、具体的にいうと、アップストリームデータパケットを受信するときに、TCP薄層は、アップストリームデータパケットのNタプル情報を抽出し、そのアップストリームデータパケットのNタプル情報と接続マッピングテーブルの中の"Src"とを比較する。同じ"Src"が生じるときに、マッピングエントリ"dst"及び"seq_diff"を使用することによって、マッピング変換、言い換えると、変換を実行する。本明細書においては、さらに、マッピングエントリを格納し、そして、インデックス化プロセスを促進するのに、共通のハッシュ方法等を使用してもよいということに留意すべきである。このことは、この開示のこの実施形態においては特には限定されない。
【００９３】
他の実施形態においては、アップストリームノード及びダウンストリームノード/ユーザ端末のいずれか一方への接続が切断されるとき、又は、例外が発生するときに、プロトコルスタックは、新たに追加された第1の有効化インターフェイスを起動し、"enable"を"false"に設定し、確立された接続マッピングテーブルを削除するようにTCP薄層に指示し、そして、そのフローのための低遅延の配信サービスを無効化する。
【００９４】
1005.  アプリケーション層のクライアントは、確立されたアップストリームの接続を使用することによって、アップストリームノードに対してコンテンツ要求を開始する。
【００９５】
1006.  アップストリームノードは、確立されたアップストリーム接続を使用することによって、配信サーバにアップストリームデータパケットを送信し、その配信サーバは、最初に、TCP薄層に、そのアップストリームデータパケットをコピーすることによって得られるデータパケットを送信し、それによって、そのTCP薄層は、低遅延配信を実行する。
【００９６】
他の表現方式では、TCP薄層が、アップストリームノードが送信するアップストリームデータパケットを受信した後に、そのTCP薄層は、確立された接続マッピングテーブルに基づいて、アップストリームデータパケットを変換して、ダウンストリームデータパケットを取得し、そして、変換によって得られるダウンストリーム接続パケットを直ちに転送する。
【００９７】
TCP薄層が変換を実行する特定のプロセスは、以下の通りである。
【００９８】
最初に、TCP薄層は、アップストリームデータパケットの中のNタプル情報を抽出し、キーとしてそのNタプル情報を使用し、そして、確立された接続マッピングテーブルを検索して、そのキーと一致するターゲットマッピングエントリを探す。その次に、TCP薄層は、ターゲットマッピングエントリの中の"dst"及び"seq_diff"を使用することによって、アップストリームデータパケットを変換する。
【００９９】
Nタプル情報は、(IPup,  Portup,  IPc,  Portc)であり、見つかったターゲットマッピングエントリは、以下の表のようになると仮定する。
【表３】
2020537454.tif 000003
【０１００】
変換によって得られるダウンストリームデータパケットの中のNタプル情報は、(IPs,  Ports,  IPdown,  Portdown)であり、シーケンス番号は、"Seqdown"とであり、whereSeqdown＝Sequp＋seq_diffとなる。
【０１０１】
ダウンストリームデータパケットを取得した後に、TCP薄層は、そのダウンストリームデータパケットを転送する。他の表現方式では、TCP薄層は、ダウンストリームノード又はユーザ端末に、変換によって得られるIPパケットを直ちに送信する。
【０１０２】
1007.  配信サーバは、プロトコルスタックに、アップストリームデータパケットをコピーすることによって得られる他のデータパケットを送信し、それによって、そのプロトコルスタックは、制御管理を実行する。
【０１０３】
この実施形態においては、複数のデータパケットがパケット損失を伴うことなく順次的に到達する場合のみを考慮する。この場合には、プロトコルスタックは、それらのデータパケットが順次的に到達するということを決定する、言い換えると、それらのデータパケットに対して不適切順序検査を実行した後に、そのプロトコルスタックは、それらのパケットの順序が正しいということを見出す。したがって、そのプロトコルスタックは、アップストリームノードに通常のACKを送信する。
【０１０４】
1008.  データパケットが順次的に到達した後に、プロトコルスタックのクライアントは、アプリケーション層のクライアントにアップストリームデータパケットを送信する。
【０１０５】
1009.  アプリケーション層のクライアントは、アプリケーション層のサーバにアップストリームデータパケットを転送する。
【０１０６】
1010.  アプリケーション層のサーバは、プロトコルスタックのサーバにアップストリームデータパケットを転送する。
【０１０７】
1011.  アプリケーション層のサーバが送信するアップストリームデータパケットを受信した後に、プロトコルスタックのサーバは、(例えば、Nタプル情報及びシーケンス番号等の)ダウンストリーム接続情報を使用することによって、アップストリームデータパケットをカプセル化して、TCPパケットとし、そして、バッファの中にそのカプセル化されたTCPパケットを配置する。
【０１０８】
そのカプセル化されたTCPパケットは、送信されず、バッファの中に配置されるにすぎない。プロトコルスタックのサーバは、タイムアウトタイマを設定し、ダウンストリームノード/ユーザ端末のACKを待って、TCPパケットの削除をトリガするか、又は、タイムアウトタイマがタイムアウトするのを待って、TCPパケットの再送信をトリガする。
【０１０９】
上記に記載されている複数の実装プロセスから、この実施形態において説明されている解決方法は、以下の革新的な点を有するということを理解することが可能である。
【０１１０】
配信サーバにTCP薄層を新たに追加し、その新たに追加したTCP薄層によって低遅延の配信能力を実装する。TCP薄層の低遅延の配信機能をサポートするために、プロトコルスタックを修正し、プロトコルスタックのデータ配信機能を除外し、そして、プロトコルスタックの制御管理機能及びデータ配信機能を分離する。ソフトウェア又はハードウェアによってTCP薄層を実装してもよい。
【０１１１】
上記のことに基づいて、パケット損失を伴うことなくデータ配信を実行するプロセスにおいて、この実施形態は、
(1)  低遅延の配信能力を有効化するステップ1004(a)乃至ステップ1004(c)におけるプロセス、
(2)  データパケットを受信した後に、TCP薄層が、直ちに、データパケットを変換し、そして、配信するステップ1006におけるプロセス、及び、
(3)  アプリケーション層のサーバが送信するデータパケットを受信した後に、プロトコルスタックのサーバが、データパケットをカプセル化するのみで、そのデータパケットを転送しないステップ1011におけるプロセス、を含む点で独特である。
【０１１２】
既存の解決方法においては、データパケットを受信した後に、データパケットは、層ごとに、アプリケーション層のクライアントに送信され、その次に、アプリケーション層のサーバに転送され、そして、その次に、プロトコルスタックのサーバによって送信される。したがって、既存の解決方法と比較して、この開示のこの実施形態によって提供されるデータ配信方法にしたがって、転送経路が短縮されるとともに、遅延が短縮される。加えて、既存の解決方法においては、アプリケーション層が、プロトコルスタックのサーバにデータパケットを転送した後に、プロトコルスタックのサーバは、必ずしも直ちにデータパケットを送信するわけではなく、一方で、送信レート等の制御要因を考慮する必要がある。これに対して、この解決方法においては、TCP薄層は、データ転送のみに関与し、いかなる制御処理も実行しないので、データ転送に対する制御処理が及ぼす影響を減少させることが可能である。
【０１１３】
この開示のこの実施形態によって提供される方法によれば、配信サーバに、データパケットの変換及び送信に専用のTCP薄層を追加し、TCP薄層の低遅延の配信能力を有効化し、プロトコルスタックのデータ転送機能を除外し、そして、プロトコルスタックの制御管理機能のみを保持し、それによって、プロトコルスタックの制御管理機能及びデータ転送機能を分離し、制御管理プロセスによってデータ転送プロセスに与えられる影響を減少させる。したがって、TCP薄層は、受信したデータパケットを直ちに変換して、送信することが可能であり、データパケットを転送するための経路を短縮するとともに、遅延を大幅に短縮することが可能である。
【０１１４】
図11A、図11B、及び図11Cは、この開示のある1つの実施形態にしたがったデータ配信方法のフローチャートである。この実施形態においては、主として、アップストリーム接続において発生するパケット損失を処理するプロセスを含むアップストリーム接続制御処理プロセスを提供する。図11A、図11B、及び図11Cを参照すると、この開示のこの実施形態によって提供される方法の手順は、以下のステップを含む。
【０１１５】
1101.  アップストリームノードが送信するデータパケットP1は、正常に到達し、配信サーバは、データパケットP1をコピーして、2つのデータパケットを取得し、TCP薄層は、1つのデータパケットを変換し、ダウンストリームノード又はユーザ端末に、変換によって得られるデータパケットを直ちに転送する。
【０１１６】
1102.  プロトコルスタックは、コピーによって得られる他のデータパケットに対して制御管理を実行し、プロトコルスタックが、他のデータパケットについて不適切順序が存在しないということを確認する場合に、そのプロトコルスタックは、アップストリームノードにACKを送信して、データパケットP1を受信しているということを決定し、そして、アプリケーション層のクライアントに他のデータパケットを送信する。
【０１１７】
1103.  アップストリームノードが送信するデータパケットP2が失われる。
【０１１８】
1104.  アップストリームノードが送信するデータパケットP3は、正常に到達し、配信サーバは、データパケットP3をコピーして、2つのデータパケットを取得し、TCP薄層は、一方のデータパケットを変換し、そして、その次に、ダウンストリームノード又はユーザ端末に、変換によって得られるデータパケットを直ちに転送する。
【０１１９】
1105.  プロトコルスタックは、コピーによって得られる他のデータパケットに対して制御管理を実行し、プロトコルスタックが、他のデータパケットについて不適切順序が存在しないということを検出する場合に、そのプロトコルスタックは、アップストリームノードにACKを送信して、データP1を受信しているということを決定する。
【０１２０】
データパケットP2を受信してはいないが、データパケットP3を受信しているため、プロトコルスタックは、それらのパケットの順序が正しくないということを決定し、そして、さらに、アップストリームノードにデータパケットP1に対するACKを送信するということに留意すべきである。この場合には、ACKは、初めて繰り返される(データパケットP1に対するACKは、ステップ1102において送信されている)。
【０１２１】
データパケットP2が失われているため、プロトコルスタックのクライアントは、データパケットP3を格納し、アプリケーション層のクライアントにデータパケットP3を送信しないということに留意すべきである。
【０１２２】
1106.  アップストリームノードが送信するデータパケットP4及びP5は、正常に到達し、TCP薄層は、データパケットP4及びP5を変換し、そして、その次に、ダウンストリームノード又はユーザ端末に、変換によって得られるデータパケットを直ちに転送する。
【０１２３】
データパケットP4及びP5は、さらに、データパケットP3の後に受信されるので、データパケットP1に対して、2回目の繰り返されるACK及び3回目の繰り返されるACKがさらにトリガされる。
【０１２４】
1107.  ACKを3回繰り返して受信した後に、アップストリームノードは、データパケットP2を再送信し、TCP薄層は、データパケットP2を変換し、そして、その次に、ダウンストリームノード又はユーザ端末に、変換によって得られるデータパケットを直ちに転送する。
【０１２５】
1108.  データパケットP2は、プロトコルスタックに送信され、プロトコルスタックは、データパケットの順序が正しいということを検出し、アップストリームノードにACKを送信して、データパケットP5を受信しているということを決定し、アプリケーション層のクライアントにデータパケットP2乃至P5を送信する。
【０１２６】
他の表現方式では、再送信されたデータパケットP2を受信した後に、プロトコルスタックは、アップストリームノードに、最後に受信したデータパケット(すなわち、データパケットP5)に対するACKを送信し、そして、アプリケーション層のクライアントにデータパケットP2乃至データパケットP5の4つのパケットを送信する。
【０１２７】
1109.  アプリケーション層のクライアントは、アプリケーション層のサーバにデータパケットP2乃至P5を転送し、アプリケーション層のサーバは、プロトコルスタックのサーバにデータパケットP2乃至P5を転送する。
【０１２８】
TCPパケットの形式でプロトコルスタックのサーバのバッファの中に上記のデータパケットP2乃至P5を格納し、ダウンストリームノード又はユーザ端末のACKによって、或いは、タイムアウトタイマのタイムアウトによって、TCPパケットの削除又はTCPパケットの再送信をトリガする。
【０１２９】
データ転送を実行するときに、データパケットP1は、第1のアップストリームデータパケットと称されてもよいということに留意すべきである。データパケットP1については、配信サーバが転送するダウンストリームデータパケットは、第1のダウンストリームデータパケットと称されてもよく、プロトコルスタックのバッファの中にバッファリングされているデータパケットは、第3のダウンストリームデータパケットと称されてもよい。データパケットP3は、第2のアップストリームデータパケットと称されてもよい。データパケットP3については、配信サーバが転送するダウンストリームデータパケットは、第2のダウンストリームデータパケットと称されてもよく、プロトコルスタックのバッファの中にバッファリングされているデータパケットは、第5のダウンストリームデータパケットと称されてもよい。データパケットP2は、第3のアップストリームデータパケットと称されてもよい。データパケットP2については、配信サーバが転送するダウンストリームデータパケットは、第4のダウンストリームデータパケットと称されてもよく、プロトコルスタックのバッファの中にバッファリングされているデータパケットは、第6のダウンストリームデータパケットと称されてもよい。
【０１３０】
加えて、データパケットP1乃至P5は、アップストリームノードによって時間系列で送信され、各々のデータパケットは、シーケンス番号に対応する。第1のアップストリームデータパケットのシーケンス番号と第2のアップストリームデータパケットのシーケンス番号は、非連続的である。一方で、第1のアップストリームデータパケットのシーケンス番号と第3のアップストリームデータパケットのシーケンス番号は、連続的である。
【０１３１】
結論として、アップストリームデータパケットを受信しているということを決定する方法及びアップストリームパケット損失を処理する方法は、上記の実装プロセスにおいて説明されている。この解決方法においては、失ったパケットを受信し、そして、パケットの順序が正しいということを検出した後に、アプリケーションに受信したデータパケットを転送し、そして、その次に、ダウンストリームノード又はユーザ端末に受信したデータパケットを送信する代わりに、データパケットを受信するたびごとに、データパケットを変換して直ちに転送する。
【０１３２】
他の実施形態においては、図11A、図11B、及び図11Cに示されている実施形態におけるパケット処理手順は、図10A、図10B、及び図10Cに示されている実施形態におけるパケット処理手順と一致している。2つのパケット処理手順の間の相違は、低遅延の配信能力を有効化するプロセスにある。図12を参照すると、図11A、図11B、及び図11Cに示されている実施形態における低遅延の配信能力を有効化するプロセスは、以下のステップを含む。
【０１３３】
(a).  アプリケーション層は、アップストリーム/ダウンストリーム接続記述子を搬送し、プロトコルスタックの新たに追加された有効化インターフェイスを起動し、そして、例えば、アップリンク/ダウンリンク接続の少なくとも初期シーケンス番号を含むアップストリーム/ダウンストリーム接続情報を取得する。
【０１３４】
プロトコルスタックの新たに追加された有効化インターフェイスは、例えば:  int  getsockopt(int  sockfd,  int  level,  int  optname,  void  *optval,  socklen_t*optlen)の形式となり、
"optname"は、アップストリーム/ダウンストリーム接続情報を取得する必要があるということを示している識別情報を搬送し、例えば、"optname"の値は、TCP_CONNECTINFOであってもよく、"optval"は、"connectinfo"の構造タイプを有する2つの構造を含み、起動の間に、各々の"connectinfo"は、例えば、アップストリーム/ダウンストリーム接続記述子"fd_client又はfd_server"等の制御管理及びデータ転送を分離する必要があるということを示しているアップストリーム/ダウンストリーム接続識別子を搬送し、"connectinfo"は、
struct  connectinfo  {
int  socketfd;  //接続記述子
struct  ipports;  //接続のNタプル情報
int  seqinit;  //接続の初期シーケンス番号
}となる。
【０１３５】
起動を終了するときに、プロトコルスタックは、"seqinit"に、"socketfd"が指定する接続の初期シーケンス番号を追加し、"ipports"に接続のNタプル情報を追加するということに留意すべきである。一方で、アプリケーション層は、インターフェイスを起動することなくNタプル情報を知ることができるので、Nタプル情報は、必要ない。
【０１３６】
(b).  アプリケーション層は、アップストリーム/ダウンストリーム接続識別子を搬送し、プロトコルスタックの他の新たに追加された有効化インターフェイスを起動し、そして、データ転送機能及び制御管理機能を分離するようにプロトコルスタックに指示する。
【０１３７】
新たに追加された有効化インターフェイスは、例えば、int  setsockopt(int  sockfd,  int  level,  int  optname,const  void  *optval,  socklen_t  optlen)等のsetsockopt  API形式であってもよく、
"optval"は、制御管理及びデータ転送を分離する必要があるということを示しているアップストリーム/ダウンストリーム接続識別子を搬送し、"optname"は、データ配信及び制御管理を分離するように指示するための有効化フラグを搬送し、低遅延配信を表す。例えば、"optname"の値は、TCP_ZERODELAYであってもよく、TCP_ZERODELAYは、待機を伴わない転送を表す。
【０１３８】
(c).  アプリケーション層によって起動された後に、プロトコルスタックは、アップストリーム/ダウンストリーム接続のデータ転送機能及び制御管理機能を分離する。
【０１３９】
分離の間に、特に、"fd_server"に対応するTCP接続のデータ転送機能及び制御管理機能を分離し、具体的にいうと、動作を実行した後に、データパケットを受信し、データパケットをカプセル化して、TCPパケットとするのみで、送信は行わず、そして、タイムアウト又はACKによって制御管理をトリガするか、或いは、特に、"fd_client"に対応するTCP接続のデータ転送機能及び制御管理機能を分離し、具体的にいうと、動作を実行した後に、データパケットを受信し、データパケットをカプセル化して、TCPパケットとするのみで、送信は行わず、そして、タイムアウト又はACKによって制御管理をトリガする。
【０１４０】
(d).  アプリケーション層は、アップストリーム/ダウンストリーム接続のNタプル情報及び初期シーケンス番号を搬送し、TCP薄層の有効化インターフェイスを起動し、接続マッピングテーブルを確立し、そして、TCP薄層の低遅延の配信機能を有効化する。
【０１４１】
TCP薄層の有効化インターフェイスは、例えば、
int  settcpmap(const  void  *client_conn_info,  void  *server_conn_info,  bool  enable)の形式であり、
"client_conn_info"は、アップストリーム接続情報を搬送し、(例えば、ソースIP/ポート及び宛先IP/ポート等の)Nタプル情報及び初期シーケンス番号を含んでもよく、"server_conn_info"は、ダウンストリーム接続情報を搬送し、(例えば、ソースIP/ポート及び宛先IP/ポート等の)Nタプル情報及び初期シーケンス番号を含んでもよい。"enable"については、"true"は、接続マッピングテーブルが確立されているということを示し、"false"は、接続マッピングテーブルが削除されているということを示している。
【０１４２】
TCP薄層は、2つの接続マッピングテーブルを確立する必要があり、一方は、データがアップストリームからダウンストリームに送信されるということを表し、もう一方は、データがダウンストリームからアップストリームに送信されるということを表すということに留意すべきである。2つの接続マッピングテーブルの実装方法は、同じである。この開示のこの実施形態においては、説明のために、データがアップストリームからダウンストリームに送信される例のみを使用する。このシナリオにおいては、接続マッピングテーブルは、例えば、以下の形式となる。
【表４】
2020537454.tif 000004
【０１４３】
Nタプル情報は4タプル情報であると仮定する。アップストリーム接続の4タプル情報は、(IPup,  Portup,  IPc,  及びPortc)であり、アップストリーム接続の初期シーケンス番号は、"Sequpinit"である。ダウンストリーム接続の4タプル情報は、(IPs,  Ports,  IPdown,  及びPortdown)であり、ダウンストリーム接続の初期シーケンス番号は、"Seqdowninit"である。
【０１４４】
"IPup"及び"Portup"は、アップストリームノードの検知アドレス及びポートを表し、"IPc"及び"Portc"は、配信サーバがアップストリーム接続を開始するときに使用されるアドレス及びポートを表し、"IPs"及び"Ports"は、配信サーバの検知アドレス及びポートを表し、"IPdown"及び"Portdown"は、ダウンストリームノードがダウンストリーム接続を開始するときに使用されるアドレス及びポートを表す。データがアップストリームからダウンストリームに送信されるときに、対応する接続マッピングテーブルは、以下のようになる。
【表５】
2020537454.tif 000005
【０１４５】
上記の2つの表において、インデックスとして"Src"を使用する、具体的にいうと、アップストリームデータパケットを受信するときに、TCP薄層は、そのアップストリームデータパケットのNタプル情報を抽出し、そして、接続マッピングテーブルの中の"Src"とそのアップストリームデータパケットのNタプル情報とを比較する。同じ"Src"が発生するときに、マッピング変換、言い換えると、マッピングエントリ"dst"及び"seq_diff"を使用することによって変換を実行する。本明細書においては、さらに、共通のハッシュ方法等を使用して、マッピングエントリを格納し、そして、インデックス化プロセスを加速してもよいということに留意すべきである。このことは、この開示のこの実施形態においては特には限定されない。
【０１４６】
図11A、図11B、及び図11Cに対応する実施形態、及び、図10A、図10B、及び図10Cに対応する実施形態の間の相違は、以下のとおりであるということに留意すべきである。
【０１４７】
図10A、図10B、及び図10Cに対応する実施形態においては、プロトコルスタックに1つの有効化インターフェイスのみを追加する。アプリケーション層は、一度、有効化インターフェイスを起動して、低遅延の配信能力を有効化するようにプロトコルスタックに指示し、それによって、そのプロトコルスタックは、そのプロトコルスタックの制御管理及びデータ転送を分離し、そして、TCP薄層の有効化インターフェイスを起動して、接続マッピングテーブルを確立するとともに、低遅延の配信能力を有効化するように、TCP薄層に指示する。
【０１４８】
図11A、図11B、及び図11Cに対応する実施形態においては、プロトコルスタックに2つの有効化インターフェイスを新たに追加する。アプリケーション層は、2つの有効化インターフェイスのうちの一方を起動して、アップストリーム/ダウンストリーム接続情報を取得し、2つのインターフェイスのうちの他方を起動して、分離を実行するようにプロトコルスタックに指示し、そして、TCP薄層の有効化インターフェイスを起動して、接続マッピングテーブルを確立するとともに、低遅延の配信能力を有効化するように、TCP薄層に指示する。
【０１４９】
この開示のこの実施形態によって提供される方法によれば、少なくとも2つの連続的に受信したアップストリームデータパケットについて、それらのパケットのシーケンス番号が連続的であるか否かにかかわらず、配信サーバは、各々のアップストリームデータパケットをコピーして、2つのパケットを取得し、データ転送は、一方のパケットに対して直ちに実行され、制御管理は、他方のパケットに対して実行される。この開示のこの実施形態においては、データ配信プロセス及び制御管理プロセスは、分離され、データパケットに対して制御管理を実行した後に、データパケットを配信する必要はなく、データパケットを転送するための経路を大幅に短縮する。加えて、パケット損失が発生するか否かにかかわらず、パケットを受信した後に、直ちにそのパケットを転送して、データ配信の遅延を大幅に短縮する。配信サーバに、データパケットの変換及び送信に専用のTCP薄層を追加し、TCP薄層の低遅延の配信能力を有効化し、プロトコルスタックのデータ転送機能を除外し、そして、プロトコルスタックの制御管理機能のみを保持し、それによって、プロトコルスタックの制御管理機能及びデータ転送機能を分離し、制御管理プロセスによってデータ転送プロセスに与えられる影響を減少させる。したがって、TCP薄層は、受信したデータパケットを直ちに変換して、送信することが可能であり、データパケットを転送するための経路を短縮するとともに、遅延を大幅に短縮することが可能である。
【０１５０】
図13A、図13B、及び図13Cは、この開示のある1つの実施形態にしたがったデータ配信方法のフローチャートである。この実施形態においては、主として、アップストリーム接続において発生するパケット損失が引き起こすとともにダウンストリーム接続において発生するパケット損失を処理するプロセスを含むダウンストリーム制御処理プロセスを提供する。図13A、図13B、及び図13Cを参照すると、この開示のこの実施形態によって提供される方法の手順は、以下のステップを含む。
【０１５１】
1301.  データパケットP1を順次的に受信した後に、ダウンストリームノード又はユーザ端末は、配信サーバにACKを送信する。
【０１５２】
このステップは、パケット損失が発生していないときに、ダウンストリームのACKを処理するプロセスのためのステップである。データパケットP1を順次的に受信した後に、ダウンストリームノード又はユーザ端末は、配信サーバにACKを送信して、データパケットP1を受信しているということを決定する。配信サーバは、プロトコルスタックに、受信したACKを送信する。プロトコルスタックは、バッファの中のデータパケットP1及びP1より前のシーケンス番号を有する他のデータパケットを削除し、そして、タイムアウトタイマ及び他の制御パラメータを更新する。このことは、この開示のこの実施形態においては特には限定されない。
【０１５３】
1302.  アップストリームノードが送信するデータパケットP2が失われる。
【０１５４】
1303.  アップストリームノードが送信するデータパケットP3乃至P5が到達し、TCP薄層は、データパケットP3乃至P5を変換し、そして、その次に、ダウンストリームノード又はユーザ端末に、変換によって得られるデータパケットを直ちに転送する。
【０１５５】
1304.  ダウンストリームノード又はユーザ端末は、データパケットP2を受信しない。
【０１５６】
このステップの場合には、アップストリームパケット損失が発生し、TCP薄層は、データパケットP2を受信していないため、ダウンストリームノード又はユーザ端末は、また、データパケットP2を受信しない。データパケットP3乃至P5を順次的に受信するときに、ダウンストリームノード又はユーザ端末は、データパケットP1に対して配信サーバへのACKの送信を3回繰り返してトリガして、データパケットP1を受信しているということを決定するにすぎず、データパケットP2が失われているということを示す。
【０１５７】
配信サーバは、ACKを3回繰り返し受信した後に、バッファは、現時点でデータパケットP2を格納していないため、配信サーバは、再送信を実装することが不可能であり、したがって、TCP薄層が、アップストリームノードが再送信するデータパケットP2を受信し、そして、ダウンストリームノード又はユーザ端末にデータパケットP2を転送するのを待つ。
【０１５８】
1305.  ACKを3回繰り返して受信した後に、アップストリームノードは、データパケットP2を再送信し、そして、データパケットP2をコピーして、2つのデータパケットを取得し、TCP薄層は、それらの2つのデータパケットのうちの一方のデータパケットをダウンストリームデータパケットに変換し、そして、その次に、ダウンストリームノード又はユーザ端末にそのダウンストリームデータパケットを直ちに転送する。
【０１５９】
配信サーバは、データパケットP1を受信した後に、データパケットP3乃至P5を順次的に受信するため、配信サーバは、アップストリームノードにデータパケットP1に対するACKを3回繰り返して送信して、データパケットP2を再送信するようにアップストリームノードをトリガする。
【０１６０】
1306.  データパケットP2を受信した後に、ダウンストリームノード又はユーザ端末は、不適切順序を排除し、そして、配信サーバにACKを送信して、データパケットP5を受信しているということを決定する。配信サーバがACKを受信した後に、プロトコルスタックは、格納されているデータパケットP5及びP5より前のシーケンス番号を有するデータパケットを削除し、そして、タイムアウトタイマ及び他の制御パラメータを更新する。
【０１６１】
最初に、ステップ1304については、ダウンストリームノード又はユーザ端末が送信するACKが後に到達する場合、具体的にいうと、配信サーバが、アップストリームノードが再送信するデータパケットP2を受信した後に、そのACKが到達する場合に、配信サーバは、データパケットP2の再送信を再びトリガしてもよいということに留意すべきである。TCP薄層は、一度、データパケットP2を転送しているので、ダウンストリームノード又はユーザ端末は、2つのデータパケットP2を受信し、ダウンストリームノード又はユーザ端末は、サービスに影響を与えない2番目のデータパケットP2を受信したときに、その2番目のデータパケットP2を自動的に破棄する。
【０１６２】
第2に、ダウンストリームパケット損失がアップストリームパケット損失によって引き起こされるときに、ノードが、アップストリームノードが再送信するデータパケットを受信する前に、ダウンストリームノード又はユーザ端末の繰り返されるACKを受信する場合には、そのノードは、再送信を実装することが不可能である場合があり、アップストリームノードが再送信するデータパケットが到達するのを待つ必要があるということに留意すべきである。TCP薄層は、データパケットを直接的に転送する。
【０１６３】
第3に、上記では、ダウンストリームパケット損失がアップストリームパケット損失によって引き起こされる場合を説明しているということに留意すべきである。ダウンストリーム接続においてパケット損失が発生する場合には、プロトコルスタックのサーバは、再送信に関与する。本明細書においては、具体的なフローチャートは、説明されてはいない。加えて、ダウンストリームパケット損失が深刻である場合、例えば、高いパケット損失率が、極めて劣悪であるリンク品質によって引き起こされるか、又は、パケット損失が、ダウンストリームノードの極めて低い処理性能のためにノードにおいて発生する場合には、そのことは、ダウンストリームリンク又はダウンストリームノードの性能が、現在送信されているデータ量の要件を満足することができないということを示している。この場合には、要求を再び開始し、(例えば、高い解像度から標準的な解像度にビデオを切り替えるといったように)データ量が少ないコンテンツを要求するように、ダウンストリームノードをトリガしてもよく、又は、新たな接続マッピングテーブルを確立し、そして、その新たに確立された接続マッピングテーブルに基づいて、遅いノードにサービスを提供するように、配信サーバをトリガしてもよい。
【０１６４】
他の実施形態においては、上記の実施形態において説明されている接続マッピングテーブルは、1つのアップストリーム接続が1つのダウンストリーム接続に対応している場合のみについての接続マッピングテーブルである。一方で、実際の適用シナリオにおいて、特に、ライブブロードキャストシナリオにおいては、複数のダウンストリームノードは、ノード(配信サーバ)への複数の接続を開始して、同じコンテンツを要求してもよい。この場合には、そのノードは、1つのみのアップストリーム接続を開始する必要がある。この場合には、1つのアップストリーム接続を複数のダウンストリーム接続にマッピングする。処理プロセスは、以下のようになる。
【０１６５】
最初に要求を受信するときに、ノードは、図10A、図10B、及び図10Cに対応する実施形態における処理に基づいて、接続マッピングテーブルの確立をトリガする。接続マッピングテーブルは、以下のようになる。
【表６】
2020537454.tif 000006
【０１６６】
N回目(N＞1)の要求を受信するときに、ノードは、アップストリーム要求をトリガせず、さらに、図10A、図10B、及び図10Cに対応する実施形態における処理に基づいて、接続マッピングテーブルの確立をトリガする。この場合には、接続マッピングテーブルは、以下のようになる。
【表７】
2020537454.tif 000007
【０１６７】
このように、アップストリームノードが送信するデータパケットを受信した後に、TCP薄層は、確立されている接続マッピングテーブルを照会する。発見されたターゲットマッピングエントリが、N個の"dst"オプションを含む場合に、TCP薄層は、N回にわたり受信データを変換し、各々の変換プロセスは、図10A、図10B、及び図10Cに対応する実施形態における変換プロセスと同様である。一方で、各々の変換は、"dst"オプション及び"seq_diff"オプションに基づいて実行され、送信は、変換が完了するたびごとに実行される。
【０１６８】
1つのアップストリーム接続がTCP薄層において複数のダウンストリーム接続にマッピングされる処理プロセスが追加されるので、TCP薄層は、ライブブロードキャストシナリオ等をより良好にサポートすることが可能である。ライブブロードキャスト結合の同期ずれの問題が存在する場合があり、複数のインターネットユーザが後から参加する場合があるので、アプリケーション層は、後から参加するインターネットユーザに、スクリーニングによって得られるとともにバッファリングされているデータを送信してもよい。後から参加するインターネットユーザが、前から参加しているインターネットユーザと同期した後に、アプリケーション層は、後から参加するインターネットユーザのダウンストリーム接続情報を上記の接続マッピングテーブルに追加する。その次に、TCP薄層は、上記で説明されている方式によってデータ転送を実行して、データ同期を実装する。代替的に、TCP薄層又はプロトコルスタックの中のライブブロードキャストオブジェクトのために、共通のバッファを設定してもよく、そのバッファは、ライブブロードキャストオブジェクトのバッファリングされるデータをバッファリングするのに使用される。インターネットユーザが後で参加するときに、TCP薄層又はプロトコルスタックは、後で参加するインターネットユーザに、スクリーニングによって得られるとともにバッファリングされているデータを送信してもよい。同様に、後から参加するインターネットユーザが、前から参加しているインターネットユーザと同期した後に、TCP薄層は、上記で説明されている方式によってデータ転送を実行して、データ同期を実装する。
【０１６９】
1つのアップストリーム接続が複数のダウンストリーム接続にマッピングされている場合には、ある1つの例としてライブブロードキャストシナリオを使用する。プロトコルスタックが、受信したアップストリームデータパケットをカプセル化して、TCPパケットとし、バッファの中にそのTCPパケットをバッファリングした後に、後から参加するインターネットユーザがそのライブブロードキャストを視聴するのを支援するために、プロトコルスタックは、たとえ、ダウンストリームノード又はインターネットユーザが返送するACKパケットを受信する場合であっても、そのバッファの中のバッファリングされているデータを削除しない。
【０１７０】
この開示のこの実施形態によって提供される方法によれば、少なくとも2つのアップストリームデータパケットを連続して受信した場合に、それらの少なくとも2つのパケットのシーケンス番号が連続しているか否かにかかわらず、配信サーバは、各々のアップストリームデータパケットをコピーして、2つのパケットを取得し、一方のパケットに対してデータ転送を直ちに実行し、他方のパケットに対して制御管理を実行する。この開示のこの実施形態においては、データ配信プロセス及び制御管理プロセスは、分離され、データパケットに対して制御管理を実行した後に、そのデータパケットを配信する必要がなく、データパケットを転送するための経路を大幅に短縮する。加えて、パケット損失が発生するか否かにかかわらず、パケットを受信した後に、そのパケットは、直ちに転送され、データ配信遅延を大幅に短縮する。
【０１７１】
配信サーバに、データパケットの変換及び送信に専用のTCP薄層を追加し、TCP薄層の低遅延の配信能力を有効化し、プロトコルスタックのデータ転送機能を除外し、そして、プロトコルスタックの制御管理機能のみを保持し、それによって、プロトコルスタックの制御管理機能及びデータ転送機能を分離し、制御管理プロセスによってデータ転送プロセスに与えられる影響を減少させる。したがって、TCP薄層は、受信したデータパケットを直ちに変換して、送信することが可能であり、データパケットを転送するための経路を短縮するとともに、遅延を大幅に短縮することが可能である。
【０１７２】
図14は、この開示のある1つの実施形態にしたがった配信サーバの概略的な構成図である。図14を参照すると、そのサーバは、第1の受信モジュール1401、データ転送モジュール1402、及び制御管理モジュール1403を含む。データ転送モジュール1402は、上記のTCP薄層のデータ転送機能を実装するように構成される。制御管理モジュール1403は、プロトコルスタックの制御管理機能を実装するように構成される。第1の受信モジュール1401は、バッファに対応してもよく、そのバッファは、図8A及び図8Bの中のアップストリームノードが送信するデータパケットを受信する。
【０１７３】
第1の受信モジュール1401は、アップストリームノードが送信する第1のアップストリームデータパケット及び第2のアップストリームデータパケットを連続的に受信し、第1のアップストリームデータパケットをコピーし、そして、第2のアップストリームデータパケットをコピーする、ように構成される。
【０１７４】
データ転送モジュール1402は、確立されている接続マッピングテーブルに基づいて、第1のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、ダウンストリームノード又はユーザ端末に、変換によって得られる第1のダウンストリームデータパケットを送信する、ように構成される。
【０１７５】
制御管理モジュール1403は、第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するように構成される。
【０１７６】
データ転送モジュール1402は、さらに、接続マッピングテーブルに基づいて、第2のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、ダウンストリームノード又はユーザ端末に、変換によって得られる第2のダウンストリームデータパケットを送信する、ように構成される。
【０１７７】
制御管理モジュール1403は、さらに、第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するように構成される。
【０１７８】
接続マッピングテーブルは、アップストリーム接続情報とダウンストリーム接続情報との間のマッピング関係を提供する。
【０１７９】
この開示のこの実施形態によって提供される配信サーバによれば、少なくとも2つのアップストリームデータパケットを連続して受信した場合に、それらの少なくとも2つのパケットのシーケンス番号が連続しているか否かにかかわらず、配信サーバは、各々のアップストリームデータパケットをコピーして、2つのパケットを取得し、一方のパケットに対してデータ転送を直ちに実行し、他方のパケットに対して制御管理を実行する。この開示のこの実施形態においては、データ配信プロセス及び制御管理プロセスは、分離され、データパケットに対して制御管理を実行した後に、そのデータパケットを配信する必要がなく、データパケットを転送するための経路を大幅に短縮する。加えて、パケット損失が発生するか否かにかかわらず、パケットを受信した後に、そのパケットは、直ちに転送され、データ配信遅延を大幅に短縮する。
【０１８０】
他の実施形態においては、第1のアップストリームデータパケットのシーケンス番号及び第2のアップストリームデータパケットのシーケンス番号は、非連続的であり、第1のアップストリームデータパケットは、第2のアップストリームデータパケットの前に受信される。
【０１８１】
他の実施形態においては、接続マッピングテーブルは、複数のマッピングエントリを含み、各々のマッピングエントリは、アップストリーム接続のNタプル情報、アップストリーム接続のNタプル情報と一致するダウンストリーム接続のNタプル情報、及び、アップストリーム接続の初期シーケンス番号とダウンストリーム接続の初期シーケンス番号との間の差を提供する。
【０１８２】
データ転送モジュール1402は、さらに、第1のパケットの中のNタプル情報を取得し、第1のパケットの中のNタプル情報に基づいて、接続マッピングテーブルを照会して、第1のパケットの中のNタプル情報と一致するターゲットマッピングエントリを取得し、第1のパケットの中のNタプル情報を、ターゲットマッピングエントリに含まれるターゲットダウンストリーム接続のNタプル情報と置き換え、そして、ターゲットマッピングエントリに含まれるターゲット初期シーケンス番号と第1のパケットの中で搬送されるシーケンス番号との間の差に基づいて、ターゲットダウンストリーム接続のシーケンス番号を算出する、ように構成される。
【０１８３】
他の実施形態においては、制御管理モジュール1403は、さらに、第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して不適切順序検査を実行し、そして、アップストリームノードに第1のアップストリームデータパケットに対する肯定応答ACKパケットを送信する、ように構成される。
【０１８４】
他の実施形態においては、制御管理モジュール1403は、さらに、第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットを第3のダウンストリームデータパケットに変換し、バッファの中に第3のダウンストリームデータパケットを格納し、タイムアウトタイマを設定し、そして、タイムアウトタイマが終了するときに、ダウンストリームノード又はユーザ端末に第3のダウンストリームデータパケットを送信する、ように構成される。
【０１８５】
他の実施形態においては、アップストリーム接続情報の1つの部分は、接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、制御管理モジュール1403は、さらに、タイムアウトタイマが終了する前に、ダウンストリームノード又はユーザ端末が返送するACKパケットを受信するときに、バッファの中に格納されている第3のダウンストリームデータパケットを削除するように構成される。
【０１８６】
他の実施形態においては、第1の受信モジュール1401は、さらに、アップストリームノードが再送信する第3のアップストリームデータパケットを受信し、そして、第3のアップストリームデータパケットをコピーする、ように構成され、第3のアップストリームデータパケットのシーケンス番号及び第1のアップストリームデータパケットのシーケンス番号は、連続的である。
【０１８７】
データ転送モジュール1402は、さらに、接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、ダウンストリームノード又はユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信し、そして、第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する、ように構成される。
【０１８８】
他の実施形態においては、制御管理モジュール1403は、さらに、第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して不適切順序検査を実行し、そして、アップストリームノードに第1のアップストリームデータパケットに対するACKパケットを送信する、ように構成される。
【０１８９】
他の実施形態においては、制御管理モジュール1403は、さらに、データ転送モジュール1402が、ダウンストリームノード又はユーザ端末に第4のダウンストリームデータパケットを送信した後に、第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットを第5のダウンストリームデータパケットに変換し、バッファの中に第5のダウンストリームデータパケットを格納し、タイムアウトタイマを設定し、そして、タイムアウトタイマが終了するときに、ダウンストリームノード又はユーザ端末に第5のダウンストリームデータパケットを送信する、ように構成される。
【０１９０】
他の実施形態においては、アップストリーム接続情報の1つの部分は、接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、制御管理モジュール1403は、さらに、タイムアウトタイマが終了する前に、ダウンストリームノード又はユーザ端末が返送するACKパケットを受信するときに、バッファの中に格納されている第5のダウンストリームデータパケットを削除するように構成される。
【０１９１】
他の実施形態においては、制御管理モジュール1403は、さらに、第1の受信モジュール1401が、アップストリームノードが再送信する第3のアップストリームデータパケットを受信する前に、第2の受信モジュールが、ダウンストリームノード又はユーザ端末が送信するACKをM回繰り返して受信する場合に、アップストリームノードが第3のアップストリームデータパケットを再送信するのを待つように構成され、M回繰り返されるACKは、第1のアップストリームデータパケットに対するACKである。
【０１９２】
データ転送モジュール1402は、さらに、再送される第3のアップストリームデータパケットを受信した後に、接続マッピングテーブルに基づいて、第3のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、ダウンストリームノード又はユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信するステップを実行する、ように構成される。
【０１９３】
他の実施形態においては、制御管理モジュール1403は、さらに、第1の受信モジュール1401が、アップストリームノードが再送信する第3のアップストリームデータパケットを受信した後に、第2の受信モジュールが、ダウンストリームノード又はユーザ端末が送信するACKをM回繰り返して受信する場合に、ダウンストリームノード又はユーザ端末に、バッファの中に格納されているとともに、第3のアップストリームデータパケットと一致する第6のダウンストリームデータパケットを送信するように構成される。
【０１９４】
上記の複数の選択的な方式及びこの開示の複数の実施形態のうちのいずれか1つを組み合わせて、この開示の複数の選択的な実施形態を構成してもよい。
【０１９５】
当業者は、ハードウェア又は関連するハードウェアに命令するプログラムによって、それらの複数の実施形態の複数のステップのすべて又は一部を実装してもよいということを理解することが可能である。コンピュータ読み取り可能な記憶媒体の中にプログラムを格納してもよい。記憶媒体は、読み出し専用メモリ、磁気ディスク、又は光ディスクを含んでもよい。
【０１９６】
上記の説明は、この開示の複数の代替的な実施形態であるにすぎず、この開示を制限する意図を有してはいない。この開示の趣旨及び原理から離れることなく行われるいずれかの修正、等価な置換、又は改良は、この開示の保護の範囲に属するものとする。
【０１９７】
本発明のある1つの例にしたがって、この出願は、さらに、以下の実施形態を提供する。
実施形態1: データ配信方法であって、当該方法は、配信サーバに適用され、当該方法は、
アップストリームノードが送信する第1のアップストリームデータパケット及び第2のアップストリームデータパケットを連続的に受信するステップと、
前記第1のアップストリームデータパケットをコピーし、確立されている接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、ダウンストリームノード又はユーザ端末に、変換によって得られる第1のダウンストリームデータパケットを送信し、そして、前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、
前記第2のアップストリームデータパケットをコピーし、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第2のダウンストリームデータパケットを送信し、そして、前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、を含み、
前記接続マッピングテーブルは、アップストリーム接続情報とダウンストリーム接続情報との間のマッピング関係を提供する、
方法。
実施形態2: 前記第1のアップストリームデータパケットのシーケンス番号及び前記第2のアップストリームデータパケットのシーケンス番号は、非連続的であり、前記第1のアップストリームデータパケットは、前記第2のアップストリームデータパケットの前に受信される、実施形態1に記載の方法。
実施形態3: 前記接続マッピングテーブルは、複数のマッピングエントリを含み、各々のマッピングエントリは、アップストリーム接続のNタプル情報、前記アップストリーム接続の前記Nタプル情報と一致するダウンストリーム接続のNタプル情報、及び、前記アップストリーム接続の初期シーケンス番号と前記ダウンストリーム接続の初期シーケンス番号との間の差を提供し、
コピーによって得られる2つのパケットのうちの第1のパケットを変換する前記ステップは、
前記第1のパケットの中のNタプル情報を取得するステップと、
前記第1のパケットの中の前記Nタプル情報に基づいて、前記接続マッピングテーブルを照会して、前記第1のパケットの中の前記Nタプル情報と一致するターゲットマッピングエントリを取得するステップと、
前記第1のパケットの中の前記Nタプル情報を、前記ターゲットマッピングエントリに含まれるターゲットダウンストリーム接続のNタプル情報と置き換え、そして、前記ターゲットマッピングエントリに含まれるターゲット初期シーケンス番号と前記第1のパケットの中で搬送されるシーケンス番号との間の差に基づいて、前記ターゲットダウンストリーム接続のシーケンス番号を算出するステップと、を含む、実施形態1に記載の方法。
実施形態4: 前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する前記ステップは、
前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対する肯定応答ACKパケットを送信するステップを含む、実施形態1又は2に記載の方法。
実施形態5: 当該方法は、
前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第3のダウンストリームデータパケットに変換するステップと、
バッファの中に前記第3のダウンストリームデータパケットを格納し、そして、タイムアウトタイマを設定するステップと、
前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第3のダウンストリームデータパケットを送信するステップと、をさらに含む、実施形態4に記載の方法。
実施形態6: アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、当該方法は、
前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第3のダウンストリームデータパケットを削除するステップをさらに含む、実施形態5に記載の方法。
実施形態7: 当該方法は、
前記アップストリームノードが再送信する第3のアップストリームデータパケットを受信するステップであって、前記第3のアップストリームデータパケットのシーケンス番号及び前記第1のアップストリームデータパケットの前記シーケンス番号は、連続的である、ステップと、
前記第3のアップストリームデータパケットをコピーし、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信し、そして、前記第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するステップと、をさらに含む、実施形態1又は2に記載の方法。
実施形態8: 前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する前記ステップは、
前記第2のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対するACKパケットを送信するステップを含む、実施形態2に記載の方法。
実施形態9: 当該方法は、
第4のダウンストリームデータパケットが前記ダウンストリームノード又は前記ユーザ端末に送信された後に、前記第2のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第5のダウンストリームデータパケットに変換するステップと、
バッファの中に前記第5のダウンストリームデータパケットを格納し、そして、タイムアウトタイマを設定するステップと、
前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第5のダウンストリームデータパケットを送信するステップと、をさらに含む、実施形態8に記載の方法。
実施形態10: アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、当該方法は、
前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第5のダウンストリームデータパケットを削除するステップをさらに含む、実施形態9に記載の方法。
実施形態11: 当該方法は、
前記アップストリームノードが再送信する前記第3のアップストリームデータパケットを受信する前に、前記ダウンストリームノード又は前記ユーザ端末が送信するACKをM回繰り返して受信する場合に、前記アップストリームノードが前記第3のアップストリームデータパケットを再送信するのを待つステップであって、M回繰り返される前記ACKは、前記第1のアップストリームデータパケットに対するACKである、ステップと、
前記再送される第3のアップストリームデータパケットを受信した後に、前記第3のアップストリームデータパケットをコピーし、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、そして、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信するステップを実行するステップと、をさらに含む、実施形態7に記載の方法。
実施形態12: 当該方法は、
前記アップストリームノードが再送信する前記第3のアップストリームデータパケットを受信した後に、前記ダウンストリームノード又は前記ユーザ端末が送信するACKをM回繰り返して受信する場合に、前記ダウンストリームノード又は前記ユーザ端末に、バッファの中に格納されているとともに、前記第3のアップストリームデータパケットと一致する第6のダウンストリームデータパケットを送信するステップをさらに含む、実施形態7に記載の方法。
実施形態13: 配信サーバであって、当該サーバは、
アップストリームノードが送信する第1のアップストリームデータパケット及び第2のアップストリームデータパケットを連続的に受信し、前記第1のアップストリームデータパケットをコピーし、そして、前記第2のアップストリームデータパケットをコピーする、ように構成される第1の受信モジュールと、
確立されている接続マッピングテーブルに基づいて、前記第1のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、ダウンストリームノード又はユーザ端末に、変換によって得られる第1のダウンストリームデータパケットを送信する、ように構成されるデータ転送モジュールと、
前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するように構成される制御管理モジュールと、を含み、
前記データ転送モジュールは、さらに、前記接続マッピングテーブルに基づいて、前記第2のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第2のダウンストリームデータパケットを送信する、ように構成され、
前記制御管理モジュールは、さらに、前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するように構成され、
前記接続マッピングテーブルは、アップストリーム接続情報とダウンストリーム接続情報との間のマッピング関係を提供する、
サーバ。
実施形態14: 前記第1のアップストリームデータパケットのシーケンス番号及び前記第2のアップストリームデータパケットのシーケンス番号は、非連続的であり、前記第1のアップストリームデータパケットは、前記第2のアップストリームデータパケットの前に受信される、実施形態13に記載のサーバ。
実施形態15: 前記接続マッピングテーブルは、複数のマッピングエントリを含み、各々のマッピングエントリは、アップストリーム接続のNタプル情報、前記アップストリーム接続の前記Nタプル情報と一致するダウンストリーム接続のNタプル情報、及び、前記アップストリーム接続の初期シーケンス番号と前記ダウンストリーム接続の初期シーケンス番号との間の差を提供し、
前記データ転送モジュールは、さらに、前記第1のパケットの中のNタプル情報を取得し、前記第1のパケットの中の前記Nタプル情報に基づいて、前記接続マッピングテーブルを照会して、前記第1のパケットの中の前記Nタプル情報と一致するターゲットマッピングエントリを取得し、前記第1のパケットの中の前記Nタプル情報を、前記ターゲットマッピングエントリに含まれるターゲットダウンストリーム接続のNタプル情報と置き換え、そして、前記ターゲットマッピングエントリに含まれるターゲット初期シーケンス番号と前記第1のパケットの中で搬送されるシーケンス番号との間の差に基づいて、前記ターゲットダウンストリーム接続のシーケンス番号を算出する、ように構成される、実施形態13に記載のサーバ。
実施形態16: 前記制御管理モジュールは、さらに、前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対する肯定応答ACKパケットを送信する、ように構成される、実施形態3又は14に記載のサーバ。
実施形態17: 前記制御管理モジュールは、さらに、前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第3のダウンストリームデータパケットに変換し、バッファの中に前記第3のダウンストリームデータパケットを格納し、タイムアウトタイマを設定し、そして、前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第3のダウンストリームデータパケットを送信する、ように構成される、実施形態16に記載のサーバ。
実施形態18: アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、
前記制御管理モジュールは、さらに、前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第3のダウンストリームデータパケットを削除するように構成される、実施形態17に記載のサーバ。
実施形態19: 前記第1の受信モジュールは、さらに、前記アップストリームノードが再送信する第3のアップストリームデータパケットを受信し、そして、前記第3のアップストリームデータパケットをコピーする、ように構成され、前記第3のアップストリームデータパケットのシーケンス番号及び前記第1のアップストリームデータパケットの前記シーケンス番号は、連続的であり、
前記データ転送モジュールは、さらに、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信し、そして、前記第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する、ように構成される、実施形態13又は14に記載のサーバ。
実施形態20: 前記制御管理モジュールは、さらに、前記第2のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対するACKパケットを送信する、ように構成される、実施形態14に記載のサーバ。
実施形態21: 前記制御管理モジュールは、さらに、前記データ転送モジュールが、前記ダウンストリームノード又は前記ユーザ端末に第4のダウンストリームデータパケットを送信した後に、前記第2のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第5のダウンストリームデータパケットに変換し、バッファの中に前記第5のダウンストリームデータパケットを格納し、タイムアウトタイマを設定し、そして、前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第5のダウンストリームデータパケットを送信する、ように構成される、実施形態20に記載のサーバ。
実施形態22: アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、
前記制御管理モジュールは、さらに、前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第5のダウンストリームデータパケットを削除するように構成される、実施形態21に記載のサーバ。
実施形態23: 前記制御管理モジュールは、さらに、前記第1の受信モジュールが、前記アップストリームノードが再送信する前記第3のアップストリームデータパケットを受信する前に、第2の受信モジュールが、前記ダウンストリームノード又は前記ユーザ端末が送信するACKをM回繰り返して受信する場合に、前記アップストリームノードが前記第3のアップストリームデータパケットを再送信するのを待つように構成され、M回繰り返される前記ACKは、前記第1のアップストリームデータパケットに対するACKであり、
前記データ転送モジュールは、さらに、前記再送される第3のアップストリームデータパケットを受信した後に、前記接続マッピングテーブルに基づいて、前記第3のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信するステップを実行する、ように構成される、実施形態19に記載のサーバ。
実施形態24: 前記制御管理モジュールは、さらに、前記第1の受信モジュールが、前記アップストリームノードが再送信する前記第3のアップストリームデータパケットを受信した後に、第2の受信モジュールが、前記ダウンストリームノード又は前記ユーザ端末が送信するACKをM回繰り返して受信する場合に、前記ダウンストリームノード又は前記ユーザ端末に、バッファの中に格納されているとともに、前記第3のアップストリームデータパケットと一致する第6のダウンストリームデータパケットを送信するように構成される、実施形態19に記載のサーバ。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１０Ｂ
【補正方法】変更
【補正の内容】
【図１０Ｂ】
2020537454.tif 000008