draft-ietf-cdni-logging-08.txt | draft-ietf-cdni-logging-09.txt | |||
---|---|---|---|---|
Internet Engineering Task Force F. Le Faucheur, Ed. | Internet Engineering Task Force F. Le Faucheur, Ed. | |||
Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
Intended status: Standards Track G. Bertrand, Ed. | Intended status: Standards Track G. Bertrand, Ed. | |||
Expires: April 21, 2014 I. Oprescu, Ed. | Expires: August 17, 2014 I. Oprescu, Ed. | |||
Orange | Orange | |||
R. Peterkofsky | R. Peterkofsky | |||
Skytide, Inc. | Skytide, Inc. | |||
October 18, 2013 | February 13, 2014 | |||
CDNI Logging Interface | CDNI Logging Interface | |||
draft-ietf-cdni-logging-08 | draft-ietf-cdni-logging-09 | |||
Abstract | Abstract | |||
This memo specifies the Logging interface between a downstream CDN | This memo specifies the Logging interface between a downstream CDN | |||
(dCDN) and an upstream CDN (uCDN) that are interconnected as per the | (dCDN) and an upstream CDN (uCDN) that are interconnected as per the | |||
CDN Interconnection (CDNI) framework. First, it describes a | CDN Interconnection (CDNI) framework. First, it describes a | |||
reference model for CDNI logging. Then, it specifies the CDNI | reference model for CDNI logging. Then, it specifies the CDNI | |||
Logging File format and the actual protocol for exchange of CDNI | Logging File format and the actual protocol for exchange of CDNI | |||
Logging Files. | Logging Files. | |||
skipping to change at page 1, line 39 | skipping to change at page 1, line 39 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 21, 2014. | This Internet-Draft will expire on August 17, 2014. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 22 | skipping to change at page 2, line 22 | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Requirements Language . . . . . . . . . . . . . . . . . . 4 | 1.2. Requirements Language . . . . . . . . . . . . . . . . . . 4 | |||
2. CDNI Logging Reference Model . . . . . . . . . . . . . . . . 5 | 2. CDNI Logging Reference Model . . . . . . . . . . . . . . . . 5 | |||
2.1. CDNI Logging interactions . . . . . . . . . . . . . . . . 5 | 2.1. CDNI Logging interactions . . . . . . . . . . . . . . . . 5 | |||
2.2. Overall Logging Chain . . . . . . . . . . . . . . . . . . 8 | 2.2. Overall Logging Chain . . . . . . . . . . . . . . . . . . 8 | |||
2.2.1. Logging Generation and During-Generation Aggregation 9 | 2.2.1. Logging Generation and During-Generation Aggregation 9 | |||
2.2.2. Logging Collection . . . . . . . . . . . . . . . . . 10 | 2.2.2. Logging Collection . . . . . . . . . . . . . . . . . 10 | |||
2.2.3. Logging Filtering . . . . . . . . . . . . . . . . . . 10 | 2.2.3. Logging Filtering . . . . . . . . . . . . . . . . . . 10 | |||
2.2.4. Logging Rectification and Post-Generation Aggregation 11 | 2.2.4. Logging Rectification and Post-Generation Aggregation 11 | |||
2.2.5. Log-Consuming Applications . . . . . . . . . . . . . 11 | 2.2.5. Log-Consuming Applications . . . . . . . . . . . . . 12 | |||
2.2.5.1. Maintenance/Debugging . . . . . . . . . . . . . . 11 | 2.2.5.1. Maintenance/Debugging . . . . . . . . . . . . . . 12 | |||
2.2.5.2. Accounting . . . . . . . . . . . . . . . . . . . 12 | 2.2.5.2. Accounting . . . . . . . . . . . . . . . . . . . 12 | |||
2.2.5.3. Analytics and Reporting . . . . . . . . . . . . . 12 | 2.2.5.3. Analytics and Reporting . . . . . . . . . . . . . 12 | |||
2.2.5.4. Security . . . . . . . . . . . . . . . . . . . . 12 | 2.2.5.4. Security . . . . . . . . . . . . . . . . . . . . 13 | |||
2.2.5.5. Legal Logging Duties . . . . . . . . . . . . . . 12 | 2.2.5.5. Legal Logging Duties . . . . . . . . . . . . . . 13 | |||
2.2.5.6. Notions common to multiple Log Consuming | 2.2.5.6. Notions common to multiple Log Consuming | |||
Applications . . . . . . . . . . . . . . . . . . 13 | Applications . . . . . . . . . . . . . . . . . . 13 | |||
3. CDNI Logging File . . . . . . . . . . . . . . . . . . . . . . 15 | 3. CDNI Logging File . . . . . . . . . . . . . . . . . . . . . . 15 | |||
3.1. Rules . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 3.1. Rules . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
3.2. CDNI Logging File Structure . . . . . . . . . . . . . . . 16 | 3.2. CDNI Logging File Structure . . . . . . . . . . . . . . . 16 | |||
3.3. CDNI Logging File Directives . . . . . . . . . . . . . . 18 | 3.3. CDNI Logging File Directives . . . . . . . . . . . . . . 19 | |||
3.4. CDNI Logging Records . . . . . . . . . . . . . . . . . . 21 | 3.4. CDNI Logging Records . . . . . . . . . . . . . . . . . . 22 | |||
3.4.1. HTTP Request Logging Record . . . . . . . . . . . . . 22 | 3.4.1. HTTP Request Logging Record . . . . . . . . . . . . . 23 | |||
3.5. CDNI Logging File Example . . . . . . . . . . . . . . . . 29 | 3.5. CDNI Logging File Example . . . . . . . . . . . . . . . . 31 | |||
4. CDNI Logging File Exchange Protocol . . . . . . . . . . . . . 30 | 4. CDNI Logging File Exchange Protocol . . . . . . . . . . . . . 32 | |||
4.1. CDNI Logging Feed . . . . . . . . . . . . . . . . . . . . 30 | 4.1. CDNI Logging Feed . . . . . . . . . . . . . . . . . . . . 33 | |||
4.1.1. Atom Formatting . . . . . . . . . . . . . . . . . . . 31 | 4.1.1. Atom Formatting . . . . . . . . . . . . . . . . . . . 33 | |||
4.1.2. Updates to Log Files and the Feed . . . . . . . . . . 31 | 4.1.2. Updates to Log Files and the Feed . . . . . . . . . . 33 | |||
4.1.3. Redundant Feeds . . . . . . . . . . . . . . . . . . . 32 | 4.1.3. Redundant Feeds . . . . . . . . . . . . . . . . . . . 34 | |||
4.1.4. Example CDNI Logging Feed . . . . . . . . . . . . . . 32 | 4.1.4. Example CDNI Logging Feed . . . . . . . . . . . . . . 34 | |||
4.2. CDNI Logging File Pull . . . . . . . . . . . . . . . . . 33 | 4.2. CDNI Logging File Pull . . . . . . . . . . . . . . . . . 36 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 | |||
5.1. CDNI Logging Directive Names Registry . . . . . . . . . . 35 | 5.1. CDNI Logging Directive Names Registry . . . . . . . . . . 37 | |||
5.2. CDNI Logging Record-Types Registry . . . . . . . . . . . 35 | 5.2. CDNI Logging Record-Types Registry . . . . . . . . . . . 38 | |||
5.3. CDNI Logging Field Names Registry . . . . . . . . . . . . 36 | 5.3. CDNI Logging Field Names Registry . . . . . . . . . . . . 39 | |||
5.4. CDNI Logging MIME Media Type . . . . . . . . . . . . . . 37 | 5.4. CDNI Logging MIME Media Type . . . . . . . . . . . . . . 40 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 37 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 40 | |||
6.1. Authentication, Confidentiality, Integrity Protection . . 37 | 6.1. Authentication, Confidentiality, Integrity Protection . . 40 | |||
6.2. Denial of Service . . . . . . . . . . . . . . . . . . . . 38 | 6.2. Denial of Service . . . . . . . . . . . . . . . . . . . . 41 | |||
6.3. Privacy . . . . . . . . . . . . . . . . . . . . . . . . . 38 | 6.3. Privacy . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 38 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 39 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 39 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 42 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 39 | 8.2. Informative References . . . . . . . . . . . . . . . . . 43 | |||
Appendix A. Compliance with CDNI Requirements . . . . . . . . . 40 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 | ||||
1. Introduction | 1. Introduction | |||
This memo specifies the CDNI Logging interface between a downstream | This memo specifies the CDNI Logging interface between a downstream | |||
CDN (dCDN) and an upstream CDN (uCDN). First, it describes a | CDN (dCDN) and an upstream CDN (uCDN). First, it describes a | |||
reference model for CDNI logging. Then, it specifies the CDNI | reference model for CDNI logging. Then, it specifies the CDNI | |||
Logging File format and the actual protocol for exchange of CDNI | Logging File format and the actual protocol for exchange of CDNI | |||
Logging Files. | Logging Files. | |||
The reader should be familiar with the following documents: | The reader should be familiar with the following documents: | |||
skipping to change at page 3, line 50 | skipping to change at page 3, line 49 | |||
o The CDNI Logging File Exchange protocol (Section 4). | o The CDNI Logging File Exchange protocol (Section 4). | |||
1.1. Terminology | 1.1. Terminology | |||
In this document, the first letter of each CDNI-specific term is | In this document, the first letter of each CDNI-specific term is | |||
capitalized. We adopt the terminology described in [RFC6707] and | capitalized. We adopt the terminology described in [RFC6707] and | |||
[I-D.ietf-cdni-framework], and extend it with the additional terms | [I-D.ietf-cdni-framework], and extend it with the additional terms | |||
defined below. | defined below. | |||
For clarity, we use the word "Log" only for referring to internal CDN | Intra-CDN Logging information: logging information generated and | |||
logs and we use the word "Logging" for any inter-CDN information | collected within a CDN. The format of the Intra-CDN Logging | |||
exchange and processing operations related to CDNI Logging interface. | information may be different to the format of the CDNI Logging | |||
Log and Logging formats may be different. | information. | |||
CDN Logging information: logging information generated and collected | ||||
within a CDN | ||||
CDNI Logging information: logging information exchanged across CDNs | CDNI Logging information: logging information exchanged across CDNs | |||
using the CDNI Logging Interface | using the CDNI Logging Interface. | |||
Logging information: logging information generated and collected | Logging information: logging information generated and collected | |||
within a CDN or obtained from another CDN using the CDNI Logging | within a CDN or obtained from another CDN using the CDNI Logging | |||
Interface | Interface. | |||
CDNI Logging Field: an atomic element of information that can be | CDNI Logging Field: an atomic element of information that can be | |||
included in a CDNI Logging Record. The time an event/task started, | included in a CDNI Logging Record. The time an event/task started, | |||
the IP address of an End user to whom content was delivered, and the | the IP address of an End User to whom content was delivered, and the | |||
URI of the content delivered are examples of CDNI Logging Fields. | URI of the content delivered are examples of CDNI Logging Fields. | |||
CDNI Logging Record: an information record providing information | CDNI Logging Record: an information record providing information | |||
about a specific event. This comprises a collection of CDNI Logging | about a specific event. This comprises a collection of CDNI Logging | |||
Fields. | Fields. | |||
CDNI Logging File: a file containing CDNI Logging Records, as well as | CDNI Logging File: a file containing CDNI Logging Records, as well as | |||
additional information facilitating the processing of the CDNI | additional information facilitating the processing of the CDNI | |||
Logging Records. | Logging Records. | |||
CDN Reporting: the process of providing the relevant information that | CDN Reporting: the process of providing the relevant information that | |||
will be used to create a formatted content delivery report provided | will be used to create a formatted content delivery report provided | |||
to the CSP in deferred time. Such information typically includes | to the CSP in deferred time. Such information typically includes | |||
aggregated data that can cover a large period of time (e.g., from | aggregated data that can cover a large period of time (e.g., from | |||
hours to several months). Uses of Reporting include the collection | hours to several months). Uses of Reporting include the collection | |||
of charging data related to CDN services and the computation of Key | of charging data related to CDN services and the computation of Key | |||
Performance Indicators (KPIs). | Performance Indicators (KPIs). | |||
CDN Monitoring: the process of providing content delivery information | CDN Monitoring: the process of providing or displaying content | |||
in real-time. Monitoring typically includes data in real time to | delivery information in a timely fashion with respect to the | |||
provide visibility of the deliveries in progress, for service | corresponding deliveries. Monitoring typically includes visibility | |||
operation purposes. It presents a view of the global health of the | of the deliveries in progress for service operation purposes. It | |||
services as well as information on usage and performance, for network | presents a view of the global health of the services as well as | |||
services supervision and operation management. In particular, | information on usage and performance, for network services | |||
monitoring data can be used to generate alarms. | supervision and operation management. In particular, monitoring data | |||
can be used to generate alarms. | ||||
1.2. Requirements Language | 1.2. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
2. CDNI Logging Reference Model | 2. CDNI Logging Reference Model | |||
2.1. CDNI Logging interactions | 2.1. CDNI Logging interactions | |||
The CDNI logging reference model between a given uCDN and a given | The CDNI logging reference model between a given uCDN and a given | |||
dCDN involves the following interactions: | dCDN involves the following interactions: | |||
o customization by the uCDN of the CDNI logging information to be | o customization by the uCDN of the CDNI Logging information to be | |||
provided by the dCDN to the uCDN (e.g. control of which logging | provided by the dCDN to the uCDN (e.g., control of which CDNI | |||
fields are to be communicated to the uCDN for a given task | Logging Fields are to be communicated to the uCDN for a given task | |||
performed by the dCDN, control of which types of events are to be | performed by the dCDN, control of which types of events are to be | |||
logged). The dCDN takes into account this CDNI logging | logged). The dCDN takes into account this CDNI Logging | |||
customization information to determine what logging information to | customization information to determine what Logging information to | |||
provide to the uCDN, but it may, or may not, take into account | provide to the uCDN, but it may, or may not, take into account | |||
this CDNI logging customization information to influence what CDN | this CDNI Logging customization information to influence what CDN | |||
logging information is to be generated and collected within the | logging information is to be generated and collected within the | |||
dCDN (e.g. even if the uCDN requests a restricted subset of the | dCDN (e.g., even if the uCDN requests a restricted subset of the | |||
logging information, the dCDN may elect to generate a broader set | logging information, the dCDN may elect to generate a broader set | |||
of logging information). The mechanism to support the | of logging information). The mechanism to support the | |||
customisation by the uCDN of CDNI Logging information is outside | customisation by the uCDN of CDNI Logging information is outside | |||
the scope of this document and left for further study. We note | the scope of this document and left for further study. We note | |||
that the CDNI Control interface or the CDNI Metadata interface | that the CDNI Control interface or the CDNI Metadata interface | |||
appear as candidate interfaces on which to potentially build such | appear as candidate interfaces on which to potentially build such | |||
a customisation mechanism in the future. Before such a mechanism | a customisation mechanism in the future. Before such a mechanism | |||
is available, the uCDN and dCDN are expected to agree off-line on | is available, the uCDN and dCDN are expected to agree off-line on | |||
what CDNI logging information is to be provide by dCDN to UCDN and | what CDNI Logging information is to be provided by the dCDN to the | |||
rely on management plane actions to configure the CDNI Logging | UCDN and rely on management plane actions to configure the CDNI | |||
functions to generate (respectively, expect) in dCDN | Logging functions to generate (respectively, expect) in dCDN | |||
(respectively, in uCDN). | (respectively, in uCDN). | |||
o generation and collection by the dCDN of logging information | o generation and collection by the dCDN of the intra-CDN Logging | |||
related to the completion of any task performed by the dCDN on | information related to the completion of any task performed by the | |||
behalf of the uCDN (e.g., delivery of the content to an end user) | dCDN on behalf of the uCDN (e.g., delivery of the content to an | |||
or related to events happening in the dCDN that are relevant to | End User) or related to events happening in the dCDN that are | |||
the uCDN (e.g., failures or unavailability in dCDN). This takes | relevant to the uCDN (e.g., failures or unavailability in dCDN). | |||
place within the dCDN and does not directly involve CDNI | This takes place within the dCDN and does not directly involve | |||
interfaces. | CDNI interfaces. | |||
o communication by the dCDN to the uCDN of the logging information | o communication by the dCDN to the uCDN of the Logging information | |||
collected by the dCDN relevant to the uCDN. This is supported by | collected by the dCDN relevant to the uCDN. This is supported by | |||
the CDNI Logging interface and in the scope of the present | the CDNI Logging interface and in the scope of the present | |||
document. For example, the uCDN may use this logging information | document. For example, the uCDN may use this Logging information | |||
to charge the CSP, to perform analytics and monitoring for | to charge the CSP, to perform analytics and monitoring for | |||
operational reasons, to provide analytics and monitoring views on | operational reasons, to provide analytics and monitoring views on | |||
its content delivery to the CSP or to perform trouble-shooting. | its content delivery to the CSP or to perform trouble-shooting. | |||
This document exclusively specifies non-real-time exchange of | This document exclusively specifies non-real-time exchange of | |||
logging information. Closer to real-time exchange of logging | Logging information. Closer to real-time exchange of Logging | |||
information (say sub-minute or sub-second) is outside the scope of | information (say sub-minute or sub-second) is outside the scope of | |||
the present document and left for further study. This document | the present document and left for further study. This document | |||
exclusively specifies exchange of logging information related to | exclusively specifies exchange of Logging information related to | |||
content delivery. Exchange of logging information related to | content delivery. Exchange of Logging information related to | |||
operational events (e.g. dCDN request routing function | operational events (e.g., dCDN request routing function | |||
unavailable, content acquisition failure by dCDN) for audit or | unavailable, content acquisition failure by dCDN) for audit or | |||
operational reactive adjustments by uCDN is outside the scope of | operational reactive adjustments by uCDN is outside the scope of | |||
the present document and left for further study. | the present document and left for further study. | |||
o customization by the dCDN of the logging to be performed by the | o customization by the dCDN of the CDNI Logging information to be | |||
uCDN on behalf of the dCDN. The mechanism to support the | provided by the uCDN on behalf of the dCDN. The mechanism to | |||
customisation by the dCDN of CDNI Logging information is outside | support the customisation by the dCDN of CDNI Logging information | |||
the scope of this document and left for further study. | is outside the scope of this document and left for further study. | |||
o generation and collection by the uCDN of logging information | o generation and collection by the uCDN of Intra-CDN Logging | |||
related to the completion of any task performed by the uCDN on | information related to the completion of any task performed by the | |||
behalf of the dCDN (e.g., serving of content by uCDN to dCDN for | uCDN on behalf of the dCDN (e.g., serving of content by uCDN to | |||
acquisition purposes by dCDN) or related to events happening in | dCDN for acquisition purposes by dCDN) or related to events | |||
the uCDN that are relevant to the dCDN. This takes place within | happening in the uCDN that are relevant to the dCDN. This takes | |||
the uCDN and does not directly involve CDNI interfaces. | place within the uCDN and does not directly involve CDNI | |||
interfaces. | ||||
o communication by the uCDN to the dCDN of the logging information | o communication by the uCDN to the dCDN of the Logging information | |||
collected by the uCDN relevant to the dCDN. For example, the dCDN | collected by the uCDN relevant to the dCDN. For example, the dCDN | |||
might potentially benefit from this information for security | might potentially benefit from this information for security | |||
auditing or content acquisition troubleshooting. This is outside | auditing or content acquisition troubleshooting. This is outside | |||
the scope of this document and left for further study. | the scope of this document and left for further study. | |||
Figure 1 provides an example of CDNI Logging interactions (focusing | Figure 1 provides an example of CDNI Logging interactions (focusing | |||
only on the interactions that are in the scope of this document) in a | only on the interactions that are in the scope of this document) in a | |||
particular scenario where 4 CDNs are involved in the delivery of | particular scenario where four CDNs are involved in the delivery of | |||
content from a given CSP: the uCDN has a CDNI interconnection with | content from a given CSP: the uCDN has a CDNI interconnection with | |||
dCDN-1 and dCDN-2. In turn, dCDN2 has a CDNI interconnection with | dCDN-1 and dCDN-2. In turn, dCDN2 has a CDNI interconnection with | |||
dCDN3. In this example, uCDN, dCDN-1, dCDN-2 and dCDN-3 all | dCDN3. In this example, uCDN, dCDN-1, dCDN-2 and dCDN-3 all | |||
participate in the delivery of content for the CSP. In this example, | participate in the delivery of content for the CSP. In this example, | |||
the CDNI Logging interface enables the uCDN to obtain logging | the CDNI Logging interface enables the uCDN to obtain Logging | |||
information from all the dCDNs involved in the delivery. In the | information from all the dCDNs involved in the delivery. In the | |||
example, uCDN uses the Logging data: | example, the uCDN uses the Logging information: | |||
o to analyze the performance of the delivery operated by the dCDNs | o to analyze the performance of the delivery performed by the dCDNs | |||
and to adjust its operations after the fact (e.g., request | and to adjust its operations after the fact (e.g., request | |||
routing) as appropriate, | routing) as appropriate, | |||
o to provide (non real-time) reporting and monitoring information to | o to provide (non-real-time) reporting and monitoring information to | |||
CSP. | the CSP. | |||
For instance, uCDN merges Logging data, extracts relevant KPIs, and | For instance, the uCDN merges Logging information, extracts relevant | |||
presents a formatted report to the CSP, in addition to a bill for the | KPIs, and presents a formatted report to the CSP, in addition to a | |||
content delivered by uCDN itself or by its dCDNs on his behalf. uCDN | bill for the content delivered by uCDN itself or by its dCDNs on the | |||
may also provide Logging data as raw log files to the CSP, so that | CSP's behalf. The uCDN may also provide Logging information as raw | |||
the CSP can use its own logging analysis tools. | log files to the CSP, so that the CSP can use its own logging | |||
analysis tools. | ||||
+-----+ | +-----+ | |||
| CSP | | | CSP | | |||
+-----+ | +-----+ | |||
^ Reporting and monitoring data | ^ Reporting and monitoring data | |||
* Billing | * Billing | |||
,--*--. | ,--*--. | |||
Logging ,-' `-. | Logging ,-' `-. | |||
Data =>( uCDN )<= Logging | Data =>( uCDN )<= Logging | |||
// `-. _,-' \\ Data | // `-. _,-' \\ Data | |||
skipping to change at page 7, line 37 | skipping to change at page 7, line 34 | |||
,' `-. | ,' `-. | |||
( dCDN-3 ) | ( dCDN-3 ) | |||
`. ,-' | `. ,-' | |||
`--'--' | `--'--' | |||
===> CDNI Logging Interface | ===> CDNI Logging Interface | |||
***> outside the scope of CDNI | ***> outside the scope of CDNI | |||
Figure 1: Interactions in CDNI Logging Reference Model | Figure 1: Interactions in CDNI Logging Reference Model | |||
A dCDN (e.g., dCDN-2) integrates the relevant logging information | A dCDN (e.g., dCDN-2) integrates the relevant Logging information | |||
obtained from its dCDNs (e.g., dCDN-3) in the logging information | obtained from its dCDNs (i.e., dCDN-3) in the Logging information | |||
that it provides to the uCDN, so that the uCDN ultimately obtains all | that it provides to the uCDN, so that the uCDN ultimately obtains all | |||
logging information relevant to a CSP for which it acts as the | Logging information relevant to a CSP for which it acts as the | |||
authoritative CDN. | authoritative CDN. | |||
Note that the format of Logging information that a CDN provides over | Note that the format of Logging information that a CDN provides over | |||
the CDNI interface might be different from the one that the CDN uses | the CDNI interface might be different from the one that the CDN uses | |||
internally. In this case, the CDN needs to reformat the Logging | internally. In this case, the CDN needs to reformat the Logging | |||
information before it provides this information to the other CDN over | information before it provides this information to the other CDN over | |||
the CDNI Logging interface. Similarly, a CDN might reformat the | the CDNI Logging interface. Similarly, a CDN might reformat the | |||
Logging data that it receives over the CDNI Logging interface before | Logging information that it receives over the CDNI Logging interface | |||
injecting it into its log-consuming applications or before providing | before injecting it into its log-consuming applications or before | |||
some of this logging information to the CSP. Such reformatting | providing some of this Logging information to the CSP. Such | |||
operations introduce latency in the logging distribution chain and | reformatting operations introduce latency in the logging distribution | |||
introduce a processing burden. Therefore, there are benefits in | chain and introduce a processing burden. Therefore, there are | |||
specifying CDNI Logging format that are suitable for use inside CDNs | benefits in specifying CDNI Logging formats that are suitable for use | |||
and also are close to the CDN Log formats commonly used in CDNs | inside CDNs and also are close to the intra-CDN Logging formats | |||
today. | commonly used in CDNs today. | |||
2.2. Overall Logging Chain | 2.2. Overall Logging Chain | |||
This section discusses the overall logging chain within and across | This section discusses the overall logging chain within and across | |||
CDNs to clarify how CDN Logging information is expected to fit in | CDNs to clarify how CDN Logging information is expected to fit in | |||
this overall chain. Figure 2 illustrates the overall logging chain | this overall chain. Figure 2 illustrates the overall logging chain | |||
within the dCDN, across CDNs using the CDNI Logging interface and | within the dCDN, across CDNs using the CDNI Logging interface and | |||
within the uCDN. Note that the logging chain illustrated in the | within the uCDN. Note that the logging chain illustrated in the | |||
Figure is obviously only an example and varies depending on the | Figure is obviously only an example and varies depending on the | |||
specific environments. For example, there may be more or less | specific environments. For example, there may be more or fewer | |||
instantiations of each entity (i.e., there may be 4 Log consuming | instantiations of each entity (e.g., there may be 4 Log consuming | |||
applications in a given CDN). As another example, there may be one | applications in a given CDN). As another example, there may be one | |||
instance of Rectification process per Log Consuming Application | instance of Rectification process per Log Consuming Application | |||
instead of a shared one. | instead of a shared one. | |||
Log Consuming Log Consuming | Log Consuming Log Consuming | |||
App App | App App | |||
/\ /\ | ^ ^ | |||
| | | | | | |||
Rectification-------- | Rectification---------- | |||
/\ | ^ | |||
| | | | |||
Filtering | Filtering | |||
/\ | ^ | |||
| | | | |||
Collection uCDN | Collection | |||
/\ /\ | ^ ^ | |||
| | | | | | |||
| Generation | | Generation | |||
| | | | |||
CDNI Logging --------------------------------------------- | | uCDN | |||
exchange | CDNI Logging ------------------------------------------------------- | |||
/\ Log Consuming Log Consuming | exchange dCDN | |||
^ | ||||
| Log Consuming Log Consuming | ||||
| App App | | App App | |||
| /\ /\ | | ^ ^ | |||
| | | | | | | | |||
Rectification Rectification--------- | Rectification Rectification--------- | |||
/\ /\ | ^ ^ | |||
| | | | | | |||
Filtering | Filtering | |||
/\ | ^ | |||
| | | | |||
Collection dCDN | Collection | |||
/\ /\ | ^ ^ | |||
| | | | | | |||
Generation Generation | Generation Generation | |||
Figure 2: CDNI Logging in the overall Logging Chain | Figure 2: CDNI Logging in the overall Logging Chain | |||
The following subsections describe each of the processes potentially | The following subsections describe each of the processes potentially | |||
involved in the logging chain of Figure 2. | involved in the logging chain of Figure 2. | |||
2.2.1. Logging Generation and During-Generation Aggregation | 2.2.1. Logging Generation and During-Generation Aggregation | |||
CDNs typically generate logging information for all significant task | CDNs typically generate Logging information for all significant task | |||
completions, events, and failures. Logs are typically generated by | completions, events, and failures. Logging information is typically | |||
many devices in the CDN including the surrogates, the request routing | generated by many devices in the CDN including the surrogates, the | |||
system, and the control system. | request routing system, and the control system. | |||
The amount of Logging information generated can be huge. Therefore, | The amount of Logging information generated can be huge. Therefore, | |||
during contract negotiations, interconnected CDNs often agree on a | during contract negotiations, interconnected CDNs often agree on a | |||
Logging retention duration, and optionally, on a maximum size of the | retention duration for Logging information, and/or potentially on a | |||
Logging data that the dCDN must keep. If this size is exceeded, the | maximum volume of Logging information that the dCDN must keep. If | |||
dCDN must alert the uCDN but may not keep more Logs for the | this volume is exceeded, the dCDN is expected to alert the uCDN but | |||
considered time period. In addition, CDNs may aggregate logs and | may not keep more Logging information for the considered time period. | |||
transmit only summaries for some categories of operations instead of | In addition, CDNs may aggregate Logging information and transmit only | |||
the full Logging data. Note that such aggregation leads to an | summaries for some categories of operations instead of the full | |||
information loss, which may be problematic for some usages of Logging | Logging information. Note that such aggregation leads to an | |||
(e.g., debugging). | information loss, which may be problematic for some usages of the | |||
Logging information (e.g., debugging). | ||||
[RFC6983] discusses logging for HTTP Adaptive Streaming (HAS). In | [RFC6983] discusses logging for HTTP Adaptive Streaming (HAS). In | |||
accordance with the recommendations articulated there, it is expected | accordance with the recommendations articulated there, it is expected | |||
that a surrogate will generate separate logging information for | that a surrogate will generate separate Logging information for | |||
delivery of each chunk of HAS content. This ensures that separate | delivery of each chunk of HAS content. This ensures that separate | |||
logging information can then be provided to interconnected CDNs over | Logging information can then be provided to interconnected CDNs over | |||
the CDNI Logging interface. Still in line with the recommendations | the CDNI Logging interface. Still in line with the recommendations | |||
of [RFC6983], the logging information for per-chunck delivery may | of [RFC6983], the Logging information for per-chunck delivery may | |||
include some information (a Content Collection IDentifier and a | include some information (a Content Collection IDentifier and a | |||
Session IDentifier) intended to facilitate subsequent post-generation | Session IDentifier) intended to facilitate subsequent post-generation | |||
aggregation of per-chunk logs into per-session logs. Note that a CDN | aggregation of per-chunk logs into per-session logs. Note that a CDN | |||
may also elect to generate aggregate per-session logs when performing | may also elect to generate aggregate per-session logs when performing | |||
HAS delivery, but this needs to be in addition to, and not instead | HAS delivery, but this needs to be in addition to, and not instead | |||
of, the per-chunk delivery logs. We note that this may be revisited | of, the per-chunk delivery logs. We note that aggregate per-session | |||
in future versions of this document. | logs for HAS delivery are for further study and outside the scope of | |||
this document. | ||||
Note that in the case of non real-time logging, the trigger of the | ||||
transmission or generation of the logging file appears to be a | ||||
synchronous process from a protocol standpoint. The implementation | ||||
algorithm can choose to enforce a maximum size for the logging file | ||||
beyond which the transmission is automatically triggered (and thus | ||||
allow for an asynchronous transmission process). | ||||
2.2.2. Logging Collection | 2.2.2. Logging Collection | |||
This is the process that continuously collects logs generated by the | This is the process that continuously collects Logging information | |||
log-generating entities within a CDN. | generated by the log-generating entities within a CDN. | |||
In a CDNI environment, in addition to collecting logging information | In a CDNI environment, in addition to collecting Logging information | |||
from log-generating entities within the local CDN, the Collection | from log-generating entities within the local CDN, the Collection | |||
process also collects logging information provided by another CDN, or | process also collects Logging information provided by another CDN, or | |||
other CDNs, through the CDNI Logging interface. This is illustrated | other CDNs, through the CDNI Logging interface. This is illustrated | |||
in Figure 2 where we see that the Collection process of the uCDN | in Figure 2 where we see that the Collection process of the uCDN | |||
collects logging information from log-generating entities within the | collects Logging information from log-generating entities within the | |||
uCDN as well as logging information coming through CDNI Logging | uCDN as well as Logging information coming from the dCDNs through the | |||
exchange with the dCDN through the CDNI Logging interface. | CDNI Logging interface. | |||
2.2.3. Logging Filtering | 2.2.3. Logging Filtering | |||
A CDN may require to only present different subset of the whole | A CDN may be required to only present different subsets of the whole | |||
logging information collected to various log-consuming applications. | Logging information collected to various log-consuming applications. | |||
This is achieved by the Filtering process. | This is achieved by the Filtering process. | |||
In particular, the Filtering process can also filter the right subset | In particular, the Filtering process can also filter the right subset | |||
of information that needs to be provided to a given interconnected | of Logging information that needs to be provided to a given | |||
CDN. For example, the filtering process in the dCDN can be used to | interconnected CDN. For example, the filtering process in the dCDN | |||
ensure that only the logging information related to tasks performed | can be used to ensure that only the Logging information related to | |||
on behalf of a given uCDN are made available to that uCDN (thereby | tasks performed on behalf of a given uCDN are made available to that | |||
filtering all the logging information related to deliveries by the | uCDN (thereby filtering out all the Logging information related to | |||
dCDN of content for its own CSPs). Similarly, the Filtering process | deliveries by the dCDN of content for its own CSPs). Similarly, the | |||
may filter or partially mask some fields, for example, to protect End | Filtering process may filter or partially mask some fields, for | |||
Users' privacy when communicating CDNI Logging information to another | example, to protect End Users' privacy when communicating CDNI | |||
CDN. Filtering of logging information prior to communication of this | Logging information to another CDN. Filtering of Logging information | |||
information to other CDNs via the CDNI Logging interface requires | prior to communication of this information to other CDNs via the CDNI | |||
that the downstream CDN can recognize the set of log records that | Logging interface requires that the downstream CDN can recognize the | |||
relate to each interconnected CDN. | subset of Logging information that relate to each interconnected CDN. | |||
The CDN will also filter some internal scope information such as | The CDN will also filter some internal scope information such as | |||
information related to its internal alarms (security, failures, load, | information related to its internal alarms (security, failures, load, | |||
etc). | etc). | |||
In some use cases described in [RFC6770], the interconnected CDNs do | In some use cases described in [RFC6770], the interconnected CDNs do | |||
not want to disclose details on their internal topology. The | not want to disclose details on their internal topology. The | |||
filtering process can then also filter confidential data on the | filtering process can then also filter confidential data on the | |||
dCDNs' topology (number of servers, location, etc.). In particular, | dCDNs' topology (number of servers, location, etc.). In particular, | |||
information about the requests served by every Surrogate may be | information about the requests served by each Surrogate may be | |||
confidential. Therefore, the Logging information must be protected | confidential. Therefore, the Logging information must be protected | |||
so that data such as Surrogates' hostnames is not disclosed to the | so that data such as Surrogates' hostnames are not disclosed to the | |||
uCDN. In the "Inter-Affiliates Interconnection" use case, this | uCDN. In the "Inter-Affiliates Interconnection" use case, this | |||
information may be disclosed to the uCDN because both the dCDN and | information may be disclosed to the uCDN because both the dCDN and | |||
the uCDN are operated by entities of the same group. | the uCDN are operated by entities of the same group. | |||
2.2.4. Logging Rectification and Post-Generation Aggregation | 2.2.4. Logging Rectification and Post-Generation Aggregation | |||
If Logging is generated periodically, it is important that the | If Logging information is generated periodically, it is important | |||
sessions that start in one Logging period and end in another are | that the sessions that start in one Logging period and end in another | |||
correctly reported. If they are reported in the starting period, | are correctly reported. If they are reported in the starting period, | |||
then the Logging of this period will be available only after the end | then the Logging information of this period will be available only | |||
of the session, which delays the Logging generation. | after the end of the session, which delays the Logging information | |||
generation. | ||||
A Logging rectification/update mechanism could be useful to reach a | A Logging rectification/update mechanism could be useful to reach a | |||
good trade-off between the Logging generation delay and the Logging | good trade-off between the Logging information generation delay and | |||
accuracy. Depending on the selected Logging protocol(s), such | the Logging information accuracy. | |||
mechanism may be invaluable for real time Logging, which must be | ||||
provided rapidly and cannot wait for the end of operations in | ||||
progress. | ||||
In the presence of HAS, some log-consuming applications can benefit | In the presence of HAS, some log-consuming applications can benefit | |||
from aggregate per-session logs. For example, for analytics, per- | from aggregate per-session logs. For example, for analytics, per- | |||
session logs allow display of session-related trends which are much | session logs allow display of session-related trends which are much | |||
more meaningful for some types of analysis than chunk-related trends. | more meaningful for some types of analysis than chunk-related trends. | |||
In the case where the log-generating entities have generated during- | In the case where aggregate logs have been generated directly by the | |||
generation aggregate logs, those can be used by the applications. In | log-generating entities, those can be used by the applications. In | |||
the case where aggregate logs have not been generated, the | the case where aggregate logs have not been generated, the | |||
Rectification process can be extended with a Post-Generation | Rectification process can be extended with a Post-Generation | |||
Aggregation process that generates per-session logs from the per- | Aggregation process that generates per-session logs from the per- | |||
chunk logs, possibly leveraging the information included in the per- | chunk logs, possibly leveraging the information included in the per- | |||
chunk logs for that purpose (Content Collection IDentifier and a | chunk logs for that purpose (Content Collection IDentifier and a | |||
Session IDentifier). However, in accordance with [RFC6983], this | Session IDentifier). However, in accordance with [RFC6983], this | |||
document does not define exchange of such aggregate logs on the CDNI | document does not define exchange of such aggregate logs on the CDNI | |||
Logging interface. We note that this may be revisited in future | Logging interface. We note that this is for further study and | |||
versions of this document. | outside the scope of this document.. | |||
2.2.5. Log-Consuming Applications | 2.2.5. Log-Consuming Applications | |||
2.2.5.1. Maintenance/Debugging | 2.2.5.1. Maintenance/Debugging | |||
Logging is useful to permit the detection (and limit the risk) of | Logging information is useful to permit the detection (and limit the | |||
content delivery failures. In particular, Logging facilitates the | risk) of content delivery failures. In particular, Logging | |||
detection of configuration issues. | information facilitates the detection of configuration issues. | |||
To detect faults, Logging must enable the reporting of any CDN | To detect faults, Logging information needs to report success and | |||
delivery operation success and failure. The uCDN can summarize such | failure of CDN delivery operations. The uCDN can summarize such | |||
information into KPIs. For instance, Logging needs to allow the | information into KPIs. For instance, Logging information needs to | |||
computation of the number of times, during a given time period, that | allow the computation of the number of times, during a given time | |||
content delivery related to a specific service succeeds/fails. | period, that content delivery related to a specific service succeeds/ | |||
fails. | ||||
Logging enables the CDN providers to identify and troubleshoot | Logging information enables the CDN providers to identify and | |||
performance degradations. In particular, Logging enables the | troubleshoot performance degradations. In particular, Logging | |||
communication of traffic data (e.g., the amount of traffic that has | information enables tracking of traffic data (e.g., the amount of | |||
been forwarded by a dCDN on behalf of an uCDN over a given period of | traffic that has been forwarded by a dCDN on behalf of an uCDN over a | |||
time), which is particularly useful for CDN and network planning | given period of time), which is particularly useful for CDN and | |||
operations. | network planning operations. | |||
2.2.5.2. Accounting | 2.2.5.2. Accounting | |||
Logging is essential for accounting, to permit inter-CDN billing and | Logging information is essential for accounting, to permit inter-CDN | |||
CSP billing by uCDNs. For instance, Logging information provided by | billing and CSP billing by uCDNs. For instance, Logging information | |||
dCDNs enables the uCDN to compute the total amount of traffic | provided by dCDNs enables the uCDN to compute the total amount of | |||
delivered by every dCDN for a particular Content Provider, as well | traffic delivered by every dCDN for a particular Content Provider, as | |||
as, the associated bandwidth usage (e.g., peak, 95th percentile), and | well as, the associated bandwidth usage (e.g., peak, 95th | |||
the maximum number of simultaneous sessions over a given period of | percentile), and the maximum number of simultaneous sessions over a | |||
time. | given period of time. | |||
2.2.5.3. Analytics and Reporting | 2.2.5.3. Analytics and Reporting | |||
The goal of analytics is to gather any relevant information to track | The goal of analytics is to gather any relevant information to track | |||
audience, analyze user behavior, and monitor the performance and | audience, analyze user behavior, and monitor the performance and | |||
quality of content delivery. For instance, Logging enables the CDN | quality of content delivery. For instance, Logging information | |||
providers to report on content consumption (e.g., delivered sessions | enables the CDN providers to report on content consumption (e.g., | |||
per content) in a specific geographic area. | delivered sessions per content) in a specific geographic area. | |||
The goal of reporting is to gather any relevant information to | The goal of reporting is to gather any relevant information to | |||
monitor the performance and quality of content delivery and allow | monitor the performance and quality of content delivery and allow | |||
detection of delivery issues. For instance, reporting could track | detection of delivery issues. For instance, reporting could track | |||
the average delivery throughput experienced by End-Users in a given | the average delivery throughput experienced by End Users in a given | |||
region for a specific CSP or content set over a period of time. | region for a specific CSP or content set over a period of time. | |||
2.2.5.4. Security | 2.2.5.4. Security | |||
The goal of security is to prevent and monitor unauthorized access, | The goal of security is to prevent and monitor unauthorized access, | |||
misuse, modification, and denial of access of a service. A set of | misuse, modification, and denial of access of a service. A set of | |||
information is logged for security purposes. In particular, a record | information is logged for security purposes. In particular, a record | |||
of access to content is usually collected to permit the CSP to detect | of access to content is usually collected to permit the CSP to detect | |||
infringements of content delivery policies and other abnormal End | infringements of content delivery policies and other abnormal End | |||
User behaviors. | User behaviors. | |||
skipping to change at page 13, line 17 | skipping to change at page 13, line 37 | |||
2.2.5.6. Notions common to multiple Log Consuming Applications | 2.2.5.6. Notions common to multiple Log Consuming Applications | |||
2.2.5.6.1. Logging Information Views | 2.2.5.6.1. Logging Information Views | |||
Within a given log-consuming application, different views may be | Within a given log-consuming application, different views may be | |||
provided to different users depending on privacy, business, and | provided to different users depending on privacy, business, and | |||
scalability constraints. | scalability constraints. | |||
For example, an analytics tool run by the uCDN can provide one view | For example, an analytics tool run by the uCDN can provide one view | |||
to an uCDN operator that exploits all the logging information | to an uCDN operator that exploits all the Logging information | |||
available to the uCDN, while the tool may provide a different view to | available to the uCDN, while the tool may provide a different view to | |||
each CSP exploiting only the logging information related to the | each CSP exploiting only the Logging information related to the | |||
content of the given CSP. | content of the given CSP. | |||
As another example, maintenance and debugging tools may provide | As another example, maintenance and debugging tools may provide | |||
different views to different CDN operators, based on their | different views to different CDN operators, based on their | |||
operational role. | operational role. | |||
2.2.5.6.2. Key Performance Indicators (KPIs) | 2.2.5.6.2. Key Performance Indicators (KPIs) | |||
This section presents, for explanatory purposes, a non-exhaustive | This section presents, for explanatory purposes, a non-exhaustive | |||
list of Key Performance Indicators (KPIs) that can be extracted/ | list of Key Performance Indicators (KPIs) that can be extracted/ | |||
produced from logs. | produced from logs. | |||
Multiple log-consuming applications, such as analytics, monitoring, | Multiple log-consuming applications, such as analytics, monitoring, | |||
and maintenance applications, often compute and track such KPIs. | and maintenance applications, often compute and track such KPIs. | |||
In a CDNI environment, depending on the situation, these KPIs may be | In a CDNI environment, depending on the situation, these KPIs may be | |||
computed by the uCDN or by the dCDN. But it is usually the uCDN that | computed by the uCDN or by the dCDN. But it is usually the uCDN that | |||
computes KPIs, because uCDN and dCDN may have different definitions | computes KPIs, because the uCDN and dCDN may have different | |||
of the KPIs and the computation of some KPIs requires a vision of all | definitions of the KPIs and the computation of some KPIs requires a | |||
the deliveries performed by the uCDN and all its dCDNs. | vision of all the deliveries performed by the uCDN and all its dCDNs. | |||
Here is a list of important examples of KPIs: | Here is a list of important examples of KPIs: | |||
o Number of delivery requests received from End-Users in a given | o Number of delivery requests received from End Users in a given | |||
region for each piece of content, during a given period of time | region for each piece of content, during a given period of time | |||
(e.g., hour/day/week/month) | (e.g., hour/day/week/month) | |||
o Percentage of delivery successes/failures among the aforementioned | o Percentage of delivery successes/failures among the aforementioned | |||
requests | requests | |||
o Number of failures listed by failure type (e.g., HTTP error code) | o Number of failures listed by failure type (e.g., HTTP error code) | |||
for requests received from End Users in a given region and for | for requests received from End Users in a given region and for | |||
each piece of content, during a given period of time (e.g., hour/ | each piece of content, during a given period of time (e.g., hour/ | |||
day/week/month) | day/week/month) | |||
skipping to change at page 14, line 28 | skipping to change at page 14, line 49 | |||
o Maximum, mean, and minimum delivery throughput for sessions | o Maximum, mean, and minimum delivery throughput for sessions | |||
established by End Users in a given region, for a given Content | established by End Users in a given region, for a given Content | |||
Provider, and during a given period of time (e.g., hour/day/week/ | Provider, and during a given period of time (e.g., hour/day/week/ | |||
month) | month) | |||
o Cache-hit and byte-hit ratios for requests received from End Users | o Cache-hit and byte-hit ratios for requests received from End Users | |||
in a given region for each piece of content, during a given period | in a given region for each piece of content, during a given period | |||
of time (e.g., hour/day/week/month) | of time (e.g., hour/day/week/month) | |||
o Top 10 of the most popularly requested content (during a given day | o Top 10 most popularly requested contents (during a given day/week/ | |||
/week/month), | month) | |||
o Terminal type (mobile, PC, STB, if this information can be | o Terminal type (mobile, PC, STB, if this information can be | |||
acquired from the browser type header, for example). | acquired from the browser type header, for example). | |||
Additional KPIs can be computed from other sources of information | Additional KPIs can be computed from other sources of information | |||
than the Logging, for instance, data collected by a content portal or | than the Logging information, for instance, data collected by a | |||
by specific client-side application programming interfaces. Such | content portal or by specific client-side application programming | |||
KPIs are out of scope for the present memo. | interfaces. Such KPIs are out of scope for the present document. | |||
The KPIs used depend strongly on the considered log-consuming | The KPIs used depend strongly on the considered log-consuming | |||
application -- the CDN operator may be interested in different | application -- the CDN operator may be interested in different | |||
metrics than the CSP is. In particular, CDN operators are often | metrics than the CSP is. In particular, CDN operators are often | |||
interested in delivery and acquisition performance KPIs, information | interested in delivery and acquisition performance KPIs, information | |||
related to Surrogates' performance, caching information to evaluate | related to Surrogates' performance, caching information to evaluate | |||
the cache-hit ratio, information about the delivered file size to | the cache-hit ratio, information about the delivered file size to | |||
compute the volume of content delivered during peak hour, etc. | compute the volume of content delivered during peak hour, etc. | |||
Some of the KPIs, for instance those providing an instantaneous | Some of the KPIs, for instance those providing an instantaneous | |||
vision of the active sessions for a given CSP's content, are useful | vision of the active sessions for a given CSP's content, are useful | |||
essentially if they are provided in real-time. By contrast, some | essentially if they are provided in real-time. By contrast, some | |||
other KPIs, such as the one averaged on a long period of time, can be | other KPIs, such as the one averaged on a long period of time, can be | |||
provided in non-real time. | provided in non-real- time. | |||
3. CDNI Logging File | 3. CDNI Logging File | |||
3.1. Rules | 3.1. Rules | |||
This specification uses the Augmented Backus-Naur Form (ABNF) | This specification uses the Augmented Backus-Naur Form (ABNF) | |||
notation and core rules of [RFC5234]. In particular, the present | notation and core rules of [RFC5234]. In particular, the present | |||
document uses the following rules from [RFC5234]: | document uses the following rules from [RFC5234]: | |||
CR = %x0D ; carriage return | CR = %x0D ; carriage return | |||
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z | ||||
DIGIT = %x30-39 ; 0-9 | DIGIT = %x30-39 ; 0-9 | |||
DQUOTE = %x22 ; " (Double Quote) | DQUOTE = %x22 ; " (Double Quote) | |||
CRLF = CR LF ; Internet standard newline | CRLF = CR LF ; Internet standard newline | |||
HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" | HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" | |||
HTAB = %x09 ; horizontal tab | HTAB = %x09 ; horizontal tab | |||
skipping to change at page 15, line 37 | skipping to change at page 16, line 13 | |||
OCTET = %x00-FF ; 8 bits of data | OCTET = %x00-FF ; 8 bits of data | |||
The present document also uses the following rules from [RFC3986]: | The present document also uses the following rules from [RFC3986]: | |||
host = as specified in section 3.2.2 of [RFC3986]. | host = as specified in section 3.2.2 of [RFC3986]. | |||
IPv4address = as specified in section 3.2.2 of [RFC3986]. | IPv4address = as specified in section 3.2.2 of [RFC3986]. | |||
IPv6address = as specified in section 3.2.2 of [RFC3986]. | IPv6address = as specified in section 3.2.2 of [RFC3986]. | |||
The present document also defines the folowing additional rules: | The present document also defines the following additional rules: | |||
ADDRESS = IPv4address / IPv6address | ADDRESS = IPv4address / IPv6address | |||
ALPHANUM = ALPHA / DIGIT | ||||
DATE = 4DIGIT "-" 2DIGIT "-" 2DIGIT | DATE = 4DIGIT "-" 2DIGIT "-" 2DIGIT | |||
Dates are recorded in the format YYYY-MM-DD where YYYY, MM and | Dates are recorded in the format YYYY-MM-DD where YYYY, MM and | |||
DD stand for the numeric year, month and day respectively. All | DD stand for the numeric year, month and day respectively. All | |||
dates are specified in Universal Time Coordinated (UTC). | dates are specified in Universal Time Coordinated (UTC). | |||
DEC = 1*DIGIT ["." *DIGIT] | DEC = 1*DIGIT ["." *DIGIT] | |||
NAMEFORMAT = ALPHANUM *(ALPHANUM / "_" / "-") | ||||
QSTRING = DQUOTE *NDQUOTE DQUOTE ; where | QSTRING = DQUOTE *NDQUOTE DQUOTE ; where | |||
NDQUOTE = <any OCTET excluding DQUOTE> / 2DQUOTE ; whereby a | NDQUOTE = <any OCTET excluding DQUOTE> / 2DQUOTE ; whereby a | |||
DQUOTE is conveyed inside a QSTRING unambiguously by repeating | DQUOTE is conveyed inside a QSTRING unambiguously by repeating | |||
it. | it. | |||
NHTABSTRING = *NHTAB ; where | NHTABSTRING = *NHTAB ; where | |||
NHTAB = <any OCTET excluding HTAB> | NHTAB = <any OCTET excluding HTAB and CRLF> | |||
TIME = 2DIGIT ":" 2DIGIT ":" 2DIGIT ["." *DIGIT] | TIME = 2DIGIT ":" 2DIGIT ":" 2DIGIT ["." *DIGIT] | |||
Times are recorded in the form HH:MM:SS or HH:MM:SS.S where HH | Times are recorded in the form HH:MM:SS or HH:MM:SS.S where HH | |||
is the hour in 24 hour format, MM is minutes and SS is seconds. | is the hour in 24 hour format, MM is minutes and SS is seconds. | |||
All times are specified in Universal Time Coordinated (UTC). | All times are specified in Universal Time Coordinated (UTC). | |||
3.2. CDNI Logging File Structure | 3.2. CDNI Logging File Structure | |||
As defined in Section 1.1 a CDNI logging field is as an atomic | As defined in Section 1.1: a CDNI Logging Field is as an atomic | |||
logging information element and a CDNI Logging Record is a collection | logging information element, a CDNI Logging Record is a collection of | |||
of CDNI Logging Fields containing all logging information | CDNI Logging Fields containing all logging information corresponding | |||
corresponding to a single logging event. This document defines a | to a single logging event, and a CDNI Logging File contains a | |||
third level of structure, the CDNI Logging File, that is a collection | collection of CDNI Logging Records. This structure is illustrated in | |||
of CDNI Logging Records. This structure is illustrated in Figure 3. | Figure 3. The use of a file structure for transfer of CDNI Logging | |||
The use of a file structure for transfer of CDNI Logging information | information is selected since this is the most common practise today | |||
is selected since this is the most common practise today for exchange | for exchange of logging information within and across CDNs. | |||
of logging information within and across CDNs. | ||||
+----------------------------------------------------------+ | +----------------------------------------------------------+ | |||
|CDNI Logging File | | |CDNI Logging File | | |||
| | | | | | |||
| #Directive 1 | | | #Directive 1 | | |||
| #Directive 2 | | | #Directive 2 | | |||
| ... | | | ... | | |||
| #Directive P | | | #Directive P | | |||
| | | | | | |||
| +------------------------------------------------------+ | | | +------------------------------------------------------+ | | |||
skipping to change at page 17, line 33 | skipping to change at page 19, line 8 | |||
Figure 3: Structure of Logging Files | Figure 3: Structure of Logging Files | |||
The CDNI Logging File format is inspired from the W3C Extended Log | The CDNI Logging File format is inspired from the W3C Extended Log | |||
File Format [ELF]. However, it is fully specified by the present | File Format [ELF]. However, it is fully specified by the present | |||
document. Where the present document differs from the W3C Extended | document. Where the present document differs from the W3C Extended | |||
Log File Format, an implementation of CDNI Logging MUST comply with | Log File Format, an implementation of CDNI Logging MUST comply with | |||
the present document. | the present document. | |||
Using a format that resembles the W3C Extended Log File Format is | Using a format that resembles the W3C Extended Log File Format is | |||
intended to keep CDNI logging format close to intra-CDN logging | intended to keep CDNI logging format close to the intra-CDN Logging | |||
format commonly used in CDNs today, thereby minimizing systematic | information format commonly used in CDNs today, thereby minimizing | |||
translation at CDN/CDNI boundary. | systematic translation at CDN/CDNI boundary. | |||
A CDNI Logging File MUST contain a sequence of lines containing US- | A CDNI Logging File MUST contain a sequence of lines containing US- | |||
ASCII characters [CHAR_SET] terminated by CRLF. | ASCII characters [CHAR_SET] terminated by CRLF. | |||
Each line of a CDNI Logging File MUST contain either a directive or a | Each line of a CDNI Logging File MUST contain either a directive or a | |||
CDNI Logging Record. | CDNI Logging Record. | |||
Directives record information about the CDNI Logging process itself. | Directives record information about the CDNI Logging process itself. | |||
Lines containing directives MUST begin with the "#" character. | Lines containing directives MUST begin with the "#" character. | |||
Directives are specified in Section 3.3. | Directives are specified in Section 3.3. | |||
skipping to change at page 18, line 21 | skipping to change at page 19, line 43 | |||
RECGROUP = *RECLINE | RECGROUP = *RECLINE | |||
<CDNI Logging File> = 1*<DIRGROUP RECGROUP> | <CDNI Logging File> = 1*<DIRGROUP RECGROUP> | |||
3.3. CDNI Logging File Directives | 3.3. CDNI Logging File Directives | |||
The CDNI Logging File directives are defined by the following rules: | The CDNI Logging File directives are defined by the following rules: | |||
directive = DIRNAME ":" HTAB DIRVAL | directive = DIRNAME ":" HTAB DIRVAL | |||
DIRNAME = any CDNI Logging Directive name registered in the CDNI | DIRNAME = <any CDNI Logging Directive name registered in the CDNI | |||
Logging Directive Names registry (Section 5.1). | Logging Directive Names registry (Section 5.1)> | |||
DIRVAL = <directive value as specified below for each directive | DIRVAL = <directive value, as specified by the document identified | |||
name> | as Reference in the CDNI Logging Directive Names registry | |||
(Section 5.1) for the corresponding DIRNAME> | ||||
An implementation of the CDNI Logging interface MUST support all of | An implementation of the CDNI Logging interface MUST support all of | |||
the following directives, listed below by their directive name: | the following directives, listed below by their directive name: | |||
o Version: | o Version: | |||
* format: "CDNI" "/" 1*DIGIT "." 1*DIGIT | * format: "CDNI" "/" 1*DIGIT "." 1*DIGIT | |||
* directive value: indicates the version of the CDNI Logging File | * directive value: indicates the version of the CDNI Logging File | |||
format. The value MUST be "CDNI/1.0" for the version specified | format. The value MUST be "CDNI/1.0" for the version specified | |||
in the present document. | in the present document. | |||
* occurrence: there MUST be one and only one instance of this | * occurrence: there MUST be one and only one instance of this | |||
directive per CDNI Logging File. It MUST be the first line of | directive per CDNI Logging File. It MUST be the first line of | |||
the CDNI Logging file. | the CDNI Logging File. | |||
o UUID: | o UUID: | |||
* format: NHTABSTRING | * format: NHTABSTRING | |||
* directive value: this a Universally Unique IDentifier (UUID) | * directive value: this a Universally Unique IDentifier (UUID) | |||
from the UUID Uniform Resource Name (URN) namespace specified | from the UUID Uniform Resource Name (URN) namespace specified | |||
in [RFC4122]) for the CDNI Logging File . | in [RFC4122]) for the CDNI Logging File. | |||
* occurrence: there MUST be one and only one instance of this | * occurrence: there MUST be one and only one instance of this | |||
directive per CDNI Logging File. | directive per CDNI Logging File. | |||
o Claimed-Origin: | o Claimed-Origin: | |||
* format: host | * format: host | |||
* directive value: this contains the claimed identification of | * directive value: this contains the claimed identification of | |||
the entity transmitting the CDNI Logging File (e.g. the host in | the entity transmitting the CDNI Logging File (e.g., the host | |||
a dCDN supporting the CDNI Logging interface) or the entity | in a dCDN supporting the CDNI Logging interface) or the entity | |||
responsible for transmitting the CDNI Logging File (e.g. the | responsible for transmitting the CDNI Logging File (e.g., the | |||
dCDN). | dCDN). | |||
* occurrence: there MUST be zero or one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
directive per CDNI Logging File. This directive MAY be | directive per CDNI Logging File. This directive MAY be | |||
included by the dCDN. It MUST NOT be included or modified by | included by the dCDN. It MUST NOT be included or modified by | |||
the uCDN. | the uCDN. | |||
o Verified-Origin: | o Verified-Origin: | |||
* format: host | * format: host | |||
* directive value: this contains the identification, as | * directive value: this contains the identification, as | |||
established by the entity receiving the CDNI Logging file, of | established by the entity receiving the CDNI Logging File, of | |||
the entity transmitting the CDNI Logging File (e.g. the host in | the entity transmitting the CDNI Logging File (e.g., the host | |||
a dCDN supporting the CDNI Logging interface) or the entity | in a dCDN supporting the CDNI Logging interface) or the entity | |||
responsible for transmitting the CDNI Logging File (e.g. the | responsible for transmitting the CDNI Logging File (e.g., the | |||
dCDN). | dCDN). | |||
* occurrence: there MUST be zero or one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
directive per CDNI Logging File. This directive MAY be added | directive per CDNI Logging File. This directive MAY be added | |||
by the uCDN (e.g. before storing the CDNI Logging File). It | by the uCDN (e.g., before storing the CDNI Logging File). It | |||
MUST NOT be included by the dCDN. The mechanisms used by the | MUST NOT be included by the dCDN. The mechanisms used by the | |||
uCDN to establish and validate the entity responsible for the | uCDN to establish and validate the entity responsible for the | |||
CDNI Logging File is outside the scope of the present document. | CDNI Logging File is outside the scope of the present document. | |||
We observe that, in particular, this may be achieved through | We observe that, in particular, this may be achieved through | |||
authentication mechanisms that are part of the CDNI Logging | authentication mechanisms that are part of the CDNI Logging | |||
File pull mechanism (Section 4.2). | File pull mechanism (Section 4.2). | |||
o Record-Type: | o Record-Type: | |||
* format: NHTABSTRING | * format: NAMEFORMAT | |||
* directive value: indicates the type of the CDNI Logging Records | * directive value: indicates the type of the CDNI Logging Records | |||
that follow this directive, until another Record-Type directive | that follow this directive, until another Record-Type directive | |||
(or the end of the CDNI Logging File). This can be any CDNI | (or the end of the CDNI Logging File). This can be any CDNI | |||
Logging Record type registered in the CDNI Logging Record-types | Logging Record type registered in the CDNI Logging Record-types | |||
registry (Section 5.2). "cdni_http_request_v1" MUST be | registry (Section 5.2). "cdni_http_request_v1" MUST be | |||
indicated as the Record-Type directive value for CDNI Logging | indicated as the Record-Type directive value for CDNI Logging | |||
records corresponding to HTTP request (e.g. a HTTP delivery | records corresponding to HTTP requests (e.g., a HTTP delivery | |||
request) as specified in Section 3.4.1. | request) as specified in Section 3.4.1. | |||
* occurrence: there MUST be at least one instance of this | * occurrence: there MUST be at least one instance of this | |||
directive per CDNI Logging File. The first instance of this | directive per CDNI Logging File. The first instance of this | |||
directive MUST precede a Fields directive and precede any CDNI | directive MUST precede a Fields directive and MUST precede all | |||
Logging Record. | CDNI Logging Records. | |||
o Fields: | o Fields: | |||
* format: FIENAME *<HTAB FIENAME> ; where FIENAME can take any | * format: FIENAME *<HTAB FIENAME> ; where FIENAME can take any | |||
CDNI Logging field name registered in the CDNI Logging Field | CDNI Logging field name registered in the CDNI Logging Field | |||
Names registry (Section 5.3). | Names registry (Section 5.3). | |||
* directive value: this lists the names of all the fields for | * directive value: this lists the names of all the fields for | |||
which a value is to appear in the CDNI Logging Records that | which a value is to appear in the CDNI Logging Records that | |||
follow the instance of this directive (until another instance | follow the instance of this directive (until another instance | |||
of this directive). The names of the fields, as well as their | of this directive). The names of the fields, as well as their | |||
possible occurrences, are specified for each type of CDNI | occurrences, MUST comply with the corresponding rules specified | |||
Logging Records in Section 3.4. | in the document referenced in the CDNI Logging Record-types | |||
registry (Section 5.2) for the corresponding CDNI Logging | ||||
Record-Type. | ||||
* occurrence: there MUST be at least one instance of this | * occurrence: there MUST be at least one instance of this | |||
directive per Record-Type directive. The first instance of | directive per Record-Type directive. The first instance of | |||
this directive for a given Record-Type MUST appear before any | this directive for a given Record-Type MUST appear before any | |||
CDNI Logging Record for this Record-Type. | CDNI Logging Record for this Record-Type. | |||
o Integrity-Hash: | o Integrity-Hash: | |||
* format: 32HEXDIG | * format: 32HEXDIG | |||
* directive value: This directive permits the detection of a | * directive value: This directive permits the detection of a | |||
corrupted CDNI Logging File. This can be useful, for instance, | corrupted CDNI Logging File. This can be useful, for instance, | |||
if a problem occurs on the filesystem of the dCDN Logging | if a problem occurs on the filesystem of the dCDN Logging | |||
system and leads to a truncation of a logging file. The valid | system and leads to a truncation of a logging file. The valid | |||
Integrity-Hash value is included in this directive by the | Integrity-Hash value is included in this directive by the | |||
entity that transmits the CDNI Logging File. It is computed by | entity that transmits the CDNI Logging File. It is computed by | |||
applying the MD5 ([RFC1321]) cryptographic hash function on the | applying the MD5 ([RFC1321]) cryptographic hash function on the | |||
CDNI Logging File, including all the directives and logging | CDNI Logging File, including all the directives and logging | |||
records, up to the Intergrity-Hash directive itself, excluding | records, up to the Integrrity-Hash directive itself, excluding | |||
the Integrity-Hash directive itself. The Integrity-Hash value | the Integrity-Hash directive itself. The Integrity-Hash value | |||
is represented as a US-ASCII encoded hexadecimal number, 32 | is represented as a US-ASCII encoded hexadecimal number, 32 | |||
digits long (representing a 128 bit hash value). The entity | digits long (representing a 128 bit hash value). The entity | |||
receiving the CDNI Logging File also computes in a similar way | receiving the CDNI Logging File also computes in a similar way | |||
the MD5 hash on the received CDNI Logging File and compares | the MD5 hash on the received CDNI Logging File and compares | |||
this hash to the value of the Integrity-Hash directive. If the | this hash to the value of the Integrity-Hash directive. If the | |||
two values are equal, then the received CDNI Logging File MUST | two values are equal, then the received CDNI Logging File MUST | |||
be considered non-corrupted. If the two values are different, | be considered non-corrupted. Note that this is not a guarantee | |||
the received CDNI Logging File MUST be considered corrupted. | that the file has not been tampered with by a third party. If | |||
The behavior of the entity that received a corrupted CDNI | the two values are different, the received CDNI Logging File | |||
Logging File is outside the scope of this specification; we | MUST be considered corrupted. The behavior of the entity that | |||
note that the entity MAY attempt to pull again the same CDNI | received a corrupted CDNI Logging File is outside the scope of | |||
Logging file from the transmitting entity. If the entity | this specification; we note that the entity MAY attempt to pull | |||
receiving the CDNI Logging File adds a Verified-Origin | again the same CDNI Logging File from the transmitting entity. | |||
directive, it MUST recompute and update the Integrity-Hash | If the entity receiving a non-corrupted CDNI Logging File adds | |||
directive so it also protects the added Verified-Origin | a Verified-Origin directive, it MUST then recompute and update | |||
directive. | the Integrity-Hash directive so it also protects the added | |||
Verified-Origin directive. | ||||
* occurrence: there MUST be zero or one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
directive. There SHOULD be one instance of this directive. | directive. There SHOULD be exactly one instance of this | |||
One situation where that directive could be omitted is where | directive. One situation where that directive could be omitted | |||
integrity protection is already provided via another mechanism | is where integrity protection is already provided via another | |||
(for example if an integrity hash is associated to the CDNI | mechanism (for example if an integrity hash is associated to | |||
Logging file out of band through the CDNI Logging Logging Feed | the CDNI Logging File out of band through the CDNI Logging | |||
Section 4.1 leveraging ATOM extensions such as those proposed | Logging Feed Section 4.1 leveraging ATOM extensions such as | |||
in [I-D.snell-atompub-link-extensions]. When present, this | those proposed in [I-D.snell-atompub-link-extensions]. When | |||
field MUST be the last line of the CDNI Logging File. | present, this field MUST be the last line of the CDNI Logging | |||
File. | ||||
3.4. CDNI Logging Records | 3.4. CDNI Logging Records | |||
A CDNI Logging Record consists of a sequence of CDNI Logging Fields | A CDNI Logging Record consists of a sequence of CDNI Logging Fields | |||
relating to that single CDNI Logging Record. | relating to that single CDNI Logging Record. | |||
CDNI Logging Fields MUST be separated by the "horizontal tabulation | CDNI Logging Fields MUST be separated by the "horizontal tabulation | |||
(HTAB)" character. | (HTAB)" character. | |||
To facilitate readability, a prefix scheme is used for CDNI Logging | To facilitate readability, a prefix scheme is used for CDNI Logging | |||
field names in a similar way to the one used in W3C Extended Log File | field names in a similar way to the one used in W3C Extended Log File | |||
Format [ELF] . The semantics of the prefix in the present document | Format [ELF]. The semantics of the prefix in the present document | |||
is: | is: | |||
o c: refers to the User Agent that issues the request (corresponds | o c: refers to the User Agent that issues the request (corresponds | |||
to the "client" of W3C Extended Log Format) | to the "client" of W3C Extended Log Format) | |||
o d: refers to the dCDN (relative to a given CDN acting as a uCDN) | o d: refers to the dCDN (relative to a given CDN acting as a uCDN) | |||
o s: refers to the dCDN Surrogate that serves the request | o s: refers to the dCDN Surrogate that serves the request | |||
(corresponds to the "server" of W3C Extended Log Format) | (corresponds to the "server" of W3C Extended Log Format) | |||
o u: refers to the uCDN (relative to a given CDN acting as a dCDN) | o u: refers to the uCDN (relative to a given CDN acting as a dCDN) | |||
o cs: refers to communication from the User-Agent towards the dCDN | o cs: refers to communication from the User Agent towards the dCDN | |||
Surrogate | Surrogate | |||
o sc: refers to communication from the dCDN Surrogate towards the | o sc: refers to communication from the dCDN Surrogate towards the | |||
User-Agent | User Agent | |||
An implementation of the CDNI Logging interface as per the present | An implementation of the CDNI Logging interface as per the present | |||
specification MUST support the CDNI HTTP Delivery Records as | specification MUST support the CDNI HTTP Delivery Records as | |||
specified in Section 3.4.1. | specified in Section 3.4.1. | |||
A CDNI Logging Record is defined by the following rules: | A CDNI Logging Record is defined by the following rules: | |||
FIEVAL = <CDNI Logging Field value> | FIEVAL = <CDNI Logging Field value> | |||
<CDNI Logging Record> = FIEVAL *<HTAB FIEVAL> ; where FIEVAL | <CDNI Logging Record> = FIEVAL *<HTAB FIEVAL> ; where FIEVAL | |||
skipping to change at page 22, line 46 | skipping to change at page 24, line 26 | |||
* occurrence: there MUST be one and only one instance of this | * occurrence: there MUST be one and only one instance of this | |||
field. | field. | |||
o time-taken: | o time-taken: | |||
* format: DEC | * format: DEC | |||
* field value: decimal value of the duration, in seconds, between | * field value: decimal value of the duration, in seconds, between | |||
the start of the processing of the request and the completion | the start of the processing of the request and the completion | |||
of the request processing (e.g. completion of delivery) by the | of the request processing (e.g., completion of delivery) by the | |||
Surrogate. | Surrogate. | |||
* occurrence: there MUST be one and only one instance of this | * occurrence: there MUST be one and only one instance of this | |||
field. | field. | |||
o c-ip: | o c-ip: | |||
* format: ADDRESS | * format: ADDRESS | |||
* field value: the source IPv4 or IPv6 address (i.e. the "client" | * field value: the source IPv4 or IPv6 address (i.e., the | |||
address) in the request received by the Surrogate. | "client" address) in the request received by the Surrogate. | |||
* occurrence: there MUST be one and only one instance of this | * occurrence: there MUST be one and only one instance of this | |||
field. | field. | |||
o c-ip-anonimizing: | o c-ip-anonymizing: | |||
* format: 1*DIGIT | * format: 1*DIGIT | |||
* field value: the number of rightmost bits of the address in the | * field value: the number of rightmost bits of the address in the | |||
c-ip field that are zeroed-out in order to anonymize the | c-ip field that are zeroed-out in order to anonymize the | |||
logging record. The mechanism by which the two ends of the | logging record. The mechanism by which the two ends of the | |||
CDNI Logging interface agree on whether anonimization is to be | CDNI Logging interface agree on whether anonymization is to be | |||
supported and the number of bits that need to be zeroed-out for | supported and the number of bits that need to be zeroed-out for | |||
this purpose are outside the scope of the present document. | this purpose are outside the scope of the present document. | |||
* occurrence: there MUST be zero or one instance of this field. | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | ||||
o c-port: | o c-port: | |||
* format: 1*DIGIT | * format: 1*DIGIT | |||
* field value: the source TCP port (i.e. the "client" port) in | * field value: the source TCP port (i.e., the "client" port) in | |||
the request received by the Surrogate. | the request received by the Surrogate. | |||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
o s-ip: | o s-ip: | |||
* format: ADDRESS | * format: ADDRESS | |||
* field value: the IPv4 or IPv6 address of the Surrogate that | * field value: the IPv4 or IPv6 address of the Surrogate that | |||
served the request (i.e. the "server" address). | served the request (i.e., the "server" address). | |||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
o s-hostname: | o s-hostname: | |||
* format: host | * format: host | |||
* field value: the hostname of the Surrogate that served the | * field value: the hostname of the Surrogate that served the | |||
request (i.e. the "server" hostname). | request (i.e., the "server" hostname). | |||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
o s-port: | o s-port: | |||
* format: 1*DIGIT | * format: 1*DIGIT | |||
* field value: the destination TCP port (i.e. the "server" port) | * field value: the destination TCP port (i.e., the "server" port) | |||
in the request received by the Surrogate. | in the request received by the Surrogate. | |||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
o cs-method: | o cs-method: | |||
* format: NHTABSTRING | * format: NHTABSTRING | |||
* field value: this is the HTTP method of the HTTP request | * field value: this is the HTTP method of the HTTP request | |||
received by the Surrogate. | received by the Surrogate. | |||
* occurrence: There MUST be one and only one instance of this | * occurrence: There MUST be one and only one instance of this | |||
field. | field. | |||
o cs-uri: | o cs-uri: | |||
* format: NHTABSTRING | * format: NHTABSTRING | |||
skipping to change at page 24, line 46 | skipping to change at page 26, line 28 | |||
the scheme part set to "https" instead of "http". | the scheme part set to "https" instead of "http". | |||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
o u-uri: | o u-uri: | |||
* format: NHTABSTRING | * format: NHTABSTRING | |||
* field value: this is a complete URL, derived from the complete | * field value: this is a complete URL, derived from the complete | |||
URI of the request received by the Surrogate (i.e. the cs-uri) | URI of the request received by the Surrogate (i.e., the cs-uri) | |||
but transformed by the entity generating or transmitting the | but transformed by the entity generating or transmitting the | |||
CDNI Logging Record, in a way that is agreed upon between the | CDNI Logging Record, in a way that is agreed upon between the | |||
two ends of the CDNI Logging interface, so the transformed URI | two ends of the CDNI Logging interface, so the transformed URI | |||
is meaningful to the uCDN. For example, the two ends of the | is meaningful to the uCDN. For example, the two ends of the | |||
CDNI Logging interface could agree that the u-uri is | CDNI Logging interface could agree that the u-uri is | |||
constructed from the cs-uri by removing the part of the | constructed from the cs-uri by removing the part of the | |||
hostname that exposes which individual Surrogate actually | hostname that exposes which individual Surrogate actually | |||
performed the delivery. The details of modification performed | performed the delivery. The details of modification performed | |||
to generate the u-uri, as well as the mechanism to agree on | to generate the u-uri, as well as the mechanism to agree on | |||
these modifications between the two sides of the CDNI Logging | these modifications between the two sides of the CDNI Logging | |||
skipping to change at page 25, line 19 | skipping to change at page 26, line 50 | |||
* occurrence: there MUST be one and only one instance of this | * occurrence: there MUST be one and only one instance of this | |||
field. | field. | |||
o protocol: | o protocol: | |||
* format: NHTABSTRING | * format: NHTABSTRING | |||
* field value: this is value of the HTTP-Version field as | * field value: this is value of the HTTP-Version field as | |||
specified in [RFC2616] of the Request-Line of the request | specified in [RFC2616] of the Request-Line of the request | |||
received by the Surrogate (e.g. "HTTP/1.1"). | received by the Surrogate (e.g., "HTTP/1.1"). | |||
* occurrence: there MUST be one and only one instance of this | * occurrence: there MUST be one and only one instance of this | |||
field. | field. | |||
o sc-status: | o sc-status: | |||
* format: 3DIGIT | * format: 3DIGIT | |||
* field value: this is the HTTP Status-Code in the HTTP response | * field value: this is the HTTP Status-Code in the HTTP response | |||
from the Surrogate. | from the Surrogate. | |||
* occurrence: There MUST be one and only one instance of this | * occurrence: There MUST be one and only one instance of this | |||
field. | field. | |||
o sc-total-bytes: | o sc-total-bytes: | |||
* format: 1*DIGIT | * format: 1*DIGIT | |||
* field value: this is the total number of bytes of the HTTP | * field value: this is the total number of bytes of the HTTP | |||
response sent by the Surrogate in response to the request. | response sent by the Surrogate in response to the request. | |||
This includes the bytes of the Status-Line (including HTTP | This includes the bytes of the Status-Line, the bytes of the | |||
headers) and of the message-body. | HTTP headers and the bytes of the message-body. | |||
* occurrence: There MUST be one and only one instance of this | * occurrence: There MUST be one and only one instance of this | |||
field. | field. | |||
o sc-entity-bytes: | o sc-entity-bytes: | |||
* format: 1*DIGIT | * format: 1*DIGIT | |||
* field value: this is the number of bytes of the message-body in | * field value: this is the number of bytes of the message-body in | |||
the HTTP response sent by the Surrogate in response to the | the HTTP response sent by the Surrogate in response to the | |||
request. This does not include the bytes of the Status-Line | request. This does not include the bytes of the Status-Line or | |||
(and therefore does not include the bytes of the HTTP headers). | the bytes of the HTTP headers. | |||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
o cs(<HTTP-header-name>): | o cs(<HTTP-header-name>): | |||
* format: QSTRING | * format: QSTRING | |||
* field value: the value of the HTTP header (identified by the | * field value: the value of the HTTP header (identified by the | |||
<HTTP-header-name> in the CDNI Logging field name) as it | <HTTP-header-name> in the CDNI Logging field name) as it | |||
appears in the request processed by the Surrogate. For | appears in the request processed by the Surrogate, but | |||
example, when the CDNI Logging field name (FIENAME) listed in | prepended by a DQUOTE and appended by a DQUOTE. For example, | |||
the prededing Fields directive is "cs(User-Agent"), this CDNI | when the CDNI Logging field name (FIENAME) listed in the | |||
Logging field value contains the value of the User-Agent HTTP | preceding Fields directive is cs(User-Agent), this CDNI Logging | |||
header as received by the Surrogate in the request it | field value contains the value of the User-Agent HTTP header as | |||
processed. | received by the Surrogate in the request it processed, but | |||
prepended by a DQUOTE and appended by a DQUOTE. If the HTTP | ||||
header as it appeared in the request processed by the Surrogate | ||||
contains one or more DQUOTE, each DQUOTE MUST be escaped by an | ||||
additional DQUOTE. For example, if the HTTP header contains | ||||
My_Header"value", then the field value of the cs(<HTTP-header- | ||||
name>) is "My_Header""value""". | ||||
* occurrence: there MUST be zero, one or any number of instance | * occurrence: there MAY be zero, one or any number of instance of | |||
of this field. | this field. | |||
o sc(<HTTP-header-name>): | o sc(<HTTP-header-name>): | |||
* format: QSTRING | * format: QSTRING | |||
* field value: the value of the HTTP header (identified by the | * field value: the value of the HTTP header (identified by the | |||
<HTTP-header-name> in the CDNI Logging field name) as it | <HTTP-header-name> in the CDNI Logging field name) as it | |||
appears in the response issued by the Surrogate to serve the | appears in the response issued by the Surrogate to serve the | |||
request. | request, but prepended by a DQUOTE and appended by a DQUOTE. | |||
If the HTTP header as it appeared in the request processed by | ||||
the Surrogate contains one or more DQUOTE, each DQUOTE MUST be | ||||
escaped by an additional DQUOTE. For example, if the HTTP | ||||
header contains My_Header"value", then the field value of the | ||||
cs(<HTTP-header-name>) is "My_Header""value""". | ||||
* occurrence: there MUST be zero, one or any number of instance | * occurrence: there MAY be zero, one or any number of instances | |||
of this field. | of this field. | |||
o s-ccid: | o s-ccid: | |||
* format: QSTRING | * format: QSTRING | |||
* field value: this contains the value of the Content Collection | * field value: this contains the value of the Content Collection | |||
IDentifier associated by the uCDN to the content served by the | IDentifier (CCID) associated by the uCDN to the content served | |||
Surrogate via the CDNI Metadata interface | by the Surrogate via the CDNI Metadata interface | |||
([I-D.ietf-cdni-metadata]). | ([I-D.ietf-cdni-metadata]), prepended by a DQUOTE and appended | |||
by a DQUOTE. If the CCID conveyed in the CDNI Metadata | ||||
interface contains one or more DQUOTE, each DQUOTE MUST be | ||||
escaped by an additional DQUOTE. For example, if the CCID | ||||
conveyed in the CDNI Metadata interface is My_CCIDD"value", | ||||
then the field value of the s-ccid is "My_CCID""value""". | ||||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
o s-sid: | o s-sid: | |||
* format: QSTRING | * format: QSTRING | |||
* field value: this contains the value of a Session IDentifier | * field value: this contains the value of a Session IDentifier | |||
generated by the dCDN for a specific HTTP Adaptive Streaming | (SID) generated by the dCDN for a specific HTTP session, | |||
(HAS) session and whose value is included in the Logging record | prepended by a DQUOTE and appended by a DQUOTE. In particular, | |||
for every content chunk delivery of that session in view of | for HTTP Adaptive Streaming (HAS) session, the Session | |||
facilitating the later correlation of all the per content chunk | IDentifier value is included in the Logging record for every | |||
log records of a given HAS session. See section 3.4.2.2. of | content chunk delivery of that session in view of facilitating | |||
[RFC6983] for more discussion on the concept of Session | the later correlation of all the per content chunk log records | |||
IDentifier. | of a given HAS session. See section 3.4.2.2. of [RFC6983] for | |||
more discussion on the concept of Session IDentifier in the | ||||
context of HAS. If the SID conveyed contains one or more | ||||
DQUOTE, each DQUOTE MUST be escaped by an additional DQUOTE. | ||||
For example, if the SID is My_SID"value", then the field value | ||||
of the s-sid is "My_SID""value""". | ||||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
o s-cached: | o s-cached: | |||
* format: 1DIGIT | * format: 1DIGIT | |||
* field value: this characterises whether the Surrogate served | * field value: this characterises whether the Surrogate served | |||
the request using content already stored on its local cache or | the request using content already stored on its local cache or | |||
not. The allowed values are "0" (for miss) and "1" (for hit). | not. The allowed values are "0" (for miss) and "1" (for hit). | |||
"1" MUST be used when the Surrogate did serve the request using | "1" MUST be used when the Surrogate did serve the request using | |||
exclusively content already stored on its local cache. "0" MUST | exclusively content already stored on its local cache. "0" MUST | |||
be used otherwise (including cases where the Surrogate served | be used otherwise (including cases where the Surrogate served | |||
the request using some, but not all, content already stored on | the request using some, but not all, content already stored on | |||
its local cache). Note that a "0" only means a cache miss in | its local cache). Note that a "0" only means a cache miss in | |||
the Surrogate and does not provide any information on whether | the Surrogate and does not provide any information on whether | |||
the content was already stored, or not, in another device of | the content was already stored, or not, in another device of | |||
the dCDN i.e. whether this was a "dCDN hit" or "dCDN miss". | the dCDN, i.e., whether this was a "dCDN hit" or "dCDN miss". | |||
* occurrence: there MUST be zero or exactly one instance of this | * occurrence: there MUST be zero or exactly one instance of this | |||
field. | field. | |||
The "Fields" directive corresponding to a HTTP Request Logging Record | The "Fields" directive corresponding to a HTTP Request Logging Record | |||
MUST list all the fields name whose occurrence is specified above as | MUST contain all the fields names whose occurrence is specified above | |||
"There MUST be one and only one instance of this field". The | as "There MUST be one and only one instance of this field". The | |||
corresponding fields value MUST be present in every HTTP Request | corresponding fields value MUST be present in every HTTP Request | |||
Logging Record. | Logging Record. | |||
The "Fields" directive corresponding to a HTTP Request Logging Record | The "Fields" directive corresponding to a HTTP Request Logging Record | |||
MAY list all the fields value whose occurrence is specified above as | MAY list all the fields value whose occurrence is specified above as | |||
"there MUST be zero or exactly one instance of this field" or "there | "there MUST be zero or exactly one instance of this field" or "there | |||
MUST be zero, one or any number of instance of this field". The set | MAY be zero, one or any number of instances of this field". The set | |||
of such fields name actually listed in the "Fields" directive is | of such field names actually listed in the "Fields" directive is | |||
selected by the implementation generating the CDNI Logging File based | selected by the CDN generating the CDNI Logging File based on | |||
on agreements between the interconnected CDNs established through | agreements between the interconnected CDNs established through | |||
mechanisms outside the scope of this specification (e.g. contractual | mechanisms outside the scope of this specification (e.g., contractual | |||
agreements). When such a field name is not listed in the "Fields" | agreements). When such a field name is not listed in the "Fields" | |||
directive, the corresponding field value MUST NOT be included in the | directive, the corresponding field value MUST NOT be included in the | |||
Logging Record. When such a field name is listed in the "Fields" | Logging Record. When such a field name is listed in the "Fields" | |||
directive, the corresponding field value MUST be included in the | directive, the corresponding field value MUST be included in the | |||
Logging Record; in that case, if the value for the field is not | Logging Record; if the value for the field is not available, this | |||
available, this MUST be conveyed via a dash character ("-"). | MUST be conveyed via a dash character ("-"). | |||
The fields name listed in the "Fields" directive MAY be listed in the | The fields names listed in the "Fields" directive MAY be listed in | |||
order in which they are listed in Section 3.4.1 or MAY be listed in | the order in which they are listed in Section 3.4.1 or MAY be listed | |||
any other order. | in any other order. | |||
A dCDN-side implementation of the CDNI Logging interface MUST support | A dCDN-side implementation of the CDNI Logging interface MUST | |||
the ability to include valid values for the following Logging Fields | implement all the following Logging Fields in a CDNI Logging Record | |||
in a CDNI Logging Record of Record-Type "cdni_http_request_v1": | of Record-Type "cdni_http_request_v1", and MUST support the ability | |||
to include valid values for each of them: | ||||
o date | o date | |||
o time | o time | |||
o time-taken | o time-taken | |||
o c-ip | o c-ip | |||
o c-port | o c-port | |||
o s-ip | o s-ip | |||
o s-hostname | o s-hostname | |||
o s-port | o s-port | |||
o cs- method | o cs-method | |||
o cs-uri | o cs-uri | |||
o u-uri | o u-uri | |||
o protocol | o protocol | |||
o sc-status | o sc-status | |||
o sc- total-bytes | o sc-total-bytes | |||
o sc-entity-bytes | o sc-entity-bytes | |||
o cs(<HTTP-header>) | o cs(<HTTP-header>) | |||
o sc(<HTTP-header>) | o sc(<HTTP-header>) | |||
o s-cached | o s-cached | |||
A dCDN-side implementation of the CDNI Logging interface MAY support | A dCDN-side implementation of the CDNI Logging interface MAY support | |||
the ability to include valid values for the following Logging Fields | the following Logging Fields in a CDNI Logging Record of Record-Type | |||
in a CDNI Logging Record of Record-Type "cdni_http_request_v1": | "cdni_http_request_v1": | |||
o c-ip-anonimizing | o c-ip-anonymizing | |||
o s-ccid | o s-ccid | |||
o s-sid | o s-sid | |||
If a dCDN-side implementation of the CDNI Logging interface supports | ||||
these Fields, it MUST support the ability to include valid values for | ||||
them. | ||||
An uCDN-side implementation of the CDNI Logging interface MUST be | An uCDN-side implementation of the CDNI Logging interface MUST be | |||
able to accept CDNI Logging Files with CDNI Logging Records of | able to accept CDNI Logging Files with CDNI Logging Records of | |||
Record-Type "cdni_http_request_v1" containing any CDNI Logging Field | Record-Type "cdni_http_request_v1" containing any CDNI Logging Field | |||
defined in Section 3.4.1 as long as the CDNI Logging Record and the | defined in Section 3.4.1 as long as the CDNI Logging Record and the | |||
CDNI Logging File are compliant with the present document. | CDNI Logging File are compliant with the present document. | |||
3.5. CDNI Logging File Example | 3.5. CDNI Logging File Example | |||
#Version:<HTAB>CDNI/1.0<CRLF> | #Version:<HTAB>CDNI/1.0<CRLF> | |||
#UUID:<HTAB>"urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"<CRLF> | #UUID:<HTAB>urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6<CRLF> | |||
#Claimed-Origin:<HTAB>cdni-logging-entity.dcdn.example.com<CRLF> | #Claimed-Origin:<HTAB>cdni-logging-entity.dcdn.example.com<CRLF> | |||
#Record-Type:<HTAB>cdni_http_request_v1<CRLF> | #Record-Type:<HTAB>cdni_http_request_v1<CRLF> | |||
#Fields:<HTAB>date<HTAB>time<HTAB>time-taken<HTAB>c-ip<HTAB>cs- | #Fields:<HTAB>date<HTAB>time<HTAB>time-taken<HTAB>c-ip<HTAB>cs- | |||
method<HTAB>u-uri<HTAB>protocol<HTAB>sc-status<HTAB>sc-total- | method<HTAB>u-uri<HTAB>protocol<HTAB>sc-status<HTAB>sc-total- | |||
bytes<HTAB>cs(User-Agent)<HTAB>cs(Referer)<HTAB>s-cached<CRLF> | bytes<HTAB>cs(User-Agent)<HTAB>cs(Referer)<HTAB>s-cached<CRLF> | |||
2013-05-17<HTAB>00:38:06.825<HTAB>9.058<HTAB>10.5.7.1<HTAB>GET<HTAB>h | 2013-05-17<HTAB>00:38:06.825<HTAB>9.058<HTAB>10.5.7.1<HTAB>GET<HTAB>h | |||
skipping to change at page 30, line 20 | skipping to change at page 32, line 24 | |||
#Integrity-Hash:<HTAB>fe113dfce8fec91323a4fc02261af26e<CRLF> | #Integrity-Hash:<HTAB>fe113dfce8fec91323a4fc02261af26e<CRLF> | |||
4. CDNI Logging File Exchange Protocol | 4. CDNI Logging File Exchange Protocol | |||
This document specifies a protocol for the exchange of CDNI Logging | This document specifies a protocol for the exchange of CDNI Logging | |||
Files as specified in Section 3. | Files as specified in Section 3. | |||
This protocol comprises: | This protocol comprises: | |||
o a CDNI Logging feed, allowing the dCDN to notify the uCDN about | o a CDNI Logging feed, allowing the dCDN to notify the uCDN about | |||
the CDNI Logging files that can be retrieved by that uCDN from the | the CDNI Logging Files that can be retrieved by that uCDN from the | |||
dCDN, as well as all the information necessary for retrieving each | dCDN, as well as all the information necessary for retrieving each | |||
of these CDNI Logging File. The CDNI Logging feed is specified in | of these CDNI Logging Files. The CDNI Logging feed is specified | |||
Section 4.1. | in Section 4.1. | |||
o a CDNI Logging File pull mechanism, allowing the uCDN to obtain | o a CDNI Logging File pull mechanism, allowing the uCDN to obtain | |||
from the dCDN a given CDNI Logging File at the uCDN convenience. | from the dCDN a given CDNI Logging File at the uCDN's convenience. | |||
The CDNI Logging File pull mechanisms is specified in Section 4.2. | The CDNI Logging File pull mechanisms is specified in Section 4.2. | |||
An implementation of the CDNI Logging interface as per the present | An implementation of the CDNI Logging interface on the dCDN side (the | |||
document generating CDNI Logging file (i.e. on the dCDN side) MUST | entity generating the CDNI Logging file) MUST support the server side | |||
support the server side of the CDNI Logging feed and the server side | of the CDNI Logging feed and the server side of the CDNI Logging pull | |||
of the CDNI Logging pull mechanism. | mechanism. | |||
An implementation of the CDNI Logging interface as per the present | An implementation of the CDNI Logging interface on the uCDN side (the | |||
document consuming CDNI Logging file (i.e. on the uCDN side) MUST | entity consuming the CDNI Logging file) MUST support the client side | |||
support the client side of the CDNI Logging feed and the client side | of the CDNI Logging feed and the client side of the CDNI Logging pull | |||
of the CDNI Logging pull mechanism. | mechanism. | |||
We note that implementations of the CDNI Logging interface MAY also | We note that implementations of the CDNI Logging interface MAY also | |||
support other mechanisms to exchange CDNI Logging Files, for example | support other mechanisms to exchange CDNI Logging Files, for example | |||
in view of exchanging logging information with minimum time-lag (e.g. | in view of exchanging logging information with minimum time-lag | |||
sub-minute or sub-second) between when the event occurred in the dCDN | (e.g., sub-minute or sub-second) between when the event occurred in | |||
and when the corresponding Logging Record is made available to the | the dCDN and when the corresponding Logging Record is made available | |||
uCDN (e.g. for log-consuming applications requiring extremely fresh | to the uCDN (e.g., for log-consuming applications requiring extremely | |||
logging information such as near-real-time content delivery | fresh logging information such as near-real-time content delivery | |||
monitoring). Such mechanisms are outside the scope of the present | monitoring). Such mechanisms are for further study and outside the | |||
document but might be defined in future version of this document . | scope of this document. | |||
4.1. CDNI Logging Feed | 4.1. CDNI Logging Feed | |||
The server-side implementation of the CDNI Logging feed MUST produce | The server-side implementation of the CDNI Logging feed MUST produce | |||
an Atom feed [RFC4287]. This feed is used to advertise log files | an Atom feed [RFC4287]. This feed is used to advertise log files | |||
that are available for the client-side to retrieve using the CDNI | that are available for the client-side to retrieve using the CDNI | |||
Logging pull mechanism. | Logging pull mechanism. | |||
4.1.1. Atom Formatting | 4.1.1. Atom Formatting | |||
A CDNI Logging feed MUST be structured as an Archived feed, as | A CDNI Logging feed MUST be structured as an Archived feed, as | |||
defined in [RFC5005], and MUST be formatted in Atom [RFC4287]. This | defined in [RFC5005], and MUST be formatted in Atom [RFC4287]. This | |||
means it consists of a subscription document that is regularly | means it consists of a subscription document that is regularly | |||
skipping to change at page 31, line 14 | skipping to change at page 33, line 17 | |||
The server-side implementation of the CDNI Logging feed MUST produce | The server-side implementation of the CDNI Logging feed MUST produce | |||
an Atom feed [RFC4287]. This feed is used to advertise log files | an Atom feed [RFC4287]. This feed is used to advertise log files | |||
that are available for the client-side to retrieve using the CDNI | that are available for the client-side to retrieve using the CDNI | |||
Logging pull mechanism. | Logging pull mechanism. | |||
4.1.1. Atom Formatting | 4.1.1. Atom Formatting | |||
A CDNI Logging feed MUST be structured as an Archived feed, as | A CDNI Logging feed MUST be structured as an Archived feed, as | |||
defined in [RFC5005], and MUST be formatted in Atom [RFC4287]. This | defined in [RFC5005], and MUST be formatted in Atom [RFC4287]. This | |||
means it consists of a subscription document that is regularly | means it consists of a subscription document that is regularly | |||
updated as new CDNI logging files become available, and information | updated as new CDNI Logging Files become available, and information | |||
about older CDNI Logging files is moved into archive documents. Once | about older CDNI Logging files is moved into archive documents. Once | |||
created, archive documents are never modified. | created, archive documents are never modified. | |||
Each CDNI Logging file listed in an Atom feed MUST be described in an | Each CDNI Logging File listed in an Atom feed MUST be described in an | |||
atom:entry container element. | atom:entry container element. | |||
The atom:entry MUST contain an atom:content element whose "src" | The atom:entry MUST contain an atom:content element whose "src" | |||
attribute is a link to the CDNI Logging file and whose "type" | attribute is a link to the CDNI Logging File and whose "type" | |||
attribute is the MIME Media Type indicating that the entry is a CDNI | attribute is the MIME Media Type indicating that the entry is a CDNI | |||
Logging File. We define this MIME Media Type as "application/ | Logging File. We define this MIME Media Type as "application/ | |||
cdni.LoggingFile" (See Section 5.4). | cdni.LoggingFile" (See Section 5.4). | |||
For compatibility with some Atom feed readers the atom:entry MAY also | For compatibility with some Atom feed readers the atom:entry MAY also | |||
contain an atom:link entry whose "href" attribute is a link to the | contain an atom:link entry whose "href" attribute is a link to the | |||
CDNI Logging file and whose "type" attribute is the MIME Media Type | CDNI Logging File and whose "type" attribute is the MIME Media Type | |||
indicating that the entry is a CDNI Logging File using the | indicating that the entry is a CDNI Logging File using the | |||
"application/cdni.LoggingFile" MIME Media Type (See Section 5.4). | "application/cdni.LoggingFile" MIME Media Type (See Section 5.4). | |||
The IRI used in the atom:id of the atom:entry MUST contain the UUID | The URI used in the atom:id of the atom:entry MUST contain the UUID | |||
of the CDNI Logging file. | of the CDNI Logging File. | |||
The atom:updated in the atom:entry MUST indicate the time at which | The atom:updated in the atom:entry MUST indicate the time at which | |||
the CDNI Logging file was last updated. | the CDNI Logging File was last updated. | |||
4.1.2. Updates to Log Files and the Feed | 4.1.2. Updates to Log Files and the Feed | |||
CDNI Logging files MUST NOT be modified by the dCDN once published in | CDNI Logging Files MUST NOT be modified by the dCDN once published in | |||
the CDNI Logging feed. | the CDNI Logging feed. | |||
The frequency with which the subscription feed is updated, the period | The frequency with which the subscription feed is updated, the period | |||
of time covered by each CDNI Logging file or each archive document, | of time covered by each CDNI Logging File or each archive document, | |||
and timeliness of publishing of CDNI Logging files are outside the | and timeliness of publishing of CDNI Logging Files are outside the | |||
scope of the present document and are expected to be agreed upon by | scope of the present document and are expected to be agreed upon by | |||
uCDN and dCDN via other means (e.g. human agreement). | uCDN and dCDN via other means (e.g., human agreement). | |||
The server-side implementation SHOULD use HTTP cache control headers | The server-side implementation SHOULD use HTTP cache control headers | |||
on the subscription feed to indicate the frequency at which the | on the subscription feed to indicate the frequency at which the | |||
client-side is to poll for updates. | client-side is to poll for updates. | |||
The potential retention limits (e.g. sliding time window) within | The potential retention limits (e.g., sliding time window) within | |||
which the dCDN is to retain and be ready to serve an archive document | which the dCDN is to retain and be ready to serve an archive document | |||
is outside the scope of the present document and is expected to be | is outside the scope of the present document and is expected to be | |||
agreed upon by uCDN and dCDN via other means (e.g. human agreement). | agreed upon by uCDN and dCDN via other means (e.g., human agreement). | |||
The server-side implementation MUST retain, and be ready to serve, | The server-side implementation MUST retain, and be ready to serve, | |||
any archive document within the agreed retention limits. Outside | any archive document within the agreed retention limits. Outside | |||
these agreed limits, the server-side implementation MAY be unable to | these agreed limits, the server-side implementation MAY indicate its | |||
serve (e.g., with HTTP status code 404) an archive document or MAY | inability to serve (e.g., with HTTP status code 404) an archive | |||
refuse to serve it (e.g., with HTTP status code 403 or 410). | document or MAY refuse to serve it (e.g., with HTTP status code 403 | |||
or 410). | ||||
4.1.3. Redundant Feeds | 4.1.3. Redundant Feeds | |||
The server-side implementation MAY present more than one CDNI Logging | The server-side implementation MAY present more than one CDNI Logging | |||
feed and for redundancy, CDNI Logging files MAY be published in more | feed and for redundancy. CDNI Logging Files MAY be published in more | |||
than one feed. | than one feed. | |||
A client-side implementation MAY support such redundant CDNI Logging | A client-side implementation MAY support such redundant CDNI Logging | |||
feeds. If it supports redundant CDNI Logging feed, the client-side | feeds. If it supports redundant CDNI Logging feed, the client-side | |||
SHOULD use the UUID of the CDNI Logging file, presented in the | SHOULD use the UUID of the CDNI Logging File, presented in the | |||
atom:id element of the Atom feed, to avoid unnecessarily pulling and | atom:id element of the Atom feed, to avoid unnecessarily pulling and | |||
storing each CDNI Logging file more than once. | storing each CDNI Logging File more than once. | |||
4.1.4. Example CDNI Logging Feed | 4.1.4. Example CDNI Logging Feed | |||
Figure 4 illustrates an example of the subscription document of a | Figure 4 illustrates an example of the subscription document of a | |||
CDNI Logging feed. | CDNI Logging feed. | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<feed xmlns="http://www.w3.org/2005/Atom" | <feed xmlns="http://www.w3.org/2005/Atom" | |||
<http://www.w3.org/2005/Atom%22>> | <http://www.w3.org/2005/Atom%22>> | |||
<title type="text">CDNI Logging Feed</title> | <title type="text">CDNI Logging Feed</title> | |||
skipping to change at page 33, line 22 | skipping to change at page 35, line 40 | |||
</entry> | </entry> | |||
<entry> | <entry> | |||
<title type="text">CDNI Logging File for uCDN at | <title type="text">CDNI Logging File for uCDN at | |||
2013-03-23 14:30:00</title> | 2013-03-23 14:30:00</title> | |||
<id>urn:uuid:87654321-4321-dcba-aa00-dcba7654321</id> | <id>urn:uuid:87654321-4321-dcba-aa00-dcba7654321</id> | |||
<updated>2013-03-23T14:30:00Z</updated> | <updated>2013-03-23T14:30:00Z</updated> | |||
<content src="https://dcdn.example/logs/ucdn/ | <content src="https://dcdn.example/logs/ucdn/ | |||
http-requests-20130323143000000000" | http-requests-20130323143000000000" | |||
type="application/cdni.LoggingFile" /> | type="application/cdni.LoggingFile" /> | |||
<summary>CDNI Logging File for uCDN at | <summary>CDNI Logging File for uCDN at | |||
2013-03-23 15:30:00</summary> | 2013-03-23 14:30:00</summary> | |||
</entry> | </entry> | |||
... | ... | |||
<entry> | <entry> | |||
... | ... | |||
</entry> | </entry> | |||
</feed> | </feed> | |||
Figure 4: Example subscription document of a CDNI Logging Feed | Figure 4: Example subscription document of a CDNI Logging Feed | |||
4.2. CDNI Logging File Pull | 4.2. CDNI Logging File Pull | |||
A client-side implementation of the CDNI Logging interface MAY pull, | A client-side implementation of the CDNI Logging interface MAY pull, | |||
at its convenience, a CDNI Logging File that is published by the | at its convenience, a CDNI Logging File that is published by the | |||
server-side in the CDNI Logging Feed (in the subscription document or | server-side in the CDNI Logging Feed (in the subscription document or | |||
an archive document). To do so, the client-side: | an archive document). To do so, the client-side: | |||
o MUST use HTTP v1.1 ( [RFC2616]); | o MUST use HTTP v1.1 [RFC2616]; | |||
o SHOULD use TLS (i.e. use what is loosely referred to as "HTTPS") | o SHOULD use TLS (i.e., use what is loosely referred to as "HTTPS") | |||
as per [RFC2818] whenever protection of the CDNI Logging | as per [RFC2818] whenever protection of the CDNI Logging | |||
information is required (see Section 6.1); | information is required (see Section 6.1); | |||
o MUST use the URI that was associated to the CDNI Logging File | o MUST use the URI that was associated to the CDNI Logging File | |||
(within the "src" attribute of the corresponding atom:content | (within the "src" attribute of the corresponding atom:content | |||
element) in the CDNI Logging Feed | element) in the CDNI Logging Feed | |||
o MUST support exchange of CDNI Logging Files with no content | o MUST support exchange of CDNI Logging Files with no content | |||
encoding applied to the representation; | encoding applied to the representation; | |||
skipping to change at page 34, line 27 | skipping to change at page 36, line 47 | |||
o MUST include the CDNI Logging File identified by the request URI | o MUST include the CDNI Logging File identified by the request URI | |||
inside the body of the HTTP response; | inside the body of the HTTP response; | |||
o MUST support exchange of CDNI Logging Files with no content | o MUST support exchange of CDNI Logging Files with no content | |||
encoding applied to the representation; | encoding applied to the representation; | |||
o SHOULD support exchange of CDNI Logging Files with "gzip" content | o SHOULD support exchange of CDNI Logging Files with "gzip" content | |||
encoding (as defined in [RFC2616]) applied to the representation. | encoding (as defined in [RFC2616]) applied to the representation. | |||
Content negotiation approaches defined in [RFC2616] (e.g. using | Content negotiation approaches defined in [RFC2616] (e.g., using | |||
Accept-Encoding request-header field or Content-Encoding entity- | Accept-Encoding request-header field or Content-Encoding entity- | |||
header field) MAY be used by the client-side and server-side | header field) MAY be used by the client-side and server-side | |||
implementations to establish the content-coding to be used for a | implementations to establish the content-coding to be used for a | |||
particular exchange of a CDNI Logging File. | particular exchange of a CDNI Logging File. | |||
Applying compression content encoding (such as "gzip") is expected to | Applying compression content encoding (such as "gzip") is expected to | |||
mitigate the impact of exchanging the large volumes of logging | mitigate the impact of exchanging the large volumes of logging | |||
information expected across CDNs. This is expected to be | information expected across CDNs. This is expected to be | |||
particularly useful in the presence of HTTP Adaptive Streaming (HAS) | particularly useful in the presence of HTTP Adaptive Streaming (HAS) | |||
which, as per the present version of the document, will result in a | which, as per the present version of the document, will result in a | |||
separate CDNI Log Record for each HAS segment delivery in the CDNI | separate CDNI Log Record for each HAS segment delivery in the CDNI | |||
Logging File. | Logging File. | |||
The potential retention limits (e.g. sliding time window, maximum | The potential retention limits (e.g., sliding time window, maximum | |||
aggregate file storage quotas) within which the dCDN is to retain and | aggregate file storage quotas) within which the dCDN is to retain and | |||
be ready to serve a CDNI Logging File previously advertised in the | be ready to serve a CDNI Logging File previously advertised in the | |||
CDNI Logging Feed is outside the scope of the present document and is | CDNI Logging Feed is outside the scope of the present document and is | |||
expected to be agreed upon by uCDN and dCDN via other means (e.g. | expected to be agreed upon by uCDN and dCDN via other means (e.g., | |||
human agreement). The server-side implementation MUST retain, and be | human agreement). The server-side implementation MUST retain, and be | |||
ready to serve, any CDNI Logging File within the agreed retention | ready to serve, any CDNI Logging File within the agreed retention | |||
limits. Outside these agreed limits, the server-side implementation | limits. Outside these agreed limits, the server-side implementation | |||
MAY be unable to serve (e.g., with HTTP status code 404) a CDNI | MAY indicate its unability to serve (e.g., with HTTP status code 404) | |||
Logging File or MAY refuse to serve it (e.g., with HTTP status code | a CDNI Logging File or MAY refuse to serve it (e.g., with HTTP status | |||
403 or 410). | code 403 or 410). | |||
5. IANA Considerations | 5. IANA Considerations | |||
5.1. CDNI Logging Directive Names Registry | 5.1. CDNI Logging Directive Names Registry | |||
The IANA is requested to create a new registry, CDNI Logging | The IANA is requested to create a new registry, CDNI Logging | |||
Directive Names. | Directive Names. | |||
The initial contents of the CDNI Logging File Directives registry | The initial contents of the CDNI Logging File Directives registry | |||
comprise the names of the directives specified in Section 3.3 of the | comprise the names of the directives specified in Section 3.3 of the | |||
present document, and are as follows: | present document, and are as follows: | |||
+------------------------------+-----------+ | +------------------------------+-----------+ | |||
| Directive Name + Reference | | | Directive Name + Reference | | |||
+------------------------------+-----------+ | +------------------------------+-----------+ | |||
| Version + RFC xxxx | | | Version + RFC xxxx | | |||
| UUID + RFC xxxx | | | UUID + RFC xxxx | | |||
| Claimed-Origin + RFC xxxx | | | Claimed-Origin + RFC xxxx | | |||
| Verified-Origin + RFC xxxx | | | Verified-Origin + RFC xxxx | | |||
| Record-Type + RFC xxxx | | | Record-Type + RFC xxxx | | |||
| Fields + RFC xxxx | | | Fields + RFC xxxx | | |||
| Integrity-Hash + RFC xxxx | | | Integrity-Hash + RFC xxxx | | |||
+------------------------------+-----------+ | +------------------------------+-----------+ | |||
Figure 5 | Figure 5 | |||
[Instructions to IANA: Replace "RFC xxxx" above by the RFC number of | [Instructions to IANA: Replace "RFC xxxx" above by the RFC number of | |||
the present document] | the present document] | |||
Within the registry, names are to be allocated by IANA according to | Within the registry, names are to be allocated by IANA according to | |||
the "Specification Required" policy specified in [RFC5226]. | the "Specification Required" policy specified in [RFC5226]. | |||
Directive names MUST be allocated by IANA with a format of NAMEFORMAT | ||||
(see Section 3.1). | ||||
Each specification that defines a new CDNI Logging directive MUST | ||||
contain a description for the new directive with the same set of | ||||
information as provided in Section 3.3 (i.e., format, directive value | ||||
and occurrence). | ||||
5.2. CDNI Logging Record-Types Registry | 5.2. CDNI Logging Record-Types Registry | |||
The IANA is requested to create a new registry, CDNI Logging Record- | The IANA is requested to create a new registry, CDNI Logging Record- | |||
Types. | Types. | |||
The initial contents of the CDNI Logging Record-Types registry | The initial contents of the CDNI Logging Record-Types registry | |||
comprise the names of the CDNI Logging Record types specified in | comprise the names of the CDNI Logging Record types specified in | |||
Section 3.4 of the present document, and are as follows: | Section 3.4 of the present document, and are as follows: | |||
+------------------------------+-----------+ | +------------------------------+-----------+ | |||
| Record-Types + Reference | | | Record-Types + Reference | | |||
+------------------------------+-----------+ | +------------------------------+-----------+ | |||
| cdni_http_request_v1 + RFC xxxx | | | cdni_http_request_v1 + RFC xxxx | | |||
+------------------------------+-----------+ | +------------------------------+-----------+ | |||
Figure 6 | Figure 6 | |||
[Instructions to IANA: Replace "RFC xxxx" above by the RFC number of | [Instructions to IANA: Replace "RFC xxxx" above by the RFC number of | |||
the present document] | the present document] | |||
Within the registry, Record-Types are to be allocated by IANA | Within the registry, Record-Types are to be allocated by IANA | |||
according to the "Specification Required" policy specified in | according to the "Specification Required" policy specified in | |||
[RFC5226]. | [RFC5226]. Record-Types MUST be allocated by IANA with a format of | |||
NAMEFORMAT (see Section 3.1). | ||||
Each specification that defines a new Record-Type MUST contain a | ||||
description for the new Record-Type with the same set of information | ||||
as provided in Section 3.4.1. This includes: | ||||
o a list of all the CDNI Logging Fields that can appear in a CDNI | ||||
Logging Record of the new Record-Type | ||||
o for all these Fields: a specification of the occurrence for each | ||||
Field in the new Record-Type | ||||
o for every newly defined Field i.e., for every Field that results | ||||
in a registration in the CDNI Logging Field Names Registry | ||||
(Section 5.3): a specification of the field name, format and field | ||||
value. | ||||
5.3. CDNI Logging Field Names Registry | 5.3. CDNI Logging Field Names Registry | |||
The IANA is requested to create a new registry, CDNI Logging Field | The IANA is requested to create a new registry, CDNI Logging Field | |||
Names. | Names. | |||
The initial contents of the CDNI Logging Fields Names registry | The initial contents of the CDNI Logging Fields Names registry | |||
comprise the names of the CDNI Logging fields specified in | comprise the names of the CDNI Logging fields specified in | |||
Section 3.4 of the present document, and are as follows: | Section 3.4 of the present document, and are as follows: | |||
+---------------------------------------------+-----------+ | +---------------------------------------------+-----------+ | |||
| Field Name + Reference | | | Field Name + Reference | | |||
+---------------------------------------------+-----------+ | +---------------------------------------------+-----------+ | |||
| date + RFC xxxx | | | date + RFC xxxx | | |||
| time + RFC xxxx | | | time + RFC xxxx | | |||
| time-taken + RFC xxxx | | | time-taken + RFC xxxx | | |||
| c-ip + RFC xxxx | | | c-ip + RFC xxxx | | |||
| c-ip-anonimizing + RFC xxxx | | | c-ip-anonymizing + RFC xxxx | | |||
| c-port + RFC xxxx | | | c-port + RFC xxxx | | |||
| s-ip + RFC xxxx | | | s-ip + RFC xxxx | | |||
| s-hostname + RFC xxxx | | | s-hostname + RFC xxxx | | |||
| s-port + RFC xxxx | | | s-port + RFC xxxx | | |||
| cs- method + RFC xxxx | | | cs-method + RFC xxxx | | |||
| cs-uri + RFC xxxx | | | cs-uri + RFC xxxx | | |||
| u-uri + RFC xxxx | | | u-uri + RFC xxxx | | |||
| protocol + RFC xxxx | | | protocol + RFC xxxx | | |||
| sc-status + RFC xxxx | | | sc-status + RFC xxxx | | |||
| sc- total-bytes + RFC xxxx | | | sc-total-bytes + RFC xxxx | | |||
| sc-entity-bytes + RFC xxxx | | | sc-entity-bytes + RFC xxxx | | |||
| cs(<HTTP-header>) + RFC xxxx | | | cs(<HTTP-header>) + RFC xxxx | | |||
| sc(<HTTP-header>) + RFC xxxx | | | sc(<HTTP-header>) + RFC xxxx | | |||
| s-ccid + RFC xxxx | | | s-ccid + RFC xxxx | | |||
| s-sid + RFC xxxx | | | s-sid + RFC xxxx | | |||
| s-cached + RFC xxxx | | | s-cached + RFC xxxx | | |||
+---------------------------------------------+-----------+ | +---------------------------------------------+-----------+ | |||
Figure 7 | Figure 7 | |||
[Instructions to IANA: Replace "RFC xxxx" above by the RFC number of | [Instructions to IANA: Replace "RFC xxxx" above by the RFC number of | |||
the present document] | the present document] | |||
Within the registry, names are to be allocated by IANA according to | Within the registry, names are to be allocated by IANA according to | |||
the "Specification Required" policy specified in [RFC5226]. | the "Specification Required" policy specified in [RFC5226]. Field | |||
names MUST be allocated by IANA with a format of NHTABSTRING (see | ||||
Section 3.1). | ||||
The above registry is intended to be shared across the currently | ||||
defined Record-Type (i.e., cdni_http_request_v1) as well as potential | ||||
other CDNI Logging Record-Types that may be defined in separate | ||||
specifications. When a Field from this registry is used by another | ||||
CDNI Logging Record-Type, it MUST be used with the exact semantics | ||||
and format specified in the document that registered this field and | ||||
that is identified in the Reference column of the registry. If | ||||
another CDNI Logging Record-Type requires a Field with a semantics | ||||
that is not strictly identical, or a format that is not strictly | ||||
identical then this new Field MUST be registered in the registry with | ||||
a different Field name. When a Field from this registry is used by | ||||
another CDNI Logging Record-Type, it MAY be used with different | ||||
occurence rules. | ||||
5.4. CDNI Logging MIME Media Type | 5.4. CDNI Logging MIME Media Type | |||
The IANA is requested to allocate the "application/cdni.LoggingFile" | The IANA is requested to allocate the "application/cdni.LoggingFile" | |||
MIME Media Type (whose use is specified in Section 4.1.1 of the | MIME Media Type (whose use is specified in Section 4.1.1 of the | |||
present document) in the MIME Media Types registry. | present document) in the MIME Media Types registry. | |||
6. Security Considerations | 6. Security Considerations | |||
6.1. Authentication, Confidentiality, Integrity Protection | 6.1. Authentication, Confidentiality, Integrity Protection | |||
skipping to change at page 37, line 33 | skipping to change at page 40, line 45 | |||
CDN) | CDN) | |||
o the CDNI Logging information to be transmitted with | o the CDNI Logging information to be transmitted with | |||
confidentiality | confidentiality | |||
o the integrity of the CDNI Logging information to be protected | o the integrity of the CDNI Logging information to be protected | |||
during the exchange | during the exchange | |||
In an environment where any such protection is required, TLS SHOULD | In an environment where any such protection is required, TLS SHOULD | |||
be used for transport of the CDNI Logging feed and the CDNI Logging | be used for transport of the CDNI Logging feed and the CDNI Logging | |||
File pull. | File pull. Both parties of the transaction (uCDN and dCDN) SHOULD | |||
use mutual authentication. | ||||
A CDNI Logging implementation MUST support TLS transport of the CDNI | A CDNI Logging implementation MUST support TLS transport of the CDNI | |||
Logging feed and the CDNI Logging File pull. | Logging feed and the CDNI Logging File pull. | |||
Alternate methods MAY be used for ensuring the confidentiality of the | ||||
information in the logging files such as setting up an IPsec tunnel | ||||
between the two CDNs or using a physically secured internal network | ||||
between two CDNs that are owned by the same corporate entity. | ||||
The Integrity-Hash directive inside the CDNI Logging File provides | The Integrity-Hash directive inside the CDNI Logging File provides | |||
additional integrity protection, this time targeting potential | additional integrity protection, this time targeting potential | |||
corruption of the CDNI logging information during the CDNI Logging | corruption of the CDNI logging information during the CDNI Logging | |||
File generation. This mechanism does not allow restoration of the | File generation. This mechanism does not allow restoration of the | |||
corrupted CDNI Logging information, but it allows detection of such | corrupted CDNI Logging information, but it allows detection of such | |||
corruption and therefore triggering of appropraite correcting actions | corruption and therefore triggering of appropraite correcting actions | |||
(e.g. discard of corrupted information, attempt to re-obtain the CDNI | (e.g., discard of corrupted information, attempt to re-obtain the | |||
Logging information). | CDNI Logging information). | |||
6.2. Denial of Service | 6.2. Denial of Service | |||
This document does not define specific mechanism to protect against | This document does not define specific mechanism to protect against | |||
Denial of Service (DoS) attacks on the Logging Interface. However, | Denial of Service (DoS) attacks on the Logging Interface. However, | |||
the CDNI Logging feed and CDNI Logging pull endpoints can be | the CDNI Logging feed and CDNI Logging pull endpoints can be | |||
protected against DoS attacks through the use of TLS transport and/or | protected against DoS attacks through the use of TLS transport and/or | |||
via mechanisms outside the scope of the CDNI Logging interface such | via mechanisms outside the scope of the CDNI Logging interface such | |||
as firewalling or use of Virtual Private Networks (VPNs). | as firewalling or use of Virtual Private Networks (VPNs). | |||
Protection of dCDN Surrogates against spoofed delivery requests is | Protection of dCDN Surrogates against spoofed delivery requests is | |||
outside the scope of the CDNI Logging interface. | outside the scope of the CDNI Logging interface. | |||
6.3. Privacy | 6.3. Privacy | |||
CDNs have the opportunity to collect detailed information about the | CDNs have the opportunity to collect detailed information about the | |||
downloads performed by End-Users. The provision of this information | downloads performed by End Users. The provision of this information | |||
to another CDN introduces potential End-Users privacy protection | to another CDN introduces potential End Users privacy protection | |||
concerns. We observe that when CDNI interconnection is realised as | concerns. We observe that when CDNI interconnection is realised as | |||
per [I-D.ietf-cdni-framework], the uCDN handles the initial End-User | per [I-D.ietf-cdni-framework], the uCDN handles the initial End User | |||
requests (before it is redirected to the dCDN) so, regardless of | requests (before it is redirected to the dCDN) so, regardless of | |||
which information is, or is not, communicated to the uCDN through the | which information is, or is not, communicated to the uCDN through the | |||
CDNI Logging interface, the uCDN has visibility on significant | CDNI Logging interface, the uCDN has visibility on significant | |||
information such as the IP address of the End-User request and the | information such as the IP address of the End User request and the | |||
URL of the request. Nonetheless, if the dCDN and uCDN agree that | URL of the request. | |||
anonymization is required to avoid making some detailed information | ||||
available to the uCDN (such as how much bytes of the content has been | Nonetheless, if the dCDN and uCDN agree that anonymization is | |||
watched by an enduser and/or at what time) or is required to meet | required to avoid making some detailed information available to the | |||
some legal obligations, then the uCDN and dCDN can agree to exchange | uCDN (such as how many bytes of the content have been watched by an | |||
anonymized End-User IP addresses in CDNI Logging files and the c-ip- | End User and/or at what time) or is required to meet some legal | |||
anonymization field can be used to convey the number of bits that | obligations, then the uCDN and dCDN can agree to exchange anonymized | |||
have been anonymized so that the meaningful information can still be | End Users IP address in CDNI Logging Files and the c-ip-anonymization | |||
easily extracted from the anonymized addressses (e.g. for geolocation | field can be used to convey the number of bits that have been | |||
aware analytics). | anonymized so that the meaningful information can still be easily | |||
extracted from the anonymized addressses (e.g., for geolocation aware | ||||
analytics). | ||||
We note that anonymization of End Users IP address does not fully | ||||
protect against deriving potentially sensitive information about | ||||
traffic patterns; in general, increasing the number of bits that are | ||||
anonymized can mitigate the risks of deriving such sensitive traffic | ||||
pattern information. | ||||
We also note that independently of IP addresses, the query string | ||||
portion of the URL that may be conveyed inside the cs-uri and u-uri | ||||
fields of CDNI Logging Files, or the HTTP cookies( [RFC6265]) that | ||||
may be conveyed inside the cs(<HTTP-header-name>) field of CDNI | ||||
Logging Fields, may contain personnal information or information that | ||||
can be exploited to derive personal information. Where this is a | ||||
concern, the CDNI Logging interface specification allows the dCDN to | ||||
not include the cs-uri and to include a u-uri that removes (or hides) | ||||
the sensitive part of the query string and allows the dCDN to not | ||||
include the cs(<HTTP-header-name>) fields corresponding to HTTP | ||||
headers associated with cookies. | ||||
7. Acknowledgments | 7. Acknowledgments | |||
This document borrows from the W3C Extended Log Format [ELF]. | This document borrows from the W3C Extended Log Format [ELF]. | |||
Rob Murray significantly contributed into the text of Section 4.1 . | Rob Murray significantly contributed into the text of Section 4.1. | |||
The authors thank Ben Niven-Jenkins, Kevin Ma, David Mandelberg and | The authors thank Ben Niven-Jenkins, Kevin Ma, David Mandelberg and | |||
Ray van Brandenburg for their ongoing input. | Ray van Brandenburg for their ongoing input. | |||
Finally, we also thank Sebastien Cubaud, Pawel Grochocki, Christian | Finally, we also thank Sebastien Cubaud, Pawel Grochocki, Christian | |||
Jacquenet, Yannick Le Louedec, Anne Marrec , Emile Stephan, Fabio | Jacquenet, Yannick Le Louedec, Anne Marrec , Emile Stephan, Fabio | |||
Costa, Sara Oueslati, Yvan Massot, Renaud Edel, Joel Favier and the | Costa, Sara Oueslati, Yvan Massot, Renaud Edel, Joel Favier and the | |||
contributors of the EU FP7 OCEAN project for their input in the early | contributors of the EU FP7 OCEAN project for their input in the early | |||
versions of this document. | versions of this document. | |||
skipping to change at page 39, line 40 | skipping to change at page 43, line 25 | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
May 2008. | May 2008. | |||
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF", STD 68, RFC 5234, January 2008. | Specifications: ABNF", STD 68, RFC 5234, January 2008. | |||
8.2. Informative References | 8.2. Informative References | |||
[CHAR_SET] | [CHAR_SET] | |||
, "IANA Character Sets registry", , <http://www.iana.org/ | "IANA Character Sets registry", <http://www.iana.org/ | |||
assignments/character-sets/character-sets.xml>. | assignments/character-sets/character-sets.xml>. | |||
[ELF] Phillip M. Hallam-Baker, . and . Brian Behlendorf, | [ELF] Phillip M. Hallam-Baker, and Brian Behlendorf, "Extended | |||
"Extended Log File Format, W3C (work in progress), WD- | Log File Format, W3C (work in progress), WD- | |||
logfile-960323", , <http://www.w3.org/TR/WD-logfile.html>. | logfile-960323", <http://www.w3.org/TR/WD-logfile.html>. | |||
[I-D.ietf-cdni-framework] | [I-D.ietf-cdni-framework] | |||
Peterson, L. and B. Davie, "Framework for CDN | Peterson, L., Davie, B., and R. Brandenburg, "Framework | |||
Interconnection", draft-ietf-cdni-framework-05 (work in | for CDN Interconnection", draft-ietf-cdni-framework-09 | |||
progress), September 2013. | (work in progress), January 2014. | |||
[I-D.ietf-cdni-metadata] | [I-D.ietf-cdni-metadata] | |||
Niven-Jenkins, B., Murray, R., Watson, G., Caulfield, M., | Niven-Jenkins, B., Murray, R., Watson, G., Caulfield, M., | |||
Leung, K., and K. Ma, "CDN Interconnect Metadata", draft- | Leung, K., and K. Ma, "CDN Interconnect Metadata", draft- | |||
ietf-cdni-metadata-02 (work in progress), July 2013. | ietf-cdni-metadata-04 (work in progress), December 2013. | |||
[I-D.ietf-cdni-requirements] | [I-D.ietf-cdni-requirements] | |||
Leung, K. and Y. Lee, "Content Distribution Network | Leung, K. and Y. Lee, "Content Distribution Network | |||
Interconnection (CDNI) Requirements", draft-ietf-cdni- | Interconnection (CDNI) Requirements", draft-ietf-cdni- | |||
requirements-10 (work in progress), September 2013. | requirements-17 (work in progress), January 2014. | |||
[I-D.snell-atompub-link-extensions] | [I-D.snell-atompub-link-extensions] | |||
Snell, J., "Atom Link Extensions", draft-snell-atompub- | Snell, J., "Atom Link Extensions", draft-snell-atompub- | |||
link-extensions-09 (work in progress), June 2012. | link-extensions-09 (work in progress), June 2012. | |||
[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | |||
April 1992. | April 1992. | |||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
[RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | ||||
April 2011. | ||||
[RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content | [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content | |||
Distribution Network Interconnection (CDNI) Problem | Distribution Network Interconnection (CDNI) Problem | |||
Statement", RFC 6707, September 2012. | Statement", RFC 6707, September 2012. | |||
[RFC6770] Bertrand, G., Stephan, E., Burbridge, T., Eardley, P., Ma, | [RFC6770] Bertrand, G., Stephan, E., Burbridge, T., Eardley, P., Ma, | |||
K., and G. Watson, "Use Cases for Content Delivery Network | K., and G. Watson, "Use Cases for Content Delivery Network | |||
Interconnection", RFC 6770, November 2012. | Interconnection", RFC 6770, November 2012. | |||
[RFC6983] van Brandenburg, R., van Deventer, O., Le Faucheur, F., | [RFC6983] van Brandenburg, R., van Deventer, O., Le Faucheur, F., | |||
and K. Leung, "Models for HTTP-Adaptive-Streaming-Aware | and K. Leung, "Models for HTTP-Adaptive-Streaming-Aware | |||
Content Distribution Network Interconnection (CDNI)", RFC | Content Distribution Network Interconnection (CDNI)", RFC | |||
6983, July 2013. | 6983, July 2013. | |||
Appendix A. Compliance with CDNI Requirements | ||||
[Editor's Note: This appendix is intended to help the WG understand | ||||
compliance of the CDNI Logging interface against the requirements | ||||
defined in the CDNI requirements document, in oder to establish | ||||
readiness for of the document publication. This appendix is expected | ||||
to be removed for bepublication]. | ||||
[Editor's Note: this appendix may need a small update if ietf-cdni- | ||||
requirements introduces an additional requirement for Privacy/ | ||||
Anonimization as recently discussed on the list, and if LI14 & LI-15 | ||||
are modified] | ||||
The three tables below review compliance against, respectively, the | ||||
Generic CDNI requirements, the CDNI Logging interface requirements | ||||
and the CDNI security requirements of [I-D.ietf-cdni-requirements]. | ||||
The first two columns of the tables indicate the requirement number, | ||||
and the requirement priority as defined in | ||||
[I-D.ietf-cdni-requirements]. The third column of the table | ||||
indicates the level of compliance of the CDNI Logging interface | ||||
specified in the present document against the given requirement, and | ||||
the fourth column provides additional comment and explanation on how | ||||
or why the compliance is achieved or not achieved. | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| Re- | Prior-| Compli- | Comment | | ||||
| quire-| ity | ance | | | ||||
| ment | | | | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-1 | MED | Full | Leverages existing protocols incl | | ||||
| | | | including HTTP, TLS and ATOM | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-2 | HIGH | Full | Does not require any change or upgrade| | ||||
| | | | to the user agent | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-3 | HIGH | Full | Does not require any change or upgrade| | ||||
| | | | to the Content Service Provider | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-4 | HIGH | Full | Does not depend on intra-CDN info | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-5 | HIGH | Full | Supports logging of HTTP delivery | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-6 | HIGH | N/A | | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-7 | LOW | Not | Only supports logging for HTTP | | ||||
| | | Compliant | delivery, but easily extensible to | | ||||
| | | | add support for other delivery protos | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-8 | LOW | N/A | | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-9 | MED | Full | Supports logging across cascaded CDNs | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-10| MED | Full | Supports any toplogy of interconnected| | ||||
| | | | CDNs | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-11| HIGH | Partial | No explicit mechanism for loop | | ||||
| | | | avoidance is defined; the exchange of | | ||||
| | | | logs is usually done in a point to | | ||||
| | | | point manner between two well identi- | | ||||
| | | | fied entities situated in the uCDN and| | ||||
| | | | dCDN. Loop avoidance is expected to be| | ||||
| | | | handled by implementations based on | | ||||
| | | | inferring the CDN path from the URI | | ||||
| | | | structure in the HTTP redirection case| | ||||
| | | | and/or administrative information | | ||||
| | | | (topology restrictions in case of DNS | | ||||
| | | | redirection method also handled admi- | | ||||
| | | | nistratively) | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-12| HIGH | N/A | | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| GEN-13| HIGH | Full | Supports Logging for HTTP Adaptive | | ||||
| | | | Streaming (HSAS) content, with one | | ||||
| | | | Logging Record per HAS segment. | | ||||
| | | | Supports a few optional logging fields| | ||||
| | | | specific to HAS. Does not support | | ||||
| | | | summarized Logging Records for HAS, | | ||||
| | | | but extensible to add that. | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
Figure 8: Compliance to Generic CDNI Requirements | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| Re- | Prior-| Compli- | Comment | | ||||
| quire-| ity | ance | | | ||||
| ment | | | | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-1 | HIGH | Full | Reliable transfer is achieved by the | | ||||
| | | | transport protocol: the logging data | | ||||
| | | | is transmitted over HTTP over TCP. | | ||||
| | | | Also, supports optional redundancy of | | ||||
| | | | the Logging feed. | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-2 | HIGH | Full | Supports | | ||||
| | | | logs for all content deliveries both | | ||||
| | | | complete and incomplete performed by | | ||||
| | | | the dCDN on behalf of the uCDN | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-3 | MED | Full | The CDNI Logging Interface does not | | ||||
| | | | impose any restrictions related to the| | ||||
| | | | transmission of logs generated by | | ||||
| | | | intermediary CDNs; the dCDN formats | | ||||
| | | | internally all the final logging files| | ||||
| | | | including those received from interme-| | ||||
| | | | diary CDNs and the locally generated | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-4 | HIGH | Full | The ATOM feed allows the uCDN to trig-| | ||||
| | | | ger the download of logging files | | ||||
| | | | whenever needed | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-5 | MED | Partial | The uCDN can pull logging files from | | ||||
| | | | the dCDN whenever a new file is | | ||||
| | | | available. The timing constraints for | | ||||
| | | | the generation of the logging files | | ||||
| | | | are to be defined offline, and can be | | ||||
| | | | defined to an arbitrary period. This | | ||||
| | | | is expected to be compatible with | | ||||
| | | | applications that have low timing | | ||||
| | | | constraints (e.g. 24 hours) such as | | ||||
| | | | billing. This is expected to be | | ||||
| | | | compatible with applications that | | ||||
| | | | have high timing constraints (e.g. 5 | | ||||
| | | | minutes) such as monitoring or | | ||||
| | | | analytics. This is not expected to be | | ||||
| | | | compatible with applications that have| | ||||
| | | | very high timing constraints (e.g. | | ||||
| | | | a few seconds or below) | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-6 | HIGH | Full | Section 3.4 describes the CDNI Logging| | ||||
| | | | Records and the possible fields that | | ||||
| | | | can be included in a record. | | ||||
| | | | Supports a single type of CDNI event | | ||||
| | | | i.e. HTTP delivery | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-7 | HIGH | Full | Defines an ATOM based feed and HTTP | | ||||
| | | | or HTTPS transport | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-8 | MED | Partial | Allows as uCDN to pull current CDNI | | ||||
| | | | Logging files to access current | | ||||
| | | | Logging records. Does not allow uCDN | | ||||
| | | | to request Log Records before next | | ||||
| | | | Logging file is made available. | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-9 | LOW | Not | The current version of the document | | ||||
| | | Compliant | does not specify any mechanisms for | | ||||
| | | | producing aggregate / summarized logs,| | ||||
| | | | but exchanged logging files provide | | ||||
| | | | all the information that is necessary | | ||||
| | | | to the uCDN in order to produce aggre-| | ||||
| | | | gated logs. Extensible to add such | | ||||
| | | | mechanisms in the future | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-10 | LOW | Not | Future versions might define such a | | ||||
| | | compliant | mechanism for logging performance | | ||||
| | | | data. Allows uCDN to derive some perf | | ||||
| | | | indicators from delivery Records | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-11 | MED | Not | Future versions might define such a | | ||||
| | | compliant | mechanism for logging data about | | ||||
| | | | resources consumed by the dCDN | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-12 | MED | Not | Future versions might define such a | | ||||
| | | compliant | mechanism for logging data about | | ||||
| | | | resources consumed by cascaded CDNs | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-13 | HIGH | Not | Not supported by CDNI Logging | | ||||
| | | compliant | interface. However, it is expected | | ||||
| | | | that the CDNI Control interface will | | ||||
| | | | allow tracing of delete request | | ||||
| | | | results (e.g. success, failure). | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-14 | HIGH | Full | Details about extensibility mechanisms| | ||||
| | | | in Section 6. | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-15 | HIGH | Full | Details about proprietary fields in | | ||||
| | | | Section 6. | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-16 | HIGH | Full | The CDNI Logging feed indicates which | | ||||
| | | | Logging file is (or was) available | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| LI-17 | MED | Full | Content Collection ID and Session ID | | ||||
| | | | are supported for logging records re- | | ||||
| | | | lated to HTTP Adaptive Streaming | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
Figure 9: Compliance to CDNI Logging interface Requirements | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| Re- | Prior-| Compli- | Comment | | ||||
| quire-| ity | ance | | | ||||
| ment | | | | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| SEC-1 | HIGH | Full | TLS can be used for transport of any | | ||||
| | | | CDNI logging related information which| | ||||
| | | | provides authentication, confidentia- | | ||||
| | | | lity, integrity protection as well as | | ||||
| | | | protection agasint spoofing and replay| | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| SEC-2 | HIGH | Partial | No specific mechanism against Denial | | ||||
| | | | of Service attacks is defined on the | | ||||
| | | | Logging Interface. Spoofed requests | | ||||
| | | | can be avoided by using TLS. | | ||||
| | | | Protection against spoofed delivery | | ||||
| | | | requests are outside the scope of CDNI| | ||||
| | | | Logging. | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| SEC-3 | MED | N/A | Establishing CDN path with non- | | ||||
| | | | repudiation is outside the scope of | | ||||
| | | | CDNI Logging. Does not prevent use of | | ||||
| | | | such mechanism (e.g. including info | | ||||
| | | | in content URI). | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| SEC-4 | MED | Not | A non-repudiation mechanism for CDNI | | ||||
| | | compliant | logging might be defined in a separate| | ||||
| | | | document | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
| SEC-5 | LOW | N/A | | | ||||
+-------+-------+-----------+---------------------------------------+ | ||||
Figure 10: Compliance to CDNI Security Requirements | ||||
Authors' Addresses | Authors' Addresses | |||
Francois Le Faucheur (editor) | Francois Le Faucheur (editor) | |||
Cisco Systems | Cisco Systems | |||
E.Space Park - Batiment D | E.Space Park - Batiment D | |||
6254 Allee des Ormes - BP 1200 | 6254 Allee des Ormes - BP 1200 | |||
Mougins cedex 06254 | Mougins cedex 06254 | |||
FR | FR | |||
Phone: +33 4 97 23 26 19 | Phone: +33 4 97 23 26 19 | |||
End of changes. 188 change blocks. | ||||
682 lines changed or deleted | 562 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |