本文提出了一个针对直播流媒体传输的CDN的控制框架。
已知一个存有视频内容的、具有一定拓扑的CDN网络,有各种来自不同客户端的对指定<内容,码率>视频的请求,CDN按一定策略
来把这些请求指引到存有内容的节点上,即为这些请求各自分配到内容的路径。
本文关注于如何提出一个好的指引策略
,使得:
- 对CDN来说,内容传输cost小(每条链路cost具体与CDN服务商的业务有关)
- 对客户端来说,需要有更好的用户体验(包括延迟、画质等)
这里讨论的是CDN的策略,至于客户端如何根据网络的反馈调整它想要的码率,则是另外的事情。
与传统CDN的区别之处
集中式和分布式的讨论
- 集中式控制能对网络的全局情况了解更全面,从而合理地协调视频流的分配。
- 分布式控制对网络变化的响应更迅速
本文采取了一种hybrid的方式
IDEA
简单来说,就是集中式和分布式都装上,在网络有变动的时候集中式来不及反应的时候,靠分布式先临时给点响应。
视频传输:
- CDN拓扑图(节点分为若干类,edge节点相当于请求者,S节点相当于内容提供者,edge节点的请求会向upstream发,经过中间节点最终到达S节点)
- CDN带一个DNS服务器,客户端的HTTP请求通过DNS解析,被分配到CDN里的合适的edge节点。
CDN内部:
- Local:每一个节点一个discovery模块,会收集各种信息(链路信息、请求信息);一个control模块,记录FIB等。
- Central:CDN有一个集中式模块,其discovery记录每个节点本地discovery模块上交给它的信息,其control模块记录了集中优化后得到的内容传输路径。
控制逻辑:
- 集中式:从各个节点收集信息,计算最优路径,把路由方案告诉各个节点,同时更新DNS。
- 分布式:
- 收集各种信息;把集中式发来的信息和自己的本地记录合并,得到最后的FIB。
- 使用距离矢量的方式维护到每个<视频,码率>对象的cost和容量。当FIB里的不能走时,选一个容量足够的、cost最小的上行节点走。
全局优化算法:
迭代计算
输入:
视频、码率、链路容量、链路代价、拓扑、请求、优先级等
输出:
CDN内路由策略
最大化:服务质量-cost