JP2018509679A - Improved client-driven push of resources with server devices - Google Patents
Improved client-driven push of resources with server devices Download PDFInfo
- Publication number
- JP2018509679A JP2018509679A JP2017537233A JP2017537233A JP2018509679A JP 2018509679 A JP2018509679 A JP 2018509679A JP 2017537233 A JP2017537233 A JP 2017537233A JP 2017537233 A JP2017537233 A JP 2017537233A JP 2018509679 A JP2018509679 A JP 2018509679A
- Authority
- JP
- Japan
- Prior art keywords
- data
- push
- client
- server
- request
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 137
- 230000004044 response Effects 0.000 claims description 78
- 238000001914 filtration Methods 0.000 claims description 43
- 238000006467 substitution reaction Methods 0.000 claims description 37
- 230000008859 change Effects 0.000 claims description 26
- 238000010276 construction Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 abstract description 16
- 238000004891 communication Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 38
- 230000003044 adaptive effect Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 238000013459 approach Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 9
- 238000012360 testing method Methods 0.000 description 8
- 238000012790 confirmation Methods 0.000 description 6
- 230000015654 memory Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 230000014509 gene expression Effects 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 210000001072 colon Anatomy 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 101100242901 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB2 gene Proteins 0.000 description 2
- 101150082826 Segment-2 gene Proteins 0.000 description 2
- 101100194052 Thogoto virus (isolate SiAr 126) Segment 2 gene Proteins 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 101150013335 img1 gene Proteins 0.000 description 2
- 101150071665 img2 gene Proteins 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 101100242890 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PA gene Proteins 0.000 description 1
- 101100247669 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB1 gene Proteins 0.000 description 1
- 101150025928 Segment-1 gene Proteins 0.000 description 1
- 101150027881 Segment-3 gene Proteins 0.000 description 1
- 101150091797 Segment-4 gene Proteins 0.000 description 1
- 101100242902 Thogoto virus (isolate SiAr 126) Segment 1 gene Proteins 0.000 description 1
- 101100242891 Thogoto virus (isolate SiAr 126) Segment 3 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- AWSBQWZZLBPUQH-UHFFFAOYSA-N mdat Chemical compound C1=C2CC(N)CCC2=CC2=C1OCO2 AWSBQWZZLBPUQH-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/83—Admission control; Resource allocation based on usage prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/45—Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
- H04N21/454—Content or additional data filtering, e.g. blocking advertisements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/4722—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting additional data associated with the content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/637—Control signals issued by the client directed to the server or network components
- H04N21/6377—Control signals issued by the client directed to the server or network components directed to server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本発明は、HTTP通信ネットワークを通してのデータ送信、例えばデータストリーミング、に関する。サーバとクライアントとの間でデータを送信する方法は、サーバにおいて:第1データを得るHTTPリクエストをクライアントから受け取るステップであって、そのHTTPリクエストは、サーバ上の第1データの特定を可能にする第1データ特定情報を含むとともに、第2データをプッシュすることに関連する指示を含む1つまたは複数の追加ヘッダフィールドを含む、受け取るステップ;その第1データを取り出してクライアントに送るステップ;および、第2データをプッシュすることに関連するその指示を表す確認応答データをクライアントデバイスに送るステップ、を含む。【選択図】11aThe present invention relates to data transmission, eg data streaming, over an HTTP communication network. The method for transmitting data between the server and the client is at the server: receiving an HTTP request from the client to obtain the first data, the HTTP request enabling the identification of the first data on the server. Receiving, including one or more additional header fields including first data specific information and including instructions associated with pushing the second data; retrieving the first data and sending to the client; and Sending acknowledgment data representing the indication associated with pushing the second data to the client device. [Selection] 11a
Description
本発明は、HTTP(HyperText Transfer Protocolを表す)通信ネットワークを通してのデータ送信、例えばデータストリーミング、に関し、より正確にはサーバデバイスによるリソースのクライアント主導型プッシュに関する。 The present invention relates to data transmission, eg, data streaming, over an HTTP (representing HyperText Transfer Protocol) communication network, and more precisely to client-driven push of resources by a server device.
DASH(Dynamic Adaptive Streaming over HTTPの頭字語)メディアコンテンツストリーミングなどの、HTTPを通しての通信においては、クライアントデバイスによってサーバデバイスに対して大量のデータが要求されることがある。そうするために、クライアントデバイスは、普通、メソッド(例えば“GET”)と、場合によってはHTTPリクエスト内の1つまたは複数の追加のヘッダ(例えば、そのユニフォームリソースアイデンティファイア(URI:uniform resource identifier)により特定されるリソースの中のバイトレンジを提供するレンジ(Range)ヘッダ)と共に、サーバデバイス上の要求されたデータを特定して位置を示すURIとから成るリクエストラインを各々含むHTTPリクエストを送る。 In communication over HTTP, such as DASH (Dynamic Adaptive Streaming over HTTP) media content streaming, a client device may require a large amount of data from the server device. In order to do so, the client device typically has a method (eg, “GET”) and possibly one or more additional headers (eg, its uniform resource identifier (URI) in the HTTP request). Send an HTTP request, each containing a request line consisting of a URI indicating the location and location of the requested data on the server device, along with a Range header that provides the byte range in the resource specified by .
クライアントデバイスによってまだ要求されていないデータをサーバデバイスが自発的にプッシュできるようにするためにサーバプッシュフィーチャが開発されている。これは、ウェブリソースのローディング時間を短縮するために有益なフィーチャである。 Server push features have been developed to allow server devices to voluntarily push data that has not yet been requested by a client device. This is a useful feature to reduce web resource loading time.
サーバプッシュフィーチャは、請求されていないウェブリソースリプリゼンテーションをサーバデバイスがクライアントデバイスに送ることを可能にするためにHTTP/2(これは単一の現存するコネクションの中で数個のリクエスト/レスポンスを交換すること、すなわち数個のストリームを持つこと、をも可能にする)において導入されている。ウェブページなどのウェブリソースは一般的に他のリソースへのリンクを含んでおり、それら自身が他のリソースへのリンクを含むことがある。ウェブページを完全に表示するためには、一般的に、全てのリンクされているリソースおよびサブリンクされているリソースがクライアントデバイスにより取り出されなければならない。この増加する発見は、特にモバイルネットワークなどの大レイテンシのネットワーク上では、ウェブページの低速の表示につながる可能性がある。 The server push feature is HTTP / 2 (which allows several request / responses within a single existing connection to allow the server device to send unsolicited web resource representations to the client device. Is also introduced), ie, having several streams). Web resources, such as web pages, typically include links to other resources, and themselves may include links to other resources. In order to fully display a web page, typically all linked resources and sublinked resources must be retrieved by the client device. This increased discovery can lead to slow display of web pages, especially on high latency networks such as mobile networks.
所与のウェブページに対するリクエストを受け取るとき、サーバデバイスは、要求されているリソースの完全な処理のために他のどのリソースが必要かを判定することができる。要求されたリソースと、リンクされているリソースとを同時に送ることにより、サーバデバイスはそのウェブページのローディング時間を短縮することを可能にする。従って、プッシュフィーチャを使って、サーバデバイスは、所与のリソースを要求された時点で追加リソースのリプリゼンテーションを送ることができる。 When receiving a request for a given web page, the server device can determine which other resources are required for the complete processing of the requested resource. By sending the requested resource and the linked resource simultaneously, the server device can reduce the loading time of the web page. Thus, using the push feature, the server device can send a representation of additional resources when requested for a given resource.
データのプッシュは、DASHと関連して、例えば本出願人の、特許文献1として公開された出願においても提案されている。 Data push has also been proposed in connection with DASH, for example in an application published as US Pat.
この刊行物は、ユーザの経験を最適化するためにデータストリーミングを、特にDASHベースの通信と関連して、改善しようとしている。その理由は、在来のメカニズムにおいては、クライアントおよびサーバデバイスにとっては約束されたデータが所要の時に送られ受け取られるかどうか分からず、クライアントデバイスにとってはビデオセグメントが何時どんな順序で送られるか分からないかもしれないことにある。さらに、サーバデバイスによってプッシュまたはアナウンスされた約束のデータはクライアントデバイスのニーズに合わないかもしれず(これは時間が経つにつれて進化する可能性がある)、従って特にサーバエンドにおいてリソースが浪費される結果につながるかもしれない。従って特許文献1は、サーバデバイスとクライアントデバイスとがプッシュポリシーを共有することを提案している。
This publication seeks to improve data streaming to optimize the user experience, particularly in connection with DASH-based communications. The reason is that in conventional mechanisms, the client and server devices do not know if the promised data is sent and received when needed, and the client device does not know when and in what order the video segments are sent. It may be. Furthermore, the promised data pushed or announced by the server device may not meet the needs of the client device (this may evolve over time), thus resulting in wasted resources, especially at the server end. May lead. Therefore,
この共有は、クライアントデバイスが、どのデータがプッシュされかけているかを前もって知り、その後、ネットワーク帯域幅の浪費を避けるためにそのようなプッシュのキャンセルを準備するために役立つ。 This sharing helps client devices know in advance what data is being pushed and then prepares to cancel such pushes to avoid wasting network bandwidth.
しかし、この刊行物において提案されているメカニズムは、特に、プッシュポリシーに従ってどのデータまたはリソースをプッシュするかを決定するためにXMLベースのDASH“メディアプレゼンテーション記述”ファイル(MPD:media presentation description)に対してプッシュポリシーを適用し得るように、サーバデバイスがDASHについての極めて複雑な知識を持つことを要求する。 However, the mechanism proposed in this publication is specifically for XML-based DASH “media presentation description” files (MPD) to determine what data or resources to push according to the push policy. The server device requires very complex knowledge about DASH so that the push policy can be applied.
MPDファイルはメディアコンテンツの構造をメディアセグメントに記述することに注意されたい。MPDファイルは、サーバデバイスとクライアントデバイスとの間で交換され、後者に、後者がメディアコンテンツのデリバリを制御することを可能にする、すなわち後者が各メディアセグメントを個別に要求することを可能にする、情報を与える。 Note that MPD files describe the structure of media content in media segments. MPD files are exchanged between the server device and the client device, which allows the latter to control the delivery of media content, i.e. allows the latter to request each media segment individually. Give information.
この文脈において、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストはサーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、第2データをプッシュすることに関連する指示を含む1つまたは複数の追加のヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;
第2データをプッシュすることに関連する指示を表す確認応答データをクライアントデバイスに送るステップ;および
1つまたは複数のヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、を用いて、サーバデバイス上の第2データの特定を可能にする第2データ特定情報を決定するステップ;
を含む。
In this context, the present invention provides a method for transmitting data between a server device and a client device, the method being at the server device:
Receiving an HTTP request for obtaining first data from a client device, the HTTP request including first data identifying information enabling identification of the first data on the server device and pushing the second data; Receiving, including one or more additional header fields containing associated instructions;
Retrieving the first data and sending it to the client device;
Sending acknowledgment data representing instructions associated with pushing the second data to the client device; and using only one or more header fields and optionally further the first data identification information, the server device Determining second data identification information that enables identification of the second data above;
including.
従って、本発明の方法は、クライアントデバイスがサーバデバイスにより適用されるプッシュポリシーを考慮して自分の振る舞いを適合させることを可能にする。 Thus, the method of the present invention allows client devices to adapt their behavior in view of the push policy applied by the server device.
複数の実施形態において、この方法はさらに:
第2データのプッシュをアナウンスするプッシュ約束メッセージをクライアントデバイスに送るステップおよび/または第2データをクライアントデバイスにプッシュするステップを含む。
In embodiments, the method further includes:
Sending a push commitment message to announce the push of the second data to the client device and / or pushing the second data to the client device.
複数の実施形態において、確認応答データは、第2データをプッシュするための指示を表す。 In embodiments, the acknowledgment data represents an instruction to push the second data.
複数の実施形態において、確認応答データは、HTTPリクエストに応じての第2データのプッシュは行われないことを示す。 In some embodiments, the acknowledgment data indicates that the second data is not pushed in response to the HTTP request.
複数の実施形態において、第2データをプッシュすることに関連する指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む。 In embodiments, the instructions associated with pushing the second data include a list that includes at least two different instructions associated with pushing the second data.
複数の実施形態において、確認応答データは第2データをプッシュすることに関連する少なくとも2つの異なる指示のうちの1つを含み、第2データをプッシュすることに関連するその少なくとも2つの異なる指示のうちの前記の1つは、クライアントデバイスにプッシュされるべき第2データを特定するために使用される。 In embodiments, the acknowledgment data includes one of at least two different instructions associated with pushing the second data, and the at least two different instructions associated with pushing the second data. The one of them is used to identify the second data to be pushed to the client device.
複数の実施形態において、第2データをプッシュすることに関連する指示は第2データのデータのタイプと関連付けられ、そのデータのタイプは記述データタイプまたはコンテンツデータタイプを含み、第2データはコンテンツデータにまたは記述データに属する。 In embodiments, the instruction associated with pushing the second data is associated with a data type of the second data, the data type including a descriptive data type or a content data type, wherein the second data is the content data Or belong to descriptive data.
複数の実施形態において、第2データをプッシュすることに関連する指示は、メディアプレゼンテーション記述アップデートをプッシュすることに向けられる。 In embodiments, the instructions related to pushing the second data are directed to pushing the media presentation description update.
複数の実施形態において、確認応答データは、第2データをプッシュすることに関連する指示を含み、確認応答データ内の第2データをプッシュすることに関連する指示は、HTTPリクエスト内の第2データをプッシュすることに関連する指示とは異なる。 In embodiments, the acknowledgment data includes an indication associated with pushing the second data, and the indication associated with pushing the second data within the acknowledgment data is the second data within the HTTP request. Different from the instructions related to pushing.
複数の実施形態において、第2データをプッシュすることに関連する指示は、少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す。 In embodiments, the indication associated with pushing the second data includes at least one unique identifier, the at least one unique identifier being the directive to push the second data and the first to be pushed. Represents a two-data identification or a directive not to push the second data.
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。 In embodiments, the unique identifier is defined in the central repository.
複数の実施形態において、一意識別子は、少なくとも1つのパラメータの関数としてセットされる。 In embodiments, the unique identifier is set as a function of at least one parameter.
本発明の他の1つの目的に応じて、サーバデバイスとクライアントデバイスとの間でデータを送信する方法が提供され、この方法は、クライアントデバイスにおいて:
サーバデバイスから得られるべきデータを特定するステップ;
特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともにサーバデバイスが第2データをプッシュするべきか第2データをプッシュするべきでないかに関する指示を含む1つまたは複数の追加のヘッダフィールドを含む、生成するステップ;
第1データを得るとともにサーバデバイスに第2データをプッシュさせまたはプッシュさせないためにHTTPリクエストをサーバデバイスに送るステップ;および
HTTPリクエストを送ることに応答して確認応答データをサーバデバイスから受け取るステップであって、確認応答データは第2データをプッシュすることに関連する指示を表す、受け取るステップ;を含み、
1つまたは複数の追加のヘッダフィールドは、1つまたは複数の追加のヘッダフィールドだけに、および場合によってはさらに第1データ特定情報に、基づいて、サーバデバイス上の特定されたデータから第2データの特定を可能にする第2データ特定情報を定義する。
In accordance with another object of the present invention, a method is provided for transmitting data between a server device and a client device, the method at the client device:
Identifying the data to be obtained from the server device;
Generating an HTTP request to obtain first data from the identified data, wherein the HTTP request includes first data identifying information that enables identification of the first data on the server device and the server device is configured to receive the second data Generating, including one or more additional header fields that include an indication as to whether to push data or not to push second data;
Sending an HTTP request to the server device to obtain the first data and cause the server device to push or not push the second data; and receiving acknowledgment data from the server device in response to sending the HTTP request. The acknowledgment data represents an instruction associated with pushing the second data, receiving;
The one or more additional header fields are the second data from the identified data on the server device based only on the one or more additional header fields, and possibly further on the first data identification information. 2nd data specific information which makes specification possible is defined.
従って、本発明の方法は、クライアントデバイスがサーバデバイスにより適用されるプッシュポリシーを考慮して自身の振る舞いを適合させることを可能にする Thus, the method of the present invention allows a client device to adapt its behavior taking into account the push policy applied by the server device.
複数の実施形態において、確認応答データは、第2データをプッシュするための指示を表す。 In embodiments, the acknowledgment data represents an instruction to push the second data.
複数の実施形態において、確認応答データは、HTTPリクエストに応答しての第2データのプッシュは行われないことを示す。 In embodiments, the acknowledgment data indicates that the second data is not pushed in response to the HTTP request.
複数の実施形態において、第2データをプッシュすることに関連する指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む。 In embodiments, the instructions associated with pushing the second data include a list that includes at least two different instructions associated with pushing the second data.
複数の実施形態において、確認応答データは第2データをプッシュすることに関連する少なくとも2つの異なる指示のうちの1つを含み、第2データをプッシュすることに関連する少なくとも2つの異なる指示のうちの前記の1つは、クライアントデバイスにプッシュされるべき第2データを特定するためにサーバデバイスにより使用される。 In embodiments, the acknowledgment data includes one of at least two different instructions associated with pushing the second data, and among the at least two different instructions associated with pushing the second data. The one of is used by the server device to identify the second data to be pushed to the client device.
複数の実施形態において、第2データをプッシュすることに関連する指示は第2データのデータのタイプと関連付けられ、そのデータのタイプは記述データタイプまたはコンテンツデータタイプを含み、第2データはコンテンツデータにまたは記述データに属する。 In embodiments, the instruction associated with pushing the second data is associated with a data type of the second data, the data type including a descriptive data type or a content data type, wherein the second data is the content data Or belong to descriptive data.
複数の実施形態において、第2データをプッシュすることに関連する指示は、記述データアップデートをプッシュすることに向けられる。 In embodiments, the instructions related to pushing the second data are directed to pushing a descriptive data update.
複数の実施形態において、確認応答データは、第2データをプッシュすることに関連する指示を含み、確認応答データ内の第2データをプッシュすることに関連する指示は、HTTPリクエスト内の第2データをプッシュすることに関連する指示とは異なる。 In embodiments, the acknowledgment data includes an indication associated with pushing the second data, and the indication associated with pushing the second data within the acknowledgment data is the second data within the HTTP request. Different from the instructions related to pushing.
複数の実施形態において、第2データをプッシュすることに関連する指示は、少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す。 In embodiments, the indication associated with pushing the second data includes at least one unique identifier, the at least one unique identifier being the directive to push the second data and the first to be pushed. Represents a two-data identification or a directive not to push the second data.
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。 In embodiments, the unique identifier is defined in the central repository.
複数の実施形態において、一意識別子は、少なくとも1つのパラメータの関数としてセットされる。 In embodiments, the unique identifier is set as a function of at least one parameter.
本発明の他の1つの目的に応じて、サーバデバイスとクライアントデバイスとの間でデータを送信する方法が提供され、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストはサーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、1つまたは複数の追加のヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;および
1つまたは複数の追加のフィールドに含まれる第2データをプッシュすることに関連する指示の関数として第2データをクライアントデバイスにプッシュするかまたはプッシュしないステップ;
を含む。
In accordance with another object of the present invention, a method is provided for transmitting data between a server device and a client device, the method at the server device:
Receiving an HTTP request for obtaining first data from a client device, the HTTP request including first data identifying information that enables identification of the first data on the server device and one or more additional headers; Receiving, including fields;
Retrieving and sending the first data to the client device; and pushing or pushing the second data to the client device as a function of an indication associated with pushing the second data contained in the one or more additional fields. Don't step;
including.
従って、本発明の方法は、有益なデータをクライアントデバイスにプッシュするサーバデバイスの能力を改善する。 Thus, the method of the present invention improves the server device's ability to push useful data to the client device.
複数の実施形態において、第2データをプッシュすることに関連する指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む。 In embodiments, the instructions associated with pushing the second data include a list that includes at least two different instructions associated with pushing the second data.
複数の実施形態において、第2データをプッシュすることに関連する指示は第2データのデータのタイプと関連付けられ、そのデータのタイプは記述データタイプまたはコンテンツデータタイプを含み、第2データはコンテンツデータにまたは記述データに属する。 In embodiments, the instruction associated with pushing the second data is associated with a data type of the second data, the data type including a descriptive data type or a content data type, wherein the second data is the content data Or belong to descriptive data.
複数の実施形態において、第2データをプッシュすることに関連する指示は、記述データアップデートをプッシュすることに向けられる。 In embodiments, the instructions related to pushing the second data are directed to pushing a descriptive data update.
複数の実施形態において、第2データをプッシュすることに関連する指示は、少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す。 In embodiments, the indication associated with pushing the second data includes at least one unique identifier, the at least one unique identifier being the directive to push the second data and the first to be pushed. Represents a two-data identification or a directive not to push the second data.
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。 In embodiments, the unique identifier is defined in the central repository.
複数の実施形態において、一意識別子は、少なくとも1つのパラメータの関数としてセットされる。 In embodiments, the unique identifier is set as a function of at least one parameter.
本発明の他の1つの目的に応じて、サーバデバイスとクライアントデバイスとの間でデータを送信する方法が提供され、この方法は、クライアントデバイスにおいて:
サーバデバイスから得られるべきデータを特定するステップ;
特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともにサーバデバイスが第2データをプッシュするべきか第2データをプッシュするべきでないかに関する指示を含む1つまたは複数の追加のヘッダフィールドを含む、生成するステップ;および
第1データを得るとともにサーバデバイスに第2データをプッシュさせまたはプッシュさせないためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
In accordance with another object of the present invention, a method is provided for transmitting data between a server device and a client device, the method at the client device:
Identifying the data to be obtained from the server device;
Generating an HTTP request to obtain first data from the identified data, wherein the HTTP request includes first data identifying information that enables identification of the first data on the server device and the server device is configured to receive the second data Generating, including one or more additional header fields including an indication as to whether to push data or not to push the second data; and obtaining the first data and pushing the second data to the server device Sending an HTTP request to the server device to prevent it from being pushed or pushed;
including.
従って、本発明の方法は、有益なデータをクライアントデバイスにプッシュするサーバデバイスの能力を改善する。 Thus, the method of the present invention improves the server device's ability to push useful data to the client device.
複数の実施形態において、第2データをプッシュすることに関連する指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む。 In embodiments, the instructions associated with pushing the second data include a list that includes at least two different instructions associated with pushing the second data.
複数の実施形態において、第2データをプッシュすることに関連する指示は第2データのデータのタイプと関連付けられ、そのデータのタイプは記述データタイプまたはコンテンツデータタイプを含み、第2データはコンテンツデータにまたは記述データに属する。 In embodiments, the instruction associated with pushing the second data is associated with a data type of the second data, the data type including a descriptive data type or a content data type, wherein the second data is the content data Or belong to descriptive data.
複数の実施形態において、第2データをプッシュすることに関連する指示は記述データアップデートをプッシュすることに向けられる。 In embodiments, the instructions associated with pushing the second data are directed to pushing a descriptive data update.
複数の実施形態において、第2データをプッシュすることに関連する指示は、少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す。 In embodiments, the indication associated with pushing the second data includes at least one unique identifier, the at least one unique identifier being the directive to push the second data and the first to be pushed. Represents a two-data identification or a directive not to push the second data.
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。 In embodiments, the unique identifier is defined in the central repository.
複数の実施形態において、一意識別子は、少なくとも1つのパラメータの関数としてセットされる。 In embodiments, the unique identifier is set as a function of at least one parameter.
本発明の他の1つの目的に応じて、クライアントデバイスによりサーバデバイスからデータを受け取る方法が提供され、この方法は、クライアントデバイスにおいて:
第1データを得るHTTPリクエストを送るステップであって、HTTPリクエストは、サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに1つまたは複数の追加のヘッダフィールドを含む、送るステップ;
もしクライアントがサーバデバイスに第1データと異なる第2データをプッシュしてほしくないならば、クライアントはサーバにHTTPリクエストに応じて第2データをプッシュしてほしくないということを示す情報アイテムを1つまた複数の追加のヘッダフィールドのうちの少なくとも1つに挿入するステップ;および
HTTPリクエストをサーバデバイスに送るステップ;
を含む。
In accordance with another object of the present invention, a method is provided for receiving data from a server device by a client device, the method at the client device:
Sending an HTTP request to obtain first data, wherein the HTTP request includes first data identification information that enables identification of the first data on the server device and includes one or more additional header fields. Sending step;
If the client does not want the server device to push second data different from the first data, the client has one information item indicating that the client does not want the server to push the second data in response to the HTTP request. Inserting into at least one of a plurality of additional header fields; and sending an HTTP request to the server device;
including.
従って、本発明の方法は、サーバデバイスからクライアントデバイスにプッシュされる無駄なデータの送信を防止する。 Thus, the method of the present invention prevents the transmission of useless data that is pushed from the server device to the client device.
複数の実施形態において、クライアントはサーバに第2データをプッシュしてほしくないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュさせないためのディレクティブを表す。 In embodiments, the information indicating that the client does not want the server to push the second data includes at least one unique identifier, the at least one unique identifier being a directive for preventing the second data from being pushed. Represents.
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。 In embodiments, the unique identifier is defined in the central repository.
複数の実施形態において、一意識別子は少なくとも1つのパラメータの関数としてセットされる。 In embodiments, the unique identifier is set as a function of at least one parameter.
本発明の他の1つの目的に応じて、データをサーバデバイスからクライアントデバイスに送る方法が提供され、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストはサーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、1つまたは複数の追加のヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;および
サーバはHTTPリクエストに応じて第1データと異なる第2データをプッシュしないということを示す情報アイテムをクライアントに送るステップ;
を含む。
In accordance with another object of the present invention, a method is provided for sending data from a server device to a client device, the method at the server device:
Receiving an HTTP request for obtaining first data from a client device, the HTTP request including first data identifying information that enables identification of the first data on the server device and one or more additional headers; Receiving, including fields;
Retrieving the first data and sending it to the client device; and sending an information item to the client indicating that the server does not push second data different from the first data in response to the HTTP request;
including.
従って、本発明の方法は、サーバデバイスからクライアントデバイスにプッシュされる無駄なデータの送信を防止する。 Thus, the method of the present invention prevents the transmission of useless data that is pushed from the server device to the client device.
複数の実施形態において、サーバは第2データをプッシュしないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す。 In embodiments, the information indicating that the server does not push the second data includes at least one unique identifier, and the at least one unique identifier represents a directive for preventing the second data from being pushed.
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。 In embodiments, the unique identifier is defined in the central repository.
複数の実施形態において、一意識別子は少なくとも1つのパラメータの関数としてセットされる。 In embodiments, the unique identifier is set as a function of at least one parameter.
本発明の他の1つの目的に応じて、クライアントデバイスによりサーバデバイスからデータを受け取る方法が提供され、この方法は、クライアントデバイスにおいて:
第1データを得るHTTPリクエストを送るステップであって、HTTPリクエストは、サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに1つまたは複数の追加のヘッダフィールドを含む、送るステップ;
もしクライアントがサーバデバイスに第1データと異なる第2データをプッシュしてほしくないならば、クライアントはサーバにHTTPリクエストに応じて第2データをプッシュしてほしくないということを示す情報アイテムを1つまた複数の追加のヘッダフィールドのうちの少なくとも1つに挿入するステップ;
HTTPリクエストをサーバデバイスに送るステップ;
HTTPリクエストを送ることに応答して、サーバデバイスから確認応答データを受け取るステップであって、確認応答データは、サーバは第1データと異なる第2データをプッシュしないということを示す情報アイテムを含む、受け取るステップ;
を含む。
In accordance with another object of the present invention, a method is provided for receiving data from a server device by a client device, the method at the client device:
Sending an HTTP request to obtain first data, wherein the HTTP request includes first data identification information that enables identification of the first data on the server device and includes one or more additional header fields. Sending step;
If the client does not want the server device to push second data different from the first data, the client has one information item indicating that the client does not want the server to push the second data in response to the HTTP request. Inserting into at least one of the plurality of additional header fields;
Sending an HTTP request to the server device;
Receiving acknowledgment data from the server device in response to sending an HTTP request, the acknowledgment data including an information item indicating that the server does not push second data different from the first data; Receiving step;
including.
従って、本発明の方法は、サーバデバイスからクライアントデバイスにプッシュされる無駄なデータの送信を防止する。 Thus, the method of the present invention prevents the transmission of useless data that is pushed from the server device to the client device.
複数の実施形態において、クライアントはサーバに第2データをプッシュしてほしくないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュさせないためのディレクティブを表す。 In embodiments, the information indicating that the client does not want the server to push the second data includes at least one unique identifier, the at least one unique identifier being a directive for preventing the second data from being pushed. Represents.
複数の実施形態において、サーバは第2データをプッシュしないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す。 In embodiments, the information indicating that the server does not push the second data includes at least one unique identifier, and the at least one unique identifier represents a directive for preventing the second data from being pushed.
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。 In embodiments, the unique identifier is defined in the central repository.
複数の実施形態において、一意識別子は少なくとも1つのパラメータの関数としてセットされる。 In embodiments, the unique identifier is set as a function of at least one parameter.
本発明の他の1つの目的に応じて、データをサーバデバイスからクライアントデバイスに送る方法が提供され、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストはサーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、クライアントはHTTPリクエストに応じてサーバにより第2データをプッシュしてほしくないということを示す情報アイテムを含む1つまたは複数の追加のヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;および
HTTPリクエストに応じて、サーバは第1データと異なる第2データをクライアントにプッシュしないということを示す情報アイテムを送るステップ;
を含む。
In accordance with another object of the present invention, a method is provided for sending data from a server device to a client device, the method at the server device:
Receiving an HTTP request for obtaining first data from a client device, wherein the HTTP request includes first data identifying information that enables identification of the first data on the server device, and the client responds to the HTTP request by the server Receiving, including one or more additional header fields containing information items indicating that you do not want the second data to be pushed by
Retrieving the first data and sending it to the client device; and, in response to the HTTP request, sending an information item indicating that the server does not push the second data different from the first data to the client;
including.
従って、本発明の方法は、サーバデバイスからクライアントデバイスにプッシュされる無駄なデータの送信を防止する。 Thus, the method of the present invention prevents the transmission of useless data that is pushed from the server device to the client device.
複数の実施形態において、サーバは第2データをプッシュしないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す。 In embodiments, the information indicating that the server does not push the second data includes at least one unique identifier, and the at least one unique identifier represents a directive for preventing the second data from being pushed.
複数の実施形態において、クライアントはサーバにより第2データをプッシュしてほしくないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す。 In embodiments, the information indicating that the client does not want the server to push the second data includes at least one unique identifier, and the at least one unique identifier includes a directive to prevent the second data from being pushed. Represent.
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。 In embodiments, the unique identifier is defined in the central repository.
複数の実施形態において、一意識別子は少なくとも1つのパラメータの関数としてセットされる。 In embodiments, the unique identifier is set as a function of at least one parameter.
複数の実施形態において、1つまたは複数の追加のヘッダフィールドは1つまたは複数の任意ヘッダフィールドである。 In embodiments, the one or more additional header fields are one or more optional header fields.
複数の実施形態において、第1および第2のデータ特定情報は、それぞれ、第1および第2のユニフォームリソースアイデンティファイア、URI、を含む。 In embodiments, the first and second data identification information includes first and second uniform resource identifiers, URIs, respectively.
複数の実施形態において、1つまたは複数の任意ヘッダフィールドは、HTTPリクエストの内容から第2URIを生成する少なくとも1つの構築ルールを含む。 In embodiments, the one or more optional header fields include at least one construction rule that generates a second URI from the contents of the HTTP request.
複数の実施形態において、1つまたは複数の任意ヘッダフィールドは変化部分情報および代入情報を含み、変化部分情報は参照URI内の少なくとも1つの変化サブパーツを特定し、代入情報は1つまたは複数の第2のURIを定義するために参照URIにおいて特定される変化サブパーツに取って代わる少なくとも1つの代入値を含む。 In embodiments, the one or more optional header fields include change portion information and substitution information, the change portion information identifies at least one change subpart in the reference URI, and the substitution information is one or more of It includes at least one substitution value that replaces the change subpart specified in the reference URI to define a second URI.
複数の実施形態において、参照URIは、受け取られたHTTPリクエストに含まれる第1URIを含む。 In embodiments, the reference URI includes a first URI included in the received HTTP request.
複数の実施形態において、変化部分情報は、代入情報に含まれるそれぞれの1つまたは複数の代入値を用いて置換されるべき参照URI内の2つ以上のサブパーツを特定する。 In embodiments, the changed portion information identifies two or more subparts in the reference URI to be replaced using each one or more substitution values included in the substitution information.
複数の実施形態において、変化部分情報は、2つ以上のサブパーツの代入値をそれらのそれぞれの優先レベルに応じて連続的に考慮するために参照URI内の2つ以上のサブパーツの各々をそれぞれの優先レベルと関連付ける。 In embodiments, the changed portion information includes each of two or more subparts in the reference URI to sequentially consider substitution values of two or more subparts according to their respective priority levels. Associate with each priority level.
複数の実施形態において、追加のヘッダフィールドは第2URIを明示的に含む。 In embodiments, the additional header field explicitly includes a second URI.
複数の実施形態において、第1データ特定情報は、サーバデバイス上のメインリソースを特定する第1ユニフォームリソースアイデンティファイア、URI、を含むとともに、メインリソースのサブパーツを第1データとして定義するサブパーツ情報を含み;および
任意ヘッダフィールドは、第2データ特定情報を定義するために第1データ特定情報内のサブパーツ情報に取って代わる代入サブパーツ情報を含む。
In some embodiments, the first data specifying information includes a first uniform resource identifier and URI that specify a main resource on the server device, and defines a sub part of the main resource as first data. And the optional header field includes substitution subpart information that replaces the subpart information in the first data identification information to define the second data identification information.
複数の実施形態において、サブパーツ情報は、メインリソースの中のバイトのレンジ値を含む。 In embodiments, the subpart information includes a range value of bytes in the main resource.
複数の実施形態において、第1および第2のデータは、それぞれ、DASHマニフェストプレゼンテーション記述内の第1および第2のデータ特定情報により特定されるメディアセグメントまたはメディアコンテンツサブパーツである。 In embodiments, the first and second data are media segments or media content subparts identified by first and second data identification information, respectively, in the DASH manifest presentation description.
本発明の他の1つの目的に応じて、サーバデバイスとクライアントデバイスとの間でデータを送信する方法が提供され、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに、第2データを特定することを可能にする1つまたは複数の任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;および
もし任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、を用いて、サーバデバイス上の第2データを特定することを可能にする第2データ特定情報を決定するステップ、を含む。すなわちHTTPリクエストの内容だけを使用して;および
第2データのプッシュをアナウンスするプッシュ約束メッセージをクライアントデバイスに送るステップおよび/または第2データをクライアントデバイスにプッシュするステップ;
を含む。
In accordance with another object of the present invention, a method is provided for transmitting data between a server device and a client device, the method at the server device:
Receiving an HTTP request for obtaining first data from a client device, wherein the HTTP request includes first data specifying information that enables the first data on the server device to be specified and specifies the second data; Receiving, including one or more optional header fields that make it possible to:
Retrieving the first data and sending it to the client device; and if an optional header field is present in the HTTP request:
Determining the second data identification information that allows the identification of the second data on the server device using only the optional header field and optionally further the first data identification information. I.e. using only the content of the HTTP request; and sending a push commitment message to announce the push of the second data to the client device and / or pushing the second data to the client device;
including.
クライアントの視点から、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、クライアントデバイスにおいて:
サーバデバイスから得られるべきデータを特定するステップ;
その特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに1つまたは複数の任意ヘッダフィールドを含み、任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報(すなわち、HTTPリクエストの内容だけ)、に基づいて、サーバデバイス上の特定されたデータから第2データを特定することを可能にする第2データ特定情報を定義する、生成するステップ;
第1データを得るとともにサーバデバイスに第2データをプッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
From a client perspective, the present invention provides a method for transmitting data between a server device and a client device, the method at the client device:
Identifying the data to be obtained from the server device;
Generating an HTTP request to obtain first data from the identified data, wherein the HTTP request includes first data identifying information that allows the first data on the server device to be identified and one Or including a plurality of optional header fields, based only on the optional header fields, and possibly further on the first data identification information (ie, only the content of the HTTP request), from the identified data on the server device Defining and generating second data specifying information that enables specifying
Sending an HTTP request to the server device to obtain the first data and cause the server device to push the second data;
including.
相関して、本発明はクライアントデバイスとデータを交換するためのサーバデバイスを提供し、このデバイスは:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに第2データを特定することを可能にする1つまたは複数の任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もしHTTPリクエスト内に任意ヘッダフィールドが存在するならば:
任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、を用いて、サーバデバイス上の第2データを特定することを可能にする第2データ特定情報を決定するステップ;および
第2データのプッシュをアナウンスするプッシュ約束メッセージをクライアントデバイスに送るステップおよび/または第2データをクライアントデバイスにプッシュするステップ;
を実行するように構成された少なくとも1つのマイクロプロセッサを含む。
In correlation, the present invention provides a server device for exchanging data with a client device, which device:
Receiving an HTTP request for obtaining first data from a client device, wherein the HTTP request includes first data specifying information that enables the first data on the server device to be specified and specifies the second data; Receiving, including one or more optional header fields that allow
Retrieving the first data and sending it to the client device; and if an optional header field is present in the HTTP request:
Determining second data identification information that enables identification of second data on the server device using only an optional header field, and optionally further first data identification information; and Sending a push commitment message to announce the push to the client device and / or pushing the second data to the client device;
Including at least one microprocessor configured to execute.
さらに、本発明はサーバデバイスとデータを交換するためのクライアントデバイスを提供し、このデバイスは:
サーバデバイスから得られるべきデータを特定するステップ;
その特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに1つまたは複数の任意ヘッダフィールドを含み、任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、に基づいて、サーバデバイス上の特定されたデータから第2データを特定することを可能にする第2データ特定情報を定義する、生成するステップ;
第1データを得るとともにサーバデバイスに第2データをプッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を実行するように構成された少なくとも1つのマイクロプロセッサを含む。
Furthermore, the present invention provides a client device for exchanging data with a server device, which device:
Identifying the data to be obtained from the server device;
Generating an HTTP request to obtain first data from the identified data, wherein the HTTP request includes first data identifying information that allows the first data on the server device to be identified and one Or including a plurality of optional header fields, wherein the second data can be identified from the identified data on the server device based only on the optional header fields and possibly further the first data identification information. 2 defining and generating data specific information;
Sending an HTTP request to the server device to obtain the first data and cause the server device to push the second data;
Including at least one microprocessor configured to execute.
HTTP/2においては、プッシュ約束メッセージは、対応するデータの実際のプッシュに先行する。他のプロトコル、特にウェブソケット(Web Sockets)またはSPDY(SpeeDYを表す)のような双方向プロトコル、は、先行するプッシュアナウンス無しに第2データを直ちにプッシュすることができる。 In HTTP / 2, the push promise message precedes the actual push of the corresponding data. Other protocols, particularly bi-directional protocols such as Web Sockets or SPDY (representing SpeedDY), can immediately push the second data without a prior push announcement.
本発明により、クライアントデバイスは、サーバデバイスによるプッシュメカニズムを効率的に制御し、同時に、下位互換性を可能にする。それは、プッシュされるデータとクライアントのニーズとの不一致を低減する。その理由は、クライアントデバイスがプッシュしてほしい第2データ(リソース、またはリソースの一部)は在来のHTTPリクエストの任意ヘッダフィールドを用いて定義されることにある。さらに、下位互換性は、もしサーバデバイスが在来のものであるならば、すなわち任意ヘッダフィールドをサポートしなければ、それは依然としてHTTPリクエストを処理エラー無しに在来の仕方で処理することができるという事実から生じる。 According to the present invention, the client device efficiently controls the push mechanism by the server device and at the same time allows backward compatibility. It reduces discrepancies between pushed data and client needs. The reason is that the second data (resource or part of the resource) that the client device wants to push is defined using the optional header field of the conventional HTTP request. Furthermore, backward compatibility means that if the server device is native, i.e. it does not support the optional header field, it can still handle HTTP requests in a conventional manner without processing errors. Stem from the facts.
任意ヘッダフィールドを理解するけれどもプッシュフィーチャをサポートしないサーバでは、そのサーバがコンテンツサーバではなくてリレーサーバである場合には、それは任意ヘッダフィールドからの情報を用いてリソースをプリフェッチすることができる。 On a server that understands the optional header field but does not support push features, if the server is a relay server rather than a content server, it can prefetch resources using information from the optional header field.
さらに、この発明は、低スキルのサーバ、例えばDASH知識を持たないサーバ、に依拠することを可能にする。その理由は、プッシュされるべき第2データの特定は、MPDファイルなどが処理されることを要求しないことにある。本発明によれば、そのような特定を実行するために任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、が使用される。 Furthermore, the present invention makes it possible to rely on low skill servers, such as servers that do not have DASH knowledge. The reason is that the identification of the second data to be pushed does not require the MPD file or the like to be processed. According to the present invention, only the optional header field, and possibly further the first data identification information, is used to perform such identification.
従って本発明の複数の実施形態は、クライアント主導型サーバプッシュアプローチを含む、サーバ案内型ストリーミングのための軽量なメカニズムを提供する。複数の実施形態はDASHネットワークと関連して実装され得る。 Accordingly, embodiments of the present invention provide a lightweight mechanism for server-guided streaming, including a client-driven server push approach. Multiple embodiments may be implemented in connection with a DASH network.
本発明の複数の実施形態は、現存するHTTP/2フィーチャと両立し得る。これらのフィーチャは、本発明の複数の実施形態を実装するために有利に使用され得る。 Embodiments of the present invention may be compatible with existing HTTP / 2 features. These features can be advantageously used to implement multiple embodiments of the present invention.
ネットワークの性能は一般的に高められる。 Network performance is generally enhanced.
方法およびデバイスの任意のフィーチャは、従属請求項において定義される。それらのうちの幾つかは、方法に関連して以下で説明される。しかし、それらは、対応するデバイスにも適用され得る。 Any features of the method and device are defined in the dependent claims. Some of them are described below in connection with the method. However, they can also be applied to corresponding devices.
一実施形態では、第1および第2のデータ特定情報は、それぞれ、第1および第2のユニフォームリソースアイデンティファイア、URI、を含む。 In one embodiment, the first and second data identification information includes first and second uniform resource identifiers, URIs, respectively.
1つの特定の実施形態では、1つまたは複数の任意ヘッダフィールドは、HTTPリクエストの内容から第2URIを生成する少なくとも1つの構築ルールを含む。換言すれば、任意ヘッダフィールドは、構築ルールを用いて、1つまたは複数の第2URIを暗に定義する。上記から推測されるように、構築ルールは、1つまたは複数の第2URIを得るために任意ヘッダフィールド、および場合によってはさらに第1URI、を用いるだけである。 In one particular embodiment, the one or more optional header fields include at least one construction rule that generates a second URI from the content of the HTTP request. In other words, the optional header field implicitly defines one or more second URIs using construction rules. As can be inferred from the above, the construction rule only uses an optional header field, and possibly even a first URI, to obtain one or more second URIs.
例えば、1つまたは複数の任意ヘッダフィールドは変化部分情報および代入情報を含み、変化部分情報は参照URI内の少なくとも1つの変化サブパーツを特定し、代入情報は1つまたは複数の第2のURIを定義するために参照URIにおいて特定される変化サブパーツに取って代わる少なくとも1つの代入値を含む。従って、この規定は、構築ルールがどのように使用され得るかを定義する。 For example, the one or more optional header fields include change part information and substitution information, the change part information identifies at least one change subpart in the reference URI, and the substitution information is one or more second URIs. Includes at least one substitution value to replace the change subpart identified in the reference URI. This convention thus defines how the construction rules can be used.
1つの特定のフィーチャによれば、参照URIは、受け取られたHTTPリクエストに含まれる第1URIを含む。換言すれば、構築ルール(代入プロセス)は、第1URIに、すなわち要求された第1データのURIに、適用される。それは、構築ルール(これは一般的なものであり得る)は、HTTPリクエストの内容だけを用いて、要求された第1データからプッシュされるべき第2データを推定することを意味する。 According to one particular feature, the reference URI includes a first URI included in the received HTTP request. In other words, the construction rule (substitution process) is applied to the first URI, i.e. to the URI of the requested first data. That means that the construction rule (which may be general) uses only the content of the HTTP request to infer the second data to be pushed from the requested first data.
他の1つの特定のフィーチャによれば、変化部分情報は、代入情報に含まれるそれぞれの1つまたは複数の代入値を用いて置換されるべき参照URI内の2つ以上のサブパーツを特定する。従って、第1URIから複雑な第2URIが生成され得る。 According to another particular feature, the changed portion information identifies two or more subparts in the reference URI to be replaced using each one or more substitution values included in the substitution information. . Therefore, a complicated second URI can be generated from the first URI.
さらに別の1つの特定のフィーチャによれば、変化部分情報は、2つ以上のサブパーツの代入値をそれらのそれぞれの優先レベルに応じて連続的に考慮するために参照URI内の2つ以上のサブパーツの各々をそれぞれの優先レベルと関連付ける。この規定により、クライアントデバイスは、複数の第2URIを順序付け、このように、第2データがサーバデバイスによりプッシュされる順序を主導する。 According to yet another particular feature, the change part information can be obtained by considering two or more subpart substitution values continuously in the reference URI in order to consider them sequentially according to their respective priority levels. Each of the subparts is associated with a respective priority level. With this definition, the client device orders multiple second URIs and thus leads the order in which the second data is pushed by the server device.
幾つかの実施形態では、任意ヘッダフィールドは、第2URIを明示的に含む。これは、例えば構築ルールを用いる1つまたは複数の第2URIの暗黙の定義とは反対である。 In some embodiments, the optional header field explicitly includes a second URI. This is contrary to the implicit definition of one or more second URIs, for example using construction rules.
他の複数の実施形態において、第1データ特定情報は、サーバデバイス上のメインリソースを特定する第1ユニフォームリソースアイデンティファイア、URI、を含むとともにメインリソースのサブパーツを第1データとして定義するサブパーツ情報を含み;および
任意ヘッダフィールドは、第2データ特定情報を定義するために第1データ特定情報内のサブパーツ情報に取って代わる代入サブパーツ情報を含む。
In other embodiments, the first data specifying information includes a first uniform resource identifier, a URI that specifies a main resource on the server device, and a sub part that defines a sub part of the main resource as the first data. And the optional header field includes substitution subpart information that replaces the subpart information in the first data identification information to define the second data identification information.
サブパーツ情報の一例は、DASHにおいて使用されるレンジパラメータである。この例では、サブパーツ情報はメインリソースの中のバイトのレンジ値を含む。 An example of the sub-part information is a range parameter used in DASH. In this example, the sub-part information includes a range value of bytes in the main resource.
複数の実施形態では、第1および第2のデータは、それぞれ、DASHマニフェストプレゼンテーション記述内の第1および第2のデータ特定情報により特定されるメディアセグメントまたはメディアコンテンツサブパーツである。DASHレンジパラメータの使用はメディアコンテンツ/セグメントサブパーツを特定することを可能にし、DASHにおけるURIは、普通、1つのメディアセグメント全体を特定するということに注意されたい。 In embodiments, the first and second data are media segments or media content subparts identified by first and second data identification information, respectively, in the DASH manifest presentation description. Note that the use of the DASH range parameter allows media content / segment subparts to be identified, and a URI in DASH typically identifies an entire media segment.
公知の従来技術と比べると、クライアントデバイスがサーバのプッシュフィーチャを主導または案内するのを助ける必要もある。これと関連して、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法をも提供し、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もしその第1任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
HTTPリクエストから得られるメインリソースを用いてデータのセットを特定するステップ;
第2データのリストを得るために1つまたは複数のフィルタリングパラメータを用いて、特定されたセットの各データをフィルタリングするステップ;および
第2データをクライアントデバイスにプッシュするステップ;
を含む。
Compared to the known prior art, there is also a need to help the client device to lead or guide the push feature of the server. In this context, the present invention also provides a method for transmitting data between a server device and a client device, the method being at the server device:
Receiving an HTTP request for obtaining first data from a client device, wherein the HTTP request includes a first optional header field including one or more filtering parameters;
Retrieving the first data and sending it to the client device; and if its first optional header field is present in the HTTP request:
Identifying a set of data using the main resource obtained from the HTTP request;
Filtering each identified set of data using one or more filtering parameters to obtain a list of second data; and pushing the second data to the client device;
including.
プッシュ約束フィーチャを含むプロトコルに関しては、この方法は、第2データをプッシュする前に、第2データのプッシュをアナウンスするプッシュ約束メッセージをクライアントデバイスに送るステップをさらに含む。 For protocols that include a push promise feature, the method further includes sending a push promise message to the client device that announces the push of the second data before pushing the second data.
クライアントの視点から、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、クライアントデバイスにおいて:
第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、生成するステップ;
第1データを得るとともにサーバデバイスに、HTTPリクエストから推定されるメインリソースにおいて参照される第2データを、フィルタリングパラメータに従って、プッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
From a client perspective, the present invention provides a method for transmitting data between a server device and a client device, the method at the client device:
Generating an HTTP request to obtain first data, wherein the HTTP request includes a first optional header field that includes one or more filtering parameters;
Obtaining the first data and sending the HTTP request to the server device to cause the server device to push the second data referenced in the main resource estimated from the HTTP request according to the filtering parameters;
including.
1つまたは複数のフィルタリングパラメータは:
− リソースタイプを定義し;その1つまたは複数のリソースタイプは、アプリケーションタイプ、テキストタイプ、イメージタイプ、ビデオタイプ、オーディオタイプからの1つまたは複数のタイプを含み;または
− DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定し;または
− メインリソースのサブパーツを特定する時間レンジを用いて第1任意ヘッダフィールドにおいて定義される。
One or more filtering parameters are:
-Define a resource type; the one or more resource types include one or more types from application type, text type, image type, video type, audio type; or-in the DASH media presentation description The element identifier is used to identify one or more groups of data; or the first optional header field is defined using a time range that identifies a sub-part of the main resource.
さらに、プッシュ約束メッセージも受け取られ得る。 In addition, push promise messages may be received.
相関して、本発明はクライアントデバイスとデータを交換するためのサーバデバイスを提供し、このデバイスは:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もし第1任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
HTTPリクエストから得られるメインリソースを用いてデータのセットを特定するステップ;
第2データのリストを得るために1つまたは複数のフィルタリングパラメータを用いて、特定されたセットの各データをフィルタリングするステップ;および
第2データをクライアントデバイスにプッシュするステップ;
を実行するように構成された少なくとも1つのマイクロプロセッサを含む。
In correlation, the present invention provides a server device for exchanging data with a client device, which device:
Receiving an HTTP request for obtaining first data from a client device, wherein the HTTP request includes a first optional header field including one or more filtering parameters;
Retrieving the first data and sending it to the client device; and if the first optional header field is present in the HTTP request:
Identifying a set of data using the main resource obtained from the HTTP request;
Filtering each identified set of data using one or more filtering parameters to obtain a list of second data; and pushing the second data to the client device;
Including at least one microprocessor configured to execute.
1つまたは複数のフィルタリングパラメータは:
− リソースタイプを定義し;その1つまたは複数のリソースタイプは、アプリケーションタイプ、テキストタイプ、イメージタイプ、ビデオタイプ、オーディオタイプからの1つまたは複数のタイプを含み;または
− DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定し;または
− メインリソースのサブパーツを特定する時間レンジを用いて第1任意ヘッダフィールドにおいて定義される。
One or more filtering parameters are:
-Define a resource type; the one or more resource types include one or more types from application type, text type, image type, video type, audio type; or-in the DASH media presentation description The element identifier is used to identify one or more groups of data; or the first optional header field is defined using a time range that identifies a sub-part of the main resource.
さらに、本発明はサーバデバイスとデータを交換するためのクライアントデバイスを提供し、このデバイスは:
第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、生成するステップ;
第1データを得るとともにサーバデバイスに、HTTPリクエストから推定されるメインリソースにおいて参照される第2データを、フィルタリングパラメータに従って、プッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を実行するように構成された少なくとも1つのマクロプロセッサを含む。
Furthermore, the present invention provides a client device for exchanging data with a server device, which device:
Generating an HTTP request to obtain first data, wherein the HTTP request includes a first optional header field that includes one or more filtering parameters;
Obtaining the first data and sending the HTTP request to the server device to cause the server device to push the second data referenced in the main resource estimated from the HTTP request according to the filtering parameters;
Includes at least one macro processor configured to execute
このアプローチの1つの例証は、第1データとしてのメインHTMLウェブページの要求である。このとき任意ヘッダフィールドは、そのHTMLページにおいて参照されるどの1つまたは複数のタイプのサブリソースがプッシュされるべきかを定義することができる。従って、任意ヘッダフィールドはフィルタリングパラメータとして振る舞う。例えば、それは、jpgイメージのサブセットだけをプッシュしてもらうためにサブリソースをフィルタリングするフィルタリングパラメータ“images/*.jpg”を提供することができる。 One example of this approach is a request for a main HTML web page as the first data. The optional header field can then define which type or types of sub-resources referenced in the HTML page are to be pushed. Therefore, the optional header field behaves as a filtering parameter. For example, it can provide a filtering parameter “images / *. Jpg” that filters sub-resources to have only a subset of jpg images pushed.
クライアントデバイスによるサーバプッシュフィーチャの改善された制御は、任意ヘッダフィールドを通して、リクエストにより特定されるデータに対して適用されるフィルタリングパラメータの使用を通して得られる。 Improved control of the server push feature by the client device is obtained through the use of filtering parameters applied to the data specified by the request through an optional header field.
重ねて、そのような任意ヘッダフィールドの使用は、サーバのエンドにおける下位互換性を可能にする。 Again, the use of such an optional header field allows backward compatibility at the end of the server.
このように本発明の実施形態は、クライアント主導型サーバプッシュアプローチを含む、サーバ案内型ストリーミングのための軽量なメカニズムを提供する。複数の実施形態は、DASHネットワークと関連して実装され得る。 Thus, embodiments of the present invention provide a lightweight mechanism for server-guided streaming, including a client-driven server push approach. Multiple embodiments may be implemented in connection with a DASH network.
本発明の複数の実施形態は、現存するHTTP/2フィーチャと両立し得る。これらのフィーチャは、本発明の実施形態を実装するために有利に使用され得る。 Embodiments of the present invention may be compatible with existing HTTP / 2 features. These features can be advantageously used to implement embodiments of the present invention.
ネットワークの性能は一般的に高められる。 Network performance is generally enhanced.
方法およびデバイスの任意のフィーチャは、従属請求項において定義される。それらのうちの幾つかは、方法と関連して以下で説明される。しかし、それらは、対応するデバイスにも適用され得る。 Any features of the method and device are defined in the dependent claims. Some of them are described below in connection with the method. However, they can also be applied to corresponding devices.
複数の実施形態において、メインリソースは第1データである。それは、単独で利用されるHTTPリクエストは、サーバデバイスが、プッシュされるべき全ての第2データを効率的に特定することを可能にするということを意味する。サーバデバイスは、上で論じられた従来技術のためのDASH知識などの追加の知識を必要としない。従って低スキルのサーバデバイスが使用され得る。 In some embodiments, the main resource is the first data. That means that HTTP requests used alone allow the server device to efficiently identify all the second data to be pushed. The server device does not require additional knowledge, such as DASH knowledge for the prior art discussed above. Thus, a low skill server device can be used.
他の実施形態において、HTTPリクエストは、サーバデバイス上のメインリソースを特定するユニフォームリソースアイデンティファイア、URI、を定義する第2任意ヘッダフィールドを含む。そのような実施形態は、クライアントデバイスが初めにメインリソースを得、その後にそれを、メインリソースから適切な第2データを実際に選択するためにフィルタリングパラメータを特定する(および任意ヘッダフィールドを用いて定義する)ために分析する必要があるとき、実装され得る。実際、そのような場合、クライアントデバイスは、メインリソースを要求するとき、メインリソースの内容へのアクセスをまだ持っていないので、フィルタリングパラメータを定義することはできない。 In other embodiments, the HTTP request includes a second optional header field that defines a uniform resource identifier, URI, that identifies the main resource on the server device. Such an embodiment specifies that the client device first obtains the main resource and then specifies the filtering parameters to actually select the appropriate second data from the main resource (and using an optional header field) Can be implemented when it needs to be analyzed. In fact, in such a case, when the client device requests the main resource, it cannot define filtering parameters because it does not yet have access to the contents of the main resource.
この規定により、クライアントは、リソースタイプごとのリソースのリストを定義し得るサーバに格納されている静的設定ファイルを指定することができる。そのような静的設定ファイルを使用することは、サーバがリソースタイプフィルタリングパラメータに基づいてリソースを特定するために低スキルを必要とする。 This specification allows a client to specify a static configuration file stored on a server that can define a list of resources for each resource type. Using such a static configuration file requires low skill for the server to identify resources based on resource type filtering parameters.
さらに別の実施形態では、2つ(またはより多くの)フィルタリングパラメータがデータの2つ(またはより多くの)それぞれのグループおよび2つのそれぞれの優先レベルと関連付けられ;フィルタリングするステップは、第2データの順序リストを得るために、第2データを、それらがそれぞれデータするグループの優先レベルに応じて順序正しく配列し;プッシュするステップは、その順序リストに従って第2データをプッシュする。クライアントエンドにおいて、それは、2つのフィルタリングパラメータがデータの2つのグループおよび2つのそれぞれの優先レベルと関連付けられることを意味し;第2データは、それらがそれぞれ属するグループの優先レベルに応じた順序で受け取られる。このことは、クライアントデバイスが、プッシュされたデータを自身が受け取りたい順序を効率的に主導することを可能にする。 In yet another embodiment, two (or more) filtering parameters are associated with two (or more) respective groups of data and two respective priority levels; the step of filtering comprises second data In order to obtain the ordered list, the second data is arranged in order according to the priority level of the group to which each of the data is data; the step of pushing pushes the second data according to the ordered list. At the client end, it means that two filtering parameters are associated with two groups of data and two respective priority levels; the second data is received in an order according to the priority level of the group to which they belong respectively. It is. This allows the client device to efficiently lead the order in which it wants to receive the pushed data.
さらに別の実施形態では、各フィルタリングパラメータはリソースタイプを定義し;その1つまたは複数のリソースタイプは、アプリケーションタイプ(例えばjavascript(登録商標))、テキストタイプ(例えばcssまたはhtml)、イメージタイプ(例えばpngまたはjpg)ビデオタイプ(例えばmp4またはwebm)、オーディオタイプ(例えばmp3またはwav)からの1つまた複数のタイプを含む。 In yet another embodiment, each filtering parameter defines a resource type; the one or more resource types can be an application type (eg, javascript®), a text type (eg, css or html), an image type ( For example, one or more types from png or jpg) video type (eg mp4 or webm), audio type (eg mp3 or wav).
この規定は、特に、html、またはウェブページのロードのためのものなどの類似のエクスチェンジに適用される。もちろん、これらのリソースタイプのいずれの細区分も、特定のコンテンツ(例えば、イメージ、またはJavascriptファンクションのような組み込み型ファンクション)のロードを効率的に行わせるのに役立つであろう。 This rule applies in particular to similar exchanges such as for html or for loading web pages. Of course, any subdivision of these resource types may help to efficiently load specific content (eg, an image or a built-in function such as a JavaScript function).
さらに別の実施形態では、第1任意ヘッダフィールド内の1つまた複数のフィルタリングパラメータは、DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定する。そのようなエレメントは、DASH MPDのAdaptationSetエレメント、PresentationエレメントまたはSegmentエレメントを含み得る。1つの実施形態では、HTTPリクエストにより要求される第1データはDASH MPDである。もちろん、1つの変化形では、DASH MPDは上記の第2任意ヘッダフィールドにおいて明示され得る。 In yet another embodiment, the one or more filtering parameters in the first optional header field identify one or more groups of data using an identifier of an element in the DASH media presentation description. Such an element may include a DASH MPD AdaptationSet element, a Presentation element, or a Segment element. In one embodiment, the first data requested by the HTTP request is DASH MPD. Of course, in one variation, the DASH MPD may be specified in the second optional header field above.
この規定は、クライアントデバイスが、MPDにより定義されるメディアコンテンツの幾つかの部分のプッシュを制御することを可能にする。 This definition allows the client device to control the push of some parts of the media content defined by MPD.
さらに別の実施形態では、1つまたは複数のフィルタリングパラメータは、メインリソースのサブパーツを特定する時間レンジ、例えばDASHリクエストにおいて使用される時間レンジ、を用いて第1任意ヘッダフィールドにおいて定義される。すぐ前の規定と同様に、この一つも、クライアントデバイスが、DASHを用いてストリーミングされるメディアコンテンツのサブパーツがサーバデバイスによってどのようにプッシュされるかを制御することを可能にする。 In yet another embodiment, the one or more filtering parameters are defined in the first optional header field with a time range that identifies subparts of the main resource, eg, a time range used in a DASH request. Similar to the previous convention, this one also allows the client device to control how subparts of media content streamed using DASH are pushed by the server device.
本発明の他の1つの面は、デバイス内のマイクロプロセッサまたはコンピュータシステムにより実行されたときそのデバイスに上で定義されたいずれかの方法を実行させるプログラムを格納する非一時的コンピュータ可読媒体に関連する。 Another aspect of the invention relates to a non-transitory computer readable medium that stores a program that, when executed by a microprocessor or computer system in a device, causes the device to perform any of the methods defined above. To do.
非一時的コンピュータ可読媒体は、方法およびデバイスに関連して上および下で記述されるものに類似するフィーチャおよび利点、特に、クライアントによるサーバプッシュフィーチャの制御を改善することおよび低スキルのサーバデバイスに依拠することについてのそれ、を有し得る。 Non-transitory computer readable media provide features and benefits similar to those described above and below in connection with methods and devices, particularly for improved control of server push features by clients and for low skill server devices. You can have that about relying.
本発明のさらに別の面は、上で定義されたいずれかの方法の各ステップを実行するようにされた手段を含むデバイスに関連する。 Yet another aspect of the invention relates to a device comprising means adapted to perform the steps of any of the methods defined above.
本発明のさらに別の面は、実質的に添付図面の図3aまたは3bまたは5aまたは5bまたは6aまたは7bまたは8と関連して上で記載されるとともにこれらに図示されている、サーバデバイスとクライアントデバイスとの間でリソースを送信する方法に関連する。 Yet another aspect of the present invention is the server device and client described and illustrated substantially in connection with FIGS. 3a or 3b or 5a or 5b or 6a or 7b or 8 of the accompanying drawings. Related to how resources are sent to and from the device.
本発明による方法の少なくとも幾つかの部分はコンピュータで実行され得る。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)またはソフトウェア面と、全て本明細書において“回路”、“モジュール”または“システム”と一般的に称され得るハードウェア面とを組み合わせた実施形態の形をとることができる。さらに、本発明は、コンピュータ可用プログラムコードが媒体内に具体化されている任意の有形表現媒体において具体化されるコンピュータプログラム製品の形をとることができる。 At least some parts of the method according to the invention can be executed on a computer. Accordingly, the present invention encompasses completely hardware embodiments, fully software embodiments (including firmware, resident software, microcode, etc.) or software aspects, all herein referred to as “circuits”, “modules” or It can take the form of an embodiment that combines a hardware aspect, which can be generally referred to as a “system”. Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of representation in which computer usable program code is embodied in the medium.
本発明はソフトウェアを用いて実装され得るので、本発明は任意の適切な搬送媒体でプログラマブルな装置に供給されるコンピュータ可読コードとして具体化され得る。有形搬送媒体は、フロッピーディスク、CD−ROM、ハードディスクドライブ、磁気テープデバイスまたはソリッドステートメモリデバイスなどの記憶媒体を含み得る。一時的搬送媒体は電気信号、電子信号、光信号、音響信号、磁気信号または電磁信号、例えばマイクロウェーブもしくはRF信号、などの信号を含み得る。 Since the invention can be implemented using software, the invention can be embodied as computer readable code supplied to a programmable device on any suitable carrier medium. The tangible carrier medium may include a storage medium such as a floppy disk, CD-ROM, hard disk drive, magnetic tape device or solid state memory device. The temporary carrier medium may include signals such as electrical signals, electronic signals, optical signals, acoustic signals, magnetic signals or electromagnetic signals, such as microwave or RF signals.
本発明の他の特徴および利点は、添付図面と関連して、非限定的な例示的実施形態についての以下の記載から明らかになるであろう。 Other features and advantages of the present invention will become apparent from the following description of non-limiting exemplary embodiments, taken in conjunction with the accompanying drawings.
上で簡潔に紹介されたように、本発明はHTTP通信ネットワークを通してのデータ送信に関する。1つの用例はDASHなどの適応データストリーミングである。 As briefly introduced above, the present invention relates to data transmission over an HTTP communication network. One example is adaptive data streaming such as DASH.
HTTPは、ウェブリソース、通例ウェブページ、を送るために用いられるプロトコルである。HTTPはクライアントおよびサーバに対して次のことを暗示する:
− クライアントはサーバにリクエストを送り、そのリクエストは様々な種類の“ヘッダ”が任意に後に続く“request_line”から構成される。“request−line”は、普通、場合によってはレンジヘッダなどを用いてサーバ上の要求されたリソースまたはデータを特定する“Request−URI”パラメータと共にメソッド(例えば“GET”)を含む;
− サーバは、そのウェブリソースのリプリゼンテーションを含むレスポンスを用いてクライアントのリクエストに応える。
HTTP is a protocol used to send web resources, typically web pages. HTTP implies the following for clients and servers:
The client sends a request to the server, which consists of a “request_line” optionally followed by various types of “headers”. “Request-line” typically includes a method (eg, “GET”) with a “Request-URI” parameter that identifies the requested resource or data on the server, possibly using a range header or the like;
-The server responds to the client's request with a response that includes a representation of the web resource.
リクエストおよびレスポンスは、様々なパーツ、特にHTTPヘッダ、を含むメッセージである。HTTPヘッダは、値とともに名を含む。例えば、“Host: en.wikipedia.org”を考察すると、“Host”はヘッダ名であり、それの値は“en.wikipedia.org”である。それは、クエリされたリソースをホストに示すために使用される(例えば、HTTPを説明するWikipedia(ウィキペディア)ページはHTTP://en.wikipedia.org/wiki/HTTPから入手できる)。HTTPヘッダは、クライアントのリクエストおよびサーバのレスポンスにおいて出現する。 Requests and responses are messages that contain various parts, especially HTTP headers. The HTTP header includes a name along with a value. For example, consider “Host: en.wikipedia.org” where “Host” is the header name and its value is “en.wikipedia.org”. It is used to show the queried resource to the host (eg, the Wikipedia page describing HTTP is available from HTTP://en.wikipedia.org/wiki/HTTP). HTTP headers appear in client requests and server responses.
HTTPの新しいバージョンであるHTTP/2は、ストリームを通してリクエスト/レスポンスを交換することを可能にする。ストリームは、どのHTTPリクエストおよびレスポンスの交換のためにもHTTP/2コネクションの内部で生成される。フレームは、リクエストおよびレスポンスの内容、疑似ヘッダおよびヘッダを伝えるためにストリーム内で交換される。 A new version of HTTP, HTTP / 2, allows exchanging requests / responses through a stream. A stream is generated inside an HTTP / 2 connection for the exchange of any HTTP request and response. Frames are exchanged within the stream to convey request and response content, pseudo headers and headers.
HTTP/2は:
− HEADERS:HTTPヘッダの送信のために提供される
○HTTP/2はヘッダ(任意である。すなわち処理側デバイスに理解されなければ無視される)をより厳しいルールに従う疑似ヘッダから区別する。後者は、HTTPメソッドおよびrequest−URIを示すために以前のHTTPバージョンで定義されているrequest−lineのマッピングに対応する。本文書においては、“HTTPヘッダ”または“ヘッダ”は、任意のヘッダを指定するべく意図されているのであり、明示的にそのようなものとして指定される疑似ヘッダを指定するべく意図されているのではない。
○さらに、本文書においてもなお、“Request−URI”は、RFC2616で定義されているRequest−URI(すなわち、“request−line”に用いられているサーバ上の要求されているリソースを特定するパラメータ)またはそれの同等物/HTTP/2疑似ヘッダへの変換を指定するべく意図されている。
− DATA:これは、HTTPメッセージ内容の送信のために提供される
− PUSH_PROMISE:これはプッシュされる内容をアナウンスするために提供される
− PRIORITY:これはストリームの優先順位をセットするために提供される
− WINDOW_UPDATE:これは制御フローウィンドウの値をアップデートするために提供される
− SETTINGS:これは設定パラメータを伝えるために提供される
− CONTINUATION:これはヘッダブロックフラグメントのシーケンスを継続させるために提供される
− RST_STREAM:これはストリームを終端させまたはキャンセルするために提供される
などの様々な意味を有するフレームの限られたセットを定義する。
HTTP / 2 is:
-HEADERS: provided for transmission of HTTP headers. HTTP / 2 distinguishes headers (optional, ie ignored if not understood by the processing device) from pseudo headers that follow stricter rules. The latter corresponds to the request-line mapping defined in previous HTTP versions to indicate HTTP methods and request-URIs. In this document, “HTTP header” or “header” is intended to specify an arbitrary header and is intended to specify a pseudo-header that is explicitly specified as such. Not.
○ Furthermore, in this document, “Request-URI” is a parameter that specifies the requested resource on the server used in the Request-URI defined in RFC2616 (that is, “request-line”). ) Or its equivalent / HTTP / 2 pseudo-header conversion.
-DATA: This is provided for the transmission of HTTP message content-PUSH_PROMISE: This is provided to announce the content to be pushed-PRIORITY: This is provided to set the priority of the stream -WINDOW_UPDATE: This is provided to update the value of the control flow window.-SETTINGS: This is provided to convey configuration parameters.-CONTINUATION: This is provided to continue the sequence of header block fragments. -RST_STREAM: This defines a limited set of frames with various meanings, such as provided to terminate or cancel a stream.
HTTP/2では、リクエストはそのとき第1HEADERフレームおよび1つまたは複数のDATAフレームに変換され、HTTP/1.xからのrequest−lineは、HTTP/2仕様に記載されているように疑似ヘッダフィールドに変換される。 In HTTP / 2, the request is then converted into a first HEADER frame and one or more DATA frames, and HTTP / 1. The request-line from x is converted into a pseudo header field as described in the HTTP / 2 specification.
本明細書は、クライアントからサーバへ送られるメッセージを示すために“リクエスト”または“HTTPリクエスト”を使用し、サーバからクライアントへのメッセージを示すために“レスポンス”または“HTTPレスポンス”を使用する。リクエストおよびレスポンスの他に、私たちは、サーバによりクライアントに対して開始されるメッセージに対応する通知またはサーバ通知についても語る。この用語は、HTTP/1.xおよびHTTP/2に準拠している。 This specification uses “request” or “HTTP request” to indicate a message sent from a client to a server, and uses “response” or “HTTP response” to indicate a message from the server to the client. In addition to requests and responses, we also talk about notifications or server notifications corresponding to messages initiated by the server to the client. The term is HTTP / 1. Conforms to x and HTTP / 2.
サーバによるプッシュは、サーバが請求されていないウェブリソースリプリゼンテーションをクライアントに送ることを可能にするためにHTTP/2に導入されている。ウェブページなどのウェブリソースは一般的に他のリソースへのリンクを含み、それら自身は他のリソースへのリンクを含み得る。ウェブページを完全に表示するためには、リンクされまたはサブリンクされているリソースの全てがクライアントにより取り出されなければならないことがある。このますます増加する発見はウェブページの低速な表示を、特にモバイルネットワークなどの大レイテンシのネットワークにおいて、もたらすであろう。 Server push has been introduced in HTTP / 2 to allow the server to send unsolicited web resource representations to clients. Web resources such as web pages typically include links to other resources, and themselves may include links to other resources. In order to fully display a web page, all of the linked or sublinked resources may have to be retrieved by the client. This increasing discovery will lead to slow display of web pages, especially in high latency networks such as mobile networks.
所与のウェブページに対するリクエストを受け取ると、サーバは、要求されたリソースの完全な処理のために他のどのリソースが必要かを知ることができる。要求されたリソースとリンクされているリソースとを同時に送ることにより、サーバは、そのウェブページのローディング時間を短縮することを可能にする。従って、プッシュフィーチャを用いて、サーバは、所与のリソースを要求された時に追加のリソースリプリゼンテーションを送ることができる。 Upon receiving a request for a given web page, the server can know which other resources are required for complete processing of the requested resource. By sending the requested resource and the linked resource at the same time, the server makes it possible to reduce the loading time of the web page. Thus, using push features, the server can send additional resource representations when requested for a given resource.
リンクされているリソースの例として、図1aは、サーバにより所有されているリソースのセットとそれらの関係とのグラフを示す。リソースのセットは絡み合っている:R1、R2、R3、およびR4は、クライアントにより適切に処理されるべく一緒にダウンロードされなければならないリソースである。さらに、サブリソースAからHが定義される。これらのサブリソースは1つ、2つまたは3つのリソースに関連付けられている。例えば、AはR1にリンクされ、CはR1、R2およびR4にリンクされている。 As an example of linked resources, FIG. 1a shows a graph of a set of resources owned by a server and their relationships. The set of resources is intertwined: R 1 , R 2 , R 3 , and R 4 are resources that must be downloaded together to be properly processed by the client. Further, sub-resources A to H are defined. These sub-resources are associated with one, two or three resources. For example, A is linked to R 1 and C is linked to R 1 , R 2 and R 4 .
図1eのフローチャートを参照して、プッシュフィーチャを実装するサーバの例示的動作モードが記載される。 With reference to the flowchart of FIG. 1e, an exemplary mode of operation of a server implementing a push feature is described.
ステップ100の間に、サーバは最初のリクエストを受け取る。次に、サーバは、ステップ101の間にレスポンスの一部としてプッシュするリソースを特定し、ステップ102の間にプッシュ約束メッセージをクライアントに送る。その後、それはステップ103の間にコンテンツレスポンスを送り始める。プッシュ約束メッセージは、サーバが、例えば図1aに示されている依存性に基づいてプッシュしようとしている他のリソースを特定する。これらのメッセージは、どのプッシュされるリソースが送られるかを前もってクライアントに知らせるために送られる。特に、これは、同時にプッシュされつつあるかまたはまさにプッシュされようとしているリソースに対するリクエストをクライアントが送るリスクを減らす。このリスクをさらに減らすために、サーバは、プッシュ約束メッセージを、そのプッシュ約束に記載されているリソースに関連するレスポンスの部分を送る前に、送るべきである。これは、クライアントが、約束されたリソースのプッシュを、もしクライアントがそれらのリソースを欲しくなければ、キャンセルすることも可能にする。次に、ステップ104の間にレスポンスと全ての約束されたリソースとを送る。プロセスはステップ105の間に終了する。
During
図1bおよび1cは、それぞれ、プッシュフィーチャを使用しないウェブページのロードおよびプッシュフィーチャを使用するウェブページのロードを示す。 FIGS. 1b and 1c show loading a web page without a push feature and loading a web page with a push feature, respectively.
図1bは、サーバのプッシュフィーチャを使用しないHTTPエクスチェンジを示す:クライアントはR1を要求し、次にそれはR2、A、B、CおよびDを発見してそれらを要求する。それらを受信した後、クライアントはR3、R4、FおよびGを要求する。最後にクライアントはHおよびIサブリソースを要求する。従って、必要とされるどのリソース:リソースR1からR4およびサブリソースAからI、に対してもリクエストが送られなければならない。さらに、このプロセスは、リソースのセット全体を取り出すために4つのラウンドトリップを必要とする。 Figure 1b shows the HTTP exchange that does not use the push feature of the server: the client requests the R 1, then it requests them to discover R 2, A, B, C and D. After receiving them, the client requests R 3 , R 4 , F and G. Finally, the client requests H and I sub-resources. Thus, a request must be sent to any required resource: resources R 1 to R 4 and sub-resources A to I. In addition, this process requires four round trips to retrieve the entire set of resources.
図1cは、直接連結されているサブリソースのサーバによるプッシュのフィーチャを使用するHTTPエクスチェンジを示す。R1の要求後、サーバはR1を送るとともにA、B、CおよびDをプッシュする。クライアントはR2を特定し、それを要求する。サーバはR2を送り、FおよびGをプッシュする。最後にクライアントはR3、R4を特定し、これらのリソースを要求する。サーバはR3、R4を送り、HおよびIをプッシュする。このように、リクエストの数はエレメントR1からR4に限定される。エレメントAからIは図1aに示されている依存性に基づいてサーバによりクライアントに“プッシュ”され、これにより、関連するリクエストを不要にする。このプロセスは、リソースのセット全体を取り出すために3つのラウンドトリップを必要とする。 FIG. 1c shows an HTTP exchange that uses the push feature by a server of directly linked sub-resources. After R 1 request, the server pushes A, B, C and D and sends an R 1. The client identifies the R 2, requests it. The server sends R 2 and pushes F and G. Finally, the client identifies R 3 and R 4 and requests these resources. The server sends R 3 , R 4 and pushes H and I. Thus, the number of requests is limited to elements R 1 to R 4 . Elements A through I are “pushed” by the server to the client based on the dependencies shown in FIG. 1a, thereby eliminating the associated request. This process requires three round trips to retrieve the entire set of resources.
このように、図1bおよび1cに示されているように、サーバがプッシュフィーチャを使用すると、リソースをそのサブリソースと共にロードするのに必要なHTTPラウンドトリップ(リクエスト+レスポンス)の数が減らされる。これは、モバイルネットワークなどの大レイテンシのネットワークのために特に興味あることである。 Thus, as shown in FIGS. 1b and 1c, when a server uses a push feature, the number of HTTP round trips (request + response) required to load a resource with its sub-resources is reduced. This is of particular interest for high latency networks such as mobile networks.
リソースのセット、典型的にはウェブページとそのサブリソース、のローディング時間を短縮するためにHTTP/2は複数のリクエストおよびレスポンス優先順位を並行して交換することを可能にする。図2に示されているように、ウェブページは、JavaScript、イメージなどの数個のリソースのダウンロードを必要とすることがある。最初のHTTPエクスチェンジ200の間に、クライアントはHTMLファイルを取り出す。このHTMLファイルは、2つのJavaScriptファイル(JS1、JS2)、2つのイメージ(IMG1、IMG2)、1つのCSSファイルおよび1つのHTMLファイルへのリンクを含む。エクスチェンジ201の間に、クライアントは各ファイルに対するリクエストを送る。図2のエクスチェンジ201において与えられる順序はウェブページの順序に基づき、クライアントはリンクが発見されると直ちにリクエストを送る。その後サーバは、JS1、CSS、IMG1、HTML、IMG2およびJS2に対するリクエストを受信し、これらのリクエストをその順序に従って処理する。その後、クライアントはこれらのリソースをその順序で取り出す。
In order to reduce the loading time of a set of resources, typically a web page and its sub-resources, HTTP / 2 allows multiple request and response priorities to be exchanged in parallel. As shown in FIG. 2, a web page may require the download of several resources, such as JavaScript and images. During the
クライアントは、ウェブページ記述(HTMLファイル)において挙げられているサブリソースをダウンロードするために自身の適切な順序を持つことを望むであろう。そのような場合、サーバにとっては、特にその順序を用いてプッシュフィーチャを実行するために、この情報を持つことは貴重なことであろう。 The client will want to have its proper order to download the sub-resources listed in the web page description (HTML file). In such cases, it may be valuable for the server to have this information, especially to perform push features using that order.
図1dのフローチャートは、プッシュフィーチャが実行されるときのクライアント側でのプロセスを示す。 The flowchart of FIG. 1d shows the client-side process when a push feature is performed.
クライアントは、サーバから取り出すリソースを特定すると、初めにステップ106の間に、対応するデータが自身のキャッシュメモリ内に既に存在するか否かをチェックする。そのリソースが既にキャッシュメモリ内に存在するならば(Yes)、それはステップ107の間にそれから取り出される。キャッシュされているデータは、以前のリクエストから取り出されたデータまたは以前にサーバによりプッシュされたデータであろう。それがキャッシュメモリ内に存在しない場合(No)、クライアントはステップ108の間にリクエストを送ってサーバのレスポンスを待つ。
When the client identifies a resource to retrieve from the server, it first checks during
サーバからフレームを受け取ると、クライアントはステップ109の間にそのフレームがプッシュ約束に対応するフレームであるか否かをチェックする。もしそのデータフレームがプッシュ約束に対応するならば(Yes)、ステップ110の間に、クライアントはそのプッシュ約束を処理する。そうするために、クライアントは、プッシュされるべきリソースを特定する。クライアントがそのリソースを受け取ることを希望しなければ、クライアントはエラーメッセージをサーバに送ることができるのでサーバはそのリソースをプッシュしない。そうでなければ、クライアントは、対応するプッシュされたコンテンツを受け取るまでそのプッシュ約束を保存しておく。そのプッシュ約束は、約束されたリソースをサーバがプッシュしている間にクライアントがその約束されたリソースを要求しないように、使用される。
Upon receiving a frame from the server, the client checks during
データフレームがプッシュ約束に対応しない場合(No)、ステップ111の間に、そのフレームがプッシュされたデータに関連するデータフレームであるか否かがチェックされる。それがプッシュされたデータに関連する場合(Yes)、クライアントはステップ112の間にそのプッシュされたデータを処理する。そのプッシュされたデータはクライアントのキャッシュの中に格納される。
If the data frame does not correspond to the push commitment (No), it is checked during
そのフレームがプッシュされたデータに関連するデータフレームでない場合(No)、ステップ113の間に、それがサーバから受信されたレスポンスに対応するか否かがチェックされる。そのフレームがサーバからのレスポンスに対応する場合(Yes)、そのレスポンスはステップ114の間に処理される(例えば、アプリケーションに送られる)。
If the frame is not a data frame associated with the pushed data (No), it is checked during
そうでない場合(No)、ステップ115の間に、そのフレームがレスポンスの終わりを特定するか(Yes)否かがチェックされる。この場合、プロセスはステップ116の間に終了される。そうでない場合、プロセスはステップ109に戻る。
If not (No), during
このように、クライアントはレスポンスおよび約束されたリソースを受け取ると思われる。従って、取り出されたウェブページを表示するブラウザなどのアプリケーションによってレスポンスが使用されている間、約束されたリソースは一般的にクライアントのキャッシュに格納されている。プッシュされたリソースのうちの1つをクライアントアプリケーションが要求すると、そのリソースはネットワーク遅延を招くことなく直ちにクライアントのキャッシュから取り出される。 In this way, the client will receive the response and the promised resource. Thus, promised resources are typically stored in the client's cache while the response is being used by an application such as a browser that displays the retrieved web page. When a client application requests one of the pushed resources, that resource is immediately removed from the client's cache without incurring a network delay.
プッシュされたリソースのキャッシュにおける保存は、キャッシュ制御ディレクティブを使用して制御される。キャッシュ制御ディレクティブは、レスポンスの制御のためにも使用される。これらのディレクティブは特にプロキシに対して適用可能であり、リソースは、プッシュされたリソースであってもプッシュされたリソースでなくても、プロキシによりまたはクライアントのみにより、保存され得る。 The storage of pushed resources in the cache is controlled using cache control directives. Cache control directives are also used for response control. These directives are particularly applicable to proxies, where resources can be saved by the proxy or by the client alone, whether pushed or not.
上で言及されたように、クライアントは、ウェブページ記述(HTMLファイル)において挙げられているサブリソースをダウンロードする自身の適切な順序を持つことを望むであろうから、サーバのエンドにおけるプッシュフィーチャを主導するべきである。本発明は、この点での現下の状況を、例えばクライアントが第1リソースの要求後に希望することのある(サブ)リソースまたは(サブ)リソースの1つもしくは複数の部分の特定のセットをサーバに知らせるために、改善することを意図している。特に、本発明は、僅かのインテリジェンスしか持っていないサーバ、例えば、クライアントがそれらの(サブ)リソースを特定するための根拠としたウェブページ記述などを処理するための知識を持っていないサーバ、に適合しようとしている。 As mentioned above, the client will want to have its proper order of downloading the sub-resources listed in the web page description (HTML file), so it will push the push feature at the end of the server. Should lead. The present invention provides the server with a specific set of (sub) resources or one or more portions of (sub) resources that the client may desire after requesting the first resource, for example, in this respect Intended to improve to inform. In particular, the present invention applies to servers that have little intelligence, such as servers that do not have the knowledge to process web page descriptions as the basis for clients to identify their (sub) resources. Trying to fit.
本発明に対するそのようなニーズは、HTTPを通してのHTTPストリーミングに関して、例えば、プッシュフィーチャを使用するとき、DASHなどの適応HTTPストリーミングと関連して、大きくなる。 Such needs for the present invention are greater with respect to HTTP streaming over HTTP, for example, in connection with adaptive HTTP streaming such as DASH when using push features.
HTTPを通してのメディアストリーミングの一般的原理が図3に示されている。HTTPを通しての適応メディアストリーミングのための新しいプロトコルおよび標準規格のほとんどは、この原理に基づいている。これはDASHの場合であり、以下の説明はこれについて言及する。 The general principle of media streaming over HTTP is shown in FIG. Most new protocols and standards for adaptive media streaming over HTTP are based on this principle. This is the case for DASH, and the following description refers to this.
メディアサーバ300はクライアント310にデータをストリーミングする。メディアサーバはメディアプレゼンテーションを保存している。例えば、メディアプレゼンテーション301はオーディオおよびビデオデータを含む。オーディオおよびビデオは同じファイルにおいてインターリーブされ得る。メディアプレゼンテーションが構築される仕方は、以下で図4aと関連して記載される。メディアプレゼンテーションは、独立してアドレスされダウンロードされ得る小さな独立の連続的な、MP4セグメントなどの、一時的セグメント302a、302bおよび302cに時間的に分割される。これらの一時的セグメントの各々のためのメディアコンテンツのダウンロードアドレス(HTTP URL)は、クライアントに対してサーバによりセットされる。オーディオ/ビデオメディアコンテンツの各一時的セグメントは、1つのHTTPアドレスと関連付けられる。
The
メディアサーバは、メディアコンテンツ特性(例えばメディアのタイプ:オーディオ、ビデオ、オーディオ−ビデオ、テキストなど)、符号化フォーマット(例えば、ビットレート、タイミング情報など)、一時的メディアセグメントおよび関連URLのリストを含むメディアプレゼンテーションの内容を記述するマニフェストファイルドキュメント304(その一例が図7aに示されている)をも保存している。あるいは、このドキュメントは、一時的メディアセグメントおよび関連URLの明示的リストを再構築することを可能にするテンプレート情報を含む。このドキュメントは、エクステンシブルマークアップランゲージ(XML:eXtensible Markup Language)を用いて書かれ得る。 The media server includes a list of media content characteristics (eg, media type: audio, video, audio-video, text, etc.), encoding format (eg, bit rate, timing information, etc.), temporary media segments, and associated URLs. A manifest file document 304 (an example of which is shown in FIG. 7a) that describes the contents of the media presentation is also saved. Alternatively, the document includes template information that allows an explicit list of temporary media segments and associated URLs to be reconstructed. This document can be written using the extensible markup language (XML).
マニフェストファイルはクライアントに送られる。ステップ305中にマニフェストファイルを受け取ると、クライアントはメディアコンテンツの一時的セグメントとHTTPアドレスとの関連を知らされる。さらに、マニフェストファイルは、メディアプレゼンテーションの内容(本例ではインターリーブされているオーディオ/ビデオ)に関する情報をクライアントに提供する。この情報は、解像度、ビットレートなどを含み得る。
The manifest file is sent to the client. Upon receipt of the manifest file during
受信した情報に基づいて、クライアントのHTTPクライアントモジュール311は、マニフェストファイルに記載されているメディアコンテンツの一時的セグメントをダウンロードするためのHTTPリクエスト306を送ることができる。サーバのHTTPレスポンス307は、要求された一時的セグメントを伝える。HTTPクライアントモジュール311は、レスポンスから一時的メディアセグメントを抽出して、それらをメディアエンジン312の入力バッファ307に供給する。最後に、メディアセグメントは、それぞれのステップ308および309の間に復号されて表示され得る。
Based on the received information, the client's
メディアエンジン312は、次の一時的セグメントを適時に出させるためのリクエストを得るためにDASH制御エンジン313と相互に作用する。次のセグメントは、マニフェストファイルから特定される。そのリクエストが発せられる時は、受信バッファ307が満杯であるか否かに依存する。DASH制御エンジン313は、バッファがオーバーロードされたり完全に空になったりするのを防止するためにバッファを制御する。
メディアプレゼンテーションおよびマニフェストファイルの生成は、図4aと関連して記載される。ステップ400および401の間に、オーディオおよびビデオデータが取得される。次に、オーディオデータが402の間に圧縮される。例えば、MP3標準規格が使用され得る。さらに、ステップ403の間にビデオデータが並行して圧縮される。MPEG4、MPEG/AVC、SVC、HEVCまたはスケーラブルHEVCなどのビデオ圧縮アルゴリズムが使用され得る。オーディオおよびビデオデータの圧縮が行われたならば、オーディオおよびビデオ基本ストリーム404、405が利用可能になる。基本ストリームは、ステップ406の間にグローバルメディアプレゼンテーションにエンキャプシュレートされる。例えば、符号化されたオーディオおよびビデオ基本ストリームの内容をグローバルメディアプレゼンテーションとして記述するためにISO BMFF標準規格(または、ISO BMFF標準規格のAVCへのエクステンション、SVC、HEVC、HEVCのスケーラブルエクステンションなど)が使用され得る。これにより得られたエンキャプシュレートされたメディアプレゼンテーション407は、ステップ408の間に、XMLマニフェストファイル409を生成するために使用される。ビデオデータ401およびオーディオデータ400の数個のリプリゼンテーションが取得され、圧縮され、エンキャプシュレートされ、メディアプレゼンテーション407において記述され得る。
Media presentation and manifest file generation are described in connection with FIG. 4a. During
図4bに示されているMPEG/DASHストリーミングプロトコルの特別の場合については、マニフェストファイルは“メディアプレゼンテーション記述(Media Presentation Description)”(あるいは“MPD”ファイル)と呼ばれる。このファイルのルートエレメントは、全てのプレゼンテーションとプロファイルまたはスキーマのようなDASH情報とに適用される属性を含むMPDエレメントである。メディアプレゼンテーションは、ピリオドエレメントにより表示される一時的ピリオドに分割される。MPDファイル410は、各一時的ピリオドに関連する全てのデータを含む。この情報を受け取ることにより、クライアントは時間の各ピリオドのためのコンテンツを知る。各ピリオド411について、AdaptationSetエレメントが定義される。
For the special case of the MPEG / DASH streaming protocol shown in FIG. 4b, the manifest file is referred to as a “Media Presentation Description” (or “MPD” file). The root element of this file is an MPD element that contains attributes that apply to all presentations and DASH information such as profiles or schemas. The media presentation is divided into temporary periods displayed by a period element. The MPD file 410 contains all the data associated with each temporary period. By receiving this information, the client knows the content for each period of time. For each
1つの可能な構成は、プレゼンテーションに含まれるメディアタイプごとに1つまたは複数のAdaptationSetを持つことである。ビデオに関連するAdaptationSet412は、サーバから入手し得る符号化されたビデオの様々な可能なリプリゼンテーションに関する情報を含む。各リプリゼンテーションは、リプリゼンテーションエレメントに記述される。例えば、第1リプリゼンテーションは、640×480の空間解像度で符号化され500kbits/sのビットレートで圧縮されたビデオであり得る。第2リプリゼンテーションは、同じではあるけれども250kbits/sのビットレートで圧縮されているビデオであり得る。
One possible configuration is to have one or more AdaptationSets for each media type included in the presentation. The
各ビデオは、その後、クライアントがそのビデオに関連するHTTPアドレスを知っているならば、HTTPリクエストによりダウンロードされ得る。各リプリゼンテーションの内容とHTTPアドレスとのアソシエーションは、追加のレベルの記述:一時的セグメントを用いて行われる。各ビデオリプリゼンテーションは一時的セグメント413(通例、数秒)に分割される。各一時的セグメントは、HTTPアドレス(URLまたは1バイトのレンジを有するURL)を介してアクセスし得るサーバに格納されているコンテンツを含む。MPDファイルに一時的セグメントを記述するために数個のエレメント:SegmentList、SegmentBaseまたはSegmentTemplate、が使用され得る。 Each video can then be downloaded with an HTTP request if the client knows the HTTP address associated with that video. The association between the content of each representation and the HTTP address is done using an additional level description: a temporary segment. Each video representation is divided into temporary segments 413 (typically a few seconds). Each temporary segment includes content stored on a server that can be accessed via an HTTP address (URL or URL having a range of 1 byte). Several elements can be used to describe temporary segments in the MPD file: SegmentList, SegmentBase or SegmentTemplate.
さらに、特定のセグメント:初期化セグメント、が利用可能である。初期化セグメントは、(もしビデオがISO BMFFまたはそのエクステンションを用いてエンキャプシュレートされているならば)そのエンキャプシュレートされているビデオストリームを記述するMP4初期化情報を含む。例えば、それは、クライアントがそのビデオに関連する復号アルゴリズムをインスタンス化するのを助ける。 In addition, a specific segment: initialization segment is available. The initialization segment contains MP4 initialization information that describes the encapsulated video stream (if the video is encapsulated using ISO BMFF or its extension). For example, it helps the client to instantiate a decoding algorithm associated with the video.
初期化セグメントおよびメディアセグメントのHTTPアドレスは、MPDファイルにおいて明示される。この説明において“セグメント”は一時的フラグメント(例:メディアがISO/IEC14496パート12およびパート15に従ってエンキャプシュレートされるときにはmp4ファイル内の1つまたは複数のmoof+mdatボックス)または一時的セグメント(例えば、“styp”指示から始まるmp4セグメント)を示すために使われることに留意しなければならない。 The initialization segment and media segment HTTP addresses are specified in the MPD file. In this description, a “segment” is a temporary fragment (eg, one or more moof + mdat boxes in an mp4 file when the media is encapsulated according to ISO / IEC 14496 part 12 and part 15) or a temporary segment (eg, It should be noted that it is used to indicate the mp4 segment (starting from the “styp” directive).
図7aに、例示的MPDファイルが示されている。示されているMPDファイルにおいて2つのビデオリプリゼンテーションが記述されている。第1のものは低解像度バージョン(“Representation id=“h264bl_low””)であり、第2のものはより大きな解像度のバージョン(“Representation id=“h264bl_full””)である。両方のビデオリプリゼンテーションが同じAdaptationSetに含まれ、各リプリゼンテーションの各セグメントがSegmentTemplate URLを通してアドレスされる(“media=“mp4−live−$RepresentationID$−$“Number$.m4s””。ここで$RepresentationID$は2つの可能なビデオリプリゼンテーションの間で変化し、$Number$はビデオの中での位置に沿って変化する)。 An exemplary MPD file is shown in FIG. 7a. Two video representations are described in the MPD file shown. The first is a low resolution version (“Representation id =“ h264bl_low ””) and the second is a higher resolution version (“Representation id =“ h264bl_full ””). Both video representations are included in the same AdaptationSet, and each segment of each representation is addressed through the SegmentTemplate URL (“media =“ mp4-live- $ RepresentationID $-$ “Number $ .m4s” ”, here. $ RepresentationID $ changes between two possible video representations, and $ Number $ changes along the position in the video).
明瞭性を得るために、存在することのある関連付けられているオーディオストリームは表示されておらず、それらは別のAdaptationSetにおいて、それぞれ代わりのバージョンと共に、記述され得る。 To gain clarity, the associated audio streams that may be present are not displayed, and they can be described in different AdaptationSets, each with an alternative version.
ストリーミングセッションを開始するとき、DASHクライアントはマニフェストファイルを要求する。受け取ると、クライアントはそのマニフェストファイルを分析し、その環境に適するAdaptationSetのセットを選択する。次に、クライアントは、MPDの中の各AdaptationSet内の、その帯域幅、復号およびレンダリングの能力に適合するリプリゼンテーションを選択する。次に、それは、要求されるべきセグメントのリストを前もって、まず第1にメディアデコーダのための初期化情報から、構築する(図7aの例ではSegmentTemplate@initialization URL)。初期化情報がデコーダにより受信されると、それらは初期化され、クライアントは第1メディアデータを要求して、実際に表示を開始する前に最小限の量のデータをバッファリングする。 When starting a streaming session, the DASH client requests a manifest file. Upon receipt, the client analyzes the manifest file and selects a set of AdaptationSets appropriate for the environment. The client then selects a representation that matches its bandwidth, decoding and rendering capabilities within each AdaptationSet in the MPD. It then builds in advance a list of segments to be requested, first from the initialization information for the media decoder (SegmentTemplate @ initialization URL in the example of FIG. 7a). When initialization information is received by the decoder, they are initialized and the client requests the first media data and buffers a minimum amount of data before actually starting the display.
これらの複数のリクエスト/レスポンスは、ストリーミングセッションのスタートアップ時に遅延をもたらし得る。リスクは、サービスプロバイダが自身のクライアントがそのビデオを見始めることなくサービスから去るという事態に遭遇することである。この、クライアントによって実行される第1メディアデータチャンクに対する最初のHTTPリクエストと、そのメディアデータチャンクが実際に再生しはじめるときとの間の時間をスタートアップ遅延と呼ぶのは普通のことである。それはネットワークのラウンドトリップ時間だけでなくメディアセグメントのサイズにも依存する:セグメントが長いほど、スタートアップ遅延は長くなる。 These multiple requests / responses can introduce delays during the startup of a streaming session. The risk is that the service provider encounters a situation where their client leaves the service without starting to watch the video. It is common to refer to this time between the initial HTTP request for the first media data chunk executed by the client and when the media data chunk actually begins to play as the startup delay. It depends not only on the network round trip time but also on the size of the media segment: the longer the segment, the longer the startup delay.
さらに、ライブストリーミングでは、クライアントがメディアセグメントを要求した時点で、このセグメントはサーバにおいて準備状態ではないかもしれない。レイテンシを小さくするために、セグメントの長さを小さくすることは有益であるかもしれない。しかし、そのようにセグメントの長さを小さくすると、リクエスト/レスポンスの数が劇的に増加して、かなりのネットワークトラフィックオーバーヘッドがもたらされるかもしれない。 Furthermore, in live streaming, when a client requests a media segment, this segment may not be ready at the server. To reduce latency, it may be beneficial to reduce the segment length. However, such a reduction in segment length may dramatically increase the number of requests / responses, resulting in significant network traffic overhead.
そのようなトラフィックオーバーヘッドの増加を低減するために、提案されるアプローチは、サーバの自発性だけに基づいてデータをクライアントにプッシュできるようにサーバにおいてHTTP/2のプッシュフィーチャを使用することである。より一般的にHTTPに関して、そのようなアプローチ(プッシュフィーチャの使用)は、リソースを多数のサブリソース(例えば、css、jscript、イメージを含むウェブページ;またはセグメントのリストを含むDASHマニフェスト)に編成し得るようにHTTPクライアントとHTTPサーバとの間でのラウンドトリップの数(および、次にレイテンシ)を減らすことを可能にする。 In order to reduce such an increase in traffic overhead, the proposed approach is to use HTTP / 2 push features at the server so that data can be pushed to the client based solely on the server's spontaneity. More generally for HTTP, such an approach (using push features) organizes resources into a number of sub-resources (eg, css, jscript, web pages containing images; or DASH manifests containing a list of segments). It makes it possible to reduce the number of round trips (and then the latency) between the HTTP client and the HTTP server.
上で言及されたように、HTTPを通してのDASHストリーミングと関連してプッシュフィーチャをそのように使用することは、特許文献1において既に提案されている。 As mentioned above, such use of push features in connection with DASH streaming over HTTP has already been proposed in US Pat.
この刊行物において提案されているメカニズムは、特に、プッシュポリシーに従ってどのデータまたはリソースをプッシュするかを決定するためにMPDファイルにプッシュポリシーを適用できるように、サーバデバイスがDASHについての高度に複雑な知識を持つことを要求する。 The mechanism proposed in this publication is a highly complex for DASH, especially where the server device can apply a push policy to the MPD file to determine what data or resources to push according to the push policy. Require knowledge.
これらのメカニズムは、HTTPを通しての適応ストリーミングの幾つかの有益な面に反する。 These mechanisms are contrary to some useful aspects of adaptive streaming over HTTP.
より正確には、HTTPを通しての適応ストリーミングは、クライアントが一般的に自身の目的のためにマルチメディアコンテンツの最良のバージョンを選択し得るのでクライアントがストリーミングを案内するという仮定に基づいている。例えば、クライアントは、自身のフォームファクタおよびスクリーン解像度に基づいてHDビデオを要求するべきかそれともSDビデオを要求するべきかを知るであろう。HTTPを通しての適応ストリーミングのためのプッシュフィーチャの使用は、そのような振る舞いを維持し、プッシュされるデータに関してクライアントがサーバを完全に主導できるようにするべきである。 More precisely, adaptive streaming over HTTP is based on the assumption that the client guides the streaming because the client can generally select the best version of multimedia content for his purposes. For example, the client will know whether to request HD video or SD video based on its form factor and screen resolution. The use of push features for adaptive streaming over HTTP should maintain such behavior and allow the client to fully drive the server with respect to the pushed data.
さらに、MPEG DASH標準規格のようなHTTPを通しての適応ストリーミングはサーバ側においてほとんど全くインテリジェンスを必要としない:クライアントにより送られるHTTPリクエストは単純なのでマニフェストおよびメディアセグメントにサービスをするために単純なHTTPサーバで十分である。このようにサーバが単純であるので、HTTPの標準的ウェブ使用法以外の追加のコストをサーバリソースに要求することなく多数のストリーミングクライアントを供給することが可能である。特に、多数のストリーミングクライアントは、標準的HTTP最適化技術を用いてコンテンツ配信ネットワークを通して管理され得る。HTTPを通しての適応ストリーミングのためのプッシュフィーチャの使用は、このサーバの単純性を維持するべきである。 Furthermore, adaptive streaming over HTTP, such as the MPEG DASH standard, requires little intelligence on the server side: the HTTP request sent by the client is simple, so with a simple HTTP server to serve the manifest and media segments. It is enough. Because of this simple server, it is possible to supply a large number of streaming clients without requiring additional costs for server resources other than the standard web usage of HTTP. In particular, a large number of streaming clients can be managed through a content distribution network using standard HTTP optimization techniques. The use of push features for adaptive streaming over HTTP should maintain the simplicity of this server.
本発明は、HTTPと一般的に関連してプッシュフィーチャの使用を改善することを目指している。それは特に、HTTPを通してのストリーミングとDASHなどのHTTPを通しての適応ストリーミングとに適用される。しかし、本発明は、好ましくは、HTTPを通しての適応ストリーミングの現存する有益なフィーチャをなるべく維持するべきである。これは、次の要件:
− 潜在的な無用の(クライアントにとって)データがサーバによりプッシュされるのを避けるためにクライアント制御の送信を維持すること;
− 上で言及されたスケーラビリティの利点を維持するためにサーバ側での特定のアプリケーション知識の使用を防止すること;
− レガシークライアントおよび/または本発明を実装しないサーバの間でのインタオペラビリティおよびキャッシュ能力を維持するためにリソースおよびサブリソースを在来の仕方で要求する仕方を維持すること。例えば、DASHセグメントの場合、これは、要求されたセグメントを処理するために特定の動作(例えばリクエスト−URIの変換など)を必要とするリクエストフォーマットの導入を避けるべきである;
− サーバ側の処理を少なく保つこと;
のうちのなるべく多くが満たされるべきであることを意味する。
The present invention seeks to improve the use of push features in general association with HTTP. It applies in particular to streaming over HTTP and adaptive streaming over HTTP such as DASH. However, the present invention should preferably preserve the existing beneficial features of adaptive streaming over HTTP as much as possible. This has the following requirements:
-Maintain client-controlled transmission to avoid potential useless (for client) data being pushed by the server;
-Preventing the use of specific application knowledge on the server side in order to maintain the scalability benefits mentioned above;
-Maintaining the way in which resources and sub-resources are requested in a conventional manner to maintain interoperability and caching capabilities between legacy clients and / or servers that do not implement the present invention. For example, in the case of a DASH segment, this should avoid the introduction of a request format that requires specific actions (eg, request-URI conversion, etc.) to process the requested segment;
-Keep server side processing low;
It means that as many as possible should be satisfied.
本発明のアイデアは、クライアントが(可能ならばプッシュメカニズムを用いて)受信したい追加のリソース/データまたは複数のリソースをサーバが判定するためのヒントを提供するか、あるいはクライアントが追加のリソースを受け取りたくないということをサーバが判断するためのヒントを提供する任意の情報を、第1データまたはリソースを要求する在来のHTTPリクエストに含めることである。特に、これらのヒントは、追加のリソース/データまたは複数のリソースの決定が文脈上の情報やリクエストの外側にある情報を使用しない仕方で定義される。HTTPリクエストは、追加のリソース/データまたは複数のリソースの定義に関して自動記述的リクエストと見られ得る。 The idea of the invention is to provide a hint for the server to determine additional resources / data or multiple resources that the client wishes to receive (if possible using a push mechanism) or the client receives additional resources Any information that provides a hint for the server to determine that it does not want to be included in a conventional HTTP request that requests the first data or resource. In particular, these hints are defined in such a way that the determination of additional resources / data or resources does not use contextual information or information outside the request. An HTTP request may be viewed as an automatic descriptive request with respect to additional resources / data or multiple resource definitions.
そのようなヒントの例は後述され、明示的なURI/URLもしくはURI/URLのリスト、自動記述的HTTPリクエストに基づく構築ルールおよびリソース/データのフィルタリングルールの使用を通しての暗黙のURI/URLを含む。 Examples of such hints are described below and include an implicit URI / URL through the use of an explicit URI / URL or list of URI / URLs, construction rules based on automatic descriptive HTTP requests, and resource / data filtering rules. .
本発明によるサーバ側方法は、サーバデバイスとクライアントデバイスとの間でデータを送信しようとするものであり、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、このHTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに第2データを可能にする1つまたは複数の任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もしその任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、を用いて、サーバデバイス上の第2データを特定することを可能にする第2データ特定情報を決定するステップ、を含む。すなわち、HTTPリクエストは第2リソースを決定するために自給自足的である、すなわち、自己記述的である;および
第2データをクライアントデバイスにプッシュするとアナウンスするプッシュ約束メッセージを送るおよび/または第2データをクライアントデバイスにプッシュするステップ;
を含む。
The server-side method according to the invention seeks to transmit data between a server device and a client device, at the server device:
Receiving an HTTP request for obtaining first data from a client device, the HTTP request including first data identifying information that enables identifying first data on the server device and allowing second data; Receiving, including one or more optional header fields
Retrieving the first data and sending it to the client device; and if its optional header field is present in the HTTP request:
Determining the second data identification information that allows the identification of the second data on the server device using only the optional header field and optionally further the first data identification information. That is, the HTTP request is self-sufficient, i.e., self-describing, to determine the second resource; and sends a push commitment message that announces when the second data is pushed to the client device and / or the second data Pushing to the client device;
including.
特定の実施形態では、クライアントにより要求された第2データまたは追加リソースをサーバがプッシュすることをクライアントに知らせるために、サーバが第2データまたは追加リソースをプッシュしないことを知らせるために、またはサーバが送信し得る第2データまたは追加リソース/データまたは複数のリソースをクライアントが決定するためのヒントを提供するために、確認応答データがクライアントに送られる。 In certain embodiments, to inform the client that the server will push the second data or additional resource requested by the client, to inform the server not to push the second data or additional resource, or Acknowledgment data is sent to the client to provide hints for the client to determine second data or additional resources / data or resources that may be sent.
本発明によるクライアント側方法は、サーバデバイスとクライアントデバイスとの間でデータを送信しようとするものであり、クライアントデバイスにおいて:
サーバデバイスから得られるべきデータを特定するステップ;
その特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに1つまたは複数の任意ヘッダフィールドを含み、その任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報(すなわち、HTTPリクエストの内容だけ)、に基づいて、サーバデバイス上の特定されたデータから第2データを特定することを可能にする第2データ特定情報を定義する、生成するステップ;
第1データを得るとともにサーバデバイスに第2データをプッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
The client-side method according to the present invention seeks to transmit data between a server device and a client device, at the client device:
Identifying the data to be obtained from the server device;
Generating an HTTP request to obtain first data from the identified data, wherein the HTTP request includes first data identifying information that allows the first data on the server device to be identified and one Or a plurality of optional header fields, based on the specified data on the server device based on only the optional header field and possibly further the first data specifying information (ie, only the content of the HTTP request). Defining and generating second data identification information that enables data identification;
Sending an HTTP request to the server device to obtain the first data and cause the server device to push the second data;
including.
特定の実施形態では、クライアントは、プッシュリクエストに関する確認応答データを受け取ると、第2データまたは追加リソースを得るために自身のストラテジーを適応させる。 In certain embodiments, when the client receives acknowledgment data regarding the push request, the client adapts its strategy to obtain second data or additional resources.
第1データ特定情報は、普通、HTTPリクエスト(またはそれの、HTTP/2疑似ヘッダへの変換)の“request−line”の一部を形成するリクエストURIに対応する。 The first data identification information usually corresponds to a request URI that forms part of the “request-line” of an HTTP request (or its conversion to an HTTP / 2 pseudo-header).
本発明により提案されるアプローチは、上記要件の全てまたは部分を満たす。 The approach proposed by the present invention satisfies all or part of the above requirements.
第1に、本発明の方法は、クライアントが、データを要求すると同時に、プッシュするべき1つまたは複数の追加のまたは関連するリソースをサーバに対して明示することを可能にする。クライアントはこれらのリソースを、これらに対する特別のリクエストを送ることなく、受け取るであろうから、ネットワークトラフィックおよびレイテンシが低減される。 First, the method of the present invention allows a client to specify one or more additional or related resources to push to the server at the same time as requesting data. Since the client will receive these resources without sending a special request for them, network traffic and latency are reduced.
さらに、それらは、(本発明による任意ヘッダの、サーバのサポートに依存して)クライアントが追加リソースを受け取るであるか、またはクライアントがそれらを要求しなければならないか、をクライアントが(プッシュ約束フレームを通じて)知らされることをも可能にする。このように現存するストリーミングサーバとの下位互換性は維持され、フィーチャの展開はより容易にされるはずである。 In addition, they can determine whether the client receives additional resources (depending on server support for optional headers according to the invention) or whether the client must request them (push commitment frame). It also makes it possible to be informed. Thus, backward compatibility with existing streaming servers is maintained and feature deployment should be made easier.
さらに、それらは、サーバがクライアントにプッシュされるべき次の1つまたは複数のリソースを、アプリケーション特有の知識を必要とすることなく、容易に特定することをも可能にする。従って、サーバ側での処理は限定され、多数のクライアントが同じサーバに要求することをオーソライズされ得る。 In addition, they also allow the server to easily identify the next resource or resources to be pushed to the client without requiring application specific knowledge. Thus, processing on the server side is limited and multiple clients can be authorized to request from the same server.
図3aは、本発明の実装のためのクライアント/サーバシステムの一般的説明図を示す。以下で、ビデオはメディアまたはコンテンツの特別の場合であることを分かった上で、リソースを示すために“ビデオ”、“メディア”または“コンテンツ”が差別されずに言及される。同様に、サーバからクライアントに送信されるべきメディアリソースの記述ファイルを示すために“MPD”または“マニフェスト”または“ストリーミングマニフェスト”または“HTMLページ”が差別されずに言及される。 FIG. 3a shows a general illustration of a client / server system for implementation of the present invention. In the following, “video”, “media” or “content” will be referred to indiscriminately to indicate resources with the knowledge that video is a special case of media or content. Similarly, “MPD” or “manifest” or “streaming manifest” or “HTML page” is referred to indiscriminately to indicate a description file of media resources to be sent from the server to the client.
本発明は、図3aに示されているようにクライアントとサーバとの間でのHTTP通信、特にデータストリーミング、を改善することを狙っており、より正確にはリソースのローディング時間およびネットワークトラフィックオーバーヘッドの両方を低減することを狙っている。 The present invention aims to improve HTTP communication between the client and server, particularly data streaming, as shown in FIG. 3a, and more precisely the resource loading time and network traffic overhead. It aims to reduce both.
サーバ350は、クライアント380がダウンロードできるリソースを保存している。サーバ上のリソースは、サブリソース(352a、b、c)を参照または包含するメインリソース351に分類される。
The
例えば、メインリソースはHTMLページであり得、サブリソースは、cssリソース、イメージおよび/またはメディアファイル、javaスクリプトコードまたはメインリソースにおいて参照される他のHTMLページであり得る。これらのリソースのアクセス権および編成は、静的設定ファイル355において記述され得る。
For example, the main resource can be an HTML page, and the sub-resource can be a css resource, image and / or media file, java script code or other HTML page referenced in the main resource. The access rights and organization of these resources can be described in the
クライアント380により発せられるHTTPリクエストはHTTPプロセッサ356により受信されて処理され、このプロセッサ356は、そのリクエストをリソース特定およびヘッダ処理に分解するリクエストパーサ357を含む。
HTTP requests issued by the
本発明は、プッシュヘッダプロセッサ358により行われる1つの特定のヘッダ処理を考慮する。後者は、以下で記載されるようにHTTPリクエストにおいて任意的である1つまたは複数の特定のプッシュヘッダの処理を担当する。上で簡潔に紹介されたように、その1つまたは複数の特定のプッシュヘッダに基づき、HTTPリクエストだけを用いて、サーバは追加リソースへの1つまたは複数の参照を、それらをプッシュするために、生じさせることができる。 The present invention contemplates one particular header process performed by the push header processor 358. The latter is responsible for processing one or more specific push headers that are optional in the HTTP request as described below. As briefly introduced above, based on that one or more specific push headers, using only HTTP requests, the server can push one or more references to additional resources to push them. Can be generated.
リソースマネージャ360は、リソースの存在/不在/鮮度のチェックおよび要求されたリソースのHTTPプロセッサ356への供給を担当する。次に、レスポンスジェネレータ359は、これらの供給されたリソースを、クライアントに送られる1つまたは複数のHTTPレスポンス(HTTP/1.x)またはフレーム(HTTP/2において)にエンキャプシュレートする。
The
クライアント380は、数個のクライアントモジュールにより処理されるコンテンツをユーザが選択し、それと相互作用しおよび見るためのユーザインターフェース381を有する。
The
ユーザインターフェース381は、ユーザのクリックを、HTTPクライアント382内のリクエストスケジューラ383により処理される追加コンテンツに対するリクエストに変換する。その追加コンテンツに対するリクエストは、ダウンロードされるべきリソースのリストとして変換され得る。HTTPクライアント382は、HTTPサーバ350との通信を処理する。
The
HTTPクライアントは、サーバ350に対してリソースを要求するためにHTTPリクエスト(HTTP1.x)またはフレーム(HTTP/2)を構築するリクエストジェネレータ384を含む。
The HTTP client includes a
本発明により、HTTPクライアント382は、リクエストスケジューラ383内で待機している次の1つまたは複数のリソースを明示しおよび/またはプッシュポリシー、プッシュストラテジーまたはプッシュディレクティブを明示する上記の特定の(任意の)プッシュヘッダをHTTPリクエストに挿入することを担当する特定のモジュール、すなわちプッシュヘッダジェネレータ385、を含む。特定の実施形態では、プッシュヘッダは、プッシュタイプ、および場合によっては関連するパラメータ、を含み得る。
In accordance with the present invention, the
サーバから受信されたレスポンスまたは通知は、データを抽出してそれらをクライアントキャッシュ/メモリ387に格納するレスポンスパーサ386により処理される。レスポンスヘッダにより運ばれる情報も、HTTPクライアント311により受け取られて処理され、DASH制御エンジン313が利用できるようにされ得る(例えば、DASHアプリケーションがXmlHTTPRequestを用いてjavascriptコードで書かれているとき)。
Responses or notifications received from the server are processed by a
これらのデータはレンダリングエンジン388により使用され、このエンジンはデータをパース(389)してそれらを適切な復号モジュール390にディスパッチする。それらのデータに基づいて、後者は、復元されたデータを、ユーザインターフェース381でのレンダリングのために、ディスプレイ391に供給する。
These data are used by the
本発明により、パースモジュール389は、ユーザにとって潜在的に興味あるものである追加リソースを特定するために、受け取られたデータの内容を分析することができる。そのような場合、パースモジュール389は、それらの追加リソースをリクエストスケジューラ383において追加する。
In accordance with the present invention, the parsing module 389 can analyze the content of the received data to identify additional resources that are of potential interest to the user. In such a case, the parse module 389 adds those additional resources in the
クライアントの振る舞いは図5aに示され、サーバの振る舞いは図6aに示されている。 The client behavior is shown in FIG. 5a and the server behavior is shown in FIG. 6a.
図5aを参照すると、ステップ551において、クライアントは、HTTPリクエストを用いてメインリソース、例えばHTMLのウェブページまたはストリーミングマニフェスト、を要求する。そのウェブページのためのHTMLコードは、そのウェブページを構成するリソースを特定するためにステップ552で(モジュール389を用いて)パースされる。そのパースの結果を用いて、クライアントは、そのページ全体をレンダリングできるように、自身がダウンロードしなければならないリソースのリストを特定する。これはステップ553であり、そのリソースのリストはスケジューラ383に格納される。
Referring to FIG. 5a, in
ステップ554において、クライアントは、第1の特定されたリソースをサーバから得るために第1HTTPリクエストを生成して送る。本発明により、クライアント(モジュール385)は、特定のプッシュヘッダにおいて、自身がサーバにプッシュしてもらいたい追加の/関連するリソースのリストを明示することもできる。これはステップ555である。特定のプッシュヘッダのためのシンタックスの例が以下に与えられる。
In
ステップ556においてサーバから1つまたは複数のレスポンスを受け取ると、クライアント(モジュール384)は、データのプッシュをアナウンスするサーバ通知(すなわちプッシュ約束)が受け取られたか否かチェックする(ステップ557)。このチェックは、第1リソースについてのデータが完全に受け取られたとき、止められ得る。その理由は、要求された第1リソースに対応するストリームの終結後には、特定のプッシュヘッダにより定義された追加の/関連するリソースに関連するプッシュ約束は送られることができないことである。ここで、特定のプッシュヘッダをサポートしないサーバは、このヘッダで定義された追加の/関連するリソースのためのプッシュ約束を送らないで単にこのヘッダを無視するであろうということが想起される。 Upon receipt of one or more responses from the server at step 556, the client (module 384) checks whether a server notification (ie, push promise) that announces the push of data has been received (step 557). This check may be stopped when the data for the first resource is completely received. The reason is that after the end of the stream corresponding to the requested first resource, push promises related to additional / related resources defined by a particular push header cannot be sent. It is recalled here that a server that does not support a specific push header will simply ignore this header without sending a push commitment for the additional / related resources defined in this header.
もしチェックが否定であれば、受け取られるデータは、要求された第1リソースのそれだけである。従って、それらはステップ560でモジュール384により処理されて、レンダリングエンジン388に供給される。プロセスはその後ステップ555に戻り、リクエストスケジューラ383に保存されているさらなるリソースを要求する(ステップ561)。
If the check is negative, the only data received is that of the requested first resource. Accordingly, they are processed by
もしチェックが肯定で、サーバが特定のプッシュヘッダでクライアントにより示唆されたリソースのうちの幾つかをプッシュすることを意味するならば、クライアントはリクエストスケジューラ382内のダウンロードするべきリソースのリストをアップデートして、そのプッシュされるリソースをそこから撤回する。これはステップ558である。クライアントは、その後、ダウンロードするべきリソースがリクエストスケジューラ382に最早残っていなくなるまで反復する(ステップ561およびステップ555へのループ)前に、第1リソースのためのデータ(ステップ560)およびその他の追加の/関連するリソースのためのデータ(ステップ559)を処理する。
If the check is positive, meaning that the server pushes some of the resources suggested by the client in a particular push header, the client updates the list of resources to download in the
ここで図6aに転じて、クライアント380によりHTTPリクエストに設けられる特定のプッシュヘッダを処理するためにサーバ350は専用の“プッシュヘッダ”プロセッサ358を使用するということが想起される。さらに、HTTPプロセッサ356は、HTTPリクエストをパースすること、および、要求された第1リソースのURIおよび任意の1つまたは複数のヘッダを含む、リクエストに含まれている種々のパラメータを抽出することを担当する。このように、HTTPプロセッサ358は、特定の(任意の)プッシュヘッダをその名前によって特定し、それを処理させるべくプッシュヘッダプロセッサ358に転送する。
Turning now to FIG. 6a, it is recalled that the
ステップ601において、サーバは、クライアント380からリクエストを受け取ってそれを、メインリソース、例えばストリーミングの文脈においてはストリーミングマニフェスト、を得るために処理する。それは、HTTPプロセッサ356により処理される。
In
次にステップ602において、サーバはマニフェストデータを送ることで応答する。ステップ603において、サーバは第1リソース、普通はマニフェストデータにおいて参照されている第1リソース、を要求するクライアントからの新しいリクエストを受け取る。これは、メディアストリーミングの文脈においてはメディアセグメントであり得る。
Next, in
このリクエストにおいて、クライアントは自身が関心を持っている追加のあるいは関連するリソースを、特定のプッシュヘッダを用いて、明示しているかもしれない。従って、ステップ604において、サーバは、そのような特定のプッシュヘッダがリクエストに含まれているか否かをチェックする。
In this request, the client may specify additional or related resources that it is interested in using specific push headers. Accordingly, in
もしそれが含まれていて書き込まれているならば、サーバはその特定のプッシュヘッダを特定プッシュヘッダプロセッサ358に供給する。後者は、クライアントにより明示された追加のあるいは関連するリソースへの1つまたは複数の参照を生成するために、以下で記載されるようにそのプッシュヘッダの様々な部分をパースする。これはステップ605である。
If it is included and written, the server supplies that particular push header to the particular push header processor 358. The latter parses various parts of its push header as described below to generate one or more references to additional or related resources specified by the client. This is
任意に、サーバは、自身が所有しているリソースのリストに属する各リソースについて、それをプッシュできるか否かを宣言する事前設定されたオーソライゼーションファイルを持つことができる。このオーソライゼーションファイルは、ステップ605で得られた幾つかの参照を有効にまたは無効にするためにステップ606で考察され得る。
Optionally, the server can have a pre-configured authorization file that declares whether each resource belonging to the list of resources it owns can be pushed or not. This authorization file can be considered at
サーバは、オーソライゼーションファイルに従ってそのプッシュがオーソライズされているリソースだけのためにプッシュアナウンスメントメッセージ(例えば、PUSH_PROMISEフレーム)でクライアントに通知する。これはステップ607である。HTTP/2では、PUSH PROMISEフレームは、クライアントのリクエストに対応するストリームで、ステップ605において特定されたリソースあたりに1つのPUSH PROMISEフレームが、送られる。ステップ607にステップ608が続き、このステップでサーバは、要求された第1リソース(すなわち、ストリーミングの文脈においては第1メディアセグメント)を、要求しているクライアントに送る。
The server notifies the client with a push announcement message (eg, PUSH_PROMISE frame) only for the resources for which the push is authorized according to the authorization file. This is
もし特定プッシュヘッダが存在しないかまたはサポートされなければ(テスト604がフォールス)、あるいはもし特定されたリソースについてプッシュが全くオーソライズされなければ(テスト606がフォールス)、要求された第1リソースだけがステップ608でクライアントに送り返される。
If the specific push header does not exist or is not supported (
要求された第1リソースを送ると、次にサーバは、対応するストリームを閉じるとともに、プッシュアナウンスメントメッセージ(PUSH PROMISEフレーム)でアナウンスされたストリームを、もしクライアントによりキャンセルされなければ、用いて、ステップ605で特定された追加のまたは関連するリソースのためのデータをプッシュする。これはステップ609であり、このステップで送ることは、1つまたは複数のデータフレームを送ることに依拠し得る。
Upon sending the requested first resource, the server then closes the corresponding stream and uses the stream announced in the push announcement message (PUSH PROMISE frame), if not canceled by the client, and steps Push data for additional or related resources identified at 605. This is
上記のように、特定の実施形態では、クライアントにより要求された第2データまたは追加のリソースをサーバがプッシュするであろうことをクライアントに知らせるか、第2データも追加リソースもサーバはプッシュしないであろうことを知らせるか、あるいはサーバが送信できる第2データまたは追加リソース/データもしくは複数のリソースをクライアントが決定するためのヒントを提供するために確認応答データがクライアントに送られる。 As noted above, in certain embodiments, the server is informed that the server will push the second data or additional resources requested by the client, or the server does not push the second data or additional resources. Acknowledgment data is sent to the client to inform it or provide a hint for the client to determine the second data or additional resources / data or resources that the server can send.
従って、参照記号610で示されているように、サーバは、クライアントにより要求された第2データまたは追加のリソースをサーバがプッシュするであろうことをクライアントに知らせるか、第2データも追加リソースもサーバはプッシュしないであろうことを知らせるか、あるいはサーバが送信できる第2データまたは追加リソース/データもしくは複数のリソースをクライアントが決定するためのヒントを提供するために、受信されたリクエストに応答して送られるレスポンスに確認応答データを付け加えることができる。そのような確認応答データの例は、図11aから11eを参照することにより与えられる。
Thus, as indicated by
図3bは、データストリーミング、例えばDASH、と関連するクライアント−サーバシステムを示す。図3のそれと同じコンポーネントは同じ参照数字を有する。 FIG. 3b shows a client-server system associated with data streaming, eg DASH. Components that are the same as those in FIG. 3 have the same reference numerals.
第1に、ダウンロードするべきメディアセグメントの決定を担当するDASH制御エンジン313において、DASH制御エンジン313の中のリクエストスケジューリングモジュールにより推測されたダウンロードするべき次のセグメントのリストをHTTPクライアント311と通信するための追加モジュールが付け加えられている。
First, at the
この情報は、HTTPクライアント311において特定の“プッシュヘッダ”ジェネレータ314により処理される。ダウンロードするべき次のセグメントのリストから、プッシュヘッダジェネレータ314は、例えばダウンロードするべき次のセグメントのリストを特定プッシュヘッダの様々な部分にマッピングすることによって、特定プッシュヘッダのための適切なシンタックスを生成することを担当する。
This information is processed in the
プッシュヘッダジェネレータ314により出力された特定プッシュヘッダは、現在のHTTPリクエストに挿入されるべくHTTPクライアント311に供給される。
The specific push header output by the
サーバ側で、HTTPプロセッサ320およびプッシュヘッダプロセッサ321は、図3aに関連して上で記載されたHTTPプロセッサ356およびプッシュヘッダプロセッサ358に類似してはいるが、ストリーミングおよびDASH指向である。
On the server side,
図5bは、図3bのシステムにおけるストリーミング指向クライアントの振る舞いを説明する主なステップを示す。 FIG. 5b shows the main steps describing the behavior of a streaming-oriented client in the system of FIG. 3b.
ステップ501において、クライアント310は、希望するメディアと関連付けられたストリーミングマニフェストをストリーミングサーバ300に要求する。ストリーミングマニフェストを受け取ると、クライアント310はステップ502でそれをパースし、次にステップ503でビデオリプリゼンテーションを選択する。
In
反復してメディアのストリーミングの間に、クライアントはサーバに対してダウンロードするように要求する次のセグメントを選択する。これはステップ504である。
Iteratively during media streaming, the client selects the next segment requesting the server to download. This is
次に、ステップ505はクライアントが必要とするかもしれない将来のセグメントを特定することである。この決定は、DASH制御エンジン313内のリクエストスケジューラにとっては将来のセグメントを予想することであり:例えば、それがすぐに切り替えるかあるいは同じリプリゼンテーションレベルにとどまるかを決定する。
Next,
次の1つまたは複数のセグメントのダウンロードを予想するために、クライアントは、後のレンダリングに必要な将来のセグメントの数“K”(Kは、クライアントによりセットされる)を特定することができる。 To anticipate the download of the next segment or segments, the client can specify the number of future segments “K” (K is set by the client) needed for later rendering.
例えば、これは、現在の1つから次のK個のセグメントを取り出すためにMPD内のSegmentListをパースすることにより、またはMPDに設けられているSegmentTemplateを用いて次のK個のセグメントのためにセグメント番号を計算することにより、またはセグメントがバイトレンジを通してアドレスされるときにmp4ボックスから次のK個のバイトレンジを計算することによって、直接行われ得る。 For example, this can be done by parsing the SegmentList in the MPD to retrieve the next K segments from the current one, or for the next K segments using the SegmentTemplate provided in the MPD. This can be done directly by calculating the segment number or by calculating the next K byte ranges from the mp4 box when the segment is addressed through the byte range.
しかし、ステップ505の特定するプロセスに異なる選択基準が使用され得る。
However, different selection criteria may be used for the process identified in
適応ストリーミングと関連して、選択基準は、リプリゼンテーション間で切り替えを行うときクライアントの切り替えストラテジーを含み得る。例えば、クライアントが積極的な切り替えストラテジーを採用するとき、Kはより精細な切り替えグラニュラリティを可能にするためにローとして定義される(例えば、5秒未満をカバーするセグメントの数に対応する)。一方、クライアントが保守的なストラテジーを採用していてあまり頻繁には切り替えをしないときには、Kはより大きくセットされ得る(例えば、10秒以上をカバーするセグメントの数に)。 In connection with adaptive streaming, the selection criteria may include a client switching strategy when switching between representations. For example, when the client adopts an aggressive switching strategy, K is defined as low to allow finer switching granularity (eg, corresponding to the number of segments covering less than 5 seconds). On the other hand, when the client adopts a conservative strategy and does not switch too often, K may be set larger (eg, to the number of segments covering 10 seconds or more).
なお適応ストリーミングと関連して、別の選択基準はサーバのPUSH PROMISE能力を含み得る。例えば、もしサーバがクライアントにより提案されたのと同じ数のセグメントを適時に約束しまたは送ることができなければ、クライアントはこの情報を考慮してKの値を小さくすることができる。その結果、毎回、より少ないメディアセグメントがプッシュされるべく提案されることとなる。 Still in connection with adaptive streaming, another selection criterion may include the server's PUSH PROMISE capability. For example, if the server cannot promise or send the same number of segments in time as suggested by the client, the client can take this information into account and reduce the value of K. As a result, each time fewer media segments are proposed to be pushed.
なお適応ストリーミングと関連して、別の選択基準はクライアントのプリフェッチストラテジーを含み得る。例えば、クライアントは、様々な期間の初めに、高速シークを目的として最初のセグメントを選択することができる。あるいは、もしビデオアプリケーションがビデオ中の非常に人気のある部分に関する情報を提供するならば、その基準は、それらの非常に人気のある部分に対応する最初のセグメントを選択することを含み得る。 Still in connection with adaptive streaming, another selection criterion may include a client prefetch strategy. For example, the client can select the first segment for fast seeks at the beginning of various time periods. Alternatively, if the video application provides information about very popular parts in the video, the criteria may include selecting the first segment that corresponds to those very popular parts.
別のあり得るストリーミング指向の選択基準は、マニフェスト、MPD、の分析からもたらされ得る。例えば、クライアントは、選択されたリプリゼンテーションと関連付けられているセグメントをプッシュすることをサーバに提案することができる。これは、関連付けられているリプリゼンテーション間のassociationIDを用いて容易に決定され得る。この提案は、associationType情報に依拠することができる。さらに、従属リプリゼンテーションについては、エンハンスメントレイヤのためのセグメントがプッシュされるべく提案され得る。 Another possible streaming-oriented selection criterion can result from analysis of manifests, MPDs. For example, the client can suggest to the server to push the segment associated with the selected representation. This can be easily determined using the associationID between the associated representations. This proposal can rely on associationType information. Furthermore, for dependent representations, segments for the enhancement layer can be proposed to be pushed.
より一般的にHTTPを通してのリソースダウンロード、例えばウェブページ(図3aおよび5aを参照)、においては、クライアント(ウェブブラウザ、HTMLレンダラー)は、メインリソースを分析し、それにおいて参照されている、自身が急いでダウンロードしたい1つまたは複数のサブリソースを特定することができる。HTMLメインリソースをパースすることにより、クライアントは例えば:
− “プリフェッチ”または“次”を明示する“rel”値を有する<link>エレメント;
− 例えばCSSリソースを選択するスタイルシート関連リソースを明示する<link>エレメント;
− 例えばjavaスクリプトコードに対応するサブリソースを選択する<script>エレメント;
− <img>および/または<video>のようなメディアエレメント;
に依拠することができる。
More generally, in resource downloads over HTTP, eg web pages (see FIGS. 3a and 5a), the client (web browser, HTML renderer) analyzes the main resource and is referenced in it One or more sub-resources that you want to download quickly can be identified. By parsing the HTML main resource, the client can, for example:
A <link> element with a “rel” value specifying “prefetch” or “next”;
-A <link> element that specifies a resource associated with the style sheet that selects the CSS resource, for example;
A <script> element that selects, for example, a sub-resource corresponding to a Java script code;
-Media elements such as <img> and / or <video>;
You can rely on
HTMLページで宣言されていることのあるこれらのエレメントから、クライアントは、それらの“href”属性を通してURIのリストを選択することができる。URIのこのリストは、例えばリソースのタイプに応じて1つまたは複数の特定プッシュヘッダ内に置かれ、またはURIのリストとして単一のヘッダ内で連結され、または公知のAccept HTTPヘッダ内において“q”値に類似する優先順位付きリストとして編成され得る。 From those elements that may be declared in the HTML page, the client can select a list of URIs through their “href” attribute. This list of URIs is placed, for example, in one or more specific push headers depending on the type of resource, or concatenated in a single header as a list of URIs, or “q” in the well-known Accept HTTP header. “Can be organized as a prioritized list similar to values.
K個の追加のまたは関連するリソースを選択し特定するステップ505の後、クライアントはステップ504で特定された次のセグメントを得るHTTPリクエストを生成する。これはステップ506である。
After
(リクエストラインを形成するHTTPメソッドの他に)HTTPリクエストを形成するために次のセグメントのURLまたは1つのバイトレンジを有するSegmentBase URLが使用される。 The URL of the next segment or the SegmentBase URL with one byte range is used to form an HTTP request (in addition to the HTTP method that forms the request line).
本発明により、追加のステップ507は、HTTPクライアント311のプッシュヘッダプロセッサ314に関してステップ505でDASH制御エンジン313により決定された将来のセグメント(すなわち追加のリソース)のリストを得ること、および、これらの将来のセグメントを定義するために特定プッシュヘッダをセットすることである。
In accordance with the present invention, the
クライアントがサーバにプッシュしてもらいたいこれらの将来セグメントを宣言する幾つかの仕方が、以下で記載されるように実装され得る。 Several ways of declaring these future segments that the client wants the server to push can be implemented as described below.
次のセグメントのためのリクエストラインを含むとともに追加セグメントのプッシュを提案するための特定プッシュヘッダを含むHTTPリクエストが準備状態になると、それはなおステップ507においてHTTPクライアント311によりサーバ300に送られる。
When an HTTP request containing a request line for the next segment and including a specific push header for proposing an additional segment push is ready, it is still sent to the
ステップ508でサーバからレスポンスを受け取ると、クライアントは、特定プッシュヘッダで定義された追加セグメントをサーバが進んで送ることを示すプッシュアナウンスメント通知をサーバが送っているかどうかチェックする。このチェックはステップ509である。
Upon receiving a response from the server at
プッシュアナウンスメント通知は、将来のセグメント1つあたりに1つずつ、1つまたは複数のPUSH_PROMISEフレームを用いて例えばHTTP/2で行われ得る。 Push announcement notifications can be made, for example, over HTTP / 2 using one or more PUSH_PROMISE frames, one for each future segment.
もしステップ504で選択されて要求された次のセグメントのためのデータが完全に受け取られ(対応するストリームはサーバにより閉じられる)プッシュアナウンスメント通知が受け取られていなければ(テスト509フォールス)、HTTPクライアント311は、要求する次のセグメントはその直後のセグメントであるということをDASH制御エンジンに知らせる。これはステップ510である。
If the data for the next segment selected and requested in
そうでなければ(テスト509トゥルー)、新しいHTTPリクエストを用いて要求する次のセグメントは、プッシュされると約束された最後のセグメントの直後のセグメントである。クライアント側でのアップデートはステップ511で行われる。その間に、ステップ512で、K個の将来のセグメントのためのデータがサーバからHTTPクライアントにより受け取られる。
Otherwise (test 509 true), the next segment to request with a new HTTP request is the segment immediately following the last segment promised to be pushed. Update on the client side is performed in
ステップ510および512の次に、ストリーミングが終了するまでプロセスを反復するためにプロセスはステップ505にループバックする。
Following
代わりに、クライアント310は、得るべきK個の将来のセグメントの処理をHTTPクライアント311において実装することができる。そのような実装では、ダウンロードするべき次の1つまたは複数のセグメントの決定を担当するのはHTTPクライアントである。次のセグメントを要求するときに、DASHアプリケーションレベルにおいて知覚されるレイテンシが低減されるように、HTTPクライアント311により受け取られたプッシュされたデータは、そのとき、DASH制御エンジン313のために予めクライアントキャッシュ(307)を満たすであろう。
Instead, the
特定の実施形態では、クライアントは、プッシュリクエストに関する確認応答データを受け取ると、例えば第2データまたは追加のリソースを得る自身のストラテジーを適合させるために、受け取った確認応答データを処理する(ステップ513)。そのような確認応答データの処理の例は、図11aから11eを参照することにより与えられる。 In certain embodiments, when the client receives the acknowledgment data for the push request, the client processes the received acknowledgment data, eg, to adapt its strategy of obtaining second data or additional resources (step 513). . An example of processing such acknowledgment data is given by referring to FIGS. 11a to 11e.
全てのHTTPヘッダとして、特定プッシュヘッダのシンタックスを見ると、それは{名前、値}ペアによって特定され、その名前と値とはコロン‘:’によって分離される。 Looking at the syntax of a specific push header as all HTTP headers, it is specified by a {name, value} pair, and the name and value are separated by a colon ':'.
ヘッダ名は、例えば“Push−Request”であり得、あるいはそれが他の既存のヘッダ名と衝突しなければ他の任意の名前であり得る。もしそれがアプリケーション専用ヘッダであるならば、名前はアプリケーション名から始まることができる:例えば様々なケースに釣り合う“DASH−Push−Request”または“HTML−Push−Request”。 The header name can be, for example, “Push-Request”, or any other name that does not conflict with other existing header names. If it is an application-specific header, the name can begin with the application name: for example, “DASH-Push-Request” or “HTML-Push-Request” that matches various cases.
以下で、アプリケーション関連のプレフィックス無しで一般的ヘッダが考察される。 In the following, generic headers are considered without application-related prefixes.
特定プッシュヘッダの目標は、1つまたは複数の一意リソース識別子(URI)またはロケータ(URL)などを定義して(サーバに)提供し、第1リソースを要求しているクライアントのために追加のリソースまたは関心の対象であるリソースの部分を特定することである。本発明により規定されるように、HTTPリクエストは、これらの追加リソースを決定するために自給自足的でなければならない、すなわち外部からのあるいは前後関係上の情報を用いずに決定しなければならない。 The specific push header goal is to define (provide to the server) one or more unique resource identifiers (URIs) or locators (URLs) and provide additional resources for the client requesting the first resource. Or identifying the part of the resource of interest. As specified by the present invention, HTTP requests must be self-sufficient to determine these additional resources, i.e., without external or contextual information.
追加リソースまたはリソースの部分を定義する種々の実施形態が考えられる。 Various embodiments are possible that define additional resources or portions of resources.
複数の実施形態において、特定プッシュヘッダは、これらの追加リソースを特定するためのURIまたはURLを明示的に含む。例えば:
<Push−Request:HTTP://server/path/segment−2.mp4>
In embodiments, the specific push header explicitly includes a URI or URL to identify these additional resources. For example:
<Push-Request: HTTP: // server / path / segment-2. mp4>
他の複数の実施形態では、それらは構築ルールを通して示され、そのルールは特定プッシュヘッダに挿入される。換言すれば、関心の対象である追加リソースのリストは構築ルールとして表現される。特定プッシュヘッダのシンタックスは、図6bに示されている通りであり得る。 In other embodiments, they are indicated through construction rules, which are inserted into specific push headers. In other words, the list of additional resources of interest is expressed as a construction rule. The syntax for a particular push header may be as shown in FIG. 6b.
ヘッダ650のヘッダ値は予約文字、例えば‘;’、により分離される3つの別々の部分から構成される。
The header value of the
第1部分652は、2つの他の部分により定義される構築ルールがHTTPリクエストのどの部分に適用されなければならないかを定義する“サポート”である。特に、そのようなURIまたはURLは、HTTPリクエストにおいてセットされたリクエスト−URIの全部または一部であり得る。
The
このように、“サポート”という語は、最初のリクエスト−URI自体を指すことができるし、HTTPリクエスト内に存在する別のHTTPヘッダを指すこともできる。 Thus, the term “support” can refer to the initial request-URI itself, or it can refer to another HTTP header present in the HTTP request.
第2部分653は、サポートからの抽出パターン、すなわちサポート部分652が指すURIまたはURLの変化部分、を定義する。
The
例えば、リクエスト−URIなどの中の変化部分は、予約文字を用いて明示され得る。1つの変化形では、変化部分は、抽出して修正するべきリクエスト−URIなどの部分を示す正規表現として表現され得る。 For example, the change part in the request-URI or the like can be specified using a reserved character. In one variation, the variation portion may be expressed as a regular expression that indicates a portion such as a request-URI to be extracted and modified.
従って第2部分653は、変化部分情報を含んでいて、URIテンプレートの形をとることができる。
Accordingly, the
サポートが他の1つのHTTPヘッダであるときには、示すべき抽出パターンが無いことがあり、或いは、例880に関しては(以下を参照)、ヘッダ値全体が置換するべきパターンとして示される。 When the support is one other HTTP header, there may be no extraction pattern to show, or for example 880 (see below), the entire header value is shown as the pattern to replace.
最後の部分654は、第2部分653により定義される変化部分の後継者として適用するべき1つまたは複数の代入値を任意に含む。
The last part 654 optionally includes one or more substitution values to be applied as successors of the change part defined by the
代入値は、値のコロン分離(または任意の専用セパレータ)リストを用いて、あるいは値のレンジを用いて、あるいはレンジのリストを用いても、定義され得る。そのような場合、プッシュヘッダプロセッサ321/358は、その値のリストまたは1つもしくは複数のレンジ全体を繰り返して代入値と同数のURLを推測するべきである。
An assigned value may be defined using a colon-separated list of values (or any dedicated separator), or using a range of values, or using a list of ranges. In such a case, the
例えば、第1部分と第2部分とがマージされるとき:
<Push−Request:HTTP://server/path/segment−{1}.mp4;{2−5}>
ここで{1}は変化部分を定義し、{2−5}は代入値である。
For example, when the first part and the second part are merged:
<Push-Request: HTTP: // server / path / segment- {1}. mp4; {2-5}>
Here, {1} defines a change part and {2-5} is an assigned value.
3つの別々の部分を有する別の例は次の通りである:
<Push−Request:request−URI;segment−{1}.mp4;{2−5}>
ここで“request−URI”はサポートであり、“segment−{1}.mp4”は変化部分{1}を有するサポートにより定義されるURIの部分であり、{2−5}は代入値である。
Another example with three separate parts is as follows:
<Push-Request: request-URI; segment- {1}. mp4; {2-5}>
Here, “request-URI” is support, “segment- {1} .mp4” is the part of the URI defined by the support having the change part {1}, and {2-5} is an assigned value .
1つの問題は、構築ルールをなるべく一般的に構築することである。そのような構築のための例示的な重要な面は、適応ストリーミングと関連して提供される。 One problem is to build construction rules as generally as possible. An exemplary important aspect for such construction is provided in connection with adaptive streaming.
メディアセグメントまたはメディアコンテンツサブパーツを記述する種々の仕方:SegmentTemplate、SegmentBaseまたはSegmentList、がDASHで提供され、一度にこれら3つのうちの1つだけがRepresentation、AdaptationSetまたはPeriodエレメント内に存在する。 Various ways of describing media segments or media content subparts: SegmentTemplate, SegmentBase or SegmentList are provided in DASH, and only one of these three is present in the Representation, AdaptationSet or Period element at a time.
SegmentTemplateは、自身がダウンロードしたい次のセグメントに関してクライアントがサーバにヒントを提供するためのURIテンプレートを容易に構築する最も便利な方法である。その理由は、SegmentTemplateはマニフェストで定義されているセグメントURLのどの部分がまさに変化しようとしているかを、例えばリプリゼンテーションの一意識別子またはリプリゼンテーションの帯域幅などに依存して、明らかに示すことである。この場合、クライアントによるK個の将来のセグメントの特定は、DASH制御エンジン313で利用し得る、標準的テンプレート分解プロセス以外の能力を必要としない。
SegmentTemplate is the most convenient way to easily build a URI template for clients to provide hints to the server for the next segment that they want to download. The reason is that SegmentTemplate clearly indicates which part of the segment URL defined in the manifest is about to change, for example depending on the unique identifier of the representation or the bandwidth of the representation. is there. In this case, the identification of the K future segments by the client does not require any capabilities other than the standard template decomposition process that can be utilized by the
これは図7aの例の場合である。URIテンプレート“mp4−live−$RepresentationID$−$Number$.m4s”から、同じRepresentation“h264bl_low”の現在のセグメントNの後のK個のセグメントを指定する構築ルールを定義するのは容易である。
<Push−Request:“mp4−live−h264bl_low−{1}.m4s”;{(N+1)−(N+K)}>
This is the case in the example of FIG. From the URI template “mp4-live- $ RepresentationID $-$ Number $ .m4s”, it is easy to define a construction rule that specifies K segments after the current segment N of the same Representation “h264bl_low”.
<Push-Request: “mp4-live-h264bl_low- {1} .m4s”; {(N + 1) − (N + K)}>
SegmentListアプローチに関しては、クライアントは、リストされているセグメントのURI間の繰り返すパターンを特定するためにMPDファイルを前処理し、次にセグメントURLのリストを表す一般的ルールを推測することができる。 With respect to the SegmentList approach, the client can preprocess the MPD file to identify a repeating pattern between the URIs of the listed segments, and then infer general rules that represent a list of segment URLs.
代わりに、MPDアナライザは、この作業をオフラインで行い、使用され得るURIテンプレートを提供するためにSegmentListに新しいエレメント、属性またはディスクリプタを付けることができる。これは、クライアント側での処理を促進するためである。エレメントまたは属性として、URIテンプレートはSegmentListエレメントの中で定義され得るであろう。ディスクリプタとして、それはSegmentListの親エレメントにおいて定義され得るであろう(例えばRepresentationエレメントのレベルで)。 Instead, the MPD analyzer can do this work offline and attach a new element, attribute or descriptor to the SegmentList to provide a URI template that can be used. This is to facilitate processing on the client side. As an element or attribute, a URI template could be defined within a SegmentList element. As a descriptor, it could be defined in the parent element of the SegmentList (eg at the level of the Representation element).
図10は、セグメントの記述のためにSegmentListエレメントを使用するMPDサンプル1000を提供する。SegmentListは、SegmentURLエレメントの列挙を含む。このMPDサンプルにおいて、同じビデオコンテンツのための2つの二者択一リプリゼンテーション1002、1003が同じAdaptationSet1001の中に記載されている。
FIG. 10 provides an
各Representation内のSegmentURLのリストをパースすることにより、クライアントは、URLが、セグメントインデックスを除いて、大部分は一定であることを容易に判定することができる。 By parsing the list of SegmentURLs in each representation, the client can easily determine that the URL is largely constant except for the segment index.
次に、1005および1006に設けられている例示的URIテンプレートのような注釈が親Representationエレメントに付け加えられ得る(Representationあたりにせいぜい1つのSegmentListであるため)。(@templateURI属性内の)この注釈のおかげで、リスト内の1つまたは複数のセグメントをプッシュされるべきものとして示したいクライアントは、@templateURI値を特定プッシュヘッダ内にコピーアンドペーストするだけで良いであろう。 Next, annotations such as the exemplary URI templates provided at 1005 and 1006 can be added to the parent Representation element (since there is at most one SegmentList per Representation). Thanks to this annotation (in the @templateURI attribute), clients that want to indicate one or more segments in the list as to be pushed need only copy and paste the @templateURI value into the specific push header. Will.
クライアントのためのURIテンプレートの使用をさらに簡単化するために、得られた@templateURI1005および1006のどの部分が一方のRepresentationと他方のRepresentationとで異なっているかをチェックすることができる。その理由は、この例1000では、同じAdaptationSet内に複数のRepresentationがあることである。これは、今度は複数の変数または変化部分を伴うAdaptationSetレベルにおいて、他の1つのテンプレート属性の生成をもたらす(1007を参照)。
To further simplify the use of the URI template for the client, it is possible to check which portions of the resulting @
従って、1つのレベルから次のレベルへと、@templateURI属性を漸次一般化してゆくことが可能である。従って、その一般化プロセスは、segmentURL値が完全に同様のままとなるまで、1つまたは複数の親セグメントにわたって反復され得る。 Therefore, it is possible to gradually generalize the @templateURI attribute from one level to the next level. Thus, the generalization process can be repeated over one or more parent segments until the segmentURL value remains completely similar.
@templateURI注釈1007に関しては、URIテンプレートが偶然に複数の変数または変化部分を含むことがあり得る。そのような場合、それらの変化部分をそれらのそれぞれの代入値との置換のためにどの順序で考察してゆかなければならないかを決定するのはクライアントである。従ってクライアントは、サーバがこれらの変化部分を考察するときにサーバを所定の順序に従わせるために、各変化部分を優先レベルと関連付けることができる。
With respect to the @
任意に、@templateURI属性の他に、@templateURI属性の1つまたは複数の変化部分のために可能な値のレンジを示すために@templateValue属性も設けられ得る。可能な値のレンジは、MPDに基づいて、すなわち図10の例ではSegmentURLのリストに基づいて、決定される。 Optionally, in addition to the @templateURI attribute, an @templateValue attribute may also be provided to indicate a range of possible values for one or more variable portions of the @templateURI attribute. The range of possible values is determined based on the MPD, ie in the example of FIG. 10, based on the list of SegmentURLs.
例えば、注釈1005および1006の他に、同じ値のレンジ:@templateValue=“{1−6}”を定義するために注釈1005および1006の各々と共に@templateValue属性が宣言され得るであろう。
For example, in addition to
AdaptationSetレベルに加えられた@templateURIに関して、@templateValue属性は次の値を取るであろう:@templateValue=“low:hd;{1−6}”。‘low’および‘hd’文字列はリプリゼンテーション識別子に対応する第1変数“level”のための可能な値をリストし、レンジ{1−6}はセグメントインデックスに対応する第2変数“nb”のための可能な値をリストする。 For @templateURI added to the AdaptationSet level, the @templateValue attribute will take the following values: @ templateValue = “low: hd; {1-6}”. The 'low' and 'hd' strings list possible values for the first variable “level” corresponding to the representation identifier, and the range {1-6} is the second variable “nb” corresponding to the segment index. List possible values for "".
図6bに示されている特定プッシュヘッダのシンタックスに戻り、一実施形態は、特定プッシュヘッダを記述するとき1つまたは複数の抽出パターン653を表現するために次の文法とURIテンプレートに関するRFC6570とを使用する。
Returning to the syntax of the specific push header shown in FIG. 6b, one embodiment describes an RFC 6570 for the following grammar and URI template to represent one or
“プッシュヘッダ”は次のように定義され得る:
push_request=“Push−Request:“header_name”;“uri_template*(“;”definition)
header_name=“URI”|HeaderName
A “push header” can be defined as follows:
push_request = “Push-Request:“ header_name ”;“ uri_template * (“;” definition)
header_name = “URI” | HeaderName
HeaderNameは、様々なHTTPバージョンの仕様の中の所定のヘッダ名に対応する。 HeaderName corresponds to a predetermined header name in the specifications of various HTTP versions.
uri_templateパラメータは、潜在的にエクステンションを伴ってRFC6570において定義されているURIテンプレートである。このテンプレートは、中括弧の間に定義される、その名前が数である変数または変化部分を含み得る。例えば:/server/video{1}.mp4は1つの変化するパラメータを有するuri_templateであり、/server/{1}/image{2}.jpgは2つの変化するパラメータを有する別のuri_templateである。 The uri_template parameter is a URI template that is defined in RFC 6570 with potential extensions. This template may contain variables or variable parts whose names are numbers, defined between curly braces. For example: / server / video {1}. mp4 is uri_template with one changing parameter, / server / {1} / image {2}. jpg is another uri_template with two changing parameters.
最も単純な場合は、サポート全体がが宣言された定義、すなわち代入値、に置き換えられるべきであることを意味する{1}に等しいuri_templateに対応する。さらに、宣言された変数を持たないuri_templateは、サポート652全体がuri_template値に取って代わられるべきであることを意味する。例えば、support=“URI”でuri_template=“/server/resource2.ext”であるならば、特定プッシュヘッダは、それ以上の処理無しで、クライアントにより提案されたリソースのためのURIが/server/resource2.ext“であることを示す。
The simplest case corresponds to a uri_template equal to {1} which means that the entire support should be replaced with the declared definition, ie the assigned value. Furthermore, uri_template without a declared variable means that the
最後の任意定義パラメータは、1つまたは複数の代入値を宣言する。第1定義はuri_templateの第1変数のための1つまたは複数の代入値に対応し、第2定義は第2変数に対応する、などである。uri_templateパラメータ(すなわち、抽出パターン)と同数の定義パラメータ(すなわち、代入値のセット)があらねばならない。 The last optional parameter declares one or more assigned values. The first definition corresponds to one or more substitution values for the first variable of uri_template, the second definition corresponds to the second variable, and so on. There must be as many definition parameters (ie, sets of substitution values) as there are uri_template parameters (ie, extraction patterns).
従って、このような“定義”は1つまたは複数の値および/または1つまたは複数のリストおよび/または1つまたは複数のレンジを含む:
定義=値|リスト|レンジ
ここで値は、代入値を文字の列として表現する第1の可能性である;
リスト=値|レンジ*(“:”値|レンジ)は、代入値を値(または値のレンジ)のコロン分離リストとして表現する第2の可能性である。コンマ文字は慣習的に同じヘッダのための数個の値を分離するために使用されるので、コンマ文字よりもコロン文字の方が選択されていることに注意されたい。
レンジ=“{“スタート”−“エンド”}”は、代入値をレンジとして表現する第3の可能性である。これは、‘スタート’と‘エンド’との間の、‘スタート’と‘エンド’との両方を含む、全ての値のリストと解釈されるべきである。これは、整数である値のためにだけ可能である。
Thus, such a “definition” includes one or more values and / or one or more lists and / or one or more ranges:
Definition = value | list | range where the value is the first possibility to represent the substitution value as a string of characters;
List = value | range * (“:” value | range) is the second possibility to represent the substitution value as a colon-separated list of values (or range of values). Note that the colon character is selected over the comma character because the comma character is conventionally used to separate several values for the same header.
Range = “{“ start ”−“ end ”}” is a third possibility to express the substitution value as a range. This should be interpreted as a list of all values between 'start' and 'end', including both 'start' and 'end'. This is only possible for values that are integers.
定義パラメータの中の可変値のフォーマッティングは、デフォルトのものである。値のレンジに関するフォーマッティング問題を防止するために、レンジ内の値のフォーマッティングは、特に先行するゼロに関して、スタート値およびエンド値のフォーマッティングに従うべきである。例えば、レンジが‘{8−10}’として明示されたならば、生成される値は:‘8、9、10’である。レンジが‘{08−10}’として明示されたならば、生成される値は:‘08、09、10’である。 The formatting of variable values in the definition parameters is the default. In order to prevent formatting problems with a range of values, the formatting of values within the range should follow the formatting of the start and end values, especially with respect to leading zeros. For example, if the range is specified as '{8-10}', the generated values are: '8, 9, 10'. If the range is specified as' {08-10} ', the generated value is: '08, 09, 10'.
注釈1007と関連して上で手短に紹介されたように、特定プッシュヘッダは、2つ以上の変化部分(すなわち、変数)を有するURIテンプレートを含み得る。特定プッシュヘッダにより定義された追加リソースがサーバによりプッシュされる順序は、その2つ以上の変化部分がサーバによりどのように連続して考察されるか(すなわち拡張されるか)に直接依存する。従って、この順序は特定プッシュヘッダから推測されるべきである。
As briefly introduced above in connection with
uri_templateルールにおいて変数を拡張するための例示的アルゴリズムは、変数の順序が提供されると仮定して、次の通りである:
1.uri_templateのリストの入手
− 第1変数拡張(提供された順序での第1)のために、特定プッシュヘッダで定義されているuri_templateが使用される。
− 次の1つまたは複数の変数拡張(提供された順序での)のために、先行する1つまたは複数の変数の拡張からもたらされるuri_templateのリストが使用される。
2.得られたリストの中の各uri_templateは、次のようにして得られたuri_templateのリストに置き換えられる:
− 拡張ステップで考察された変数の各値のために、uri_templateが複製され、URIテンプレートの中の変数は代入値のうちの1つに置き換えられる。
An exemplary algorithm for extending variables in uri_template rules is as follows, assuming that an order of variables is provided:
1. Get list of uri_template-For the first variable extension (first in the order provided), the uri_template defined in the specific push header is used.
-For the next one or more variable extensions (in the order provided), the list of uri_template resulting from the extension of the preceding one or more variables is used.
2. Each uri_template in the resulting list is replaced with a list of uri_template obtained as follows:
-For each value of the variable considered in the extension step, the uri_template is duplicated and the variable in the URI template is replaced with one of the assigned values.
これは、URIの(または、ヘッダ値の)最終リストにおいて、その順序において第1の変数(例えば‘1’により定義される)が最もゆっくり変化し、その順序において最後の(すなわち、最大の数により定義される)変数が最も急速に変化するということを意味する。 This is because in the final list of URIs (or header values), the first variable in that order (eg, defined by '1') changes most slowly, and the last (ie, the largest number) in that order Means that the variable changes most rapidly.
例えば、構築ルール<‘Push−Request:URI;{1}−{2};a:b;1:2’>は次の順序リストをもたらす:
− ‘a−1’
− ‘a−2’
− ‘b−1’
− ‘b−2’
For example, the construction rule <'Push-Request: URI; {1}-{2}; a: b; 1: 2'> yields the following ordered list:
-'A-1'
-'A-2'
-'B-1'
-'B-2'
構築ルール<‘PushRequest:URI;{2}−{1};a:b;{1−3}’>は下記の順序リストをもたらす:
− ‘a−1’
− ‘b−1’
− ‘a−2’
− ‘b−2’
− ‘a−3’
− ‘b−3’
The construction rule <'PushRequest: URI; {2}-{1}; a: b; {1-3}'> yields the following ordered list:
-'A-1'
-'B-1'
-'A-2'
-'B-2'
-'A-3'
-'B-3'
代わりに、複数の変数のための処理および置換順序は特定のオペレータとして表現され得る。RFC6570は、オペレータ拡張のために幾つかの文字を確保している。一実施形態では、‘@’文字は順序を示すために使用され得る:オペレータの値が大きいほど、処理順序は大きくなる。この代替実施形態において、上の2つの例は次のようになる: Alternatively, the processing and replacement order for multiple variables can be expressed as a specific operator. RFC 6570 reserves several characters for operator expansion. In one embodiment, the '@' character may be used to indicate the order: the greater the operator value, the greater the processing order. In this alternative embodiment, the above two examples are as follows:
構築ルール<Push−Request:URI;{foo@1}−{bar@2};a:b;1:2>、“foo”および“bar”は次の順序で値“a”および“b”ならびに“1”および“2”にそれぞれ置き換えられる変数名である:
− ‘a−1’
− ‘a−2’
− ‘b−1’
− ‘b−2’
Construction rule <Push-Request: URI; {foo @ 1}-{bar @ 2}; a: b; 1: 2>, “foo” and “bar” are values “a” and “b” in the following order: And variable names that are replaced by "1" and "2" respectively:
-'A-1'
-'A-2'
-'B-1'
-'B-2'
構築ルール<Push−Request:URI;{foo@2}−{bar@1};a:b;{1−3}>は次の順序リストをもたらすであろう:
− ‘a−1’
− ‘b−1’
− ‘a−2’
− ‘b−2’
− ‘a−3’
− ‘b−3’
The construction rule <Push-Request: URI; {foo @ 2}-{bar @ 1}; a: b; {1-3}> will yield the following ordered list:
-'A-1'
-'B-1'
-'A-2'
-'B-2'
-'A-3'
-'B-3'
上の例はHTTPヘッダにおいて単一の特定プッシュヘッダを用いるけれども、他の実施形態は2つ以上のプッシュヘッダを用いることができる。 Although the above example uses a single specific push header in the HTTP header, other embodiments can use more than one push header.
例えば、クライアントが様々なタイプの数個のリソースに関心を持つときおよび/または構築ルールを設けることがあまりに困難であるとき、それは特定プッシュヘッダの複数のインスタンスを用いると決定することができる。 For example, when a client is interested in several resources of various types and / or when it is too difficult to provide construction rules, it can be determined to use multiple instances of a particular push header.
一例として、もしウェブページのダウンロードを加速することが求められているならば、クライアントはそのウェブページを構成するサブリソースの種類ごとに1つのプッシュヘッダを生成することができる:イメージに1つ、スタイルシートに1つ、スクリプトコードに1つ、など。 As an example, if it is desired to accelerate the download of a web page, the client can generate one push header for each type of sub-resource that makes up the web page: one for the image, One for the style sheet, one for the script code, etc.
そのような状況において、各特定プッシュヘッダの値は、幾つかのタイプのサブリソースをフィルタリングするフィルタリングパラメータのように振る舞う。サブリソースが参照されるメインリソースはHTTPリクエストによって明示的に要求されたリソース(すなわち、request−URIのリソース)であり得るということに留意されたい。 In such a situation, the value of each specific push header behaves like a filtering parameter that filters several types of sub-resources. Note that the main resource to which the sub-resource is referenced may be a resource explicitly requested by the HTTP request (ie, a request-URI resource).
プッシュヘッダの複数のインスタンスを持てばURI/URLの付加的なリストがもたらされ、各インスタンスが、プッシュするべきリソースの別々のセットを定義するであろう。 Having multiple instances of the push header will result in an additional list of URI / URLs, each instance defining a separate set of resources to push.
特定プッシュヘッダの複数のインスタンスを正当化する他の1つの場合は、クライアントが最初のリクエスト内の様々なサポートからの部分、例えばリクエスト−URIの一部分およびレンジヘッダ内のバイトレンジ値、を改変したいとき、あるいは2つの異なるヘッダの改変を示すとき、を含む。そのような状況では、クライアントは2つ(あるいはもっと多く)の特定プッシュヘッダを、一方はURI改変のためにおよび他方はレンジ改変のために、置くことができる。処理されたヘッダは、新しいURIと関連する新しいバイトレンジとを有する1つの複合インスタンスに帰着するであろう。 In one other case that justifies multiple instances of a particular push header, the client wants to modify the parts from the various supports in the initial request, eg the request-URI part and the byte range value in the range header Or when indicating two different header modifications. In such a situation, the client can place two (or more) specific push headers, one for URI modification and the other for range modification. The processed header will result in one composite instance with a new URI and a new byte range associated with it.
複数のプッシュヘッダに基づく複数ヘッダ改変については、各プッシュヘッダ処理は、対応する代入値に対応するURI/ヘッダのセットを生成し、リソースの最終のリストは生成されたセットの全ての可能な組み合わせを、すなわちヘッダの各URI/セットのための代入値同士の全ての可能な組み合わせを設けることにより得られるということに留意するべきである。 For multiple header modifications based on multiple push headers, each push header process generates a set of URI / headers corresponding to the corresponding substitution value, and the final list of resources is all possible combinations of the generated sets Note that by providing all possible combinations of substitution values for each URI / set of the header.
複数の実施形態において、特定プッシュヘッダはuri_template仕様に代わるもののために使用され得る。 In embodiments, a specific push header may be used for an alternative to the uri_template specification.
uri_templateパラメータが相対URIを示すとき、プッシュヘッダプロセッサは原リクエスト−URIからの相対パスを考慮して絶対URIを構築しなければならない。 When the uri_template parameter indicates a relative URI, the push header processor must construct an absolute URI taking into account the relative path from the original request-URI.
しかし、複数の実施形態において、ベースURIまたは別のベースURIは、別の特定ヘッダにおいてまたはPush−Requestヘッダの中のパラメータとして明示され得るであろう。これは、例えば、複数のBaseURLがマニフェストにおいて宣言されるDASHにおいて有益であり得る。それゆえ、もしクライアントが幾つかのリソースをプッシュしてもらいたければ、それは特定プッシュヘッダと共に第1ベースURLを用いて第1サーバを試験することができ、もしプッシュ約束が受け取られなければ、それは第2サーバがその特定プッシュヘッダをサポートするかどうかを試験するために次のリクエストでベースURLを変えることができる。 However, in embodiments, the base URI or another base URI could be specified in another specific header or as a parameter in the Push-Request header. This can be useful, for example, in DASH where multiple BaseURLs are declared in the manifest. Therefore, if the client wants to push some resources, it can test the first server using the first base URL with a specific push header, and if no push commitment is received, it The base URL can be changed in the next request to test whether the second server supports that particular push header.
特定プッシュヘッダにおいてベースURIの変更を示す例示的な仕方はuri_templateパラメータの後にセットされる追加のパラメータ、“var_base”、を含む。var_baseパラメータは、新しいベースURI値を宣言する。 An exemplary way of indicating a base URI change in a specific push header includes an additional parameter, “var_base”, set after the uri_template parameter. The var_base parameter declares a new base URI value.
例えば、HTTPリクエストのリクエストラインが
GET/server1/video/segment−1.mp4
であるならば、特定プッシュヘッダは次のようであり得る
<Push−Request:URI;segment−{1}.mp4;{2−4};var_base=/AnotherServer/video/>
For example, the request line of the HTTP request is GET / server1 / video / segment-1. mp4
If so, the specific push header may be: <Push-Request: URI; segment- {1}. mp4; {2-4}; var_base = / AnotherServer / video />
この構築ルールは追加リソースの次のリストを生成する:
http://AnotherServer/video/segment−2.mp4
http://AnotherServer/video/segment−3.mp4
http://AnotherServer/video/segment−4.mp4
This construction rule generates the following list of additional resources:
http: // AnotherServer / video / segment-2. mp4
http: // AnotherServer / video / segment-3. mp4
http: // AnotherServer / video / segment-4. mp4
あるいは、URI−template RFC6570を用いてuri_templateパラメータを宣言する代わりに、正規表現が代わりに設けられ得る。 Alternatively, instead of declaring the uri_template parameter using URI-template RFC 6570, a regular expression may be provided instead.
インタオペラビリティ目的を処理する複数の実施形態においては、特定プッシュヘッダは2つの別々のヘッダに分割される:
− 第1のものはクライアントの興味の対象であるリソースを示す。これは、上に記載された特定プッシュヘッダである;
− 第2のものは、クライアントがサーバプッシュを受け入れることをサーバに示す。これは接続セットアップ時に取り決められ得るのであるが、クライアントにとっては、プッシュされたデータをそれが何時受け入れ得るかということとプッシュをキャンセルするより大きなリスクが何時存在するか(例えばクライアントが頻繁な切り替えを伴うよく確立されていないビデオモードを経験する時)ということとをサーバに告げることは有益であろう。
In embodiments that handle interoperability purposes, the specific push header is split into two separate headers:
The first indicates the resource that the client is interested in. This is the specific push header described above;
-The second indicates to the server that the client accepts the server push. This can be negotiated during connection setup, but for the client, when it can accept the pushed data and when there is a greater risk of canceling the push (e.g. the client switches frequently It would be beneficial to tell the server that it is (when experiencing a well-established video mode).
この第2ヘッダは、プッシュをサポートしないネットワークインターメディアリのためにも有益であろう(例えばCDNにおいて):それらは、依然として第1プッシュヘッダをネットワークのエッジに近い何らかのリソースをプリフェッチするためのヒントとして解釈することができるであろう。 This second header may also be useful for network intermediaries that do not support push (eg, in a CDN): they are still a hint for prefetching some resource close to the edge of the network with the first push header. Could be interpreted as
本発明の特定プッシュヘッダは、ストリーミングクライアントが様々なDASH状況を改善するのに役立つであろう:
− 例えば、クライアントが次のセグメントを予想したいとき;
− あるいはクライアントがビデオにおける時間オフセットを探したいとき;
− あるいは所与の期間にサーバが次のセグメントを送るとクライアントが信頼しているとき;
− あるいはクライアントが切り替えを予想しているとき;
− あるいはクライアントが関連付けられているリソースに関心を持っているとき;
− あるいはクライアントが多重化されていないオーディオ−ビデオセグメントを要求するとき。そのような場合、ビデオセグメントを要求するとき、それは対応するオーディオセグメントに対する関心を示し得る。
The specific push header of the present invention will help streaming clients to improve various DASH situations:
-For example, when the client wants to predict the next segment;
-Or when the client wants to find a time offset in the video;
-Or when the client trusts that the server will send the next segment in a given period of time;
-Or when the client expects to switch;
-Or when the client is interested in the associated resource;
Or alternatively when the client requests an unmultiplexed audio-video segment. In such cases, when requesting a video segment, it may indicate interest in the corresponding audio segment.
別の実施形態では、代入値は他の専用ヘッダ(下記の“Push−Values”)に置かれることができ、そのときにはヘッダの下記のセット(ここでのヘッダ名は単なる例である)をもたらすであろう:
Push−Request:header_name“;”uri_template
Push−Values:definition[*(“;”definition)]
この別の実施形態に関しては、下記の例850は次のように書き換えられるであろう:
GET/server/video/Rep−R1/segment−01.mp4
Push−Request:URI;segment−{1}.mp4;
Push−Values:02:10
さらに、下記の例865は次のようになるであろう:
GET/server/video/Rep−R1/segment−01.mp4
Push−Request:URI;Rep−{1}/segment−{2}.mp4
Push−Values:R1:R2;{01−03}
In another embodiment, the substitution value can be placed in other dedicated headers (“Push-Values” below), which results in the following set of headers (header names here are just examples) Will:
Push-Request: header_name “;” uri_template
Push-Values: definition [ * (“;” definition)]
For this alternative embodiment, Example 850 below would be rewritten as follows:
GET / server / video / Rep-R1 / segment-01. mp4
Push-Request: URI; segment- {1}. mp4;
Push-Values: 02:10
Further, Example 865 below would be as follows:
GET / server / video / Rep-R1 / segment-01. mp4
Push-Request: URI; Rep- {1} / segment- {2}. mp4
Push-Values: R1: R2; {01-03}
あるいは、プッシュ特定ヘッダにおいて2つ以上の変数パラメータが宣言されているとき、各変数パラメータのための代入値はそれ自身の“Push−Values”ヘッダにおいて宣言され得る。そのような場合、“Push−Values”ヘッダは、値もしくは値のリストもしくは値のレンジが後に続く変数パラメータ名を含むべきである。例えば:
GET/server/video/Rep−R1/segment−01.mp4
Push−Request:URI;Rep−{var1}/segment−{var2}.mp4
Push−Values:var1=R1:R2
Push−Values:var2={01−03}
Alternatively, when more than one variable parameter is declared in the push specific header, the assigned value for each variable parameter may be declared in its own “Push-Values” header. In such a case, the “Push-Values” header should include a variable parameter name followed by a value or a list of values or a range of values. For example:
GET / server / video / Rep-R1 / segment-01. mp4
Push-Request: URI; Rep- {var1} / segment- {var2}. mp4
Push-Values: var1 = R1: R2
Push-Values: var2 = {01-03}
他の例示的書き換えは、上の書き換え例から容易に推測され得る。 Other exemplary rewrites can be easily inferred from the above rewrite example.
別の代案では、図6bに示されているプッシュ特定ヘッダの各部分は対応する別々のヘッダ内に置かれ得る;例えば(ヘッダ名は単なる例である):
Push−Support:URI
Push−Pattern:segment−{var}.mp4
Push−Values:var=02:10
In another alternative, each portion of the push specific header shown in FIG. 6b may be placed in a corresponding separate header; for example (header names are just examples):
Push-Support: URI
Push-Pattern: segment- {var}. mp4
Push-Values: var = 0: 10
図7a、7bおよび8と関連して、つぎに、URIテンプレートを使用するDASHのための特定プッシュヘッダの例が記載される。 In conjunction with FIGS. 7a, 7b and 8, an example of a specific push header for DASH using a URI template will now be described.
図7aおよび7bは、DASH標準規格を使用するHTTPを通しての適応ストリーミングの文脈における本発明の使用の例を提供する。図7aは、各メディアセグメントをどこ(すなわちURI)でダウンロードするべきかをストリーミングクライアントに示すSegmentTemplateエレメント701を含む例としてのMPD700である。クライアントは、希望されたまたは可能な空間解像度および帯域幅に依存して2つの代替ビデオリプリゼンテーション702および703のいずれかを選択することができる。
Figures 7a and 7b provide an example of the use of the invention in the context of adaptive streaming over HTTP using the DASH standard. FIG. 7a is an
図7bは、本発明が実装されるときの、クライアントおよびサーバがHTTP/2を用いて通信すると仮定する、クライアント−サーバのエクスチェンジを記述する。 FIG. 7b describes a client-server exchange assuming that the client and server communicate using HTTP / 2 when the present invention is implemented.
クライアント750は初めにステップ752でHTTP GETリクエストを介してサーバ751にMPD、ストリーミングマニフェスト、を要求する。サーバはステップ753でMPDファイルをクライアントに返すためにHTTPレスポンスを送る。
The client 750 first requests an MPD and a streaming manifest from the server 751 via an HTTP GET request in
MPDを受け取ると、クライアントは、自身のメディアデコーダをセットアップするための初期化情報を特定するためにステップ754でそれをパースする。
Upon receiving the MPD, the client parses it at
次にステップ755で、クライアントは、この初期化セグメントを得るために別のHTTP GETリクエストを送る。サーバは、HTTPレスポンスにおいて、要求された初期化セグメントファイルを提供する。これはステップ756である。
Next, in
その間にまたは連続して(ステップ757)、クライアントは自身の好み/特性に応じて適切なリプリゼンテーションを特定する。このステップは、クライアントが、ビデオを読み始めるのに必要な第1メディアセグメントだけではなくてビデオを読み続けるためにダウンロードするべき次のセグメント、(もしリプリゼンテーション切り替え決定が行われなければ)普通は同じリプリゼンテーションからの後続のメディアセグメント、をも特定することを可能にする。クライアントは、この/これらの後続の1つまたは複数のセグメントのための1つまたは複数のURIを、マニフェストを用いて、推測することができる。 During or in succession (step 757), the client identifies an appropriate representation according to its preference / characteristics. This step is not only the first media segment the client needs to start reading the video, but the next segment to download to continue reading the video, usually (if no representation switch decision is made) Allows to identify subsequent media segments from the same representation. The client can infer one or more URIs for this / these subsequent one or more segments using the manifest.
次にステップ758で、クライアントは、ビデオを表示し始めるために第1メディアセグメントをサーバに要求する。
Next, at
本発明を用いて、クライアントは、リクエスト758に、ダウンロードするべき次のメディアセグメントのための1つまたは複数のURIを挿入する。この挿入は専用のHTTPプッシュヘッダ(例えばリクエスト758内の“Push−Request”ヘッダ)に行われる。この特定のHTTPヘッダのための値の例は、図8と関連して以下で提供される。
Using the present invention, the client inserts in
リクエスト758に応答して、本発明をサポートし、従って特定プッシュヘッダを理解するサーバは、自身がプッシュヘッダを理解することをクライアントに知らせることができるとともにそれ(サーバ)がクライアントへのデータのプッシュを主導することをアナウンスする。これは、サーバ開始ストリーム識別子をクライアントに提供するサーバにより送られるPUSH PROMISEフレーム759の目的である。
In response to request 758, a server that supports the present invention and thus understands the specific push header can inform the client that it understands the push header and it (the server) pushes data to the client. Announce to lead. This is the purpose of the
サーバは、さらに、ストリーム識別子としてのGETリクエスト758のストリーム識別子と共に、GETリクエストの目的である要求された第1セグメントを1つまたは複数のDATAフレーム760で送る。
The server further sends the requested first segment, which is the purpose of the GET request, in one or more DATA frames 760 along with the stream identifier of the
最後に、ステップ759で交換されるサーバ開始ストリーム識別子と関連して、サーバは、1つまたは複数のDATAフレーム761を通して、リクエスト758の特定ヘッダにおいて示されているメディアセグメントに対応するデータをプッシュする。
Finally, in conjunction with the server start stream identifier exchanged in
特定の実施形態では、サーバは、クライアントからのプッシュリクエスト、すなわち特定された追加リソースをプッシュすることを求める要求、特定されたプッシュポリシー、ストラテジー、もしくはディレクティブを使用することを求めるリクエスト、または追加のリソースをプッシュしないことを求めるリクエスト、の受信を確認する。そのような確認応答はプッシュ約束メッセージのHTTPヘッダで送信され得る。それは、DASHレスポンスヘッダプロセッサ386がサーバにより用いられるプッシュポリシーをDASH制御エンジン313に知らせることを可能にする。
In certain embodiments, the server requests a push request from a client, i.e., a request to push specified additional resources, a request to use a specified push policy, strategy, or directive, or an additional request. Confirm receipt of a request that does not push the resource. Such an acknowledgment may be sent in the HTTP header of the push commitment message. It allows the DASH
図11aから11eは、サーバ1101がクライアント1100から受け取られたプッシュポリシーの受信を確認して自身が適用しようとするかまたは適用できるプッシュポリシーを後者に知らせることを可能にする、サーバ1101およびクライアント1100の間のプッシュポリシー管理の幾つかの例を示す。これらの例は、MPEG DASHのような、HTTPでの適応ストリーミングに基づく(ストリーミングマニフェストに基づく方法)。
FIGS. 11a to 11e allow
図11aは、ストリーミングマニフェスト(DASHの場合にはMPD)に対する最初のリクエスト1102でのプッシュポリシーの指示のクライアント1100による送信を示す。前述のように、この指示は専用のHTTPプッシュヘッダを介して伝えられ得る。
FIG. 11a shows the transmission by the client 1100 of the push policy indication in the
受け取ると、サーバ1101はそのリクエストをステップ1103で処理する、すなわちサーバはクライアント1100に提供されるべきリソース(MPD)を特定する。次に、サーバ1101は、参照番号1102の最初のリクエストのためのリターンコードを伴う自身のレスポンスをステップ1104で準備する。従って、もし要求されたリソースが利用できるならば、リターンコードはHTTPコード200である。
Upon receipt,
並行して、サーバ1101は、専用HTTPプッシュヘッダに含まれるプッシュポリシー指示を処理する。もしサーバがこのヘッダを理解できて、提案されたプッシュポリシーを処理できるならば、それは、クライアントにより提案されたプッシュポリシーの受信を確認する。これは、参照番号1104のレスポンスに確認応答データを加えることにより、例えば参照番号1102のリクエストと同じポリシー値を有する同じ専用HTTPプッシュヘッダを加えることにより、行われ得る(そのような場合、プッシュ確認応答データはプッシュポリシーデータと同じである)。
In parallel, the
これは、クライアントに対して、提案されたプッシュポリシーをサーバが進んで使用することを示す。 This indicates to the client that the server is willing to use the proposed push policy.
従って、そのような場合、参照番号1104の応答でのプッシュポリシー確認の後、サーバは自身がクライアントにプッシュしようとしている追加データをアナウンスし始める。これは、例えば、HTTP/2からのPUSH_PROMISEフレームを用いることにより、行われ得る(DASHの場合、セグメントあたりに1つのPUSH_PROMISEフレーム)。
Thus, in such a case, after confirming the push policy in response to
標準規格ベースで、サーバは、好ましくは、参照番号1102のリクエストでクライアントにより要求されたデータ(すなわち、MPDファイル)を自身の参照番号1104のレスポンスに含めるということに留意するべきである。
It should be noted that on a standards basis, the server preferably includes the data requested by the client in the request with reference number 1102 (ie, the MPD file) in its
そのように生成された参照番号1104のHTTPレスポンスがステップ1105でクライアントに送り返されてクライアントにより処理されるのと同時に、サーバは、アナウンスされた追加データをクライアントに送るために使用されるデータストリームを準備し始める(ステップ1106)(通例、HTTP/2では、約束されたリソースあたりに1データフレーム、すなわちDASHの場合には1セグメント)。
At the same time as the HTTP response so generated with
最後に、クライアントはステップ1107の間にメディアプレゼンテーションのために第1セグメントを受け取り始め、同時に参照番号1102のリクエストに応じて送られたMPDを処理し、このようにしてネットワークトラフィックを節約し送信遅延を小さくする。
Finally, the client starts receiving the first segment for media presentation during
代わりに、サーバにより送られる確認応答データは例えば“OK”のような単純な値を有する別の専用HTTPプッシュヘッダを通してシグナリングされ得るということに留意するべきである。 Instead, it should be noted that the acknowledgment data sent by the server may be signaled through another dedicated HTTP push header having a simple value such as “OK”.
本発明の実施形態を実装するサーバに関しては、クライアントにより提案されたプッシュポリシーの受信を、サーバがそれをサポートしてそれを適用するときに、確認することが推薦され得る。実際、これは、クライアントにとっては、サーバにより送られたPUSH_PROMISEフレームを受け入れるか否かを容易に決定するために適切な情報である。 For a server implementing an embodiment of the present invention, it may be recommended to confirm receipt of a push policy proposed by a client when the server supports it and applies it. In fact, this is appropriate information for the client to easily decide whether to accept the PUSH_PROMISE frame sent by the server.
クライアントとサーバとの間のこの第1ラウンドトリップの後で、クライアントは、例えばステップ1106および1107の間にプッシュされたセグメントの次のセグメントに対するリクエストを用いて、メディアプレゼンテーションのストリーミングを続けるためにリクエストを提出し続ける(ステップ1108)。このリクエストの中で、クライアントは、前のリクエストと同じプッシュポリシー指示を有する専用HTTPプッシュヘッダを参照番号1108のリクエストに加えることによって自身が同じプッシュポリシーを維持していることを確認することができる。
After this first round trip between the client and server, the client requests to continue streaming the media presentation, for example using a request for the next segment of the segment pushed during
サーバエンドにおいて、受け取られたリクエストの処理(ステップ1109)は、要求されたリソースが利用し得るか否かを確認する(例えばHTTPステータスコード200OK)とともに専用HTTPプッシュヘッダを用いて自身が適用しているプッシュポリシーを確認するレスポンスに帰着するとともに、プッシュされるべき追加データのアナウンスおよび要求されたセグメントデータの送信に帰着する(データの実際のプッシュは表されていないがレスポンス1109の後に続く)。 At the server end, the processing of the received request (step 1109) confirms whether or not the requested resource is available (for example, HTTP status code 200OK) and applies itself using a dedicated HTTP push header. Result in a response confirming the push policy that is being sent, and an announcement of additional data to be pushed and transmission of the requested segment data (the actual push of data is not represented but follows response 1109).
図11bはプッシュポリシー通知の確認応答の例を示し、これによりサーバはクライアントにより提案されたプッシュポリシーを自身が実行できないことをクライアントに知らせる。 FIG. 11b shows an example of an acknowledgment of a push policy notification, whereby the server informs the client that it cannot execute the push policy proposed by the client.
クライアントにより提案されたプッシュポリシー指示をサーバがサポートしない場合、それは単にそれを無視することができる。 If the server does not support the push policy indication proposed by the client, it can simply ignore it.
しかし、サーバは、自身がいかなるプッシュポリシーも使用しないとクライアントに警告するのが有益であろう。これはクライアントにとっては自身の将来のリクエストを予定するために有益な情報である。実際、クライアントは全てのセグメントを順々に要求しなければならないであろう。 However, it may be beneficial for the server to alert the client that it does not use any push policy. This is useful information for clients to schedule their future requests. In fact, the client will have to request all segments in turn.
その目的のために、サーバは、プッシュが行われないということを示す特定のプッシュディレクティブ、例えばタイプ“push−none”の、値を伴わないプッシュポリシー(または、図12bで参照番号1231として記載されているもの)、を使用することができる。
For that purpose, the server is described with a specific push directive indicating that no push will take place, for example a push policy without a value of type “push-none” (or as
図示されているように、第1ステップは、ストリーミングマニフェスト(DASHの場合にはMPD)に対する最初の要求1111におけるプッシュポリシーの指示のクライアント1100による送信に向けられている。前述されたように、この指示は専用HTTPプッシュヘッダを介して伝えられ得る。 As shown, the first step is directed to the client 1100 sending a push policy indication in the first request 1111 for the streaming manifest (MPD in the case of DASH). As described above, this indication can be conveyed via a dedicated HTTP push header.
受け取ると、サーバ1101は、ステップ1112でそのリクエストを処理する、すなわちサーバはクライアント1100に提供されるべきリソース(MPD)を特定する。次に、サーバ1101は、参照番号1102の最初のリクエストに対するリターンコードを伴う自身のレスポンスをステップ1113で準備する。従って、もしその要求されたリソースが利用できるならば、リターンコードはHTTPコード200である。
Upon receipt,
この例ではサーバ1101はクライアントにより提案されたプッシュポリシーを実行できないと仮定されているので、サーバ1101はクライアントに対してその提案されたプッシュポリシーを使用しないことを示す。これは、図11bに示されているように(参照番号1113)プッシュが行われないことを示す特定のプッシュディレクティブを使用することによって行われ得る。
In this example, it is assumed that
そのような情報を受け取ると(ステップ1114)、クライアント1100は全てのセグメントを1つずつステップ1115から要求しなければならないことを知る。
Upon receiving such information (step 1114), client 1100 knows that all segments must be requested from
任意に、それは、自身のリクエストにおいて同じ“無プッシュ”ポリシー指示を専用HTTPプッシュヘッダにセットすることによっても(1115で示されているように)、サーバからリソースがプッシュされることを自身が期待していないことを確認することができる。 Optionally, it expects the resource to be pushed from the server by setting the same “no push” policy indication in its own request in the dedicated HTTP push header (as indicated by 1115). You can confirm that you have not.
次に、サーバ1101はステップ1116で受け取ったリクエストを処理し、ステップ1117でそのリクエストに対して、“無プッシュ”ポリシーを確認するとともにリクエストに対応するデータを送信することによって、応答する。これらの2つのステップは、ストリーミングセッションの終了まで反復される。
Next, the
代わりに、サーバは、確保されている情報コード(例えば103、“非サポートプッシュポリシーモード”をクライアントに知らせる)を伴う別の専用HTTPプッシュヘッダを使用することができるであろう。 Instead, the server could use another dedicated HTTP push header with a reserved information code (eg, 103, informing the client of “unsupported push policy mode”).
なお、代わりに、クライアントは、HTTP Expectヘッダを通して自身のプッシュポリシーを示すことができ、その場合サーバは“期待フェイル”のための417コードを示すか、あるいはもっと明瞭に、クライアントが希望しているプッシュモードをサーバがサポートしないことに対して専用される、確保されている4xxコードを示すであろう。 Note that instead, the client can indicate its push policy through the HTTP Expect header, in which case the server will either indicate a 417 code for “expected fail” or, more clearly, the client wants Will show reserved 4xx code dedicated to the server not supporting push mode.
別の実施形態では、本発明の実施形態を実装するクライアントは、サーバが本発明をサポートするか否かを知らない。クライアントが完全なコントロールを維持すると決定して“無プッシュ”プッシュポリシーをサーバに送っても、サーバはそのヘッダを理解しないので確認応答は送り返されない。 In another embodiment, a client implementing an embodiment of the present invention does not know whether a server supports the present invention. If the client decides to maintain full control and sends a “no push” push policy to the server, no acknowledgment is sent back because the server does not understand the header.
サーバは本発明を実装するけれどもクライアントがそれをサポートしない別の実施形態では、クライアントのリクエストで専用HTTPプッシュヘッダを受信しないサーバは、何もプッシュされないことをクライアントに警告するために“無プッシュ”ポリシー指示を用いて確認応答をすることができる(サーバは、クライアントが本発明をサポートするか否かを知らないか、あるいは単に自身の好みを示し忘れたので)。そのようにすることにより、サーバは無用なデータを送るリスクを冒さない。 In another embodiment where the server implements the present invention, but the client does not support it, a server that does not receive a dedicated HTTP push header in the client's request is “no push” to alert the client that nothing will be pushed. A policy indication can be used to acknowledge (because the server does not know whether the client supports the present invention or simply forgot to indicate its own preference). By doing so, the server does not take the risk of sending useless data.
そのような特定の“無プッシュ”ポリシーの目的は、特に、下記を示すために使用され得る:
− クライアントがプッシュに関心を持っていないこと;あるいは
− クライアントが、幾つかのリクエストのためのプッシュを中断させたがっていること。
The purpose of such a specific “no push” policy can be used in particular to indicate:
-The client is not interested in pushing; or-The client wants to interrupt the push for some requests.
これは、サーバプッシュの使用が許されるかどうかをサーバに示すためにクライアントによって使用され得る、HTTP/2により定義されている既存のSETTINGS_ENABLE_PUSHセッティングパラメータよりも満足のいくコントロールを提供する。このセッティングパラメータは、サーバプッシュに関してきめ細かなネゴシエーションや制御メカニズムを提供しない。実際、そのようなネゴシエーション手段を持つことはクライアントおよびサーバにとって有益であろう。例えば、SETTINGS_ENABLE_PUSHセッティングパラメータの値はサーバがサーバプッシュを使用することを可能にするけれども、クライアントはストリーミングセッションの中の幾つかのまたは全てのリクエストのためにサーバプッシュを禁止することを望み得る。例えば、これはクライアントにとっては、ビデオエレメントを埋め込むウェブページをロードするとき、有益であり得る。クライアントは、メディアセグメントではなくて、そのウェブページに関連付けられたリソース(CSS、イメージ、JavaScript)をプッシュしてもらうことに興味があるかもしれない。そのような場合、特定のDASHコンテンツを除いてコネクション全体にわたってデータのプッシュが可能にされ、クライアントは自身がデータプッシュ無しを選択することをメディアサーバに示すであろう。 This provides more satisfactory control than the existing SETTINGS_ENABLE_PUSH setting parameter defined by HTTP / 2, which can be used by the client to indicate to the server whether server push usage is allowed. This setting parameter does not provide a fine-grained negotiation or control mechanism for server push. In fact, it would be beneficial for clients and servers to have such negotiation means. For example, the value of the SETTINGS_ENABLE_PUSH setting parameter allows the server to use server push, but the client may want to prohibit server push for some or all requests in the streaming session. For example, this can be beneficial for a client when loading a web page that embeds a video element. The client may be interested in having the resources (CSS, images, JavaScript) associated with the web page pushed instead of the media segment. In such a case, data can be pushed across the connection except for specific DASH content, and the client will indicate to the media server that it chooses no data push.
図11cはプッシュポリシー通知の受け取りを確認する例を示し、この例ではクライアントはストリーミングマニフェストに対する最初のリクエストにおいて幾つかのプッシュポリシーを提案する。換言すれば、図11aおよび11bに関連して記載されたように単一のプッシュポリシーを提案する代わりに、クライアントは自身がサポートするプッシュポリシーのリストを送信する。 FIG. 11c shows an example of confirming receipt of a push policy notification, in which the client proposes several push policies in the initial request for the streaming manifest. In other words, instead of proposing a single push policy as described in connection with FIGS. 11a and 11b, the client sends a list of push policies it supports.
図示されているように、第1ステップは、ストリーミングマニフェスト(DASHの場合にはMPD)に対する最初のリクエスト1119におけるクライアント1100による自身がサポートするプッシュポリシーのリストの送信に向けられている。そのようなリストは好ましくは順序リストである(好みの順序、図11cには表されていない)。
As shown, the first step is directed to the client 1100 sending a list of push policies it supports in the
その目的のために、ポリシーのタイプと好みの順序のための任意のパラメータとを伝える専用HTTPプッシュヘッダが作成される。例えば、専用HTTPプッシュヘッダは既存のAccept HTTPヘッダと同様に“Accept−Push−Policy”HTTPヘッダとして定義される(https://tools.ietf.org/html/rfc7231#section−5.3.2を参照)。 To that end, a dedicated HTTP push header is created that conveys the type of policy and any parameters for the order of preference. For example, the dedicated HTTP push header is defined as an “Accept-Push-Policy” HTTP header similar to the existing Accept HTTP header (https://tools.ietf.org/html/rfc7231#section-5.3.2). See).
Acceptヘッダは、所与のmedia−typeが:
0*(ゼロまたはそれ以上)個の特定media−typeパラメータ(例えば:charset);これは例えば、リクエスト:*.jpg、*.pngを発行するクライアントによりサポートされるメディアタイプのリストであり得る
0−1個の“q”パラメータ(相対的重さを示すための)
0*個の拡張パラメータ(拡張パラメータが存在するならばセパレータとして“q”パラメータは必須である)
を持つことを許す。
The Accept header has a given media-type:
0 * (zero or more) pieces of specific media-type parameters (for example: charset); This example, request: *. jpg, * . Can be a list of media types supported by the client issuing png 0-1 "q" parameters (to indicate relative weight)
0 * extended parameters ("q" parameter is required as a separator if extended parameters exist)
Allow to have.
これは専用HTTPプッシュヘッダに関して:
Accept−Push−Policy:<urn>[‘:’<urn−specific−param>*];q=<N>
に帰着し、この“q”パラメータは、何らかのグローバルパラメータが存在するならば、必須である。
This is for a dedicated HTTP push header:
Accept-Push-Policy: <urn>[':'<urn-specific-param> * ]; q = <N>
This “q” parameter is mandatory if any global parameter exists.
“q”パラメータは、1つまたは複数のポリシーパラメータ、上の式の中の<urn−specific−param>、を、もし存在するならば、ポリシータイプ(上の式の中の<urn>により示される)から分離するQ係数である。 The “q” parameter indicates one or more policy parameters, <urn-specific-param> in the above expression, if present, by the policy type (<urn> in the above expression). Q factor to be separated from
Q係数は、ユーザまたはユーザエージェントが、0から1のq値スケールを用いて、ポリシータイプおよび/またはポリシー値についての相対的優先度を示すことを可能にする。デフォルト値はq=1(より大きなQ係数または好ましいもの)である。 The Q factor allows a user or user agent to indicate a relative priority for a policy type and / or policy value using a q-value scale from 0 to 1. The default value is q = 1 (greater Q factor or preferred).
説明のために、クライアントは、プッシュヘッダ内の下記の通知:
Accept−Push−Policy:urn:mpeg:dash:fdh:push−next;5
を用いて、1つの要求されたセグメントに続く次の5つのセグメントをプッシュするようにサーバに求めることができ、ここで第1部分、URN、はプッシュディレクティブまたは使用するプッシュポリシーのタイプを一意的に特定する。‘;’セパレータの次の第2パラメータ(任意の)は、このプッシュポリシーにおいて適用するパラメータに対応する。
For illustration purposes, the client notifies the following in the push header:
Accept-Push-Policy: urn: mpeg: dash: fdh: push-next; 5
Can ask the server to push the next 5 segments following one requested segment, where the first part, URN, uniquely identifies the type of push directive or push policy to use To be specific. The second parameter (optional) following the ';' separator corresponds to the parameter applied in this push policy.
代わりに、ポリシータイプと値パラメータとの間の他のセパレータがHTTPヘッダ値におけるセパレータとして使用され得る(RFC2616を参照)。 Alternatively, other separators between policy type and value parameters can be used as separators in HTTP header values (see RFC 2616).
クライアントが自身の好みに応じたプッシュポリシーの順序リストを示すことを可能にする代替実施形態は、例えばライブシナリオにおいてサーバに幾つかの次のセグメントを、それらがサーバ上で準備状態になったならば直ちに、好ましくは3セグメント、さもなければ5セグメント、プッシュするように(図12bにおいて参照番号1230に従って登録された標準的プッシュポリシー)サーバに示すために“q”パラメータを使用することであり、次のように表現され得る:
Accept−Push−Policy:urn:mpeg:dash:fdh:push−next;3、
urn:mpeg:dash:fdh:push−next;5;q=0.5
An alternative embodiment that allows the client to show an ordered list of push policies according to their preferences is, for example, in a live scenario, if the server has several next segments, if they are ready on the server Using the “q” parameter to indicate to the server to immediately push, preferably 3 segments, otherwise 5 segments (standard push policy registered according to
Accept-Push-Policy: urn: mpeg: dash: fdh: push-next;
urn: mpeg: dash: fdh: push-next; 5; q = 0.5
好みの順序として品質レベルを用いて、ビデオの急速スタート(すなわちMPDリクエストから、初期化および第1ビデオセグメントをプッシュする)を可能にする(ここでは所有者のプッシュポリシーから。場合によっては図12bの1230に従って登録もされる)プッシュポリシーをクライアントが示す別の例として、プッシュポリシーの順序リストが次のように表現され得る:
Accept−Push−Policy:urn:canon:dash:fdh:push−fast−start;high、
urn:canon:dash:fdh:push−fast−start;mid;q=0.7
urn:canon:dash:fdh:push−fast−start;low;q=0.3
あるいは解像度の方を選んで:
Accept−Push−Policy:urn:canon:dash:fdh:push−fast−start;HD、
urn:canon:dash:fdh:push−fast−start;SD;q=0.7
Using the quality level as the order of preference, allows for a fast start of the video (ie, pushing the initialization and first video segment from the MPD request) (here from the owner's push policy, in some cases FIG. 12b). As another example where a client presents a push policy (which is also registered according to 1230), an ordered list of push policies can be expressed as:
Accept-Push-Policy: urn: canon: dash: fdh: push-fast-start; high,
urn: canon: dash: fdh: push-fast-start; mid; q = 0.7
urn: canon: dash: fdh: push-fast-start; low; q = 0.3
Or choose the resolution:
Accept-Push-Policy: urn: canon: dash: fdh: push-fast-start; HD,
urn: canon: dash: fdh: push-fast-start; SD; q = 0.7
クライアントがサーバに種々のデータをプッシュするように示すために、それは、qのための同じ値を有する2つの異なるプッシュポリシーに対する指示をリクエスト内に置くことができる。これは、サーバにより、そのリクエストに応じて適用されるべき2つのポリシーと解釈されるべきである。 To indicate that the client pushes various data to the server, it can place in the request instructions for two different push policies with the same value for q. This should be interpreted by the server as two policies to be applied in response to the request.
もしサーバが両方を適用できるならば、それは、そのクライアントの受け取りを、自身のレスポンスの中に、専用HTTPプッシュヘッダの中に、同じq値を有するこれら2つのプッシュポリシーを置くことによって、確認する。 If the server can apply both, it confirms receipt of the client by placing these two push policies with the same q value in its response, in a dedicated HTTP push header. .
ところが、もしその2つのうちの1つだけが適用され得るならば、それは、専用HTTPプッシュヘッダのための値として使用されるプッシュポリシーを用いてクライアントの提案を受け取ったことを確認する。 However, if only one of the two can be applied, it confirms that the client's proposal has been received with a push policy that is used as the value for the dedicated HTTP push header.
もしその2つの提案されたプッシュポリシーのいずれもが適用され得なければ、サーバは、無プッシュポリシーの識別子(例えば、登録された値1231、またはこの目的のために特に定義されている任意のプッシュポリシータイプ)を専用HTTPプッシュヘッダの中に加えることによって、クライアントの提案を受け取ったことを確認する。
If neither of the two proposed push policies can be applied, the server can identify the identifier of the no-push policy (eg, the registered
図11cに戻って、サーバ1101は、ステップ1120において、急速スタートに向けられているかもしれない受け取ったリクエスト1119を処理する。
Returning to FIG. 11c, the
そのリクエストに応答して、サーバ1101は、最初のリクエストのためのリターンコードを伴う自身のレスポンスをステップ1121で準備する。従って、要求されたリソースが利用可能であれば、リターンコードはHTTPコード200である。
In response to the request,
さらに、サーバ1101は、場合によっては自身の好みに合うように順序を再考して同じAccept−Push−Policy専用HTTPプッシュヘッダを用いることにより(そのような場合には、第1のものは、自身がプッシュしようとしている次のデータをアナウンスするために使用されるものである)、あるいは好ましくはリスト中の自身が使用する実際のプッシュポリシーだけを伝える別の専用HTTPプッシュヘッダを使用することにより、クライアント1100により提案されたプッシュポリシーのうちの1つを承認する。
In addition, the
例えば、そのような専用HTTPプッシュヘッダは、“DASH−PUSH”:urn:canon:dash:fdh:push−fast−start;lowであり得(ここでヘッダの名前(“DASH−PUSH”)は例として与えられている)、あるいはパラメータの正確な値を提供せずにポリシーのタイプだけ、例えば“DASH−PUSH”:urn:canon:dash:fdh:push−fast−start、(この場合、サーバにプッシュするメディアのバージョンを選択させる)であり得る。 For example, such a dedicated HTTP push header may be “DASH-PUSH”: urn: canon: dash: fdh: push-fast-start; low (where the header name (“DASH-PUSH”) is an example) Or only the type of policy without providing the exact value of the parameter, eg “DASH-PUSH”: urn: canon: dash: fdh: push-fast-start, (in this case the server To select the version of the media to push.
そのような確認応答データはステップ1122でクライアント1100により受け取られる。
Such acknowledgment data is received by client 1100 at
並行して、サーバ1101は、アナウンスされた追加データをクライアントに送るために使用されるデータストリームの準備を開始して(ステップ1123)、対応するデータを送る。
In parallel,
プッシュされたデータの受け取られた(ステップ1124)後にクライアント1100により送られる次のリクエストは、再びプッシュポリシー指示、例えばサーバにより承認された好ましいもの、を含み得る。 The next request sent by client 1100 after receipt of the pushed data (step 1124) may again include push policy indications, such as preferred approved by the server.
サーバ1101がMPDリクエストの中で受け取られた提案されているプッシュポリシーのいずれをもサポートしない場合(ステップ1120)、それは、専用HTTPプッシュヘッダを“無プッシュ”ポリシーにセットすることによってクライアントの提案の受け取りを確認することができる(例えば、図12bの参照番号1231の登録されたURN、urn:mpeg:dash:fdh:push−none、またはその目的のために特に定義されている任意のプッシュポリシータイプ、を通して)。
If the
図11dはプッシュポリシー通知の受け取りを確認する例を示し、この例ではクライアントはストリーミングマニフェストに対する最初のリクエストで“無プッシュ”ポリシーを提案する。換言すれば、図11dは、クライアントが初めにリプリゼンテーション選択に関するコントロールを維持することを望んでいる場合を示す。 FIG. 11d shows an example of confirming receipt of a push policy notification, in which the client proposes a “no push” policy in the first request for the streaming manifest. In other words, FIG. 11d shows the case where the client initially wants to maintain control over the representation selection.
図示されているように、第1ステップは、ストリーミングマニフェスト(DASHの場合にはMPD)に対する最初のリクエスト1131における“無プッシュ”ポリシー指示のクライアント1100による送信に向けられている。
As shown, the first step is directed to the client 1100 sending a “no push” policy indication in the
従って、最初のリクエスト1131は、クライアントがサーバに何かをプッシュすることを望んでいないということを明らかに示す。説明のために、そのような“無プッシュ”ポリシーは、図12bにおいて参照番号1230に登録されているように、次の通りであり得る:urn:mpeg:dash:fdh:push−none。
Thus, the
このような例は、クライアントがセッションの初めに急速スタートに興味を持っておらず、従ってサーバからのプッシュを阻止する場合に対応する(デフォルトでは、HTTP/2サーバは、適切でない何かをクライアントに送る危険を伴ってプッシュを主導し得る)。 Such an example corresponds to the case where the client is not interested in a quick start at the beginning of the session and thus prevents pushes from the server (by default, the HTTP / 2 server does not do anything appropriate to the client Can lead a push with the risk of sending to)).
図11dに示されているように、サーバ1101は、この無プッシュポリシーを、参照番号1133の自身のレスポンスで確認する。
As shown in FIG. 11 d, the
セグメントを要求するために、クライアントは自身が何を頼もうとしているのかをより良く知るためにそのMPDを分析し(ステップ1134)、その分析の結果として、1つまたは数個のプッシュポリシーをサーバに提案する(ステップ1135)。 To request a segment, the client analyzes its MPD to better know what it is trying to ask (step 1134) and, as a result of the analysis, the server can submit one or several push policies. (Step 1135).
応答して、サーバ1101は、約束されたデータ(表されていない)をプッシュするために図11aまたは図11cと関連して記載されるようにプッシュポリシーを確認する。
In response,
当然に、ストリーミングセッションの急速スタートのためのプッシュポリシーは他の目的のためにも使用され得る。例えば、クライアントはMPDリクエスト時にプッシュポリシーを指示し(ステップ1131)、次にサーバは(図11aまたは図11cと関連して前に記載されたように)肯定的にまたは否定的に確認し、結局、第1セグメントをクライアントにプッシュすると約束する。次に、セグメントに対する連続するリクエストのために、クライアントは、自身の選んだプッシュポリシーを示すことによって自身がサーバを信頼してプッシュを続行させるか、それとも特定の“無プッシュ”ポリシーを用いることにより自身が送信に対する完全なコントロールを維持することを望むのかを決定することができる。 Of course, the push policy for rapid start of the streaming session can also be used for other purposes. For example, the client indicates a push policy upon MPD request (step 1131), and then the server confirms positively or negatively (as described previously in connection with FIG. 11a or 11c) and eventually , Promises to push the first segment to the client. Next, for successive requests for a segment, the client either makes itself trusted by the server by indicating its preferred push policy, or by using a specific “no push” policy You can decide if you want to maintain full control over the transmission.
どんなプッシュポリシーがクライアントにより示されても、もしサーバがクライアントにより提案されたプッシュポリシーを処理できないかおよび/または対応する特定HTTPヘッダを処理できなければ(例えば図6aのテスト604がフォールスである)、それはどのような種類の確認応答も送ることができず、従ってクライアントからのヒントを単に無視するであろう、ということに留意するべきである。
Whatever push policy is indicated by the client, if the server cannot process the push policy proposed by the client and / or does not process the corresponding specific HTTP header (eg
反対に、クライアントにより提案されたプッシュポリシー(またはディレクティブ)を処理するように構成されてそれを適用すると決定するDASHサーバは、自身のレスポンスにおいて容認されるパラメータ値を伴う(もしあれば)プッシュポリシー(またはディレクティブ)のURNを用いることによってクライアントのリクエストを確認するべきである。クライアントにより複数のプッシュポリシーが示されサーバがクライアントにより提案されたプッシュポリシーのリストのうちのプッシュポリシーの1つをサポートする場合、自身が使用しようとしているプッシュポリシーを、適用されるプッシュポリシーのURNを専用HTTPプッシュヘッダ内に置くことによって、確認するべきである。 Conversely, a DASH server that is configured to process a push policy (or directive) proposed by the client and decides to apply it, push parameter (if any) with an acceptable parameter value in its response. The client request should be confirmed by using the (or directive) URN. If the client indicates multiple push policies and the server supports one of the push policy lists proposed by the client, the push policy that it is trying to use is the URN of the applied push policy Should be confirmed by placing in a dedicated HTTP push header.
任意に、以下で説明されて図11eに示されているようにサーバは自身が実行する代替プッシュポリシーのリストを種々の仕方で宣伝することもできる。 Optionally, as described below and shown in FIG. 11e, the server may advertise the list of alternative push policies it performs in various ways.
サーバがクライアントにより提案されたプッシュポリシーをサポートしない場合、それは“無プッシュ”ストラテジーのためのURL、すなわちurn:mpeg:dash:fdh:push−none、を用いてクライアントに知らせるべきである。“無プッシュ”ポリシーでの確認応答の他に、それは、自身がサポートする1つのプッシュポリシーまたはプッシュポリシーのリストを別の専用HTTPプッシュヘッダで公表することができる。確認応答レスポンスからあいまいさを無くすために、サーバは好ましくは別の専用HTTPプッシュヘッダを使用する。それは、自身が1つのプッシュポリシーを公表するのかそれともプッシュポリシーのリストを公表するのかにより、Accept−Push−Policyヘッダにおいて与えられるシンタックスを使用することができる。 If the server does not support the push policy proposed by the client, it should inform the client using the URL for the “no push” strategy, ie urn: mpeg: dash: fdh: push-none. In addition to acknowledgment with a “no push” policy, it can publish one push policy or a list of push policies that it supports in another dedicated HTTP push header. In order to eliminate ambiguity from the acknowledgment response, the server preferably uses another dedicated HTTP push header. It can use the syntax given in the Accept-Push-Policy header depending on whether it publishes one push policy or a list of push policies.
無プッシュケイパブルサーバ(すなわち、どのクライアントからのどのプッシュポリシーも理解しないサーバ。例えば図6aのテスト604がフォールスである)に対してプッシュポリシーがアドレスされたときにはどんな種類の確認応答も無く、どんなプッシュポリシーの宣伝もクライアントに対してシグナリングされ得ないであろうということに留意するべきである。
When a push policy is addressed to a non-push capable server (ie a server that does not understand any push policy from any client, eg
クライアントがプッシュポリシーを提案するのを助けるために、サーバは、自身がサポートするプッシュポリシーのリストをクライアントに送信することができる。これは幾つかの仕方で行われ得る。 To help the client propose a push policy, the server can send a list of push policies it supports to the client. This can be done in several ways.
例のために、サーバによりサポートされるプッシュポリシーのリストは、MPD内のコンテンツを作成するときに決定されることができて後者に1つまたは数個のDASHディスクリプタとして加えられることができる。それらは、オリジンサーバによりまたはコンテンツデリバリーネットワーク(Content Delivery Network)内のサーバによりサポートされるプッシュポリシーの指示を提供する。 For example, the list of push policies supported by the server can be determined when creating content in the MPD and can be added to the latter as one or several DASH descriptors. They provide indications of push policies that are supported by the origin server or by a server in the Content Delivery Network.
これも、ネットワークインターメディアリによって、もしそれらがDASHアウェアであるならば、行われ得る。 This can also be done by network intermediary if they are DASH aware.
そのようなディスクリプタは、特定のscheme_id_uri属性(例えば“urn:mpeg:dash:fdh:pushDirective”)により特定され得る。そのようなディスクリプタのための値属性はプッシュポリシーのタイプを含む(例えば:“urn:mpeg:dash:fdh:push−next”または“urn:mpeg:dash:fdh:push−none”)。 Such a descriptor may be identified by a specific scheme_id_uri attribute (eg, “urn: mpeg: dash: fdh: pushDirective”). The value attribute for such a descriptor includes the type of push policy (eg: “urn: mpeg: dash: fdh: push-next” or “urn: mpeg: dash: fdh: push-none”).
任意に、他の属性(例えばparam)は、プッシュする次のセグメントの数のようなポリシーパラメータを含み得る。これは次のように書かれるであろう:<SupplementalProperty scheme_id_uri=“urn:mpeg:dash:fdh:pushDirective” value=“urn:mpeg:dash:fdh:push−next” param=“5”/>。scheme_id_uriおよび値属性のための値は、DASH標準規格によりまたは少なくとも1230のように登録機関により定義されると想定される。これは、例えば、scheme_id_urisを通してのDASH、DASH産業フォーラム、あるいは対応するプッシュストラテジーを利用するクライアントおよびサーバの振る舞いに関する関連ガイドラインを有するIANAであり得る。 Optionally, other attributes (eg, param) may include policy parameters such as the number of next segments to push. This would be written as follows: <SupplementalProperty scheme_id_uri = “urn: mpeg: dash: fdh: pushDirective” value = “urn: mpeg: dash: fdh: push-next” 5 ”. The values for scheme_id_uri and value attributes are assumed to be defined by the DASH standard or by at least a registration authority as at 1230. This may be, for example, IANA with DASH through the scheme_id_uris, DASH industry forum, or related guidelines on client and server behavior utilizing the corresponding push strategy.
別の例では、特定HTTPヘッダフィールド、例えば“Supported−Push−Policies”、が、サーバによりサポートされるプッシュポリシーを記述するために使用され得る。基本的な実装では、このヘッダフィールドの値は、サポートされるプッシュポリシーの識別子のコンマ分離リストである。 In another example, a specific HTTP header field, such as “Supported-Push-Policies”, may be used to describe a push policy supported by the server. In the basic implementation, the value of this header field is a comma separated list of supported push policy identifiers.
そのような特定HTTPヘッダフィールドは、例えば、次の通りであり得る:
Supported−Push−Policies:urn:dash:adobe:k−push、urn:dash:canon:fast−start
Such a specific HTTP header field can be, for example:
Supported-Push-Policies: urn: dash: adobe: k-push, urn: dash: canon: fast-start
より豊かな実装では、各ポリシーのためにサポートされるパラメータ値は、“,”分離リスト、またはレンジとして記述され得るであろう。 In richer implementations, the parameter values supported for each policy could be described as a “,” separate list, or range.
そのような特定HTTPヘッダフィールドは、例えば(ポリシータイプとそのパラメータとの間のセパレータとして‘;’を用いて)、次の通りであり得る:
Supported−Push−Policies: urn:dash:adobe:k−push;0−100、urn:dash:canon:fast−start;low:medium
Such a specific HTTP header field can be, for example (using ';' as a separator between the policy type and its parameters):
Supported-Push-Policies: urn: dash: adobe: k-push; 0-100, urn: dash: canon: fast-start; low: medium
サーバは、各ポリシーのために“q”パラメータを加えることにより各ポリシーに対する自身の好みを示すこともできるであろう。 The server could also indicate its own preference for each policy by adding a “q” parameter for each policy.
そのような特定HTTPヘッダフィールドは、例えば、次の通りであり得る:
Supported−Push−Policies: urn:dash:adobe:k−push;0−100;q=0.4、urn:dash:canon:fast−start;low:medium;q=0.9
Such a specific HTTP header field can be, for example:
Supported-Push-Policies: urn: dash: adobe: k-push; 0-100; q = 0.4, urn: dash: canon: fast-start; low: medium; q = 0.9
アプリケーションコードにおいて、例えばウェブページにおいて、HTMLメタタグは、送信を改善するためにクライアントが使用し得る幾つかのポリシーをリストすることができるであろう。 In application code, such as a web page, an HTML meta tag could list several policies that a client can use to improve transmission.
そのようなHTMLメタタグは、例えば、次の通りであり得る:
<meta name=<<dash:fdh:pushDirective >> content= << urn:one_push_directive_ID>> />
ここで名前属性に許される新しい“dash:fdh:pushDirective”値は既存のエクステンションリスト:https://wiki.whatwg.org/wiki/MetaExtensionsに登録され得るであろう。そのような登録は、メディア配信を最適化するストラテジーをアプリケーションサーバが考慮し、メディアが例えば<video>エレメントとしてウェブページに埋め込まれるということをウェブクライアントが知らされることを可能にする。コンテンツ属性に置く値は、図12bの参照番号1230の登録された値のうちの1つであり得る。
Such HTML meta tags can be, for example:
<Meta name = << dash: fdh : pushDirective >> content = << urn: one_push_directive_ID >>/>
The new “dash: fdh: pushDirective” value allowed for the name attribute here is the existing extension list: https: // wiki. whatwg. could be registered with org / wiki / MetaExtensions . Such registration allows a web client to be informed that the application server considers a strategy for optimizing media delivery and that the media is embedded in the web page, for example as a <video> element. The value placed in the content attribute can be one of the registered values of
図8は、DASHを伴う適応ストリーミングの場合に関してプッシュヘッダの種々の例を提供する。メディア(ビデオ)は2つの別々のリプリゼンテーションR1 810およびR2 820として利用可能であり、その両方が時間的に整列しているビデオセグメント811および821を含む。
FIG. 8 provides various examples of push headers for the case of adaptive streaming with DASH. The media (video) is available as two
第1例830は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストは、プッシュヘッダ“Push−Request”を通して、クライアントが将来のセグメントとしてセグメントナンバー2に関心を持っているということも示す。そのようにするために、プッシュ特定ヘッダは、サーバがrequest−URIの中括弧入りパターン(ヘッダの第1パラメータ:“URI”により示される)、すなわちrequest−URIの中の文字列“01”、を最後のパラメータにおいて提供される値(例830においては“02”)を用いて改変しなければならないことを示す。1つの代案は、Push−Request:URI;−\(\d\+\),−\(%02d:\1+1\)のような正規表現を介して置換ルールを示すことだったであろう。 The first example 830 shows a client request for the first segment of the representation R1. This request also indicates through the push header “Push-Request” that the client is interested in segment number 2 as a future segment. To do so, the push specific header is sent by the server in a request-URI curly bracketed pattern (indicated by the first parameter of the header: “URI”), ie the string “01” in the request-URI, Indicates that it should be modified using the value provided in the last parameter (“02” in Example 830). One alternative would have been to show replacement rules via regular expressions such as Push-Request: URI;-\ (\ d \ + \),-\ (% 02d: \ 1 + 1 \).
第2例840は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが将来のセグメントとしてセグメントナンバー02、03、04および05に関心があることを示す。将来のセグメントのこのリストは、ここではコンパクト性および簡潔さを目的としてレンジとして表現されている。重ねて、中括弧同士の間のパターンは、4つのURLの対応するリストを構築するために、最初のrequest−URIの中で、提供されたレンジでセットされている値によって繰り返し取って代わられなければならない。 The second example 840 shows a client request for the first segment of the representation R1. This request also indicates through the push header “Push-Request” that the client is interested in segment numbers 02, 03, 04 and 05 as future segments. This list of future segments is represented here as a range for purposes of compactness and simplicity. Again, the pattern between the curly braces is repeatedly overridden by the value set in the provided range in the first request-URI to build the corresponding list of four URLs. There must be.
第3例850は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが将来のセグメントとしてセグメントナンバー02および10に関心を持っていることを示す。セグメントナンバーでの関心は、クライアントがビデオを急いでブラウズすることを可能にするであろう。そのとき、代入値は、コロンで分離された値のリストとして与えられる。クライアントがもっと多くのセグメント(ナンバー02から04、および10から13)に関心を持っていた場合、これらは次のようにレンジのリストを通してシグナリングされ得たであろう:
Push−Request:segment−{1}.mp4;{02−04}:{10−13}
A third example 850 shows a client request for the first segment of the representation R1. This request also indicates through the push header “Push-Request” that the client is interested in segment numbers 02 and 10 as future segments. Interest in segment numbers will allow clients to browse videos on the fly. The assigned values are then given as a list of values separated by colons. If the client was interested in more segments (numbers 02 to 04 and 10 to 13), these could have been signaled through the list of ranges as follows:
Push-Request: segment- {1}. mp4; {02-04}: {10-13}
第4例860は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが将来のセグメントとして、リプリゼンテーションR2内の、セグメントナンバー01に関心を持っていることを示す。これは、リプリゼンテーションR2がベースバージョンR1のエンハンストバージョンであるとき、スケーラブルなビデオのために有益であり得る。この例は、request−URIに代入する2つのパターン(中括弧の間の)の存在によって示されるrequest−URIの中の複数のパターンにおける変化を示す。 The fourth example 860 shows a client request for the first segment of the representation R1. This request also indicates through the push header “Push-Request” that the client is interested in the segment number 01 in the representation R2 as a future segment. This can be beneficial for scalable video when the representation R2 is an enhanced version of the base version R1. This example shows the changes in multiple patterns in the request-URI indicated by the presence of two patterns (between the curly braces) that are assigned to the request-URI.
第5例865は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが、将来のセグメントとして、初めにリプリゼンテーションR2のセグメントナンバー01および両方のリプリゼンテーションR1、および次にR2、のセグメント02に、最後に両方のリプリゼンテーション“R1”および“R2”のセグメント03に関心を持っていることを示す。これは、代入の順序を各々示す2つの(中括弧の間の)パターンの存在により示される。この例では、値“R1”および“R2”の第1のセットを有するリプリゼンテーション識別子が初めに考慮され、次に、01から03を含むレンジ内の値を有するセグメントインデックスが考慮される。 The fifth example 865 shows a client request for the first segment of the representation R1. This request is also sent through the push header “Push-Request” to the client as the future segment, first in segment number 01 of representation R2, both in representation R1, and then in segment 02 of R2, and finally Shows interest in segment 03 of both representations “R1” and “R2”. This is indicated by the presence of two patterns (between curly braces) that each indicate the order of substitution. In this example, representation identifiers having a first set of values “R1” and “R2” are considered first, and then segment indices having values in the range including 01 to 03 are considered.
複数のパラメータ(2つのリプリゼンテーションのセグメント01から03)にわたって繰り返すという特別の場合に関しては、リプリゼンテーションR1の第1セグメントは2回提供される(1回は要求された第1セグメントとして−request−URIを見よ;そして1回はプッシュされるデータとして)ことに留意しなければならない。従って、サーバは、最初のrequest−URIに対応するURLを削除するために、得られたURLのリストをフィルタリングすることができる。 For the special case of repeating over multiple parameters (two representation segments 01 to 03), the first segment of the representation R1 is provided twice (once as the requested first segment- Note that see request-URI; and once as data to be pushed). Thus, the server can filter the resulting list of URLs to delete the URL corresponding to the first request-URI.
第6例870および第7例880は、メディアセグメントがバイトレンジを通してアドレスされるときのヘッダの使用を示し、例えばMPDにおいてはメディアセグメントはそれらのセグメントのバイトレンジを提供するSegmentURLsを含むSegmentBaseエレメントとして記述される。 The sixth example 870 and the seventh example 880 illustrate the use of headers when media segments are addressed through byte ranges, for example in MPD the media segments are as SegmentBase elements containing SegmentURLs that provide the byte range of those segments. Described.
例870は、リプリゼンテーションR1の初めのバイトに対するクライアントのレンジリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが、リソースの将来の部分として、“Rep−R1.mp4”ファイル内の2001バイトオフセットから始まって3000バイトオフセットで終わるバイトレンジに関心を持っていることを示す。 Example 870 shows a client range request for the first byte of representation R1. This request is also via the push header “Push-Request” where the client is interested in the byte range starting from the 2001 byte offset in the “Rep-R1.mp4” file and ending at the 3000 byte offset as a future part of the resource. Indicates that
第7例880は、リプリゼンテーションR1の初めのバイトに対するクライアントのレンジリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが、リソースの将来の部分として、“Rep−R1.mp4”ファイル内の、バイトレンジ、初めは2001から3000包含のバイトレンジ、次に3001から4000包含のバイトレンジ、のリストに関心があることを示す。 A seventh example 880 shows a client range request for the first byte of the representation R1. This request is also sent via the push header “Push-Request” as the future part of the resource by the client in the byte range in the “Rep-R1.mp4” file, initially including the byte range 2001 to 3000, then 3001. Indicates that you are interested in the list of byte ranges from to 4000.
図8の第8且つ最後の例890は、初期化セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが、将来のセグメントとして、所与のセグメントに関心を持っていることを示す:ここで、パターンアイデンティフィケーションも代入値も無しに、明示的で絶対的なURIが提供される。 The eighth and final example 890 of FIG. 8 shows a client request for an initialization segment. This request also indicates through the push header “Push-Request” that the client is interested in a given segment as a future segment: where there is no pattern identification or assignment value, An explicit absolute URI is provided.
上の記述は、主に、場合によっては構築ルールを通して、プッシュされるべき特定リソースを定義する特定プッシュヘッダに集中している。 The above description focuses mainly on specific push headers that define specific resources to be pushed, possibly through construction rules.
リソースタイプをリソースフォルダにマッピングする静的設定ファイルをサーバが含む幾つかの実施形態では、クライアントは、クライアントが関心を持っているリソースをフィルタリングするために特定プッシュヘッダを使用することができる。そのようなフィルタリングは、例えば上記のステップ606の間に行われ得る。
In some embodiments where the server includes a static configuration file that maps resource types to resource folders, the client can use specific push headers to filter the resources that the client is interested in. Such filtering can be performed, for example, during
このフィルタリングアプローチは、クライアントが特定プッシュヘッダにおいて特定のリソースではなくてリソースの種類を、あるいは少なくともこれらの特定リソースを特定するルールを、示すときに、有益であり得る。 This filtering approach may be beneficial when the client indicates a resource type rather than a specific resource in a specific push header, or at least rules that specify these specific resources.
例えば、図12aおよび12bに関連して記載されたように、プッシュポリシーまたはプッシュディレクティブを明確に指定する一意識別子(例えばURN)の使用のような、代案が存在する。 Alternatives exist, such as the use of a unique identifier (eg, URN) that specifically specifies a push policy or push directive, as described in connection with FIGS. 12a and 12b.
図12aはストリーミングマニフェスト(DASHの場合にはMPD)に対する最初のリクエスト1201でのプッシュポリシーの指示のクライアント1200による送信を示し、その指示はそのプッシュポリシーと関連付けられた一意識別子である。前述されたように、この指示は、専用HTTPプッシュヘッダを介して伝えられ得る。
FIG. 12a shows the transmission by the client 1200 of a push policy indication in the
受け取ると、サーバ1210はステップ1203でリクエストを処理する、すなわちサーバはクライアント1200に提供されるべきリソース(MPD)を特定する。次に、サーバ1210は、最初のリクエストのためのリターンコードを有する自身のレスポンスを準備する。従って、要求されたリソースが利用可能であるならば、そのリターンコードはHTTPコード200である。
Upon receipt, server 1210 processes the request at
並行して、サーバ1210は、専用HTTPプッシュヘッダに含まれている一意識別子の関数として提案されたプッシュポリシーを特定する。もしサーバがそのヘッダを理解することができて自身が提案されたプッシュポリシーを処理できるならば、それは次に、クライアントにより提案されたプッシュポリシーの受け取りを確認する。これは、その一意識別子をレスポンス1204に加えることによって行われ得る。
In parallel, the server 1210 identifies the proposed push policy as a function of the unique identifier contained in the dedicated HTTP push header. If the server can understand the header and can process the proposed push policy, it then confirms receipt of the proposed push policy by the client. This can be done by adding that unique identifier to the
これは、クライアントに、サーバがその提案されたプッシュポリシーを進んで使用することを示す。 This indicates to the client that the server is willing to use the proposed push policy.
プッシュポリシーと関連付けられる一意識別子は、集中レジストリ、例えば図12bに示されている集中レジストリ1230、において定義され得る。URNは、プッシュポリシー(またはディレクティブ)の一意特定を可能にする。プッシュポリシー(またはディレクティブ)がパラメータを必要とするとき、これらは、プッシュポリシーが明示されるように、上のレジストリからリンクされた仕様において定義されなければならない。
The unique identifier associated with the push policy may be defined in a centralized registry, such as the
集中レジストリが定義されていなければ、専用HTTPプッシュヘッダはプッシュポリシーのタイプを伝えることができる(例えば、プッシュされるべきセグメントの数、セグメントがプッシュされているべき継続時間、またはMPDアップデートをプッシュするための指示)。 If no central registry is defined, the dedicated HTTP push header can convey the type of push policy (eg, push the number of segments to be pushed, the duration that the segments should be pushed, or MPD updates) Instructions for).
説明のために、専用HTTPプッシュヘッダで伝えられ得るプッシュポリシーのタイプは次の通りであり得る(“Push−Request”は、この例では、専用HTTPプッシュヘッダの名前である):
Push−Request:push−next
Push−Request:push−time
Push−Request:fast−start
Push−Request:mpd−update
For illustration purposes, the types of push policies that can be conveyed in a dedicated HTTP push header can be as follows ("Push-Request" is the name of the dedicated HTTP push header in this example):
Push-Request: push-next
Push-Request: push-time
Push-Request: fast-start
Push-Request: mpd-update
任意に、専用HTTPプッシュヘッダは、プッシュポリシーのタイプと、提案されたプッシュポリシーのためのパラメータとを伝えることができる(例えば、セグメントの数とプッシュする継続時間(秒単位))。従って、専用HTTPプッシュヘッダで伝えられる得るプッシュポリシーのタイプと、関連付けられているパラメータとは次の通りであり得る(ここでポリシーのタイプとパラメータとの間のセパレータとして‘;’を使用する):
Push−Request:push−next;5
Push−Request:push−time;2
Push−Request:fast−start;2
Push−Request:mpd−update;patch
Push−Request:push−next;
Optionally, a dedicated HTTP push header can convey the type of push policy and parameters for the proposed push policy (eg, number of segments and duration to push (in seconds)). Thus, the type of push policy that can be conveyed in a dedicated HTTP push header and the associated parameter can be as follows (here using ';' as a separator between the policy type and the parameter): :
Push-Request: push-next; 5
Push-Request: push-time; 2
Push-Request: fast-start; 2
Push-Request: mpd-update; patch
Push-Request: push-next;
より一般的に専用HTTPプッシュヘッダは:
Push−Request:URN*[‘;’<urn−specific−params>]
として表現され得る。
More generally, dedicated HTTP push headers are:
Push-Request: URN * [';'<urn-specific-params>]
Can be expressed as
最後の例は、具体的で、所与のセグメントから全ての次のものをプッシュし続けるようにサーバに示すことを狙っている(すなわち、クライアントからサーバ主導モードへの一種の切り替え)。 The last example is specific and aims to show the server to keep pushing all the next from a given segment (ie a kind of switch from client to server driven mode).
少数の可能な値と関連付けられた幾つかのポリシータイプに関しては、タイプとパラメータとを1つのURN、例えば:
urn:mpeg:dash:fdh:2015:push−next−*
または
urn:mpeg:dash:fdh:2015:push−time−2
として登録するのが有利であり得るということに留意するべきである。
For some policy types that are associated with a small number of possible values, the type and parameter must be one URN, eg:
urn: mpeg: dash: fdh: 2015: push-next- *
Or urn: mpeg: dash: fdh: 2015: push-time-2
It should be noted that it may be advantageous to register as
特定の実施形態により、プッシュするデータのタイプの関数としてプッシュポリシーを提案するためにクライアントがプッシュするデータに関する自身の希望を明確に表現するオプションがクライアントに与えられる。従って、図12bの集中レジストリ1230に示されているように、ユーザはセグメントに関連するプッシュストラテジーのためのセットと、MPDアップデートに関連するプッシュストラテジーのための別のセットとを定義することができる。
Certain embodiments give the client the option of clearly expressing their wishes for the data that the client pushes to propose a push policy as a function of the type of data to push. Thus, as shown in the
そのような実施形態は、特定MPDアップデートプッシュポリシーを持つために有益であることが判明し得、これはクライアントがアップデートプロセスを自動化するためである。実際、MPDアップデートをプッシュすることを提案し承認することは、MPD失効日を示すために特別のメタデータボックスをメディアセグメントに加えることを回避することを可能にする(通例、MPDがアップデートされるときにサーバによって行われる)。 Such an embodiment may prove beneficial for having a specific MPD update push policy because the client automates the update process. In fact, proposing and approving to push MPD updates makes it possible to avoid adding a special metadata box to the media segment to indicate the MPD expiration date (typically the MPD is updated). Sometimes done by the server).
例えば、ストリーミングセッションの間のどこかの時点で承認されたMPDアップデートのためのプッシュポリシーは、サーバがMPDアップデートをプッシュすると約束しているとクライアントに知らせるであろう。 For example, a push policy for an MPD update approved at some point during a streaming session will inform the client that the server has promised to push the MPD update.
さらにさまざまな種類のMPDアップデートポリシーを持てば、クライアントは、サーバがMPD全体(例えばURN:urn:mpeg:dash:fdh:push−mpd−fullと共に)を再送するかそれともパッチだけを再送するか(urn:mpeg:dash:fdh:push−mpd−patch)を知らされ得るであろう。代わりに、MPDアップデートのために1つのプッシュポリシーだけが定義され得、全体モードまたはパッチモードはパラメータとなる。 In addition, with different types of MPD update policies, the client can either retransmit the entire MPD (eg, with URN: urn: mpeg: dash: fdh: push-mpd-full) or just the patch ( urn: mpeg: dash: fdh: push-mpd-patch). Instead, only one push policy can be defined for the MPD update, and the whole mode or patch mode is a parameter.
図11aから11eは、これらの2種類のプッシュポリシーの使用を示す。図11aから11eと関連して記載されたように、クライアントは、初めにMPDを要求する。その間に、それは、MPDアップデートとセグメントとの両方のプッシュに関心があるのか、それともこれらの2種類のデータのうちの一方だけに関心があるのかを示すことができる。同様に、セグメントに対するリクエストを準備するとき、それはMPDアップデートとセグメントとの両方に対する関心またはこれらの2種類のデータのうちの一方だけに対する関心を示すことができる。 Figures 11a to 11e illustrate the use of these two types of push policies. As described in connection with FIGS. 11a through 11e, the client first requests an MPD. In the meantime, it can indicate whether we are interested in pushing both MPD updates and segments, or just one of these two types of data. Similarly, when preparing a request for a segment, it can indicate interest in both MPD updates and segments, or interest in only one of these two types of data.
実際、任意の時点でMPDアップデートに対する希望を示すためにセグメントに対するリクエストにおいてMPD特有ポリシーの使用が許されるべきである。同様に、MPDを要求するときにセグメント関連プッシュポリシーを使用することは、クライアントが高速開始ストリーミングセッションを持つことを可能にする。 In fact, the use of MPD specific policies should be allowed in requests for segments to indicate hope for MPD updates at any point in time. Similarly, using a segment-related push policy when requesting an MPD allows a client to have a fast-start streaming session.
ストリーミングアプリケーションに向けられた与えられた例は説明のためにHTTP/2プロトコルに基づいているが、WebSocketなどの他の双方向プロトコルも使用され得ることに留意するべきである。特に、専用HTTPプッシュヘッダはWebSocketのためのバインディングにおいて次のように取って代わられ得る:
− URL:要求されたリソースのURLを示す。対応するJSONパラメータは“url”である。
− PushDirective:クライアント選択されたPushDirectiveのURNを示し、JSON名“PushDirective”を有する。
− pushDirectiveに特有であるとともにpushDirectiveにより定義される値を示す任意のpushParams。
It should be noted that although the examples given for streaming applications are based on the HTTP / 2 protocol for illustration, other bi-directional protocols such as WebSocket can also be used. In particular, the dedicated HTTP push header can be replaced in the binding for WebSockets as follows:
-URL: Indicates the URL of the requested resource. The corresponding JSON parameter is “url”.
-PushDirective: indicates the PushDirect URN selected by the client and has the JSON name "PushDirective".
-Any pushParams that are unique to pushDirective and indicate a value defined by pushDirective.
同様に、確認応答メカニズムは、幾つかの専用WebSocketフレームにおいてJSONパラメータを使用することができる。 Similarly, the acknowledgment mechanism can use JSON parameters in some dedicated WebSocket frames.
例えば、サーバは様々なフォルダにデータをホストすることができる。そのとき、‘path’はメインリソースに到達するサーバ上のパスであると仮定して、‘path/image’はイメージリソースを含むであろう、‘path/code’はコード、例えばjavascriptコード、を含むであろう、‘path/style’はcssリソースを含むであろう、等々である。このような文脈において、クライアントがウェブページで宣言されている全ての種類のイメージを望むのか(image/*)それとも所与のタイプの全てのイメージを望むのか(image/*.jpg)を特定プッシュヘッダにおいて示すとき、サーバ上の設定ファイルは、どのリソースディレクトリのためにもプッシュされ得るイメージのリストをリストするべきである。 For example, the server can host data in various folders. Then, assuming that 'path' is the path on the server to reach the main resource, 'path / image' will contain the image resource, 'path / code' is a code, eg a javascript code, Will contain, 'path / style' will contain css resources, and so on. In this context, the specific push whether the client wants all types of images declared on the web page (image / * ) or all images of a given type (image / *. Jpg) When indicated in the header, the configuration file on the server should list a list of images that can be pushed for any resource directory.
ウェブページは、リクエストのrequest−URIにおいて要求されているデータであり得る。1つの変化形では、ウェブページは、リクエスト内の別の任意ヘッダを用いて特定され得る。 The web page may be the data being requested in the request-URI of the request. In one variation, the web page may be identified using another optional header in the request.
フィルタリングアプローチにより、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もし第1任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
HTTPリクエストから得られたメインリソースを用いてデータのセットを特定するステップ;
第2データのリストを得るために1つまたは複数のフィルタリングパラメータを用いて、特定されたセットの各データをフィルタリングするステップ;および
第2データをクライアントデバイスにプッシュするステップ;
を含む。
With a filtering approach, the present invention provides a method for transmitting data between a server device and a client device, which method at the server device:
Receiving an HTTP request for obtaining first data from a client device, wherein the HTTP request includes a first optional header field including one or more filtering parameters;
Retrieving the first data and sending it to the client device; and if the first optional header field is present in the HTTP request:
Identifying a set of data using the main resource obtained from the HTTP request;
Filtering each identified set of data using one or more filtering parameters to obtain a list of second data; and pushing the second data to the client device;
including.
クライアントの視点からは、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、クライアントデバイスにおいて:
第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、生成するステップ;
第1データを得るとともにサーバデバイスに、HTTPリクエストから推定されるメインリソースにおいて参照される第2データを、フィルタリングパラメータに従って、プッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
From a client point of view, the present invention provides a method for transmitting data between a server device and a client device, the method at the client device:
Generating an HTTP request to obtain first data, wherein the HTTP request includes a first optional header field that includes one or more filtering parameters;
Obtaining the first data and sending the HTTP request to the server device to cause the server device to push the second data referenced in the main resource estimated from the HTTP request according to the filtering parameters;
including.
フィルタリングアプローチとしてのプッシュ特定ヘッダの使用の幾つかの例が次に記載される。 Some examples of the use of push specific headers as a filtering approach will now be described.
第1の例は、クライアントが、それらのタイプに応じてプッシュされるべきサブリソースの優先順位付きリストをサーバに対して示したいときのウェブページのローディング、例えばjssおよびcssならびにその後にhtmlおよびimgをロードするためのローディング、に関連する。その、メインリソースと呼ばれるウェブリソースは、リクエストのrequest−URIにおいて定義されている要求されたものである。特定プッシュヘッダは、次のように定義され得る:
Push−Request: application/javascript;q=1、text/css;q=0.8、text/html;q=0.7、image/png;q=0.6、image/*;q=0.4
The first example is the loading of web pages when the client wants to show the server a prioritized list of subresources to be pushed according to their type, eg jss and css and then html and img For loading, related to. The web resource, called the main resource, is the requested one defined in the request-URI of the request. A specific push header can be defined as follows:
Push-Request: application / javascript; q = 1, text / css; q = 0.8, text / html; q = 0.7, image / png; q = 0.6, image / * ; q = 0. 4
これは、クライアントがそれらのタイプ(例えばそれらのMIMEタイプ、コンテンツタイプ、フォーマットタイプまたはコーデックタイプ)に応じてプッシュされるべきリソース(例えば、メインリソースで宣言されているサブリソース)のセットを望んでいるというサーバに対する指示である。 This wants a set of resources (eg sub-resources declared in the main resource) that the client should be pushed according to their type (eg their MIME type, content type, format type or codec type) This is an instruction to the server.
ここで、クライアントによる好みの相対的程度を示すAcceptヘッダの‘q’パラメータと類似する仕方で‘q’パラメータを使用して各リソースタイプに優先レベルが提供される。q=0は幾つかのリソースタイプをサーバによるプッシュから除外することを可能にするということに留意されたい。 Here, a priority level is provided for each resource type using the 'q' parameter in a manner similar to the 'q' parameter in the Accept header indicating the relative degree of preference by the client. Note that q = 0 allows some resource types to be excluded from being pushed by the server.
この例では、優先順位‘q’は、サブリソースがサーバによりプッシュされなければならないクライアントの好む順序またはバージョン(例えば、好まれる解像度に応じた)を定義することを可能にする。結果として、サーバは、プッシュされるデータの順序リストを提供するためにサブリソースをフィルタリングしなければならない。 In this example, the priority 'q' allows to define the preferred order or version (eg, depending on the preferred resolution) of the clients that the sub-resource should be pushed by the server. As a result, the server must filter sub-resources to provide an ordered list of pushed data.
第2の例は、ウェブページのためのイメージのローディングに関し、このときそのウェブページはリクエストのrequest−URIにおいて定義されている要求されたデータではない。そのような状況では、特定プッシュヘッダのサポート部分は、HTTP“Referer”ヘッダを明示的に示す。これは、クライアントが望んでいる追加リソースがRefererヘッダの値で示されるメインリソースのサブリソースであるという、サーバに対する指示である。任意に、下記のヘッダは、.pngイメージフォーマットのイメージに対する優先順位を用いて、“Referer”HTTPヘッダにおいて示されているウェブページの全てのイメージのローディングを行わせる:
Push−Request:Referer;image/png;q=0.6,image/*;q=0.4
Referer:the_url_to−web−page
The second example relates to loading an image for a web page, where the web page is not the requested data as defined in the request-URI of the request. In such a situation, the support part of the specific push header explicitly indicates the HTTP “Referer” header. This is an instruction to the server that the additional resource desired by the client is a sub-resource of the main resource indicated by the value of the Referer header. Optionally, the header below is. Use the priority for images in the png image format to cause all images on the web page shown in the “Referer” HTTP header to be loaded:
Push-Request: Referer; image / png; q = 0.6, image / * ; q = 0.4
Referer: the_url_to-web-page
第3の例はDASHストリーミング、特にMPDローディングおよび急速スタートに関連する。プッシュヘッダは次の通りであり得、MPDはリクエストのrequest−URIにおいて定義されている要求されたデータである:
Push−Request:video/mp4;q=1、video/webm;q=0.4
A third example relates to DASH streaming, particularly MPD loading and rapid start. The push header can be: MPD is the requested data as defined in the request-URI of the request:
Push-Request: video / mp4; q = 1, video / webm; q = 0.4
これは、“video/webm”MIMEタイプを有するセグメントではなくて“video/mp4”MIMEタイプを有するメディアセグメントからスタートするというクライアントからの好みを示す。同等の例は:
Push−Request:URI;video.{1};{video/*.mp4;q=1,video/webm;q=0.4}
を書くことであり得る。
This indicates the client's preference to start with a media segment having a “video / mp4” MIME type rather than a segment having a “video / webm” MIME type. An equivalent example is:
Push-Request: URI; video. {1}; {video / * . mp4; q = 1, video / webm; q = 0.4}
Can be written.
上の例においては、メインリソース、すなわちMPD、のためのURIに基づいて、サーバは、クライアントにプッシュするmp4フォーマットの全てのビデオセグメントを推論することができる。このワイルドカード代入値に関しては、例えば所与のマニフェストのための静的設定情報に基づいてあるいはMPD分析から、プッシュするセグメントのリストを決定することはサーバの義務である。 In the above example, based on the URI for the main resource, ie MPD, the server can infer all video segments in mp4 format to push to the client. For this wildcard substitution value, it is the server's duty to determine the list of segments to push, for example based on static configuration information for a given manifest or from MPD analysis.
より一般的に、これは、例えばjavascriptコードのピースまたはCSSサブリソースをダウンロードするクライアントが、自身が同じリクエストのためにそれぞれそのjavascriptコードおよびCSSサブリソースにおいて参照されているサブリソースをも入手したいということをウェブページにおいて宣言するとともにサーバに対して示すときに有益であり得る。 More generally, this means that, for example, a client that downloads a piece of javascript code or a CSS subresource wants to also get the subresource that is referenced in the javascript code and CSS subresource respectively for the same request. This can be useful when declaring this in a web page and showing it to the server.
第4の例は、ビデオストリーミング、より具体的にはバイトレンジ単位でシークすることに関連する。もしHTTPリクエストにおいてSegmentBase URLおよびバイトレンジを用いてメディアコンテンツのサブパートが要求されるならば、その同じリクエスト内の次のプッシュヘッダは、バイトレンジ[1400−4000]のプッシュ、およびその後により低い優先順位でバイトレンジ[4000−6000]のプッシュを行わせることを可能にする:
Push−Request:Range;{1};[1400−4000];q=1:[4000−6000];q=0.8
The fourth example relates to video streaming, more specifically seeking in byte range units. If a media content subpart is requested using a SegmentBase URL and byte range in an HTTP request, the next push header in that same request will be pushed in byte range [1400-4000] and then lower priority Allows to push the byte range [4000-6000]:
Push-Request: Range; {1}; [1400-4000]; q = 1: [4000-6000]; q = 0.8
第5の例は、DASHアプリケーションに関して、プッシュされるべきリソースのセットをメインリソース、すなわちマニフェスト、に関連するものとして記述する。これは、値“Referer”を有する特定プッシュヘッダのサポート部分を通して示される。パターン部分はビデオリソースのセットを示し、ワイルドカード代入値はビデオセグメントのタイプ、ここではmp4、に基づくフィルタリングルールを示す:
Push−Request:Referer;video.{1};video/*.mp4
Referer:the_url_to−MPD
The fifth example describes a set of resources to be pushed as related to the main resource, ie the manifest, for the DASH application. This is indicated through the support part of the specific push header with the value “Referer”. The pattern portion indicates a set of video resources, and the wildcard substitution value indicates a filtering rule based on the type of video segment, here mp4:
Push-Request: Referer; video. {1}; video / * . mp4
Referer: the_url_to-MPD
これは、クライアントが特定プッシュヘッダにおいてワイルドカード値を使用することを可能にする。 This allows the client to use wildcard values in specific push headers.
Refererヘッダは、任意のものであるけれども、インテリジェントなサーバ(MPDアウェア)の場合には、それの値は、サーバがクライアントにより示されたセグメント(より一般的には(サブ−)リソース)のセットをフィルタリングするのを助けることができる。 Although the Referer header is optional, in the case of an intelligent server (MPD aware), its value is the set of segments (more generally (sub-) resources) the server has pointed to by the client. Can help to filter.
図9は、複数の実施形態によるデバイスの略図である。このデバイスはサーバ、クライアントまたはプロキシであり得る。このデバイスは、複数の実施形態による方法を実行するために構成された制御ユニット901のための作業メモリとして使用され得るRAMメモリ902を含む。例えば、制御ユニットは、ROMメモリ903からロードされたコンピュータプログラムの命令を実行するように構成され得る。プログラムは、ハードドライブ906からもロードされ得る。
FIG. 9 is a schematic diagram of a device according to embodiments. This device may be a server, client or proxy. The device includes a
デバイスは、単一のネットワークインターフェースであり得るネットワークインターフェース904も含み、あるいはネットワークインターフェースのセット(例えば、数個の無線インターフェース、または数タイプの有線もしくは無線インターフェース)を含む。デバイスは、ユーザに対して情報を表示するとともにユーザから入力を受け取るためのユーザインターフェース905を含むことができる。
The device also includes a
デバイスは、外部デバイスからデータを受け取りおよび/または外部デバイスにデータを送るための入力/出力モジュール907をも含むことができる。
The device may also include an input /
本発明は図面に詳しく図示されるとともに叙上において詳しく記載されているが、そのような図示および記載は例示的もしくは代表的なものであって制限的なものではないと見なされるべきであり、本発明は、開示された実施形態に限定されない。開示された実施形態に対する他の改変は、請求項に記載された発明を実施するにあたって図面、明細書および添付されている請求項の検討から、当業者に理解され実施され得る。 While the invention has been illustrated in detail in the drawings and described in detail above, such illustration and description are to be considered illustrative or exemplary and not restrictive; The invention is not limited to the disclosed embodiments. Other modifications to the disclosed embodiments can be understood and implemented by those skilled in the art from consideration of the drawings, specification, and appended claims in practicing the claimed invention.
そのような改変は、特に、発明の概要および/または添付されている請求項において明らかにされている実施形態を組み合わせることから派生し得る。 Such modifications may be derived, inter alia, from the combination of embodiments set forth in the summary of the invention and / or the appended claims.
請求項において、“含む”という語は他のエレメントやステップを除外せず、不定冠詞“a”もしくは“an”は複数を除外しない。単一のプロセッサまたは他のユニットは、請求項に記載されている数個のアイテムの機能を遂行することができる。互いに異なる従属請求項において様々な特徴が述べられているという単なる事実は、これらの特徴の組み合わせが有利に使用され得ないということを示すものではない。請求項における参照符号は、本発明の範囲を限定するものと見なされるべきではない。 In the claims, the word “comprising” does not exclude other elements or steps, and the indefinite article “a” or “an” does not exclude a plurality. A single processor or other unit may fulfill the functions of several items recited in the claims. The mere fact that various features are recited in mutually different dependent claims does not indicate that a combination of these features cannot be used to advantage. Any reference signs in the claims should not be construed as limiting the scope of the invention.
Claims (29)
第1データを得るHTTPリクエストを前記クライアントデバイスから受け取るステップであって、前記HTTPリクエストは前記サーバデバイス上の前記第1データの特定を可能にする第1データ特定情報を含むとともに、第2データをプッシュすることに関連する指示を含む1つまたは複数の追加のヘッダフィールドを含む、前記受け取るステップ;
前記第1データを取り出して前記クライアントデバイスに送るステップ;
第2データをプッシュすることに関連する前記指示を表す確認応答データを前記クライアントデバイスに送るステップ;および
前記1つまたは複数のヘッダフィールドだけ、および場合によってはさらに前記第1データ特定情報、を用いて、前記サーバデバイス上の前記第2データの特定を可能にする第2データ特定情報を決定するステップ;
を含む、方法。 A method for transmitting data between a server device and a client device, the method comprising:
Receiving an HTTP request for obtaining first data from the client device, wherein the HTTP request includes first data specifying information that enables the first data on the server device to be specified; Said receiving step including one or more additional header fields containing instructions related to pushing;
Retrieving the first data and sending it to the client device;
Sending acknowledgment data representative of the indication associated with pushing second data to the client device; and using only the one or more header fields and possibly further the first data identification information. Determining second data identification information that enables identification of the second data on the server device;
Including a method.
をさらに含む、請求項1に記載の方法。 Sending a push commitment message to the client device that announces the push of the second data and / or pushing the second data to the client device;
The method of claim 1, further comprising:
前記任意ヘッダフィールドは、前記第2データ特定情報を定義するために前記第1データ特定情報内の前記サブパーツ情報に取って代わる代入サブパーツ情報を含む、
請求項11に記載の方法。 The first data specifying information includes a first uniform resource identifier, URI that specifies a main resource on the server device, and subpart information that defines a subpart of the main resource as the first data. And the optional header field includes substitution subpart information that replaces the subpart information in the first data identification information to define the second data identification information;
The method of claim 11.
前記サーバデバイスから得られるべきデータを特定するステップ;
前記特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、前記HTTPリクエストは、前記サーバデバイス上の前記第1データの特定を可能にする第1データ特定情報を含むとともに前記サーバデバイスが第2データをプッシュするべきか第2データをプッシュするべきでないかに関する指示を含む1つまたは複数の追加のヘッダフィールドを含む、前記生成するステップ;
前記第1データを得るとともに前記サーバデバイスに第2データをプッシュさせまたはプッシュさせないために前記HTTPリクエストを前記サーバデバイスに送るステップ;および
前記HTTPリクエストを送ることに応答して確認応答データを前記サーバデバイスから受け取るステップであって、前記確認応答データは第2データをプッシュすることに関連する前記指示を表す、前記受け取るステップ;を含み、
前記1つまたは複数の追加のヘッダフィールドは、前記1つまたは複数の追加のヘッダフィールドだけに、および場合によってはさらに前記第1データ特定情報に、基づいて、前記サーバデバイス上の前記特定されたデータから第2データの特定を可能にする第2データ特定情報を定義する、
方法。 A method for transmitting data between a server device and a client device, said method at a client device:
Identifying data to be obtained from the server device;
Generating an HTTP request to obtain first data from the identified data, wherein the HTTP request includes first data identifying information enabling identification of the first data on the server device, and Said generating step including one or more additional header fields including an indication as to whether the server device should or should not push the second data;
Sending the HTTP request to the server device to obtain the first data and prevent the server device from pushing or pushing second data; and in response to sending the HTTP request, acknowledgment data is sent to the server Receiving from the device, wherein the acknowledgment data represents the instruction associated with pushing second data, the receiving step;
The one or more additional header fields are identified on the server device based solely on the one or more additional header fields, and possibly further based on the first data identification information. Defining second data identification information that allows identification of the second data from the data;
Method.
第1データを得るHTTPリクエストを送るステップであって、前記HTTPリクエストは、前記サーバデバイス上の前記第1データの特定を可能にする第1データ特定情報を含むとともに1つまたは複数の追加のヘッダフィールドを含む、前記送るステップ;
もし前記第1データと異なる第2データを前記サーバデバイスがプッシュすることを前記クライアントが希望しなければ、前記HTTPリクエストに応答して第2データが前記サーバによりプッシュされることを前記クライアントが希望しないことを示す情報アイテムを前記1つまたは複数の追加ヘッダフィールドのうちの少なくとも1つに挿入するステップ;および
前記HTTPリクエストを前記サーバデバイスに送るステップ;
を含む、方法。 A method of receiving data from a server device by a client device, the method at the client device:
Sending an HTTP request to obtain first data, the HTTP request including first data identification information enabling identification of the first data on the server device and one or more additional headers Said sending step including a field;
If the client does not want the server device to push second data different from the first data, the client wants the second data to be pushed by the server in response to the HTTP request. Inserting an information item indicating no to into at least one of the one or more additional header fields; and sending the HTTP request to the server device;
Including a method.
第1データを得るHTTPリクエストを前記クライアントデバイスから受け取るステップであって、前記HTTPリクエストは前記サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、1つまたは複数の追加のヘッダフィールドを含む、前記受け取るステップ;
前記第1データを取り出して前記クライアントデバイスに送るステップ;および
前記サーバは前記HTTPリクエストに応じて前記第1データと異なる第2データを前記クライアントにプッシュしないということを示す情報アイテムを送るステップ;
を含む、方法。 A method of sending data from a server device to a client device, the method at the server device:
Receiving an HTTP request for obtaining first data from the client device, wherein the HTTP request includes first data identification information that enables identification of the first data on the server device and includes one or more Said receiving step including an additional header field;
Retrieving the first data and sending it to the client device; and sending an information item indicating that the server does not push second data different from the first data to the client in response to the HTTP request;
Including a method.
前記サーバは、前記HTTPリクエストに応答して、前記第1データと異なる第2データを前記クライアントに送らないということを示す情報アイテムを前記クライアントに送るステップ;
をさらに含む、請求項19に記載の方法。 Retrieving the first data and sending it to the client device; and in response to the HTTP request, the server sends an information item indicating that no second data different from the first data is sent to the client. Sending to the client;
20. The method of claim 19, further comprising:
第1データを得るHTTPリクエストを前記クライアントデバイスから受け取るステップであって、前記HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、前記受け取るステップ;
前記第1データを取り出して前記クライアントデバイスに送るステップ;ならびに
もし前記第1任意ヘッダフィールドが前記HTTPリクエスト内に存在するならば:
前記HTTPリクエストから得られたメインリソースを用いてデータのセットを特定するステップ;
第2データのリストを得るために前記1つまたは複数のフィルタリングパラメータを用いて、前記特定されたセットの各データをフィルタリングするステップ;および
前記第2データを前記クライアントデバイスにプッシュするステップ;
を含み、前記1つまたは複数のフィルタリングパラメータは:
− リソースタイプを定義し;前記1つまたは複数のリソースタイプはアプリケーションタイプ、テキストタイプ、イメージタイプ、ビデオタイプ、オーディオタイプからの1つまたは複数のタイプを含み;または
− DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定し;または
− 前記メインリソースのサブパーツを特定する時間レンジを用いて前記第1任意ヘッダフィールドにおいて定義される;
方法。 A method for transmitting data between a server device and a client device, said method comprising:
Receiving an HTTP request to obtain first data from the client device, wherein the HTTP request includes a first optional header field including one or more filtering parameters;
Retrieving the first data and sending it to the client device; and if the first optional header field is present in the HTTP request:
Identifying a set of data using a main resource obtained from the HTTP request;
Filtering each of the identified sets of data using the one or more filtering parameters to obtain a list of second data; and pushing the second data to the client device;
And the one or more filtering parameters include:
Defining a resource type; the one or more resource types include one or more of an application type, a text type, an image type, a video type, an audio type; or an element in a DASH media presentation description Identifying one or more groups of data using identifiers of: or-defined in the first optional header field using a time range identifying subparts of the main resource;
Method.
第1データを得るHTTPリクエストを生成するステップであって、前記HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、前記生成するステップ;
前記第1データを得るとともに前記サーバデバイスに、前記HTTPリクエストから推定されるメインリソースにおいて参照される第2データを、前記フィルタリングパラメータに従って、プッシュさせるために前記HTTPリクエストを前記サーバデバイスに送るステップ;
を含み、
前記1つまたは複数のフィルタリングパラメータは:
− リソースタイプを定義し;前記1つまたは複数のリソースタイプは、アプリケーションタイプ、テキストタイプ、イメージタイプ、ビデオタイプ、オーディオタイプからの1つまたは複数のタイプを含み;または
− DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定し;または
− 前記メインリソースのサブパーツを特定する時間レンジを用いて前記第1任意ヘッダフィールドにおいて定義される;
方法。 A method for transmitting data between a server device and a client device, said method comprising:
Generating an HTTP request for obtaining first data, wherein the HTTP request includes a first optional header field including one or more filtering parameters;
Obtaining the first data and sending the HTTP request to the server device to cause the server device to push the second data referenced in the main resource estimated from the HTTP request according to the filtering parameters;
Including
The one or more filtering parameters are:
Defining a resource type; the one or more resource types include one or more types from application type, text type, image type, video type, audio type; or-in a DASH media presentation description Identifying one or more groups of data using an identifier of the element; or-defined in the first optional header field using a time range identifying a sub-part of the main resource;
Method.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1501437.6 | 2015-01-28 | ||
GB1501437.6A GB2534849A (en) | 2015-01-28 | 2015-01-28 | Client-driven push of resources by a server device |
GB1509094.7A GB2534617A (en) | 2015-01-28 | 2015-05-27 | Improved client-driven push of resources by a server device |
GB1509094.7 | 2015-05-27 | ||
PCT/EP2016/050713 WO2016120089A1 (en) | 2015-01-28 | 2016-01-15 | Improved client-driven push of resources by a server device |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018509679A true JP2018509679A (en) | 2018-04-05 |
JP2018509679A5 JP2018509679A5 (en) | 2019-02-21 |
JP6686029B2 JP6686029B2 (en) | 2020-04-22 |
Family
ID=52674078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017537233A Active JP6686029B2 (en) | 2015-01-28 | 2016-01-15 | Improved client-driven push of resources by server devices |
Country Status (7)
Country | Link |
---|---|
US (2) | US10348846B2 (en) |
EP (1) | EP3251322B1 (en) |
JP (1) | JP6686029B2 (en) |
KR (1) | KR102007105B1 (en) |
CN (1) | CN107211022B (en) |
GB (3) | GB2534849A (en) |
WO (1) | WO2016120089A1 (en) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2953313A1 (en) * | 2014-06-05 | 2015-12-09 | Thomson Licensing | Method for operating a cache arranged along a transmission path between client terminals and at least one server, and corresponding cache |
US11917002B2 (en) | 2014-10-14 | 2024-02-27 | Comcast Cable Communications, Llc | Manipulation and recording of content transmissions |
US11943289B2 (en) | 2014-10-14 | 2024-03-26 | Comcast Cable Communications, Llc | Manipulation of content transmissions |
US10880357B2 (en) * | 2014-12-23 | 2020-12-29 | Adobe Inc. | Reducing requests for media segments in streaming of multimedia content |
GB2534849A (en) * | 2015-01-28 | 2016-08-10 | Canon Kk | Client-driven push of resources by a server device |
GB2540632B (en) * | 2015-07-24 | 2018-05-16 | Canon Kk | Methods, devices and computer programs for pushing data in a network environment comprising cache servers |
US10152080B2 (en) * | 2015-09-23 | 2018-12-11 | Adobe Systems Incorporated | Power efficient multimedia content streaming based on media segment duration |
US10158682B2 (en) | 2015-09-23 | 2018-12-18 | Adobe Systems Incorporated | Power efficient multimedia content streaming based on a server push |
CN106604077B (en) * | 2015-10-14 | 2020-09-29 | 中兴通讯股份有限公司 | Self-adaptive streaming media transmission method and device |
US20180109577A1 (en) * | 2016-10-13 | 2018-04-19 | Sharp Laboratories Of America, Inc. | Systems and methods for enabling communications associated with digital media distribution |
CN107959667B (en) * | 2016-10-18 | 2020-10-09 | 华为技术有限公司 | Media fragment pushing method, server and client |
US20180176325A1 (en) * | 2016-12-15 | 2018-06-21 | Huawei Technologies Co., Ltd. | Data pre-fetching in mobile networks |
CN108512876B (en) * | 2017-02-27 | 2020-11-10 | 腾讯科技(深圳)有限公司 | Data pushing method and device |
US11659057B2 (en) | 2017-04-19 | 2023-05-23 | Comcast Cable Communications, Llc | Methods and systems for content delivery using server push |
KR102307447B1 (en) * | 2017-05-02 | 2021-09-30 | 삼성전자주식회사 | Server, method, and client terminal for http adaptive streaming based on network environment mornitoring |
US11477305B2 (en) * | 2017-05-03 | 2022-10-18 | Comcast Cable Communications, Llc | Local cache bandwidth matching |
US20190020734A1 (en) * | 2017-07-14 | 2019-01-17 | Comcast Cable Communications, Llc | Reduced content manifest size |
US11622020B2 (en) * | 2017-08-31 | 2023-04-04 | Micro Focus Llc | Push control |
JP6950408B2 (en) * | 2017-09-28 | 2021-10-13 | 京セラドキュメントソリューションズ株式会社 | Information processing system, image forming device, and information processing method |
US10461884B2 (en) | 2017-10-05 | 2019-10-29 | Comcast Cable Communications, Llc | Server selected variable bitrate streaming |
GB2567665B (en) * | 2017-10-19 | 2022-06-22 | Arm Ip Ltd | Asset update service |
US20190141075A1 (en) * | 2017-11-09 | 2019-05-09 | Monarx, Inc. | Method and system for a protection mechanism to improve server security |
CN109981695B (en) * | 2017-12-27 | 2021-03-26 | Oppo广东移动通信有限公司 | Content pushing method, device and equipment |
CN109063142B (en) * | 2018-08-06 | 2021-03-05 | 网宿科技股份有限公司 | Webpage resource pushing method, server and storage medium |
US11716264B2 (en) * | 2018-08-13 | 2023-08-01 | Cisco Technology, Inc. | In situ triggered function as a service within a service mesh |
US11290757B2 (en) | 2018-09-28 | 2022-03-29 | Comcast Cable Communications, Llc | Per-segment parameters for content |
CN109151492B (en) * | 2018-09-29 | 2021-02-02 | 网宿科技股份有限公司 | Quick start method and device for live video |
CN109359215B (en) * | 2018-12-03 | 2023-08-22 | 江苏曲速教育科技有限公司 | Video intelligent pushing method and system |
US11159635B2 (en) * | 2019-05-07 | 2021-10-26 | Hulu, LLC | Soft server push in video streaming |
US11212368B2 (en) * | 2019-05-17 | 2021-12-28 | Netflix, Inc. | Fire-and-forget offload mechanism for network-based services |
CN110730206A (en) * | 2019-09-06 | 2020-01-24 | 浪潮金融信息技术有限公司 | Data service scheme applied to data display of new retail platform |
US11425187B2 (en) * | 2019-09-30 | 2022-08-23 | Tencent America Llc. | Session-based information for dynamic adaptive streaming over HTTP |
CN111427850A (en) * | 2019-11-06 | 2020-07-17 | 杭州海康威视数字技术股份有限公司 | Method, device and system for displaying alarm file |
CN111586100B (en) * | 2020-04-01 | 2022-04-22 | 富途网络科技(深圳)有限公司 | Target object message sending device and method |
CN111988235B (en) * | 2020-08-13 | 2023-05-09 | 暨南大学 | Parallel transmission method based on multiple HTTP/3 connections |
US20220078261A1 (en) * | 2020-09-10 | 2022-03-10 | Microsoft Technology Licensing, Llc | Controlling client/server interaction based upon indications of future client requests |
CN112600823A (en) * | 2020-12-09 | 2021-04-02 | 上海牙木通讯技术有限公司 | Handle identifier analysis caching method, query method and handle identifier analysis system |
US11451602B2 (en) * | 2021-01-06 | 2022-09-20 | Tencent America LLC | Methods and apparatuses for dynamic adaptive streaming over HTTP |
US11816177B2 (en) * | 2021-07-21 | 2023-11-14 | Yext, Inc. | Streaming static web page generation |
CN114553947B (en) * | 2022-01-29 | 2024-01-19 | 北京金堤科技有限公司 | Method and device for processing message |
US12034789B2 (en) * | 2022-04-19 | 2024-07-09 | Tencent America LLC | Extensible request signaling for adaptive streaming parameterization |
CN115022280B (en) * | 2022-06-16 | 2023-07-14 | 杭州楷知科技有限公司 | NAT detection method, client and system |
CN114827633B (en) * | 2022-06-17 | 2022-09-13 | 浙江华创视讯科技有限公司 | Media stream disaster tolerance method, device and related equipment |
KR102663914B1 (en) * | 2022-07-13 | 2024-05-13 | 주식회사 시큐다임 | Electronic apparatus and method for analyzing http traffic thereby |
US11824745B1 (en) * | 2022-12-15 | 2023-11-21 | Amazon Technologies, Inc. | Reverse engineering computer network system functionality |
US20240214449A1 (en) * | 2022-12-23 | 2024-06-27 | Akamai Technologies, Inc. | Ensuring Coherency Across Responses When Handling A Series Of Client Requests |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130246583A1 (en) * | 2012-03-14 | 2013-09-19 | Canon Kabushiki Kaisha | Method, system and server device for transmitting a digital resource in a client-server communication system |
KR20140055340A (en) * | 2012-10-31 | 2014-05-09 | 삼성전자주식회사 | Method and apparatus for transmitting and receiving media segment using adaptive streaming |
WO2015004276A2 (en) * | 2013-07-12 | 2015-01-15 | Canon Kabushiki Kaisha | Adaptive data streaming method with push messages control |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1461741A4 (en) * | 2001-12-06 | 2006-03-29 | Access Co Ltd | System and method for providing subscription content services to mobile devices |
CN1881242A (en) * | 2005-06-14 | 2006-12-20 | 张晓东 | Trans-enterprise supply chain system WEB application platform for automobile industry |
US7873710B2 (en) * | 2007-02-06 | 2011-01-18 | 5O9, Inc. | Contextual data communication platform |
CN101350820A (en) * | 2008-08-29 | 2009-01-21 | 中兴通讯股份有限公司 | Safety authentication method for service-feeding proxy gateway to service-feeding initiator |
CN101370033B (en) * | 2008-09-26 | 2011-09-14 | 成都市华为赛门铁克科技有限公司 | Method and equipment for propelling message |
CN102232298B (en) * | 2011-04-07 | 2013-10-09 | 华为技术有限公司 | Method, device and system for transmitting and processing media content |
CN103036960A (en) * | 2012-12-07 | 2013-04-10 | 中国联合网络通信集团有限公司 | Information push method and information push device and information push system |
GB2516112B (en) | 2013-07-12 | 2016-10-26 | Canon Kk | Methods for providing media data, method for receiving media data and corresponding devices |
WO2015121342A1 (en) * | 2014-02-13 | 2015-08-20 | Koninklijke Kpn N.V. | Requesting multiple chunks from a network node on the basis of a single request message |
GB2534849A (en) * | 2015-01-28 | 2016-08-10 | Canon Kk | Client-driven push of resources by a server device |
-
2015
- 2015-01-28 GB GB1501437.6A patent/GB2534849A/en not_active Withdrawn
- 2015-05-27 GB GB1509094.7A patent/GB2534617A/en not_active Withdrawn
-
2016
- 2016-01-15 US US15/543,534 patent/US10348846B2/en active Active
- 2016-01-15 KR KR1020177023038A patent/KR102007105B1/en active IP Right Grant
- 2016-01-15 CN CN201680007911.4A patent/CN107211022B/en active Active
- 2016-01-15 JP JP2017537233A patent/JP6686029B2/en active Active
- 2016-01-15 EP EP16700629.5A patent/EP3251322B1/en active Active
- 2016-01-15 WO PCT/EP2016/050713 patent/WO2016120089A1/en active Application Filing
- 2016-02-09 GB GB1602333.5A patent/GB2538832B/en active Active
- 2016-09-28 US US15/279,231 patent/US20170230442A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130246583A1 (en) * | 2012-03-14 | 2013-09-19 | Canon Kabushiki Kaisha | Method, system and server device for transmitting a digital resource in a client-server communication system |
KR20140055340A (en) * | 2012-10-31 | 2014-05-09 | 삼성전자주식회사 | Method and apparatus for transmitting and receiving media segment using adaptive streaming |
WO2015004276A2 (en) * | 2013-07-12 | 2015-01-15 | Canon Kabushiki Kaisha | Adaptive data streaming method with push messages control |
Also Published As
Publication number | Publication date |
---|---|
EP3251322B1 (en) | 2021-11-24 |
US20170230442A1 (en) | 2017-08-10 |
KR20170106426A (en) | 2017-09-20 |
GB2534617A (en) | 2016-08-03 |
CN107211022B (en) | 2020-10-27 |
US10348846B2 (en) | 2019-07-09 |
GB201501437D0 (en) | 2015-03-11 |
GB2538832A (en) | 2016-11-30 |
GB201602333D0 (en) | 2016-03-23 |
US20180013845A1 (en) | 2018-01-11 |
JP6686029B2 (en) | 2020-04-22 |
GB201509094D0 (en) | 2015-07-08 |
EP3251322A1 (en) | 2017-12-06 |
GB2534849A (en) | 2016-08-10 |
KR102007105B1 (en) | 2019-08-02 |
WO2016120089A1 (en) | 2016-08-04 |
GB2538832B (en) | 2019-10-09 |
CN107211022A (en) | 2017-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6686029B2 (en) | Improved client-driven push of resources by server devices | |
US11375031B2 (en) | Adaptive data streaming method with push messages control | |
JP5658820B2 (en) | Media presentation description delta file for HTTP streaming | |
JP2016531466A5 (en) | ||
WO2012083296A2 (en) | Proxy server with byte-based include interpreter | |
GB2534057A (en) | Methods for providing media data, method for receiving media data and corresponding devices | |
GB2517060A (en) | Adaptive data streaming method with push messages control | |
GB2575189A (en) | Adaptive client-driven push of resources by a server device | |
GB2543279A (en) | Methods, devices and computer programs for optimizing use of bandwidth when pushing data in a network environment comprising cache servers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190108 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190108 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191112 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200110 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200303 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200401 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6686029 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |