一种平滑ip媒体流突发帧率的方法

文档序号:7962725阅读:198来源:国知局
专利名称:一种平滑ip媒体流突发帧率的方法
技术领域
本发明涉及IP网络流媒体服务质量的保障,特别涉及在分时多任务操作系统下, 对路由器的网卡在IP路由任务过程中可能出现的间歇突发性的帧率进行平滑的方法。
背景技术
在当今流媒体服务日益成为IP网络增值业务重心的形势下,增强流媒体服务质 量成为该业务能否正常运营的关键所在,因此服务的质量(QOS, Quality Of Service) 是下一代互联网建设中需要考虑的核心问题之一。对于流式传输媒体而言,其质量 主要通过带宽、抖动、时延和分组丢失率来衡量。同一业务流中不同分组所呈现的 时延不同称为时延变化,高频率的时延变化即称为抖动。抖动如果限制在一定范围 内,不会对业务质量造成影响,但当抖动现象较为严重时则可能引起图像停顿、声 音断续等问题。典型的IP报文路由处理过程是当一个流媒体IP报文到达路由器的一个网卡 时,首先由网卡控制芯片从链路上接收该帧至网卡物理缓存,而后网卡通过中断通 知操作系统,操作系统在中断处理中进行DMA控制,DMA过程完成IP报文从网 卡缓存至系统内存的拷贝过程。该过程完成后将再次发出中断,通知操作系统己收 到一个IP报文,以便操作系统作进一步处理。操作系统通过将该IP报文与路由规 则集相比较,若匹配某一条规则,该报文将按照规则指定的方向被送往另一块网卡, 即通过DMA将该帧从系统内存传送至网卡物理缓存,然后在网卡芯片的控制下将 该帧传送到物理链路上从而完成路由过程。由上可以看出,在理想情况下,输出的码率将与输入的码率在宏观时间和微观 时间尺度上都将保持一致。但由于该路由过程中,IP报文在系统内存中的操作需要 由系统CPU进行处理,而对于一个分时多任务系统(常见的如windows, linux均 不是实时操作系统)而言,当网卡上的流量比较大并且系统中同时运行多个任务时, 系统并不能保证每次的路由过程都能够及时地得到响应,这将会导致流式IP包在系 统缓存中堆积。 一旦路由任务获得CPU时间片,在该时间片内将会对堆积的多个 IP报文进行转发,在较短时间内以网卡的最大码率发送多个IP报文,直至系统缓 存中堆积的IP报文均被处理为止。在微观上,该过程会导致包输入速率为匀速的码 流在路由输出后成为间歇有一个较大峰值速率(类似于毛刺)的非匀速码流,从而 降低了码流的质量。当该现象较为严重时,其主要不良影响有当下级路由器遇到 多个上级路由器的峰值同时出现时,可能会导致下级路由器丢包的行为发生当接 收端为性能较低的嵌入式终端时,以网卡的全速率发送也会导致终端因不及处理而 导致的丢包现象。此二种现象都会对流媒体的播放质量造成严重影响,从而导致画 面停顿等现象的发生。发明内容本发明的目的在于克服分时多任务系统作为流媒体的路由传输设备时,由于操 作系统的多任务分时性导致帧输出速率在微观上出现大的波动,影响流媒体服务质 量的缺陷,从而提供一种平滑流媒体帧输出速率的方法。为了实现上述目的,本发明提供了一种平滑IP媒体流突发帧率的方法,包含以 下歩骤1)、从计算机的系统内存中取出一IP媒体帧,准备发送;2 )、计算当前帧的预计发送时间与上 一帧的实际发送时间的时间间隔,将计算 得到的发送时间间隔与用户设定的两帧间最小时间间隔进行比较,若发送时间间隔 大于或等于两帧间最小时间间隔,则当前帧的帧发送速率没有超出限制,执行歩骤 4 ),若发送时间间隔小于两帧间最小时间间隔,则当前帧的帧发送速率超出限制, 执行下一步3) 、将当前帧送入发送缓存队列的尾部延迟发送,跳转到步骤8);4) 、判断发送缓存队列是否为空,若该队列不为空,则执行下一歩,否则,执 行步骤7);5) 、在发送缓存队列中有历史遗留帧,将当前帧送入发送缓存队列的尾部;6) 、在每个CPU时间片,从发送缓存队列的队列头中取出M个帧发送到物理链路上,然后跳转到步骤8);7) 、将当前帧直接发送到物理链路上,然后执行下一步; 8)、通知系统当前帧己被处理,退出处理过程。上述技术方案中,在所述的步骤2)中,所述的当前帧的预计发送时间为发送 当前帧前的时间。 —上述技术方案中,在所述的步骤6)中,所述的M是一个用户设定的正整数, 可根据需要调整大小,以适应不同的帧率限制需求。本发明的优点在于1、 本发明不仅可以将因分时多任务系统流媒体路由器本身原因引起的突发帧速 率限制在指定的速率之下,而且对上级路由器输入的媒体流中己有的突发帧率也有 同样的平滑作用。2、 本发明对系统资源的占用率极低,可保证不会因引入平滑机制而导致系统负 载能力的大幅降低,从而使得平滑过程对整个系统的运行无任何显著的不良影响。


