发明名称 CDN预先主动选择优质节点开展优化内容分发服务的方法
摘要 本发明属于网络多媒体技术领域,具体为一种CDN预先主动选择优质节点开展优化内容分发服务的方法。本发明在覆盖网中加入了一个放大层;CDN服务器通过从对等节点得到的信息选择一定数量优质的节点作为放大层节点;在系统性能不好或服务能力有限的时候,CDN直接优先服务这些节点而不是盲目地服务普通节点,这些优质节点再继续服务普通节点,从而把流媒体数据进行更高效的传播。通过这种方式,CDN可以和P2P、VOD等系统进行更高效的合作。本发明经试用,运行稳定,结果表明,本发明与现有传统的CDN-P2P混合架构相比,性能至少提高了10-25%,实验比较指标包括启动延时、播放质量以及播放延时。
申请公布号 CN102984279B 申请公布日期 2016.03.30
申请号 CN201210549447.5 申请日期 2012.12.17
申请人 复旦大学 发明人 吕智慧;吴杰;黄翼
分类号 H04L29/08(2006.01)I;H04L29/06(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 上海正旦专利代理有限公司 31200 代理人 陆飞;盛志范
主权项 一种CDN预先主动选择优质节点开展优化内容分发服务的方法,其特征在于具体步骤为:第一步: 定义和构建中介放大层把一个边缘CDN服务器节点以及它所领导的一批对等节点看作是一个自治服务区域,把整个系统分为多个不同的自治服务区域,每个自治服务区域有一个CDN服务器节点;在每个自治服务区域内部,CDN服务器节点通过从其所管理的对等节点获得的信息来决定系统的问题和瓶颈,从而选出需要媒体内容数据并能力强的节点进入中介放大层,并为之提供服务;CDN服务器节点使用轻量级的方法收集对等节点的统计信息;每个对等节点不需要定期向其自治服务区域的CDN服务器节点汇报所有自己的信息,只要在向CDN服务器节点请求紧急数据块的情况下汇报这些信息;每个汇报信息中都必须包括节点ID和时间戳;对于请求紧急数据块的对等节点来说,提供:(1)请求块列表,(2)筛选后的邻居节点列表;如果一个节点被选为中介放大层节点而接受CDN服务器节点的服务,它提供的信息有:(1)播放缓冲区情况,(2)播放点;当CDN服务器节点决定是否继续服务一个中介放大层节点时,CDN服务器节点让该中介放大层节点提供:(1)流量上传速度,(2)播放缓冲区情况,(3)上传带宽使用率,(4)播放点;<b> (1) </b><b>建立中介放大层节点的基本架构</b>是从原有的P2P网状结构中选拔节点形成一个中介放大层,即有若干节点直接从CDN服务器节点获取数据,获取数据的方式采用的是CDN服务器节点直接Push模式;假设CDN服务器节点允许直接服务N个节点,会有N个节点与CDN服务器节点做邻居节点,其它节点均不能与CDN服务器节点做邻居节点;<b>(2) </b><b>中介放大层的初始建立机制</b>在一个流媒体视频服务开始阶段,CDN服务器节点为该流媒体视频服务开放N个直连通道,但没有节点与其连接,之后随着对等节点的陆续加入,CDN服务器节点开放的N个直连通道会被使用;所谓中介放大层的含义是,中介放大层节点的上传带宽必须大于支持播放的最小码流;设观看所需的最小码流大小为a,中介放大层节点的最小上传带宽为b,则必须满足条件a&lt;b,这样在它服务其他普通节点时才能起到放大传播的作用;设StreamingRate是流媒体直播中正常观看所需要的码流大小,N为中介放大层节点的个数,则服务器在中介放大层中所消耗的流量总和为:U<sub>direct</sub>=StreamingRate * N            (公式1)设<img file="296067dest_path_image002.GIF" wi="48" he="26" />为中介放大层节点i,<img file="583261dest_path_image003.GIF" wi="60" he="21" />,的上传带宽,则中介放大层节点在上传带宽充分利用的情况下提供的流量是:<img file="267806dest_path_image004.GIF" wi="295" he="72" />(公式2)显然有<img file="930389dest_path_image005.GIF" wi="221" he="34" />;<b>第二步</b><b>: </b><b>选择和确定进入中介放大层的中介放大层节点</b>每个向CDN服务器节点请求紧急数据块即快要播放的数据块的消息中,同时附上CDN服务器节点本身的一些信息,这些信息如第一步所述;CDN服务器节点通过定期统计分析这些信息,找到进入中介放大层的中介放大层节点并对其予以帮助,来提高整体CDN网络的分发效率和系统总体性能;在系统中,节点向CDN服务器节点请求紧急数据块,做法是节点向CDN服务器节点发送块请求包,请求包内包括该节点所要请求的块和该节点的邻居节点中能力比较强的邻居节点ID,这里,所谓能力比较强的邻居节点指的是邻居节点中上传带宽处在前50%的节点,请求包格式如下:<img file="426924dest_path_image007.GIF" wi="432" he="64" />每隔一段时间,CDN服务器节点对收集到的数据进行分析,统计每个请求节点的邻居节点列表中的节点出现次数,并从中找出出现次数最多的若干个节点作为中介放大层节点;最终CDN服务器节点选出k个节点作为中介放大层节点,k的计算方法如下:<img file="212084dest_path_image008.GIF" wi="485" he="59" />(公式3)<img file="570517dest_path_image009.GIF" wi="327" he="84" />(公式4)在公式中,α是常数,分子是CDN服务器节点的剩余带宽乘以β,STRM_RATE*α是对CDN服务器节点服务一个瓶颈节点每秒所需流量的期望值,<img file="854868dest_path_image010.GIF" wi="224" he="59" />是预估CDN服务器节点剩下的流量最多能服务多少个中介放大层节点;其中<img file="267394dest_path_image011.GIF" wi="126" he="29" />是在流媒体服务开启后这一时间段内向CDN服务器节点发出请求的对等节点个数,<img file="295393dest_path_image012.GIF" wi="188" he="28" />是该CDN服务器节点所管的对等节点总数;<b>β</b>是一个范围在(0,1)的调节控制系数,计算方法如公式4所示;<b>STRM_RATE</b> 是当前系统中流媒体的服务码流速率;<b>U<sub>CDN </sub></b>是CDN服务器节点可以服务的最大带宽流量;<b>U<sub>outgoing_rate </sub></b>是该CDN服务器节点目前已经对外服务的带宽流量;第三步:给中介放大层节点直接提供内容分发服务当CDN服务器节点从统计信息中找出k个中介放大层节点,同时向这些节点发送服务启动消息,这些中介放大层节点在收到服务启动消息后,返回自己的BufferMap给CDN服务器节点,CDN服务器节点根据每个节点的BufferMap情况进行相应的服务;CDN服务器节点服务中介放大层节点采用推送的方式,推送区域是对等节点缓存区中的整个普通区,选择该区域为服务对象的主要原因是为了降低冗余块的个数,即节点自身拉到的块与CDN服务器节点推来的块相互重叠;因此CDN服务器节点首先查看中介放大层节点的缓冲区,找出在该缓冲区内的所有缺失块,并以一定码流大小将其推送至对等节点;CDN服务器节点根据如下公式决定在多少时间内把所有数据全部推送给对等节点:<img file="31969dest_path_image013.GIF" wi="396" he="49" />(公式5)<img file="626976dest_path_image014.GIF" wi="157" he="42" />(公式4‑8)<img file="526799dest_path_image015.GIF" wi="348" he="62" />(公式6)NUM<sub>lack</sub>指的是该推送区域内缺失块的个数,Tfast是把这些缺失块以播放码流的速度送出时所需要的时间,Tslow是把这些缺失块以播放码流速度的一半输出所需要的时间;NUM<sub>req_nbr</sub>表示该节点有多少邻居节点向CDN服务器节点请求紧急数据块,NUM<sub>max_nbr</sub>表示每个节点的最大邻居节点数,最终的时间T介于T<sub>fast</sub>和T<sub>slow</sub>两个值之间,相应的传输速度介于播放码流的一半和播放码流之间;<b>STRM_PACK_SIZE</b>是CDN服务器节点每次推送给对等节点的数据块的尺寸大小;<b>第四步</b><b>: </b><b>判断对中介放大层节点的服务是否延续</b>当CDN服务器节点服务了一个中介放大层节点一段时间T后,根据该中介放大层节点的表现决定是否继续服务该中介放大层节点,判断是否继续服务的公式如下:<img file="647902dest_path_image017.GIF" wi="604" he="75" />(公式7)其中,<img file="452698dest_path_image018.GIF" wi="174" he="37" />表示时刻t时,中介放大层节点的上传速度大小,<img file="dest_path_image019.GIF" wi="383" he="53" />表示从CDN服务器节点开始到现在,该中介放大层节点上传的流量总数,U<sub>average</sub>表示服务期间瓶颈节点的平均上传流量;U<sub>outgoing_rate</sub>(start_service)表示被服务前中介放大层节点的上传速度;满足以上不等式,CDN服务器节点即可继续服务该对等节点;继续服务的缓冲区区间不变,CDN服务器节点会根据如下公式决定在多少时间内把所有数据全部推送给对等节点:<img file="570185dest_path_image020.GIF" wi="425" he="57" />(公式8)T<sub>fast</sub>和T<sub>slow</sub>的意义与上节相同,Upload<sub>peer</sub>表示中介放大层节点的上传带宽;<b>T<sub>current_time</sub></b>是指当前时间;<b>T<sub>start_service</sub></b>是指CDN服务器节点服务中介放大层节点的开始时刻;<b>U<sub>Current</sub></b>是指中介放大层节点当前的上传速率;<b>第五步</b><b>: </b><b>中介放大层节点的更换</b>每个中介放大层节点需要不断更新和替换,每隔一段时间,每个中介放大层节点对自己的邻居节点进行一次扫描,找出那些能力即上传带宽比自己强,且当前不是中介放大层节点的邻居节点;找到以后,该中介放大层节点利用一定策略,把该邻居节点置换到中介放大层,而自己重新变为普通节点从中介放大层退出;每个节点定时触发一次该算法,只有中介放大层节点才执行该算法流程;在找出的优质邻居节点符合交换条件的时候,首先判断该邻居节点的邻居数是否达到了上限,如果没有,只让该邻居节点与CDN服务器节点建立连接,本节点与CDN服务器节点断开连接,这样该邻居节点的邻居数增加一;否则,解除本节点与该邻居节点的邻居关系,用以腾出该邻居节点的可用邻居节点连接让给CDN服务器节点;当一个中介放大层节点离开系统时,它选出自己最强的邻居节点来替换自己,以保证中介放大层节点的扩展性和稳定性;<b>第六步</b><b>: </b><b>定时监控中介放大层节点</b>为了避免中介放大层节点在找邻居节点时会与同样在中介放大层的其他中介放大层节点建立邻居关系,我们需要定时监控中介放大层节点的算法,对于节点来说也是间隔一段时间执行一次,即首先判断自己是不是中介放大层节点,不是的话直接退出操作;否则,检查自己所有的邻居节点,如果发现没有一个邻居节点是中介放大层节点的话就退出,否则将解除自己与该节点的邻居关系,由于解除邻居关系后本节点的邻居节点个数减少,因此要重新执行邻居节点查找算法对自己的邻居节点数进行补充;<b>第七步</b><b>: </b><b>动态调整中介放大层节点的数量</b>在一段时间内有大量节点陆陆续续的加入时,需要增加中介放大层节点数目来提高系统的服务质量;具体是通过利用CDN服务器节点在运行时收集到的信息来动态调整中介放大层节点数量,该动态调整算法如下:其中,用node_num 表示中介放大层中允许的最大节点数量,urgent_outgoing表示CDN服务器节点用于服务对等节点紧急请求的平均上传流量, direct_outgoing表示服务中介放大层的平均上传流量,这两个平均上传流量定时统计一次;该算法的公式表示如下,<img file="dest_path_image021.GIF" wi="486" he="112" />(公式9)其中θ是1.3,λ是1.2。
地址 200433 上海市杨浦区邯郸路220号