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