【摘要】 本发明公开了一种实现零拷贝发送流媒体数据的方法及系统,基于Linux的网络协议栈,其方法包括:在流媒体服务器接收到用户设备的数据请求时,进行发送数据的系统调用,将流媒体数据从磁盘空间读入用户数据缓存中;将用户数据缓存中存放的流媒体数据打包成实时传输协议数据包,对该实时传输协议数据包采用头部和载荷分离的流媒体数据包的发送。本发明方法及系统由于充分利用了网卡的DMA功能和SG(Scatter/Gather,分散/汇聚)功能,实现零拷贝发送流媒体数据的方式,与Linux内核现有的网络协议栈相比,实现了头部和载荷分离的流媒体数据包的发送,减少了将流媒体数据进行RTP打包过程中所需的一次数据拷贝操作。 【专利类型】发明授权 【申请人】中兴通讯股份有限公司 【申请人类型】企业 【申请人地址】518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部 【申请人地区】中国 【申请人城市】深圳市 【申请人区县】南山区 【申请号】CN200810142292.7 【申请日】2008-08-04 【申请年份】2008 【公开公告号】CN101340574B 【公开公告日】2010-09-08 【公开公告年份】2010 【授权公告号】CN101340574B 【授权公告日】2010-09-08 【授权公告年份】2010.0 【IPC分类号】H04N7/24; H04N7/173; H04L29/08 【发明人】王魏强; 朱红军; 程剑 【主权项内容】一种实现零拷贝发送流媒体数据的方法,基于Linux的网络协议栈,其包括以下步骤:A、在流媒体服务器接收到用户设备的数据请求时,进行发送数据的系统调用,将流媒体数据从磁盘空间读入用户数据缓存中;B、将用户数据缓存中存放的流媒体数据打包成实时传输协议数据包;在内核空间为每一个待发送的实时传输协议数据包分配内核缓冲结构,该结构的数据由两部分组成:一部分是临时分配的内核缓冲区,包含所述实时传输协议数据包的头部;另一部分是临时映射的用户缓冲区,包含所述实时传输协议数据包的载荷;利用网卡的分散/汇聚功能和直接内存访问功能,分别将这两部分内核缓冲结构映射到网卡的发送缓冲区,调用网卡驱动模块的发送函数完成流媒体数据的零拷贝发送。 【当前权利人】中兴通讯股份有限公司 【当前专利权人地址】广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部 【专利权人类型】上市股份有限公司 【统一社会信用代码】9144030027939873X7 【被引证次数】2 【被他引次数】2.0 【家族被引证次数】55