Content Delivery Network

Transcription

Content Delivery Network
Content Delivery Network
Overview
May 25, 2010
© 2010 Level 3 Communications, LLC. All Rights Reserved.VenueNet, vyvxInView and First Video are registered service marks of Level 3 Communications,
LLC and/or one of its affiliates in the United States and/or other countries. Level 3 and the Level 3 logo are service marks of Level 3 Communications, LLC
and/or one of its affiliates in the United States and/or other countries with respect to Level 3's VyVx service offerings. Level 3 services are provided by wholly
owned subsidiaries of Level 3 Communications, Inc. Any other service, product or company names recited herein are the trademarks or service marks of their
respective owners.
Confidential & Proprietary – Subject to NDA
Notices
Copyright © 2008 – 2010, Level 3 Communications
All rights reserved. No part of this publication may be reproduced, transmitted, distributed, transcribed, stored in a retrie val system, or
translated into any language, in any form or by any means, electronic, mechanical, or otherwise, without prior written permission from Level 3
Communications.
The technology described herein may be protected by one or more of the following U.S. Patents: 5,978,791, 6,185,598, 6,415,280, 6,275,470,
6,130,890. Additional patents pending worldwide.
Published in the United States of America.
THIS DOCUMENTATION CONSTITUTES PROPRIETARY, CONFIDENTIAL INFORMATION OF LEVEL 3 COMMUNICATIONS, AND MAY NOT BE
DISCLOSED OR USED EXCEPT AS MAY BE PROVIDED IN THE TERMS AND CONDITIONS OF THE LICENSE OR OTHER AGREEMENT
PURSUANT TO WHICH YOU HAVE BEEN AUTHORIZED TO USE THE FOOTPRINT PRODUCT OR TO REVIEW THIS DOCUMENT.
The Level 3 Communications logo and other marks designated with ® are registered service marks, and those designated with SM are service marks
of Level 3 Communications, Inc. and/or its affiliates in the United States and/or other countries. The Level 3 Enhanced Services logo is a service
mark of Level 3 Enhanced Services, LLC in the United States and/or other countries. These marks may be used publicly only with prior permission
of Level 3. Fair use of Level 3‘s marks in advertising and promotion of Level 3 services requires proper acknowledgment. All other trademarks and
service marks referenced in this Site are the property of their respective owners.
All other product and company names mentioned herein may be the trademarks or registered trademarks of their respective owners.
Level 3 Communications
Level 3 Communications, Inc.
1025 Eldorado Boulevard
Broomfield, Colorado 80021
720-888-1000
DOCUMENT revision: 1.0 Edition Date: 5/1/10
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 2
Confidential & Proprietary – Subject to NDA
Table of Contents
Notices .............................................................................................................................................................................. 2
Table of Contents ............................................................................................................................................................. 3
List of Figures ................................................................................................................................................................... 6
CDN Overview .................................................................................................................................................................. 7
Value-Add Capabilities ................................................................................................................................................. 8
Major Services Overview ................................................................................................................................................ 10
Streaming Overview ................................................................................................................................................... 10
Caching Services Overview ....................................................................................................................................... 11
Intelligent Traffic Management (ITM) Overview ......................................................................................................... 12
Origin Storage Overview ............................................................................................................................................ 16
Major Services Operations ............................................................................................................................................. 18
On-Demand Streaming Operations ............................................................................................................................ 18
Live Streaming Operations ......................................................................................................................................... 20
Caching Operations .................................................................................................................................................... 28
Origin Storage Operations.......................................................................................................................................... 35
Content Freshness Features .......................................................................................................................................... 36
Methods of Freshness Control ................................................................................................................................... 36
Refreshing Content in Cache ..................................................................................................................................... 36
Expiration Policies ...................................................................................................................................................... 36
Cache-Control-Header-Override Mode (CCHOMode) ............................................................................................... 37
Background Refresh (BRefresh) ................................................................................................................................ 39
How Content Freshness Works with BRefresh and CCHOMode .............................................................................. 39
ETAG and If-None-Match Support ............................................................................................................................. 40
Query-String-Handling Mode (QSHMode) ................................................................................................................. 40
On-Demand Invalidation............................................................................................................................................. 41
Security Features ............................................................................................................................................................ 45
Overview..................................................................................................................................................................... 45
Proxy Authentication .................................................................................................................................................. 45
Edge Authentication ................................................................................................................................................... 48
Origin Server Security Features ................................................................................................................................. 54
SWF Verification ......................................................................................................................................................... 54
Order of Authentication Checks ................................................................................................................................. 56
Secure Protocols ........................................................................................................................................................ 56
Request and Response Inspection and Manipulation .................................................................................................... 58
HTTP Header Manipulation ........................................................................................................................................ 58
HTTP Status Code Manipulation ................................................................................................................................ 58
Response Body Manipulation .................................................................................................................................... 58
Redirect on Error ........................................................................................................................................................ 58
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 3
Confidential & Proprietary – Subject to NDA
Advanced Path Rewriting ........................................................................................................................................... 59
Override Vary Header ................................................................................................................................................ 59
Alternative Range Headers (URL-based Range Requests) ...................................................................................... 59
X-Forwarded-For Manipulation .................................................................................................................................. 60
Geographic Intelligence.............................................................................................................................................. 60
Performance Features .................................................................................................................................................... 61
Compressed Content Encoding ................................................................................................................................. 61
Foreground/Background Traffic ................................................................................................................................. 62
Extended Library Support (CDXL) ............................................................................................................................. 63
Follow Redirect ........................................................................................................................................................... 66
Large File Delivery ..................................................................................................................................................... 67
China In-Country Delivery .......................................................................................................................................... 67
Streaming Features ........................................................................................................................................................ 68
Dynamic Streaming .................................................................................................................................................... 68
Smooth Streaming...................................................................................................................................................... 68
QuickTime X (iPhone) HTTP Streaming .................................................................................................................... 68
Flash Scrubbing ......................................................................................................................................................... 68
Supported Flash Streaming Protocols ....................................................................................................................... 70
FCSubscribe Support ................................................................................................................................................. 70
Vyvx Broadcast Services ................................................................................................................................................ 71
Level 3 Vyvx Broadcast Services ............................................................................................................................... 71
Terrestrial Service Offerings ...................................................................................................................................... 71
Teleport and Satellite Service Offerings..................................................................................................................... 71
Live Encoding Services .................................................................................................................................................. 72
Key features ............................................................................................................................................................... 72
Management Services .................................................................................................................................................... 74
Level 3 Media Portal................................................................................................................................................... 74
Logging ....................................................................................................................................................................... 75
Download Receipts (Remote Logging) ...................................................................................................................... 76
Professional Services ..................................................................................................................................................... 77
Event Management Services ..................................................................................................................................... 77
Integration Services .................................................................................................................................................... 77
Appendix A:
Using ASX Files .................................................................................................................................... 79
Appendix B:
Firewall Port Access ............................................................................................................................. 80
Appendix C:
Protocol Rollover .................................................................................................................................. 81
Appendix D:
Legacy Flex Token Support .................................................................................................................. 83
Appendix E:
Perl Self-Generated Token Code Sample for Standard Token ............................................................ 84
Appendix F:
Perl Self-Generated Token Code Sample for Standard Token ............................................................ 86
Appendix G:
Flex Token Format ............................................................................................................................... 88
Appendix H:
Standard Token Format........................................................................................................................ 93
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 4
Confidential & Proprietary – Subject to NDA
Appendix I:
Jeroen Wijering (JW) FLV Media Player .............................................................................................. 95
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 5
Confidential & Proprietary – Subject to NDA
List of Figures
Figure 1: Level 3 CDN Services ................................................................................................................... 7
Figure 2: CDN Overview .............................................................................................................................. 8
Figure 3: Example of ITM Routing of Traffic ............................................................................................... 13
Figure 4: ITM Request Flow ....................................................................................................................... 14
Figure 5: Origin Storage Overview ............................................................................................................. 16
Figure 6: How On-Demand Streaming Works ............................................................................................ 18
Figure 7: Windows Media – Live "Pull" Workflow ....................................................................................... 20
Figure 8: One Possible Set Up for Live Flash Media (Multipoint Publishing) .............................................. 21
Figure 9: Flash Media – Live ―Push‖ Workflow ........................................................................................... 22
Figure 10: Extended Aliases ...................................................................................................................... 30
Figure 11: Request Processing – ―5 R‘s‖ Overview .................................................................................... 31
Figure 12: DNS Rendezvous Steps ........................................................................................................... 32
Figure 13: HTTP Cache Control Headers .................................................................................................. 37
Figure 14: Cache-Control Header Directives .............................................................................................. 37
Figure 15: Invalidation Meta-Characters .................................................................................................... 42
Figure 16: Proxy Authentication Using HEAD Requests ............................................................................ 46
Figure 17: Proxy Auth with Alternative Authentication Server..................................................................... 47
Figure 18: How Token Authentication works in Level 3‘s CDN ................................................................... 49
Figure 19: Standard Token Parameters ..................................................................................................... 50
Figure 20: Geo Intelligence Explanation .................................................................................................... 53
Figure 21: SWF Verification Flow ............................................................................................................... 55
Figure 22: Footprint/Secure ....................................................................................................................... 57
Figure 23: Scenario: Content Served from Edge (―Popular‖ Scenario) ....................................................... 64
Figure 24: Object Popularity and Thresholds ............................................................................................. 66
Figure 25: Flash Scrubbing ........................................................................................................................ 70
Figure 26: Broadcast Encoding to Streaming ............................................................................................. 72
Figure 27: Portal Dashboard ...................................................................................................................... 74
Figure 28: Log Processing ......................................................................................................................... 75
Figure 29: Comparison of Flex and Standard Tokens ................................................................................ 83
Figure 30: Excerpt from JW Setup Wizard ................................................................................................. 95
Figure 31: Output of JW Setup Wizard ....................................................................................................... 96
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 6
Confidential & Proprietary – Subject to NDA
CDN Overview
Level 3 is changing the business of content delivery as the first carrier to combine the advantages of an
industry-leading Internet backbone with a sophisticated and proven Content Delivery Network (CDN)
platform. This unique combination allows Level 3 to connect our customers with the benefits of our highperformance, highly scalable service – and deliver those services in a simplistic way. Our full suite of CDN
service offerings also allows our users the unique flexibility of supporting delivery at every step in the
content lifecycle, from ingest at the point of generation to delivery to end users.
The Level 3 CDN is powered by patented content delivery technology. It has extensive capabilities
developed by deploying and operating the world‘s first content delivery network. Our CDN services
leverage both the Level 3 IP transport network and our global peering relationships. This allows us to
distribute online content easily, rapidly, and reliably to end users from an international network of servers
located in strategic locations at the edge of the Internet near them.
Level 3‘s full suite of scalable CDN services gives you access to the customizable services you need from
a single, trusted provider. Level 3 offers more than a one-size-fits-all solution. By leveraging our CDN
services and industry-leading IP backbone, you can avoid costly capital investments and take advantage of
cost efficiencies. We can connect you with an end-to-end content delivery solution that supports your
unique business needs from content creation to consumption.
Vyvx
Content
Provider
g
din
co
En
End Users
Level 3 Caching and
Streaming CDN
Level 3
Storage
Level 3
Storage
Mobile
End Users
Customer
Origin
End Users
Figure 1: Level 3 CDN Services
Why choose the Level 3 Content Delivery Network?
•
Proactive Scalability Designed for Reduced Delivery Costs: Our CDN services proactively scale
edgeserver resources to meet real-time usage demands. This flexible capacity model is engineered to
enable greater operational cost-efficiencies and improve website and video delivery performance
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 7
Confidential & Proprietary – Subject to NDA
•
Flexible Portfolio: Since we have a comprehensive portfolio of CDN services, we can focus on meeting
your needs, not pushing just a single offering. In addition, we give you the flexibility to change your
network services as your needs grow
•
Targeted Solutions: We offer unique solutions that leverage caching, streaming, and storage to address
the needs of distinct segments. These solutions enable you to comfortably rely on us to deliver your
entire library, including popular and long-tail content, as well as flash traffic events
•
Network Performance that can help drive content monetization: Utilizing the global reach and
connectivity of an industry-leading IP backbone, your end users can receive the high-quality web
experience they expect. This can help improve customer loyalty, enhance brand equity, and drive the
monetization of your online assets
CDN Top Level Architecture
CDXL
Client
Edgeservers
Origin Storage or
Customer Origin
Parent Cache
Figure 2: CDN Overview
Value-Add Capabilities
The Caching and Streaming platform includes several critical features including the following:
•
Security: Features such as token-based authentication, download receipts, and referrer and IP blocking
allow customers to secure their content before it is delivered
•
Secure Delivery: This approach offloads computationally intensive processes of securing content with
SSL certificates to the CDN. Objects are transferred from the customer origin server and delivered,
encrypted, to end users. This prevents the display of ―page contains both secured and unsecured
items‖ pop-up for end-users. For FMS streaming, Level 3 supports RTMPE streaming of encrypted
assets
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 8
Confidential & Proprietary – Subject to NDA
•
Targeted Delivery: Delivery support can be targeted based on country, metro and/or network settings of
the end-user
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 9
Confidential & Proprietary – Subject to NDA
Major Services Overview
Streaming Overview
The Level 3SM Media Delivery Platform delivers audio and video content from an expansive global network
with edge delivery. It includes the expertise, technology, and applications required to support end-to-end
delivery for both live and on-demand streaming as well as ―always on‖ simulcasts.
Level 3® Streaming supports the major formats of today. It is an authorized premier partner for Adobe
Flash®, Apple QuickTime®, Microsoft Silverlight®, and Microsoft Windows Media. We also provide
optimized delivery of the HD-quality, adaptive streaming technology from Move Networks.
Both native and HTTP streaming formats are supported.
Through its integration with Level 3SM Vyvx® signal acquisition and web encoding solutions, the streaming
platform provides a simplified, single source offering for delivery of all types. That delivery includes full
reliability through a 100 percent uptime SLA and no single points of failure.
Streaming Types Supported
The Level 3 Media Delivery Platform includes two primary forms of streaming delivery:
•
Level 3® Live Online Broadcast Streaming: Delivers high-quality award shows, sporting events or
television broadcasts in event or continuous, always-on environments. Primary product components
include video delivery via Flash, Smooth Streaming, Windows Media, QuickTime (HTTP), or Move as
well as token authentication, geo intelligence, and reporting and management from the Level 3SM Media
Portal
•
Level 3® Video On-Demand Streaming: Delivers the pre-recorded playback of content including digital
music, music videos, movie and game trailers, and television programs
Multiple Service Options
•
Live Event: A single live event with SD and HD streaming quality
•
Live Event Series: A series of live events with multiple days or sessions
•
Always Live: Continuous streaming of an ongoing broadcast
•
On-Demand : Pre-recorded content, streamed and available online any time
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 10
Confidential & Proprietary – Subject to NDA
Caching Services Overview
The Level 3® Caching and Download Services are built to handle audiences of any size. The Level 3
Caching and Download platform supports multiple, common standards-based models for delivering
content. With extensive, global reach and capacity, the platform supports thousands of servers and
individual customers.
The Level 3 Caching and Download platform guarantees high quality performance and reliability with third
party SLA monitoring. The large suite of cacheability features ensures a high origin offload. For maximum
customer datacenter offload, customers can use Level 3SM Origin Storage.
Supported Caching Services
Object Delivery
Deliver popular file content, such as video, games, multimedia, patches, and file downloads to large
audiences. Objects can be tagged for control over delivery, authentication, and content freshness.
Wholesite Delivery
Level 3® Wholesite Delivery delivers entire pages as well as each page element, including HTML, CSS,
JavaScript, images, collateral downloads, etc. The result is high-performance delivery of the whole website,
and maximum protection against flash crowds. No modifications to the origin server are required, and the
service can be implemented without rewriting HTML.
Level 3® Electronic Software Delivery
Software downloads are a subcategory of object delivery for the purposes of sending software drivers,
executables, documentation, for example, to end users. Level 3 supports byte range requests to allow
large files to be requested efficiently.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 11
Confidential & Proprietary – Subject to NDA
Intelligent Traffic Management (ITM) Overview
The Level 3 Communications Intelligent Traffic Management (ITM) is a powerful DNS-based service that
enables companies to route wide-area traffic transparently to any publicly accessible IP application,
website, or CDN. Routing decisions are made based on an ITM policy (that leverages network data)
configured by customers for optimal performance and availability. ITM is a flexible, easy to use service with
automatic failover, global load balancing, and geo-intelligence capabilities built-in to the platform. The
implementation of ITM is simple and it is controlled by the Level 3 CDN Media Portal for access and
security.
The service seamlessly interfaces with existing local and global load-balancing solutions, allowing
customers to reduce the cost of deploying, operating, and maintaining their own Internet traffic
management systems.
ITM allows you to maximize your online reliability and performance, as seen by end users, regardless of
whether your current Internet presence consists of a single server or a dozen globally distributed data
centers, each housing multiple machines behind a virtual IP address.
Directing Traffic with ITM
With ITM, customers can configure a static ―traffic distribution‖ policy by specifying the percentage of traffic
to be directed to each group of application servers. If needed, ―overflow‖ policies can be defined to handle
spillover traffic or all traffic in the event of total application failure—all managed from Level 3‘s easy-to-use,
secure portal for near-instant implementation.
Additionally, users can specify precisely how end-user traffic is directed to applications (HTTP, FTP, etc.)
at your data centers and servers. ITM can send a given percentage of traffic to each of your servers (for
global load balancing), send end users to the best server for that end user (avoiding unreliable or
unreachable servers), and gracefully send traffic to secondary servers or a third party content delivery
network (such as the Level 3 CDN) during overwhelming flash crowds. All of these abilities are easily and
swiftly configured through a secure, web interface and no hardware is required at your sites - you simply
subscribe to the ITM service.
Typical DNS configurations provide a static set of five or fewer authoritative name servers returning, for
example, two IP addresses in round-robin fashion for your two web servers. ITM provides more reliable
and lower latency name resolution than these standard configurations because ITM has many more name
servers. The loss of connectivity to any one name server affects fewer end users, and ITM name servers
are closer, in a network proximity sense, to end users because of their redundant, global presence –
providing better service to end-user at any given time.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 12
Confidential & Proprietary – Subject to NDA
End User
End User
End User
End User
ITM Server
ITM Server
ITM Server
Europe Traffic
US Traffic
50%
application
NY
30%
20%
application
LA
80%
application
DC
application
UK
overflow
20%
application
FR
overflow
Level 3 CDN
Figure 3: Example of ITM Routing of Traffic
Typical Flow of a Client URL Request
When the client's browser makes a request for a resource, the following sequence of events occurs:
1. The browser first queries its DNS resolver for a subscriber domain name.
2. The DNS resolver queries a nearby ITM name server for the domain name.
3. The ITM name server follows the subscriber‘s specified policies to return the appropriate subscriber
IP address to the end user‘s DNS resolver.
4. The DNS resolver passes the information on to the browser.
5. The end user communicates with the best subscriber server, according to the customer-selected
policies.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 13
Confidential & Proprietary – Subject to NDA
Figure 4: ITM Request Flow
Available ITM Configuration Options
Automatic Failover Configuration
ITM name resolution decisions are based on the availability of the customer server, as determined
independently by the global network of ITM name servers. If any of these servers are unavailable, ITM
does not return their associated IP address until the server starts responding again. Meanwhile, traffic is
sent to the designated alternate servers.
GeoIntelligence Configuration
ITM name resolution decisions are based on the IP address of the end user's resolver. The mapping, from
IP address to geographic region, allows rules based on the continent, country, US state, or time zone of the
resolver IP address.
For example, traffic can be split between customer datacenters in North America and Europe, based on the
location of the end user. If the end user‘s IP address is within North America, the request may be directed
to the North America origin servers (San Jose, for example); otherwise, the request is directed to European
origin servers (London, for example).
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 14
Confidential & Proprietary – Subject to NDA
Global Load Balancing Configuration
ITM name resolution decisions are based on customer-specified ratios of traffic sent to each server.
Typically the ratios are chosen to reflect the capacity at each server.
For example, if a server in San Francisco can handle twice the traffic of the San Jose server, ITM can
direct two-thirds of the traffic to San Francisco.
ITM can dynamically update the ratio by polling the server‘s load at a set location.
Customizable Configuration
More complex traffic management schemes can be implemented as well. See your sales engineer for a
more in-depth discussion.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 15
Confidential & Proprietary – Subject to NDA
Origin Storage Overview
Level 3 Origin Storage service is the secure and affordable storage and management solution for your
Internet content. And because our storage solution is connected directly to our Content Delivery Network
(CDN), you have peace of mind that your content is delivered to your end-users when they request it. We
have designed our storage systems to provide the highest level of protection for your content and
availability for Level 3 HTTP Delivery or Level 3 Streaming services.
Features
•
Origin Offload: Upload content to Level 3‘s Origin Storage which then feeds the CDN edge delivery
network without overloading the customer‘s infrastructure. This option is particularly useful for
customers with a set of popular content and an interest in outsourcing their origin infrastructure. By
combining multiple, geographically diverse locations with redundant high-speed connectivity to our
industry-leading CDN, latency is minimized
•
In-Depth Reporting: The Level 3 Portal provides access to view daily storage usage and peak storage
amounts over time. Depending on the configuration of the customer, the portal can also provide storage
usage for ―child accounts‖ so that usage for these accounts can be tracked and billed appropriately
End
User
Customer
ITM
F1
Content
Delivery
Level3
Edgeserver
Content Management:
myco.ingest.level3.com
Level3
Parent
Servers
Level3
Parent
Servers
Content Replication
(Primary to Secondary)
F1
Level3 ―Primary‖
Origin Storage
F1
Level 3 ―Secondary‖
Origin Storage
Figure 5: Origin Storage Overview
Value Add Capabilities
The Origin Storage platform is built on several important features including the following:
•
Engineered for Security and Fault Tolerance: Highly-Availability Hardware, redundant storage servers
in every location, RAID, mirroring, redundant network interfaces and paths to the Internet, multiple
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 16
Confidential & Proprietary – Subject to NDA
power supplies for every piece of hardware, spare disks at every location and the latest firewall
technology all combine to provide a 100 percent SLA guarantees on content protection
•
Massively Scalable Storage Capacity: Over 1 PB of global storage provides the scalability necessary
for the largest content libraries today. Level 3 has Origin Storage space ready when you need it
•
Flexible Asset Management: Standard methods of content upload and management include FTP,
Secure FTP, FTP-S, SCP, and RSYNC command sets
•
Origin Offload with Global Coverage: Our Origin Storage super nodes are strategically positioned
around the world and directly attached to dedicated serving clusters and the Level 3 Network through
high-speed connections
•
High Availability Content: Content is automatically copied and stored in multiple locations. As soon as a
piece of content is uploaded to a single location, it is available to the CDN
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 17
Confidential & Proprietary – Subject to NDA
Major Services Operations
On-Demand Streaming Operations
Overview
Level 3‘s On-Demand streaming platform also enables content to be pulled into its CDN network from
Level 3‘s own internal Origin Storage Platform, as well as any external origin storage sources.
Level 3‘s CDN actively pulls the content into its content delivery platform from an origin storage source
(such as an HTTP or HTTPS Web server) when content requests are made.
1. The end user requests an On-Demand streaming asset via a customer-specific hostname. End users
are directed to the best performing edgeserver on the Level 3 Network for that particular user.
2. The edgeserver determines if it has the content; if it does, it immediately streams the content. If the
Level 3 edgeserver does not have the asset requested, the server fetches the content from either the
customer‘s web server or the Level 3 Origin Storage repository and populates the edge cache.
3. The Level 3 edgeserver streams the content.
End User
Request
HTTP Get Request
Get http://origin.example.com/video.wmv
3
Customer
Web Server
1
2
HTTP Get from Origin Storage
Get http://example.level3.com/video.wmv
Level3
Streaming
Network
Level 3
Origin
Storage
Figure 6: How On-Demand Streaming Works
Delivering Content thru the On-Demand Streaming platform
Delivering on-demand content through Level 3‘s CDN requires that end users be provided with the URI
path that leads them to the Level 3 edgeservers.
Creating URLs for On-Demand Streams
On-Demand stream links can be created using a simple construct:
Protocol://Hostname/Level 3_SubscriberID/ContentLocation/Filename
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 18
Confidential & Proprietary – Subject to NDA
Protocol is the protocol used in delivering content, which is typically associated with the format type of
the content, such as: (1) mms and rtsp for Windows Media; and (2) rtmp, rtmpe, and rtmpt for Flash.
Hostname can be an external or generated from a Level 3 sub-domain (e.g., f35.c.footprint.net).
Level 3 assigns two separate hostnames to direct the end user to the best performing edgeserver on the
Level 3 Network for that particular user.
Level 3_SusbcriberID is a unique billing identifier provided by Level 3 and used for reporting and
billing purposes.
ContentLocation is location where the file is located on a customer HTTP web server and must be used
in the constructed streaming URI as it tells the edgeserver which folder to retrieve the content file from. If
the content is located in the root directory, there should not be any path in the streaming URL.
Filename is the name of the streaming asset that is to be played.
Since any Hostname and ContentLocation can be embedded to access content from an external
source, Level 3 may not have the content in its local storage, so a path is needed to get to the content from
the external source.
It‘s not necessary to embed the origin Hostname in the URL as that information is contained in Level 3‘s
streaming configuration. If the edgeserver does not have the content, Level 3 fetches the content from the
external origin web server using the DirectoryPath provided in the end-user URL.
Windows example
rtsp://xyzmedia.fplive.net/xyzmedia/sampleVideo.wmv
Adobe Flash example
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/sampleVideo.flv
rtmpe://xyzmedia.f35.c.footprint.net/xyzmedia/rtmpe/sampleVideo.flv
NOTE: For Flash On-Demand content, /rtmp and /rtmpe folders should be created within the directory
from where the content files are being managed from, as implied above.
A vanity Hostname can be used (e.g., video.example.com) via a CNAME delegation:
rtsp://video.example.com/xyzmedia/sampleVideo.wmv
And it might forward to:
http://origin.example.com/xyzmedia/sampleVideo.wmv
See the Streaming Features section for more details.
Removing Content from the On-Demand Streaming Platform
Deleting files from the cache can be accomplished by:
•
Applying cache control headers as a means to control when content should be expired off of the
streaming platform. The edgeservers honor cache control header values as long as they are delineated
in seconds. If no cache control header values are present, Level 3 applies a cache control header of 1
week
•
Submitting a request through Level 3‘s Media Portal to invalidate the CDN of particular content
•
Submitting a request to Level 3‘s customer support team to delete particular content files from the
platform
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 19
Confidential & Proprietary – Subject to NDA
Live Streaming Operations
Getting Live broadcasts into the Live Streaming Platform
Level 3‘s Live Streaming platform provides support for both Microsoft‘s Windows Media and Adobe Flash
formats. Although Level 3 can provide signal acquisition and encoding services through Level 3 Vyvx
services as part of a larger holistic solution, the scope of this chapter deals strictly with the CDN live
streaming services capability.
Windows Media
Currently, Live WMS signal acquisition is done only via a pull model from encoders that output live streams
supporting the Windows Media format and protocols. This necessitates Level 3 having direct access to the
WME machine over the Internet. This includes access through any firewall to actively pull the live stream
onto Level 3‘s CDN.
In order to foster a secured environment, Level 3 can provide the IP addresses of its publishing points in
order to restrict access.
How a “pull” of Windows Media live stream works in Level 3’s CDN
Level 3 Secondary
Publishing Point
End User
Request
Customer
Encoder
Backup
Stream
1
4
2
3
Edgeserver subscribes to live feed
Level3 CDN
Level 3 Primary
Publishing Point
Figure 7: Windows Media – Live "Pull" Workflow
1. Level 3 Acquires Live Signal Feed. Level 3 must initiate the live stream pull from the Windows
Media Encoder via a publicly accessible IP address by way of a primary Publishing Point server. In
the case where a backup stream is used, Level 3 also pulls the stream from an alternate location.
Level 3 strongly recommends the use of a backup encoder and stream source to mitigate possible
issues with the signal acquisition. Level 3 provides a streaming link where end users are able to
access the stream through the CDN.
2. End User Requests Live Stream. When an end user clicks on the Level 3 stream link, the end user
is directed to the best performing Level 3 edgeserver for that particular end user to receive that
stream.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 20
Confidential & Proprietary – Subject to NDA
3. Level 3 Streaming Server Subscribes to Live Feed. If the Level 3 edgeserver is not already
subscribed to the live feed, it reaches out to the Level 3 Primary and/or Secondary Publishing Point.
4. Deliver Live Stream. Once the edgeserver has subscribed to the live feed, the edgeserver delivers
the stream to the end user via the requested stream protocol. The streaming server automatically
cycles through the various protocols until it is able to negotiate a protocol acceptable to the client.
Adobe Flash
Live FMS signal acquisition can be done via:
•
―Pull‖ model in which a live Flash stream is pulled onto Level 3‘s publishing points from an external
Flash Media Server
•
―Push‖ model in which live Flash streams are push to Level 3‘s publishing points from external
encoders that output live streams supporting the Flash media format and protocols
“Pull” of a Flash live stream (Multipoint Publishing)
Pulling live FMS streams onto Level 3‘s edgeservers from external Flash Media Servers is also known as
Multipoint Publishing. Under this scenario, the Flash Media Server is used as a local Flash Publishing
Point.
For this ―pull‖ model, Level 3 must have direct access to the external Flash Media Server over the Internet.
This includes access through any firewall to actively pull the live stream onto Level 3‘s CDN.
While specific server-side code cannot be deployed onto the Level 3‘s Flash Media Servers nor data
messages injected into an outbound stream, Multipoint Publishing enables custom information to be
inserted into a live Flash data feed, such as ads, tracking beacons, or SWF interactivity.
How a “pull” of live Flash streams works in Level 3’s CDN
Customer
or Level3
Backup
Flash
Media
Encoder
1
2
Level 3
Secondary
Publishing
Point
End User
Request
Customer
or Level3
Flash
Media
Encoder
Backup
Stream
5
3
4
Level3 CDN
2
Level3
Publishing
Point
Figure 8: One Possible Set Up for Live Flash Media (Multipoint Publishing)
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 21
Confidential & Proprietary – Subject to NDA
1. Live feeds are encoded to Flash format. The live signal feed is encoded by a Flash-based encoder
and then directed to Flash Media Servers outside of Level 3‘s CDN. It is highly recommended for
customers that a backup encoder also be used.
2. Level 3 Acquires the Live Stream. Level 3‘s Publishing Point Servers acquire the live Flash stream
by initiating a pull from the external Flash Media Servers. Where there is a primary and a backup
feed, Level 3 uses disparate server locations to ensure diversity. Level 3 provides a URL that can be
embedded into a SWF file from which end users retrieve the live stream feed from the Level 3‘s CDN.
3. End User Requests Live Flash Stream. End users are directed to the closest available Level 3
edge Flash streaming server by way of the Level 3 provided stream link.
4. Level 3 Flash Server Subscribes to Live Feed. The Level 3 edgeserver subscribes to the Level 3
FMS Publishing Point server used to acquire the live signal feed. If the edgeserver is already
subscribed to the live feed, it does not have to re-subscribe to the live feed.
5. Deliver the Live Flash Stream. Once Level 3‘s Flash edgeservers receive enough information to fill
its buffer, it in turn begins playback to the end user through the Flash player on their computer.
“Push” of a Flash live stream (Encoder Publishing)
Level 3 supports the ability to ―push‖ live streams from a Flash based encoder directly to Level 3 Flash
Media Servers (Publishing Points) without the need for external/intermediate Flash Media Servers. In this
―push‖ model – metadata can only be injected in the live Flash streams via the encoder.
How a “push” of Flash live streams works in Level 3’s CDN
Figure 9: Flash Media – Live “Push” Workflow
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 22
Confidential & Proprietary – Subject to NDA
1. The encoded live stream is pushed to Level 3’s Flash Publishing Point. The encoded live stream
is pushed from the Flash encoder to a Level 3 Flash Publishing Point. Level 3 provides a URL that
can be embedded into the Flash player distributed to end users.
2. End User Requests Live Flash Stream. End users are directed to the closest available Level 3
edge Flash streaming server by way of the provided Level 3 stream link.
3. Level 3 Flash Server Subscribes to Live Feed. The Level 3 edge Flash Media Server subscribes to
the Level 3 FMS Publishing Point server used to acquire the live signal feed. If the edgeserver is
already subscribed to the live feed, it does not have to re-subscribe to the live feed.
4. Deliver the Live Flash Stream. Once the Level 3 Flash edgeserver receives enough information to
fill its buffer, it in turn begins playback to the end user within the Flash player on their computer.
Delivering Live broadcasts through the Live Streaming platform
Delivering live streams through Level 3‘s CDN requires that end users be provided with the URI path that
leads them to the Level 3 media servers.
Creating URL’s for Live Streams
Live stream links can be created using a simple construct as follows:
Protocol://Hostname/Level 3_SubscriberID/StreamFolder/StreamName
NOTE: For Flash Live streams, /rtmp and /rtmpe folders should be created within the directory from
where these lives streams are being managed from, as indicated above.
Protocol is the protocol used in delivering content, which is typically associated with the format type of
the content, such as: (1) mms and rtsp for Windows Media; (2) rtmp and rtmpe for Flash; and (3) http
for QuickTime and MS-Siliverlight, and so forth.
Hostname can be an external or Level 3 generated sub-domain from the f35.c.footprint.net
domain. When using both Windows Media and Flash, Level 3 will assigns two separate hostnames, which
are used to direct end user to the closest streaming media server from which to be served content.
Level 3_SusbcriberID is a unique billing identifier provided by Level 3 and used for reporting and
billing purposes.
StreamFolder is the name of the folder from which live streams are managed.
StreamName is the name of the stream carrying a specific live feed. StreamName is typically bound to a
specific (ingress) Publishing Point.
Windows example
mms://xyzmedia.fplive.net/xyzmedia/liveStreams/livestream01
Adobe Flash example
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/liveStreams/livestream02
rtmpe://xyzmedia.f35.c.footprint.net/xyzmedia/rtmpe/liveStreams/livestream03
Using URLs for On-Demand and Live Streaming
The following description provides an outline of the different popular media technologies that can be used
to integrate streaming links within the context of a web (portal) site.
Windows Media – Stand Alone Player
Windows Media Player can directly play back Level 3 streaming links. Most often, this is achieved using an
Advanced Stream Redirector (ASX) file. See Appendix A: for more details on ASX files.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 23
Confidential & Proprietary – Subject to NDA
Using ASX files provides some flexibility in terms of the end user experience. Not only can the media file
and location be specified, but also delayed start/end times can be defined as well as the creation of library
play lists and banner links.
What is the end user experience like?
When an end user clicks on an ASX file, it triggers the browser to launch the media player associated with
the file extension type. Most often, this is the Windows Media Player. When the stream link is played back
with the external media player, end users are not bound to a specific Web page; however, the ability to
customize the player experience/appearance is no longer available.
Windows Media – Embedding Links
Another popular option for using streaming links is to directly embed the mms or rtsp link into an HTML
Web page. Using this method of playback requires that end users‘ web browsers be provided with helper
code so that the web browser knows what type of media player should be used to play back the file.
What is the end user experience like?
When an end user clicks on an embedded stream link, the end user‘s browser launches a browser helper
object that launches an embedded Windows Media Player. Some implementations prefer using embedded
streaming links as it necessitates the end user to stay on a designated web page in order to continue to
view the asset. If the end user navigates away from the web page, the stream stops playing, unlike a
stream link that is played directly in an external player. Other reasons to embed a stream link are to gain
greater control of the end user experience (such as customizing the player skin) and control over what
Media Player attributes are available to the end user.
Adobe Flash
Adobe‘s Flash Media Server works much like other media services, allowing a user to connect and play a
video. One key difference is how the end user connects. With services like Windows Media, a player is
usually available on the end user's computer (i.e., Windows Media Player); however, for Flash a default
player does not exist. To solve this deficiency, companies delivering Flash content to their end users
usually provide a player embedded in a web page. This typically requires end users to download a Flash
plug-in to allow their web browser to play Flash files, such as content files with the .FLV or .SWF extension.
The Adobe's site contains a useful Flash video guide:
http://www.adobe.com/devnet/flash/articles/video_guide_02.html
While Level 3 currently does not provide a default Flash player, several stand-alone players on the market
can be utilized to test Flash streams, such as Applian Technologies‘ Applian FLV Player (or the GNU
Gnash project (. Level 3 makes no warranties and no endorsement on any specific FLV player technology.
Adobe Flash Helper Directives – Format Type
Level 3‘s Flash Media service assumes that a streamed Flash file is in some form of an .flv file;
therefore, it is not necessary to specify the .flv format type in the stream path if the asset is an .flv file
type.
However, depending on how a Flash player is developed, the .flv file extension may need to be denoted,
but the streaming URL does not need to include an .flv helper directive.
When dealing with H.264 encoded (.mp4 and its variants) or .mp3 content, it is necessary tell the Flash
Media Server that it is dealing with a content item other than an .flv supported file. Thus, it is necessary
to insert a helper file in the URI path immediately before the file asset name.
In the case of Multipoint Publishing for Live streaming, the helper file is not considered part of the origin
path and is extrapolated at the edge Flash Media Server before any backhand pass to an encoder or a
Flash Media Server, so it is not necessary to modify the actual file asset name or directory structure.
The helper directives are expressed in any one of the following supported file formats: .flv, .mp3, or
.mp4.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 24
Confidential & Proprietary – Subject to NDA
Again, the default format if unspecified is .flv so it‘s not necessary to include the .flv file extension in
the URI path.
Below are examples of the application of the helper directive inserted before the file name for the streaming
URL submitted into the SWF container:
On-Demand Streaming Examples
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/mp4:sampleSDvideo.mov
rtmp//xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/mp4:sampleHDvideo.mp4
rtmpe://xyzmedia.f35.c.footprint.net/xyzmedia/rtmpe/mp3:sampleAudio.mp3
Live Streaming Examples
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/mp4:sampleSDFeed.mov
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/mp4:sampleHDFeed.mp4
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/mp3:sampleAudio.mp3
It is a best practice to have the file extension and file type directive in the URL. This is to ensure the CDN
platform knows which asset to retrieve from the publishing point server for streaming assets with the same
name.
The request to the publishing point makes use the of file extension listed in the URL. If there is a format
type directive listed but no file extension, the edge Flash Media Server assumes that the file extension is
that of the helper directive in the URL path. If the format type directive is not present and your content is
H.264 encoded or .mp3 encoded, the file may fail to play.
Typically, the flash streaming file would be embedded within an Action Script. Below is a basic sample
Action Script illustrating how the Level 3 On-Demand Flash stream links would be incorporated into a Flash
player.
1.
2.
3.
4.
5.
var nc:NetConnection = new NetConnection();
nc.connect("rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams");
var ns:NetStream = new NetStream(nc);
myVideo.attachVideo(ns);
ns.play("liveStreamName.flv");
Using an embedded Flash player
Another common way to leverage a Flash stream is through an embedded player within an HTML page.
Calling the external RTMP stream can be accomplished by leveraging the flashvars parameter where
the RTMP link is passed in as a parameter to the SWF player.
The following describes how to incorporate a Level 3 Flash streaming link into an embedded player using
an embedded object call.
Calling an external stream object into an embedded object call requires three key elements:
1. SWF player
2. Location of live .flv file
3. The .flv live stream file name
SWF Player
Level 3 does not provide a Flash player. The customer must provide their own flash player/container. As
the SWF player is an HTTP binary, the delivery of the player is not inherently included in the Level 3 Flash
streaming service. If you need assistance in obtaining a Flash player, please contact your Level 3 Sales
Engineer. The player can be delivered via the Level 3 caching service under a separate contract. To call
the player, the source path must be provided. The URL may be a relative link to the base page, or it may
be the fully qualified URL.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 25
Confidential & Proprietary – Subject to NDA
Location of the FLV File
The .flv file location is the RTMP link that is comprised of the Level 3 streaming hostname as well as any
directory path information leading up to the file. It is not necessary to include the trailing slash in the path
parameters. Most SFW players automatically add the trailing slash.
FLV File Name
The .flv file name is the name of the asset that is to be called by the player. The file name should not
include the .flv extension name.
Sample Embedded Flash Player Code
<html>
<head></head>
<title>Level 3 RTMP Streaming Test</title>
<body>
<embed src="http://www.jeroenwijering.com/embed/mediaplayer.swf"
width="320"
height="260"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="height=260&width=320&file=rtmp://xyzmedia.f35.c.footprint.net/xyzmed
ia/liveStreams&id=liveStreamName"/>
</body>
</html>
In the example above, the three critical components are as follows:
src (Flash Player):
http://www.jeroenwijering.com/embed/mediaplayer.swf
file (Location):
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams
id:
liveStreamName
The sample embedded Flash code above referencing the JW FLV Media Player is only for demonstration
purposes and is neither an endorsement nor should be considered a commercial license to use the Jeroen
Wijering player. See Jeroen Wijering (JW) FLV Media Player.
Vanity Streaming Hostnames
Through ITM and BDS (see below), Level 3 uses DNS to provide global load-balancing across the CDN.
These DNS-based systems make real-time decisions on which available streaming server is the best for a
particular end user, including the Level 3 streaming hostnames. Because of the DNS CNAME abstraction
from using actual IP addresses, Level 3 can efficiency add and remove streaming servers into the platform
without the customer having to make any modifications to their streaming links.
Some customers may want to obfuscate Level 3‘s delivering their streams. In such instances, customers
can create their own vanity streaming hostnames and then CNAME that customer hostname to the Level 3
provided hostname. For example:
video.example.com CNAME 1d examplewms.fplive.net
When using a vanity hostname, the customer still needs to use the Content_Location directory path
when constructing their URIs; however, the double CNAME effectively hides Level 3‘s delivery of the
streams. The media player only displays the customer‘s vanity hostname and not display the CNAMEd
hostname to *.fplive.net back to the media player.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 26
Confidential & Proprietary – Subject to NDA
NOTE: if an end user were to query the vanity hostname using DIG, the fplive.net domain is returned in the
answer as the name server chases the CNAME in order to return an answer to the end user. Level 3
recommends that customers using their own vanity hostnames use a TTL in their DNS entry of at least 1
day to minimize DNS lookup times for the end user.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 27
Confidential & Proprietary – Subject to NDA
Caching Operations
Caching Basics and Terminology
In order to put a website, application, or object-delivering hostname on the Level 3 network, a customer
should have:
1. A Supername – The Supername is a special designated customer hostname that the customer uses
to direct traffic to the Level 3 CDN, e.g., cdn.example.com, www.example.com.
2. An origin server – The origin server refers to the web servers which host content to be delivered
through the CDN. The customer can use his own servers or use Level 3 Origin Storage. Resources
are retrieved from the origin using an on-demand pull mechanism by the edgeservers to fill the cache
and respond to requests. In order to contact the origin, the CDN needs to know the origin hostname,
port, and protocol, e.g., HTTP.
3. A customer account and configuration – The CDN uses the configuration to determine how to
deliver the content, how long content is fresh, which origin server to use, etc. Registering the
Supername in the system allows the CDN to accept end user requests for content.
The customer account must include at least one CDN Property configured on the network. The property is
the specific identifier within the Level 3 CDN network. Each property has a unique identifier (Property ID)
and specifies:
•
The hostname of the origin (fully-qualified domain name)
•
The port number used by the origin
•
The Host: header value to use when contacting the origin
•
The protocol used by the origin (HTTP, HTTPS, or FTP)
•
The Supername(s) used to retrieve the content from the CDN
The property is the basic building block for content delivery policy. Content is stored in cache on a per
property basis.
It is possible to have multiple properties defined for each origin. Doing so allows the same content from the
same physical origin servers to be served in different ways, using different configuration settings, and
allows real-time reports of bandwidth served on behalf of the origin server to be reported on a more
granular level.
Configuring Customer Hostnames
The Level 3 CDN works through DNS to direct end user requests for customer properties onto its CDN.
The CDN uses a method, DNS Rendezvous, to direct these requests to the best content server in the
Level 3 CDN network through the use of previously created domain name server (DNS) entries. To provide
the optimal response to each end user, DNS Rendezvous uses the Best Distributor Selection (BDS)
algorithm to select the best-performing edgeserver for delivery of the customer's content to that specific
end user. The Level 3 name server that receives the DNS query weighs in factors such as relative load on
the CDN servers, network distance, and overall state of the Internet to determine the best edgeserver to
serve a client's request.
To implement this, typically, a CDN Supername is configured in a customer's DNS as a CNAME record
pointing to a canonical name assigned to the customer in the *.c.footprint.net namespace controlled by
Level 3 name servers. This canonical name is typically referred to simply as the "CNAME‖. The standard
CNAME format is cdn.<customer-name>.com.c.footprint.net. (Other Level 3 subdomains and domains may
be used for different services.) This might appear in a dig or nslookup as:
cdn.example.com.
86400 IN
© 2010 Level 3 Communications, LLC. All Rights Reserved.
CNAME cdn.example.com.c.footprint.net.
Page 28
Confidential & Proprietary – Subject to NDA
During normal operations, the use of the CNAME is completely transparent to the end user. The browser
only has to use the Supername because the CNAME is hidden.
Each Supername must be registered on the network with the appropriate origin server, which enables it to
deliver traffic, even if it just points to an existing CNAME. If a customer were to CNAME one of their
hostnames to Level 3 (directly or indirectly) without the appropriate configuration, the Level 3 CDN would
not be able to deliver the traffic. The CDN is not able to recognize the value of the Host: header on an
incoming request as a valid Supername, resulting in a 404 error being sent to the end user.
A Supername uniquely identifies a property; however, a property may have multiple CDN Supernames
associated with it. When a property has multiple Supernames, one of them carries special meaning and is
being referred to as the Primary Alias. All other Supernames are referred to as Secondary Aliases. The
most important function of the Primary Alias is being part of the cache key – i.e. resources are stored in
cache under the Primary Alias, this prevents double caching. Also, the Primary Alias is used to represent
the property in the Media Portal. Customers may select which Supername they want to see as their
Primary Alias when the property is being configured. It is not recommended to change the Primary Alias
after a property starts delivering production traffic. Any changes to the Primary Alias have the same effect
as an invalidation for all cached content for the property because the cache key is built from the Primary
Alias.
Extended Aliases
There are 2 different styles of CDN Supernames:
1. The Simple Alias style Supername is just a FQDN, i.e., a hostname, such as "cdn.example.com".
2. The Extended Alias style Supername is a hostname followed by the first directory element of the
path of a URL, such as "cdn.example.com/dir".
With the Extended Alias style, the entire string "cdn.example.com/dir" is used to lookup the Property and
therefore must be unique across the network. Both Primary and Secondary Aliases can use the Extended
Alias style. The benefits of Extended Aliases include:
•
Facilitation of content retrieval from more than one origin server using the same client-facing hostname.
This lets web publishers bypass sandbox security issues with Java and Flash applets that would
normally be restricted to a single hostname. By using Extended Aliases, such applications may retrieve
data from as many origin servers as required
•
Allowing multiple organizations, departments, or reseller end-customers to utilize the same domain
name but define multiple properties and potentially different CDN configuration profiles (such as
different expiration policies) with a single CNAME record in their DNS. This saves time and simplifies
integration
•
Subdividing a site‘s content, so that different divisions, which all post content on the same server, can
be considered individual origin servers and provided individual traffic reports
When performing a cache fill, the first directory element (part of the Extended Alias) is removed from the
incoming URI path on the request before contacting the origin server. Similarly, the URL is logged and
reported without that element, for example:
Given the Extended Alias: "cdn.example.com/abc"
The request to the CDN would be: http://cdn.example.com/abc/logo.gif
The corresponding request to the origin would be: http://origin.example.com/logo.gif
In order to issue an invalidation, the customer must remember to remove the first directory element (now
part of the Extended Alias) from the path and invalidate using the same path used to fill the resource in
cache.
Extended Aliases Example
The following example illustrates how extended aliases work.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 29
Confidential & Proprietary – Subject to NDA
End User
Requests
cdn.example.com CNAME cdn.example.com.c.footprint.net
cdn.example.com/pix/image.jpg
Configuration Set 1
Primary Alias (Supername) = cdn.example.com
Origin Hostname = origin.example.com
Edge Request: http://cdn.example.com/pix/image.jpg
Origin Request: http://origin.example.com/pix/image.jpg
cdn.example.com/dept1/image.jpg
Configuration Set 2
Primary Alias (Supername) = abc.example.com
Extended Alias = cdn.example.com/dept1/
Origin Hostname = origin.example.com
Max-Age: 5 minutes
Edge Request: http://cdn.example.com/dept1/image.jpg
Origin Request: http://origin.example.com/image.jpg
cdn.example.com/dept1/image.jpg
Configuration Set 3
Primary Alias (Supername) = xyz.example.com
Extended Alias = cdn.example.com/dept2/
Origin Hostname = origin2.example.com
Edge Request: http://cdn.example.com/dept2/image.jpg
Origin Request: http://origin2.example.com/image.jpg
origin2.example.com origin.example.com
Figure 10: Extended Aliases
Here are some examples of the use of Extended Aliases:
1. A request is received for the resource http://cdn.example.com/pix/image.jpg. The request‘s Host:
header matches the supername, and the directory ―pix” is not an extended alias in any Configuration
Set. Therefore, the edgeserver applies Configuration Set 1.
2. The end user makes a similar request to the one above, but the path includes the directory ―dept1‖.
Since ―cdn.example.com/dept1/” has been defined as an Extended Alias for Configuration Set 2, the
request is sent to the origin defined for this Configuration without the ―/dept1/‖ directory in the path.
However, since the Configuration Set definition specifies a Max-age, or Time-To-Live in cache of five
minutes before being considered expired, the edgeserver uses this setting for the resource when it is
cached. Since the Extended Alias was used, the Configuration Set primary alias, or supername, could
be any valid hostname (in this case abc.example.com).
3. The end user makes a similar request to the one above, but the path includes the directory ―dept2‖.
Since ―cdn.example.com/dept2/” has been defined as an Extended Alias for Configuration Set 3, the
request for ―cdn.example.com/dept2/image.jpg” is sent to the host ―origin2.example.com”. Again, any
valid hostname could be used as the Primary Alias (xyz.example.com in this case).
How Caching Service Works
The ―5 R‘s‖ provide an easy-to-remember flow of the CDN processing required to fulfill a client request and
are used here to help visualize the procedure.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 30
Confidential & Proprietary – Subject to NDA
Figure 11: Request Processing – “5 R’s” Overview
The steps are detailed below and include determination of the optimal Content Delivery Server, routing of
the client request to that cache, application of caching and security rules, retrieval of the resource if not
cached, and ultimate delivery to the requestor.
Rendezvous
Request
Rules
Retrieval
Response
Client
Rendezvous
Suppose a client wants to download a resource http://cdn.example.com/images/logo.gif:
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 31
Confidential & Proprietary – Subject to NDA
1
Request to resolve
cdn.example.com
BDS Server resolves
cdn.example.com.c.footprint.net
2
Level 3 Caching and
Streaming CDN
Customer Origin Server
www.example.com
Figure 12: DNS Rendezvous Steps
1. The browser requests the resource using CDN Supername cdn.example.com. During
implementation, the Supername has been setup in customer‘s DNS to direct requests to Level 3 CDN
and points to cdn.example.com.c.footprint.net. The Level 3 name servers resolve that CNAME and
return the IP address of the most optimal CDN cluster to handle the request.
2. The browser sends the request to the selected CDN cluster where it is assigned to an available
server.
Rendezvous
Request
Rules
Retrieval
Response
Client
Request
When a request is received at the CDN cluster, it is assigned to an appropriate server with available
capacity.
In order to determine the appropriate processing options, the CDN server examines the value of the Host:
header "cdn.example.com" on incoming request and determine if it matches a registered Supername that
belongs to an active CDN Property. If a direct match cannot be found, the edgeserver proceeds to check if
the hostname plus top-level folder combination matches a known Extended Alias style Supername. If no
match is found, the edgeserver returns a 404 (Not Found) HTTP status code to the end user.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 32
Confidential & Proprietary – Subject to NDA
Rendezvous
Request
Rules
Retrieval
Response
Client
Configuration Rules
Once the Property is found, the edgeserver determines if a usable copy of the resource is present in cache
and identifies configured caching and security features. Caching options may be assigned for groups or
types of resources, as well as by resource name. Access control may additionally be based upon
characteristics like the IP address or country from which the request was received, or value of the HTTP
Referer: or an arbitrary request header.
Among the most powerful of the CDN functions is the Level 3 RuleBase. This facility provides resourcelevel specification of processing, caching, expiration, header manipulation, security, delivery, and logging
options.
Options are assigned by matching the resource requested against filters specified for RuleBase flags.
Flags are the configuration settings, which control various forms of special resource handling modes.
The combination of one or more flags with one or more filters comprises a Rule, which applies the value or
attribute of the flag to resources matching the filter. The rules are processed when resource gets filled and
revalidated.
The list of available RuleBase filters includes Property ID filter, path filters, MIME type filter, HTTP header
filters, etc. Certain rules can only be applied after response from the Origin Server is received (for example,
MIME type or HTTP Status matching rules). For that reason the RuleBase is divided into two parts:
Request RuleBase and Response RuleBase
First, CDN server evaluates URI path and HTTP headers from the request and applies the Request portion
of the RuleBase, then Retrieval processing is initiated. When a cache-fill is completed, the Response
RuleBase is applied.
Rendezvous
Request
Rules
Retrieval
Response
Client
Retrieval
Prior to contacting the origin, the edgeserver checks if a usable copy of the resource is available from a
nearby peer. Local peering is automatically implemented for all caching configurations. This enables filling
cached object requests from other CDN servers, which leads to increased cache hit rates and enhanced
performance. Cache Hierarchy (Tiered Distribution) is optional and highly dependent upon customer
requirements.
If the resource is not cached and not available from a peer cache, the complete URL, including any query
string and all HTTP request headers received from the client are forwarded to the origin server using the
hostname, port, protocol and other attributes specified in the Property definition. Additionally, request
headers may be added to the cache fill request via RuleBase.
If Pre-Authentication is enabled for the Property, successful validation from an Alternative Authentication
Server is required before the cache fill request is sent to the origin server.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 33
Confidential & Proprietary – Subject to NDA
Rendezvous
Request
Rules
Retrieval
Response
Client
Response
The edgeserver response to a client request contains the object, if available and authorized, and a status
code indicating success, redirection, or the nature of a failure. Normally, the HTTP status code received
from the origin server is passed on to the end user; however, it is possible to for the CDN server to
generate a different status code to indicate successful delivery from cache, an error generated by a
RuleBase flag, or failure of CDN-based authentication, including Geographic Blocking, Referer: Blocking,
URL Token Authentication, or Arbitrary Header Blocking.
Optionally, arbitrary response headers may be added or customer-specified status codes may be issued
for successful resource deliveries or access denials.
Downstream cache control headers may also be set or altered by utilizing the CCHOMode feature. (See
the Cache-Control-Header-Override Mode (CCHOMode) section.)
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 34
Confidential & Proprietary – Subject to NDA
Origin Storage Operations
Uploading Content and Removing Content
Each customer is assigned a primary upload site, either in North America (Los Angeles and New York) or
in European (London and Frankfurt). This site serves as the upload location and the primary serving origin
to the CDN for that customer‘s content. Generally speaking, this location is chosen by the integration team
and the customer, based on the geographic location of the customer‘s content library.
Once content is uploaded to a Level 3 Origin Storage site, it is automatically replicated to the other site
within that region – that is, between New York and Los Angeles, or between Frankfurt and London. Content
is not automatically replicated between the regions, however. For customers that require their content to be
stored in both Level 3 regions, customers upload their content into one location in each region.
As stated above, to achieve added redundancy and performance, all content is replicated automatically to
the secondary site in a particular region. If a specific piece of content is not available at a CDN edge
location (the content is not already cached), then the request for that particular piece of content is
requested from one of the Origin Storage locations. Should the content not be available at the primary
origin location, the request is redirected by ITM to the secondary Level 3 origin location within the region
before redirecting requests back to the customer‘s origin, depending on the customer‘s specific
configuration.
Several different methods of uploading files to Origin Storage are supported:
•
FTP / FTPS – These are interactive TCP-based FTP protocol sessions connecting over ports 20 and 21
for both FTP and FTPS (over SSL). The use of passive FTP is also supported
•
SFTP – this allows customers to place content using non-interactive SSH-based encryption.
Connections are established by placing a shared-key on the Level 3 OSP generated by the customer or
by password-based authentication. This rides over port 22 in a non-interactive mode (for customers)
•
SCP – this mechanism also uses traditional SSH-based file transfer. This is also non-interactive and
uses key pairs or password-based authentication
•
Rsync – customers can also choose to ingest and synchronize their libraries with the OSP by using an
rsync client and connecting on periodic intervals to push any new or changed files. The underlying
transport protocol is SSH-based and uses both key pair and password-based authentication
Content can be removed from Origin Storage via the same methods available for upload, i.e., FTP, SFTP,
SCP, Rsync. The customer still needs to change or remove any links in their basepages to the content.
Using Origin Storage as Content Origin
When a property‘s configuration rules are set up, instead of using a customer hostname for the origin, the
Origin Storage hostname should be substituted. As with customer origins, access to Origin Storage can be
designated as HTTP or HTTPS only. The Origin Storage uses Level 3‘s midgress servers and edgeservers
to deliver the content – end users never access files from Origin Storage directly.
End users are restricted from listing storage directories.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 35
Confidential & Proprietary – Subject to NDA
Content Freshness Features
Methods of Freshness Control
Level 3 CDN was explicitly designed to allow customers the option of controlling and maintaining content
freshness without sacrificing end-user performance. Customers can consistently deliver the most accurate
and up-to-date content quickly to their end users. Depending on their business needs, customers can
update content within the Level 3 CDN network on-demand or at regularly scheduled intervals.
Level 3 CDN offers customers two basic mechanisms to control content freshness:
•
Expiration Policy – determines how long the resource in cache is considered fresh and can be served
without revalidation with the origin server
•
On-Demand Invalidation – provides a real-time method of expiring the resource in cache
These mechanisms are not mutually exclusive. They provide complementary ways for the CDN to serve
continually fresh content by triggering fills for fresh content when required. As a standard practice, CDN
customers often use an expiration policy as a default method of content freshness control while using ondemand invalidation as an occasional override, for example.
Refreshing Content in Cache
The process for updating content within a cache occurs when a request for a stale resource (i.e.,
invalidated or past expiration) arrives at a Level 3 edgeserver. Then, a GET If-Modified-Since (GIMS)
request for the resource is sent to the customer‘s origin server or to a cache peer or parent, in order to
revalidate content.
If the resource has not changed, a 304 (Not Modified) response is returned, and the content is again
marked as fresh. If the resource has changed, the modified resource is returned in a 200 (OK) response.
The new resource replaces the stale resource at the CDN server and is served to the customer's end user.
Note: If the resource in cache does not have a valid Last-Modified: header supplied by the origin
server, then an unconditional GET request is used for revalidation, which causes the resource to be
reloaded in cache.
Level 3 CDN also has a Background Refresh feature (also known as BRefresh Mode). This mode allows
the existing stale content to be served while triggering an asynchronous revalidation back to the origin
server. (There is a limit on how stale the content can be with this mode enabled.)
If a refresh attempt fails because of a failure to contact the origin server, the old stale content is served for
a short period of time before a further refresh attempt. This is independent of Background-Refresh mode.
Expiration Policies
Expiration policies can be established and controlled either at the customer‘s origin server or within the
CDN itself.
Level 3 CDN recognizes standard HTTP cache control headers which can be added to the header of any
resource served by a standard HTTP server (e.g., Apache, Netscape, and IIS). When a customer knows
that specific content is likely to change at regularly scheduled intervals, cache control headers should be
used to expire content within the Level 3 CDN. Origin server policies can also be used if content is known
to get updated at a certain time.
The Level 3 CDN also provides a Cache Control Header Override Mode (CCHOMode) that enables a
resource to be cached for the configurable period of time, regardless of HTTP cache control headers set by
the origin server.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 36
Confidential & Proprietary – Subject to NDA
HTTP Cache Control Headers
The HTTP cache control headers that affect content freshness are:
Header
Value
Cache-Control:
Specifies directives that must be obeyed by the cache, including assigned TTL values
Expires:
Date and time after which the resource is no longer considered fresh
Last Modified:
The date and time the resource was last modified at the origin server
Figure 13: HTTP Cache Control Headers
The following is a list of attributes of the Cache-Control: header most commonly used:
Directive
Meaning
max-age
In seconds, the Time-To-Live (TTL) assigned to the resource in cache. The resource is considered cacheable
and TTL determines amount of time the resource can be served straight out of cache after the time it was
retrieved from the origin server.
no-cache
A cache must not use the response to satisfy a subsequent request without successful revalidation with the
origin server. The resource is considered cacheable, but must be revalidated on every request.
no-store
A cache must not store the response. The resource is considered non-cacheable.
public
The response may be cached by any cache. The resource is considered cacheable.
private
The response must not be cached by a shared cache, such as Level 3 CDN.
Figure 14: Cache-Control Header Directives
Note: Level 3 CDN does not support the use of Meta tags within HTML resources.
Cache-Control-Header-Override Mode (CCHOMode)
The Cache Control Header Override Mode (CCHOMode) feature allows the Level 3 CDN to override cache
control headers that otherwise would cause resources to be uncacheable and gives customers control over
their content in Level 3 caches.
A key component of the CDN‘s performance improvement is due to the storage and delivery of customer
content in cache at the edge of the network. When browsers request already cached content, the content
can be served immediately. An edgeserver that does not have the requested resource in its cache may find
it cached at a peer, so there is often no need to retrieve content from an origin server before it can be
served.
By default, the CDN honors the expiration policy set by the origin server. This means retention of customer
content in CDN caches can be made difficult or impossible by resource headers like Cache-Control:,
Expires:, and Pragma: no-cache, which lower resource cache lifetimes or cause resources not to be
cached at all. Some customers may have cache control headers set to short durations to prevent retention
of stale resource versions at ISP caches over which they have no control.
CCHOMode is especially useful during test and evaluation when new customers cannot easily set, remove,
or modify cache control headers on the resources. Enabling this mode during trials permits more realistic
assessments of Level 3 CDN performance improvements than otherwise would be possible. This mode
can also be used in a production environment to ensure resources served by the CDN are always
cacheable.
CCHOMode can be applied to individual resources or groups of resources using pattern matching. This
feature defines the expiration criteria for resources and overrides any existing cache control headers set by
the origin server – this is referred to as Internal Expiration Policy, utilized strictly within Level 3 CDN.
Optionally, new cache control headers may be set or existing headers altered when the resource is served
to a client – this is known as the External Expiration Policy – which should be honored by a browser or
down-stream cache.
The Internal Expiration Policy and External Expiration Policy can be configured separately.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 37
Confidential & Proprietary – Subject to NDA
CCHOMode Usage
CCHOMode is specified with a Time-To-Live (TTL) time unit (seconds, minutes, hours, days, weeks, or a
year) or may indicate that the resource is not to be cached (―no-store‖).
For internal specifications, a positive number acts as if a max-age value had been supplied in a CacheControl: header and determines the TTL applied to the resource in cache.
For optional external specifications, when set to a positive value, a Cache-Control: max-age and/or an
Expires: header is added to the resource with header values set appropriately, given the Date: when
the resource was served from the cache and the TTL value. When zero, both a Cache-Control: nocache and a Pragma: no-cache (for compatibility) header is added when the resource is served from
cache, putting, in effect, an explicit no-cache policy at the end user.
The following table explains the various options available with CCHOMode and the corresponding effects
on caching the object at the edgeserver (the Internal Policy) and the expiration policies the edgeserver
sends to the end user (the External Policy). The Internal Policy specifies the internal caching policy, i.e.,
how the edgeserver should deal with the resource. The External Policy specifies the external caching
policy, i.e., the caching policy on the resource when it is delivered to downstream caches/clients.
CCHOMode Value
Internal Policy
External Policy
true or on
Ignore cache control headers supplied by the origin
server and apply internal expiration policy which
defaults to 1 year
N/A. Only applies to Internal Policy.
false or off
Honor cache control headers supplied by the origin
server. This is the default behavior
N/A. Only applies to Internal Policy.
positive number
Set internal TTL value to # of seconds, minutes,
hours, days, weeks, or 1 year. Default is seconds.
Set external TTL value to # of seconds, minutes,
hours, days, weeks, or 1 year. Default is seconds.
A positive number acts as if a max-age value was
supplied by the origin server in a CacheControl: header
Cache-Control: max-age and/or an Expires:
header added when the resource is served to the
client
Sets an external policy without setting the internal
expiration policy
Sets an external policy without setting the internal
expiration policy
The resource is cached, but the next request will
trigger revalidation with the origin server
Cache-Control: no-cache and Pragma: nocache headers added when the resource is served
to the client
Prevents the resource from being cached by the
CDN as if the origin server set a CacheControl: no-store header
Cache-Control: no-store and Pragma: nocache headers added when the resource is
served to the client
#<s,m,h,d,w,y>
negative # or
as-is
no-cache or
0
no-store
Note: External actions are not performed if the resource had a cache control policy served from the origin
server unless an optional ―force‖ attribute is specified. When set, cache headers received from the origin
server are stripped off and replaced with any headers added by the external CCHOMode.
Cache Control Header Precedence
By default, if no CCHOMode is in effect, the edgeserver honors standard HTTP cache control headers
supplied by the origin server. If multiple cache control headers are present, internal expiration policy is
determined by the max-age directive in the Cache-Control: header which takes precedence over any
Expires: and Pragma: no-cache headers. This means Expires: header is only considered if there is
no valid Cache-Control: max-age header.
The cache control headers are stored with the resource in cache and updated when the resource is
revalidated with the origin server. If a Cache-Control: header and/or CCHOMode are in effect, the value
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 38
Confidential & Proprietary – Subject to NDA
of the Expires: header is set or altered to specify the expiration policy based on the date and time that
the resource was filled.
If both Cache-Control: max-age and Expires: are present on the resource in cache, neither is
altered when the resource is served to the client; however, it is possible to adjust the headers based on the
time of the request if the cache-control-policy specifies which cache control header value takes
precedence. The cache-control-policy is configurable on per property basis.
•
When set to ―expires‖, the value of max-age in the Cache-Control: header is modified when served,
so that, when added to the Date: header value, it matches the value of the Expires: header
•
When set to ―max-age‖, the value of the Expires: header is modified when served so that it matches
the value of the Date: header + max-age from the Cache-Control header
•
When set to 'off' (the default), neither is altered when the resource is served to the client
If no Expires: header was supplied by the origin server, then an Expires: header is always generated
by the CDN whenever a Cache-Control: max-age header is present, but the inverse is not true—i.e.,
the presence of an Expires: header does not lead to creation of a Cache-Control: max-age. As
such, any response with only an Expires: header is not affected regardless of the cache-control-policy
setting.
Background Refresh (BRefresh)
Once an edgeserver caches a resource, it serves that object from the cache until it becomes stale. When
the object is stale, it has to be revalidated with the origin server before the edgeserver can deliver it to the
client.
The edgeserver makes a request to the origin server for the resource. If the resource version is still valid,
the origin server returns a 304 (Not Modified) response with new TTL information. On the other hand, if the
resource version has been superseded, the origin server sends the new version of the file.
The resource revalidation process imposes a certain amount of latency on clients who must wait for this
update to complete. Under ideal circumstances, revalidation may take a few milliseconds, but this time can
dramatically increase if the origin server is unreachable, in which case multiple-second timeouts may need
to expire before the refresh attempt is abandoned.
Background Refresh (BRefresh) mode provides an alternative resource revalidation method for the Level 3
CDN. If this mode is enabled for a stale resource, the currently cached version is served immediately, while
a revalidation of the resource is launched asynchronously in the background, thereby removing the latency
traditionally involved with revalidation. There is a limit on how stale the content can be with this mode
enabled. By default, content that has been stale for more than four (4) hours is not subject to the
Background Refresh policy; however, this setting can be overridden in the customer configuration.
BRefresh mode is recommended for frequently changing resources with short TTLs and slow origin
servers.
BRefresh mode can be applied to individual resources or groups of resources using pattern-matching
designations. The interval of time during which the content is subject to BRefresh, the background-refreshstale-limit, is configurable on per property basis—its value is specified in seconds.
How Content Freshness Works with BRefresh and
CCHOMode
When a request is received, the edgeserver determines if a fresh copy of the resource is in the cache. If so,
the user will be authenticated (if required), and the resource delivered.
If the resource is in cache but is no longer considered fresh (invalidated or past expiration), the edgeserver
checks if the resource is configured for Background Refresh. If it is and the acceptable interval for service
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 39
Confidential & Proprietary – Subject to NDA
has not passed, the user is authenticated (if required), the resource is served, and the background cache
fill initiated. If the interval has expired and a cache fill is in progress, the request will wait for the cache fill to
complete.
If Background Refresh is not configured for the resource or the background-refresh-stale-limit has expired,
the request is handled normally. That is:
•
The edgeserver queries available peers to determine if they have a fresh copy. If a current copy is
resident in a peer cache, it is delivered to the requesting edgeserver, cached for subsequent requests,
and delivered to the end user
•
If the resource requires authentication, the peer sends a revalidation request to the authentication
server to determine if the user is authorized before returning it to the requesting CDN server
•
If a usable copy is not available from a peer server, a GET If-Modified-Since (GIMS) request is sent to
the origin server. If the user is authorized to receive the resource, a new copy is returned with a 200
(OK) response
•
Should authentication fail for any reason, the unsuccessful request returns a 401 (Unauthorized) or a
302 (Redirect), usually to a customized error page
Note: If no Last-Modified: header was supplied by the origin when resource was loaded into cache, an
unconditional GET request rather than the GIMS request is sent to the origin server.
Upon completion of a cache fill, the edgeserver determines if CCHOMode is indicated for the resource. If
so, internal and external expiration are set accordingly. If not, any cache headers presented by the origin
server will determine expiration criteria. If no cache control headers were supplied by the origin server, the
resource is considered cacheable for one year from the time it is loaded into cache.
ETAG and If-None-Match Support
The ETag: is a standard HTTP response header that provides the current value of the entity tag for the
resource. If the origin server supplies this header, the edgeserver stores it with the resource in cache and
return it to the client when delivering the resource. The client could then use the value of this header to
issue a conditional request to the Level 3 CDN. If the client has one or more entities previously obtained for
a given resource, it can verify that none of those entities is current by including a list of their associated
entity tags in If-None-Match: header.
The Level 3 CDN recognizes the If-None-Match: header. Upon receipt of a conditional request with an
If-None-Match: header, the edgeserver compares the value of the ETag: header on the resource in
cache to the entity tags provided in the If-None-Match: header on the request, and, if any entities at the
client are current, the edgeserver responds with a 304 (Not Modified) HTTP status code.
Entity tags are also used by the Level 3 CDN when managing variant responses—revalidation requests for
such resources always include an If-None-Match: header. For resources that do not vary, an IfNone-Match: header will not be included unless If-None-Match support is configured for the property in
which case refresh requests (revalidations) for a resource with a known ETag: will also include an IfNone-Match: header.
Query-String-Handling Mode (QSHMode)
By default, resources are cached within the Level 3 CDN using their complete URL including the entire
query string as the cache key. There may be elements of the query string that make it unique for each end
user, such as parameters used for authentication or session tracking, even though the resource is identical
for those end users. In those cases, every user‘s request will result in a cache miss, causing sub-optimal
performance as each user request for the resources will have to go to the origin server. In order to serve
such users from the cached copies, the query string portion of the cache key can be altered to remove the
name-value pairs from the query string, thus making the cache key the same for the same resource.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 40
Confidential & Proprietary – Subject to NDA
Query String Handling Mode (QSHMode) is a feature that allows some or all of the name-value pairs of the
URL query string to be excluded from the cache key to ensure the cacheability of resources that are only
unique due to query string parameters but where the associated content is actually identical.
For example, consider the URL:
http://cdn.example.com/image101.jpg?username=john_doe&userid=12345&type=7
Indicating that QSHMode should eliminate the ―username=‖ and ―userid=‖ parameters from the cache key
would allow the edgeserver to access the same cached resource, regardless of the user-specific data,
under the resulting cache key:
http://cdn.example.com/image101.jpg?type=7
QSHMode may be applied to customer resources in either Selective or Full mode:
•
Selective Mode indicates which query string parameters should be used and which should be ignored.
Parameters selected may be specified by either an inclusion list or an exclusion list. Inclusion means
―only use these parameters‖ while exclusion denotes ―suppress these parameters‖. This option is very
flexible in what it can do but can only be specified at the property level, so that it applies to all resources
on a particular property.
•
Full Mode indicates that all query string parameters should be excluded from the cache key and may
be set at the resource level. A match suppresses the entire query string from cache processing and
overrides any Selective Mode specifications.
Regardless of which style is used, the log file entries contain the entire URL as presented by the end user.
Also, any cache fills and refresh or revalidation (including authentication revalidations) attempts will use the
entire URL, including the full query string.
On-Demand Invalidation
Purpose of Invalidations
The term Invalidation refers to the CDN‘s on-demand content expiration system.
Normally, edgeservers retain content for no longer than the amount of time specified in certain HTTP
headers, primarily the Cache-Control: and Expires: headers. These headers indicate that a resource
is expected to change by a certain time, specified either as an absolute time or as a delta from the time the
resource is filled by the cache. When the specified time has arrived, the content in the cache becomes
stale, and the next request for it causes the edgeserver to revalidate the content with the origin server. This
process is often referred to as Passive Invalidation.
If the resource changes sooner than expected, an invalidation request can be initiated with the Level 3
CDN system. As such, this process is often referred to as Active Invalidation.
The result of an Active Invalidation is typically the same as a Passive Invalidation. The resource is still in
the cache, and the next request for it triggers a revalidation of the resource back to the origin server or to a
peer (if the peer is known to have fresh content).
These revalidation requests are made in the form of a GIMS (GET with an If-Modified-Since:
header) request. The date provided in the If-Modified-Since: header is the value of the LastModified: header received on the response that filled the resource into the cache.
If the resource has changed since that time, the new version of it is stored in the cache – if it has not
changed, the origin server should be able to respond with a 304 (Not Modified) response, providing an
updated cache expiration policy.
The Active Invalidation system also provides a way to ―force‖ the reload of a resource. This is useful when
the Last-Modified: header generated by the origin server is unreliable and its value has not changed
(or has gone backwards in time). In the case of a forced invalidation, the revalidation request made to the
origin server is an unconditional GET as opposed to the conditional GIMS.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 41
Confidential & Proprietary – Subject to NDA
Invalidation Request Format
The invalidation request specifies the URL or URLs that should be invalidated across the Level 3 CDN
network. It is specified as a combination of property and path.
The path in an invalidation request is the URI path of the resource on the origin server. This is often the
same as the path to the resource on Level 3 CDN unless the CDN Supername is using an Extended Alias
(i.e., contains a directory path element) or Alternative Webroot is used (e.g., CDN is configured to fill cache
from a designated subdirectory below the actual webroot).
A path can be specified as either a complete path (in an abspath style), or it can make use of one or more
wildcard specifications. For instance, an invalidation request can specify all the content in a certain
subdirectory, or all resources with a common extension.
The meta-language used to describe the path is a shell-glob like regular expression. This means that
wildcards can be specified using ―*‖, to mean match zero or more characters (this is used for a request to
invalidate all resources with a common extension as well as all the content of a directory tree), or some
special characters such as ―+‖ (meaning one or more characters, except for the directory separator).
The complete set of supported meta-characters available is outlined in the following table:
Meta
Character
Matches
*
Zero or more characters
+
One or more, non-directory separator characters
?
Any single character including the directory separator
.
Matches the "." (period) character only
\
Matches the directory separator
/
The directory separator character
{n,m}
Matches between "n" and "m" characters, where "n" and "m" are integer values
[a,x-y]
Matches any single character in the set provided. Comma (‗,‘) characters are used to separate individual
characters in the set; hyphens (‗-‘) are used to specify ranges (from the ASCII character set)
[^a,x-y]
Matches any single character not in the defined set
Figure 15: Invalidation Meta-Characters
If the URL is submitted with a query string, then the system attempts to match the entire URL including the
query string, through the QSHMode mechanism. If the URL is submitted without a query string, then the
query string is ignored for the purposes of that invalidation.
Submitting Invalidation Requests
Customers can submit their invalidation requests in two different ways:
1. Media Portal-based Invalidation – The portal‘s web-based tool is used for listing properties,
entering invalidation paths, and tracking the status of the invalidations. Media Portal Invalidations are
also accessible through the Media Portal API. (See the Media Portal Online Help for more details
about the API.)
2. Command Line-based Invalidation – The command line interface allows customers to bypass the
Media Portal and inject the invalidations directly into the system using any HTTPS-capable tool (such
as CURL or WGET). Requests can be made using the simple GET method.
Command Line-based Invalidation Usage
To issue a command line-based invalidation, the submit.cgi script is requested providing the account name,
password, and URL pattern to be invalidated. The syntax is as follows:
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 42
Confidential & Proprietary – Subject to NDA
Request: = “https://www.admin.footprint.net/invalidate/submit.cgi?”
“Account=” <account> “&Password=” <password>
“&URL=” <URL> “&ID=” <ID>
Note that the argument names (and values) are case-sensitive.
The <account> and <password> values are assigned by either Level 3‘s CDN Activation or CDN Support
teams upon request to enable access to the Command Line-based invalidation feature. They are not the
same as the Media Portal login and password.
The <URL> can be absolute or abspath. In addition, the value of <URL> in the Command Line style cannot
contain any characters marked as ―unsafe‖ or ―reserved‖ in RFC1738, and so those must be encoded (as
specified in RFC1738). Most obviously, any ―&‖ (ampersand) characters is interpreted as the end of the
URL argument to the submit.cgi process, rather than as part of the URL. Also, any ―%‖ (percent) characters
introduced by a previous encoding will need to be themselves encoded as ―%25‖.
When using the abspath style, the ―ID=‖ attribute must also be set. Its value is the Property ID. CDN
Support can provide the list of Property IDs associated with the account.
Note: This additional encoding step is not required for Media Portal-based submission system where the
URL entered should match the URL path to the resource on the origin server.
If the resource to be invalidated belongs to a property that has a unique hostname, then the absolute style
reliably invalidates its content. However, if there are multiple properties that share the same hostname,
then the specific Property ID should be used to direct the invalidation against the required property.
Invalidation Recommendations
Level 3 CDN provides a number of mechanisms to ensure that customers maintain control over the
freshness of the content served through the CDN. As can be seen in this section, Level 3 offers an
extensive set of configurable features and functions for freshness control. To achieve best results, OnDemand Invalidation should be used in conjunction with other methods. Below is a list of the mechanisms
and the order of precedence in which they should be used:
1. Origin Server Policies – Expiration policies set at the origin server are typically respected by the
CDN, unless otherwise overridden by CCHOMode. Specific configuration of individual HTTP servers
may vary (and are beyond the scope of this document), but most modern, compliant servers should
offer the ability to set Expires: and Cache-Control: (max-age, no-cache, no-store, mustrevalidate, etc) headers with varying degrees of flexibility and granularity. These headers cause
the CDN caches to expire content according to the policies established at the customer‘s origin,
unless explicitly overridden. This is the customer‘s first, best option for explicitly controlling the
freshness of content as it is under the customer‘s direct control.
2. CDN Specific Policies – Expiration policies set in the CDN configuration via CCHOMode which
override or replace policies established at the origin server. Use this mechanism when it is not
technically possible to establish policies at the origin or when different policies are required for the
CDN than for downstream (browser/proxy) caches. The CDN utilizes the internal expiration policies
and proxy the origin-established policies to downstream clients/proxies.
3. File Renaming – In general, new, unique assets should be given unique naming conventions where
possible via direct path/filename naming conventions or via query string tokens or other identifiers in
the URL. Unique naming allows the CDN to cache fresh versions of a resource and lets old versions
expire naturally. This is not always possible via Content Management or publishing tools or
processes, but, where it is an option, it is preferable to other methods.
4. Active Invalidation – Using the Level 3 Invalidation Facility to expire content in near real time. This
method provides an ―override‖ when other methods have been used but content requires real-time
replacement outside of defined expiration policy.
Invalidation System Limitations
The Invalidation System consumes resources on the CDN infrastructure. It takes time (CPU, network, etc)
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 43
Confidential & Proprietary – Subject to NDA
to process the various invalidation messages, propagate them across thousands of distributed servers,
provide completion feedback, and many other mechanisms within the system to attempt to guarantee that
invalidation messages are not lost or skipped. As such, there are a finite number of Invalidation Events that
can be processed by the system as a whole.
Invalidation Usage Guidelines
Invalidation should not be a primary method of content freshness control. Use invalidation only in
conjunction with other means or when other methods are absolutely not available (a rare condition).
Use cache control directives at the origin that accommodate the typical, expected interval of updating. In
case of an unexpected event, use invalidations for the specific content being changed. Do not use
programmatic invalidations every few minutes ―just in case‖ as an alternative to expiration policies. Even
the most dynamic of real-time applications can be very tightly controlled using sub-minute expiration
policies when needed. It is preferable to have an overly aggressive expiration policy than to become overly
dependent on invalidations.
Consider the true need for ―real-time‖ expiration. Do monetary, brand perception or legal necessity require
replacing content, or will a few extra minutes to allow the content to age out make a material difference?
For automated, scripted use of the Invalidation API, the following guidelines apply:
•
Batch Requests – Use the list-based or file-based form of the interface to submit multiple URLs as a
batch. Submit as many URL‘s as possible in as few batches as possible
•
Use fully qualified URLs – Minimize the use of wildcarding. Reserve wildcarding for the GUI-based
interface. Where programmatic access to Invalidations is used, Level 3 would expect that explicit lists of
URLs can be constructed by the invoking application
•
Limit the Invalidation Request Rate – Set it to less than ten (10) per minute. Queue submissions on the
client/script side of the interface if the quantity of invalidations would exceed this rate
Level 3 reserves the right to limit, throttle, de-prioritize, or potentially restrict access to the Invalidation
System for a specific customer if that customer‘s usage patterns place an undue burden on the system.
Should this be the case, Level 3 Sales Engineers and CDN Support personnel will work with that customer
to find a solution that complies with the above guidelines while meeting the needs of the particular
application in question. However, in some cases, creating an appropriate caching/freshness policy might
require changes on the customer‘s side. Level 3 cannot guarantee the use of invalidations as a primary
means of freshness control for every application.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 44
Confidential & Proprietary – Subject to NDA
Security Features
Overview
Customers may need to restrict the delivery of resources to end-users by verifying that only authorized
users receive that content. The verification may ensure that only known users, direct affiliates, or those that
have paid for the content are allowed to download it. In addition, there may be export restrictions that would
restrict access from specific countries or requirements to prevent the reuse or modification of URLs.
The Level 3 CDN offers a wide range of content security features that allow customers to protect their
content from unauthorized access. Content stored within the CDN may be flagged as using one of a set of
authentication modes, each of which cause some form of authentication revalidation to be performed for
subsequent requests.
Authentication modes can be broken into two groups:
•
Proxy Authentication – Requires that a validation request is sent to a customer‘s authentication
server
•
Edge Authentication – Uses knowledge present within the CDN itself to determine whether a client is
authorized
When a request for a protected resource is received, the edgeserver performs the appropriate
authentication processing and uses the result to determine the response returned to the client.
Typically, there are three types of responses—where the user is:
•
Authenticated and receives the resource with (200) OK response
•
Not authenticated and receives an Unauthorized (401) response
•
Not authenticated and receives a Redirect (302) to a specified page, often showing an error or asking
the end-user to provide the proper credentials
If the requested resource is not in cache, or if it is no longer considered fresh, a cache-fill will need to be
performed. Depending on the authentication mode in use, this may occur after the user has been
authorized or the authentication may occur as part of the cache-fill.
For authentication modes that include some form of authentication credential within the query string portion
of the URL, the credentials make the URL unique. This has adverse affects on the cacheability of the
content, and QSHMode should be used so that the content may be effectively cached.
Proxy Authentication
Proxy Authentication relies on a customer-operated authentication server and provides a more flexible
solution compare to Edge Authentication but at the cost of the latency added by the extra step of the
validation request. As with regular cache fills, all HTTP headers presented by the end-user are provided to
the authentication server so that it can make the authorization determination. The client IP address is
passed along in the X-Forwarded-For: header.
The types of Proxy Authentication are:
•
Cookie-based – authentication information is attached to the request in a cookie
•
authentication – authentication information is the user-supplied name/password combination
•
string-based – authentication information is embedded in the query string portion of the URL
(note: QSHMode should be used so that the content may be effectively cached)
Restricted resources resident in cache must be revalidated when requested. The revalidation methods are:
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 45
Confidential & Proprietary – Subject to NDA
•
HEAD method – A lightweight (HEAD) request is sent to the authentication server along with all
headers. This is the most common method of revalidation often referred to as Traditional Authentication
•
GIMS method – A GET If-Modified-Since request is sent to the origin server along with all headers. If
the version at the origin server is more current than the one in cache and the request is authenticated, it
will be returned. If a Last-Modified date is not available, the request is changed to an unconditional GET
The following diagram illustrates how Proxy Authentication works using the HEAD method for revalidation:
End User
Request
4
Response header is
returned to the
edgeserver:
200 = Ok to serve
401 = Don‘t serve
302 = redirect
Edgeserver can return
origin response code
or apply configuration
rules to alter the
response
3
1
Cookie info,
query string, or a
custom client
that generates
custom request
headers
Level3
Edgeserver
Origin
Server
2
Edgeserver sends
Head request and any
required end user
information
Figure 16: Proxy Authentication Using HEAD Requests
The numbered sequence defines the numbered actions in the diagram:
1. End-user requests a protected resource from Level 3 CDN. This request may include cookies, query
string, and/or custom HTTP headers generated by custom client.
2. Level 3 CDN server sends HEAD request with any required end-user information to the Origin Server.
3. Origin Server processes the request, makes it authorization decision and responds with HTTP status
code telling Level 3 CDN what action to take:
•
200 – OK to serve
•
401 – Do not serve
•
302 – Redirect
4. If authentication succeeded, the Level 3 CDN delivers the resource to the end-user with a 200 OK
status code. If not, the Level 3 CDN denies access with an appropriate HTTP status code (401/302)
received from the Origin Server.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 46
Confidential & Proprietary – Subject to NDA
Alternative Authentication Server Option
By default, revalidation requests are sent to the origin server from which the content is retrieved; however,
this behavior can be modified to forward revalidation requests to a different location, referred to as an
Alternative Authentication Server. This may reduce the resource requirements at the origin server or
facilitate distributed administration of security policies.
Additionally, a property may be designated to use Pre-Authentication option. Pre-Authentication causes
requests to be validated at the Alternative Authentication Server before a cache-fill request is sent to the
origin server. Pre-Authentication allows the authentication server to be the sole owner of the authentication
knowledge – the origin server just has to serve the content to the CDN.
Depending on the requirements of the application receiving the authentication request at the Alternative
Authentication Server, the system can format the request in several different ways.
•
The request can be directed to a generic hostname or to a specific ―script‖ URL
•
The system can control whether the URL originally requested is appended to the end of the
authentication request or included as a separate HTTP request header
Data transmitted to and from an Alternative Authentication Server may be protected by selection of the
Secure Authentication option, which causes HTTPS to be used for all such traffic.
The following diagram illustrates how Proxy Authentication model works with Alternative Authentication
Server assuming Pre-Authentication option is enabled:
5
End User
Request
6
Origin
Content
Server
Once the user request
is authenticated, the
edgeserver can
request content, if
needed, from the
origin server
Edgeserver can return
origin response code
or apply configuration
rules to alter the
response
4
3
Response header is
returned to the
edgeserver:
200 = Ok to serve
401 = Don‘t serve
302 = redirect
1
Cookie info,
query string, or a
custom client
that generates
custom request
headers
Level3
Edgeserver
2
Origin
Auth
Server
Edgeserver sends
Head request and any
required end user
information
Figure 17: Proxy Auth with Alternative Authentication Server
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 47
Confidential & Proprietary – Subject to NDA
The numbered sequence defines the numbered actions in the diagram:
1. The end-user requests a protected resource from the Level 3 CDN. This request may include
cookies, a query string, and/or custom HTTP headers generated by custom client.
2. The edgeserver sends a HEAD request with any required end-user information to the Alternative
Authentication Server.
3. The Alternative Authentication Server processes the request, makes an authorization decision and
responds with HTTP status code telling Level 3 CDN what action to take:
•
200 – OK to serve
•
401 – Do not serve
•
302 – Redirect
4. If authentication succeeded, the Level 3 CDN may request the resource from the Origin Server.
5. The origin server returns current copy of the resource to Level 3 CDN.
6. The edgeserver delivers the resource to the end-user with a 200 OK status code. If authentication
failed, the edgeserver denies access with the appropriate HTTP status code (401/302) received from
the Alternative Authentication Server.
Further details regarding Proxy Authentication are available in the CDN Asset Security Technical Brief.
Edge Authentication
The second group of authentication modes can make the authentication determination without the need to
contact an authentication server. They include:
•
URL Token Authentication – Secure content with embedded encrypted tokens in the query string of
the URL
•
Geographic Intelligence / GeoBlocking – Restrict requests by country of origin with Basic
GeoIntelligence or more granular geographic restrictions with Premium GeoIntelligence
•
Referrer Blocking – Restrict requests to a known set of referrers. Headers other than Referer: may
also be utilized for similar types of restriction
•
IP/CIDR Blocking – Deny requests from designated IP addresses or Classless Inter-Domain Routing
Blocks (CIDR)
Detailed descriptions of each of these modes can be found in the sections that follow.
URL-based Token Authentication
URL Token Authentication allows a customer to encode information into a URL, including tokens that
provide special instruction to the CDN. This encoded information can then be secured from tampering by
appending a security token to the URL that gives the CDN the ability to verify that nothing in the URL has
been changed between the time the URL was published and the time the request is received by the CDN.
This feature allows the CDN to inspect a set of name-value pairs within the query string element of the
URL, using them as valid starting and ending times. The CDN ensures that requests are valid only during
the validity window defined by the start and end times. Requests outside of the validity window are rejected
using a customer-configurable response code.
The URL is ―authenticated‖ through the use of hash encoding of the URL itself. The customer and Level 3
coordinate on which elements of the URL are meaningful and on a shared-secret key. This feature
assumes that the customer has implemented code at their origin server that computes a hash value based
on the URL (path and designated query string elements) using the shared secret and a common algorithm
(MD5 or HMAC-SHA1 hashing, depending on the token type chosen) and appends the generated hash
value to the end of the URL prior to publication. This allows the CDN (upon receipt of a request) to
compute the same hash using the same components of the URL, the pre-shared secret, and the same
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 48
Confidential & Proprietary – Subject to NDA
hashing algorithm. The resulting hash code is compared to the hash code on the incoming request. If they
match, the CDN is assured that the URL has not been tampered with (the algorithm assures that any
change – even a single character – results in a completely different hash code) and that the embedded
validity tokens are authentic as published.
Level 3‘s Token Authentication can be applied against a list of specific content files or against a folder of
content files on the server-side.
How Token Authentication works in Level 3’s CDN
1. The end user requests a protected resource.
2. The customer origin generates the resource URL with the token attached and returns the resource
URL with the token attached to the end user.
3. The end user requests the resource URL with the attached token from the Level 3 edgeserver.
4. The edgeserver validates the token and processes the business rules. It returns the resource if
authorized, else it denies or redirects the request
1
2
Customer
Web Server
URLs w/
End User
Request
TOKEN
3
TOKEN
4
Level3 CDN
Figure 18: How Token Authentication works in Level 3’s CDN
Standard Token Parameters
The Standard Token is the token format to be used in all new implementations. Each can be used with both
streaming and with caching services. (Level 3 also supports the Flex Token as a legacy implementation.
See Appendix D: Legacy Flex Token Support. It also can support both streaming and caching.)
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 49
Confidential & Proprietary – Subject to NDA
Feature/Parameter
Standard Token Usage/Definition/Value
Hash Algorithm
HMAC-SHA1
Hash Contents
Take the full URL and remove the protocol, hostname, and unneeded query string
parameters
Add any desired arbitrary or time validity tokens
Time Format
yyyymmddHHMMSS in GMT or in epoch-seconds
SaltValue/SecretKey
ASCII character string of up to 64 bytes
No Reserved characters
Secret Table
Yes, up to 10 active secrets with Validity Times for the secrets
Hash / Token Length in URL
20 characters / 21 characters
First character designates secret number used, then first 20 characters of calculated
hash
Token Query String Parameter Name
Configurable, for example ―hash=‖
Base64 Encoded
No
Start/End parameter names
Configurable, for example ―stime=‖ and ―etime=‖
If there is no End Time value present, the edgeserver assumes that the token value never
expires and always serves the object. If there is no Start Time, the object is considered
valid until the End Time value.
Figure 19: Standard Token Parameters
An Example for Constructing the Token for On-Demand Flash Streaming
Start with a URL in the following format
Protocol://Hostname/ContentLocation/Resource?QueryString
Protocol is the protocol used in delivering content, which is typically associated with the format type of
the content, such as: (1) mms and rtsp for Windows Media; and (2) rtmp and rtmpe for Flash.
Hostname can be an external or Level 3-generated sub-domain from the f35.c.footprint.net
domain.
ContentLocation is the path to the resources being protected.
Resource is the desired resource to be protected or the folder to be protected.
Here is the URL to be protected with a token for this example. It is assumed that forced adding of filename
extensions is turned off. (See below.)
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testStream?
CustomerID=1234&NotUsed=ThisOne
Steps to generate the protected URL.
1. Remove the protocol (e.g., rtmp://) and hostname.
/xyzmedia/liveStreams/testStream?CustomerID=1234&NotUsed=ThisOne
2. Remove any name-value pairs from the query string that are to be left out of the hash. Leave in any
name-value pairs from the query string that should be protected by the hash function. In this
example, ―CustomerID‖ is a customer variable that should be protected by the hash, and ―NotUsed‖
is a customer variable that does not need to be protected by the hash. This is set in the property
configuration to ensure that the edgeserver protects and ignores the proper variables from the
query string.
/xyzmedia/liveStreams/testStream?CustomerID=1234
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 50
Confidential & Proprietary – Subject to NDA
3. Add a designated name-value pair for the start time of the token validity window to the query string.
(Start and Stop times are in UTC/GMT format, for example: yyyymmddHHMMSS). In this example,
―stime‖ was used as the start time variable name and set in the property configuration.
/xyzmedia/liveStreams/testStream?CustomerID=1234&stime=20080101120000
4. Add a designated name-value pair for the end time of the token validity window to the query string.
(Start and Stop times are in UTC/GMT format, for example: yyyymmddHHMMSS). In this example,
―etime‖ was used as the end time variable name and set in the property configuration.
/xyzmedia/liveStreams/testStream?CustomerID=1234&stime=20080101120000&
etime=20101231235900
5. Choose the secret number from the Secret Table. Up to ten (10) pre-configured secrets are
available at one time. In this example, Secret #0 was chosen which is ―SecretWord‖ (without the
quotations).
6. Use the HMAC-SHA1 Hash algorithm on the text message from Step 4 using the secret from Step 5
to produce the hash digest. The first 20 characters are used from the result.
dc0f6611f819bc2a632c
7. Take the hash digest and prepend the secret number from Step 5.
0dc0f6611f819bc2a632c
8. Take the original URL (including any desired name-value pairs that were left out of the hash) plus
the token validity start and end time name-value pairs and add a designated name-value pair with
the token from Step 7. In this case, ―hash‖ was chosen as the token variable name and set in the
property configuration.
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testStream?Customer
ID=1234&NotUsed=ThisOne&stime=20080101120000&etime=20101231235900&hash=0dc0f
6611f819bc2a632c
Self-Generated Tokens
Tokens can be self-generated using code samples provided by Level 3. See Appendix D: for sample Perl
code that demonstrates how to add the Standard Token to a URL. (See Appendix F: for sample Perl
code that demonstrates how to add the Flex Token to a URL.) Customers in need of the Java, ASP, or
C++ Token Generator Script should contact their Level 3 Activation Engineer. They are not intended to
be used as-is, but rather to generate example URLs, and to serve as an example to guide an
implementation.
See Appendix G: for details on the format of the tokens.
Token and Security Configuration
Level 3 Operations sets the configuration parameters for this feature after coordination with the customer to
customize the defined set of content, the token type, the shared secret(s), the resulting action to be taken
upon an authentication failure, and the identification of the query string name-value pairs to use for the
validity window as well as those to be excluded from the hashing function.
Further details are available in the CDN Asset Security Technical Brief.
Token Authentication and Dynamic/Smooth/Adaptive Streaming
The usual tactic to implement token authentication for dynamic streaming is to allow a token to cover either
a set of named resources or a directory as defined by the configuration parameters. The directory one is
easily implemented – the configuration can be set to ignore the filename when calculating the token for
comparison purposes.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 51
Confidential & Proprietary – Subject to NDA
For multiple discrete resources, a list of valid files can be provided in the query string. The token is then
calculated over the entire URL (again, without the filename of the resource being requested). Finally, a
check is made to ensure that the filename being requested is one of the ones in that query string list.
For FMS, it is possible to perform authentication checks at connect time rather than play time – that
potentially means that any stream will be allowed over that connection, so it is also generally configured
with the same options outlined above.
Example of Token Auth with a Multiple Bit Rate URL
All files associated to a common media content that needs to be secured under a single token are included
in the query string parameter and delimited with a ―;‖. The files also have to begin with a ―/‖ and are
identified as resource= in the query string element.
URL Before the Token Is Added
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/mp4:sampleVideo500k?resour
ce=/sampleVideo 500k;/sampleVideo800k.mp4;/sampleVideo1500k.mp4
URL After the Token Is Added
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/mp4:sampleVideo500k?resour
ce=/sampleVideo500k;/sampleVideo800k.mp4;/sampleVideo1500k.mp4?hash=046787b8
76e7539d78cc9
In the above example, the Flash Media Server looks at the manifest list style URL and is instructed to start
on the 500k content and is pre-approved to allow transition changes to the 800k & 1500k files without
needing additional tokens. Note that the start and end validity times were not used to simplify the example.
However, the codec specification should be removed before the hash is performed.
Tokens and FMS
If a request for an FLV object does not include the .flv extension on the object name in the URL, the system
adds the extension before computing the hash. For example, given a URL of:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testStream?Customer
ID=1234&NotUsed=ThisOne&stime=20080101120000&etime=20101231235900&hash=0dc0f
6611f819bc2a632c
Before computing the hash, the token authentication mechanism first adds a .flv extension to the filename,
like so:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testStream.flv?Cust
omerID=1234&NotUsed=ThisOne&stime=20080101120000&etime=20101231235900&hash=0
dc0f6611f819bc2a632c
When a customer is computing the hash to add to the URL, the extension should be added. The extension
can then be removed in the actual published URL.
Alternatively, the property can be configured to ignore all file extensions in the computation of the hashes.
One caveat is that two files with identical paths and file names except for the extensions, e.g., stream.flv
and stream.mp4, could potentially have the same token, depending on what name-value pairs are included
in the hash.
Playlist Mode
In an Adobe Dynamic Streaming implementation, token authentication is best achieved at the ―connect‖
level, combined with a defined list of the stream versions that are contained within the dynamic streaming
―playlist‖ (e.g., 500kbps, 750kbps, and 1500 kbps streams). When the token and its valid time window are
verified and access is granted, switching between the versions only requires checking the token without
considering the valid time window as long as the persistent connection to the edgeserver continues. With
this approach, the verification is essentially done at the ―play‖ level.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 52
Confidential & Proprietary – Subject to NDA
Secure Live Ingest
Level 3 ingest token authentication is a method of securing content ingest that protects encoder
connections to Level 3 ingest servers for the purpose of live streaming using authentication and expiration.
Implementation of this feature involves customers writing a script or application to generate the token. The
result is a ―token‖ that is included in the connection process between the encoder and content ingest
server, which is validated along with the time window to reject or accept the connection.
Ingest token authentication is supported for Adobe Flash RTMP-based live streaming.
When using Level 3 edge token authentication and ingest token authentication in combination, you use the
same secret key both for ingest and for edge. For ingest, a name-value pair for the publish event should be
added to the URL to make the token different than the corresponding hash for the play event.
Geographic Location Blocking
Level 3‘s geographic restriction includes two distinct operations — the geographic determination where the
request originated and the evaluation of rules that specify which geographies may or may not have access
to the resource.
Level 3‘s CDN incorporates a geographic database that allows end users‘ physical location on the Internet
to be anonymously identified based on their IP address location. Level 3‘s implementation does not require
the use of cookies or behavioral profiling.
Customers can specify that an arbitrary group of content is subject to a GeoBlocking rule. The rule can be
set on an entire property, on a group of assets (partial directory, file extension, URL parameters), or on an
individual asset.
Once enabled and configured, this function causes the edgeserver, upon receiving a request for a
GeoBlocked resource, to use the client-provided IP address (either the actual IP address of the client or an
IP address in a customer-defined request header) to determine a geo-location. The customer can provide
either an allow list (―whitelist‖) or a deny list (―blacklist‖) of geo-locations. If using an allow list, only requests
originating in the locations in the list are allowed. If using a deny list, requests from included locations are
denied. The customer should also specify a default behavior if no match occurs (i.e., the opposite behavior
of the configured list).
How Geographic Intelligence works in Level 3’s CDN
1. End user requests an object or stream from the Level 3 network.
2. The Level 3 edgeserver evaluates the request for the resource. The edgeserver determines if the end
user is in a geo-location that should be blocked or authorized.
3. If the end user request is authorized, Level 3 delivers the object or stream to the end user. If the end
user is not authorized, the edgeserver redirects the end user to an alternate asset or hand back an
error or to the end user
End User
Request
1
3
2
Level3 CDN
Figure 20: Geo Intelligence Explanation
The customer can specify the behavior of the CDN upon encountering a targeted geo-location. This
behavior can be one of the following:
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 53
Confidential & Proprietary – Subject to NDA
•
200 OK – Serve the resource
•
403 Unauthorized – Deny the request
•
302 Redirect – Send the requestor to an alternate resource/page
Level 3‘s CDN support two levels of Geographic Intelligence:
•
Basic Geo Intelligence: Enables geographic filtering to be applied by Country
•
Enhanced Geo Intelligence: Enables geographic filtering to be applied by Continent, Country, State /
Province, City, MSA, DMA, Zip, Device, and Network.
Further details are available in the CDN Asset Security Technical Brief.
Referrer Blocking
The Referrer Blocking feature allows customers to specify an allow list (―whitelist‖) of hostnames of
referrers (such as the customer‘s own website or known syndication partners) that are granted access to
content within a property. The list can include explicit hostnames as well as wildcarded hostnames such as
*.example.com.
The Referer: header attached to a request for content is compared to this whitelist. If no match is found,
then a 403 (Forbidden) status code is returned.
Additionally, special handling is available in the case that the Referrer header is missing or blank and for
the case where the customer wants to ensure that the Referer: and Host: headers match (i.e., content
is referenced only from same host as the referencing page).
If a Referer: header contains a relative (non-absolute) URI (i.e., one without http://), the Host:
header value is used for the validity check.
Specific resources may be exempted from the Referer: header check. This can allow access to an entry
point or other resource that may be legitimately linked to from search engines or other external sources.
Arbitrary Header Blocking
The Arbitrary Header Blocking facility enables headers other than Referer: to be used to restrict access
to resources by specifying the header name and its acceptable values. If a request for content does not
contain the specified header information, then the 403 (forbidden) status code is returned.
IP/CIDR Blocking
The IP/CIDR Blocking feature can deny requests from designated IP addresses or Classless Inter-domain
Routing (CIDR) blocks. If the IP address associated with the end user matches the IP address(es) or CIDR
block designations specified, then the 403 (forbidden) status code is returned. Both whitelists and blacklists
are supported. The configuration be can set up to return a different return code, if desired.
Origin Server Security Features
Custom Request Header for Origin Cache Fills
The edgeserver can insert a custom header and value on all origin server requests to assist the origin in
identifying the source and validity of the request as coming from the Level 3 CDN. See the section HTTP
Header Manipulation.
SWF Verification
SWF Verification ensures that an On-Demand or Live Flash stream is only played back in authorized Flash
players. By ensuring that Flash streams can only play back in authorized players, the customer can better
control branding, advertising, and media placement. If an end user were to attempt to stream a Flash
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 54
Confidential & Proprietary – Subject to NDA
media asset in an unauthorized Flash player whose assets were protected using SWF Validation, the
media file will not play. This feature is only available for Flash On-Demand and Live streaming.
To use SWF Verification, Level 3 must be given the SWF file(s) to be embedded with a unique signature
profile. The files are then deployed throughout Level 3‘s CDN.
When an end user makes a request for a stream from Level 3‘s edgeserver, the signature of the end user‘s
SWF file is then compared to what is posted on the Level 3 Flash Media Server. If the SWF file signatures
do not match, the stream will not play back.
How SWF Verification works in Level 3’s CDN
1. Customer transfers the SWF player file to Level 3 OSP.
2. Level 3 distributes the SWF files to the edgeservers.
3. The HTML page with embedded SWF player is delivered.
4. The end user requests the Flash stream from the edgeserver. The Level 3 FMS server determines if
the SWF player requesting the stream matches what was uploaded.
5. If the SWF signature matches, the stream plays back to the end user. If the SWF signature does not
match, the stream does not play.
3
Customer
Web Server
End User
Request
1
4
5
2
Level3 CDN
Level 3
Origin
Storage
Figure 21: SWF Verification Flow
How to use SWF Verification in Level 3’s CDN
1. Level 3‘s Origin Storage service must be used in order to upload SWF files into Level 3‘s CDN.
Level 3 provides an Origin Storage account upon activation of SWF Verification.
2. A /SWF subfolder must be created in the directory from where the On-Demand content or Live
streams are managed.
On-Demand examples
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/swf/sampleVideo.flv
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 55
Confidential & Proprietary – Subject to NDA
rtmpe://xyzmedia.f35.c.footprint.net/xyzmedia/rtmpe/swf/sampleVideo.flv
Live examples
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/swf/liveStreams/livestream02
rtmpe://xyzmedia.f35.c.footprint.net/xyzmedia/rtmpe/swf/liveStreams/livestream03
3. Within the /SWF subfolder, the dirindex.txt file contains the names of the SWF files within the
/SWF folder that will be used for verification. The dirindex.txt file should contain:

One line per SWF file

No pathname is needed as part of the filename — just the filename itself

Exclude any SWF files in the /SWF subfolder that should not be considered for verification
Order of Authentication Checks
The edgeservers can be configured to perform multiple authentication checks on a particular piece of
content as multiple methods may be needed for a particular application. For example, a video might require
geographic restrictions but also need token authentication. If two or more authentication checks are
configured for the same piece of content, the following list shows the order of the authentication checks:
1. Simple Referrer, IP/CIDR Block, and Arbitrary Header Blocking
2. GeoBlocking; Complex Referrer, IP/CIDR Block, and Arbitrary Header Blocking
3. Token Authentication
4. Proxy Authentication
Secure Protocols
Secure Delivery
The delivery of confidential information requires the utilization of secure communications for both sensitive
data and supporting content such as images and text. Due to the increased computing power required to
process secure traffic, origin server workload reduction along with significant performance gains may be
realized by offloading those processes to high-performance CDN edge-servers.
The Secure Delivery option includes a dedicated pool of edgeservers configured to cache and deliver
secure, shared content using Secure Sockets Layer (SSL) or Transport Layer Security (TLS) and HTTPS.
Communications with the customer origin infrastructure can also be secured using HTTPS.
Secured Sockets Layer (SSL) is implemented in Level 3‘s CDN through its own Footprint-Secure
architecture which enables the delivery of content and sensitive data of secure channels.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 56
Confidential & Proprietary – Subject to NDA
Figure 22: Footprint/Secure
Level 3‘s CDN supports two levels of SSL:
•
Standard SSL – Level 3 provides a general certificate for the customer(s) to use
•
Premium SSL – Level 3 is provided the certificate to be used
Level 3 supports SSL Version 3 and TLS Version 1.2.
For detailed information on Asset Security see the CDN Asset Security Technical Brief.
Secure Flash Streaming (RTMPE, RTMPTE, RTMPT)
Encrypted Real Time Messaging Protocol (RTMPE) is a propriety protocol unique to Adobe Flash,
designed to be lightweight and transparent to the end user. RTMPE uses a 128-bit encryption capability
that establishes an encrypted connection between the end user client and the Level 3 edgeserver. This
feature is only available for Flash On-Demand and Live streaming.
To manage RTMPE protected On-Demand content and Live streams, the /rtmpe subfolder must be
created within the directory from where the content file and live streams are being managed and the
streaming files placed within it.
On-Demand examples
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/sampleVideo.flv
rtmpe://xyzmedia.f35.c.footprint.net/xyzmedia/rtmpe/sampleVideo.flv
Live examples
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/liveStreams/livestream02
rtmpe://xyzmedia.f35.c.footprint.net/xyzmedia/rtmpe/liveStreams/livestream03
Note: RTMPS is not supported.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 57
Confidential & Proprietary – Subject to NDA
Request and Response Inspection and
Manipulation
HTTP Header Manipulation
Normally, HTTP request headers received from the client are sent to the origin server on a cache fill
request as-is; however, the edgeserver can manipulate the headers before contacting the origin server.
Headers can be added, removed, or modified using a request header modification configuration setting.
Similarly, HTTP response headers received from the origin can be manipulated before the edgeserver
sends the reply to the client using a response header modification configuration setting.
In both cases, the value of the header can either be a static pre-configured constant or a dynamic value
generated using rich header expression syntax.
HTTP Status Code Manipulation
The CDN can be configured to return a specified response code for a request matching a RuleBase filter
(matching a path segment, file extension, etc.). There are 2 possible scenarios:
1. The edgeserver generates its own static response code instead of contacting the origin server. The
HTTP status code returned to the client is pre-configured using a RuleBase ―Error=‖ flag. The body of
the response is a generic ―File Not Found‖ message and cannot be customized.
2. The edgeserver contacts the origin server but alters the HTTP status code received from the origin
before serving the response to the client. The HTTP status code returned to the client is preconfigured using a RuleBase ―Status=‖ flag which specifies a response code to be returned to the
client every time the resource is served but does not affect the retrieval or caching of the content.
For either ―Error=‖ or ―Status=‖ flags the value should be an integer 100-599 which is interpreted as an
HTTP status code to be returned to the client.
If redirection is desired for an ―Error=‖ or ―Status=‖ flag, a 301 or 302 value must be specified with the
desired location indicated by an attached Location: header added via the RuleBase response header
flag.
Response Body Manipulation
By default, the edgeserver passes the body of the response received from the origin onto the client and
stores it in cache if the response is considered cacheable. The CDN does not have the ability to parse
and/or modify the body of the response generated by the origin server; however, it can substitute the
original body with a new message body constructed using RuleBase response body flag.
The same response body flag can be used in the request manipulation part of the RuleBase to generate a
message body without contacting the origin server. The edgeserver-generated body is cached and
delivered to the clients with a 200 HTTP status code. Optionally, the edgeserver can change the response
code sent to the client.
Redirect on Error
Normally, when a CDN server receives an HTTP response from the origin server as a result of a cache fill,
the response is sent back to the client with minimal additional processing. The Redirect on Error feature
allows the CDN server to issue a redirect with a custom-generated Location: header based on the value
of the HTTP status code in the origin response. The redirect can be handed out to the client, or it can be
followed by the CDN server itself, thus causing it to retry the failed cache fill from an alternate location.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 58
Confidential & Proprietary – Subject to NDA
This feature can be used to create a simple failover for the origin and to create custom landing pages for
various error conditions. Example use cases could include:
•
Backup Origin – In case the ―primary‖ origin site is unreachable, overloaded, or simply not able to
locate the requested resource, an alternate origin location can be retried. This feature could be used in
conjunction with the Level 3 Origin Storage
•
Error Page – In the event of an overload or origin unavailability, including during maintenance periods,
the edgeserver directs traffic to an alternate resource, such as an error page, holding queue, or other
application with a different class of service.
This feature is implemented as a configuration filter and as such can be used to apply redirect on error
processing to individual resources or groups of resources.
Utilization of this feature is accomplished by constructing RuleBase rules and requires the following to be
defined:
1. Error codes to match (for example 404 or 5xx)
2. Location: header specifying desired target of the redirect
3. Action to take, either:
 Have the edgeserver follow the redirect and retry cache fill from the alternate location without
delivering the redirect to the client

Have the edgeserver send the redirect to the client which should then follow that redirect to the
alternate location
Advanced Path Rewriting
The Level 3 CDN supports extensive operations to manipulate the path and object name requested by the
client prior to its use in setting the cache key and requesting a resource or authentication from the origin.
The Advanced Path Rewriting (aka Path Substitute) capability can be used to alter the URI of the incoming
request prior to looking for the resource in the cache. This has an effect similar to the Selective Query
String Handling Mode, for example, but it operates on the path as well as the query string.
The path-substitute configuration setting is applied on per property basis and allows for regexp processing
of the incoming URI for find/replace operations. POSIX Extended Regular Expression syntax is supported
including up to 9 sub-expressions and back referencing.
This feature allows for a wide array of ―content adaptation‖ applications in conjunction with other
configuration settings.
Override Vary Header
This feature, VHOMode, allows the manipulation of a Vary: header received from the origin server. The
header may be removed, replaced, or modified by adding or deleting values. May be used to apply
consistent Vary processing across groups or types of resources delivered from disparate locations or origin
server applications.
Alternative Range Headers (URL-based Range Requests)
Customer applications may request a portion of a cached resource by specifying the byte-range request in
the URL rather than using standard HTTP byte range request headers.
The request token may be specified in either of two ways:
1. @<x>-<y>@ coded at the end of the URL
2. x-bits-range=<x>-<y> as the first token of the query string
If configured and present, this results in the CDN serving bytes <x> thru <y> (inclusive) of the requested
resource.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 59
Confidential & Proprietary – Subject to NDA
If the resource is subject to authentication, a revalidation request is submitted to the authentication server
with the byte-range parameter removed.
If the resource is not in cache, a cache-fill request is sent to the origin server. If more than 100KB of the
resource (from the beginning or the current fill-point) is required to satisfy the request, a Range: header is
attached to the request to the origin.
If successful, the origin server returns the requested range with a 206 (Partial Content) response code, the
resource is served to the requestor and a full-resource cache-fill is initiated in the background.
If a cache-fill is in progress that will satisfy the request, the request waits for the fill to finish.
Examples:
http://www.example.com/largefile@<1001>-<1999>@
http://www.example.com/largefile?x-bits-range=1001-1999&custid=12345
X-Forwarded-For Manipulation
The edgeserver has the ability to perform a variety of manipulations on the X-Forwarded-For header
which is intended to provide a ―trail‖ of the various clients and proxies from which a request originated or
through which it was proxied. This feature allows the origin to see the addresses of only desired proxies
and/or the client.
If present, the X-Forwarded-For: header contains a comma-separated list of the IP addresses in the
chain, with the rightmost address being the most recent.
Level 3‘s CDN controls the content of the X-Forwarded-For: header sent to origin servers, so that
information about the external client request is in a useful form.
The entire header may be supplied or an existing header may be appended to or replaced.
This does not affect the headers sent to cache peers which convey forwarding information via a different
mechanism.
Geographic Intelligence
Level 3‘s Geographic Intelligence module is an optional feature for Streaming and Caching Services.
Whether your needs call for basic country level policy management or complex delivery policies based on
multiple geographic and network attributes simultaneously, Level 3‘s Geo Intelligence module offers
customers the capability to seamlessly support their business objectives.
If the country of origin of a request is to be used to determine validity, a configuration setting will indicate
that the edgeserver should determine the country and attach a country-code header to the request. The
header is passed to the origin server or the authentication location with cache fill or revalidation requests.
This facility also provides the origin server the ability to deliver a different version of a resource based upon
the country code. When used, a Vary: header should be attached so that the edgeserver may properly
cache the resource and serve it for subsequent requests from different countries.
Level 3‘s CDN support two levels of Geographic Intelligence:
•
Basic Geo Intelligence – Enables geographic filtering to be applied by Country
•
Enhanced Geo Intelligence – Enables geographic filtering to be applied by Country, State / Province,
City, MSA, DMA, Zip, Device, and Network
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 60
Confidential & Proprietary – Subject to NDA
Performance Features
Compressed Content Encoding
Modern browsers and media players are capable of accepting compressed content to improve download
times and overall performance. Level 3‘s CDN supports several different compression styles and may be
configured to perform compression at the edge, offloading varying amounts of overhead from origin
servers.
Commonly used compression styles are ―gzip‖ and ―compress.‖ The ―identity‖ style indicates no
compression.
Available options further allow compression to be suppressed or ignore encoding headers.
When an Accept-Encoding: header is received, the edgeserver determines which actions are to be
taken, based on the configuration for that object. Available options are:
•
NoConvert – End user Accept-Encoding: headers are passed unchanged to the origin. No
conversions are performed at the edge. This is the default value
•
AllowConvert – Conversion between compression styles (and/or the identity style) is permitted at the
edge. The standard Level 3 Accept-Encoding: header is always sent when requesting content from
the origin, even if one was present in the end user‘s request
•
ServeIdentity – The standard Level 3 Accept-Encoding: header is always used when requesting
content from the origin server, but the identity style is always returned to the client (the client AcceptEncoding: header is ignored). Conversion between compression styles is permitted at the edge, but
only to the identity style
•
Ignore – No special handling is enabled and no conversion is performed. When requesting content from
the origin server an Accept-Encoding: identity header is always used. Any AcceptEncoding: header in the client request is ignored. Any Content-Encoding: header received from
the origin server is also ignored, but passed through unchanged to the client
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 61
Confidential & Proprietary – Subject to NDA
Compression
Method
NoConvert
Accept-Encoding Header
Sent to Origin
End User
Object sent by Origin
Object sent to End User
Uncompressed
Uncompressed
Compressed
Compressed
(Error if incompatible
compression types)
ServeIdentity
Level 3 Standard
Uncompressed or
Compressed
Uncompressed
Uncompressed
Compressed
(Uncompressed if browser
does not accept compressed
encoding)
AllowConvert
Level 3 Standard
Compressed
Compressed by compression
method requested by browser
(Uncompressed if browser
does not accept compressed
encoding)
Ignore
Accept-Encoding:
identity
Uncompressed
Uncompressed
Compressed
Compressed
(Error if incompatible
compression types)
The default Level 3 standard Accept-Encoding: header value is:
deflate;q=1.0,gzip;q=.5,identity;q=.2,*;q=0
Foreground/Background Traffic
Level 3‘s CDN service is used by many different customers with different application profiles. This feature
implements Foreground and Background traffic categories in which Foreground traffic (the default
category) receives priority over Background traffic if both are ―competing‖ for capacity. This is not directly a
performance ―class of service‖ but more an optimization of capacity allocation, where Background traffic is
allowed to fluctuate and consume any available ―spare‖ or idle capacity within the CDN (governed by
bindings policies).
Example Cases
This feature is most directly applicable to applications where the download experience does not have high
end-user perception requirements. Typical uses of the Background class of service are for downloads that
occur in an automatic or transparent fashion and use a programmatic updater or download manager to
facilitate the retrieval of software updates, security updates, media files, etc. Good examples are
applications such as:
•
Automatic Updates – An automatic updater checks with a web service to determine if updates are
available/required. If so, it manages the download in the background completely transparently to the
end-user. It can accommodate interruptions, throttling of the download based on ―idleness‖ of the
connection/computer, even resuming the download if it is interrupted (e.g., the computer is shutdown
during a long-running download). When the download is complete, the updates are installed/applied –
which is often the first/only indication that a download was actually performed
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 62
Confidential & Proprietary – Subject to NDA
•
Antivirus Pattern Updates – All security software, in addition to downloading periodic program updates,
perform regular updates of virus pattern files, spyware detection, and other elements due to the
frequent emergence of new threats. Again, this experience is typically transparent to the end user, is
invoked automatically upon system startup, and runs in the background with perhaps an indication that
an update has occurred upon completion
•
Buy-now/Play-later or time-shifted media delivery – Consider a popular online media delivery model.
The user selects from an available programming list and the selected assets are made available within
a specified amount of time (i.e., next day, 2 hours, etc). Other emerging applications are nVoD (near
Video on Demand), ―TiVo‖-style episodic delivery (always record a certain episode, genre, artist, etc.)
Feature Description
With this feature, a Property or Configuration Set can now be flagged as using the Background profile
(Foreground is the default and the most widely used). This causes the network to allow Background traffic
to be shed to other clusters when an individual cluster is approaching its load limit. In this way, Background
traffic can be bound to a wider cross section of CDN infrastructure and will automatically ebb and flow
based upon traffic requirements of all Foreground traffic. This feature is implemented through enhanced
collection of differentiated metrics at each of the traffic serving clusters and integration of those metrics into
the traffic management system (BDS/DNS) such that Background traffic can be directed to alternate
locations as individual locations become busy.
Extended Library Support (CDXL)
End users demand a high-quality experience when requesting any Internet content – popular or unpopular.
We have combined our massively scalable storage capabilities with the latest caching technologies and
intelligent analytics to deliver content precisely to the right place at the right time, every time. Should a
piece of content become highly popular, our intelligent algorithms instantly detect a change, and populate
the edge caches with the relevant files. Files requested less often are delivered from locations closer to our
storage super nodes to help reduce costs while still providing end users the quality experience they
demand.
Content Delivery for Extended Libraries (or CDXL) is a complimentary service offering within the Caching &
Download segment of the CDN Portfolio that combines the Level 3 Storage and Caching & Download
solutions together with an Intelligent Popularity-based Redirection Service to effectively support the
distribution and delivery of very large libraries of content that often have an extensive ―long tail‖
consumption pattern.
The architecture of this capability consists of a standard Caching & Download service implementation in
which requests for a customer‘s content get directed using standard Best Distributor Selection (BDS) to
appropriate edge caching clusters. For the set of content which is configured as CDXL-enabled, if the
content is not currently in the cache, instead of directly making a cache fill request to the configured origin,
the caching cluster first contacts the Popularity Service that runs as a distributed web service overlayed
across a subset of edgeserver cluster locations. This Popularity Service keeps a running histogram of all
requested assets across the configured properties. Based upon a set of pre-defined thresholds, the
Popularity service returns a response to the requesting cache which determines where the resource is
served from. There are 3 basic types of response:
•
Serve from Origin – This is the case in which the requested resource has NOT achieved a popularity
threshold indicating that it has been requested frequently enough for retrieval into the CDN. This
response returns in the form of a standard HTTP redirect which causes the edgeserver to pass the
redirect along to the client which will then make a subsequent retrieval request from the designated
Origin location. It is important to note that the configured Origin can be any arbitrary host which
contains the content. Therefore, the origin could be the Level 3 Storage service or the customer‘s own
Origin server.
•
Serve from Parent – This is the case in which the requested resource has achieved a degree of
popularity that is sufficient to warrant caching the resource in a subset of locations that is broader than
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 63
Confidential & Proprietary – Subject to NDA
the Origin but not as extensive as the Edge footprint. This case assumes that there is the existence of a
hierarchy of caches configured as a Parent or mid- tier. It is important to note that this is not necessarily
the case and that the threshold parameters can be configured in a variety of ways to support the
existence or absence of a Parent tier or hierarchy, depending upon the needs of the application. In this
case, the response to the requesting cache, again, takes the form of a redirect issued to the edgeserver
which is then issued to the client. In this case, rather than the origin hostname, an alternate hostname
configured via ITM policy is issued that directs requests to the Parent hierarchy based on bindings,
performance, and load-based policies within the CDN.
•
Serve from Edge – This is the case in which the requested resource has become sufficiently popular as
to warrant retrieval and caching at the edge of the network. In this case, the response to the requesting
cache is a redirect with the ―follow‖ flag set (see Follow Redirects feature described below). This
causes the edgeserver to follow the redirect to the source of the content rather than issuing the redirect
back to the client. The result of following the redirect is that the edgeserver receives and caches the
resource. Subsequent requests would then be served directly from cache per normal processing with
all normal cache control, aging, and other aspects of the CDN applying.
The general operation of the CDXL service is pictured below:
Figure 23: Scenario: Content Served from Edge (“Popular” Scenario)
1. The edgeserver receives a request for content that is designated as ―Extended Library‖ using
Supername or property configuration rules (i.e., ―Long tail‖ feature is enabled on a per-Property
basis). Extended Library content results in a request being generated to the Popularity Service if the
resource is not already in cache – implying that it has not yet exceeded the ―edge‖ popularity
threshold.
2. The Popularity Service tracks popularity of resources using request histograms. Popularity
Thresholds are established at setup to determine whether to serve resources from Edge, Parent, or
Storage tier.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 64
Confidential & Proprietary – Subject to NDA
3. In this scenario, the resource has achieved ―edge‖ popularity threshold. The Popularity Service issues
an HTTP redirect (302) response to the edgeserver. The redirect destination corresponds to the
normal cache-fill path configured for the property.
4. The HTTP Redirect is received by the edgeserver that received the original request. The edgeserver
follows the redirect itself instead of passing it back to the client.
5. Upon receiving the response from the Parent or Origin, the edgeserver caches the resource per the
normal process. At this point, subsequent requests for this resource can be satisfied directly out of
this edge cache until the resource expires or is aged out of the cache.
6. The edgeserver serves the requested resource to the end user.
Operational Explanation
The Popularity Service is a fairly simplistic mechanism whose purpose is to track requests for resources
across a period of time, determine whether a given resource has reached one of the pre-defined popularity
thresholds, and based upon the threshold achieved, tell the cache making the request how/where to
service the request. The popularity service does not itself take into account other metrics like load, network
performance, etc. Once the appropriate response (a redirect) has been generated, the edgeserver or client
following the redirect will make use of an additional BDS or ITM policy decision about which physical
infrastructure will service the subsequent redirected request.
The Popularity Service is designed around resource libraries on the order of 100 million resources. Beyond
this limit the library would have to be segmented across multiple Properties or Configuration Sets.
In order to track popularity across a time domain and provide appropriate aging characteristics, the
Popularity Service establishes a per-resource histogram containing some number of buckets, each
representing a unit of time. While the number of buckets and time per bucket are configurable per Property,
they are established during configuration and are anticipated to be relatively static for the Property. Each
bucket tracks the number of requests received within the allocated time. Popularity is determined by the
sum of the request counts across all the buckets. The combination of buckets and time intervals is intended
to provide a balance between responsiveness (i.e., detecting increasing/decreasing popularity within a
suitable amount of time), and data volume (i.e., amount of popularity data to have to store in memory). We
configure the Popularity Service to track popularity across some small number of hours or days (e.g., 6 –
48 hours). Further the number of requests in a given unit of time that triggers the various thresholds is
anticipated to be reasonably small. Some small number (tens to dozens) of requests in that range of time
would be anticipated to be sufficient to move a given resource up the popularity ―stack‖.
The following diagram depicts some of the mechanics of the Popularity Service and how popularity
histograms and thresholds interact.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 65
Confidential & Proprietary – Subject to NDA
Figure 24: Object Popularity and Thresholds
Follow Redirect
When an edgeserver receives a redirect from an origin server in response to a cache-fill request, it
ordinarily returns the redirect to the client where a new request will be generated and submitted to the new
location. The Follow Redirect option allows an additional custom header to be detected that enables
special handling of redirects.
Utilization of this feature retrieves the resource from the indicated redirect location, serves it to the end
user, and stores it in cache as appropriate without the additional overhead required to return the request to
the client.
The origin server may attach a flag to specify the desired redirection behavior for a response.
This feature can be implemented on a property-wide basis or restricted to particular resources via a typical
match, such as for a path element or a resource file name extension. The feature has the following options:
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 66
Confidential & Proprietary – Subject to NDA
Option
Definition
header
Inspect the response headers for the presence of an X-WR-Features: header. If present and the header contains the
name/value pair follow=true, then the Follow Redirect mode is applied to this response. Otherwise, the redirect is
processed normally
always
Always follow redirects when received for this property or resource unless the X-WR-Features: header is present and
contains a follow=false directive
never
Do not process follow redirects for this property or resource
Other Considerations
This feature can be used recursively and will follow redirects up to an arbitrary depth (by default 32).
This feature can be applied to the various ―flavors‖ of redirection (temporary and permanent) and can be
configured to be applied to an arbitrary status code response.
Large File Delivery
Level 3 can normally support delivery of files up to 7 GB in size. Operations can work with a customer to
develop custom configuration settings to deliver files sizes above 7 GB. See your sales engineer for more
details.
China In-Country Delivery
In order to improve the speed and performance of delivery to end user located within China, delivering
content from edgeservers located in-country is important. Without this option, all content is delivered to end
users located within China from edgeservers outside of China.
Level 3 currently supports only non-secure delivery within China with this option.
The customer needs to sign a special Level 3 China contract amendment and have their own ICP license.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 67
Confidential & Proprietary – Subject to NDA
Streaming Features
Dynamic Streaming
Dynamic Streaming is a new feature Adobe has introduced into FMS 3.5. It is a new quality of service
monitoring feature that detects any changes in end-users bandwidth and, during playback, automatically
switches to a content bit-rate that more appropriately matches the quality of the end user‘s connection. This
ensures a high quality, uninterrupted stream. Dynamic Streaming is ActionScript-controlled with newly
introduced methods and requires Flash CS4 or Flash Player 10 and above to play the stream.
Smooth Streaming
Smooth Streaming is a new feature Microsoft has introduced into Silverlight. It adapts the quality of the
video stream sent to the player in real-time based on the player‘s bandwidth and CPU load (for video
rendering) by changing the stream sent to the player to either a higher or lower bandwidth version if
available. The streams are delivered in chunks over HTTP. End users with faster video-processing
capabilities and higher bandwidth receive higher quality streams, and those with slower processing or
lower bandwidth receive a lower-quality stream that is appropriate for the capabilities and environment of
their player.
QuickTime X (iPhone) HTTP Streaming
Apple has introduced QuickTime X which supports HTTP streaming. As with Smooth Streaming, it adapts
the quality of the video stream sent to the player in real-time based on the player‘s bandwidth and CPU
load by changing the stream sent to the player to either a higher or lower bandwidth version if available.
The streams are delivered in chunks over HTTP along with the manifest. The player has to pull the
manifest as it is not included with the chunks.
Flash Scrubbing
Flash ―scrubbing‖ refers to the use of various navigational elements to jump forward or backward in a
media asset during progressive download playback. This is often implemented using various user interface
elements on the player presentation such as forward/backward arrows, slider bars, ―chapter‖ indexes/jumppoints, etc. This capability is also sometimes referred to as ―FLV Seek‖. It is important to note that while
standard player implementations typically include these functions (at least fwd/rew and play progress bar),
these can be disabled via metadata in the media asset or by the customer ―wrapping‖ the core player
window within a custom UI by skinning, or embedding on a web page. As such, there is no universal
standard for implementing scrubbing or in-play navigation. It is up to each property and indeed the
technical approach taken by the site developers.
In the end, the effect of enabling in-play navigation is that the player can make a series of ―range requests‖
for portions of the media file. As is typically the case, if the file is being streamed (using the proprietary
Flash Media Server) the player and the server have the appropriate interfaces to accomplish this natively.
However, as Flash delivery via HTTP progressive download is starting to dominate many segments of the
media delivery market, there are some issues that arise:
•
Range Request – When a scrubbing operation is performed, the player makes an associated ―range
request‖ (request for certain bytes of the resource). While HTTP supports a standard range request
format via request headers, the Flash player does not support manipulation of standard HTTP headers.
This has tended to force developers to use non-standard practices for making range requests for Flash
progressive download content. This is usually implemented using parameters or tokens within a query
string
•
Metadata Stitching – When a portion of a media file is requested, the player expects the presence of
metadata in the file describing the file, various keyframe indices, and other elements in order to
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 68
Confidential & Proprietary – Subject to NDA
successfully render the partial ―chunk‖ of the media file. Alignment may also be required to ensure that
the requested chunk starts at a keyframe and other factors specific to the Flash codecs, but these
considerations are beyond the scope of this feature
This feature is designed to deal with both of these pre-conditions to delivering partial content requests for
Flash-encoded media content over HTTP.
Implementation
Flash scrubbing is enabled at the Property / Configuration Set level. The following parameters govern the
behavior of this feature:
•
Scrubbable – a Boolean value that indicates that this feature is either enabled or not for this property
(i.e., the feature is ―on‖ or ―off‖). Default is ―off‖
•
Scrub_Extensions – specifies appropriate filetypes. The system checks the filetype/extension on the
requested URL to ensure that it is one of the affected file types
•
Scrub_Tokens – identifies the URL ―Range Tokens‖ that will specify the starting and ending range
values for the request in the Querystring element of the URL. As with other similar features, we allow
the customer to specify the tokens that they use. This avoids creating a syntactic constraint on their
publishing system, and better enables us to participate in a multi-vendor implementation scenario by
providing flexibility around the format of the URL. The value of the tokens is a string literal that will be
matched in the URL. Two possible tokens can be specified:

Start – the token that will represent the starting byte of the range request (e.g., ―start‖, ―s‖, ―from‖,
etc.)

End – the token that will represent the ending byte of the range request (e.g., ―end‖, ―e‖, ―to‖, etc.)
The following diagram depicts how Flash Scrubbing is supported by the CDN.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 69
Confidential & Proprietary – Subject to NDA
Figure 25: Flash Scrubbing
Supported Flash Streaming Protocols
The CDN platform supports RTMP, RTMPE, RTMPT, and RTMPTE.
RTMPS is not supported.
FCSubscribe Support
Level 3 supports the Adobe FCSubscribe client-to-server call syntax that is used to begin sending the live
Flash stream to the player and begin buffering and then playing. This call sends a message to the
edgeserver to pull the live stream from the ingest server if it is not already being delivered to that
edgeserver.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 70
Confidential & Proprietary – Subject to NDA
Vyvx Broadcast Services
Level 3 Vyvx Broadcast Services
We are America‘s largest provider of integrated video transmissions services, providing customers true
end-to-end solutions using our network of fiber switching centers, teleports, and satellites. Level 3 Vyvx
offers acquisition and distribution video services that the media industry has relied on for more than 18
years.
We support your needs to transport broadcast-quality video content anywhere at any time with our 24 x 7
booking and customer care center, online vyvxInView® system, and Local Interconnectivity Directory (LID),
all used to manage your video transmission needs.
We offer both occasional and dedicated services, depending on your solution requirements.
From our analog services to our digital standard definition (SD) and high definition (HD) offerings, our
Level 3 Vyvx services set the pace for the media business by achieving industry-leading SLAs and by
maintaining worldwide connectivity.
Additional components of the Vyvx offering include:
•
Award-winning customer service and media industry expertise
•
Largest terrestrial HD footprint, as well as largest domestic teleport footprint
•
Fiber connectivity to more than 115 cities in the United States, Canada, UK, Continental Europe, and
Japan
•
Direct connectivity to more than 100 professional sports venues in the United States and Canada
•
Full-service, 24 x 7 secure facilities staffed with an experienced and responsive team of professionals
to provide trouble-free, reliable operations
•
Accessibility to all major television markets
•
Continual network investments to support your performance
Terrestrial Service Offerings
The Level 3 Vyvx portfolio is a suite of offerings to cover all video backhaul needs, from video conferencing
and talking-head interviews, to dedicated cable content and live sports events. Also, our First Video Affiliate
(FVA) partners are available for ad-hoc, U.S. video transmission and production needs by maintaining fulltime connectivity to our network. This provides end-to-end solutions for all types of media, including postproduction and graphic design services.
Terrestrial services include Analog Transport, MPEG, Digital Transport, and HD offerings.
Teleport and Satellite Service Offerings
The Level 3 Vyvx offerings rely on three strategically located Teleports in Atlanta, Denver, and Los
Angeles, which Level 3 owns and operates, in addition to 22 Virtual Teleport cities, which offer analog
backhaul to the physical teleport facilities at no additional cost. Our Teleports offer a wide range of
dedicated and occasional teleport and transponder services, including analog and digital transmission,
encryption, standards conversion, HD encoding, tape playback and record, and colocation.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 71
Confidential & Proprietary – Subject to NDA
Live Encoding Services
Level 3SM Encoding Services provides scalable, redundant, and cost-effective encoding as a facilitator for
the delivery of IP-based live streaming content in the industry-leading formats. Today these formats are
part of media platforms that include Adobe Flash, Microsoft Silverlight, and Apple QuickTime.
Encoding is the process whereby a video source is converted from the format in which it was captured,
usually ―uncompressed‖ (highest quality available) or of much higher quality, into a compatible format,
typically ―compressed‖, that is suitable for IP-based delivery. Encoding is accomplished using software and
hardware which is licensed as a product or service and ―codecs‖ which are compression algorithms that
are used to reduce the size of content while maintaining various levels of quality.
In contrast to on-demand encoding or transcoding, live encoding is the conversion of a ―live‖ video signal in
one format, typically at broadcast quality, to a format that is suitable for IP-based live streaming delivery.
Live encoding is a key component in the digital media workflow required to delivery IP-based live streaming
content, which typically consists of the following:
•
Content creation (camera and production, onsite at the venue)
•
Signal acquisition (video signal transmission, commonly accomplished using terrestrial means or
satellite downlink from the venue, ultimately to the encoding facility)
•
Live encoding (conversion of the live video signal into compatible formats for delivery online)
•
Distribution (ingest from the encoding facility into the appropriate networks, including Level 3 CDN)
•
Consumption (viewing of the content by the end user)
•
CDN
Streaming
Vyvx Broadcast
Encoding
Services
Origin
Storage
Cache/Download
Network
Figure 26: Broadcast Encoding to Streaming
Key features
Key features include:
•
Geographically disperse locations for high availability, flexibility, and redundancy
•
Support for multiple sources of signal acquisition including:
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 72
Confidential & Proprietary – Subject to NDA
•
•

Fiber transmission using Vyvx services with SDI (SD and HD quality input signal sources) or ASI
(SD only)

Satellite downlink using Level 3 Teleport, Virtual Teleport, and consumer grade services

Support for dedicated (24/7) and occasional use
Multiple output streaming formats including:

Microsoft Windows Media (VC1-encoded and H.264-encoded content)

Adobe Flash (VP6-encoded and H.264-encoded content)
Adaptive streaming

Microsoft Smooth Streaming

Adobe Dynamic Streaming

Apple HTTP streaming for the iPhone*
•
Archive for on-demand playback*
•
DVR for rewind*
•
Site and stream level redundancy
Supports the following value-added options:
•
Conditional access control. Protect (i.e., prevent unwanted possession and use) and target (e.g., serve
different quality based on factors such as device) content at the ―link‖ and ―stream‖ levels through token
authentication, geographic intelligence, and encryption (protocol and DRM) during and after a live event
•
Live DVR/PVR. Rewind and pause live streaming content during a live event
•
Auto-archive. Provide access to live streaming content after a live event is completed through true ondemand, file-based playback
•
Live content control. Prevent portions in live streaming content from being displayed (in accordance to
content owner/publisher demands) automatically with a schedule defined using an Electronic
Programming Guide (EPG), and optionally replace this content with a slate
•
Enhanced monitoring. Assurance that live streaming content is working as intended with automated
and ―eyes on glass‖ support. This is above the standard guarantee that live streaming content is active
(i.e., services are operating)
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 73
Confidential & Proprietary – Subject to NDA
Management Services
Level 3 Media Portal
The Level 3 Media Portal is a robust online customer tool, providing fingertip access to information at any
time. As a single point of secure access, the portal provides a transparent interface to back-end source
systems to offer more efficient resolution of service issues.
The Portal also provides access to a broad set of functionality to view and manage service needs.
Supported functions include ordering, ticketing, billing, network performance reports, and CDN functions.
Viewing permissions are customized based on user-specific requirements.
The CDN-based functions include Reporting and Invalidation.
Reports may be viewed on-demand or scheduled for email delivery and may include URL-based
information (hits, download sizes, errors, etc.), performance, and SLA compliance, as well as Property,
regional, and storage usage.
The Dashboard provides traffic data, including hits, sizes and times in map, list, and chart formats.
Figure 27: Portal Dashboard
URL-based data may display only the most popular resources or only those generating the most errors.
The CDN Invalidation Portal provides on-demand invalidation of cached resources to assure the freshness
of web-based content when automated expiration policies are insufficient. Resource designations may be
identified in a web form, submitted from a file, or transmitted using a command line interface. Resources to
be invalidated are identified by origin path using expressions with wildcards and flexible match-criteria.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 74
Confidential & Proprietary – Subject to NDA
Invalidations are broadcast to all applicable CDN servers in the network. The status of submitted
invalidations may be monitored and reported as pending, in-process, or complete.
See the on-line Help in the Media Portal for a complete description of the reporting and configuration
features.
Logging
In addition to the reports available in the Level 3 Media Portal, standard and Remote Logs can be made
available for customers to download.
Analysis of transaction logs can provide insight into the utilization and performance of web sites,
applications, content, and hardware/software resources, as well as being an invaluable tool for analyzing or
debugging new or errant functionality. Response times, resource usage, traffic, trending, geographic
patterns, errors, and a wealth of available information can be derived from the logs generated by CDN
edgeservers.
Since the volume of log data generated by a busy server can be extremely high, handling of the sizeable
log files produced requires planning and consideration of potential value gained vs. the resources required
to retrieve and analyze the data.
Log volumes may be reduced by sampling (keeping only every nth entry) but are increased if Cookie:,
Referer: or User-agent: (OS/Browser/Media player specifications) headers are needed.
Standard log data may be retrieved for analysis and archival with the CDN Advanced Log Retrieval Tool
(ALR). Versions are available for installation on Windows or UNIX workstations.
Level3
CDN
Standard
Logs
Level3 Log
Collection
Servers
Customer
Workstation
With ALR
Remote
Logs /
Download
Receipts
Customer
Remote Logging
HTTP Server
Figure 28: Log Processing
CDN Configuration
Log generation at the edgeservers may be configured by the specification of options at the Configuration
property level or for all properties belonging to a customer.
Available options include:
•
Keep entries for standard log processing
•
Select entries for Remote Logging
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 75
Confidential & Proprietary – Subject to NDA
•
Keep only every nth entry (sampling)
•
Log Cookie:, Referer:, or User-agent: (Browser/Media player specifications) headers
Additionally, a configuration flag may indicate log suppression at the resource level using flexible patternmatching notation (e.g., images/*.jpeg).
By default, the log file entries contain the entire URL, including the full query string, as presented by the
end-user, even if CDN is configured to ignore query strings for the purpose of caching (QSHMode).
Download Receipts (Remote Logging)
The Download Receipts feature (Remote Logging) configures the CDN to notify a remote server about
certain requests whose responses either served the last byte of the requested resource or resulted in an
error. The edgeserver transmits the Download Receipts to the appropriate customer-designated Remote
Logging collection server.
With this feature enabled, the edgeserver sends data about these events as they occur instead of waiting
for the standard log collection and reporting processes.
The Download Receipt can include the following for each applicable event – timestamp, resource ID, URL,
download size, download time, IP address, status codes, and flags. Current remote log records are
collected on a time interval basis and forwarded to a collection point specified by the customer.
The customer must host a suitable HTTP server with adequate transaction processing and storage
capacity.
See the Logging / Log Retrieval Remote Logging Technical Feature Brief for more details.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 76
Confidential & Proprietary – Subject to NDA
Professional Services
Event Management Services
Level 3 Communications offers an end-to-end, global Event Management service for online event delivery
and support. We combine our signal acquisition experience with Level 3 Encoding services and CDN
platform and deliver it to you with project management and professional services expertise.
Our Event Management offering combines a powerful, end-to-end feature set with centralized project
management and operations assistance. We connect you with the technical expertise and day-to-day
assistance necessary to deliver mission critical events at the highest levels of performance. Our
comprehensive platform reduces the need for multiple vendors to deliver and support both live and ondemand events, to offer you a uniquely qualified offering.
Benefits
End-to-End Delivery and Support for Online Events
Our comprehensive platform reduces the need to work with multiple vendors to deliver and support online
events.
Tested Event Delivery Experience
We combine a 20-year signal acquisition track record with our Encoding Services and CDN platform to
bring proven services to online audiences.
Combined Technology and Expertise
Our powerful, end-to-end feature set is delivered with centralized project management capabilities and
operations assistance to help bring high performance to your mission critical events.
Service Details
•
Signal acquisition services (Level 3 Vyvx Services)
•
Level 3SM Encoding services (using Adobe Flash, Windows Media, Smooth Streaming, Apple
QuickTime, and Move Networks technologies)
•
CDN services including progressive download delivery, streaming support and storage
•
Content Management System support (EU only)
•
Self-service provisioning tools
•
Reporting and analytics
•
Dedicated project management support
•
Dedicated technical resource support
Integration Services
Level 3 offers different levels of standard and custom integration services, depending on customer
requirements. Integration services may include the following tasks:
•
Content delivery optimization
•
Customer token authentication generation and validation
•
Geo-blocking and geo-targeting rule set generation
•
Content ingest mechanism integration
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 77
Confidential & Proprietary – Subject to NDA
•
Video player implementation and integration
•
Provisioning of streaming mount points
•
Storage account configuration
•
Log file delivery automation
•
Third party CMS/DAM integration
Level 3 is able to undertake custom integration services as required for specific customer implementations
and projects. Cross-functional teams with appropriate domain expertise across Caching, Streaming,
Storage, and ITM can be assembled as required to address specific integration requirements.
Application Development Services
In addition to Integration Services, Level 3 is able to undertake complex application development projects
that leverage our content delivery platform. Specifically, Level 3 Media Delivery services comprise a set of
application level components designed to enable management of online content. Media Delivery services
provide comprehensive support for content management, protection, and monetization together with a
flexible reporting package.
Level 3 has extensive experience in the implementation and service management of customized
application services. Specific functionality included in past implemented solutions includes: live and ondemand streaming facilities, Digital Rights Management (DRM), Geo-Targeting solutions, EPG (Electronic
Program Guide) integration, Auto Archiving of live broadcasts, full reporting capabilities, transaction
processing and subscriber management for paid content solutions.
Project management methodology for custom application development follows Rational Unified Process
(RUP) together with a combination of best practices in project management areas that are not covered by
RUP.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 78
Confidential & Proprietary – Subject to NDA
Appendix A: Using ASX Files
Level 3‘s Microsoft Windows Media platform has the ability to use Advanced Stream Redirector files also
known as ASX files. ASX files allow streaming links to be embedded as an abstraction method rather than
directly exposing the streaming links to the media player. The example provided below is only for
demonstration.
<ASX version = "3.0">
<TITLE>Simple ASX Demo</TITLE>
<ENTRY>
<TITLE>An Entry in a Simple ASX</TITLE>
<AUTHOR>Level 3 Communications</AUTHOR>
<COPYRIGHT>(c)2008 Level 3 Communications, LLC</COPYRIGHT>
<REF HREF = "mms://Level 3mediawm.fplive.net/Level 3media/testFile.wmv" />
</ENTRY>
</ASX>
Advanced ASX functionality such as generating dynamic library lists and inserting playback times is
beyond the scope of this document.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 79
Confidential & Proprietary – Subject to NDA
Appendix B: Firewall Port Access
Some end users have very restrictive firewall policies and do not allow unfettered access to the Internet. It
may be necessary to open up specific ports in order to enable streaming media to be played back by the
end user. The following is a list of IP ports that should be enabled in order to allow for streaming services:
Microsoft Windows Media
Application
Protocol
Protocol
Port
Number
Description
MMS
UDP/TCP
1755
A proprietary protocol used with earlier versions of the Media Player. Often still used as
the default streaming protocol as it assures compatibility with end users. Level 3‘s
streaming service is designed to take advantage of rollover capability where Level 3 first
attempts to connect to the player using UDP and then rollover to TCP. The MMS
protocol was depreciated with version 9 of the Microsoft Media Player; however, it can
be used with current Media Players. MMS is only used as a rollover protocol in Windows
Media Player 11.
MMSU
UDP
1755
Forces requests to only use UDP as the protocol
HTTP
TCP
80
Secure streaming.
Real Time
Streaming
Protocol
(RTSP)
TCP
554
Streaming RTSP over TCP. Not backwards compatible with older Windows Media
Players.
RTSPU
UDP
5005
Forces the RTSP request over UDP only. Not compatible with older Windows Media
Players.
Application
Protocol
Protocol
Port
Number
Description
RTMP
UDP
1935
Default streaming port
RTMPe
UDP
443
Secure streaming
RTMP
UDP
80
Streaming over HTTP
RTMPt
TCP
80
Tunneling RTMP within HTTP packets
Adobe Flash
The Level 3 streaming platform will progresses through the various ports in an attempt to connect to the
end user. It is recommended that customers specify the protocol to improve startup time and minimize the
cycling time that the end user player would otherwise go through as it progresses through the various port
options.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 80
Confidential & Proprietary – Subject to NDA
Appendix C: Protocol Rollover
Level 3‘s streaming platform supports protocol rollover to help mitigate issues with NAT and firewall
devices. If the customer specifies a generic protocol such as RTSP or RTMP, the end user player will
attempt various connection options with the edge Level 3 streaming media server until it finds a suitable
port/transport method for stream delivery.
Windows Media
When Windows Media Player 9 Series or later or a player that uses the Windows Media Player 9 Series
ActiveX control tries to connect to the server using a Microsoft Media Server (MMS) URL moniker
(mms://) in the connection URL to a streaming content, for example:
mms://Server_Name/File_Name.wma
The server automatically delivers the content by using RTSP.
1. The server will try to deliver the content using RTSP with TCP-based transport (RTSPT).
2. If the Player does not support that protocol, then the server tries to deliver the content using RTSP
with UDP-based transport (RTSPU)
3. If that connection is also not successful, the server will try to deliver the content by using the HTTP
protocol
When an earlier version of the Player, such as Windows Media Player for Windows XP, tries to connect to
the server using a URL with an mms:// prefix, the server automatically try to deliver the content by using
the HTTP protocol.
As mms continues to be used as the default streaming protocol, it has been depreciated by Microsoft.
However, the Level 3 streaming platform will auto negotiate to an acceptable port.
A specific transport can be forced to use a protocol such as RTSPT, RTSPU, MMSU, or MMST. If a
particular protocol is specified and the client player to connect, the Windows Media Server will not attempt
to auto negotiate to a different delivery protocol.
Adobe Flash
The end user client will attempt to auto negotiate its port/protocol differently depending upon which protocol
is initially requested.
RTMP – Real Time Messaging Protocol
1. If the port is not specified, the server will attempt to connect over port 1935
2. The sever/client will then attempt to negotiate a handshake over port 443
3. Subsequently, the server/client will attempt to connect via RTMPT over port 80
RTMPe – Encrypted Real Time Messaging Protocol (available with Secure Flash Streaming) Requires
Flash Player 9,0,115,0 minimum; Adobe AIR; Adobe Media Player
1. If the port is not specified, the server will attempt to connect over port 1935
2. The sever/client will then attempt to negotiate a handshake over port 443
3. Subsequently, the server/client will attempt to connect via RTMPTE over port 80
RTMPt – Real Time Messaging Protocol via TCP (encapsulated RTMP over HTTP)
1. The server/client will attempt to handshake over port 80
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 81
Confidential & Proprietary – Subject to NDA
RTMPte – Encrypted Real Time Messaging Protocol via TCP (available with Secure Flash Streaming)
1. The server/client will attempt to handshake over port 80
Notes
RTMPS and SSL encrypted delivery of RTMP streams is not supported.
H.264 playback in Flash Player supports most popular profiles including Base, Main, and HiP (High
Profile). The F4V format will be a new format moving forward that is a subset of MPEG-4 ISO 14496-10
and AAC+ (ISO 14496-3).
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 82
Confidential & Proprietary – Subject to NDA
Appendix D: Legacy Flex Token
Support
Token Types
Level 3 supports two different token types. The Flex token is supported as a legacy feature and should only
be used when compatibility with existing implementations is required. The Standard token should be used
in all new implementations. Each can be used with both streaming and with caching services.
Flex Token
Standard Token
Hash Algorithm
MD5
HMAC-SHA1
Hash Contents
Take the full URL and remove the protocol,
hostname, and unneeded query string
parameters
Take the full URL and remove the protocol,
hostname, and unneeded query string
parameters
Add start time, end time, #SharedSecret
Add any desired arbitrary or time validity tokens
Time Format
yyyymmddHHmmss in GMT or in epochseconds
yyyymmddHHMMSS in GMT or in epochseconds
SaltValue/SecretKey
The key should be expressed as a string value
less than 64 characters and should not include
the following Special Reserved Characters:
ASCII character string of up to 64 bytes
No Reserved characters
<>\?%&'#"{}|^[]*~$
Secret Table
No
Yes, up to 10 active secrets with Validity Times
for the secrets
Hash / Token Length
in URL
32 characters / 120 characters
20 characters / 21 characters
Token Query String
Parameter Name
token
Configurable, for example ―hash=‖
Base64 Encoded
Yes, start time, end time, and the hash are
Base64 encoded to create the token
No
Start/End parameter
names
start_time= and end_time=
Configurable, for example ―stime=‖ and
―etime=‖
First character designates secret number used,
then first 20 characters of calculated hash
Figure 29: Comparison of Flex and Standard Tokens
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 83
Confidential & Proprietary – Subject to NDA
Appendix E: Perl Self-Generated
Token Code Sample for Standard Token
#!/usr/bin/perl
# Sample code Copyright (C) 2009, Level 3 Communications LLC
# This sample requires perl modules freely available from CPAN.
# To obtain the needed modules, use e.g., "cpan -i Digest::HMAC"
## Parameters you would normally obtain from your configuration
$gen = "3"; # secret key generation number (0-9)
$key = "There's no place like home!"; # secret key
## Process an abspath URI
$uri = "/path/to/resource?sessionid=12345"; # the URI to authenticate
print "Orig URI: $uri\n";
$hash = ComputeHash($gen, $key, $uri, \$error); # Compute the hash code
$uri .= "&misc=abcde"; # Append a non-authenticated element
$uri .= "&hash=$hash"; # Append the hash code
print $hash ? "New URI: $uri\n" : "$error\n";
print "\n";
# Import the HMAC-SHA1 library
use Digest::HMAC_SHA1 qw(hmac_sha1 hmac_sha1_hex);
# ComputeHash() - compute the hash authenticator to append to a URI
#
# Parameters:
# IN $gen: A number 0-9 identifying the key generation number
# IN $key: A character string key between 20 and 64 bytes long
# IN $uri: The URI, less the hash code, to be authenticated
# OUT $rerr: Reference to scalar to return any error message
#
# Returns the hash string value if successful, otherwise returns undef
# and an error string via $$rerr
sub ComputeHash
{
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 84
Confidential & Proprietary – Subject to NDA
my ($gen, $key, $uri, $rerr) = @_;
# Most of this error checking would not be necessary in a production
# environment - it is provided for illustration of usage only.
$$rerr = "ERROR: Invalid GEN value", return undef
unless $gen =~ /^\d$/;
$$rerr = "ERROR: Invalid key length", return undef
unless length($key) >= 20 && length($key) <= 64;
$$rerr = "ERROR: No URI provided", return undef
unless $uri;
# compute the hash and check to be sure it worked
my $hmac = hmac_sha1_hex($uri, $key);
$$rerr = "ERROR: Failed to compute hash!", return undef
unless defined($hmac);
return sprintf "%1.1s%20.20s", $gen, $hmac;
}
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 85
Confidential & Proprietary – Subject to NDA
Appendix F: Perl Self-Generated
Token Code Sample for Standard Token
#!/usr/bin/perl
# TokenGenerator.pl
# Level 3 Communications
# October 1, 2008
# generateToken Function
#
# Creates a base64 token to use with
# Level 3 Communications CDN Streaming Token Authentication feature
# Server must be using GMT
#
# Input: String, StreamURL
# Output: String, Token (32-character hexadecimal md5 hash)
# use Digest::MD5 qw(md5_hex); use MIME::Base64;
sub generateToken($url)
{
# CUSTOMER - Change to your Customer Secret Key
$key = "secret";
# CUSTOMER - Change to token expiration time (in seconds)
$delay = 600;
# CUSTOMER - Use debug flag and logfile for troubleshooting
$debug = "false";
$logfile = "c:/logs/TokenGenerator.log";
# Set start_time to current time (Format: YYYYMMDDHHmmss)
($sec,$min,$hour,$mday,$mon,$year) = gmtime(time);
$start_time = sprintf("%04d%02d%02d%02d%02d%02d", $year+1900, $mon+1, $mday, $hour, $min,
$sec);
# Set end_time to current time plus delay (Format: YYYYMMDDHHmmss)
($sec,$min,$hour,$mday,$mon,$year) = gmtime(time + $delay);
$end_time = sprintf("%04d%02d%02d%02d%02d%02d", $year+1900, $mon+1, $mday, $hour, $min,
$sec);
# Create resource_path from url (remove protocol, hostname, port, queries & fragments)
$resource_path = $url;
$resource_path =~ s#^.*://([A-Za-z0-9_:\.\-]+){1}/#/#;
# remove queries or fragments
$resource_path =~ s#[\?\#].*##;
# Create message (Format: ResourcePath?start_time=StartTime&end_time=EndTime#SecretKey)
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 86
Confidential & Proprietary – Subject to NDA
$message = $resource_path."?start_time=".$start_time."&end_time=".$end_time."#".$key;
# Create digest by md5 encoding the message
$digest = md5_hex($message);
# Create token_value (Format: start_time=StartTime&end_time=EndTime&digest=Digest)
$token_value = "start_time=".$start_time."&end_time=".$end_time."&digest=".$digest;
# Create token by base64 encoding the token_value
$token = encode_base64($token_value);
# Remove any carriage returns inserted into token by encode function
$token =~ s#\n##g;
# If debug flag is set, write values to logfile
if ($debug eq "true")
{
open (FD, '>>', $logfile);
($sec,$min,$hour,$mday,$mon,$year) = gmtime(time);
$date = sprintf("%02d/%02d/%02d %02d:%02d:%02d", $mon+1, $mday, $year+1900, $hour, $min,
$sec);
print FD "$date - TokenGenerator Debug Output:\r\n ResourcePath-$resource_path\r\n
Message-$message\r\n TokenValue-$token_value\r\n Token-$token\r\n";
close (FD);
}
# Return token return $token;
} 1;
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 87
Confidential & Proprietary – Subject to NDA
Appendix G: Flex Token Format
Token URL Format
Level 3‘s URL that contains a Token follows a simple construct as follows…
Protocol://Hostname/Level 3_SubscriberID/ContentLocation/TokenString
Protocol is the protocol used in delivering content, which is typically associated with the format type of
the content, such as: (1) mms and rtsp for Windows Media; and (2) rtmp and rtmpe for Flash.
Hostname can be an external or Level 3-generated sub-domain from the f35.c.footprint.net
domain.
Level 3_SusbcriberID is a unique billing identifier provided by Level 3 and used for reporting and
billing purposes.
TokenString contains all the necessary attributes for authentication that includes:
1. Delimited list of Files: All files associated to a common media content, that needs to be secured
under a single token, are included in the query string (QS) parameter and delimited with a ―;‖.
The files also have to begin with a ―/‖ and are identified as resource= in the QS element.
Windows Media example
Adobe Flash example
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/mp4:sampleVideo500k?res
ource=/sampleVideo 500k;/sampleVideo800k.mp4;/sampleVideo1500k.mp4
In the above example, the Flash Media Server is instructed to start on the 500k content and is preapproved to allow transition changes to the 800k & 1500k files without needing additional tokens.
2. HMAC-SHA1 Hash: The other part of the query string (QS) is the hashed token itself. This is
included after the delimited list of resources and identified as token=.
Windows Media example
Adobe Flash example
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/mp4:sampleVideo500k?res
ource=/sampleVideo500k;/sampleVideo800k.mp4;/sampleVideo1500k.mp4?token=0
46787b876e7539d78cc9
The token itself is made up of:
•
―Start Time‖ or ―Not Valid Before‖
•
―Stop Time‖ or ―Not Valid After‖
•
―SaltValue/SecretKey‖ that is then hashed together
Start and Stop times are in UTC/GMT format, for example: yyyymmddHHMMSS
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 88
Confidential & Proprietary – Subject to NDA
SaltValue / SecretKey is an ASCII character string of up to 64 bytes
On-Demand Flash .flv Streaming Token Example
Parameter
Example Input
Streaming URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/sampleVideo3
00kbps.flv
Start Time:
20080101120000
End Time:
20101231235900
Customer Key:
secret
ResourcePath:
/xyzmedia/rtmp/sampleVideo300kbps.flv
Message:
/xyzmedia/rtmp/sampleVideo300kbps.flv?start_time=20080101120000&end_time=201
01231235900#secret
Digest:
f06471ef3c5b2795576797463a4f8afb
TokenValue:
start_time=20080101120000&end_time=20101231235900&digest=f06471ef3c5b2795576
797463a4f8afb
Flex Token:
c3RhcnRfdGltZT0yMDA4MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9
ZjA2NDcxZWYzYzViMjc5NTU3Njc5NzQ2M2E0ZjhhZmI=
URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/sampleVideo300kbps.flv?tok
en=c3RhcnRfdGltZT0yMDA4MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc
3Q9ZjA2NDcxZWYzYzViMjc5NTU3Njc5NzQ2M2E0ZjhhZmI=
On-Demand Flash .mp4 Streaming Token Example
Parameter
Example Input
Streaming URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/rtmp/sampleVideo3
00kbps.mp4
Start Time:
20080101120000
End Time:
20101231235900
Customer Key:
Secret
ResourcePath:
/xyzmedia/rtmp/sampleVideo300kbps.mp4
Message:
/xyzmedia/rtmp/sampleVideo300kbps.mp4?start_time=20080101120000&end_time=201
01231235900#Secret
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 89
Confidential & Proprietary – Subject to NDA
Digest:
f06471ef3c5b2795576797463a4f8afb
TokenValue:
start_time=20080101120000&end_time=20101231235900&digest=f06471ef3c5b2795576
797463a4f8afb
Flex Token:
c3RhcnRfdGltZT0yMDA4MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9
ZjA2NDcxZWYzYzViMjc5NTU3Njc5NzQ2M2E0ZjhhZmI=
URL:
rtmp://xyzmedia.f35.c.footprint.net/rtmp/xyzmedia?token=c3RhcnRfdGltZT0yMDA4
MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9ZjA2NDcxZWYzYzViMjc5
NTU3Njc5NzQ2M2E0ZjhhZmI=/mp4:xyzmedia/sampleVideo300kbps
When calling NetStream.Play(), the mp4: prefix must be included in the ‗name‘ parameter to identify
the file as an .mp4 file type, as follows:
var nc = new NetConnection();
nc.connect("rtmp://host[:port]/app/ins?token=value", ...);
...
...
NetStream.Play (“mp4:xyzmedia/sampleVideo300kbps”, ...);
On-Demand Windows Media Streaming Token Example
Parameter
Example Input
Streaming URL:
rtsp://xyzmedia.fplive.net/xyzmedia/sample/sampleVideo300kbps.
wmv
Start Time:
20080101120000
End Time:
20101231235900
Customer Key:
Secret
ResourcePath:
/xyzmedia/sample/sampleVideo300kbps.wmv
Message:
/xyzmedia/sample/sampleVideo300kbps.wmv?start_time=20080101120000&end_time=2
0101231235900#Secret
Digest:
4a524c3794615863d54020a272ab2f49
TokenValue:
start_time=20080101120000&end_time=20101231235900&digest=4a524c3794615863d54
020a272ab2f49
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 90
Confidential & Proprietary – Subject to NDA
Flex Token:
c3RhcnRfdGltZT0yMDA4MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9
ZmIwYTMwZDg4NDEyMzQ5NDk1NTMyZDZiOGUwZWZiOTY=
URL:
rtsp://xyzmedia.fplive.net/xyzmedia/sample/sampleVideo300kbps.wmv?token=c3Rh
cnRfdGltZT0yMDA4MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9ZmIw
YTMwZDg4NDEyMzQ5NDk1NTMyZDZiOGUwZWZiOTY=
Live Flash Streaming Token Example
Parameter
Example Input
Streaming URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testS
tream
Start Time:
20080101120000
End Time:
20101231235900
Customer Key:
Secret
ResourcePath:
/xyzmedia/liveStreams/testStream
Message:
/xyzmedia/liveStreams/testStream?start_time=20080101120000&end_time=20101231
235900#Secret
Digest:
c5b58df76e212e2db9ec26845ac6fec8
TokenValue:
start_time=20080101120000&end_time=20101231235900&digest=c5b58df76e212e2db9e
c26845ac6fec8
Flex Token:
c3RhcnRfdGltZT0yMDA4MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9
YzViNThkZjc2ZTIxMmUyZGI5ZWMyNjg0NWFjNmZlYzg=
URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testStream?token=c3
RhcnRfdGltZT0yMDA4MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9Yz
ViNThkZjc2ZTIxMmUyZGI5ZWMyNjg0NWFjNmZlYzg=
Live Windows Media Streaming Token Example
Parameter
Example Input
Streaming URL:
mms://xyzmedia.fplive.net/xyzmedia/liveStreams
Start Time:
20080101120000
End Time:
20101231235900
Customer Key:
Secret
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 91
Confidential & Proprietary – Subject to NDA
ResourcePath:
/xyzmedia/liveStreams
Message:
/xyzmedia/liveStreams?start_time=20080101120000&end_time=20101231235900#Secr
et
Digest:
d8e3625db57d27e4607ce63215608236
TokenValue:
start_time=20080101120000&end_time=20101231235900&digest=d8e3625db57d27e4607
ce63215608236
Flex Token:
c3RhcnRfdGltZT0yMDA4MDEwMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9
ZDhlMzYyNWRiNTdkMjdlNDYwN2NlNjMyMTU2MDgyMzY=
URL:
mms://xyzmedia.fplive.net/xyzmedia/liveStreams?token=c3RhcnRfdGltZT0yMDA4MDE
wMTEyMDAwMCZlbmRfdGltZT0yMDEwMTIzMTIzNTkwMCZkaWdlc3Q9ZDhlMzYyNWRiNTdkMjdlNDY
wN2NlNjMyMTU2MDgyMzY=
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 92
Confidential & Proprietary – Subject to NDA
Appendix H: Standard Token Format
Live Flash Streaming Token Example for Player
Parameter
Example Input
Streaming URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testS
tream
Not-valid-before
Keyword
stime
stime:
20080101120000
Not-valid-before
Keyword
etime
etime:
20101231235900
Secret #:
0
Customer Key:
SecretWord
Token Name
hash
(Optional)
Included
Customer
Name-Value
Pair:
CustomerID=1234
ResourcePath:
/xyzmedia/liveStreams/testStream
Message:
/xyzmedia/liveStreams/testStream?CustomerID=1234&stime=20080101120000&etime=
20101231235900
Digest:
d80e2320f8e192a7caa7
Standard Token:
0d80e2320f8e192a7caa7
URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testStream?Customer
ID=1234&stime=20080101120000&etime=20101231235900&hash=0d80e2320f8e192a7caa7
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 93
Confidential & Proprietary – Subject to NDA
Live Flash Streaming Token Example for Secure Ingest
Parameter
Example Input
Streaming URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testS
tream
Not-valid-before
Keyword
stime
stime:
20080101120000
Not-valid-before
Keyword
etime
etime:
20101231235900
Secret #:
0
Customer Key:
SecretWord
Token Name
hash
(Optional)
Included
Customer
Name-Value
Pair:
CustomerID=1234
Event Keyword:
event
Event:
Publish
ResourcePath:
/xyzmedia/liveStreams/testStream
Message:
/xyzmedia/liveStreams/testStream?CustomerID=1234&stime=20080101120000&etime=
20101231235900&event=Publish
Digest:
6c8b1bea1b6d313092f9
Standard Token:
06c8b1bea1b6d313092f9
URL:
rtmp://xyzmedia.f35.c.footprint.net/xyzmedia/liveStreams/testStream?Customer
ID=1234&stime=20080101120000&etime=20101231235900&event=Publish&hash=06c8b1b
ea1b6d313092f9
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 94
Confidential & Proprietary – Subject to NDA
Appendix I: Jeroen Wijering (JW) FLV
Media Player
The sample embedded Flash code referencing the JW FLV Media Player is only for demonstration
purposes and is neither an endorsement nor should be considered a commercial license to use the Jeroen
Wijering player.
Jeroen Wijering has an easy to use Web-based form that automatically generates the code base and
extended functionality using the JW player with a few simple inputs. The following web form can be used to
help test the proper syntax to ensure that the Level 3 Flash streaming service is operating.
http://www.jeroenwijering.com/?page=wizard&example=4
Figure 30: Excerpt from JW Setup Wizard
The file name includes the .flv extension. This may not be the case with other Flash players and it may
be necessary to remove the extension in order to ensure proper playback. The file extension may be
particularly important with stand alone Flash players that need to associate the file MIME type with the
player or in the case where the same asset name is available in different formats, e.g., .mp3 and .flv.
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 95
Confidential & Proprietary – Subject to NDA
Figure 31: Output of JW Setup Wizard
© 2010 Level 3 Communications, LLC. All Rights Reserved.
Page 96