JP2020537454A5 - - Google Patents

Download PDF

Info

Publication number
JP2020537454A5
JP2020537454A5 JP2020521550A JP2020521550A JP2020537454A5 JP 2020537454 A5 JP2020537454 A5 JP 2020537454A5 JP 2020521550 A JP2020521550 A JP 2020521550A JP 2020521550 A JP2020521550 A JP 2020521550A JP 2020537454 A5 JP2020537454 A5 JP 2020537454A5
Authority
JP
Japan
Prior art keywords
data packet
packet
upstream
downstream
connection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020521550A
Other languages
English (en)
Other versions
JP2020537454A (ja
JP6994110B2 (ja
Filing date
Publication date
Priority claimed from CN201711189288.1A external-priority patent/CN109842567B/zh
Application filed filed Critical
Publication of JP2020537454A publication Critical patent/JP2020537454A/ja
Publication of JP2020537454A5 publication Critical patent/JP2020537454A5/ja
Application granted granted Critical
Publication of JP6994110B2 publication Critical patent/JP6994110B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

データ配信方法及び配信サーバ
[関連出願への相互参照]
この出願は、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に示されている形式である。
Figure 2020537454
Nタプル情報は、4タプル情報であると仮定する。アップストリーム接続の4タプル情報は、(IPup, Portup, IPc, 及びPortc)であり、アップストリーム接続の初期シーケンス番号は、"Sequpinit"である。ダウンストリーム接続の4タプル情報は、(IPs, Ports, IPdown, 及びPortdown)であり、ダウンストリーム接続の初期シーケンス番号は、"Seqdowninit"である。
"IPup"及び"Portup"は、アップストリームノードの検知アドレス及びポートを表し、"IPc"及び"Portc"は、配信サーバがアップストリーム接続を開始するときに使用されるアドレス及びポートを表し、"IPs"及び"Ports"は、配信サーバの検知アドレス及びポートを表し、"IPdown"及び"Portdown"は、ダウンストリームノードがダウンストリーム接続を開始するときに使用されるアドレス及びポートを表す。データがアップストリームからダウンストリームへと送信されるときに、対応する接続マッピングテーブルは、表1の代わりに表2であってもよい。
Figure 2020537454
表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)であり、見つかったターゲットマッピングエントリは、以下の表のようになると仮定する。
Figure 2020537454
変換によって得られるダウンストリームデータパケットの中の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つの接続マッピングテーブルの実装方法は、同じである。この開示のこの実施形態においては、説明のために、データがアップストリームからダウンストリームに送信される例のみを使用する。このシナリオにおいては、接続マッピングテーブルは、例えば、以下の形式となる。
Figure 2020537454
Nタプル情報は4タプル情報であると仮定する。アップストリーム接続の4タプル情報は、(IPup, Portup, IPc, 及びPortc)であり、アップストリーム接続の初期シーケンス番号は、"Sequpinit"である。ダウンストリーム接続の4タプル情報は、(IPs, Ports, IPdown, 及びPortdown)であり、ダウンストリーム接続の初期シーケンス番号は、"Seqdowninit"である。
"IPup"及び"Portup"は、アップストリームノードの検知アドレス及びポートを表し、"IPc"及び"Portc"は、配信サーバがアップストリーム接続を開始するときに使用されるアドレス及びポートを表し、"IPs"及び"Ports"は、配信サーバの検知アドレス及びポートを表し、"IPdown"及び"Portdown"は、ダウンストリームノードがダウンストリーム接続を開始するときに使用されるアドレス及びポートを表す。データがアップストリームからダウンストリームに送信されるときに、対応する接続マッピングテーブルは、以下のようになる。
Figure 2020537454
上記の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に対応する実施形態における処理に基づいて、接続マッピングテーブルの確立をトリガする。接続マッピングテーブルは、以下のようになる。
Figure 2020537454
N回目(N>1)の要求を受信するときに、ノードは、アップストリーム要求をトリガせず、さらに、図10A、図10B、及び図10Cに対応する実施形態における処理に基づいて、接続マッピングテーブルの確立をトリガする。この場合には、接続マッピングテーブルは、以下のようになる。
Figure 2020537454
このように、アップストリームノードが送信するデータパケットを受信した後に、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に記載のサーバ。

Claims (15)

  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. 配信サーバであって、当該サーバは、
    アップストリームノードが送信する第1のアップストリームデータパケット及び第2のアップストリームデータパケットを連続的に受信し、前記第1のアップストリームデータパケットをコピーし、そして、前記第2のアップストリームデータパケットをコピーする、ように構成される第1の受信モジュールと、
    確立されている接続マッピングテーブルに基づいて、前記第1のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、ダウンストリームノード又はユーザ端末に、変換によって得られる第1のダウンストリームデータパケットを送信する、ように構成されるデータ転送モジュールと、
    前記第1のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するように構成される制御管理モジュールと、を含み、
    前記データ転送モジュールは、さらに、前記接続マッピングテーブルに基づいて、前記第2のアップストリームデータパケットをコピーすることによって得られる2つのパケットのうちの第1のパケットを変換し、そして、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第2のダウンストリームデータパケットを送信する、ように構成され、
    前記制御管理モジュールは、さらに、前記第2のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行するように構成され、
    前記接続マッピングテーブルは、アップストリーム接続情報とダウンストリーム接続情報との間のマッピング関係を提供する、
    サーバ。
  10. 前記第1のアップストリームデータパケットのシーケンス番号及び前記第2のアップストリームデータパケットのシーケンス番号は、非連続的であり、前記第1のアップストリームデータパケットは、前記第2のアップストリームデータパケットの前に受信される、請求項9に記載のサーバ。
  11. 前記接続マッピングテーブルは、複数のマッピングエントリを含み、各々のマッピングエントリは、アップストリーム接続のNタプル情報、前記アップストリーム接続の前記Nタプル情報と一致するダウンストリーム接続のNタプル情報、及び、前記アップストリーム接続の初期シーケンス番号と前記ダウンストリーム接続の初期シーケンス番号との間の差を提供し、
    前記データ転送モジュールは、さらに、前記第1のパケットの中のNタプル情報を取得し、前記第1のパケットの中の前記Nタプル情報に基づいて、前記接続マッピングテーブルを照会して、前記第1のパケットの中の前記Nタプル情報と一致するターゲットマッピングエントリを取得し、前記第1のパケットの中の前記Nタプル情報を、前記ターゲットマッピングエントリに含まれるターゲットダウンストリーム接続のNタプル情報と置き換え、そして、前記ターゲットマッピングエントリに含まれるターゲット初期シーケンス番号と前記第1のパケットの中で搬送されるシーケンス番号との間の差に基づいて、前記ターゲットダウンストリーム接続のシーケンス番号を算出する、ように構成される、請求項9に記載のサーバ。
  12. 前記制御管理モジュールは、さらに、前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットに対して不適切順序検査を実行し、そして、前記アップストリームノードに前記第1のアップストリームデータパケットに対する肯定応答ACKパケットを送信する、ように構成される、請求項9又は10に記載のサーバ。
  13. 前記制御管理モジュールは、さらに、前記第1のアップストリームデータパケットをコピーすることによって得られる前記第2のパケットを第3のダウンストリームデータパケットに変換し、バッファの中に前記第3のダウンストリームデータパケットを格納し、タイムアウトタイマを設定し、そして、前記タイムアウトタイマが終了するときに、前記ダウンストリームノード又は前記ユーザ端末に前記第3のダウンストリームデータパケットを送信する、ように構成される、請求項12に記載のサーバ。
  14. アップストリーム接続情報の1つの部分は、前記接続マッピングテーブルの中のダウンストリーム接続情報の1つの部分に対応し、
    前記制御管理モジュールは、さらに、前記タイムアウトタイマが終了する前に、前記ダウンストリームノード又は前記ユーザ端末が返送する前記ACKパケットを受信するときに、前記バッファの中に格納されている前記第3のダウンストリームデータパケットを削除するように構成される、請求項13に記載のサーバ。
  15. 前記第1の受信モジュールは、さらに、前記アップストリームノードが再送信する第3のアップストリームデータパケットを受信し、そして、前記第3のアップストリームデータパケットをコピーする、ように構成され、前記第3のアップストリームデータパケットのシーケンス番号及び前記第1のアップストリームデータパケットの前記シーケンス番号は、連続的であり、
    前記データ転送モジュールは、さらに、前記接続マッピングテーブルに基づいて、コピーによって得られる2つのパケットのうちの第1のパケットを変換し、前記ダウンストリームノード又は前記ユーザ端末に、変換によって得られる第4のダウンストリームデータパケットを送信し、そして、前記第3のアップストリームデータパケットをコピーすることによって得られる第2のパケットに対して制御管理を実行する、ように構成される、請求項9又は10に記載のサーバ。
JP2020521550A 2017-11-24 2018-10-30 データ配信方法及び配信サーバ Active JP6994110B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201711189288.1 2017-11-24
CN201711189288.1A CN109842567B (zh) 2017-11-24 2017-11-24 数据分发方法以及分发服务器
PCT/CN2018/112595 WO2019100912A1 (zh) 2017-11-24 2018-10-30 数据分发方法以及分发服务器

Publications (3)

Publication Number Publication Date
JP2020537454A JP2020537454A (ja) 2020-12-17
JP2020537454A5 true JP2020537454A5 (ja) 2021-02-04
JP6994110B2 JP6994110B2 (ja) 2022-01-14

Family

ID=66631806

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020521550A Active JP6994110B2 (ja) 2017-11-24 2018-10-30 データ配信方法及び配信サーバ

Country Status (6)

Country Link
US (1) US11134001B2 (ja)
EP (1) EP3672138A4 (ja)
JP (1) JP6994110B2 (ja)
KR (1) KR102324919B1 (ja)
CN (1) CN109842567B (ja)
WO (1) WO2019100912A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111614968B (zh) * 2020-05-11 2021-12-17 厦门潭宏信息科技有限公司 一种直播方法、设备及存储介质
CN114339268B (zh) * 2020-10-10 2023-08-29 腾讯科技(深圳)有限公司 一种直播数据处理方法、装置和计算机可读存储介质
CN113472784A (zh) * 2021-06-30 2021-10-01 奥特酷智能科技(南京)有限公司 一种基于数据分发服务的分离式dds协议栈架构

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7110404B1 (en) * 2001-09-04 2006-09-19 Cisco Technology, Inc. System and method for sending a packet to multiple destinations using a pipeline network processor
US7512084B2 (en) 2001-11-28 2009-03-31 Nokia Corporation Event driven filter monitoring for IP multicast services
CN100553229C (zh) * 2007-01-24 2009-10-21 中国科学院计算机网络信息中心 一种半覆盖自组织的动态组播路由方法
CN101132269B (zh) * 2007-07-26 2010-06-23 中兴通讯股份有限公司 数据同步方法及使用该方法的iptv内容分发网络系统
JP2009055418A (ja) 2007-08-28 2009-03-12 Nec Corp 通信システム、中継装置、端末、及び中継処理方法並びにそのプログラム
CN101291295B (zh) * 2008-06-10 2010-11-24 北京科技大学 一种基于间断连通自组织网络延时有限的概率路由方法
JP2013520137A (ja) * 2010-02-16 2013-05-30 ホアウェイ・テクノロジーズ・カンパニー・リミテッド パケットネットワークにおけるクロック分配のためのレート変動型マルチキャスト伝送
EP2597869A4 (en) 2010-07-20 2013-12-18 Sharp Kk CONTENT DISTRIBUTION DEVICE, CONTENT PLAYER, CONTENT DISTRIBUTION SYSTEM, METHOD FOR CONTROLLING THE CONTENT DISTRIBUTION APPROACH, CONTROL PROGRAM AND RECORDING MEDIUM
WO2012132283A1 (ja) 2011-03-28 2012-10-04 日本電気株式会社 通信装置およびその通信制御方法
US8913887B2 (en) * 2012-05-30 2014-12-16 Broadcom Corporation Passive optical fiber plant analysis
US8782285B1 (en) * 2013-12-06 2014-07-15 Limelight Networks, Inc. Lazy transcoding and re-transcoding of media objects in an online video platform
JP6236933B2 (ja) 2013-07-02 2017-11-29 富士通株式会社 中継装置
WO2015048999A1 (en) 2013-10-03 2015-04-09 Teclo Networks Ag Method and proxy node for source to destination packet transfer
JP6062388B2 (ja) * 2014-03-31 2017-01-18 株式会社日立製作所 通信システム、通信制御方法および制御装置
CN103997500A (zh) * 2014-06-04 2014-08-20 西北工业大学 一种轻量级实时tcp/ip协议栈的实现方法
US9397939B2 (en) * 2014-06-24 2016-07-19 International Business Machines Corporation Hybrid approach for performance enhancing proxies
US10135956B2 (en) * 2014-11-20 2018-11-20 Akamai Technologies, Inc. Hardware-based packet forwarding for the transport layer

Similar Documents

Publication Publication Date Title
US7707301B2 (en) Method and apparatus for equalizing load of streaming media server
US8429341B2 (en) Method and system for responding to file system requests
JP6994110B2 (ja) データ配信方法及び配信サーバ
RU2645280C1 (ru) Способ многоадресной рассылки, аппарат и система для программно-конфигурируемой сети
JP2020537454A5 (ja)
WO2018166415A1 (zh) 云存储系统、媒体数据存储方法及系统
WO2016000138A1 (zh) 一种数据传输方法、终端和服务器
EP2748730A1 (en) Multicast database replication
US20150373135A1 (en) Wide area network optimization
JP2010504688A (ja) ネットワーク・プロトコルスタックのハンドオフおよび最適化を実装するための方法およびモジュール
US6515994B1 (en) Method of communication in a communications network and apparatus therefor
US20200007653A1 (en) Multi-path management
KR100678956B1 (ko) 네트워크 상에서 컨텐츠 정보를 요청 및 제공하는 장치 및그 방법
JP2013513996A (ja) マルチキャスト・ネットワークにおけるsctpのためのプロトコル・ブースタ
CN102752188A (zh) 一种传输控制协议连接迁移方法及系统
WO2022111401A1 (zh) 一种连麦系统、方法、装置、设备及存储介质
US10250499B2 (en) Multicast transmission using programmable network
CN112217735A (zh) 信息同步方法与负载均衡系统
KR100597405B1 (ko) 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법
US11882340B2 (en) Content distribution system, unicast multicast converter, content distribution method and content distribution program
JP2005011267A (ja) リアルタイムデータ通信システム、リアルタイムデータ通信装置およびリアルタイムデータ通信方法
WO2022100546A1 (zh) 数据传输方法和通信装置
WO2024045857A1 (zh) 数据传输的方法和装置
CN107948165A (zh) 一种基于私有协议的安全送播系统及方法
Hayamizu et al. CeforeSim: Cefore Compliant NS-3-Based Network Simulator