一种基于网络驱动层的流媒体数据分发系统的制作方法

文档序号:10473683
一种基于网络驱动层的流媒体数据分发系统的制作方法
【专利摘要】本发明公开了一种基于网络驱动层的流媒体数据分发系统,其包括有应用管理模块、指令发送模块、指令接收模块和数据分发模块,所述应用管理模块用于与外部应用交互,将外部需求解析后通过调用指令发送模块将动作需求传送到系统内核;所述指令发送模块预设有配置接口供应用管理模块调用;所述指令接收模块初始化时将指令接收函数挂接到系统的网络指令链表中;所述数据分发模块初始化时将数据包处理函数挂接到系统的网络NAT接口,以令系统接收到网络数据时调用该函数,并根据指令接收模块设置的分发表来进行数据分发。本发明具有转发效率高、转发延时小、对服务器性能要求低、适合小型化、能够在互联网上传输、数据安全性强等特点。
【专利说明】
一种基于网络驱动层的流媒体数据分发系统
技术领域
[0001]本发明涉及应用层流媒体分发系统,尤其涉及一种基于网络驱动层的流媒体数据分发系统。
【背景技术】
[0002]目前,主流的流媒体服务器都是基于应用层网络数据转发来实现的,实现技术相对简单,但数据转发效率低、转发延时较大,对服务器性能的要求较高,不利于流媒体技术的推广。
[0003]现有的应用层流媒体网络数据分发过程如图3所示,链路层、网络层和传送层的工作由操作系统完成,并不需要开发,因此开发工作完全在应用层由应用程序完成。网络数据包在整个过程中至少被复制了四次:第一次是链路层的网卡驱动程序从网络传输媒介接收数据时;第二次是传送层复制数据到应用层;第三次是传送层从应用层复制数据到内核层;第四次是链路层复制数据到网卡进行发送。如果是一对多分发则在应用层还要进行复制工作。其中:链路层:接收数据时通过网卡接收从网络传输媒介传送过来的原始网络数据,识别数据帧,并检测错误;发送数据时将网络层传送过来IP数据包进行网络帧封装,并通过网卡发送到网络传输媒介上。网络层:接收数据时负责解析IP数据包,将IP包分解成种网络协议包,并传送到传送层;发送数据时将传送层传过来的网络协议包封装成IP包,并传送到链路层。传送层:接收数据时负责将网络协议包的用户数据部分复制到对应的应用层接收进程;发送数据时将应用层数据封装为网络协议包并传送到网络层。应用层:应用程序根据配置好的分发策略将接收到的UDP数据包进行转发、复制等工作,而要发送的数据包进入传送层进行发送。然而上述应用层流媒体分发过程存在转发效率低、转发延时大、服务器性能要求尚、难以小型化等缺陷。
[0004]现有的UDP组播数据分发过程如图4所示,管理系统需要给每路流媒体数据确定一个唯一的组播IP地址,当流媒体客户端需要接收该路流媒体数据时需要向组播交换机发起数据申请,组播包的分发管理工作由组播交换机完成。因此,这种方式对网络交换机的性能要求比较高;同时,出于网络风暴的考虑,互联网路由器截断了组播包的传发,在互联网上组播包不能正常收发。

【发明内容】

