CN105827588B - 一种基于网络驱动层的流媒体数据分发*** - Google Patents
一种基于网络驱动层的流媒体数据分发*** Download PDFInfo
- Publication number
- CN105827588B CN105827588B CN201510988936.4A CN201510988936A CN105827588B CN 105827588 B CN105827588 B CN 105827588B CN 201510988936 A CN201510988936 A CN 201510988936A CN 105827588 B CN105827588 B CN 105827588B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- network
- interface
- command reception
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/168—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP] specially adapted for link layer protocols, e.g. asynchronous transfer mode [ATM], synchronous optical network [SONET] or point-to-point protocol [PPP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于网络驱动层的流媒体数据分发***,其包括有应用管理模块、指令发送模块、指令接收模块和数据分发模块,所述应用管理模块用于与外部应用交互,将外部需求解析后通过调用指令发送模块将动作需求传送到***内核;所述指令发送模块预设有配置接口供应用管理模块调用;所述指令接收模块初始化时将指令接收函数挂接到***的网络指令链表中;所述数据分发模块初始化时将数据包处理函数挂接到***的网络NAT接口,以令***接收到网络数据时调用该函数,并根据指令接收模块设置的分发表来进行数据分发。本发明具有转发效率高、转发延时小、对服务器性能要求低、适合小型化、能够在互联网上传输、数据安全性强等特点。
Description
技术领域
本发明涉及应用层流媒体分发***,尤其涉及一种基于网络驱动层的流媒体数据分发***。
背景技术
目前,主流的流媒体服务器都是基于应用层网络数据转发来实现的,实现技术相对简单,但数据转发效率低、转发延时较大,对服务器性能的要求较高,不利于流媒体技术的推广。
现有的应用层流媒体网络数据分发过程如图3所示,链路层、网络层和传送层的工作由操作***完成,并不需要开发,因此开发工作完全在应用层由应用程序完成。网络数据包在整个过程中至少被复制了四次:第一次是链路层的网卡驱动程序从网络传输媒介接收数据时;第二次是传送层复制数据到应用层;第三次是传送层从应用层复制数据到内核层;第四次是链路层复制数据到网卡进行发送。如果是一对多分发则在应用层还要进行复制工作。其中:链路层:接收数据时通过网卡接收从网络传输媒介传送过来的原始网络数据,识别数据帧,并检测错误;发送数据时将网络层传送过来IP数据包进行网络帧封装,并通过网卡发送到网络传输媒介上。网络层:接收数据时负责解析IP数据包,将IP包分解成种网络协议包,并传送到传送层;发送数据时将传送层传过来的网络协议包封装成IP包,并传送到链路层。传送层:接收数据时负责将网络协议包的用户数据部分复制到对应的应用层接收进程;发送数据时将应用层数据封装为网络协议包并传送到网络层。应用层:应用程序根据配置好的分发策略将接收到的UDP数据包进行转发、复制等工作,而要发送的数据包进入传送层进行发送。然而上述应用层流媒体分发过程存在转发效率低、转发延时大、服务器性能要求高、难以小型化等缺陷。
现有的UDP组播数据分发过程如图4所示,管理***需要给每路流媒体数据确定一个唯一的组播IP地址,当流媒体客户端需要接收该路流媒体数据时需要向组播交换机发起数据申请,组播包的分发管理工作由组播交换机完成。因此,这种方式对网络交换机的性能要求比较高;同时,出于网络风暴的考虑,互联网路由器截断了组播包的传发,在互联网上组播包不能正常收发。
发明内容
本发明要解决的技术问题在于,针对现有技术的不足,提供一种转发效率高、转发延时小、对服务器性能要求低、适合小型化、能够在互联网上传输、数据安全性强的流媒体数据分发***。
为解决上述技术问题,本发明采用如下技术方案。
一种基于网络驱动层的流媒体数据分发***,其包括有应用管理模块、指令发送模块、指令接收模块和数据分发模块,其中:所述应用管理模块用于与外部应用交互,将外部需求解析后通过调用指令发送模块将动作需求传送到***内核;所述指令发送模块预设有配置接口供应用管理模块调用,所述指令发送模块通过调用setsockopt***接口与指令接收模块交互;所述指令接收模块初始化时将指令接收函数挂接到***的网络指令链表中,以令应用层调用setsockopt或getsockopt接口时,指令接收函数能够收到该指令以及对该指令进行处理;所述数据分发模块初始化时将数据包处理函数挂接到***的网络NAT接口,以令***接收到网络数据时调用该函数,并根据指令接收模块设置的分发表来进行数据分发。
优选地,所述应用管理模块针对不同的外部应用,预设有不同的解析模块。
优选地,所述指令发送模块包括有如下指令:分发模块初始化、分发模块释放、添加摄像头、删除摄像头、添加转发路由、删除转发路由和查询路由。
优选地,所述指令发送模块在执行过程中,首先建立Socket,之后设置数据调用setsockopt接口,获取数据调用getsockopt接口。
优选地,所述数据分发模块进行数据分发时,首先判断数据包是否从输入网口进入,再判断数据包是否为UDP包,之后计算HASH值以获取源数据对象表,最后根据源数据对象表中的分发列表进行数据分发。
本发明公开的基于网络驱动层的流媒体数据分发***,由四个模块组成,即应用管理模块、指令发送模块、指令接收模块和数据分发模块,其中,指令模块通过***内核的网络接口来交互数据,响应应用管理模块传过来的数据分发和查询等指令,数据分发模块由网络驱动程序实现,依据数据分发策略对相应网络数据进行分发、修改、删除等,网络驱动模块在网络层接管了流媒体数据并直接进行分发,减少了数据从网络层到传送层再到应用层然后再逐层返回的过程,同一个数据包的转发减少了四次传递和两次数据拷贝,将网络数据的转发效率提高了一个数量级。通过以上所述可以看出,本发明不仅实现了流媒体数据的大数据量分发,还具有转发效率高、转发延时小、对服务器性能要求低、适合小型化、能够在互联网上传输、数据安全性强等特点。
附图说明
图1为本发明基于网络驱动层的流媒体数据分发***的组成框图。
图2为本发明在网络数据转发过程的流程图。
图3为现有的应用层流媒体网络数据分发过程的流程图。
图4为现有的UDP组播数据分发过程的流程图。
具体实施方式
下面结合附图和实施例对本发明作更加详细的描述。
本发明公开了一种基于网络驱动层的流媒体数据分发***,如图1所示,其包括有应用管理模块1、指令发送模块2、指令接收模块3和数据分发模块4,其中:
所述应用管理模块1用于与外部应用交互,将外部需求解析后通过调用指令发送模块2将动作需求传送到***内核;
所述指令发送模块2预设有配置接口供应用管理模块1调用,所述指令发送模块2通过调用setsockopt***接口与指令接收模块3交互;
所述指令接收模块3初始化时将指令接收函数挂接到***的网络指令链表中,以令应用层调用setsockopt或getsockopt接口时,指令接收函数能够收到该指令以及对该指令进行处理;
所述数据分发模块4初始化时将数据包处理函数挂接到***的网络NAT接口,以令***接收到网络数据时调用该函数,并根据指令接收模块3设置的分发表来进行数据分发。
进一步地,所述应用管理模块1针对不同的外部应用,预设有不同的解析模块。
作为一种优选方式,所述指令发送模块2包括有如下指令:分发模块初始化、分发模块释放、添加摄像头、删除摄像头、添加转发路由、删除转发路由和查询路由。
本实施例中,所述指令发送模块2在执行过程中,首先建立Socket,即:
sd=socket(AF_INET,SOCK_RAW,IPPROTO_IGMP);
之后设置数据调用setsockopt接口,获取数据调用getsockopt接口。
本实施例中,所述数据分发模块4进行数据分发时,首先判断数据包是否从输入网口进入,再判断数据包是否为UDP包,之后计算HASH值以获取源数据对象表,最后根据源数据对象表中的分发列表进行数据分发。
本发明公开的基于网络驱动层的流媒体数据分发***,由四个模块组成,即应用管理模块1、指令发送模块2、指令接收模块3和数据分发模块4,其中,指令模块通过***内核的网络接口来交互数据,响应应用管理模块传过来的数据分发和查询等指令,数据分发模块由网络驱动程序实现,依据数据分发策略对相应网络数据进行分发、修改、删除等,网络驱动模块在网络层接管了流媒体数据并直接进行分发,减少了数据从网络层到传送层再到应用层然后再逐层返回的过程,同一个数据包的转发减少了四次传递和两次数据拷贝,将网络数据的转发效率提高了一个数量级。通过以上所述可以看出,本发明不仅实现了流媒体数据的大数据量分发,还具有转发效率高、转发延时小、对服务器性能要求低、适合小型化、能够在互联网上传输、数据安全性强等特点。
本发明提供基于LINUX操作***的UDP数据包的转发解决方案,分发模块采用NAT网络驱动程序模式实现,内核启动时加载到***内核中,而模块的工作由应用层程序进行控制。当基于Windows操作***实现时,也是采用相同的原理,分发模块由Windows网络驱动程序实现,然后在***配置中添加到网口驱动中。
关于本发明的网络数据转发流程如图2所示,分发模块接收到数据包时,如何快速从分发表中拿到对应的分发目的链表是***高效率的难点之一,本***采用快速HASH计算定位法来实现,具体包括如下步骤:
步骤S1,定义高达16位长度的分发表指针数组,以减小HASH值的重复量,即:
PPACKETIN_STRUCT g_pPacketIn[0xFFFF];
步骤S2,HASH计算,即:HASH=
(源IP低16位)异或(源IP高16位)异或(源端口)异或(目的端口);
步骤S3,添加摄像头时,依据步骤S2来计算HASH,然后在g_LanIn数组***新的源对象,有相同HASH的挂到已有对象的pNext后面;
步骤S4,接收到数据包时,依据步骤S2计算HASH,找到对应源对象,从源对象的pDst指针获取分发目的对象,从而进行分发。
本发明公开的基于网络驱动层的流媒体数据分发***,其相比应用层转发,底层转发可将数据分发效率提高一个数量级,其次,***底层即时分发,减少***缓冲,降低数据分发延时,增强***实时性,此外,本发明降低***性能要求,可实现流媒体服务器的嵌入式化,提高可靠性。
以上所述只是本发明较佳的实施例,并不用于限制本发明,凡在本发明的技术范围内所做的修改、等同替换或者改进等,均应包含在本发明所保护的范围内。
Claims (4)
1.一种基于网络驱动层的流媒体数据分发***,其特征在于,包括有应用管理模块(1)、指令发送模块(2)、指令接收模块(3)和数据分发模块(4),其中:
所述应用管理模块(1)用于与外部应用交互,将外部需求解析后通过调用指令发送模块(2)将动作需求传送到***内核;
所述指令发送模块(2)预设有配置接口供应用管理模块(1)调用,所述指令发送模块(2)通过调用setsockopt***接口与指令接收模块(3)交互;
所述指令接收模块(3)初始化时将指令接收函数挂接到***的网络指令链表中,以令应用层调用setsockopt或getsockopt接口时,指令接收函数能够收到该指令以及对该指令进行处理;
所述数据分发模块(4)初始化时将数据包处理函数挂接到***的网络NAT接口,以令***接收到网络数据时调用该函数,并根据指令接收模块(3)设置的分发表来进行数据分发;所述数据分发模块(4)进行数据分发时,首先判断数据包是否从输入网口进入,再判断数据包是否为UDP包,之后计算HASH值以获取源数据对象表,最后根据源数据对象表中的分发列表进行数据分发。
2.如权利要求1所述的基于网络驱动层的流媒体数据分发***,其特征在于,所述应用管理模块(1)针对不同的外部应用,预设有不同的解析模块。
3.如权利要求1所述的基于网络驱动层的流媒体数据分发***,其特征在于,所述指令发送模块(2)包括有如下指令:分发模块初始化、分发模块释放、添加摄像头、删除摄像头、添加转发路由、删除转发路由和查询路由。
4.如权利要求1所述的基于网络驱动层的流媒体数据分发***,其特征在于,所述指令发送模块(2)在执行过程中,首先建立Socket,之后设置数据调用setsockopt接口,获取数据调用getsockopt接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510988936.4A CN105827588B (zh) | 2015-12-23 | 2015-12-23 | 一种基于网络驱动层的流媒体数据分发*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510988936.4A CN105827588B (zh) | 2015-12-23 | 2015-12-23 | 一种基于网络驱动层的流媒体数据分发*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105827588A CN105827588A (zh) | 2016-08-03 |
CN105827588B true CN105827588B (zh) | 2019-03-15 |
Family
ID=56514706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510988936.4A Active CN105827588B (zh) | 2015-12-23 | 2015-12-23 | 一种基于网络驱动层的流媒体数据分发*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105827588B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107707422A (zh) * | 2017-08-24 | 2018-02-16 | 四川天邑康和通信股份有限公司 | 基于onu驱动层快速ack回复的网络测速方法 |
CN108155999B (zh) * | 2017-12-27 | 2020-08-07 | 乐自科技(南京)有限公司 | 带tcp补包机制的智能udp组播文件分发***及方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217464A (zh) * | 2007-12-28 | 2008-07-09 | 北京大学 | 一种udp数据包的传输方法 |
US7587510B1 (en) * | 2003-04-21 | 2009-09-08 | Charles Schwab & Co., Inc. | System and method for transferring data between a user space and a kernel space in a server associated with a distributed network environment |
CN101893959A (zh) * | 2010-06-22 | 2010-11-24 | 中科方德软件有限公司 | 一种在linux内核实现触摸方向识别的方法 |
CN102447627A (zh) * | 2011-12-05 | 2012-05-09 | 上海顶竹通讯技术有限公司 | 报文封装和解封装的装置及方法 |
CN102592076A (zh) * | 2011-12-20 | 2012-07-18 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据防篡改的方法及装置 |
CN102638453A (zh) * | 2012-03-13 | 2012-08-15 | 广州华多网络科技有限公司 | 一种基于Linux***服务器的语音数据内核转发方法 |
CN102662910A (zh) * | 2012-03-23 | 2012-09-12 | 浙江大学 | 基于嵌入式***的网络交互体系及网络交互方法 |
CN103327025A (zh) * | 2013-06-28 | 2013-09-25 | 北京奇虎科技有限公司 | 网络访问控制方法及装置 |
CN104657676A (zh) * | 2015-03-05 | 2015-05-27 | 北京安普诺信息技术有限公司 | 一种基于微过滤驱动的文件强制访问控制方法及其*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101413295B1 (ko) * | 2010-11-04 | 2014-06-30 | 한국전자통신연구원 | 확장성과 적응성을 가지는 dds 구조 및 dds를 구성하는 노드 |
-
2015
- 2015-12-23 CN CN201510988936.4A patent/CN105827588B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7587510B1 (en) * | 2003-04-21 | 2009-09-08 | Charles Schwab & Co., Inc. | System and method for transferring data between a user space and a kernel space in a server associated with a distributed network environment |
CN101217464A (zh) * | 2007-12-28 | 2008-07-09 | 北京大学 | 一种udp数据包的传输方法 |
CN101893959A (zh) * | 2010-06-22 | 2010-11-24 | 中科方德软件有限公司 | 一种在linux内核实现触摸方向识别的方法 |
CN102447627A (zh) * | 2011-12-05 | 2012-05-09 | 上海顶竹通讯技术有限公司 | 报文封装和解封装的装置及方法 |
CN102592076A (zh) * | 2011-12-20 | 2012-07-18 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据防篡改的方法及装置 |
CN102638453A (zh) * | 2012-03-13 | 2012-08-15 | 广州华多网络科技有限公司 | 一种基于Linux***服务器的语音数据内核转发方法 |
CN102662910A (zh) * | 2012-03-23 | 2012-09-12 | 浙江大学 | 基于嵌入式***的网络交互体系及网络交互方法 |
CN103327025A (zh) * | 2013-06-28 | 2013-09-25 | 北京奇虎科技有限公司 | 网络访问控制方法及装置 |
CN104657676A (zh) * | 2015-03-05 | 2015-05-27 | 北京安普诺信息技术有限公司 | 一种基于微过滤驱动的文件强制访问控制方法及其*** |
Also Published As
Publication number | Publication date |
---|---|
CN105827588A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101900536B1 (ko) | Openflow 데이터 플레인 및 컨트롤 플레인을 갖는 클라우드 컴퓨터에서의 3g 패킷 코어의 구현 | |
EP2378720B1 (en) | Extranet networking method, system and device for multicast virtual private network | |
US9609065B2 (en) | Bridge for implementing a converged network protocol to facilitate communication between different communication protocol networks | |
EP2843906B1 (en) | Method, apparatus, and system for data transmission | |
WO2019134383A1 (zh) | 控制网络拥塞的方法、接入设备和计算机可读存储介质 | |
JP6544401B2 (ja) | パケット転送装置、制御装置、通信システム、通信方法及びプログラム | |
US20150245115A1 (en) | Methods and apparatus to route fibre channel frames using reduced forwarding state on an fcoe-to-fc gateway | |
EP3069471B1 (en) | Optimized multicast routing in a clos-like network | |
KR102025680B1 (ko) | Sdn 기반의 arp 구현 방법 및 장치 | |
WO2015180040A1 (zh) | 流表管理方法及相关设备和*** | |
CN103392324B (zh) | 向聚合网络环境中的源端节点转发消息 | |
KR100793349B1 (ko) | Ppp 멀티링크를 지원하는 시스템에서의 멀티캐스트트래픽 포워딩 장치 및 제어방법 | |
WO2016184283A1 (zh) | 一种虚拟机数据流管理方法和*** | |
WO2015127892A1 (zh) | 通信方法、光模块和网络设备 | |
CN109936492A (zh) | 一种通过隧道传输报文的方法、装置和*** | |
CN101834783A (zh) | 一种报文转发方法、装置及网络设备 | |
US20180262560A1 (en) | Method and system for transmitting communication data | |
WO2010145091A1 (zh) | 一种虚拟网口的实现方法及实现虚拟网口的嵌入式设备 | |
CN104301252A (zh) | 一种数据发送***及数据发送方法 | |
CN105827588B (zh) | 一种基于网络驱动层的流媒体数据分发*** | |
CN104486217A (zh) | 跨网络的报文转发方法和设备 | |
US20120300776A1 (en) | Method for creating virtual link, communication network element, and ethernet network system | |
WO2008037202A1 (fr) | Procédé et dispositif de transmission de données | |
CN104320322A (zh) | 一种报文控制方法和设备 | |
CN105656814A (zh) | 一种sdn网络转发***与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |