一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于ZeroMQ的数据包传输方法、装置及设备与流程

2022-04-27 12:29:23 来源:中国专利 TAG:

一种基于zeromq的数据包传输方法、装置及设备
技术领域
1.本发明涉及通信技术领域,特别涉及一种基于zeromq的数据包传输方法、装置及设备。


背景技术:

2.与传统网络环境一样,云上网络的运维需要对虚拟化和云网络环境的流量进行有效的监控,并打破虚拟化和云环境黑盒子的状况。在当前混合云趋势愈发普及的情况,数据采集的可靠性传输技术的重要性逐步提升。


技术实现要素:

3.本发明提供一种基于zeromq的数据包传输方法、装置及设备,用以提高云上网络的数据传输的可靠性。
4.第一方面,本发明提供一种基于zeromq的数据包传输方法,应用于服务器,该方法包括:
5.基于zeromq,通过抓包模块将其采集到的数据包的头部封装队列标签,并发送至通道接收模块;
6.基于zeromq,通过所述通道接收模块对接收到的数据包进行解封装,得到每个数据包的队列标签;
7.通过所述通道接收模块根据每个数据包的队列标签对数据完整性进行校验。
8.在一种可能的实现方式中,所述通过所述通道接收模块根据每个数据包的队列标签对数据完整性进行校验,包括:
9.若多个数据包的队列标签符合预设顺序,则通过所述通道接收模块确定数据完整,否则确定数据不完整。
10.在一种可能的实现方式中,若确定数据不完整,则:
11.通过所述通道接收模块等待接收所述抓包模块发送的封装后的数据包。
12.在一种可能的实现方式中,该方法还包括:
13.针对所述通道接收模块中的每个消息队列,确定所述消息队列中存储的数据包的数量大于等于预设值,通过所述通道接收模块向所述抓包模块发送控制指令,以控制所述抓包模块停止发送数据包。
14.在一种可能的实现方式中,所述基于zeromq,通过抓包模块将其采集到的数据包的头部封装队列标签,并发送至通道接收模块之后,还包括:
15.通过所述抓包模块为采集到的数据包注入时间戳。
16.在一种可能的实现方式中,该方法还包括:
17.根据多协议标签交换技术,通过所述通道接收模块将接收到的具有相同转发处理方式的数据包设置业务标签,并将设置有相同的业务标签的数据包发送至终端。
18.第二方面,本发明提供一种基于zeromq的数据包传输装置,应用于服务器,包括抓
包模块和通道接收模块;
19.所述抓包模块,用于基于zeromq,将其采集到的数据包的头部封装队列标签,并发送至通道接收模块;
20.所述通道接收模块,用于基于zeromq,对接收到的数据包进行解封装,得到每个数据包的队列标签;根据每个数据包的队列标签对数据完整性进行校验。
21.在一种可能的实现方式中,所述通道接收模块具体用于:
22.若多个数据包的队列标签符合预设顺序,则确定数据完整,否则确定数据不完整。
23.在一种可能的实现方式中,若确定数据不完整,则:所述通道接收模块具体用于:
24.等待接收所述抓包模块发送的封装后的数据包。
25.在一种可能的实现方式中,所述通道接收模块还用于:
26.针对所述通道接收模块中的每个消息队列,确定所述消息队列中存储的数据包的数量大于等于预设值,向所述抓包模块发送控制指令,以控制所述抓包模块停止发送数据包。
27.在一种可能的实现方式中,所述抓包模块基于zeromq,将其采集到的数据包的头部封装队列标签,并发送至通道接收模块之后,还用于:
28.为采集到的数据包注入时间戳。
29.在一种可能的实现方式中,所述通道接收模块还用于:
30.根据多协议标签交换技术,将接收到的具有相同转发处理方式的数据包设置业务标签,并将设置有相同的业务标签的数据包发送至终端。
31.第三方面,本发明提供一种基于zeromq的数据包传输设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面中任何一项所述的方法。
32.第四方面,本发明提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行第一方面中任何一项所述的方法。
33.第五方面,本发明提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法。
34.本发明有益效果如下:
35.本发明实施例中,基于zeromq,通过抓包模块将其采集到的数据包的头部封装队列标签,并发送至通道接收模块;基于zeromq,通过通道接收模块对接收到的数据包进行解封装,得到每个数据包的队列标签;通过通道接收模块根据每个数据包的队列标签对数据完整性进行校验。由于抓包模块和通道接收模块都是基于zeromq实现数据传输的,从而通道接收模块可以根据传输的每个数据包的队列标签的数据完整性进行校验,因此可以提高数据传输的可靠性。
附图说明
36.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其
他的附图。
37.图1为本发明实施例提供的一种基于zeromq的数据包传输装置的结构示意图;
38.图2为本发明实施例提供的一种基于zeromq的数据包传输设备的结构示意图;
39.图3为本发明实施例提供的一种基于zeromq的数据包传输方法的流程示意图。
具体实施方式
40.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
41.目前不管是公有云还是专有云或者是混合云,云内数据的采集存在不完整性,主要体现在数据传输时的丢包现象,从而无法全量地获取到云内数据,导致数据分析不准确,无法充分利用实时数据进行分析和展示,同时也无法有效地将采集到的云数据提供给后端运维。
42.本发明实施例提供了一种基于zeromq的数据包传输方法、装置及设备,可提高各种虚拟化云环境中采集到的云数据的可靠性,实现云内数据的数字化运营和运维提供实时的数据支撑。
43.其中,可靠性主要包括数据传输的完整性、安全性、稳定性等特性。
44.下面对本发明实施例进行详细说明。
45.如图1所示,为本发明实施例提供的一种基于zeromq的数据包传输装置,该装置应用于服务器。
46.如图1所示,该装置包括抓包模块101和通道接收模块102,其中,抓包模块101又可以称为抓包器或数据采集器,通道接收模块102又可以称为通道接收器;
47.抓包模块101,用于基于zeromq,将其采集到的数据包的头部封装队列标签,并发送至通道接收模块102;
48.通道接收模块102,用于基于zeromq,对接收到的数据包进行解封装,得到每个数据包的队列标签;根据每个数据包的队列标签对数据完整性进行校验。
49.本发明实施例中,基于zeromq的数据包传输装置包括抓包模块101和通道接收模块102,其中,抓包模块101,用于基于zeromq,将其采集到的数据包的头部封装队列标签,并发送至通道接收模块102;通道接收模块102,用于基于zeromq,对接收到的数据包进行解封装,得到每个数据包的队列标签;根据每个数据包的队列标签对数据完整性进行校验。由于抓包模块101和通道接收模块102都是基于zeromq实现数据传输的,从而通道接收模块102可以根据传输的每个数据包的队列标签的数据完整性进行校验,因此可以提高数据传输的可靠性。
50.其中,数据包的传输是具有一定顺序的,例如有5个数据包,对应的队列标签可以分别为1、2、3、4、5,按该顺序(1、2、3、4、5)接收到5个数据包代表数据是完整的,若由于传输过程中出现丢包现象,只接收到其中4个数据包(例如为1、2、3、5),表示队列标签为4的数据包丢失,本发明基于zeromq技术,抓包模块101和通道接收模块102都安装有zeromq组件,因此通道接收模块102可以基于zeromq,根据每个数据包的队列标签对数据完整性进行校验,
从而提高数据传输的可靠性。
51.在具体实施中,如图1所示,该服务器可以包括网络数据包捕获函数库103和管理模块104;
52.管理模块104为抓包模块101配置采集和转发策略,抓包模块101在管理模块104的控制下,从网络数据包捕获函数库103中采集数据包。
53.其中,抓包模块101可以为agent,通道接收模块102可以为tunnel receiver,网络数据包捕获函数库103可以为libpcap,管理模块104可以为manager;
54.manager为agent的管理平台,为所有的agent配置采集和转发策略,包括抓包策略、转发的隧道封装、隧道端口、数据包接收端等;
55.agent为安装在云环境/容器环境中的抓包组件,执行manager配置的采集和转发策略;
56.libpcap:在agent启用采集和转发策略时,从中采集数据包;
57.tunnel receiver:接收agent转发的数据包、剥离隧道头并为数据包增加请求/响应、服务标识后转发给数据消费端。
58.zeromq(简称zmq)是一个基于消息队列的多线程库,其对套接字、连接处理、以及路由进行抽象处理,可提供跨越多种传输协议的套接字。本发明实施例包含传输控制协议(transmission control protocol,tcp)协议重传机制和zmq重传机制。
59.在具体实施中,可以首先通过抓包模块101调用linux系统本地的网络数据包捕获函数库103底层依赖,进行数据包的捕获,捕获之后通过抓包模块101内置的zeromq插件进行传输,期间会在数据包的头部封装队列标签,通道接收模块102也安装了相应的zeromq插件,进行数据包的队列标签解封装。
60.通道接收模块102进一步将原始数据包经过多协议标签交换(multi-protocol label switching,mpls)技术注入分组标签,数据包消费平台接收指定分组标签的数据包,进一步处理和消费,其中,数据包消费平台可以为性能管理系统、大数据分析平台、风险控制平台等消费终端。
61.本发明实施例提到的tcp协议重传机制,实际上是由网络层的头部tcp来进行网络层面的保障的,zmq重传机制是消息层面的数据传输保障机制,本发明实施例中的zmq可以基于tcp,所以有双层保障机制。
62.具体的,tcp协议提供可靠数据传输服务,为保证数据传输的正确性,tcp会重传其认为已丢失(包括报文中的比特错误)的包,对收到的tcp报文段进行排序以及检测重复的数据;使用校验和来检测报文段的错误;使用确认和计时器来检测和纠正丢包;tcp重传保证了网络层面的数据完整性。zeromq可以处理套接字异常,能够智能地处理错误,并对其进行重试。zeromq通过消息层面的重传,保证了消息的完整送达。
63.在一种实施例中,通道接收模块102具体用于:
64.若多个数据包的队列标签符合预设顺序,则确定数据完整,否则确定数据不完整。
65.具体的,预设顺序可以任意设定,以5个数据包为例,对应的队列标签的预设顺序可以为1、2、3、4、5,当然也可以为a、b、c、d、e,可以任意设定,比如预设顺序为1、2、3、4、5,按该顺序(1、2、3、4、5)接收到5个数据包代表数据是完整的,若由于传输过程中出现丢包现象,只接收到其中4个数据包(例如为1、2、3、5),表示队列标签为4的数据包丢失,按该顺序
(1、2、3、5)只接收到4个数据包代表数据是不完整的,代表数据包丢失。
66.在一种可能的实现方式中,若确定数据不完整,则为了保证数据的完整性,通道接收模块102等待接收抓包模块101发送的封装后的数据包。
67.具体的,通道接收模块102接收到抓包模块101发送的数据包后,会按照数据包头部里封装好的队列信息进行校验,正常情况下,数据包的传输队列编号是按照顺序的,当发现有丢失的队列编号,或者乱了顺序的队列编号时,此时会执行队列保障机制,等待丢失的数据包重新发送过来。
68.比如,抓包模块101向通道接收模块102发送5个数据包(1、2、3、4、5),通道接收模块102接收到4个数据包(1、3、4、5),其中,队列标签为2的数据包发送失败,抓包模块101基于tcp协议,重新发送队列标签为2的数据包。相应的,通道接收模块确定数据不完整后,等待抓包模块发送队列标签为2的数据包。
69.本发明实施例中,由于通道接收模块可以验证数据是否完整,在不完整时,等待抓包模块发送丢失的数据包,相比于现有技术中通道接收模块不对数据进行完整性验证,可以提高数据传输的可靠性。
70.在实施中,通道接收模块102还可以针对通道接收模块102中的每个消息队列,确定消息队列中存储的数据包的数量大于等于预设值,向抓包模块101发送控制指令,以控制抓包模块停止发送数据包。
71.本发明实施例,使用异步读写模式,当消息通道中的消息队列在内存溢出的情况发生时,会自动通过阈值(预设值)机制来规避数据包溢出,当消息队列填满时,可自动阻塞发送者,即抓包模块101,从而保障数据包的稳定性。由于zmq有阈值(hwm)机制,可以避免消息溢出,其中,预设值可以为抓包模块101和通道接收模块102两端内部的zeromq插件之间进行协商来确定的。
72.需要说明的是,zeromq的读写属于异步模式,发送与接收数据包均会将数据包放入管道中,当响应器reactor轮询到相应的读写事件的时候,适时的读写消息。
73.在一种实施例中,抓包模块101基于zeromq,将其采集到的数据包的头部封装队列标签,并发送至通道接收模块之后,还用于:为采集到的数据包注入时间戳。
74.具体过程可以为:抓包模块101调用网络数据包捕获函数库103底层,获取捕获能力,抓包模块101捕获指定流量后,获取系统最新本地时间,转化成标准的unix时间戳,例如2021-12-29 21:28:02可以转换为1640784482(unix时间戳),抓包模块101将时间戳标记到数据包头部,并转发被标记时间戳的数据包。
75.这个过程可以称为主动时间戳注入机制,该机制是为了保证数据包的真实有效时间,假如在传输过程中发生丢包时,某个数据包实际到达时间是重传后的时间,如果按照重传时间来标记,可能会导致后端分析平台处理异常。所以如果我们在最初主动注入时间戳,即使丢包重传也不会对数据包内的时间戳有影响。
76.本发明实施例可以通过主动时间戳注入机制为数据包注入时间戳,为数据包注入时间戳不会造成数据采集出来后,数据混乱的情况,从而保障的数据包的稳定性,此外,通过主动时间戳注入机制为数据包注入时间戳,可以确保数据包的时间戳实时精准。
77.为了满足数据包消费平台的分类监控场景,呈现数据包采集后监控场景的多样性,通道接收模块102还可以根据多协议标签交换技术,将接收到的具有相同转发处理方式
的数据包设置业务标签,并将设置有相同的业务标签的数据包发送至终端。
78.本发明实施例利用多协议标签交换技术,将具有相同转发处理方式的分组归为一类,相同转发等价类的分组在mpls网络中将获得完全相同的处理。
79.在具体实施中,可以基于mpls处理机制对数据包进行处理,下面对mpls处理机制进行说明。
80.具体的,可以根据消费场景的不同,可以设置不同的分组标签,比如:
81.用不同的分组标签,区分不同的消费场景,比如设置401分组标签,用于安全监测,设置402标签,用于应用性能分析。对于单独的消费场景,用不同的分组标签区分不同的类型,比如在应用性能分析场景,可以设置4021为网银系统的流量,4022是手机银行系统的流量,以便于区分处理和解码。
82.zmq技术消息队列验证的数据包传输依赖mpls多协议标签交换作为分类转发,将具有相同转发处理方式的分组归为一类,相同转发等价类的分组在mpls网络中将获得完全相同的处理。
83.zmq验证数据包通过虚拟扩展局域网(virtual extensible local area network,vxlan)大二层头部封装方式进行传输,当达到目的地址后,tunnel receiver快速对数据包进行vxlan头部剥离;完成vxlan头部剥离后,继续通过mpls技术进行数据包染色,可以实现对采集的流量注入业务标签信息,以便适应数据包消费平台的业务分类场景。
84.值得说明的是,本发明实施例中,抓包模块101和通道接收模块102都具zmq组件,主动时间戳注入机制,mpls处理机制以及异步读写模式,都是基于zmq插件实现的。
85.本发明实施例中的抓包模块可以为抓包器、数据采集器,通道接收模块可以为通道接收器。
86.基于同一发明构思,如图2所示,本发明实施例提供一种基于zeromq的数据包传输设备,该数据包传输设备包括至少一个处理器200;以及与至少一个处理器200通信连接的存储器210;其中,存储器210存储有可被至少一个处理器200执行的指令,指令被至少一个处理器200执行,以使至少一个处理器200能够执行如下步骤:
87.基于zeromq,通过抓包模块将其采集到的数据包的头部封装队列标签,并发送至通道接收模块;
88.基于zeromq,通过通道接收模块对接收到的数据包进行解封装,得到每个数据包的队列标签;
89.通过通道接收模块根据每个数据包的队列标签对数据完整性进行校验。
90.可选的,至少一个处理器200具体用于:
91.若多个数据包的队列标签符合预设顺序,则通过通道接收模块确定数据完整,否则确定数据不完整。
92.可选的,至少一个处理器200具体用于:
93.若确定数据不完整,则通过通道接收模块等待接收抓包模块发送的封装后的数据包。
94.可选的,至少一个处理器200还用于:
95.针对通道接收模块中的每个消息队列,确定消息队列中存储的数据包的数量大于等于预设值,通过通道接收模块向抓包模块发送控制指令,以控制抓包模块停止发送数据
包。
96.可选的,基于zeromq,通过抓包模块将其采集到的数据包的头部封装队列标签,并发送至通道接收模块之后,至少一个处理器200还用于:
97.通过抓包模块为采集到的数据包注入时间戳。
98.可选的,至少一个处理器200还用于:
99.根据多协议标签交换技术,通过通道接收模块将接收到的具有相同转发处理方式的数据包设置业务标签,并将设置有相同的业务标签的数据包发送至终端。
100.基于相同的发明构思,本发明实施例还提供一种基于zeromq的数据包传输方法,应用于服务器,该方法的实现与上述装置的实现相似,重复之处不再赘述。
101.如图3所示,本发明实施例还提供一种基于zeromq的数据包传输方法包括:
102.s301、基于zeromq,通过抓包模块将其采集到的数据包的头部封装队列标签,并发送至通道接收模块;
103.s302、基于zeromq,通过通道接收模块对接收到的数据包进行解封装,得到每个数据包的队列标签;
104.s303、通过通道接收模块根据每个数据包的队列标签对数据完整性进行校验。
105.可选的,通过通道接收模块根据每个数据包的队列标签对数据完整性进行校验,包括:
106.若多个数据包的队列标签符合预设顺序,则通过通道接收模块确定数据完整,否则确定数据不完整。
107.可选的,若确定数据不完整,则:
108.通过通道接收模块等待接收抓包模块发送的封装后的数据包。
109.可选的,该方法还包括:
110.针对通道接收模块中的每个消息队列,确定消息队列中存储的数据包的数量大于等于预设值,通过通道接收模块向抓包模块发送控制指令,以控制抓包模块停止发送数据包。
111.可选的,基于zeromq,通过抓包模块将其采集到的数据包的头部封装队列标签,并发送至通道接收模块之后,还包括:
112.通过抓包模块为采集到的数据包注入时间戳。
113.可选的,该方法还包括:
114.根据多协议标签交换技术,通过通道接收模块将接收到的具有相同转发处理方式的数据包设置业务标签,并将设置有相同的业务标签的数据包发送至终端。
115.基于同一发明构思,本技术实施例提供一种计算机可读存储介质。可选地,计算机可读存储介质有计算机程序,计算机程序包括程序指令,程序指令当被计算机执行时,使计算机执行上述基于zeromq的数据包传输方法的步骤。由于本实施例中的计算机程序与前述图3所示的方法是基于同一构思下的发明,通过前述方法的详细描述,本领域技术人员可以清楚地了解本实施例中计算机程序的实施过程,所以为了说明书的简洁,在此不再赘述。
116.基于同一发明构思,本技术实施例提供一种计算机程序产品。可选地,计算机程序产品存储有计算机程序,计算机程序包括程序指令,程序指令当被计算机执行时,使计算机执行上述基于zeromq的数据包传输方法的步骤。由于本实施例中的计算机程序与前述图3
所示的方法是基于同一构思下的发明,通过前述方法的详细描述,本领域技术人员可以清楚地了解本实施例中计算机程序的实施过程,所以为了说明书的简洁,在此不再赘述。
117.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
118.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
119.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
120.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献