(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-05
(45)【発行日】2024-04-15
(54)【発明の名称】ストリーミングデータアクセスのためのシステム、方法、及びコンピュータ可読媒体
(51)【国際特許分類】
H04L 65/60 20220101AFI20240408BHJP
【FI】
H04L65/60
(21)【出願番号】P 2022528295
(86)(22)【出願日】2021-12-30
(86)【国際出願番号】 US2021073184
(87)【国際公開番号】W WO2023129183
(87)【国際公開日】2023-07-06
【審査請求日】2022-05-17
【早期審査対象出願】
(73)【特許権者】
【識別番号】517287224
【氏名又は名称】17LIVE株式会社
(74)【代理人】
【識別番号】100126572
【氏名又は名称】村越 智史
(72)【発明者】
【氏名】チャン,ユーチュアン
(72)【発明者】
【氏名】リ,クン ツェ
(72)【発明者】
【氏名】リウ,チュ-ウェイ
【審査官】大石 博見
(56)【参考文献】
【文献】特表2016-500205(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 65/60
(57)【特許請求の範囲】
【請求項1】
ストリーミングデータアクセスのための方法であって、
クラスタの外部にあるユーザ端末が、ストリーミングデータに対するTCPリクエストを
ロードバランサに送信する工程と、
前記ロードバランサが、クラスタ内において互いに異なるアドレスが割り当てられている複数の領域のうちの一つの選択領域に前記TCPリクエストを導く工程と、
前記ユーザ端末が、前記選択領域から前記選択領域のアドレスを指定する識別キーを含むTCPレスポンスを取得する工程と、
前記ユーザ端末が、前記識別キーにより
、前記選択領域に対して、前記ストリーミングデータに対するUDPリクエストを送信する工程と、
前記ストリーミングデータを取得する工程と、
を含
む、ストリーミングデータアクセスのための方法。
【請求項2】
前記UDPリクエストは、前記ユーザ端末から前記ロードバランサを介さずに前記選択領域に送信される、請求項1に記載のストリーミングデータアクセスのための方法。
【請求項3】
前記選択領域は、前記TCPリクエストを受信した後、前記UDPリクエストを受信する前に、オリジンサーバから前記ストリーミングデータを取得する、
請求項
1または2に記載のストリーミングデータアクセスのための方法。
【請求項4】
前記UDPリクエストが
、前記
選択領域に直接送信されることを特徴とする、請求項
2に記載のストリーミングデータアクセスのための方法。
【請求項5】
前記クラスタは、Kubernetesクラスタであり、
前記
複数の領域
の各々が、Kubernetesクラスタ内のポッドに対応することを特徴とする、請求項1に記載のストリーミングデータアクセスのための方法。
【請求項6】
前記領域に対して前記識別キーを作成する工程をさらに含
む、請求項
1に記載のストリーミングデータアクセスのための方法。
【請求項7】
前記識別キーが、IP情報、ノード情報、ポッド情報またはポート情報を含むことを特徴とする、請求項1に記載のストリーミングデータアクセスのための方法。
【請求項8】
ストリーミングデータアクセスのためのシステムであって、1つまたは複数のプロセッサを備え、前記1つまたは複数のプロセッサが、機械可読命令を実行して、
クラスタの外部にあるユーザ端末から、ストリーミングデータに対するTCPリクエストを
ロードバランサに送信し、
前記ロードバランサにより、クラスタ内において互いに異なるアドレスが割り当てられている複数の領域のうちの一つの選択領域に前記TCPリクエストを導き、
前記ユーザ端末により、前記選択領域から前記選択領域のアドレスを指定する識別キーを含むTCPレスポンスを取得
し、
前記ユーザ端末から、前記識別キーにより
、前記選択アドレス指定可能な領域に対して、前記ストリーミングデータに対するUDPリクエストを送信し、
前記ストリーミングデータを取得する動作を実行するための機械可読命令を実行
する、
ストリーミングデータアクセスのためのシステム。
【請求項9】
ストリーミングデータアクセスのためのプログラムを含む非一過性のコンピュータ可読媒体であって、そのうち、前記プログラムが、1つまたは複数のコンピュータに、
クラスタの外部にあるユーザ端末から、ストリーミングデータに対するTCPリクエストを送信し、
前記ロードバランサにより、クラスタ内において互いに異なるアドレスが割り当てられている複数の領域のうちの一つの選択領域に前記TCPリクエストを導き、
前記ユーザ端末により、前記選択領域から前記選択領域のアドレスを指定する識別キーを含むTCPレスポンスを取得
し、
前記ユーザ端末から、前記識別キーにより
、前記選択アドレス指定可能な領域に対して、前記ストリーミングデータに対するUDPリクエストを送信し、
前記ストリーミングデータを取得する動作を実行させ
る、
コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、インターネット上でのデータアクセスに関し、特にインターネット上でのストリーミングデータアクセスに関するものである。
【背景技術】
【0002】
ライブストリーミングのようなインターネット上でのリアルタイムなデータアクセスでは、遅延をできる限り低く抑えることが必要となる。500ミリ秒以下のリアルタイム遅延を実現するWebRTC(Webリアルタイム通信)は、市場で最も高速なプロトコルの1つである。WebRTCは、基本的に双方向のリアルタイム通信を提供するように構築されている。TCP(伝送制御プロトコル)で構築されたHLS(HTTPライブストリーミング)とは異なり、WebRTCは主にUDP(ユーザデータグラムプロトコル)をベースとしている。
【発明の概要】
【課題を解決するための手段】
【0003】
本発明の一実施態様による方法は、1つまたは複数のコンピュータによって実行されるストリーミングデータアクセス方法であって、ストリーミングデータに対するTCPリクエストを送信する工程と、識別キーを含むTCPレスポンスを取得する工程と、当該識別キーによりアドレス指定可能な領域に当該ストリーミングデータに対するUDPリクエストを送信する工程と、当該ストリーミングデータを取得する工程と、を含む。
【0004】
本発明の一実施形態によるシステムは、1つまたは複数のプロセッサを含むストリーミングデータアクセスのためのシステムであって、当該1つまたは複数のプロセッサが、ストリーミングデータに対するTCPリクエストを送信し、識別キーを含むTCPレスポンスを取得して、当該識別キーによりアドレス指定可能な領域に当該ストリーミングデータに対するUDPリクエストを送信し、当該ストリーミングデータを取得する動作を実行するための機械可読命令を実行する。
【0005】
本発明の一実施形態によるコンピュータ可読媒体は、ストリーミングデータアクセスのためのプログラムを含む非一過性のコンピュータ可読媒体であり、当該プログラムが、1つまたは複数のコンピュータに、ストリーミングデータに対するTCPリクエストを送信し、識別キーを含むTCPレスポンスを取得して、当該識別キーによりアドレス指定可能な領域に当該ストリーミングデータに対するUDPリクエストを送信し、当該ストリーミングデータを取得する動作を実行させる。
【0006】
本発明の一実施形態による方法は、1つまたは複数のコンピュータによって実行されるストリーミングデータアクセス方法であって、ストリーミングデータに対するTCPリクエストを取得する工程と、識別キーを含むTCPレスポンスを返す工程と、当該識別キーによりアドレス指定可能な領域で、当該ストリーミングデータに対するUDPリクエストを取得する工程と、当該ストリーミングデータを送信する工程と、を含む。
【図面の簡単な説明】
【0007】
【
図1】混合プロトコルでのデータアクセス動作を示すシーケンス図である。
【
図2】混合プロトコルでのデータアクセス動作を示すシーケンス図である。
【
図3】本発明の一部の実施態様に基づく混合プロトコルでのデータアクセス動作を示すシーケンス図である。
【
図4】本発明の一部の実施態様に基づく通信システムの構成を示す概略図である。
【発明を実施するための形態】
【0008】
TCPとUDPは、インターネット上でデータ、つまりパケットを送信するために使用されるトランスポート層のプロトコルである。どちらのプロトコルもIPプロトコルを使用しており、TCPまたはUDPが送信するパケットはいずれもIPアドレスに送信される。
【0009】
TCPはコネクション型のプロトコルで、 内蔵のエラー回復と再送信を特徴としている。しかしながら、パケットの順序を変更してパケットの完全な配信を確約するための往復通信が遅延を発生させる。
【0010】
UDPは、エラーチェックを省くことで、より高速な情報の流れを提供する。パケットの順序変更や再送信を行うことなく、直接相手にパケットが送信される。送信側は送信の成功を待たずにパケットを送信し続けるため、より低遅延で通信を行うことができる。ライブストリーミングのようなリアルタイムのデータアクセスにはUDPを利用することが望ましい。
【0011】
一部の実施態様において、混合プロトコルのデプロイメントを利用することができ、その場合、まずクライアントとサーバ間の接続確立にTCPが使用され、その後データ伝送にUDPが使用される。
【0012】
図1に混合プロトコルでのデータアクセス動作を示す例示的シーケンスを示す。ユーザ端末10(またはクライアント)はユーザの装置であり、当該ユーザは、視聴者またはストリーミングする人物とすることができる。ロードバランサ50は、ユーザ端末からのリクエストを宛先(destination)に分配する(distribute)、または導く(direct)ように構成され、当該宛先はインターネット上のサーバまたはサーバ内の領域とすることができる。ポッド60は、クラスタ内のサーバ(プルエッジサーバなど)の領域または仮想マシンであり、当該クラスタは例えばKubernetesクラスタとすることができる。オリジンサーバ70は、アクセスに供するデータを格納するように構成されたサーバである。
【0013】
工程S100において、ユーザ端末10は、ロードバランサ50に対して、ストリーミングデータを要求するTCPリクエストを送信する。
【0014】
工程S102において、ロードバランサ50は、TCPリクエストをポッド60に分配する、または導く。
【0015】
工程S104において、ポッド60は、ストリーミングデータが格納されているオリジンサーバ70に対して、ストリーミングデータを要求する。
【0016】
工程S106において、オリジンサーバ70は、ポッド60にストリーミングデータを提供する。
【0017】
工程S108において、ポッド60は、TCPレスポンスをユーザ端末10に送信する。TCPレスポンスは、ストリーミングデータに関連するSDP(セッション記述プロトコル)を含んでもよい。
【0018】
工程S110において、ユーザ端末10は、ロードバランサ50に対して、ストリーミングデータを要求するUDPリクエストを送信する。
【0019】
工程S112において、ロードバランサ50は、UDPリクエストをポッド60に分配する、または導く。
【0020】
工程S114において、ポッド60は、オリジンサーバ70から提供されたストリーミングデータをユーザ端末10に送信する。
【0021】
図1のデプロイメントでは、1つのポッド(ポッド60)しかない点に留意する。したがってこの場合、工程112において、ロードバランサ50は、ストリーミングデータが提供される正しい宛先(ポッド60)にUDPリクエストを送信することができる。しかし、デプロイメントに複数のポッドがあり、混合プロトコル(TCPとUDPなど)戦略が利用される場合、ロードバランサによってUDPリクエストが誤った宛先に送信される危険性がある。
【0022】
図2に混合プロトコルでのデータアクセス動作を示す別の例示的シーケンスを示す。
図2のデプロイメントにおいては、ポッド62とポッド64の2つのポッドがある。
【0023】
工程S200において、ユーザ端末10は、ロードバランサ50に対して、ストリーミングデータを要求するTCPリクエストを送信する。
【0024】
工程S202において、ロードバランサ50は、TCPリクエストをポッド62に分配する、または導く。分配は、ロードバランサ50がどのポッドにリクエストを分配するかを判断するための所定の基準により行われてもよい。
【0025】
工程S204において、ポッド62は、ストリーミングデータが格納されているオリジンサーバ70に対して、ストリーミングデータを要求する。
【0026】
工程S206において、オリジンサーバ70は、ポッド62にストリーミングデータを提供する。
【0027】
工程S208において、ポッド62は、TCPレスポンスをユーザ端末10に送信する。TCPレスポンスは、ストリーミングデータに関連するSDP(セッション記述プロトコル)を含んでもよい。
【0028】
工程S210において、ユーザ端末10は、ロードバランサ50に対して、ストリーミングデータを要求するUDPリクエストを送信する。
【0029】
工程S212において、ロードバランサ50は、要求されたストリーミングデータが提供されるポッド62にUDPリクエストを導くはずである。しかし、ロードバランサ50は、以前のTCPリクエストと現在のUDPリクエストとを正しくマッチングまたは同期させることができないため、セッションアフィニティが正常に確立されない可能性がある。したがって、
図2に示すように、要求されたストリーミングデータが存在しない誤ったポッドにUDPリクエストを送信してしまう危険性がある。それにより、データアクセスを正常に完了することができなくなる。この失敗率は、デプロイメントに実装されるポッドの数が増えるにつれて増加する可能性がある。このようにUDPリクエストを誤った宛先に送信してしまう問題は、Kubernetesクラスタシステムなど、さまざまなクラスタシステムにおいて、混合プロトコルを組み込んだ場合に起こり得る。一部の実施態様において、ロードバランサ50、ポッド62、ポッド64、オリジンサーバ70がKubernetesクラスタシステムで実装される。
【0030】
従来、ユーザ端末はポッドの位置またはアドレスに関する情報を持っていないため、ユーザ端末がクラスタ内のポッドに直接アクセスする方法も存在しない。従来、安全性の問題などの懸念から、ポッドが存在するクラスタの外部のエンティティに公知または既知のポッドのアドレス情報は存在しない。
【0031】
図3に本発明の一部の実施態様に基づく混合プロトコルでのデータアクセス動作を示すシーケンスを示す。
【0032】
工程S300において、ユーザ端末10は、ロードバランサ50に対して、ストリーミングデータを要求するTCPリクエストを送信する。
【0033】
工程S302において、ロードバランサ50は、TCPリクエストをポッド62に分配する、または導く。分配は、ロードバランサ50がどのポッドにリクエストを分配するかを判断するための所定の基準により行われてもよい。ポッド62はTCPリクエストを取得する。
【0034】
工程S304において、ポッド62は、ストリーミングデータが格納されているオリジンサーバ70に対して、ストリーミングデータを要求する。
【0035】
工程S306において、オリジンサーバ70は、ポッド62にストリーミングデータを提供する。
【0036】
工程S308において、ポッド62は、TCPレスポンスをユーザ端末10に送信または返答する。ユーザ端末10は、TCPレスポンスを取得する。TCPレスポンスには、ポッド62の識別キー、またはポッド62に対して生成された識別キーが含まれる。識別キーは、ポッド62が存在するクラスタの外部のエンティティがポッド62にアクセスできるように構成される。ポッド62は、識別キーによりアドレス指定可能である。識別キーは、ポッド62のIP情報、ノード情報、ポッド情報またはポート情報を含む、またはそれらに対応するものとしてもよい。識別キーは、SDPに含まれてもよい。
【0037】
工程S310において、ユーザ端末10は、識別キーにより、ストリーミングデータに対するUDPリクエストを直接ポッド62に送信する。
【0038】
工程S312において、ポッド62はストリーミングデータをユーザ端末10に送信する。これにより、ユーザ端末10は、ストリーミングデータを正常に取得する。
【0039】
本実施形態においては、クラスタ内のポッドに対して、識別キーが作成される。当該識別キーは、TCPレスポンスにおいてクラスタ外部のユーザ端末に送信される。その後、ユーザ端末は識別キーを利用して、ロードバランサを迂回し、正しいポッドに直接UDPリクエストを送信して、ストリーミングデータにアクセスする。
図3に示す例示的実施態様は、混合プロトコルのデプロイメントにおいて、誤った宛先にUDPリクエストを送信する問題を効果的に解決することができる。一部の実施態様において、識別キーは、WebRTC ICEなどのInteractive Connectivity Establishment(ICE)情報に対応するIP情報、ノード情報、ポッド情報またはポート情報を含めることにより作成してもよい。当該ICE情報は、TCPレスポンスに含まれてもよい。
【0040】
従来、アクセスされたデータがストリーミングデータやライブビデオデータでない場合、TCPリクエストとそれに続くUDPが異なる宛先に送信されてもエラーにならないことがある。したがって、アクセスされたデータがストリーミングデータやライブビデオデータでなければ、混合プロトコルを実装しても、領域(Kubernetesクラスタ中のポッドなど)の識別キーを作成する必要がない場合がある。
【0041】
一部の実施態様において、ユーザ端末とロードバランサの間に、CDNサーバやキャッチサーバなどの追加サーバを実装してもよい。一部の実施態様において、ユーザ端末とポッドの間に、CDNサーバやキャッチサーバなどの追加サーバを実装してもよい。
【0042】
一部の実施態様において、ユーザ端末は、1つまたは複数のプロセッサを含むシステムとみなすことができ、そのうち、当該1つまたは複数のプロセッサは、機械可読命令を実行して、上述したデータアクセス処理などの処理を実行する。
【0043】
一部の実施態様において、ポッド、オリジンサーバ、および/またはロードバランサは、ストリーミングサービスを提供するシステムに属する。一部の実施態様において、ポッドは、ストリーミングサーバに実装される。一部の実施態様において、オリジンサーバは、ストリーミングサーバとして機能する。一部の実施態様において、ストリーミングサービスは、スマートフォンやタブレットなどのユーザ端末上で動作するアプリケーションによってアクセスすることができる。
【0044】
図3に示すように、一部の実施態様において、ストリーミングデータは、工程S306においてオリジンサーバ70からポッド62に提供されなくてもよい。その代わりに、オリジンサーバ70は、最初に工程S306においてポッド62にメタデータを転送し、その後ポッド62がUDPリクエストを受信した後(例えば、工程S310の後)ポッド62にストリーミングデータを提供してもよい。
【0045】
図4に本発明の一部の実施態様に基づく通信システムの構成を示す概略図を示す。
【0046】
通信システム1は、コンテンツを介したインタラクションを伴うライブストリーミングサービスを提供することができる。ここで言う「コンテンツ」とは、コンピュータ装置で再生可能なデジタルコンテンツを指す。つまり、通信システム1は、ユーザがオンラインで他のユーザとのリアルタイムのインタラクションに参加することを可能にする。通信システム1は、複数のユーザ端末10と、バックエンドサーバ30と、ストリーミングサーバ40とを含む。ユーザ端末10、バックエンドサーバ30、及びストリーミングサーバ40は、ネットワーク90(例えばインターネットとしてもよい)を介して接続される。バックエンドサーバ30は、ユーザ端末および/またはストリーミングサーバ40との間のインタラクションを同期させるサーバとすることができる。一部の実施態様において、バックエンドサーバ30は、アプリケーション(APP)プロバイダーのサーバとしてもよい。ストリーミングサーバ40は、ストリーミングデータまたはビデオデータを取り扱う、または提供するためのサーバである。一部の実施態様において、バックエンドサーバ30とストリーミングサーバ40は、独立したサーバとしてもよい。一部の実施態様において、バックエンドサーバ30とストリーミングサーバ40は、1つのサーバに統合してもよい。一部の実施態様において、ユーザ端末10は、ライブストリーミングのためのクライアント装置である。一部の実施態様において、ユーザ端末10は、視聴者、ストリーマー、アンカー、ポッドキャスター、オーディエンス、リスナーなどと呼ばれることがある。ユーザ端末10、バックエンドサーバ30、及びストリーミングサーバ40はそれぞれ情報処理装置の一例である。一部の実施態様において、ストリーミングは、ライブストリーミングまたはビデオ再生とすることができる。一部の実施態様において、ストリーミングは、オーディオストリーミングおよび/またはビデオストリーミングとすることができる。一部の実施態様において、ストリーミングは、オンラインショッピング、トークショー、タレントショー、娯楽イベント、スポーツイベント、音楽ビデオ、映画、コメディ、コンサートなどのコンテンツを含むことができる。
【0047】
本発明で説明した処理及び手順は、明示的に説明したものに加えて、ソフトウェア、ハードウェア、またはそれらの任意の組み合わせにより実現することができる。例えば、本明細書で説明した処理および手順は、その処理および手順に対応するロジックを集積回路、揮発性メモリ、不揮発性メモリ、非一過性のコンピュータ可読媒体、磁気ディスクなどの媒体に実装することにより実現することができる。さらに、本明細書に記載された処理および手順は、その処理および手順に対応するコンピュータプログラムとして実現することができ、各種のコンピュータにより実行することができる。
【0048】
さらに、上記実施態様で説明したシステムまたは方法は、固体記憶装置、光ディスク記憶装置、磁気ディスク記憶装置などの非一時的なコンピュータ可読媒体に格納されたプログラムに統合されてもよい。あるいは、プログラムは、インターネットを介してサーバからダウンロードされ、プロセッサにより実行されるものとしてもよい。
【0049】
以上、本発明の技術的内容及び特徴を説明したが、本発明の属する技術分野において通常の知識を有する者であれば、本発明の教示及び開示から逸脱することなく、なお多くの変形及び修正を行うことができる。したがって、本発明の範囲は、既に開示された実施態様に限定されず、本発明から逸脱しない別の変形や修正を含み、特許請求の範囲に含まれる範囲である。
【符号の説明】
【0050】
1 通信システム
10 ユーザ端末
30 バックエンドサーバ
40 ストリーミングサーバ
50 ロードバランサ
60 ポッド
62 ポッド
64 ポッド
70 オリジンサーバ
90 ネットワーク
S100、S102、S104、S106、S108、S110、S112、S114 工程
S200、S202、S204、S206、S208、S210、S212 工程
S300、S302、S304、S306、S308、S310、S312 工程