来源:Demuxed 2021 主讲人:Glenn Goldstein 内容整理:张一炜 本次演讲介绍了内容分发系统中各部分之间配置元数据交换对于互操作性提高的重要性,指出了目前 CDNI 与 Open Caching 配置接口方面存在的挑战与解决思路,并对 SVA(Steaming Video Aliance)组织在 CDNI 标准上进行的扩展工作进行了介绍。
目录
- 背景介绍
- 配置元数据方面的挑战
- SVA 对于 IETF 元数据模型结构的扩展
背景介绍
CDNI(Content Delivery Networks Interconnection) 是一个定义了一系列接口 IETF 标准,该标准使得上游CDN(uCDNs)能够将请求委托给下游CDN (dCDNs)。而 Open Caching 是 CDNI 的一个特殊的使用案例。其中内容提供商或是商业的 CDN 服务器一般作为 uCDN, 而 ISP 中的一个 caching layer则是作为 dCDN。
CDNI 中需要通过配置文件元数据来定义如何访问源、认证规则、传输等内容分发的流程中所需要的内容。而在 Open Caching 中,包含了元数据来定义请求的路由方式以及传输过程中的容量以及缓存容量等信息。在一个内容分发系统中,不同部分之间高效的 CDN 元数据交换是实现高效互操作性的关键。
CDNI的具体的参考模型如下图所示。其中的每一个部分的作用是非常灵活的,内容提供商(CSP)同样可以作为 uCDN,商业的 CDN 或者 ISP 也可以既作为 uCDN 也可以作为 dCDN。在 CDNI 的参考模型中,也存在一些改进传输和委托请求的方式,包括改进 uCDN 的 overflow 机制,优化 ISP 部分(保持网络通畅),以及对 CSP 和 ISP 进行联合管理等。
CDNI 参考模型
CDNI 的参考模型还定义了循环和递归的请求路由方式,也包括了基于DNS 和 HTTP 重定向的部署。在本次演讲中,主要关注的是其中的元数据接口部分(RFC 8006)
配置元数据方面的挑战
目前 CDNI 配置元数据方面存在的挑战主要在于,仍然缺少符合业界标准的 API 以及合适的配置元数据模型,以使得内容和服务提供商将更多的操作实现自动化,并且使得 Open Caching 等技术能够协调内容分发的配置信息。
为解决这一挑战,SVA 组织(其中包括了来自内容提供商,CDN、ISP服务商以及Open caching 技术供应商的成员)指出了定义一个标准配置接口的主要目的,包括以下五点:
- 使得整合工作更加有效
- 允许自助服务配置,使得对开发者更加友好
- 标准化 CDN 特征定义
- 改善管理与兼容性
- 保留创造差异化的机会
通过实现标准化,对于 CDN 的配置元数据以及 Open Caching 系统的元数据都有益处。对于 CDN 来说,内容服务商经常需要配置复杂的缓存、访问以及请求相应的规则等,这都需要通过配置元数据来解决。而对于 Open Caching 系统来说, Open caching 节点需要通过配置元数据获取其对应服务内容的缓存和访问方式。因此,在 SVA 的实现中, CDN 和 Open Caching 系统的配置元数据可以一起设计解决,并在经历了 15 个月的设计后完成了对标准 CDN 容量的定义以及扩展标准的设计。
演讲中还介绍了目前 IETF 的 CDNI 元数据方面的不足之处。主要在于 CDNI 的元数据和控制接口的设计是在简单有限的使用案例中规定上游 CDN 与 下游 CDN 之间的交换。而在考虑到大范围的使用案例时,包括内容服务商管理了多个 CDN 的情况下,其提供的内容与 Open Caching 系统之间仍有差距。这其中主要的差距在于:无法满足复杂场景下 CDN 和 Open Cachintg的需要,只有简单的推送式元数据发布,而复杂的配置推送方式只能通过内容服务商来提供。
SVA 对于 IETF 元数据模型结构的扩展
SVA 对于 CDNI 元数据模型的扩展主要集中在 GenricMetadata Object 部分, 并作为 RFC-8006 的扩展部分提交给了 IETF。具体的改进包括了以下内容:
- 增强的源定义和认证方式
- 缓存控制策略
- 动态的 CORS 头信息
- 传输类型元数据以及服务 ID 元数据
- SVA 的 Open Caching 配置元数据
- 私有的特征作为可扩展部分
- 使用表达式的语言处理各个阶段
其中最大的贡献在于为处理各个阶段定义表达式的语言,能够使得元数据规则根据 HTTP 请求和响应中的元素自适应的作用在请求和响应的各个阶段,并且提供明确的匹配规则。下图是 HTTP 请求在 CDN 中的四个阶段,其中每个阶段都定义了对应的元数据匹配规则,这也使得缓存规则定义、头字段修改与重定向更为容易。
HTTP 请求与响应
演讲过程中也展示了一个完整的使用 SVA 扩展配置文件的例子,如下图所示。使用SVA 的扩展可以方便的定义多样的处理阶段和缓存策略,并且其扩展的格式与标准的配置结构相适应。
CDN 配置文件
目前 SVA 在配置接口方面的说明书已经公布在 SVA 的网站上,包括了对此次扩展的概述,详细说明已经 API 使用方法。SVA 新增的 API 均符合 OpenAPI3.0 的标准,并已经将此次 SVA 所做的扩展在 IETF 111 的 CDNI 工作组提出,并计划在 IETF 112 中继续进行更新。
最后附上演讲视频:
http://mpvideo.qpic.cn/0bc3z4aa4aaa34aibvayhnrfbt6db3hqadqa.f10002.mp4?dis_k=afb125ea1fe70b8164385577c4512549&dis_t=1649672536&vid=wxv_2284790553273909251&format_id=10002&support_redirect=0&mmversion=false