| rfc9808.original | rfc9808.txt | |||
|---|---|---|---|---|
| Content Delivery Networks Interconnection A. Ryan | Internet Engineering Task Force (IETF) A. Ryan | |||
| Internet-Draft Disney Streaming | Request for Comments: 9808 Disney Streaming | |||
| Intended status: Standards Track B. Rosenblum | Category: Standards Track B. Rosenblum | |||
| Expires: 15 June 2025 Vecima | ISSN: 2070-1721 Vecima | |||
| N. Sopher | N. Sopher | |||
| Qwilt | Qwilt | |||
| 12 December 2024 | July 2025 | |||
| CDNI Capacity Capability Advertisement Extensions | Content Delivery Network Interconnection (CDNI) Capacity Capability | |||
| draft-ietf-cdni-capacity-insights-extensions-12 | Advertisement Extensions | |||
| Abstract | Abstract | |||
| The Content Delivery Networks Interconnection (CDNI) Capacity | This specification defines a set of additional Capability Objects | |||
| Capability Advertisement Extensions define a set of additional | that provide information about current downstream CDN (dCDN) | |||
| Capability Objects that provide information about current downstream | utilization and specified usage limits to the delegating upstream CDN | |||
| CDN (dCDN) utilization and specified usage limits to the delegating | (uCDN) in order to inform traffic delegation decisions. | |||
| upstream CDN (uCDN) in order to inform traffic delegation decisions. | ||||
| This document supplements the CDNI Capability Objects, defined in RFC | This document supplements the CDNI Capability Objects, defined in RFC | |||
| 8008 as part of the Footprints & Capabilities Advertisement Interface | 8008 as part of the Footprint & Capabilities Advertisement Interface | |||
| (FCI), with two additional Capability Objects: FCI.CapacityLimits and | (FCI), with two additional Capability Objects: FCI.CapacityLimits and | |||
| FCI.Telemetry. | FCI.Telemetry. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 15 June 2025. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9808. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
| 1.2. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.2. Requirements Language | |||
| 1.3. Objectives . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.3. Objectives | |||
| 2. CDNI Additional Capability Objects . . . . . . . . . . . . . 4 | 2. CDNI Additional Capability Objects | |||
| 2.1. Telemetry Capability Object . . . . . . . . . . . . . . . 4 | 2.1. Telemetry Capability Object | |||
| 2.1.1. Telemetry Source Object . . . . . . . . . . . . . . . 5 | 2.1.1. Telemetry Source Object | |||
| 2.1.1.1. Telemetry Source Types . . . . . . . . . . . . . 6 | 2.1.1.1. Telemetry Source Types | |||
| 2.1.1.2. Telemetry Source Metric Object . . . . . . . . . 6 | 2.1.1.2. Telemetry Source Metric Object | |||
| 2.1.2. Telemetry Capability Object Serialization . . . . . . 7 | 2.1.2. Telemetry Capability Object Serialization | |||
| 2.2. CapacityLimits Capability Object . . . . . . . . . . . . 8 | 2.2. CapacityLimits Capability Object | |||
| 2.2.1. CapacityLimit Object . . . . . . . . . . . . . . . . 9 | 2.2.1. CapacityLimit Object | |||
| 2.2.1.1. CapacityLimit Types . . . . . . . . . . . . . . . 10 | 2.2.1.1. CapacityLimit Types | |||
| 2.2.1.2. CapacityLimitTelemetrySource Object . . . . . . . 11 | 2.2.1.2. CapacityLimitTelemetrySource Object | |||
| 2.2.2. CapacityLimit Object Serialization . . . . . . . . . 11 | 2.2.2. CapacityLimit Object Serialization | |||
| 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 3. IANA Considerations | |||
| 3.1. CDNI Payload Types . . . . . . . . . . . . . . . . . . . 12 | 3.1. CDNI Payload Types | |||
| 3.1.1. CDNI FCI Telemetry Payload Type . . . . . . . . . . . 13 | 3.1.1. CDNI FCI.Telemetry Payload Type | |||
| 3.1.2. CDNI FCI Capacity Limits Payload Type . . . . . . . . 13 | 3.1.2. CDNI FCI.CapacityLimits Payload Type | |||
| 3.2. "CDNI Telemetry Source Types" Registry . . . . . . . . . 13 | 3.2. CDNI Telemetry Source Types Registry | |||
| 3.2.1. CDNI Generic Telemetry Source Type . . . . . . . . . 14 | 3.2.1. CDNI Generic Telemetry Source Type | |||
| 3.3. "CDNI Capacity Limit Types" Registry . . . . . . . . . . 14 | 3.3. CDNI Capacity Limit Types Registry | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 4. Security Considerations | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 | 5. References | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 5.1. Normative References | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 15 | 5.2. Informative References | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 16 | Acknowledgements | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| While delegating traffic from an upstream CDN (uCDN) to a downstream | While delegating traffic from an upstream CDN (uCDN) to a downstream | |||
| CDN (dCDN), it is important to ensure that an appropriate amount of | CDN (dCDN), it is important to ensure that an appropriate amount of | |||
| traffic is delegated. To achieve that, this specification defines a | traffic is delegated. To achieve that, this specification defines a | |||
| feedback mechanism to inform the delegator how much traffic may be | feedback mechanism to inform the delegator how much traffic may be | |||
| delegated. The traffic level information provided by that interface | delegated. The traffic level information provided by that interface | |||
| will be consumed by services, such as a request router, to inform | will be consumed by services, such as a request router, to inform | |||
| that service's traffic delegation decisions. The provided | that service's traffic delegation decisions. The provided | |||
| information is advisory and does not represent a guarantee, | information is advisory and does not represent a guarantee, | |||
| commitment, or reservation of capacity. | commitment, or reservation of capacity. | |||
| This document defines and registers CDNI Payload Types (as defined at | This document defines and registers CDNI Payload Types (as defined in | |||
| section 7.1 of [RFC8006]). These Payload types are used for | Section 7.1 of [RFC8006]). These Payload Types are used for | |||
| Capability Objects added to those defined at section 4 of [RFC8008]. | Capability Objects, which are added to those defined in Section 4 of | |||
| [RFC8008]. | ||||
| 1.1. Terminology | 1.1. Terminology | |||
| The following terms are used throughout this document: | The following term is used throughout this document: | |||
| * CDN - Content Delivery Network | CDN: Content Delivery Network | |||
| Additionally, this document reuses the terminology defined in | Additionally, this document reuses the terminology defined in | |||
| [RFC6707]. Specifically, we use the following CDNI acronyms: | [RFC6707]. Specifically, the following CDNI acronyms are used: | |||
| * uCDN, dCDN - Upstream CDN and Downstream CDN, respectively | uCDN: upstream CDN | |||
| dCDN: downstream CDN | ||||
| 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", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 1.3. Objectives | 1.3. Objectives | |||
| To enable information exchange between a uCDN and a dCDN regarding | To enable information exchange between a uCDN and a dCDN regarding | |||
| acceptable levels of traffic delegation, the following process has | acceptable levels of traffic delegation, the following process has | |||
| been defined: | been defined: | |||
| In normal operation a uCDN will communicate with a dCDN, via an | In normal operation, a uCDN will communicate with a dCDN, via an | |||
| interface, to collect and understand any limits that a dCDN has set | interface, to collect and understand any limits that a dCDN has | |||
| forth for traffic delegation from a uCDN. These limits will come in | set forth for traffic delegation from a uCDN. These limits will | |||
| the form of metrics such as bits per second, requests per second, | come in the form of metrics such as bits per second, requests per | |||
| etc. These limits can be thought of as Not to Exceed (NTE) limits. | second, etc. These limits can be thought of as Not to Exceed | |||
| (NTE) limits. | ||||
| The dCDN should provide access to a telemetry source of near real- | The dCDN should provide access to a Telemetry Source of near real- | |||
| time metrics that the uCDN can use to track current usage. The uCDN | time metrics that the uCDN can use to track current usage. The | |||
| should compare its current usage to the limits the dCDN has put forth | uCDN should compare its current usage to the limits the dCDN has | |||
| and adjust traffic delegation decisions accordingly to keep current | put forth and adjust traffic delegation decisions accordingly to | |||
| usage under the specified limits. | keep current usage under the specified limits. | |||
| In summary, the dCDN will inform the uCDN of the amount of traffic | In summary, the dCDN will inform the uCDN of the amount of traffic | |||
| that may be delegated. Additionally, it will provide a telemetry | that may be delegated. Additionally, it will provide a Telemetry | |||
| source aligned with this limit, allowing the uCDN to monitor its | Source aligned with this limit, allowing the uCDN to monitor its | |||
| current usage against the advertised value. Having a limit and a | current usage against the advertised value. Having a limit and a | |||
| corresponding telemetry source creates an unambiguous definition | corresponding Telemetry Source creates an unambiguous definition | |||
| understood by both parties. | understood by both parties. | |||
| Limits that are communicated from the dCDN to the uCDN should be | Limits that are communicated from the dCDN to the uCDN should be | |||
| considered valid based on the TTL (Time To Live) provided by a | considered valid based on the Time to Live (TTL) provided by a | |||
| mechanism of the underlying transport, e.g., an HTTP Cache-Control | mechanism of the underlying transport, e.g., an HTTP Cache-Control | |||
| header. The intention is that the limits would have a long-lived TTL | header. The intention is that the limits would have a long-lived TTL | |||
| and would represent a reasonable peak utilization limit that the uCDN | and would represent a reasonable peak utilization limit that the uCDN | |||
| should target. If the underlying transport does not provide a | should target. If the underlying transport does not provide a | |||
| mechanism for the dCDN to communicate the TTL of the limits, the TTL | mechanism for the dCDN to communicate the TTL of the limits, the TTL | |||
| should be communicated through an out-of-band mechanism agrred | should be communicated through an out-of-band mechanism agreed upon | |||
| between the dCDN and uCDN. | between the dCDN and uCDN. | |||
| 2. CDNI Additional Capability Objects | 2. CDNI Additional Capability Objects | |||
| Section 5 of [RFC8008] describes the FCI Capability Advertisement | Section 5 of [RFC8008] describes the FCI Capability Advertisement | |||
| Object, which contains a CDNI Capability Object as well as the | Object, which contains a CDNI Capability Object as well as the | |||
| capability object type (a CDNI Payload Type). The section also | capability-type (a CDNI Payload Type). The section also defines the | |||
| defines the Capability Objects per such type. Below, we define two | Capability Objects per such type. Below, we define two additional | |||
| additional Capability Objects. | Capability Objects. | |||
| Note: In the following sections, the term "mandatory-to-specify" is | | Note: In the following sections, the term "mandatory-to- | |||
| used to convey which properties MUST be included when serializing a | | specify" is used to convey which properties MUST be included | |||
| given capability object. When mandatory-to-specify is defined as a | | when serializing a given capability object. When mandatory-to- | |||
| "Yes" for an individual property, it means that if the object | | specify is defined as a "Yes" for an individual property, it | |||
| containing that property is included in an FCI message, then the | | means that if the object containing that property is included | |||
| mandatory-to-specify property MUST be included. | | in an FCI message, then the mandatory-to-specify property MUST | |||
| | be included. | ||||
| 2.1. Telemetry Capability Object | 2.1. Telemetry Capability Object | |||
| The Telemetry Capability Object advertises a list of telemetry | The Telemetry Capability Object advertises a list of Telemetry | |||
| sources made available to the uCDN by the dCDN. In this document, | Sources made available to the uCDN by the dCDN. In this document, | |||
| telemetry data is being defined as near real-time aggregated metrics | telemetry data is being defined as near real-time aggregated metrics | |||
| of dCDN utilization, such as bits per second egress, and is specific | of dCDN utilization, such as bits per second egress, and is specific | |||
| to the uCDN and dCDN traffic delegation relationship. | to the uCDN and dCDN traffic delegation relationship. | |||
| Telemetry data is uniquely defined by a source ID, a metric name, and | Telemetry data is uniquely defined by a source ID, a metric name, and | |||
| the footprints that are associated with an FCI.Capability | the footprints that are associated with an FCI Capabilities | |||
| advertisement. When defining a CapacityLimit, the meaning of a limit | advertisement. When defining a CapacityLimit, the meaning of a limit | |||
| might be ambiguous if the uCDN and dCDN are observing telemetry via | might be ambiguous if the uCDN and dCDN are observing telemetry via | |||
| different data sources. A dCDN-provided telemetry source that both | different data sources. A dCDN-provided Telemetry Source that both | |||
| parties reference serves as a non-ambiguous metric for use when | parties reference serves as a non-ambiguous metric for use when | |||
| comparing current usage to a limit. | comparing current usage to a limit. | |||
| Telemetry data is important for making informed traffic delegation | Telemetry data is important for making informed traffic delegation | |||
| decisions. Additionally, it is essential in providing visibility of | decisions. Additionally, it is essential in providing visibility of | |||
| traffic that has been delegated. In situations where there are | traffic that has been delegated. In situations where there are | |||
| multiple CDN delegations, a uCDN will need to aggregate the usage | multiple CDN delegations, a uCDN will need to aggregate the usage | |||
| information from any dCDNs to which it delegated when asked to | information from any dCDNs to which it delegated when asked to | |||
| provide usage information, otherwise the traffic may seem unaccounted | provide usage information, otherwise the traffic may seem unaccounted | |||
| for. | for. | |||
| Example: A Content Provider delegates traffic directly to a uCDN, and | Example: A Content Provider delegates traffic directly to a uCDN, and | |||
| that uCDN delegates that traffic to a dCDN. When the Content | that uCDN delegates that traffic to a dCDN. When the Content | |||
| Provider polls the uCDN telemetry interface, any of the traffic the | Provider polls the uCDN telemetry interface, any of the traffic the | |||
| uCDN delegated to the dCDN would become invisible to the Content | uCDN delegated to the dCDN would become invisible to the Content | |||
| Provider unless the uCDN aggregates the dCDN telemetry with its own | Provider, unless the uCDN aggregates the dCDN telemetry with its own | |||
| metrics. | metrics. | |||
| Property: sources | Property: sources | |||
| Description: Telemetry sources made available to the uCDN. | Description: Telemetry Sources made available to the uCDN. | |||
| Type: A JSON array of Telemetry Source objects (see | Type: A JSON array of Telemetry Source objects (see | |||
| Section 2.1.1). | Section 2.1.1). | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| 2.1.1. Telemetry Source Object | 2.1.1. Telemetry Source Object | |||
| The Telemetry Source Object is built of an associated type, a list of | The Telemetry Source Object is made of an associated type, a list of | |||
| exposed metrics, and type-specific configuration data. | exposed metrics, and type-specific configuration data. | |||
| Property: id | Property: id | |||
| Description: An identifier of a telemetry source. The ID | Description: An identifier of a telemetry source. The ID string | |||
| string assigned to this Telemetry Source MUST be unique across | assigned to this Telemetry Source MUST be unique across all | |||
| all Telemetry Source objects in the advertisement containining | Telemetry Source objects in the advertisement containing this | |||
| this Telemetry Source Object. The ID string MUST remain | Telemetry Source Object. The ID string MUST remain consistent | |||
| consistent for the same source reference across advertisements. | for the same source reference across advertisements. | |||
| Type: String. | Type: String | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| Property: type | Property: type | |||
| Description: A valid telemetry source type. See | Description: A valid Telemetry Source Type (see Section 2.1.1.1). | |||
| Section 2.1.1.1. | ||||
| Type: String. | Type: String | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| Property: metrics | Property: metrics | |||
| Description: The metrics exposed by this source. | ||||
| Type: A JSON array of Telemetry Source Metric objects (see | Description: The metrics exposed by this source. | |||
| Type: A JSON array of Telemetry Source Metric Objects (see | ||||
| Section 2.1.1.2). | Section 2.1.1.2). | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| Property: configuration | Property: configuration | |||
| Description: a source-specific representation of the Telemetry | Description: A source-specific representation of the Telemetry | |||
| Source configuration. For the generic source type, this | Source configuration. For the generic source type, this | |||
| configuration format is defined out-of-band. For other types, | configuration format is defined as out-of-band. For other | |||
| the configuration format will be specified in a yet to be | types, the configuration format will be specified in a yet-to- | |||
| defined telemetry interface specification. The goal of this | be-defined telemetry interface specification. The goal of this | |||
| element is to allow for forward compatibility with a formal | element is to allow for forward compatibility with a formal | |||
| telemetry interface. | telemetry interface. | |||
| Type: A JSON object, the structure of which is specific to the | Type: A JSON object, the structure of which is specific to the | |||
| Telemetry Source and outside the scope of this document. | Telemetry Source and outside the scope of this document. | |||
| Mandatory-to-Specify: No. | Mandatory-to-Specify: No | |||
| 2.1.1.1. Telemetry Source Types | 2.1.1.1. Telemetry Source Types | |||
| At the time of this writing, the registry of valid Telemetry Source | At the time of this writing, the "CDNI Telemetry Source Types" | |||
| Object types is limited to a single type: Generic (see | registry is limited to a single type: generic (see Table 3 in | |||
| Section 3.2.1). | Section 3.2.1). | |||
| +=============+=======================================+ | ||||
| | Source Type | Description | | ||||
| +=============+=======================================+ | ||||
| | generic | An object which allows for | | ||||
| | | advertisement of generic data sources | | ||||
| +-------------+---------------------------------------+ | ||||
| Table 1 | ||||
| 2.1.1.2. Telemetry Source Metric Object | 2.1.1.2. Telemetry Source Metric Object | |||
| The Telemetry Source Metric Object describes the metric to be | The Telemetry Source Metric Object describes the metric to be | |||
| exposed. | exposed. | |||
| Property: name | Property: name | |||
| Description: An identifier for this metric. This name MUST be | Description: An identifier for this metric. This name MUST be | |||
| unique among metric objects within the containing Telemetry | unique among metric objects within the containing Telemetry | |||
| Source. The name MUST remain consistent for the same source | Source. The name MUST remain consistent for the same source | |||
| reference across advertisements. | reference across advertisements. | |||
| Type: String. | Type: String | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| Property: time-granularity | Property: time-granularity | |||
| Description: The time, in seconds, representing the metric | Description: The time, in seconds, representing the metric data. | |||
| data. For example, a value representing the last 5 minutes | For example, a value representing the last 5 minutes would have | |||
| would have a time-granularity of 300. | a time-granularity of 300. | |||
| Type: Unsigned Integer. | Type: Unsigned Integer | |||
| Mandatory-to-Specify: No. | Mandatory-to-Specify: No | |||
| Property: data-percentile | Property: data-percentile | |||
| Description: The percentile calculation the data represents, | Description: The percentile calculation the data represents, | |||
| i.e., 50 percentile would equate to the median over the time- | i.e., 50 percentile would equate to the median over the time- | |||
| granularity. Lack of a data-percentile indicates that the data | granularity. Lack of a data-percentile indicates that the data | |||
| MUST be the mean over the time representation. | MUST be the mean over the time representation. | |||
| Type: Unsigned Integer. | Type: Unsigned Integer | |||
| Mandatory-to-Specify: No. | Mandatory-to-Specify: No | |||
| Property: latency | Property: latency | |||
| Description: Time in seconds that the data is behind real-time. | Description: Time in seconds that the data is behind real-time. | |||
| This is important to specify to help the uCDN understand how | This is important to specify to help the uCDN understand how | |||
| long it might take to reflect traffic adjustments in the | long it might take to reflect traffic adjustments in the | |||
| metrics. | metrics. | |||
| Type: Unsigned Integer. | Type: Unsigned Integer | |||
| Mandatory-to-Specify: No. | Mandatory-to-Specify: No | |||
| 2.1.2. Telemetry Capability Object Serialization | 2.1.2. Telemetry Capability Object Serialization | |||
| The following shows an example of Telemetry Capability including two | The following shows an example of a Telemetry Capability Object, | |||
| metrics for a source, that is scoped to a footprint. | including two metrics for a source, that is scoped to a footprint. | |||
| { | { | |||
| "capabilities": [ | "capabilities": [ | |||
| { | { | |||
| "capability-type": "FCI.Telemetry", | "capability-type": "FCI.Telemetry", | |||
| "capability-value": { | "capability-value": { | |||
| "sources": [ | "sources": [ | |||
| { | { | |||
| "id": "capacity_metrics_region1", | "id": "capacity_metrics_region1", | |||
| "type": "generic", | "type": "generic", | |||
| skipping to change at page 8, line 39 ¶ | skipping to change at line 357 ¶ | |||
| "footprints": [ | "footprints": [ | |||
| <footprint objects> | <footprint objects> | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| 2.2. CapacityLimits Capability Object | 2.2. CapacityLimits Capability Object | |||
| The CapacityLimits Capability Object enables the dCDN to specify | The CapacityLimits Capability Object enables the dCDN to specify | |||
| traffic delegation limits to a uCDN within an FCI.Capabilities | traffic delegation limits to a uCDN within an FCI Capabilities | |||
| advertisement. The limits specified by the dCDN will inform the uCDN | advertisement. The limits specified by the dCDN will inform the uCDN | |||
| on how much traffic may be delegated to the dCDN. The limits | on how much traffic may be delegated to the dCDN. The limits | |||
| specified by the dCDN should be considered Not To Exceed (NTE) | specified by the dCDN should be considered NTE limits. The limits | |||
| limits. The limits should be based on near real-time telemetry data | should be based on near real-time telemetry data that the dCDN | |||
| that the dCDN provides to the uCDN. In other words, for each limit | provides to the uCDN. In other words, for each limit that is | |||
| that is advertised, there should also exist a telemetry source which | advertised, there should also exist a Telemetry Source that provides | |||
| provides current utilization data against the particular advertised | current utilization data against the particular advertised limit. | |||
| limit. | ||||
| Property: limits | Property: limits | |||
| Description: A collection of CapacityLimit objects. | Description: A collection of CapacityLimit Objects. | |||
| Type: A JSON array of CapacityLimit objects (see | Type: A JSON array of CapacityLimit Objects (see Section 2.2.1). | |||
| Section 2.2.1). | ||||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| 2.2.1. CapacityLimit Object | 2.2.1. CapacityLimit Object | |||
| A CapacityLimit object is used to represent traffic limits for | A CapacityLimit Object is used to represent traffic limits for | |||
| delegation from the uCDN towards the dCDN. The limit object is | delegation from the uCDN towards the dCDN. The limit object is | |||
| scoped to the footprint associated with the FCI capability | scoped to the footprint associated with the FCI Capabilities | |||
| advertisement encompassing this object. Limits MUST be considered | advertisement encompassing this object. Limits MUST be considered | |||
| using a logical "AND": a uCDN will need to ensure that all limits are | using a logical "AND": A uCDN will need to ensure that all limits are | |||
| considered rather than choosing only the most specific. | considered rather than choosing only the most specific. | |||
| Property: limit-type | Property: limit-type | |||
| Description: The units of maximum-hard and maximum-soft. | Description: The units of maximum-hard and maximum-soft. | |||
| Type: String. One of the values listed in Section 2.2.1.1. | Type: String. One of the values listed in Section 2.2.1.1. | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| Property: id | Property: id | |||
| Description: Specifies an identifier associated with a limit. | Description: Specifies an identifier associated with a limit. | |||
| This MAY be used as a relational identifier to a specific | This MAY be used as a relational identifier to a specific | |||
| CapacityLimit Object. If specified, this identifier MUST be | CapacityLimit Object. If specified, this identifier MUST be | |||
| unique among specified identifiers associated with any other | unique among specified identifiers associated with any other | |||
| CapacityLimit objects in the advertisement containing this | CapacityLimit Objects in the advertisement containing this | |||
| CapacityLimit Object. | CapacityLimit Object. | |||
| Type: String. | Type: String | |||
| Mandatory-to-Specify: No. | Mandatory-to-Specify: No | |||
| Property: maximum-hard | Property: maximum-hard | |||
| Description: The maximum unit of capacity that is available for | Description: The maximum unit of capacity that is available for | |||
| use. | use. | |||
| Type: Unsigned Integer. | Type: Unsigned Integer | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| Property: maximum-soft | Property: maximum-soft | |||
| Description: A soft limit at which a uCDN SHOULD reduce traffic | ||||
| Description: A soft limit at which a uCDN SHOULD reduce traffic | ||||
| before hitting the hard limit. This value MUST be less than | before hitting the hard limit. This value MUST be less than | |||
| the value of maximum-hard. If this value is not specified, it | the value of maximum-hard. If this value is not specified, it | |||
| is equal to the value of maximum-hard. | is equal to the value of maximum-hard. | |||
| Type: Unsigned Integer. | Type: Unsigned Integer | |||
| Mandatory-to-Specify: No. | Mandatory-to-Specify: No | |||
| Property: current | Property: current | |||
| Description: Specifies the current usage value of the limit. | Description: Specifies the current usage value of the limit. It | |||
| It is NOT RECOMMENDED to specify the current usage value inline | is NOT RECOMMENDED to specify the current usage value inline | |||
| with the FCI.CapacityLimits advertisements as it will reduce | with the FCI.CapacityLimits advertisements as it will reduce | |||
| the ability to cache the response, but this mechanism exists | the ability to cache the response, but this mechanism exists | |||
| for simple use cases where an external telemetry source cannot | for simple use cases where an external Telemetry Source cannot | |||
| be feasibly implemented. The intended method for providing | be feasibly implemented. The intended method for providing | |||
| telemetry data is to reference a Telemetry Source object (see | telemetry data is to reference a Telemetry Source Object (see | |||
| Section 2.1.1) to poll for the current usage. | Section 2.1.1) to poll for the current usage. | |||
| Type: Unsigned Integer. | Type: Unsigned Integer | |||
| Mandatory-to-Specify: No. | Mandatory-to-Specify: No | |||
| Property: telemetry-source | Property: telemetry-source | |||
| Description: Mapping of each particular limit to a specific | Description: The mapping of each particular limit to a specific | |||
| metric with relevant real-time data provided by a telemetry | metric with relevant real-time data provided by a Telemetry | |||
| source. | Source. | |||
| Type: CapacityLimitTelemetrySource object (see | Type: CapacityLimitTelemetrySource object (see Section 2.2.1.2). | |||
| Section 2.2.1.2). | ||||
| Mandatory-to-Specify: No. | Mandatory-to-Specify: No | |||
| 2.2.1.1. CapacityLimit Types | 2.2.1.1. CapacityLimit Types | |||
| Below are listed the valid capacity limit-types registered in the | Below are listed the valid limit-type entries registered in the "CDNI | |||
| CDNI Capacity Limit Types registry. The values specified here | Capacity Limit Types" registry. The values specified here represent | |||
| represent the types that were identified as being the most relevant | the types that were identified as being the most relevant metrics for | |||
| metrics for the purposes of traffic delegation between CDNs. | the purposes of traffic delegation between CDNs. | |||
| +=================+=====================+ | +=====================+=====================+ | |||
| | Limit Type | Units | | | Capacity Limit Type | Units | | |||
| +=================+=====================+ | +=====================+=====================+ | |||
| | egress | Bits per second | | | egress | Bits per second | | |||
| +-----------------+---------------------+ | +---------------------+---------------------+ | |||
| | requests | Requests per second | | | requests | Requests per second | | |||
| +-----------------+---------------------+ | +---------------------+---------------------+ | |||
| | storage-size | Total bytes | | | storage-size | Total bytes | | |||
| +-----------------+---------------------+ | +---------------------+---------------------+ | |||
| | storage-objects | Count | | | storage-objects | Count | | |||
| +-----------------+---------------------+ | +---------------------+---------------------+ | |||
| | sessions | Count | | | sessions | Count | | |||
| +-----------------+---------------------+ | +---------------------+---------------------+ | |||
| | cache-size | Total bytes | | | cache-size | Total bytes | | |||
| +-----------------+---------------------+ | +---------------------+---------------------+ | |||
| Table 2 | Table 1 | |||
| 2.2.1.2. CapacityLimitTelemetrySource Object | 2.2.1.2. CapacityLimitTelemetrySource Object | |||
| The CapacityLimitTelemetrySource Object refers to a specific metric | The CapacityLimitTelemetrySource Object refers to a specific metric | |||
| within a Telemetry Source. | within a Telemetry Source. | |||
| Property: id | Property: id | |||
| Description: Reference to the "id" of a telemetry source | Description: Reference to the "id" of a Telemetry Source defined | |||
| defined by a Telemetry Capability object as defined in | by a Telemetry Capability Object as defined in Section 2.1. | |||
| Section 2.1. | ||||
| Type: String. | Type: String | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| Property: metric | Property: metric | |||
| Description: Reference to the "name" property of a metric | Description: Reference to the "name" property of a metric defined | |||
| defined within a telemetry source of a Telemetry Capability | within a Telemetry Source of a Telemetry Capability object. | |||
| object. | ||||
| Type: String. | Type: String | |||
| Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes | |||
| 2.2.2. CapacityLimit Object Serialization | 2.2.2. CapacityLimit Object Serialization | |||
| The following shows an example of an FCI.CapacityLimits object. | The following shows an example of an FCI.CapacityLimits object. | |||
| { | { | |||
| "capabilities": [ | "capabilities": [ | |||
| { | { | |||
| "capability-type":"FCI.CapacityLimits", | "capability-type":"FCI.CapacityLimits", | |||
| "capability-value":{ | "capability-value":{ | |||
| skipping to change at page 12, line 34 ¶ | skipping to change at line 530 ¶ | |||
| "<footprint objects>" | "<footprint objects>" | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| 3. IANA Considerations | 3. IANA Considerations | |||
| 3.1. CDNI Payload Types | 3.1. CDNI Payload Types | |||
| This document requests the registration of two additional payload | Per this document, IANA has registered two additional payload types | |||
| types to the Content Delivery Network Interconnection (CDNI) | in the "CDNI Payload Types" registry within the "Content Delivery | |||
| Parameters "CDNI Payload Types" registry: | Network Interconnection (CDNI) Parameters" registry group: | |||
| +====================+===============+ | ||||
| | Payload Type | Specification | | ||||
| +====================+===============+ | ||||
| | FCI.Telemetry | RFCthis | | ||||
| +--------------------+---------------+ | ||||
| | FCI.CapacityLimits | RFCthis | | ||||
| +--------------------+---------------+ | ||||
| Table 3 | +====================+===========+ | |||
| | Payload Type | Reference | | ||||
| +====================+===========+ | ||||
| | FCI.Telemetry | RFC 9808 | | ||||
| +--------------------+-----------+ | ||||
| | FCI.CapacityLimits | RFC 9808 | | ||||
| +--------------------+-----------+ | ||||
| [RFC Editor: Please replace RFCthis with the published RFC number for | Table 2 | |||
| this document.] | ||||
| 3.1.1. CDNI FCI Telemetry Payload Type | 3.1.1. CDNI FCI.Telemetry Payload Type | |||
| Purpose: The purpose of this Payload Type is to list the supported | Purpose: The purpose of this Payload Type is to list the supported | |||
| telemetry sources and the metrics made available by each source. | Telemetry Sources and the metrics made available by each source. | |||
| Interface: FCI. | Interface: FCI | |||
| Encoding: See Section 2.1. | Encoding: See Section 2.1. | |||
| 3.1.2. CDNI FCI Capacity Limits Payload Type | 3.1.2. CDNI FCI.CapacityLimits Payload Type | |||
| Purpose: The purpose of this Payload Type is to define Capacity | Purpose: The purpose of this Payload Type is to define Capacity | |||
| Limits based on utilization metrics corresponding to telemetry | Limits based on utilization metrics corresponding to Telemetry | |||
| sources provided by the dCDN. | Sources provided by the dCDN. | |||
| Interface: FCI. | Interface: FCI | |||
| Encoding: See Section 2.2. | Encoding: See Section 2.2. | |||
| 3.2. "CDNI Telemetry Source Types" Registry | 3.2. CDNI Telemetry Source Types Registry | |||
| IANA will add the following new registry to the "Content Delivery | IANA has added the following new registry within the "Content | |||
| Network Interconnection (CDNI) Parameters" group at | Delivery Network Interconnection (CDNI) Parameters" registry group at | |||
| https://www.iana.org/assignments/cdni-parameters: | <https://www.iana.org/assignments/cdni-parameters>: | |||
| Registry Name: CDNI Telemetry Source Types | Registry Name: CDNI Telemetry Source Types | |||
| Registry Description: The CDNI Telemetry Source Types registry | Registry Description: The "CDNI Telemetry Source Types" registry | |||
| defines the valid values for the "type" property of the Telemetry | defines the valid values for the "type" property of the Telemetry | |||
| Source object defined in Section 2.1.1. | Source object defined in Section 2.1.1. | |||
| Registration Procedure: The registry follows the Specification | Registration Procedure: The registry follows the Specification | |||
| Required policy as defined in [RFC8126]. The Designated Expert | Required policy as defined in [RFC8126]. The designated expert | |||
| should consider the following guidelines when evaluating registration | should consider the following guidelines when evaluating | |||
| requests: | registration requests: | |||
| * The new type definition does not duplicate existing types. | * The new type definition does not duplicate existing types. | |||
| * The review should verify that the telemetry source is applicable | * The review should verify that the Telemetry Source is | |||
| to the CDNI use cases and that the description is clear and | applicable to the CDNI use cases and that the description is | |||
| unambiguous. | clear and unambiguous. | |||
| * The registration is applicable for general use and not | * The registration is applicable for general use and is not | |||
| proprietary. | proprietary. | |||
| * The "configuration" property has a fully specified object | * The "configuration" property has a fully specified object | |||
| definition with a description of each defined property. | definition with a description of each defined property. | |||
| The following values will be registered: | The following value has been registered: | |||
| +=============+===============+ | +=============+=======================================+===========+ | |||
| | Source Type | Specification | | | Source Type | Description | Reference | | |||
| +=============+===============+ | +=============+=======================================+===========+ | |||
| | generic | RFCthis | | | generic | An object that allows for | RFC 9808 | | |||
| +-------------+---------------+ | | | advertisement of generic data sources | | | |||
| +-------------+---------------------------------------+-----------+ | ||||
| Table 4 | Table 3 | |||
| 3.2.1. CDNI Generic Telemetry Source Type | 3.2.1. CDNI Generic Telemetry Source Type | |||
| Purpose: The purpose of this Telemetry Source Type is to provide a | Purpose: The purpose of this Telemetry Source Type is to provide a | |||
| source-agnostic telemetry type that may be used for generic | source-agnostic telemetry type that may be used for generic | |||
| telemetry source advertisement. | Telemetry Source advertisement. | |||
| Usage: See Section 2.1.1. | Usage: See Section 2.1.1. | |||
| 3.3. "CDNI Capacity Limit Types" Registry | 3.3. CDNI Capacity Limit Types Registry | |||
| IANA will add the following new registry to the "Content Delivery | IANA has added the following new registry within the "Content | |||
| Network Interconnection (CDNI) Parameters" group at | Delivery Network Interconnection (CDNI) Parameters" registry group at | |||
| https://www.iana.org/assignments/cdni-parameters: | <https://www.iana.org/assignments/cdni-parameters>: | |||
| Registry Name: CDNI Capacity Limit Types | Registry Name: CDNI Capacity Limit Types | |||
| Registry Description: The CDNI Capacity Limit Types registry defines | Registry Description: The "CDNI Capacity Limit Types" registry | |||
| the valid values of the "limit-type" property of a CapacityLimit | defines the valid values of the "limit-type" property of a | |||
| object defined in Section 2.2.1. | CapacityLimit Object defined in Section 2.2.1. | |||
| Registration Procedure: The registry follows the Specification | Registration Procedure: The registry follows the Specification | |||
| Required policy as defined in [RFC8126]. The Designated Expert | Required policy as defined in [RFC8126]. The designated expert | |||
| should consider the following guidelines when evaluating registration | should consider the following guidelines when evaluating | |||
| requests: | registration requests: | |||
| * The new capacity limit type does not duplicate existing entries. | * The new capacity limit-type does not duplicate existing | |||
| entries. | ||||
| * The submission has a defined purpose. The newly defined capacity | * The submission has a defined purpose. The newly defined | |||
| limit type should be clearly justified in the context of one or | capacity limit-type should be clearly justified in the context | |||
| more CDNI use cases. | of one or more CDNI use cases. | |||
| * The description of the capacity limit type is well-documented and | * The description of the capacity limit-type is well-documented | |||
| unambiguous. | and unambiguous. | |||
| The following values will be registered: | The following values have been registered: | |||
| +=====================+=====================+===============+ | +=====================+=====================+===========+ | |||
| | Capacity Limit Type | Units | Specification | | | Capacity Limit Type | Units | Reference | | |||
| +=====================+=====================+===============+ | +=====================+=====================+===========+ | |||
| | egress | Bits per second | RFCthis | | | egress | Bits per second | RFC 9808 | | |||
| +---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| | requests | Requests per second | RFCthis | | | requests | Requests per second | RFC 9808 | | |||
| +---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| | storage-size | Total bytes | RFCthis | | | storage-size | Total bytes | RFC 9808 | | |||
| +---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| | storage-objects | Count | RFCthis | | | storage-objects | Count | RFC 9808 | | |||
| +---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| | sessions | Count | RFCthis | | | sessions | Count | RFC 9808 | | |||
| +---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| | cache-size | Total bytes | RFCthis | | | cache-size | Total bytes | RFC 9808 | | |||
| +---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| Table 5 | Table 4 | |||
| Usage: See Section 2.2.1.1. | Usage: See Section 2.2.1.1. | |||
| 4. Security Considerations | 4. Security Considerations | |||
| This specification is in accordance with the CDNI Request Routing: | This specification is in accordance with the CDNI Request Routing: | |||
| Footprint and Capabilities Semantics. As such, it is subject to the | Footprint and Capabilities Semantics. As such, it is subject to the | |||
| security and privacy considerations as defined in Section 7 of | security and privacy considerations as defined in Section 7 of | |||
| [RFC8008]. | [RFC8008]. | |||
| 5. Acknowledgements | 5. References | |||
| The authors would like to express their gratitude to the members of | ||||
| the Streaming Video Technology Alliance [SVTA] Open Caching Working | ||||
| Group for their guidance, contribution, and review. | ||||
| 6. References | ||||
| 6.1. Normative References | 5.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg, | [RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg, | |||
| R., and K. Ma, "Content Delivery Network Interconnection | R., and K. Ma, "Content Delivery Network Interconnection | |||
| (CDNI) Request Routing: Footprint and Capabilities | (CDNI) Request Routing: Footprint and Capabilities | |||
| Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016, | Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016, | |||
| skipping to change at page 16, line 14 ¶ | skipping to change at line 691 ¶ | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| 6.2. Informative References | 5.2. Informative References | |||
| [OC-CII] Ryan, A., Ed., Rosenblum, B., Goldstein, G., Roskin, R., | ||||
| and G. Bichot, "Open Caching Capacity Insights - | ||||
| Functional Specification (Placeholder before | ||||
| publication)", <https://www.svta.org/document/open- | ||||
| caching-capacity-interface/>. | ||||
| [OC-RR] Finkelman, O., Ed., Hofmann, J., Klein, E., Mishra, S., | ||||
| Ma, K., Sahar, D., and B. Zurat, "Open Caching Request | ||||
| Routing - Functional Specification", Version 1.1, 4 | ||||
| October 2019, <https://www.svta.org/product/open-cache- | ||||
| request-routing-functional-specification/>. | ||||
| [OCWG] "Open Caching Home Page", <https://opencaching.svta.org/>. | ||||
| [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, DOI 10.17487/RFC6707, September | Statement", RFC 6707, DOI 10.17487/RFC6707, September | |||
| 2012, <https://www.rfc-editor.org/info/rfc6707>. | 2012, <https://www.rfc-editor.org/info/rfc6707>. | |||
| [RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, | [RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, | |||
| "Content Delivery Network Interconnection (CDNI) | "Content Delivery Network Interconnection (CDNI) | |||
| Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016, | Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016, | |||
| <https://www.rfc-editor.org/info/rfc8006>. | <https://www.rfc-editor.org/info/rfc8006>. | |||
| [SVTA] "Streaming Video Technology Alliance Home Page", | [SVTA] "Streaming Video Technology Alliance Home Page", | |||
| <https://www.svta.org>. | <https://www.svta.org>. | |||
| Acknowledgements | ||||
| The authors would like to express their gratitude to the members of | ||||
| the Streaming Video Technology Alliance [SVTA] Open Caching Working | ||||
| Group for their guidance, contribution, and review. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Andrew Ryan | Andrew Ryan | |||
| Disney Streaming | Disney Streaming | |||
| 1211 Avenue of the Americas | 1211 Avenue of the Americas | |||
| New York | New York, NY 10036 | |||
| , NY 10036 | ||||
| United States of America | United States of America | |||
| Email: andrew@andrewnryan.com | Email: andrew@andrewnryan.com | |||
| Ben Rosenblum | Ben Rosenblum | |||
| Vecima | Vecima | |||
| 4375 River Green Pkwy #100 | 4375 River Green Pkwy #100 | |||
| Duluth | Duluth, GA 30096 | |||
| , GA 30096 | ||||
| United States of America | United States of America | |||
| Email: ben@rosenblum.dev | Email: ben@rosenblum.dev | |||
| Nir B. Sopher | Nir B. Sopher | |||
| Qwilt | Qwilt | |||
| 6, Ha'harash | 6, Ha'harash | |||
| Hod HaSharon | Hod HaSharon 4524079 | |||
| 4524079 | ||||
| Israel | Israel | |||
| Email: nir@apache.org | Email: nir@apache.org | |||
| End of changes. 160 change blocks. | ||||
| 360 lines changed or deleted | 332 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||