[发明专利]一种媒体服务器及实现准实时发送媒体数据的方法有效
申请号: | 200810241596.9 | 申请日: | 2008-12-26 |
公开(公告)号: | CN101465854A | 公开(公告)日: | 2009-06-24 |
发明(设计)人: | 王魏强;丁向军;夏洪升 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;G06F9/48 |
代理公司: | 深圳市永杰专利商标事务所 | 代理人: | 曹建军 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 媒体 服务器 实现 实时 发送 数据 方法 | ||
技术领域
本发明属于计算机应用领域,具体涉及一种媒体服务器及一种实现准实时发 送媒体数据的方法。
背景技术
现有技术中,在基于Linux操作系统的媒体服务器应用中,需要定时的将媒 体数据从服务器主机发送到网络上。定时发送机制的性能将直接关系到媒体服务 的质量,关系到用户对媒体服务业务的满意程度。
现有技术中,用户进程实现定时发送媒体数据包的方法主要包括以下两种: (1)延时方式;(2)定时器方式;
延时方式一般使用select或者nanosleep系统调用实现,当指定的延时结 束之后调用返回给用户进程,用户进程继而可以进行媒体数据包的发送。
定时器方式一般使用setitimer系统调用实现,在指定的一段时间到了之 后,通过信号的方式通知用户进程,在信号处理程序中完成媒体数据包的发送。
在现有技术的方式下,当延时系统调用或者定时器系统调用返回时,用户发 包进程需要从内核态切换到用户态,期间将会进行系统调度。一方面由于Linux 是一个多任务而非实时操作系统,延时系统调用或者定时器系统调用与生俱来就 具有不精确性,这使得在用户空间中执行的进程不能精确的控制时间;另一方面 系统调度过程中可能也会有更高优先级的进程/线程抢占CPU,在执行中的进程 随时会因为各种原因被抢占运行。这都将导致时延的产生,少则几个毫秒,系统 负载较重时可能达到几秒以上,这点延迟时间虽然对于一般的应用程序而言实际 算不了什么,但对于实时应用的媒体数据发送来说,却会导致服务质量的大幅下 降。
用户发包进程使用发包系统调用发送媒体数据包,需要从用户态切换到内核 态,在内核态完成数据包的组织之后,才能调用网卡驱动程序的发送接口将数据 包发送出去。数据包组织的时间虽然很短,但是也将会对发包产生一些时延。
在媒体服务器负荷较重的情况下,从用户态切换到内核态,以及从内核态切 换到用户态,再加上需要系统调度到相应的用户发包进程/线程,将会产生不稳 定的延时从而引发媒体流的抖动,这对实时的媒体应用需求来说,将会极大的影 响服务的质量。
由此可见,在媒体数据包的定时发送过程中,时延的不确定性主要产生在工 作空间切换、数据包组织和系统调度上。如何有效地控制时延的产生,减少发包 的抖动,对于提升媒体服务器的服务质量,具有非常重要的影响。
发明内容
本发明所要解决的技术问题是,提供一种媒体服务器,并提供一种实现准实 时发送媒体数据的方法,本发明基于Linux的网络协议栈,在不影响Linux系统 原有网络协议栈的情况下,尽量控制时延的产生,减少发包的抖动。
一种媒体服务器,所述媒体服务器包括设备模块、Linux内核模块和用户进 程模块,所述用户进程模块用于承载用户进程,
所述设备模块包括网卡和带中断功能的定时器,所述网卡用于驱动发包系统 调用接口发送数据包;所述定时器用于定时并在定时时间到后产生中断;
所述Linux内核模块位于所述设备模块与用户进程模块之间;包括网络协议 栈模块、网卡驱动模块以及中断处理模块,所述网络协议栈模块基于AF_REALTIME 套接字类型,用于为用户进程提供AF_REALTIME类型的套接字编程接口;所述网 卡驱动模块用于驱动网卡;所述中断处理模块用于登记发包处理函数和待发送的 数据包并在所述定时器产生中断时调用所述发包处理函数发送所述待发送数据 包;
其中,AF_REALTIME套接字实现准实时功能的步骤具体包括:
设置发包系统调用的计划发包时间以及组装待发送的媒体数据,得到待发送 数据包;
根据所述计划发包时间计算中断定时时长,并将所述发包系统调用的发包处 理函数和待发送数据包登记到中断处理程序中,等待中断,同时将所述发包系统 调用加入到内核等待队列中;
中断定时到期后产生中断,触发所述中断处理程序完成待发送数据包的发 送,发送完成后唤醒所述内核等待队列中对应的发包系统调用。
所述网络协议栈模块可提供的套接字编程接口包括创建套接字(socket)系 统调用、发包(sendmsg)系统调用,其中socket系统调用用于创建套接字; sendmsg系统调用用于采用硬件定时中断准实时发送数据包,其定义为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810241596.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:认证业务切换处理方法与装置、网络设备与通信系统
- 下一篇:一种资源配置方法