CA2914603A1 - Defragmentation of adaptive streaming segment files in a content delivery network - Google Patents
Defragmentation of adaptive streaming segment files in a content delivery network Download PDFInfo
- Publication number
- CA2914603A1 CA2914603A1 CA2914603A CA2914603A CA2914603A1 CA 2914603 A1 CA2914603 A1 CA 2914603A1 CA 2914603 A CA2914603 A CA 2914603A CA 2914603 A CA2914603 A CA 2914603A CA 2914603 A1 CA2914603 A1 CA 2914603A1
- Authority
- CA
- Canada
- Prior art keywords
- node
- segment files
- segment
- absent
- memory
- 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.)
- Abandoned
Links
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/2866—Architectures; Arrangements
- H04L67/2885—Hierarchically arranged intermediate devices, e.g. for hierarchical caching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1724—Details of de-fragmentation performed by the file system
-
- 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
- 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
- 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
- H04L67/5681—Pre-fetching or pre-delivering data based on network characteristics
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
An edge node (33), a parent node (32), and a method in a Content Delivery Network (CDN) (30) configured to utilize adaptive streaming to deliver a piece of electronic content to requesting clients. The content includes a plurality of segment files referenced by an associated manifest document (12), and the nodes are configured to defragment an incomplete piece of content and ensure that a copy stored in each node contain, ail segment files referenced by the manifest document Bach node analyzes the manifest document and the segment files stored in its cache memory (89) to determine whether any segment files referenced by the manifest document are absent from the memory, if so, the node pulls the absent segment files from another node (94) in the CDN to complete the piece of content. The defragmentation may be performed during a period of minimum, network usage to minimize network impact and within a popularity time window to ensure timely storage of the defragmented content in each node.
Description
¨1¨
IN A CONTENT DELIVERY NETWORK
CROSS-REFERENCE TO RELATED .APPLICAT1ONS
This application claims the priority benefit MICICI" 35 U.S.C. I 1.9(e) of U.S.
tkovisionai Application N. 61/831,908fiied on June 6, 2013, the disclosure of Whiell is incorporated. herein by reference in its entirety.
TECHNICAL FLEW
lo The present :disclosure relates to communication systems. .More particularly, and not by way of limitation, -particular embodiments of the present disclosure are directed to a. nodes and methods in a Content Distribution Network (CDN) for distributing electronic content to servers throughout the CDN.
BACKGROUND
Content Distribution Networks (CDNO generally operate by distributing complete, files across the nocles (servers) that :comprise the distribution network. A
central server known as a irector handles requests lbr flies and responds by returning a different Uniform -Resource. Identifier (URI) for a given file (redirectiotty In other cases, a Domain NalTle System (DNS) server may respond with a .ditferent IP
Address for a given host name for the URI of the file. Centralized management software may determine the best way. to distribute the files out to the edge of the CDN
based on.
external .data such .as popularity, network. congestion, or other -factors.
.Adaptive streaming, sometimes called adaptive bit:rate sttvaming, is a technique based, in most applications, on the Hypertext Transfer Protocol ITIP) used for streaming multimedia over large distributed HTIP networks. The media source detects a users bandwidth and CPU capacity in real time and tidings the quality of a video stream accordingly using a. multi-rate encoder capable of encoding a single source video at .multiple bitrates. This generally results in very little: hafering, fast start times, and .a good (IXperience for both high-end and low-end connections.
More specifically,. the source content is encoded at mad* bitrates, and each of the different bitrate streams is segmented into small segment files c(mtaining several ¨2¨
seconds' worth. Of C011tf.lit. The segment-file size can valy depending on the pitrtieular implementation, but the segment files are typically in the range of .two to ten seconds in 'length. A manifest file provides the streaming client with infOrmation about the available streams, their differing bitrates, and segments of the streams. When starting, the client requests the segment .files 1CM-11 the lowest -bitrate stream. Jf the client finds the download speed is greater than the bitrate of the downloaded segment file, then the client wiJì :request the segment files from the ttet higher bitrate. Later, if the client .finds the download speed for a segment file is lower than the bitrate for the segment file. and therefore the network throughput has deteriorated, the client requests a lower bitrate segment file.
SUMMARY
Due to the architecture and mechanism for adaptive strearnine, when clients access adaptive streaming content via a OW, there is a. high probability that servers at the edge become fragmented, i.e.., they will hold incomplete copies of the content Nodes at the edge of the CDN (edge servers) may serve one or many individual segment files to a client. When the client requests content from. a second edge server, both the .first edge server and the second edge server may hold an incomplete collection of the segment files referenced by the associated .mtmifest. This results in fragmentation of the media, resultin;.q, in inefficiencies and additional network Toad when the client. attempts to pull an entire collection of segment files from a single edge server.
-When edge servers do not hold a. copy of a requested segment file, they .must pull the requested segment file from a. parent node st.¶:11 as a regional server. While this generally- causes the parent node to hold a complete copy of the requested segment files, there is no guarantee that a complete .manifest segment collection will reside on the parent node for all advertised bitrates. Fragmentation occurs when clients request some, but not all., a the segment files for an. adaptive streaming manifest from the same edge server resulting in an incomplete copy of the entire manliest segmeth collection, Clients changing bitrates within an adaptive streaming architecture can eompound this fragmentition on an edge server even :further.
As a solution, panicular embodiments of the -present disclosure provide a "defragmentation" system and method within a C.DN where adaptive Stt viaming content is utilized. The system and method ensures that edge servers hold a complete copy of the entire manifest segment collection.. Further, this "defragmentation"
method may. be controlled to occur at titres of low network utilization, and the method may take into account the anticipated need for the content so as to avoid unnecessarily pre-staging segment files when they are unlikely to be requested.
In one embodiment, the present disclosure is directed to a method in which an edge node in a CDN. determines whether there are any segment .files referenced by a manifest doeurnent that are absent from the edge node's local cache and if so,. the edge node pulls the absent segment files from another node in the Cì such as its parent node or another edge node. Prior to pulling the absent segment files frOM the other node, the edge node .may determine that the current time is within a period of minimum usage of network resources. The edge node may also determine that n manifest popularity time is within a window threshold so that segment. files are staged in a.
timely manner fOr when clients are likely to request .thetn. When all segment files are cached in the edge node, the edge node reports completion of its &fragmentation to its parent node.
If a segment file requested by nil edge node from its parent node is also absent from the parent node's local cache, the parent: node pulls the absent segment file from a.
higher level node in the (MN, stores the absent .segment file in the parent node's local cache, and passes the file to the requesting edge node. In this way, the parent :node caches or stores segment files requested by child edge nodes and fill gaps in the parent node's collection of segment files. Once alI of the parent node's child edge nodes have reported that they have completed their defraginentation, the parent node checks its own manifests against its cached segment flies to determine whether there are still any absent segment -files and if so, puns the absent segment file(s) from the higher level node. -When an segment files are .cached in the parent 'node, the parent node reports completion of its &fragmentation to the higher level node. This method propagates up through the CDN until all nodes are defragmented and have reported their defragmented state to higher levels.
Embodiments disclosed herein describe edge nodes, parent nodes, iind methods performed in the edge nodes and the parent nodes.
One embodiment is directed toward a method in an edge node of a CDN for ensuring that a memory of the edge node contains all segt,nent film referenced by an associated manifest document The method iitcludes the steps of analyzing th.e associated manifest document and the segment files stored in the Memory of the edge node to determine whether any of the segment files referenced by the associated.
manifest document are absent from the memoiy of the edge node; and 'upon determining there are segtnent files referenced by the associated Manifest document that are absent from the memory of the edge node, pulling the absent segment tiles from another node in the CI) N and storing the pulled segment files in the memory of the edge .node.
Another embodiment is directed toward an edge node of a CDN configured to utilize adaptive streaming to deliver a piece of electronic content to requesting. clients, 5 wherein the piece of electronic content comprises a plurality of segment files referenced by an associated manifest document. The edge node is configured to ensure that a memoly of the edge 'node contains all segment files referenced by the associated manifest document. The edge :node includes a processor that executes computer program instructions causing the edge node to analyze the associated manifest document and the segment .files stored in the memory of the edge node to determine ,v.hether any of the segment files referenced by the associated manifest docum.ent are absent from the memory of the edge node; and upon determining there are segment files referenced by the associated manifest dOCUMent that are absent from the ntemory of the edge node, .pull the absent segment files from another node in the CDN
and store the pulled segment files in the memory .of the edge node.
Another .embodiment is directed toward a parent node of a CDN configured to provide a piece of electronic content to a plurality of child nodes for further distribution to requesting clients utilizing adaptive streamine. The piece of electronic content comprises a plurality of segment files referenced by an associated manifest document,.
and the parent node is configured to ensure that a memory of the parent node contains all of the seement files referenced by the associated .manifest document. The parent node includes a processor that executes computer program instructions causing.
the parent node to populate each of the plurality of child nodes with segment files requested by each child node, wherein when a requested segment the is absent .from the memory of the parent node, the parent 'node is configured to pull the requested segment file from a higher level node in the CDN, to send the requested segment die to the requesting child node, and to store .the requested segment file in the memory of .the parent node. The parent node also determines that all a the plurality a child nodes have reported that their manifest documents are complete, and in response, analyzes the associated manliest document and the segment files stored in the memory of the parent node to determine whether any segment files referenced by the associated manifest document. are still absent fro ... n the 'memory of the parent node: Upon determining there are segment files referenced by the associated manifest doctunent that are still absent from .the .memory of the parent node, the parent node pulls the absent segment files from the higher level 'node in the CDN and stores the pulled segment files in the parent tiode The present di...;elostire ensures that clients requestin.g .adaptive .streaming content do not "fragment" the various edge servers they are redirected to for acquiring the segment files of the content The disclosed nodes .and methods enable a CDN
to operate in. an efficient manner during- peak usage times µvhen dealing with adaptive streaming content. A CDN that :utilizes the disclosed nodes and methods gains efficiencies in network. bandwidth utilization resulting in a better client experience.
The predictive loading aSpeet based on factors such as content popularity ensures and.
reinforces efficient resource usage.
ii3RIEF DESCRIPTION OF THE DRAWINGS
'In the following section, the present diselosure will be described with reference to exemplary embodiments illustrated in the figures, in which:
FIG, 1 is an illustrative example of fragmentation of a .master manifest when segment files are stored. in different edge nodes of a C[)ì;
FIG. 2 is rn ithiStratiVe drawing of an exemplary embodiment of a method for determining existing and absent manifest segment files in a node's local cache memory.;
FIG. 3 is a. flow diagram showing an exemplary embodiment of a method of segment defragmentation in a CDN;
FIG. 4 is a fkrw chart illustrating the steps of an exemplary embodiment of a segment defragmentation method perforated by a child node such as an edge:
server in the C."
FIG. 5 is a flow chart illustrating the steps of an exemplary embodiment of a segment defragmentation method performed by a parent node such as a regional server in the CDN; and 1210. 6 is a simplified block diagram of an cumplaiy embodiment of a. CDN
node configured according to the present disclosure.
I 0 DETAIL ... DESCRIPTION
in the following detailed description, :numerous specific .details are set forth in order to provide a thorough understanding of the disclosure. However, it will be understood by those skilled in the an that the present disclosure may he 'practiced without these specific details. In other -instances, 'well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the present disclosure. The disclosed system may be implemented, for example, in hardware or a. combination of hardware and software such as one or more processors executing computer :program instructions stored on a. -memoiy device.
It is noted at the outset that the terms "coupled," "connected", "connecting,"
"electrically connected," etc., are used interchangeably 'herein to generally refer to the condition of being electrically/electronically. connected. Similarly, a first entity is considered to be in. "communication" with a. second entity (or entities) When the .first entity electrically sends and/6r receives (whether 'through wireline or wireless means) info .. . mation signals (whether containing voice info . r . mation or lion-voice data/control information) tolfrom the second entity regardless of the type (analog or digital) of those signals. It is further noted that various figures (including component diagrams) shown and discussed herein are for illustrati ve purpose only, and are not drawn to scale, i is an illustrative example of fragmentation of a master manifest :12 whert.
segment files 1.1a-11j are stored in different edge servers of a. CDN. As a master manifest 12 of a Movie .X is distributed through the CDN, segment tiles referenced by the master manifest may be distributed, for example, from an origin server to a plurality of regional servers, which serve as parent servers to child or edge servers.
Other methods of clistribution -may also be utilized SUCh as distributing from. node to node on.
the same network. level. As the edge servers pull manifest segment files for Nlovie .X.
from parent to child nodes or tIVII other edge servers, the eollection of segment files residing on each edge server ma,y become frag.mentedõ In. FIG. 1, the dark.
Shaded areas..
illustrate segment tiles referenced by the manifest docutnent that are absent from each edge server.
FIG, 2 is an illustrative drawing of an exemplary embodiment of a method for determining, existing and absent manifest segment files in an edge node's local cache memory. The manifest document includes a list referencing the segment files that comprise the complete piece of electronic content. The edge node may analyze the manifest document and the stored segment files by reading the 'manifest document to identif,y which se.gment tiles are referenced by .the manifest document, determining which segment files are .present in the edge node's memory, and .co.mparing the present segment files 1,vith the list to :identify which segment files are absent F.ach see!ment tile has an assigned. Uniform 'Resource Locator (I.lRle)., and if a. segment .file is detertnined.
to be absent from the edge node's me.mory, the edge node -uses the URI: of the absent segment file to request or pull the a.bsent segment file from another node in the CDN.
In one embodiment, the other node is the edge node's parent node, whieh may be a regional, national, or origin server .of the CDN, In this manner, the edge node fills in the absent: segment files referenced by a particular manifbst or sub-manifest document FIG. 3 is a flow diagram showing an exemplary embodiment of a method of segment defragmentation in a CIDN 30.. In this embodiment, a CJ. N
'Re:director server 31 is configure.d. to "redirect' client requests fOr content to the URI of either a regional server 32 or an edge server 33 for segment acquisition. Additionally, the CDN
=Redirector server 31 communicates with an existing system (not shown) to request popularity metrics, scores, weights, or other measures along with hut not limited to, geographic location information to determine the popularity of a particular piece of content. The CDN Redireetor server may also or alternatively use its own redirection history to determine which content qualifies as popular.
The CT) N Redirector server 31 or another server may also inform ..child nodes of a. 'Minimum Usage Timeframe", that is a time of day range in which network resources are .determined to be near low usage levels. This .Minimum Usage ¨8¨
Timeframe may be determined by the CDN .R.edirector server or by another node within the CDN. In an embodiment of the disclosure, nodes first determine that the current time is within the minimum usage time frame. before they begin .the defiagmentation process.
Child nodes are served by parent nodes, and during the defragmentation process, a request from a child node propagates through the parent node to fulfill the request for manifest segments. A parent node that is also missing the requested.
segment file may puli the absent segment file from a higher level nod.e such as a national server 34, save the requested segment file, and fbrward the requested seginent file to the requesting .child .node. Through this propagation, the parent node caches or stores segment files requested by one or more child nodes.
FIG. 4 is a flow chart illustrating. the steps of an exemplary embodiment of a.
segment &fragmentation method performed by a child node or edge node such as an edge server in the. C. 'Boxes enetosing ..cteps of the. method 'indicate the enclosed steps are 'looped until, for example, ali manifests have be-en analyzed or all absent segment files have been pulled from a parent node.
Each node within the CDN may d.etermine at various time intervals whether the current time, fid.ls within the node's Minimum 1.3Sage Timefrarrie. Nodes that do not provide self-caleulating timeframes may send a request to the node's parent node, .the CD Redirector server, or another server to determine its Minimum Usage Timeframe.
Thus, at step 4:1, the edge node elvecks a de:fragmentation w:}:tkeup timer, which causes die edge node to determine at step 42 whether the current time is within the period of usage of .network resources within the CDN. The edge node may self -calculate Lhe .period of 111111111111111 usage of network resources if ithle, and if not able, the edge node receives information identifying the :period of MillirrIUM usage of network resources within the .CDN from its parent node, the Redireetor server 31, or another server in the CDN. .11 the current time is not within the period .of minimum usage of network resources within the CDN, the method moves to step 43 where defragmentation is skipped for this edge node, and the method returns to step 41, When it is determined at step 42 that the current time= is within the period of minimum usage of network resources within the CDN, the .method _moves to step 44 where the ¨9¨
edge node retrieves all content popularity timeframe windows from the Redirector server 31. The method then enters loop 45.
Loop 45 ellcomtmsses a. process performed for each adaptive stream ... . g manifest associated with segment files stored in the edge node's local cache memory.
At step 46, the edge node determines whether the current time is within the popularity time window threshold for a particular manifest being analyzed.. This is done to ensure the complete piece of' electronic content is available when clients are likely to request the segment files. If the current time is not within. the popularity time window threshold,.
the method .inoves to step 47 where the edge node skips that particular manifest. 'When.
it is determined at step 46 that the current time is within the popularity time window threshold for the particular manifest being analyzed, the method moves to step 48.
where the edge node reads the master manifest files. The method .then enters loop 49.
Loop 4-9 encompasses a process performed for each child inanilzst in the master manifest. At step 51, the edge node reads the URLs of the segment files from a.
particular .child .manifest. The method then enters loop .52.
.Loop 52 encompasses .a process performed for each URI, in the particular child manifest being analyzed. At step 53, the edge node determines whether .a particular segment file exists in the edge node's cache memory. If so, the edge node skips the URI, for that segment tile at step 54 and MOLTS to the next segment file, This process continues -for each of the segment files referenced by the child manifest, and. -when a.
referenced segment file is determined to be absent from the edge node's local cache memory, the method -moves to step 55 where the edge node utilizes the -UR-L of the absent segment file to pull the absent segment file from another CDN .node such as the edge node's parent node or another edge node. The edge node caches the segment file pulled from the other C.D.N node.. -When loops 45, 49, and 52 have been performed for each adaptive streaming manifest in cache,. for each child manifest in the master man.ifest, and tor each UM:: in each child manifest, all segment tiles should exist i.n .the edge 'node's local cache memory.
Upon verification that all segment files fbr all manifests exist in the edge node's local cache memory at step 56, the method moves to step 57 where the edge node reports to its parent 'node that del-rap-le-Minion is complete.
.F1G. 5 is a flow chart illustrating the steps of an exemplary embodiment of a segment defragmentation. method performed by- a parent node such as a regional server in the CDN. Once again, boxes enclosing steps of the tnethod indicate the enclosed steps are looped until, .for example, all manilbsts have beerì. analyzed or all absent segment .files haVe been pulled .from a higher level node.
At step 61, the parent node elieeks ì defragmentadon waketip timer, which causes= the parent :node to determine at step 62 whether the current time is within a period of -minimum usage of network. resources within the CDN. The parent node may self-calculate the period of innium usage of networl . resources if able, and if not able, the parent .node eeceives front a. higher level node or from. the Redireotor server 31 in the CDN, information identifying the period of minimum usage ofnetwork resources within the .CDN. If the current time is not within the period of minimum usage of network resources -within the CDN, the mehod moves to step 63 vl.tere defraementation is skipped -for this parent node, and the method returns to step 61.
When it is determined at step 62 that the current time is within the period of IlittlUtll usage of network resources within the .CDN, the method moves to step 64 where the parent node determines whether all of its child 'nodes have reported that their defragmentation is complete. As noted above, during the process of &fragmenting the child nodes, the parent node .may pull absent files from the higher level node and fill in any absent files in the parent node's cube .nlemory. Therefore, if rtli of its child nodes have not yet reported that their defragmentation is complete, the parent .notie sleeps for a threshold time at step 65 to wait for all of its child nodes to report that their &fragmentation is complete. The method then returns to step 62 to ensure the current time is still within the period of 11141111M111 usage of network resources within the CDN.
When it is determined a step 64 that all of the child nodes have reported that their defragmentation is complete, the method moves to step 66 where the parent node retrieves rili content popularity timeframe windows from the Redirector server 31. The method then enters loop 67.
.1..00p 67 encompasses a process performed for each adaptive streaming manifest associated with segment files stored in the parent node's local cache memory.
At step 68, the parent node determines whether the Current time is within the popularity time window threshold for a particular manifest being analyzed. This i done to ensure the complete piece of electronic content is available when. clients are likely to request the segment _files.. if the current time is not within the popularity time window threshold, the method. .moves to step 69 viihere the parent 'MI& skips that -p.articular manifest.
When it is determined at step 68 that the current time is within the popularity time window threshold for the particular manifest being analyzed, .the method moves to step 71 where the parent node, reads the master manifest tiles. The method then enters loop 72.
.L.00p 72 encompasses a process performed fbr each child manifest in the master manifest. At step 73, the parent node reads the lins of the segment files from. a particular child .manifest. The method then enters loop 74.
-Loop 74 encompasses a process performed fbr each URI.. iu the particular child manifest being analyzed. The parent node reads .the master and sub-manifest segment files for a. given content .to determine whether any segment files reterenced by -the manifest are absent .from the parent node's local cache memory. Thus, at step 75, the parent node determines whether a particular segment file exists in the parent node's cache memory. If so, the parent node skips the.: Likt thr that segtnent file at step 76 and moves to the next segment tile. This process continues for each of the segment tiles.
referenced by the child manifest, and when a. referenced. segment file isdetermined to be absent from the parent node's -local cache memory, the method moves to step 77 .Where the parent node utilizes the 1J111.,, of the absent segment tile to pull the absent segment file from another CT) N node such as a higher level, node or another parent node. The parent node caches the segment file pulled from the other CDN node. When loops 67, 72, and 74 have been perfbrmed for each adaptive streaming manifest in cache, for each child manifest in the master manifest, and for each URI, in each child manifest, all segment fifes should exist in the parent .node.
The parent node may perform these. operations for eac.:11 manifest/sub-manifest -for each piece of content provisioned within. the Cl)' or just for those manifests staged within the parent nod.e. When the parent node has determined that all segment .files ìì3r each bitrate, for each piece of content have been pulled from the higher level or other Cl)N node at step 78, method moves to step 79 where the parent node sends a message to its higher level node indicating that the parent node's defra.gmentation is complete.
¨1 2¨
FIG. 6 is a simplified block diagram of an exemplary e-mbodiment of a CDN
node 81 malign:red according to the prf..sent disclosuiv. The: functions of he CDN
node . may be controlled, for example, hy a. processor 82 executing computer program instructions stored on a memory 83. A &fragmentation wakeup timer 84 provides the current time to a comparison unit 85., which compares the current time with the minimum -usage timeframe 8& lf the current time is within the minimum usage timettame. the comparison unit further compares the current time with the manifest popularity time window threshold 87. ff the current time is within the manifest popularity time window threshold, the comparison unit .notifies a segment file reader 88 that it is okay to start the damgmentation process.
The segment file reader 88 reads the segment files from the cache memory 89, A UM: reader 91 reads the UR.L..s of each of the segment files referenced by the associated ma.nifest document and provides them to an absent file identifier 92. The Sent file identifier identifies one or tore referenced segment files that are absent from the local cache memory and sends the associated requested URL(s) to a communication unit 93. The communication unit sends one or .more .requests for the:
segment files by sending the. requested URIL(s) to another CDN node 94., WhiCh may be, for example, a parent node. The other C.DN riOcie returns the requested segment file(s) to the communication unit, which sends them to the cache 0 for storage.
Subsequently. the segment file reader 88 reads .the segment files from the cache, and the absent file identifier 92 determines that all segment files reference by the aSSOCiated illanifeSt dOCUMent thOW Min in the cache. The absent file identifier then notifies the.
conununiention unit that the defragmentation process is complete. The communication unit 93 then notifies the CDN node's parent node 94 that the CDN node's &fragmentation process is complete.
Dashed fines :in FIG. 6 indicate additional functionality when the CON node 81 is also a parent nodeõAs discussed ttbove ìur COTMeetiOn with FIG. 5, after .the comparison unit 85 determines the current time is with the minimum usage timeframe 86, the parent node determines Whether all of its child node(S) 95 have reported that their (it:fragmentation process is complete Once all the .ehild node(s) have .reported that their &fragmentation is complete, the comparison unit 85 continues by detennining whether the eUrrent time is within the manifest popularity time window threshold 87 'Ilse, the defragmentation 'process for the parent node is initiated.
:Modifications aid other embodiments of the disclosure oome to mind to one skilled in the art having the benefit of the {codlings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the disclosure is 'not to be limited to the specific embodiment,.4 disclosed and that mocations and other embodiments are intended to be included within the scope of this disclosure. Although specific terms may be employed herein, they are used in a generic and descriptive sense only and not for 'purposes of braitation.
Accordingly, the I 0 scope of patented subject matter should not be limited to any of the. specific exempl.nry teachings discussed above, but is instead defined by the following claims.
IN A CONTENT DELIVERY NETWORK
CROSS-REFERENCE TO RELATED .APPLICAT1ONS
This application claims the priority benefit MICICI" 35 U.S.C. I 1.9(e) of U.S.
tkovisionai Application N. 61/831,908fiied on June 6, 2013, the disclosure of Whiell is incorporated. herein by reference in its entirety.
TECHNICAL FLEW
lo The present :disclosure relates to communication systems. .More particularly, and not by way of limitation, -particular embodiments of the present disclosure are directed to a. nodes and methods in a Content Distribution Network (CDN) for distributing electronic content to servers throughout the CDN.
BACKGROUND
Content Distribution Networks (CDNO generally operate by distributing complete, files across the nocles (servers) that :comprise the distribution network. A
central server known as a irector handles requests lbr flies and responds by returning a different Uniform -Resource. Identifier (URI) for a given file (redirectiotty In other cases, a Domain NalTle System (DNS) server may respond with a .ditferent IP
Address for a given host name for the URI of the file. Centralized management software may determine the best way. to distribute the files out to the edge of the CDN
based on.
external .data such .as popularity, network. congestion, or other -factors.
.Adaptive streaming, sometimes called adaptive bit:rate sttvaming, is a technique based, in most applications, on the Hypertext Transfer Protocol ITIP) used for streaming multimedia over large distributed HTIP networks. The media source detects a users bandwidth and CPU capacity in real time and tidings the quality of a video stream accordingly using a. multi-rate encoder capable of encoding a single source video at .multiple bitrates. This generally results in very little: hafering, fast start times, and .a good (IXperience for both high-end and low-end connections.
More specifically,. the source content is encoded at mad* bitrates, and each of the different bitrate streams is segmented into small segment files c(mtaining several ¨2¨
seconds' worth. Of C011tf.lit. The segment-file size can valy depending on the pitrtieular implementation, but the segment files are typically in the range of .two to ten seconds in 'length. A manifest file provides the streaming client with infOrmation about the available streams, their differing bitrates, and segments of the streams. When starting, the client requests the segment .files 1CM-11 the lowest -bitrate stream. Jf the client finds the download speed is greater than the bitrate of the downloaded segment file, then the client wiJì :request the segment files from the ttet higher bitrate. Later, if the client .finds the download speed for a segment file is lower than the bitrate for the segment file. and therefore the network throughput has deteriorated, the client requests a lower bitrate segment file.
SUMMARY
Due to the architecture and mechanism for adaptive strearnine, when clients access adaptive streaming content via a OW, there is a. high probability that servers at the edge become fragmented, i.e.., they will hold incomplete copies of the content Nodes at the edge of the CDN (edge servers) may serve one or many individual segment files to a client. When the client requests content from. a second edge server, both the .first edge server and the second edge server may hold an incomplete collection of the segment files referenced by the associated .mtmifest. This results in fragmentation of the media, resultin;.q, in inefficiencies and additional network Toad when the client. attempts to pull an entire collection of segment files from a single edge server.
-When edge servers do not hold a. copy of a requested segment file, they .must pull the requested segment file from a. parent node st.¶:11 as a regional server. While this generally- causes the parent node to hold a complete copy of the requested segment files, there is no guarantee that a complete .manifest segment collection will reside on the parent node for all advertised bitrates. Fragmentation occurs when clients request some, but not all., a the segment files for an. adaptive streaming manifest from the same edge server resulting in an incomplete copy of the entire manliest segmeth collection, Clients changing bitrates within an adaptive streaming architecture can eompound this fragmentition on an edge server even :further.
As a solution, panicular embodiments of the -present disclosure provide a "defragmentation" system and method within a C.DN where adaptive Stt viaming content is utilized. The system and method ensures that edge servers hold a complete copy of the entire manifest segment collection.. Further, this "defragmentation"
method may. be controlled to occur at titres of low network utilization, and the method may take into account the anticipated need for the content so as to avoid unnecessarily pre-staging segment files when they are unlikely to be requested.
In one embodiment, the present disclosure is directed to a method in which an edge node in a CDN. determines whether there are any segment .files referenced by a manifest doeurnent that are absent from the edge node's local cache and if so,. the edge node pulls the absent segment files from another node in the Cì such as its parent node or another edge node. Prior to pulling the absent segment files frOM the other node, the edge node .may determine that the current time is within a period of minimum usage of network resources. The edge node may also determine that n manifest popularity time is within a window threshold so that segment. files are staged in a.
timely manner fOr when clients are likely to request .thetn. When all segment files are cached in the edge node, the edge node reports completion of its &fragmentation to its parent node.
If a segment file requested by nil edge node from its parent node is also absent from the parent node's local cache, the parent: node pulls the absent segment file from a.
higher level node in the (MN, stores the absent .segment file in the parent node's local cache, and passes the file to the requesting edge node. In this way, the parent :node caches or stores segment files requested by child edge nodes and fill gaps in the parent node's collection of segment files. Once alI of the parent node's child edge nodes have reported that they have completed their defraginentation, the parent node checks its own manifests against its cached segment flies to determine whether there are still any absent segment -files and if so, puns the absent segment file(s) from the higher level node. -When an segment files are .cached in the parent 'node, the parent node reports completion of its &fragmentation to the higher level node. This method propagates up through the CDN until all nodes are defragmented and have reported their defragmented state to higher levels.
Embodiments disclosed herein describe edge nodes, parent nodes, iind methods performed in the edge nodes and the parent nodes.
One embodiment is directed toward a method in an edge node of a CDN for ensuring that a memory of the edge node contains all segt,nent film referenced by an associated manifest document The method iitcludes the steps of analyzing th.e associated manifest document and the segment files stored in the Memory of the edge node to determine whether any of the segment files referenced by the associated.
manifest document are absent from the memoiy of the edge node; and 'upon determining there are segtnent files referenced by the associated Manifest document that are absent from the memory of the edge node, pulling the absent segment tiles from another node in the CI) N and storing the pulled segment files in the memory of the edge .node.
Another embodiment is directed toward an edge node of a CDN configured to utilize adaptive streaming to deliver a piece of electronic content to requesting. clients, 5 wherein the piece of electronic content comprises a plurality of segment files referenced by an associated manifest document. The edge node is configured to ensure that a memoly of the edge 'node contains all segment files referenced by the associated manifest document. The edge :node includes a processor that executes computer program instructions causing the edge node to analyze the associated manifest document and the segment .files stored in the memory of the edge node to determine ,v.hether any of the segment files referenced by the associated manifest docum.ent are absent from the memory of the edge node; and upon determining there are segment files referenced by the associated manifest dOCUMent that are absent from the ntemory of the edge node, .pull the absent segment files from another node in the CDN
and store the pulled segment files in the memory .of the edge node.
Another .embodiment is directed toward a parent node of a CDN configured to provide a piece of electronic content to a plurality of child nodes for further distribution to requesting clients utilizing adaptive streamine. The piece of electronic content comprises a plurality of segment files referenced by an associated manifest document,.
and the parent node is configured to ensure that a memory of the parent node contains all of the seement files referenced by the associated .manifest document. The parent node includes a processor that executes computer program instructions causing.
the parent node to populate each of the plurality of child nodes with segment files requested by each child node, wherein when a requested segment the is absent .from the memory of the parent node, the parent 'node is configured to pull the requested segment file from a higher level node in the CDN, to send the requested segment die to the requesting child node, and to store .the requested segment file in the memory of .the parent node. The parent node also determines that all a the plurality a child nodes have reported that their manifest documents are complete, and in response, analyzes the associated manliest document and the segment files stored in the memory of the parent node to determine whether any segment files referenced by the associated manifest document. are still absent fro ... n the 'memory of the parent node: Upon determining there are segment files referenced by the associated manifest doctunent that are still absent from .the .memory of the parent node, the parent node pulls the absent segment files from the higher level 'node in the CDN and stores the pulled segment files in the parent tiode The present di...;elostire ensures that clients requestin.g .adaptive .streaming content do not "fragment" the various edge servers they are redirected to for acquiring the segment files of the content The disclosed nodes .and methods enable a CDN
to operate in. an efficient manner during- peak usage times µvhen dealing with adaptive streaming content. A CDN that :utilizes the disclosed nodes and methods gains efficiencies in network. bandwidth utilization resulting in a better client experience.
The predictive loading aSpeet based on factors such as content popularity ensures and.
reinforces efficient resource usage.
ii3RIEF DESCRIPTION OF THE DRAWINGS
'In the following section, the present diselosure will be described with reference to exemplary embodiments illustrated in the figures, in which:
FIG, 1 is an illustrative example of fragmentation of a .master manifest when segment files are stored. in different edge nodes of a C[)ì;
FIG. 2 is rn ithiStratiVe drawing of an exemplary embodiment of a method for determining existing and absent manifest segment files in a node's local cache memory.;
FIG. 3 is a. flow diagram showing an exemplary embodiment of a method of segment defragmentation in a CDN;
FIG. 4 is a fkrw chart illustrating the steps of an exemplary embodiment of a segment defragmentation method perforated by a child node such as an edge:
server in the C."
FIG. 5 is a flow chart illustrating the steps of an exemplary embodiment of a segment defragmentation method performed by a parent node such as a regional server in the CDN; and 1210. 6 is a simplified block diagram of an cumplaiy embodiment of a. CDN
node configured according to the present disclosure.
I 0 DETAIL ... DESCRIPTION
in the following detailed description, :numerous specific .details are set forth in order to provide a thorough understanding of the disclosure. However, it will be understood by those skilled in the an that the present disclosure may he 'practiced without these specific details. In other -instances, 'well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the present disclosure. The disclosed system may be implemented, for example, in hardware or a. combination of hardware and software such as one or more processors executing computer :program instructions stored on a. -memoiy device.
It is noted at the outset that the terms "coupled," "connected", "connecting,"
"electrically connected," etc., are used interchangeably 'herein to generally refer to the condition of being electrically/electronically. connected. Similarly, a first entity is considered to be in. "communication" with a. second entity (or entities) When the .first entity electrically sends and/6r receives (whether 'through wireline or wireless means) info .. . mation signals (whether containing voice info . r . mation or lion-voice data/control information) tolfrom the second entity regardless of the type (analog or digital) of those signals. It is further noted that various figures (including component diagrams) shown and discussed herein are for illustrati ve purpose only, and are not drawn to scale, i is an illustrative example of fragmentation of a master manifest :12 whert.
segment files 1.1a-11j are stored in different edge servers of a. CDN. As a master manifest 12 of a Movie .X is distributed through the CDN, segment tiles referenced by the master manifest may be distributed, for example, from an origin server to a plurality of regional servers, which serve as parent servers to child or edge servers.
Other methods of clistribution -may also be utilized SUCh as distributing from. node to node on.
the same network. level. As the edge servers pull manifest segment files for Nlovie .X.
from parent to child nodes or tIVII other edge servers, the eollection of segment files residing on each edge server ma,y become frag.mentedõ In. FIG. 1, the dark.
Shaded areas..
illustrate segment tiles referenced by the manifest docutnent that are absent from each edge server.
FIG, 2 is an illustrative drawing of an exemplary embodiment of a method for determining, existing and absent manifest segment files in an edge node's local cache memory. The manifest document includes a list referencing the segment files that comprise the complete piece of electronic content. The edge node may analyze the manifest document and the stored segment files by reading the 'manifest document to identif,y which se.gment tiles are referenced by .the manifest document, determining which segment files are .present in the edge node's memory, and .co.mparing the present segment files 1,vith the list to :identify which segment files are absent F.ach see!ment tile has an assigned. Uniform 'Resource Locator (I.lRle)., and if a. segment .file is detertnined.
to be absent from the edge node's me.mory, the edge node -uses the URI: of the absent segment file to request or pull the a.bsent segment file from another node in the CDN.
In one embodiment, the other node is the edge node's parent node, whieh may be a regional, national, or origin server .of the CDN, In this manner, the edge node fills in the absent: segment files referenced by a particular manifbst or sub-manifest document FIG. 3 is a flow diagram showing an exemplary embodiment of a method of segment defragmentation in a CIDN 30.. In this embodiment, a CJ. N
'Re:director server 31 is configure.d. to "redirect' client requests fOr content to the URI of either a regional server 32 or an edge server 33 for segment acquisition. Additionally, the CDN
=Redirector server 31 communicates with an existing system (not shown) to request popularity metrics, scores, weights, or other measures along with hut not limited to, geographic location information to determine the popularity of a particular piece of content. The CDN Redireetor server may also or alternatively use its own redirection history to determine which content qualifies as popular.
The CT) N Redirector server 31 or another server may also inform ..child nodes of a. 'Minimum Usage Timeframe", that is a time of day range in which network resources are .determined to be near low usage levels. This .Minimum Usage ¨8¨
Timeframe may be determined by the CDN .R.edirector server or by another node within the CDN. In an embodiment of the disclosure, nodes first determine that the current time is within the minimum usage time frame. before they begin .the defiagmentation process.
Child nodes are served by parent nodes, and during the defragmentation process, a request from a child node propagates through the parent node to fulfill the request for manifest segments. A parent node that is also missing the requested.
segment file may puli the absent segment file from a higher level nod.e such as a national server 34, save the requested segment file, and fbrward the requested seginent file to the requesting .child .node. Through this propagation, the parent node caches or stores segment files requested by one or more child nodes.
FIG. 4 is a flow chart illustrating. the steps of an exemplary embodiment of a.
segment &fragmentation method performed by a child node or edge node such as an edge server in the. C. 'Boxes enetosing ..cteps of the. method 'indicate the enclosed steps are 'looped until, for example, ali manifests have be-en analyzed or all absent segment files have been pulled from a parent node.
Each node within the CDN may d.etermine at various time intervals whether the current time, fid.ls within the node's Minimum 1.3Sage Timefrarrie. Nodes that do not provide self-caleulating timeframes may send a request to the node's parent node, .the CD Redirector server, or another server to determine its Minimum Usage Timeframe.
Thus, at step 4:1, the edge node elvecks a de:fragmentation w:}:tkeup timer, which causes die edge node to determine at step 42 whether the current time is within the period of usage of .network resources within the CDN. The edge node may self -calculate Lhe .period of 111111111111111 usage of network resources if ithle, and if not able, the edge node receives information identifying the :period of MillirrIUM usage of network resources within the .CDN from its parent node, the Redireetor server 31, or another server in the CDN. .11 the current time is not within the period .of minimum usage of network resources within the CDN, the method moves to step 43 where defragmentation is skipped for this edge node, and the method returns to step 41, When it is determined at step 42 that the current time= is within the period of minimum usage of network resources within the CDN, the .method _moves to step 44 where the ¨9¨
edge node retrieves all content popularity timeframe windows from the Redirector server 31. The method then enters loop 45.
Loop 45 ellcomtmsses a. process performed for each adaptive stream ... . g manifest associated with segment files stored in the edge node's local cache memory.
At step 46, the edge node determines whether the current time is within the popularity time window threshold for a particular manifest being analyzed.. This is done to ensure the complete piece of' electronic content is available when clients are likely to request the segment files. If the current time is not within. the popularity time window threshold,.
the method .inoves to step 47 where the edge node skips that particular manifest. 'When.
it is determined at step 46 that the current time is within the popularity time window threshold for the particular manifest being analyzed, the method moves to step 48.
where the edge node reads the master manifest files. The method .then enters loop 49.
Loop 4-9 encompasses a process performed for each child inanilzst in the master manifest. At step 51, the edge node reads the URLs of the segment files from a.
particular .child .manifest. The method then enters loop .52.
.Loop 52 encompasses .a process performed for each URI, in the particular child manifest being analyzed. At step 53, the edge node determines whether .a particular segment file exists in the edge node's cache memory. If so, the edge node skips the URI, for that segment tile at step 54 and MOLTS to the next segment file, This process continues -for each of the segment files referenced by the child manifest, and. -when a.
referenced segment file is determined to be absent from the edge node's local cache memory, the method -moves to step 55 where the edge node utilizes the -UR-L of the absent segment file to pull the absent segment file from another CDN .node such as the edge node's parent node or another edge node. The edge node caches the segment file pulled from the other C.D.N node.. -When loops 45, 49, and 52 have been performed for each adaptive streaming manifest in cache,. for each child manifest in the master man.ifest, and tor each UM:: in each child manifest, all segment tiles should exist i.n .the edge 'node's local cache memory.
Upon verification that all segment files fbr all manifests exist in the edge node's local cache memory at step 56, the method moves to step 57 where the edge node reports to its parent 'node that del-rap-le-Minion is complete.
.F1G. 5 is a flow chart illustrating the steps of an exemplary embodiment of a segment defragmentation. method performed by- a parent node such as a regional server in the CDN. Once again, boxes enclosing steps of the tnethod indicate the enclosed steps are looped until, .for example, all manilbsts have beerì. analyzed or all absent segment .files haVe been pulled .from a higher level node.
At step 61, the parent node elieeks ì defragmentadon waketip timer, which causes= the parent :node to determine at step 62 whether the current time is within a period of -minimum usage of network. resources within the CDN. The parent node may self-calculate the period of innium usage of networl . resources if able, and if not able, the parent .node eeceives front a. higher level node or from. the Redireotor server 31 in the CDN, information identifying the period of minimum usage ofnetwork resources within the .CDN. If the current time is not within the period of minimum usage of network resources -within the CDN, the mehod moves to step 63 vl.tere defraementation is skipped -for this parent node, and the method returns to step 61.
When it is determined at step 62 that the current time is within the period of IlittlUtll usage of network resources within the .CDN, the method moves to step 64 where the parent node determines whether all of its child 'nodes have reported that their defragmentation is complete. As noted above, during the process of &fragmenting the child nodes, the parent node .may pull absent files from the higher level node and fill in any absent files in the parent node's cube .nlemory. Therefore, if rtli of its child nodes have not yet reported that their defragmentation is complete, the parent .notie sleeps for a threshold time at step 65 to wait for all of its child nodes to report that their &fragmentation is complete. The method then returns to step 62 to ensure the current time is still within the period of 11141111M111 usage of network resources within the CDN.
When it is determined a step 64 that all of the child nodes have reported that their defragmentation is complete, the method moves to step 66 where the parent node retrieves rili content popularity timeframe windows from the Redirector server 31. The method then enters loop 67.
.1..00p 67 encompasses a process performed for each adaptive streaming manifest associated with segment files stored in the parent node's local cache memory.
At step 68, the parent node determines whether the Current time is within the popularity time window threshold for a particular manifest being analyzed. This i done to ensure the complete piece of electronic content is available when. clients are likely to request the segment _files.. if the current time is not within the popularity time window threshold, the method. .moves to step 69 viihere the parent 'MI& skips that -p.articular manifest.
When it is determined at step 68 that the current time is within the popularity time window threshold for the particular manifest being analyzed, .the method moves to step 71 where the parent node, reads the master manifest tiles. The method then enters loop 72.
.L.00p 72 encompasses a process performed fbr each child manifest in the master manifest. At step 73, the parent node reads the lins of the segment files from. a particular child .manifest. The method then enters loop 74.
-Loop 74 encompasses a process performed fbr each URI.. iu the particular child manifest being analyzed. The parent node reads .the master and sub-manifest segment files for a. given content .to determine whether any segment files reterenced by -the manifest are absent .from the parent node's local cache memory. Thus, at step 75, the parent node determines whether a particular segment file exists in the parent node's cache memory. If so, the parent node skips the.: Likt thr that segtnent file at step 76 and moves to the next segment tile. This process continues for each of the segment tiles.
referenced by the child manifest, and when a. referenced. segment file isdetermined to be absent from the parent node's -local cache memory, the method moves to step 77 .Where the parent node utilizes the 1J111.,, of the absent segment tile to pull the absent segment file from another CT) N node such as a higher level, node or another parent node. The parent node caches the segment file pulled from the other CDN node. When loops 67, 72, and 74 have been perfbrmed for each adaptive streaming manifest in cache, for each child manifest in the master manifest, and for each URI, in each child manifest, all segment fifes should exist in the parent .node.
The parent node may perform these. operations for eac.:11 manifest/sub-manifest -for each piece of content provisioned within. the Cl)' or just for those manifests staged within the parent nod.e. When the parent node has determined that all segment .files ìì3r each bitrate, for each piece of content have been pulled from the higher level or other Cl)N node at step 78, method moves to step 79 where the parent node sends a message to its higher level node indicating that the parent node's defra.gmentation is complete.
¨1 2¨
FIG. 6 is a simplified block diagram of an exemplary e-mbodiment of a CDN
node 81 malign:red according to the prf..sent disclosuiv. The: functions of he CDN
node . may be controlled, for example, hy a. processor 82 executing computer program instructions stored on a memory 83. A &fragmentation wakeup timer 84 provides the current time to a comparison unit 85., which compares the current time with the minimum -usage timeframe 8& lf the current time is within the minimum usage timettame. the comparison unit further compares the current time with the manifest popularity time window threshold 87. ff the current time is within the manifest popularity time window threshold, the comparison unit .notifies a segment file reader 88 that it is okay to start the damgmentation process.
The segment file reader 88 reads the segment files from the cache memory 89, A UM: reader 91 reads the UR.L..s of each of the segment files referenced by the associated ma.nifest document and provides them to an absent file identifier 92. The Sent file identifier identifies one or tore referenced segment files that are absent from the local cache memory and sends the associated requested URL(s) to a communication unit 93. The communication unit sends one or .more .requests for the:
segment files by sending the. requested URIL(s) to another CDN node 94., WhiCh may be, for example, a parent node. The other C.DN riOcie returns the requested segment file(s) to the communication unit, which sends them to the cache 0 for storage.
Subsequently. the segment file reader 88 reads .the segment files from the cache, and the absent file identifier 92 determines that all segment files reference by the aSSOCiated illanifeSt dOCUMent thOW Min in the cache. The absent file identifier then notifies the.
conununiention unit that the defragmentation process is complete. The communication unit 93 then notifies the CDN node's parent node 94 that the CDN node's &fragmentation process is complete.
Dashed fines :in FIG. 6 indicate additional functionality when the CON node 81 is also a parent nodeõAs discussed ttbove ìur COTMeetiOn with FIG. 5, after .the comparison unit 85 determines the current time is with the minimum usage timeframe 86, the parent node determines Whether all of its child node(S) 95 have reported that their (it:fragmentation process is complete Once all the .ehild node(s) have .reported that their &fragmentation is complete, the comparison unit 85 continues by detennining whether the eUrrent time is within the manifest popularity time window threshold 87 'Ilse, the defragmentation 'process for the parent node is initiated.
:Modifications aid other embodiments of the disclosure oome to mind to one skilled in the art having the benefit of the {codlings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the disclosure is 'not to be limited to the specific embodiment,.4 disclosed and that mocations and other embodiments are intended to be included within the scope of this disclosure. Although specific terms may be employed herein, they are used in a generic and descriptive sense only and not for 'purposes of braitation.
Accordingly, the I 0 scope of patented subject matter should not be limited to any of the. specific exempl.nry teachings discussed above, but is instead defined by the following claims.
Claims (22)
1. A method in an edge node (31) of a Content Distribution Network (CDN) (30) for ensuring that a memory (89) of the edge node contains all segment files referenced by an associated manifest document (12), the method comprising the steps of:
analyzing (49, 72) the associated manifest document (12) and the segment files stored in the memory (89) of the edge node to determine whether any of the segment files referenced by the associated manifest document are absent from the memory of the edge node; and upon determining there are segment files referenced by the associated manifest document that are absent from the memory of the edge node, pulling (55, 77) the absent segment files from another node in the CDN and storing the pulled segment files in the memory of the edge node.
analyzing (49, 72) the associated manifest document (12) and the segment files stored in the memory (89) of the edge node to determine whether any of the segment files referenced by the associated manifest document are absent from the memory of the edge node; and upon determining there are segment files referenced by the associated manifest document that are absent from the memory of the edge node, pulling (55, 77) the absent segment files from another node in the CDN and storing the pulled segment files in the memory of the edge node.
2. The method as recited in claim 1, wherein the step of pulling the absent segment files from the other node in the CDN includes pulling the absent segment files from a parent node (32) of the edge node or from another edge node (33).
3. The method as recited in claim 1, wherein the associated manifest document includes a list (21) referencing the segment files that comprise a complete piece of electronic content associated with the manifest document, and the step of analyzing the associated manifest document and the segment files includes:
reading (48, 71) the associated manifest document to identify which segment files comprise the complete piece of electronic content;
determining which segment files are present in the memory of the edge node;
and comparing (53, 75) the present segment files with the list to identify which segment files are absent from the memory of the edge node.
reading (48, 71) the associated manifest document to identify which segment files comprise the complete piece of electronic content;
determining which segment files are present in the memory of the edge node;
and comparing (53, 75) the present segment files with the list to identify which segment files are absent from the memory of the edge node.
4. The method as recited in claim 3, wherein the list (21) referencing the segment files that comprise the complete piece of electronic content also indicates a Uniform.
Resource Locator (URL) for each listed segment file, and the step of putting the absent segment files from the other node includes:
determining (51, 73) the URL for each absent segment file; and sending the URL for each absent segment file to the other node in a request for the absent segment file.
Resource Locator (URL) for each listed segment file, and the step of putting the absent segment files from the other node includes:
determining (51, 73) the URL for each absent segment file; and sending the URL for each absent segment file to the other node in a request for the absent segment file.
5. The method as recited in claim 4, wherein When multiple segment files referenced by the associated manifest document are absent from the memory a the edge node, the step of sending the URL for each absent segment file to the parent node includes;
compiling the URLs for the multiple absent segment files into a single request;
and sending the request for multiple absent segment files to the other node
compiling the URLs for the multiple absent segment files into a single request;
and sending the request for multiple absent segment files to the other node
6. The method as recited in claim 1, further comprising, prior to analyzing (49, 72) the associated manifest document and the segment files, determining (42, 62) that a current time is within a period of minimum usage of network resources within the CDN.
7. The method as recited in claim 6, wherein the edge node self-calculates the period of minimum usage of network resources if able, and if not able, the edge node receives from a parent node (32) or from a Redirector server (31) in the CDN, information identifying the period of minimum usage of network resources within the CDN.
8. The method as recited in claim 6, further comprising, prior to analyzing (49, 72 ) the manifest document and the segment files, determining (46, 68) that the current time is within a minutest popularity time window threshold to ensure the complete piece of electronic content is available when clients are likely to request the segment files.
9. The method as recited in claim 8, wherein the edge node receives from a Redirector server (31 ) in the CDN, information identifying the manifest popularity time window threshold.
¨ 1 6-
¨ 1 6-
10. The method s recited in claim 1, further comprising reporting (57, 79) to a parent node (32) that all segment files referenced by the associated manifest document are stored in the memory of the edge node (33).
11. An edge node (33, 81) of a Content Distribution Network (CM) (30) configured to utilize adaptive streaming to deliver a piece of electronic content to requesting clients, wherein the piece of electronic content comprises a plurality of segment files referenced by an associated manifest document (12), wherein the edge node is configured to ensure that a memory (89) of the edge node contains all segment files referenced by the associated manifest document wherein the edge node includes processor (82) that executes computer program instructions causing the edge node to:
analyze (49, 72) the associated manifest document and the segment files stored.
in the memory (89) of the edge node to determine whether any of the segment Ides referenced by the associated manifest document are absent from the memory of the edge node; and upon determining there are segment files referenced by the associated manifest document that are absent from the memory of the edge node, pull (55, 77) the absent segment files from another node (32, 33, 94) in the CDN and store the pulled segment files in the memory of the edge node.
analyze (49, 72) the associated manifest document and the segment files stored.
in the memory (89) of the edge node to determine whether any of the segment Ides referenced by the associated manifest document are absent from the memory of the edge node; and upon determining there are segment files referenced by the associated manifest document that are absent from the memory of the edge node, pull (55, 77) the absent segment files from another node (32, 33, 94) in the CDN and store the pulled segment files in the memory of the edge node.
12. The edge node as recited in claim 11, wherein the edge node is configured to pull the absent segment files from a parent node (32, 94) of the edge MAO or from another edge node (33, 94).
13. The edge node as recited in claim 11, further configured to determine that a current time is within a period of minimum usage of network resources (86) within the CDN prior to analyzing the manifest document and the segment files.
14. The edge node as recited, in claim 13, further configured to determine that the current time is within a manifest popularity time window threshold (87) to ensure the complete piece of electronic content is available when the requesting clients are likely to request the segment files.
15. The edge node as recited in claim 11, further configured, after pulling the absent segment files from the parent node, to report (57, 79) to a parent node that all segment tiles. referenced by the associated manifest document are stored in the memory of the edge node.
16. A parent: node (32, 81) a a Content Distribution Network (CDN) (30) configured to provide a piece of electronic content to a plurality of child nodes (33, 94, 95) for further distribution to requesting clients utilizing adaptive streaming, wherein the piece of electronic content comprises a plurality of segment files referenced by an associated manifest document (12), wherein the parent node is configured to ensure that a memory (89) of the parent node contains all of the segment files referenced by the associated manifest document, wherein the parent node includes a processor (82) that executes computer program instructions causing the parent node to:
populate each of the plurality of child nodes with segment files requested by each child node, wherein when a requested segment file is absent from the memory of the parent node, the parent node is configured to pull (55, 77) the requested segment file from a higher level node (34, 94) in the CDN, to send the requested segment file to the requesting child node, and to store the requested segment file in the memory (89) of the parent node;
determine that all of the plurality of child nodes have reported that their manifest documents are complete;
in response to determining that all of the plurality of child nodes have reported that their manifest documents are complete, analyze (49, 72) the associated manifest document and the segment files stored in the memory of the parent node to determine whether any segment files referenced by the associated manifest document are still absent from the memory of the parent node; and upon determining there are segment files referenced by the associated manifest document that are still absent from the memory of the parent node, pull (55, 77) the absent segment files from the higher level node in the CDN and store the pulled segment files in the parent node.
populate each of the plurality of child nodes with segment files requested by each child node, wherein when a requested segment file is absent from the memory of the parent node, the parent node is configured to pull (55, 77) the requested segment file from a higher level node (34, 94) in the CDN, to send the requested segment file to the requesting child node, and to store the requested segment file in the memory (89) of the parent node;
determine that all of the plurality of child nodes have reported that their manifest documents are complete;
in response to determining that all of the plurality of child nodes have reported that their manifest documents are complete, analyze (49, 72) the associated manifest document and the segment files stored in the memory of the parent node to determine whether any segment files referenced by the associated manifest document are still absent from the memory of the parent node; and upon determining there are segment files referenced by the associated manifest document that are still absent from the memory of the parent node, pull (55, 77) the absent segment files from the higher level node in the CDN and store the pulled segment files in the parent node.
17. The parent- node as recited in claim 16, wherein the associated manifest document includes a list (21) referencing the segment files that comprise the complete piece of electronic content, and the parent node is configured to analyze the associated manifest document and the segment files stored in the memory of the parent node by reading (51, 73) the associated manifest document to identify which segment files comprise the complete piece of electronic content, by determining which segment files are present in the memory of the parent node, and by comparing (53, 75) the present segment files with the list to identify which segment files are absent from the memory of the parent node.
18. The parent node as recited in claim 17, wherein the list (21) referencing the segment files that comprise the complete piece of electronic content also indicates a Uniform Resource Locator (URL) for each listed segment file, and the parent node is configured to pull (55, 77) the absent segment files from the higher level node by determining the URL for each absent segment file, and by sending the URL for each absent segment file to the higher level node in a request for the absent segment file.
19. The parent node as recited in claim 18, wherein when multiple segment files referenced by the associated manifest document are absent from the memory of the parent node, the parent node is configured to compile the URLs for the multiple absent segment -files into a single request, and sending the request for multiple absent segment files to the higher level node.
20. The parent node as melted in claim 16, further configured to determine (42, 62), prior to determining that all of the plurality of child nodes have reported that their manifest documents are complete, that a current time is within a period of minimum usage of network resources (86) within the CDN.
21. The parent node as recited in claim 20, further configured to determine (46, 68), prior to analyzing (49, 72) the associated manifest document and the segment files stored in the parent node, that the current time is within a manifest popularity time window threshold (87) to ensure the complete piece of electronic content is available when clients are likely to request the segment files.
22. The parent node as recited in claim 16, further configured to report (57, 79) to the higher level node that all segment files referenced by the manifest document are stored in the memory of the parent node.
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201361831908P | 2013-06-06 | 2013-06-06 | |
| US61/831,908 | 2013-06-06 | ||
| US13/923,005 US20140365613A1 (en) | 2013-06-06 | 2013-06-20 | Defragmentation of adaptive streaming segment files in a content delivery network |
| US13/923,005 | 2013-06-20 | ||
| PCT/IB2014/061995 WO2014195906A2 (en) | 2013-06-06 | 2014-06-05 | Defragmentation of adaptive streaming segment files in a content delivery network |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CA2914603A1 true CA2914603A1 (en) | 2014-12-11 |
Family
ID=52008667
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CA2914603A Abandoned CA2914603A1 (en) | 2013-06-06 | 2014-06-05 | Defragmentation of adaptive streaming segment files in a content delivery network |
Country Status (4)
| Country | Link |
|---|---|
| EP (1) | EP3005176A4 (en) |
| CN (1) | CN105431835A (en) |
| CA (1) | CA2914603A1 (en) |
| WO (1) | WO2014195906A2 (en) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111327651A (en) * | 2018-12-14 | 2020-06-23 | 华为技术有限公司 | Resource downloading method, device, edge node and storage medium |
| CN109995851B (en) * | 2019-03-05 | 2021-11-26 | 东南大学 | Content popularity prediction and edge caching method based on deep learning |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9167036B2 (en) * | 2002-02-14 | 2015-10-20 | Level 3 Communications, Llc | Managed object replication and delivery |
| US7133905B2 (en) * | 2002-04-09 | 2006-11-07 | Akamai Technologies, Inc. | Method and system for tiered distribution in a content delivery network |
| US20030204602A1 (en) * | 2002-04-26 | 2003-10-30 | Hudson Michael D. | Mediated multi-source peer content delivery network architecture |
| CN1628452B (en) * | 2002-05-17 | 2010-09-01 | 株式会社Ntt都科摩 | Defragmentation of transfer sequences |
| KR100772385B1 (en) * | 2005-12-07 | 2007-11-01 | 삼성전자주식회사 | Method and apparatus for transmitting and receiving content on distributed storage system |
| US7860825B2 (en) * | 2006-05-08 | 2010-12-28 | Palm, Inc. | Method for synchronizing software application and user data for asynchronous client-server and peer to peer computer networks |
| US9307020B2 (en) * | 2008-10-02 | 2016-04-05 | International Business Machines Corporation | Dispersal and retrieval of data fragments in a peer-to-peer data backup and archival network |
| US9438861B2 (en) * | 2009-10-06 | 2016-09-06 | Microsoft Technology Licensing, Llc | Integrating continuous and sparse streaming data |
| CN102479155B (en) * | 2010-11-30 | 2014-07-02 | 国际商业机器公司 | Method and system for memory overload management applied in network application server system |
| CN102185880B (en) * | 2011-03-08 | 2014-06-18 | 天脉聚源(北京)传媒科技有限公司 | Video live-broadcast load equalizing method and video live-broadcast load equalizing system |
-
2014
- 2014-06-05 CA CA2914603A patent/CA2914603A1/en not_active Abandoned
- 2014-06-05 WO PCT/IB2014/061995 patent/WO2014195906A2/en not_active Ceased
- 2014-06-05 EP EP14808390.0A patent/EP3005176A4/en not_active Withdrawn
- 2014-06-05 CN CN201480044754.5A patent/CN105431835A/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| CN105431835A (en) | 2016-03-23 |
| WO2014195906A3 (en) | 2015-04-16 |
| EP3005176A2 (en) | 2016-04-13 |
| WO2014195906A2 (en) | 2014-12-11 |
| EP3005176A4 (en) | 2017-01-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20140365613A1 (en) | Defragmentation of adaptive streaming segment files in a content delivery network | |
| US10757067B2 (en) | Just in time transcoding and packaging in IPV6 networks | |
| US9838459B2 (en) | Enhancing dash-like content streaming for content-centric networks | |
| US8745262B2 (en) | Adaptive network content delivery system | |
| US9390200B2 (en) | Local caching device, system and method for providing content caching service | |
| US20110055386A1 (en) | Network analytics management | |
| US20080072264A1 (en) | Distribution of content on a network | |
| US20140165119A1 (en) | Offline download method, multimedia file download method and system thereof | |
| CN106559677A (en) | The method and device of terminal, caching server and acquisition video slicing | |
| US20140074961A1 (en) | Efficiently Delivering Time-Shifted Media Content via Content Delivery Networks (CDNs) | |
| US11172044B2 (en) | Content based byte-range caching using a dynamically adjusted chunk size | |
| CN109842613A (en) | For providing and the method and apparatus and storage medium of receiving media data | |
| JP2016516323A (en) | Method, device, and system for obtaining streaming media data | |
| US20190190971A1 (en) | Reducing latency in multicast delivery of content | |
| US20200320154A1 (en) | A webpage loading method, webpage loading system and server | |
| CN103813181A (en) | System and method for optimizing video | |
| CN112543357A (en) | Streaming media data transmission method based on DASH protocol | |
| US9866652B2 (en) | Method, apparatus and computer program for providing a data object from a content server to a client device over a radio access network (RAN) | |
| US7908391B1 (en) | Application streaming and network file system optimization via feature popularity | |
| US10187319B1 (en) | Automatic configuration generation for a proxy optimization server for optimizing the delivery of content of a web publisher | |
| CA2914603A1 (en) | Defragmentation of adaptive streaming segment files in a content delivery network | |
| CN103369368B (en) | Video cloud on-demand cache scheduling method supporting multi-code-rate version | |
| US20140149499A1 (en) | Remote request fulfillment and delivery | |
| US11368505B2 (en) | Dynamic variant list modification to achieve bitrate reduction | |
| CN114417055A (en) | Video playing method and device, computer equipment and storage medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FZDE | Discontinued |
Effective date: 20200831 |