[0005]本发明要解决的技术问题在于,针对现有技术的不足,提供一种转发效率高、转发延时小、对服务器性能要求低、适合小型化、能够在互联网上传输、数据安全性强的流媒体数据分发系统。
[0006]为解决上述技术问题,本发明采用如下技术方案。
[0007]—种基于网络驱动层的流媒体数据分发系统,其包括有应用管理模块、指令发送模块、指令接收模块和数据分发模块,其中:所述应用管理模块用于与外部应用交互,将外部需求解析后通过调用指令发送模块将动作需求传送到系统内核;所述指令发送模块预设有配置接口供应用管理模块调用,所述指令发送模块通过调用setsockopt系统接口与指令接收模块交互;所述指令接收模块初始化时将指令接收函数挂接到系统的网络指令链表中,以令应用层调用setsockopt或getsockopt接口时,指令接收函数能够收到该指令以及对该指令进行处理;所述数据分发模块初始化时将数据包处理函数挂接到系统的网络NAT接口,以令系统接收到网络数据时调用该函数,并根据指令接收模块设置的分发表来进行数据分发。
[0008]优选地,所述应用管理模块针对不同的外部应用,预设有不同的解析模块。
[0009]优选地,所述指令发送模块包括有如下指令:分发模块初始化、分发模块释放、添加摄像头、删除摄像头、添加转发路由、删除转发路由和查询路由。
[0010]优选地,所述指令发送模块在执行过程中,首先建立Socket,之后设置数据调用setsockopt接口,获取数据调用getsockopt接口。
[0011 ]优选地,所述数据分发模块进行数据分发时,首先判断数据包是否从输入网口进入,再判断数据包是否为UDP包,之后计算HASH值以获取源数据对象表,最后根据源数据对象表中的分发列表进行数据分发。
[0012]本发明公开的基于网络驱动层的流媒体数据分发系统,由四个模块组成,即应用管理模块、指令发送模块、指令接收模块和数据分发模块,其中,指令模块通过系统内核的网络接口来交互数据,响应应用管理模块传过来的数据分发和查询等指令,数据分发模块由网络驱动程序实现,依据数据分发策略对相应网络数据进行分发、修改、删除等,网络驱动模块在网络层接管了流媒体数据并直接进行分发,减少了数据从网络层到传送层再到应用层然后再逐层返回的过程,同一个数据包的转发减少了四次传递和两次数据拷贝,将网络数据的转发效率提高了一个数量级。通过以上所述可以看出,本发明不仅实现了流媒体数据的大数据量分发,还具有转发效率高、转发延时小、对服务器性能要求低、适合小型化、能够在互联网上传输、数据安全性强等特点。
【附图说明】
[0013]图1为本发明基于网络驱动层的流媒体数据分发系统的组成框图。
[0014]图2为本发明在网络数据转发过程的流程图。
[0015]图3为现有的应用层流媒体网络数据分发过程的流程图。
[0016]图4为现有的UDP组播数据分发过程的流程图。
【具体实施方式】
[0017]下面结合附图和实施例对本发明作更加详细的描述。
[0018]本发明公开了一种基于网络驱动层的流媒体数据分发系统,如图1所示,其包括有应用管理模块1、指令发送模块2、指令接收模块3和数据分发模块4,其中:
[0019]所述应用管理模块I用于与外部应用交互,将外部需求解析后通过调用指令发送模块2将动作需求传送到系统内核;
[0020]所述指令发送模块2预设有配置接口供应用管理模块I调用,所述指令发送模块2通过调用setsockopt系统接口与指令接收模块3交互;
[0021]所述指令接收模块3初始化时将指令接收函数挂接到系统的网络指令链表中,以令应用层调用setsockopt或getsockopt接口时,指令接收函数能够收到该指令以及对该指令进行处理;
[0022]所述数据分发模块4初始化时将数据包处理函数挂接到系统的网络NAT接口,以令系统接收到网络数据时调用该函数,并根据指令接收模块3设置的分发表来进行数据分发。
[0023]进一步地,所述应用管理模块I针对不同的外部应用,预设有不同的解析模块。
[0024]作为一种优选方式,所述指令发送模块2包括有如下指令:分发模块初始化、分发模块释放、添加摄像头、删除摄像头、添加转发路由、删除转发路由和查询路由。
[0025]本实施例中,所述指令发送模块2在执行过程中,首先建立Socket,即:
[0026]sd=socket(AF_INET,S0CK_RAW,IPPR0T0_IGMP);
[0027]之后设置数据调用setsockopt接口,获取数据调用getsockopt接口。
[0028]本实施例中,所述数据分发模块4进行数据分发时,首先判断数据包是否从输入网口进入,再判断数据包是否为UDP包,之后计算HASH值以获取源数据对象表,最后根据源数据对象表中的分发列表进行数据分发。
[0029]本发明公开的基于网络驱动层的流媒体数据分发系统,由四个模块组成,即应用管理模块1、指令发送模块2、指令接收模块3和数据分发模块4,其中,指令模块通过系统内核的网络接口来交互数据,响应应用管理模块传过来的数据分发和查询等指令,数据分发模块由网络驱动程序实现,依据数据分发策略对相应网络数据进行分发、修改、删除等,网络驱动模块在网络层接管了流媒体数据并直接进行分发,减少了数据从网络层到传送层再到应用层然后再逐层返回的过程,同一个数据包的转发减少了四次传递和两次数据拷贝,将网络数据的转发效率提高了一个数量级。通过以上所述可以看出,本发明不仅实现了流媒体数据的大数据量分发,还具有转发效率高、转发延时小、对服务器性能要求低、适合小型化、能够在互联网上传输、数据安全性强等特点。
[0030]本发明提供基于LINUX操作系统的UDP数据包的转发解决方案,分发模块采用NAT网络驱动程序模式实现,内核启动时加载到系统内核中,而模块的工作由应用层程序进行控制。当基于Windows操作系统实现时,也是采用相同的原理,分发模块由Windows网络驱动程序实现,然后在系统配置中添加到网口驱动中。
[0031]关于本发明的网络数据转发流程如图2所示,分发模块接收到数据包时,如何快速从分发表中拿到对应的分发目的链表是系统高效率的难点之一,本系统采用快速HASH计算定位法来实现,具体包括如下步骤:
[0032]步骤SI,定义高达16位长度的分发表指针数组,以减小HASH值的重复量,即:
[0033]PPACKETIN_STRUCT g_pPacketIn[0xFFFF];
[0034]步骤S2,HASH计算,S卩:HASH=
[0035](源IP低16位)异或(源IP高16位)异或(源端口)异或(目的端口);
[0036]步骤S3,添加摄像头时,依据步骤S2来计算HASH,然后在g_LanIn数组插入新的源对象,有相同HASH的挂到已有对象的pNext后面;
[0037]步骤S4,接收到数据包时,依据步骤S2计算HASH,找到对应源对象,从源对象的PDst指针获取分发目的对象,从而进行分发。
[0038]本发明公开的基于网络驱动层的流媒体数据分发系统,其相比应用层转发,底层转发可将数据分发效率提高一个数量级,其次,系统底层即时分发,减少系统缓冲,降低数据分发延时,增强系统实时性,此外,本发明降低系统性能要求,可实现流媒体服务器的嵌入式化,提尚可靠性。
[0039]以上所述只是本发明较佳的实施例,并不用于限制本发明,凡在本发明的技术范围内所做的修改、等同替换或者改进等,均应包含在本发明所保护的范围内。
【主权项】
1.一种基于网络驱动层的流媒体数据分发系统,其特征在于,包括有应用管理模块(1)、指令发送模块(2)、指令接收模块(3)和数据分发模块(4),其中: 所述应用管理模块(I)用于与外部应用交互,将外部需求解析后通过调用指令发送模块(2)将动作需求传送到系统内核; 所述指令发送模块(2)预设有配置接口供应用管理模块(I)调用,所述指令发送模块(2)通过调用setsockopt系统接口与指令接收模块(3)交互; 所述指令接收模块(3)初始化时将指令接收函数挂接到系统的网络指令链表中,以令应用层调用setsockopt或getsockopt接口时,指令接收函数能够收到该指令以及对该指令进行处理; 所述数据分发模块(4)初始化时将数据包处理函数挂接到系统的网络NAT接口,以令系统接收到网络数据时调用该函数,并根据指令接收模块(3)设置的分发表来进行数据分发。2.如权利要求1所述的基于网络驱动层的流媒体数据分发系统,其特征在于,所述应用管理模块(I)针对不同的外部应用,预设有不同的解析模块。3.如权利要求1所述的基于网络驱动层的流媒体数据分发系统,其特征在于,所述指令发送模块(2)包括有如下指令:分发模块初始化、分发模块释放、添加摄像头、删除摄像头、添加转发路由、删除转发路由和查询路由。4.如权利要求1所述的基于网络驱动层的流媒体数据分发系统,其特征在于,所述指令发送模块(2)在执行过程中,首先建立Socket,之后设置数据调用setsockopt接口,获取数据调用getsockopt接口。5.如权利要求1所述的基于网络驱动层的流媒体数据分发系统,其特征在于,所述数据分发模块(4)进行数据分发时,首先判断数据包是否从输入网口进入,再判断数据包是否为UDP包,之后计算HASH值以获取源数据对象表,最后根据源数据对象表中的分发列表进行数据分发O
【文档编号】H04L29/06GK105827588SQ201510988936
【公开日】2016年8月3日
【申请日】2015年12月23日
【发明人】郑灼, 刘莉, 刘跃, 张华俊, 欧阳建辉
【申请人】广东亿迅科技有限公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1