组播数据转发方法、装置、设备及可读存储介质与流程

文档序号:24177564发布日期:2021-03-09 10:42阅读:184来源:国知局
组播数据转发方法、装置、设备及可读存储介质与流程

1.本发明涉及网关技术领域,尤其涉及一种组播数据转发方法、装置、设备及可读存储介质。


背景技术:

2.随着智能网关的技术发展,无stb(set top box,数字视频变换盒)的iptv(internet protocol television,网路协定电视)业务承载能力被逐步推广。要求在家庭网络环境下,开发手机客户端功能作为用户使用iptv的界面,用户通过手机客户端选取节目,然后在支持dlna(digital living network alliance,数字生活网络联盟)的智能电视机上观看节目内容,并在手机客户端上进行节目播放控制,实现iptv的业务功能。
3.当前通过家庭网关承载iptv业务,是电视端向网关发起数据请求,网关依据数据请求,从组播服务器获取组播数据,然后将udp格式的组播数据封装进单播tcp报文后转发给电视端。该过程中,网关中的处理模块在用户态下处理tcp交互、组播数据的格式转换以及组播数据转发,且要对组播数据进行多次拷贝,导致网关对组播数据的转发性能较差。


技术实现要素:

4.本发明的主要目的在于提供一种组播数据转发方法、装置、设备及可读存储介质,旨在解决现有技术中网关对组播数据的转发性能较差的技术问题。
5.第一方面,本发明提供一种组播数据转发方法,所述组播数据转发方法运行于内核态,所述组播数据转发方法包括:
6.接收客户端发送的第一媒体请求,并建立所述客户端的套接字与所述第一媒体请求对应的第一节目ip的第一关联关系;
7.生成所述第一节目ip对应的组播加入报文;
8.发送组播加入报文到组播服务器,从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝;
9.将拷贝的所述第一组播数据转换成目标格式的第一数据,基于所述第一关联关系,调用套接字发送函数将所述第一数据发送至所述客户端。
10.可选的,在所述调用套接字发送函数将所述第一数据发送至所述客户端的步骤之后,还包括:
11.若检测到所述客户端掉线,则解除所述第一关联关系。
12.可选的,在所述若检测到所述客户端掉线的步骤之后,还包括:
13.检测所述第一节目ip是否关联其他客户端的套接字;
14.若所述第一节目ip不关联其他客户端的套接字,则发送所述第一节目ip对应的组播离开报文到组播服务器,并停止执行所述从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝的步骤。
15.可选的,在所述检测所述第一节目ip是否关联其他客户端的套接字的步骤之后,
还包括:
16.若所述第一节目ip关联其他客户端的套接字,则继续执行所述从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝的步骤。
17.可选的,所述组播数据转发方法,还包括:
18.当收到其他客户端发送的第二媒体请求时,建立所述其他客户端的套接字与所述第二媒体请求对应的第二节目ip的第二关联关系;
19.检测是否存在所述第二节目ip对应的组播组信息;
20.若存在,则将基于所述第二节目ip对应的组播加入报文拷贝的第二组播数据转换成目标格式的第二数据,基于所述第二关联关系,调用套接字发送函数将所述第二数据发送至所述其他客户端。
21.第二方面,本发明还提供一种组播数据转发装置,所述组播数据转发装置运行在内核态,所述组播数据转发装置包括:
22.建立模块,用于接收客户端发送的第一媒体请求,并建立所述客户端的套接字与所述第一媒体请求对应的第一节目ip的第一关联关系;
23.生成模块,用于生成所述第一节目ip对应的组播加入报文;
24.拷贝模块,用于发送组播加入报文到组播服务器,从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝;
25.发送模块,用于将拷贝的所述第一组播数据转换成目标格式的第一数据,基于所述第一关联关系,调用套接字发送函数将所述第一数据发送至所述客户端。
26.可选的,所述组播数据转发装置还包括删除模块,用于:
27.若检测到所述客户端掉线,则解除所述第一关联关系。
28.可选的,所述组播数据转发装置还包括拷贝管理模块,用于:
29.检测所述第一节目ip是否关联其他客户端的套接字;
30.若所述第一节目ip不关联其他客户端的套接字,则发送所述第一节目ip对应的组播离开报文到组播服务器,并停止执行所述从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝的步骤。
31.第三方面,本发明还提供一种组播数据转发设备,所述组播数据转发设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的组播数据转发程序,其中所述组播数据转发程序被所述处理器执行时,实现如上所述的组播数据转发方法的步骤。
32.第四方面,本发明还提供一种可读存储介质,所述可读存储介质上存储有组播数据转发程序,其中所述组播数据转发程序被处理器执行时,实现如上所述的组播数据转发方法的步骤。
33.本发明中,接收客户端发送的第一媒体请求,并建立所述客户端的套接字与所述第一媒体请求对应的第一节目ip的第一关联关系;生成所述第一节目ip对应的组播加入报文;发送组播加入报文到组播服务器,从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝;将拷贝的所述第一组播数据转换成目标格式的第一数据,基于所述第一关联关系,调用套接字发送函数将所述第一数据发送至所述客户端。通过本发明,在内核态下处理与客户端/组播服务器的交互,以及组播数据的格式转换和转发,且仅执行一次组播数据拷贝动作,大大减少了网关cpu的开销以及占用率,从而提升了
网关对组播数据的转发性能。
附图说明
34.图1为本发明实施例方案中涉及的组播数据转发设备的硬件结构示意图;
35.图2为本发明组播数据转发方法一实施例的流程示意图;
36.图3为网关执行组播数据转发方法的场景示意图;
37.图4为本发明组播数据转发装置一实施例的功能模块示意图。
38.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
39.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
40.第一方面,本发明实施例提供一种组播数据转发设备,该组播数据转发设备可以是家庭网关设备。
41.参照图1,图1为本发明实施例方案中涉及的组播数据转发设备的硬件结构示意图。本发明实施例中,组播数据转发设备可以包括处理器1001(例如中央处理器central processing unit,cpu),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真wireless-fidelity,wi-fi接口);存储器1005可以是高速随机存取存储器(random access memory,ram),也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
42.继续参照图1,图1中作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及组播数据转发程序。其中,处理器1001可以调用存储器1005中存储的组播数据转发程序,并执行本发明实施例提供的组播数据转发方法。
43.第二方面,本发明实施例提供了一种组播数据转发方法。
44.参照图2,图2为本发明组播数据转发方法一实施例的流程示意图。需要说明的是,该方法运行于内核态。如图2所示,组播数据转发方法包括:
45.步骤s10,接收客户端发送的第一媒体请求,并建立所述客户端的套接字与所述第一媒体请求对应的第一节目ip的第一关联关系;
46.本实施例中,客户端向网关发送第一媒体请求,其中,第一媒体请求包含了客户端的套接字以及请求的节目的ip,在此记作第一节目ip。网关从第一媒体请求中提取客户端的套接字以及第一节目ip后,建立客户端的套接字与第一节目ip的第一关联关系。具体的,可以将客户端的套接字与第一节目ip关联保存至转发记录表。容易理解的是,一个套接字只能关联一个节目ip;多个套接字可以关联同一个节目ip。因此,在转发记录表中进行记录时,可以是每个套接字与其关联的一个节目ip作为一条记录保存至转发记录表中;还可以是一个节目ip与其关联的多个套接字作为一条记录保存至转发记录表中。
47.步骤s20,生成所述第一节目ip对应的组播加入报文;
48.本实施例中,生成第一节目ip对应的组播加入报文。
49.步骤s30,发送组播加入报文到组播服务器,从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝;
50.本实施例中,发送组播加入报文到组播服务器,即发送请求第一节目ip对应的第一组播数据的请求报文至组播服务器,以供组播服务器下发第一组播数据,在收到第一组播数据后,对其进行拷贝。而本实施例运行在内核态,即将第一组播数据拷贝到cpu。容易理解的是,网关与客户端之间基于http协议进行交互,网关与组播服务器之间基于igmp协议进行交互。网关收到客户端发送的第一媒体请求,然后发送请求报文至组播服务器,需要涉及协议转换,该协议转换在内核态下进行。
51.步骤s40,将拷贝的所述第一组播数据转换成目标格式的第一数据,基于所述第一关联关系,调用套接字发送函数将所述第一数据发送至所述客户端。
52.本实施例中,从拷贝的第一组播数据中取出媒体净荷,然后基于媒体净荷封装得到目标格式的第一数据,其中目标格式可以是tcp格式,即得到包含了媒体净荷的tcp包。转发记录表中记录有客户端套接字,调用套接字发送函数sock_sendmsg发送tcp包时,协议栈自动在包头信息中添加客户端套接字,即可将该tcp包发送至客户端。
53.需要说明的是,网关需要与客户端之间进行http交互,与组播服务器之间进行igmp交互,且需要处理http到igmp的协议转换,因此,在步骤s10之前,网关需要预先设置好配置参数,配置参数涵盖:wan_vlan、wan_ip、wan_mac、http_port、max_user_num、time、log_level等,可缺省。其中,wan_vlan:指定igmp协议报文的vlan;wan_ip:网关的代理ip;wan_mac:网关的代理mac;http_port:指用来监听http报文的端口号;max_user_num:用来设置设备运行接入的最大用户数目;time:指设置igmp报文主动上报周期;log_level:日志级别,用于控制对应的log的输出。
54.进一步地,以网关为上述组播数据转发方法的执行主体,对上述实施例做补充说明。参照图3,图3为网关执行组播数据转发方法的场景示意图。如图3所示,网关分别与iptv服务器和电视端进行交互。网关包括:配置管理单元、协议处理任务单元以及数据处理任务单元。
55.其中,配置管理单元:用于控制整个系统的运转,在系统启动时工作。通过检查和解析insmod传参,生成系统全局配置;协议处理任务单元:对下行网络担任http服务器,监听和处理http协议交互;对上行网络担任igmp客户端,处理igmp协议交互;对系统内部,负责维护转发记录表、处理http到igmp的协议转换、下发指定ip的节目数据流上cpu的控制指令;数据处理任单元:接收上行网络下发的udp数据流,在内核层执行一次拷贝动作,提取iptv数据流报文目的ip,提取数据包净荷,基于转发记录表,完成数据净荷的内核态socket发包,发送tcp数据流至电视端。
56.在上述内容中,转发记录表中记录fd和gip;fd指客户端socket,以便后续使用该socket,分发指定节目gip对应的数据流;gip指代的是媒体请求的节目ip,是一个组播ip,在节目数据报文中位于目的ip字段;
57.在上述内容中,配置参数涵盖:wan_vlan、wan_ip、wan_mac、http_port、max_user_num、time、log_level等,可缺省;
58.在上述内容中,协议处理任务单元对应媒体请求的解析,已兼容媒体请求协议类
型包括:igmp、rtp、udp,兼容大小写。对于封装为http格式的igmp报文而言,一种媒体请求报文和媒体离开报文格式实例如下:http://192.168.1.1:8888/igmp/239.2.2.1:1234;媒体请求报文和媒体离开报文通过封装在http格式报文中的igmp报文的类型进行区分。对于媒体加入报文,igmp协议类型为0x16;媒体离开报文,igmp协议类型为0x17。
59.当然,也有其他方式,利用http的url字段做加入、离开组播组的标识,比如,http://192.168.1.1:8888/igmp/239.2.2.1:1234/join,表示媒体请求报文,http://192.168.1.1:8888/igmp/239.2.2.1:1234/leave,表示媒体离开报文。
60.也可利用接收报文的次数来判断:协议处理任务单元第一次收到某终端发出的http://192.168.1.1:8888/igmp/239.2.2.1:1234,可认为是该终端的媒体请求报文;第二次收到某终端发出的相同的http://192.168.1.1:8888/igmp/239.2.2.1:1234,可认为是该终端的媒体离开报文。
61.有多种实施方式,只要http报文可以标识对组播组的离开和加入即可,在此不再赘述。
62.在上述内容中,udp数据流到tcp数据流的转换,是通过记录客户端的fd,提取udp数据流的净荷,使用sock_sendmsg发送净荷完成的。sock_sendmsg发包时,媒体流的头部信息,由协议栈根据fd的信息自动添加。
63.在上述内容中,内核态socket发包流程,具备tcp的重传和窗口机制。模块启动时,设置屏蔽如下信号量:sigint、sigquit、sigchld、sigterm;使用kernel_recvmsg接收媒体请求时,flag启用(msg_dontwait|msg_nosignal);使用sock_sendmsg发送数据包时,flag启用(msg_dontwait|msg_nosignal)。基于此,能够无等待的接收媒体数据流,最大程度上减少媒体流对cpu的冲击。
64.本实施例中,接收客户端发送的第一媒体请求,并建立所述客户端的套接字与所述第一媒体请求对应的第一节目ip的第一关联关系;生成所述第一节目ip对应的组播加入报文;发送组播加入报文到组播服务器,从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝;将拷贝的所述第一组播数据转换成目标格式的第一数据,基于所述第一关联关系,调用套接字发送函数将所述第一数据发送至所述客户端。通过本实施例,在内核态下处理与客户端/组播服务器的交互,以及组播数据的格式转换和转发,且仅执行一次组播数据拷贝动作,大大减少了网关cpu的开销以及占用率,从而提升了网关对组播数据的转发性能。
65.且通过实际实验发现,同款芯片hi5663下,使用多进程用户态socket(开源udpxy)方案,极限性能为13m;使用多线程用户态socket(netlink+mmap)方案,极限性能为30m;使用本实施例方案,极限性能为53m。
66.与开源udpxy描述的多进程用户态socket方案对比,本实施例方案对cpu占用率有明显降低,且转发性能能到达其4倍以上,完全能满足2路4k高清的业务承载需求。
67.与netlink+mmap方案对比,本实施例方案通过使用内核态socket,极大减少了用户态到内核态的开销。在处理http交互、igmp交互、udp流转http流过程中,通过降低报文的拷贝次数,使得cpu转发的性能极大提升,转发性能接近其2倍。
68.本实施例方案,在满足无stb的iptv业务承载的同时,不仅兼容tcp的重传和窗口机制,而且极大的提升了cpu的转发性能。本实施例方案的明显优势在于省去了内核态到用
户态的拷贝开销,对于大量的udp流处理中,只有必要的拷贝动作,能实现cpu转发性能更高的收益。
69.进一步地,一实施例中,在步骤s40之后,还包括:
70.若检测到所述客户端掉线,则解除所述第一关联关系。
71.本实施例中,若检测到客户端掉线,则无需再向该客户端发送第一数据,因此,直接解除第一关联关系。其中,检测客户端掉线有两种方式:一种是收到客户端发送的http报文,里面包含离开组的信息,该http报文例如:http://192.168.1.1:8888/igmp/239.2.2.1:1234,http封装的igmp报文部分,igmp协议类型为0x17;另一种是被动掉线,此时依赖监听端口上的tcp连接是否超时,若超时,则确定对应的客户端掉线了。
72.进一步地,一实施例中,在所述若检测到所述客户端掉线的步骤之后,还包括:
73.检测所述第一节目ip是否关联其他客户端的套接字;若所述第一节目ip不关联其他客户端的套接字,则发送所述第一节目ip对应的组播离开报文到组播服务器,并停止执行所述从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝的步骤。
74.本实施例中,每收到一条客户端发起的媒体请求,都会建立客户端的套接字与媒体请求对应的节目ip的关联关系。具体方式为:将客户端套接字和请求的节目ip关联记录到转发记录表中。
75.可选的,对一节目而言,若只有一个客户端请求该节目,则转发记录表中与该节目的节目ip相关的记录仅有一条;若有多个客户端请求该节目,则转发记录表中与该节目的节目ip相关的记录有多条,例如通过以下形式进行记录:节目ip1-套接字1,节目ip1-套接字2,节目ip1-套接字3。对于多个客户端请求同一节目的情况,还可以将其合成一条记录后记录在转发记录表中,例如通过以下形式进行记录:节目ip1-套接字1、套接字2、套接字3。
76.当套接字1对应的客户端掉线时,套接字1与节目ip1的关联关系已经不存在了,需要查找转发记录表中是否关联记录有节目ip1与其他客户端套接字。若不存在,则说明该节目ip1对应的节目仅为套接字1所对应的客户端所需要的,而此时套接字1所对应的客户端掉线了,则不再需要从组播服务器获取节目ip1对应的组播数据。因此,发送相应的组播离开报文至组播服务器,并停止执行获取节目ip1对应的组播数据以及进行拷贝的动作。
77.进一步地,一实施例中,在所述检测所述第一节目ip是否关联其他客户端的套接字的步骤之后,还包括:
78.若所述第一节目ip关联其他客户端的套接字,则继续执行所述从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝的步骤。
79.本实施例中,若在转发记录表中关联记录有节目ip1和其他客户端的套接字,则说明其他客户端有获取该节目ip1对应节目的需求。因此,继续执行执行获取节目ip1对应的组播数据以及进行拷贝的动作。
80.进一步地,一实施例中,组播数据转发方法,还包括:
81.当收到其他客户端发送的第二媒体请求时,建立所述其他客户端的套接字与所述第二媒体请求对应的第二节目ip的第二关联关系;检测是否存在所述第二节目ip对应的组播组信息;若存在,则将基于所述第二节目ip对应的组播加入报文拷贝的第二组播数据转换成目标格式的第二数据,基于所述第二关联关系,调用套接字发送函数将所述第二数据
发送至所述其他客户端。
82.本实施例中,当收到其他客户端发送的第二媒体请求时,首先建立其他客户端的套接字与第二媒体请求对应的第二节目ip的第二关联关系,具体实现例如:将其他客户端的套接字与第二媒体请求对应的第二节目ip关联记录至转发记录表;然后检测是否存在第二节目ip对应的组播组信息。若存在,则说明已经根据在先客户端发送的媒体请求,向组播服务器发送了第二节目ip对应的组播加入报文,且获取第二节目ip对应的组播数据以及拷贝至cpu的动作是已经在进行了,因此,可以直接对cpu上第二节目ip对应的组播数据进行格式转换,然后转发至其他客户端。对第二组播数据进行格式转换以及转发的具体实施例与上述步骤s40对应的实施例基本相同,在此不做赘述。
83.容易理解的是,若不存在第二节目ip对应的组播组信息,则生成第二节目ip对应的组播加入报文;并发送至组播服务器,以供从组播服务器获取第二节目ip对应的第二组播数据,并将第二组播数据拷贝到cpu;将cpu上的第二组播数据转换成目标格式的第二数据,基于转发记录表中的记录,调用套接字发送函数将第二数据发送至该客户端。具体的实施例与上述步骤s20至步骤s40对应的实施例基本相同,在此不做赘述。
84.第三方面,本发明实施例还提供一种组播数据转发装置。
85.参照图4,图4为本发明组播数据转发装置一实施例的功能模块示意图。如图4所示,一实施例中,组播数据转发装置包括:
86.建立模块10,用于接收客户端发送的第一媒体请求,并建立所述客户端的套接字与所述第一媒体请求对应的第一节目ip的第一关联关系;
87.生成模块20,用于生成所述第一节目ip对应的组播加入报文;
88.拷贝模块30,用于发送组播加入报文到组播服务器,从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝;
89.发送模块40,用于将拷贝的所述第一组播数据转换成目标格式的第一数据,基于所述第一关联关系,调用套接字发送函数将所述第一数据发送至所述客户端。
90.进一步地,一实施例中,组播数据转发装置还包括删除模块,用于:
91.若检测到所述客户端掉线,则解除所述第一关联关系。
92.进一步地,一实施例中,组播数据转发装置还包括拷贝管理模块,用于:
93.检测所述第一节目ip是否关联其他客户端的套接字;
94.若所述第一节目ip不关联其他客户端的套接字,则发送所述第一节目ip对应的组播离开报文到组播服务器,并停止执行所述从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝的步骤。
95.进一步地,一实施例中,拷贝管理模块,用于:
96.若所述第一节目ip关联其他客户端的套接字,则继续执行所述从组播服务器获取所述第一节目ip对应的第一组播数据,并对所述第一组播数据进行拷贝的步骤。
97.进一步地,一实施例中:
98.建立模块10,用于当收到其他客户端发送的第二媒体请求时,建立所述其他客户端的套接字与所述第二媒体请求对应的第二节目ip的第二关联关系;
99.组播数据转发装置还包括检测模块,用于检测是否存在所述第二节目ip对应的组播组信息;
100.发送模块40,用于若存在,则将基于所述第二节目ip对应的组播加入报文拷贝的第二组播数据转换成目标格式的第二数据,基于所述第二关联关系,调用套接字发送函数将所述第二数据发送至所述其他客户端。
101.其中,上述组播数据转发装置中各个模块的功能实现与上述组播数据转发方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
102.第四方面,本发明实施例还提供一种可读存储介质。
103.本发明可读存储介质上存储有组播数据转发程序,其中所述组播数据转发程序被处理器执行时,实现如上述的组播数据转发方法的步骤。
104.其中,组播数据转发程序被执行时所实现的方法可参照本发明组播数据转发方法的各个实施例,此处不再赘述。
105.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
106.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
107.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
108.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1