Live vedio delivery 逐年增加,为了降低cost,减少延迟,提出了一些方法。
CDN

传统的CDN将视频传输网络体系结构分为三层,Sources, Reflectors, Edges, AS/Clients.
Sources: import vedios to system
Reflectors: forward contents internally
Edge clusters: directly serve end-users
每个node之间link有不同的cost。
client获取vedio的过程:
1、 client先通过DNS和edge取得联系,发送request。联系方式:地理位置、load等
2、 edge clusters 通过DNS找到reflectors
3、 reflectors通过DNS找到sources。
4、 沿着相反的路径返回数据
如果有相同的request汇聚在某一个cluster,会做聚合。
(问题:都是靠DNS,这是CDN吗?)
存在的问题:
作者认为client和Edge通过DNS获取联系是可以的,因为大多数视频内容是和网站挂钩。但是内部clusters和upstream clusters之间通过DNS来map就不是很好。原因如下:
1)、 CDN不能主动将内容push给下行clusters。
2)、 为了减少DNS的load,CDN会将不同stream的DNS聚合以减少粒度,如果用DNS来map,准确性不高
3)、CDN往往使用启发式的map方式
DNS TLL——域名生存时间
也就是域名解析记录缓存时间,对于不同类型的内容,其DNS TLL应设置不同。
启发式map算法
CDNmap end-user和edge clusters是通过地理位置,load,是否这个cluster曾经接收过和这个request相类似的请求。同样地,在edge clusters和reflectors之间也可以利用地理位置、vedio trace之类的来map。
作者在CDN的基础之上做了一些优化,提出了VDN。
VDN
Hybrid contol
Centralized system:
有一个全局的network overview.易于实现和控制,服务质量高,但是用户每次获取内容都得和这个central联系,这个join time比较长。
Distributed system:
用户和cluster连接,这个响应时间就会比较短,而且有利于fast failure recovery。但是由于链路增加,对于服务质量不能保证,而且cost也不能很好控制因为缺乏全局调控。
所以作者采取了Hybrid control。
先大致说一下用户获取vedio的流程:
Client a想获取vedio v,速度是 b (bps)。
1、 a这个request先发送到DNS server, 这个server便会回复a让a连到附近的edge cluster。
2、如果这个cluster知道(v,b)的路径,那OK。如果不知道那就运行distributed control algorithm。
3、 reflectors和edge cluster进行同样的操作联系到source.
4、 centralized control 更新每个cluster的转发表。
Design

增加了两块部件Central Controller和 Local Agent. 每个部件都由control和discovery部分构成。control部分用来计算路径。 discovery用来track requests和拓扑结构相关信息。
控制机制分为两个loop
Central control loop
- Local discovery measures link information and tracks AS- and cluster-level channel viewership.
- Global discovery collects measurements from each cluster and builds a global network view.
- Global control computes optimal distribution trees.
- Local control merges local state with the global decision and updates the forwarding table.
- Global control updates DNS.
Distributed control loop:
- Local discovery measures link information and tracks AS- and cluster-level channel viewership.
- Local control merges local state with the global decision and updates the forwarding table.
Central loop可以看到所有的clusters,以及所有link等,建立distribution tree。
Distributed loop 可以看到local links和一个cluster的所有vedio requests。Local agent会综合整理central control的信息,确定forwarding路径。
Hybrid control
- Central control
基于一个global view of the network,通过某个优化算法(后面会讲)产生一个路由信息表RIB,这个RIB会发给每一个local agent。RIB除了各种distribution tree之外还会有每个cluster的前一跳后一跳之类的。
每个local agent根据自己的distributed control更新RIB表形成FIB。
如何形成distrbution tree——Centroalized optimization

大致是一个求最小费用流问题
对于每个vedio有很多channel V={v1,v2…},每个channel有若干个bitrate B= {b1,b2…}
我们的系统把每一个V× B中的item看作是一个独立的object,每一个vedio就会有一个object集合
O= {o1,o2,…},每一个o都有一个优先级Priorityo>0,是提前设置好的。
每一个client到vedio会有很多link L={l1,l2,…}
- Ditributed control
Distributed control 保有track of viewership and path information of upstream neiborhors.
主要是为了能在短时间内针对link的变化做出调整。
clusters之间对于每个(v,b)维护一个d(v,b),d(v,b)是指该cluster到一个知道(v,b)路径的cluster的距离。另外不同link有不同的距离d和瓶颈容量c。对于每个cluster都维护一张类似距离矢量算法中的(d,c)表。例如:

Distributed control algorithm:
Input: request for channel v, bitrate b
Output: next-hop cluster for channel v, bitrate b
/* randomly pick a parent that has a
min-hop path to (v; b) with enough
capacity to support delivery */
useful :=∅ ;
for parent in parents do
if d(v; b)via parent == min(d(v; b)) and
c(v; b)via parent > b then
useful = useful ∪{ parent }
end
end
return pick at random(useful)
这篇文章在CDN上提出了一个新的live video机制VDN,主要贡献是
1、 centalized algorithm即在知道全局网络结构的一个最小费用流算法
2、 综合了集中式和分布式的控制,整体集中,局部分配。
总结:找到已有方法的优缺点所在,合理综合运用也可以很好地提高性能。