图1为本发明的平滑IP媒体流突发帧率的方法的流程图; 图2为在一个实施例中平滑前的帧率图; 图3为一个实施例中平滑后的帧率图。
具体实施方式
下面结合附图和具体实施方式
对本发明的方法做进一歩的说明。 在背景技术中对现有的IP报文的路由处理过程进行了描述,本发明的平滑IP 媒体流突发帧率的方法,应用在上面所描述的"用DMA方式发送IP报文至网卡物 理缓存"之前的一种方法。本实施例的平滑IP媒体流突发帧率的方法,具体包含以下步骤步骤l、从计算机的系统内存中取出一IP媒体帧,准备发送。例如, 一视频帧。步骤2、计算当前帧的预计发送时间Tl与上一帧的实际发送时间T2的时间间 隔Td,将该时间间隔与用户设定的两帧间最小时间间隔Tmin进行比较,若发送时 间间隔大于或等于两帧间最小时间间隔,则当前帧的发送不会使帧速率超限,执行 步骤5,若发送时间间隔小于两帧间最小时间间隔,则表明此时若发送当前帧,则 会使帧速率超限,执行下一步;其中,所述的预计发送时间T1用发送当前帧前的时 间来替代。在本歩骤中,所要实现的是帧速率超限的判定。由于流媒体通常具有较为平稳
变化甚至恒定不变的帧速率,因此,在现有技术中为计算某一点的瞬时帧速率,通 常可用该帧前单位时间间隔内已发送的帧数除以单位时间的方法,以前向帧平均速 -率估算该点的瞬时帧速率。但当遇到帧速率快速变化情况时产生两个问题A、 "前向"特点导致该值对帧速率超限的判断滞后,导致判断出帧速率超限时, 己经以超限的帧速率发送出去了若干个包;B、 "平均"特点使得帧速率曲线中的高频分量缺失,导致当真实帧速率曲线出 现超限的"毛刺"时,计算出的值却在帧速率限定范围内,从而无法检测出该超限 现象。基于现有技术在判定帧速率超限时存在上述的缺陷,本发明采用了上述的计算 相邻两帧间的时间间隔的方法来检测帧发送速率的超限现象。例如,假定用户设定的两帧间最小时间间隔Tmin为5ms,而当甜帧与上一帧的 时间间隔为7ms ,则当前帧在发送时没有超限,若当W帧与上一帧的时间间隔为3ms , 则当前帧的帧发送速率过快,超出了限制。步骤3、将当前帧送入发送缓存队列的尾部延迟发送;歩骤4、通知系统当前帧已被处理,退出处理过程。如前所述,本发明的方法是在操作系统要将IP包通过DMA方式送往网卡物理缓 存之前,相当于在系统的IP包处理流程中插了一步,将IP包截获并进行本算法所 描述的处理。在一般的流程中,IP包由系统发送,但在本发明方法中,对IP包有 一个发送操作,因此,无论是步骤3中对IP帧做缓存操作,还是在后续步骤中对 IP帧做直接发送处理,都要通知操作系统当前帧己处理(消费)完成,不需要操 作系统再发送一次,避免同一个帧被发送两次。本步骤可通过一个在操作系统上注 册的钩子函数实现IP帧的截获,然后由钩子函数向操作系统返回drop值通知操作 系统丢弃当前帧,避免对帧的重复发送。步骤5、判断待发送缓存队列是否为空,若该队列不为空,则执行下一歩,否 则,执行步骤9。步骤6、在发送缓存队列中有历史遗留帧,将当前帧送入发送缓存队列的尾端; 步骤7、在每个CPU时间片,从发送缓存队列的队列头中取出M个帧发送到物 理链路上;在本实施例中,所述的M可以取2。步骤8、通知系统当前帧己被处理,退出处理过程。 步骤9、将当前帧直接发送到物理链路上。步骤IO、通知系统当前帧已被处理,退出处理过程。从上述的步骤5开始是对帧的缓存与延时发送的操作,在现有技术中,对帧做 延时发送通常有以下方法a) 、在内核线程中采用阻塞的做法延时一段时间;b) 、采用timer定时器触发;c) 、采用空循环的方法来模拟一段时间延迟。但上诉三种方法均不适用于本应用场合。方案a无法应用于中断环境,而即使 在非中断环境下,由于典型的时间间隔的值Td在1毫秒量级,需要延时的时间往往 在几百甚至几十个微秒内,而阻塞过程的时间控制精度无法达到该要求,因此无法 适用。方案b也存在精度不够的问题,另外多个定时器的引入也导致结构复杂。方 案c的实现结构简单,也可以通过空循环的次数精确控制延时,但若要实现相同的 延时,所需的空循环次数与宿主系统计算能力相关,不适合推广,另外系统的空循 环是采用穷尽消耗CPU计算能力的方式实现延时,对系统资源的消耗过大。因此,在本发明的方法中通过创建缓存队列实现对帧的延时发送。本发明的方法增加的计算负载主要有两方面 一为对每一帧都需要进行时间比较操作,每帧增加了一次获取时间的函数调用,增加了一次计算Td和比较Td,Tmin 的操作。而在存储资源上需要增加3个时间变量T1、 T2、 Tmin。 二为对偶尔的超速 帧需要进行的入、出队列操作,在存储资源上增加了一个缓冲队列。理论上讲,该 队列大小取决于输入与限额输出速率的差,以及速度超限时间的长度,队列容量的 精确计算应是一个速度差对时间的积分,若采取简易计算,假设最大输入速率为RM, 系统支持的最大超速时间为TM,则需保证队列大小为TM*RM,对于千兆网,若系统 性能要求可以平滑长度为0. 3秒的超速流量,则队列大小需要 0. 3s*1000Mbps/8=37. 5Mbyte。通过上述说明可知,本发明的方法对系统总负载的增加极小,但却可以成功地 将任意大的峰值帧输出速率降低到"Mx阈值帧速"以下(其中,阈值帧速通过设置 Tmin的值进行控制),达到了平滑帧率的效果。图2和图3分别是帧输出速率在平滑前后的效果图,图2是平滑前的帧率图, 在该图中的6. 450s附近有明显一个明显的毛刺,帧速率峰值远远高于帧速率的平均 值。图3是平滑后的帧率图,平滑后的帧输出帧率与平滑前相比,不再有明显的毛 刺,并且帧速率峰值被限制在平均值的两倍以下。
权利要求
1、一种平滑IP媒体流突发帧率的方法,包含以下步骤1)、从计算机的系统内存中取出一IP媒体帧,准备发送;2)、计算当前帧的预计发送时间与上一帧的实际发送时间的时间间隔,将发送时间间隔与用户设定的两帧间最小时间间隔进行比较,若发送时间间隔大于或等于两帧间最小时间间隔,则当前帧的帧发送速率没有超出限制,执行步骤4),若发送时间间隔小于两帧间最小时间间隔,则当前帧的帧发送速率超出限制,执行下一步;3)、将当前帧送入发送缓存队列的尾部延迟发送,跳转到步骤8);4)、判断发送缓存队列是否为空,若该队列为空,执行步骤7),否则,执行下一步;5)、在发送缓存队列中有历史遗留帧,将当前帧送入发送缓存队列的尾部;6)、在每个CPU时间片,从发送缓存队列的队列头中取出M个帧发送到物理链路上,然后跳转到步骤8);7)、将当前帧直接发送到物理链路上,然后执行下一步;8)、通知系统当前帧已被处理,退出处理过程。
2、 根据权利要求1所述的平滑IP媒体流突发帧率的方法,其特征在于,在所 述的步骤2)中,所述的当前帧的预计发送时间为发送当前帧前的时间。
3、 根据权利要求1所述的平滑IP媒体流突发帧率的方法,其特征在于,在所 述的歩骤6)中,所述的M是一个用户设定的正整数,可根据需要调整大小,以适 应不同的帧率限制需求。
全文摘要
本发明公开了一种平滑IP媒体流突发帧率的方法,包括从计算机的系统内存中取出一帧,准备发送;计算当前帧的预计发送时间与上一帧的实际发送时间的时间间隔,将发送时间间隔与用户设定的两帧间最小时间间隔进行比较,根据比较的结果判断帧率是否超限;若帧率超限,将当前帧送入发送缓存队列的尾部延迟发送;若帧率不超限,将当前帧送入发送缓存队列中或直接发送到物理链路上。本发明不仅可以将因分时多任务系统流媒体路由器本身原因引起的突发帧速率限制在指定的速率之下,而且对上级路由器输入的媒体流中已有的突发帧率也有同样的平滑作用;系统资源的占用率极低,从而使得平滑过程对整个系统的运行无任何显著的不良影响。
文档编号H04L12/56GK101119175SQ20061008905
公开日2008年2月6日 申请日期2006年8月1日 优先权日2006年8月1日
发明者单明辉, 君 陈, 陈国平 申请人:中国科学院声学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1