CN115643212A - 用于用户空间进行数据处理的方法、装置及电子设备 - Google Patents
用于用户空间进行数据处理的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115643212A CN115643212A CN202211266656.9A CN202211266656A CN115643212A CN 115643212 A CN115643212 A CN 115643212A CN 202211266656 A CN202211266656 A CN 202211266656A CN 115643212 A CN115643212 A CN 115643212A
- Authority
- CN
- China
- Prior art keywords
- data
- message data
- network
- network channel
- protocol
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种用于用户空间进行数据处理的方法、装置及电子设备,其中方法包括:获得报文数据;检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。上述方案提出了一种能够在异构网络中通过不同协议实现数据收发的实现,其在获得报文数据后,会基于第一网络通道的网络拥塞情况确定采用哪一种协议发送报文,从而有效保证了数据发送效率;该方案通过双重协议的方式,避免了第一协议在拥塞场景下对于其他链路带宽资源的抢占而导致的链路拥塞转移的现象。
Description
技术领域
本申请涉及数据处理技术,更具体的说,是涉及一种用于用户空间进行数据处理的方法、装置及电子设备。
背景技术
目前异构网络中多路径传输主要存在两种业务组网模型:多接入网络终端模型与多接入网络网关模型;这两种模型均基于MPTCP协议实现。然而,目前MPTCP协议在弱网络场景中仍旧存在比较明显的网络阻塞问题。
发明内容
有鉴于此,本申请提供如下技术方案:
一种用于用户空间进行数据处理的方法,包括:
获得报文数据;
检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;
基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
可选地,在所述检测第一网络通道的拥塞状态前,还包括:
确定所述报文数据为需发送到外网的报文数据;
将所述报文数据放入发送队列。
可选地,所述基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,包括:
确定所述第一网络通道的拥塞度不大于设定值;
通过所述第一网络通道发送放入发送队列中的所述报文数据。
可选地,所述基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,包括:
确定所述第一网络通道的拥塞度大于设定值;
将发送队列中的报文数据挂载至重传队列,所述发送队列和所述重传队列采用统一的流序列号管理机制;
通过所述第二网络通道发送所述重传队列中的报文数据。
可选地,所述获得报文数据后,还包括:
确定所述报文数据的数据流表,所述数据流表至少表征数据发送地址和数据接地址;
所述将所述报文数据放入发送队列,包括:
将所述报文数据放入与所述数据流表对应的发送队列。
可选地,还包括:
确定所述报文数据为通过外网接收到的报文数据;
将所述报文数据放入与所述数据流表对应的排序缓存队列;
发送在所述排序缓存队列中排序完成的报文数据。
可选地,还包括:
基于通过所述第二网络通道发送的报文数据的数据量扩展所述第一网络通道的数据发送资源。
可选地,所述获得报文数据,包括:
从将内核驱动映射成用户态的文件接口获得报文数据。
本申请还公开了一种用于用户空间进行数据处理的装置,包括:
报文获得模块,用于获得报文数据;
拥塞检测模块,用于检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;
发送决策模块,用于基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
进一步地,本申请还公开了一种电子设备,包括:
处理器;
存储器,用于存储所述处理器的可执行程序指令;
其中,所述可执行程序指令包括:获得报文数据;检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
经由上述的技术方案可知,本申请实施例公开了一种用于用户空间进行数据处理的方法、装置及电子设备,其中方法包括:获得报文数据;检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。上述方案提出了一种能够在异构网络中通过不同协议实现数据收发的实现,其在获得报文数据后,会基于第一网络通道的网络拥塞情况确定采用哪一种协议发送报文,从而有效保证了数据发送效率;该方案通过双重协议的方式,避免了第一协议在拥塞场景下对于其他链路带宽资源的抢占而导致的链路拥塞转移的现象,结合了两种协议的优点,能够满足应用对于高可靠和高带宽的场景需求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的多接入网关模式的实现架构示意图;
图2为本申请实施例公开的一种用于用户空间进行数据处理的方法流程图;
图3为本申请实施例公开的另一个用于用户空间进行数据处理的方法流程图;
图4为本申请实施例公开的用于用户空间进行数据处理的方案实现流程示意图;
图5为本申请实施例公开的用于用户空间进行数据处理方案的实现原理架构示意图;
图6为本申请实施例公开的一种用于用户空间进行数据处理的装置的结构示意图;
图7为本申请实施例公开的一种电子设备的结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下:
MPTCP:MultiPathTCP(MPTCP)由互联网工程任务组(IETF)MultiPathTCP工作组研发,其目的是允许传输控制协议(TCP)连接使用多个路径来最大化信道资源使用。MPTCP是在TCP基础进行了支持多路径的扩展,旨在通过同时使用多条路径,来提高网络的吞吐量以及网络的鲁棒性,其主要设计目标是提高吞吐量,并且保持对TCP的公平性。
GMA:通用多址协议,GAM协议是在UDP协议上进行支持多链路的扩展,旨在UDP协议上支持多链路传输,通过对UDP首部增加扩展字段实现业务流的多链路传输与校验。
eBPF:全称为Extended Berkeley Packet Filter,是一个用来做网络数据包过滤的模块,是从BPF(Berkeley Packet Filter)技术扩展而来的。BPF提供了一种在内核事件和用户程序事件发生时安全注入代码的机制,这就让非内核开发人员也可以对内核进行控制。eBPF则是对对BPF的一些扩展,将原本单一的数据包过滤事件逐步扩展到了内核态函数、用户态函数、跟踪点、性能事件(perf_events)以及安全控制等。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例可以应用于电子设备,该电子设备可作为终端或应用连接网络的网关设备,负责终端或应用与网络之间所有的数据收发。为了更好的理解本申请的应用场景,下面对异构网络中多路径传输的多接入网络网关模型进行介绍。
参见图1所示,为多接入网关模式的实现架构示意图。其中,终端与应用之间串接C-DP(client-date plane,客户端数据面,可理解为客户端的网络层,即网关)与S-DP(server-date plane,服务端数据面,可理解为客户端的网络层,即网关)设备,由C-DP与S-DP之间创建MTCP隧道,当C-DP接收到终端发送的数据后将其利用MPTCP隧道封装从而进行多网络传输,S-DP接收到报文后解除隧道封装后进行IP转发,从而实现终端与应用之间进行多网络传输。
本申请方案功能可通过独立的设备来实施,也可集成在上述C-DP与S-DP设备中。不论其以何种实施方式呈现,其均作为终端/应用与网络之间的关口,统一负责收发数据的转发处理。
图2为本申请实施例公开的一种用于用户空间进行数据处理的方法流程图。领域内技术人员可知,当前通过MPTCP或GAM协议进行数据转发时,所有的数据处理均在内核空间执行,用户空间并不参与;而本申请所述的数据处理方法均在用户空间执行,其可以拦截内核空间中网卡硬件接收到的报文数据,对其进行相应处理后再回发给内核空间的网卡硬件,由网卡硬件将其转发给特定对象。
参见图2所示,用于用户空间进行数据处理的方法可以包括:
步骤201:获得报文数据。
其中,所述报文数据可以是从内网接收到的报文数据。若本方法的实施主体位于终端侧,则报文数据是从内网中接收到的来自于终端的数据;若本方法的实施主体位于服务端,则报文数据是从内网中接收到的来自于服务端(APP)的数据。所述报文数据可以通过4G、5G、固定电话网络、wifi等网络中的任意一种网络传送而来,其采用的网络协议也不固定,可以是MPTCP协议,也可以是GMA协议。
在采用不同的网络协议传送时,报文数据的具有对应网络协议的封装,接收到报文数据后,仅需要基于对应的网络协议进行解封装处理就能够得到原始的传送数据,而后进行相关的处理,发送给服务端或指定的终端。
前文已经介绍到,本申请实施例所述方法应用于用户空间,其可以拦截内核空间中网卡硬件接收到的报文数据。本申请方案中,可采用eBPF技术实现直接从内核驱动层获得报文数据,而不需要经过内核协议栈;eBPF技术获得的报文数据可从将内核驱动映射成用户态的文件接口XDP(extended debug port,扩展调试端口)传送至用户空间。也即,获得报文数据的具体实现可以是从将内核驱动映射成用户态的文件接口XDP获得报文数据。
步骤202:检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据。
其中,所述第一协议可以但不限于是MPTCP协议。检测第一网络通道的拥塞状态,一个可能的实现方式是:通过第一网络通道的网络时延RTT(Round-Trip Time)来确定。网络时延RTT表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时延。当RTT的数值越大时,表征网络时延越大,第一网络通道的拥塞程度越高;而拥塞程度越高时,则第一网络通道发送报文数据也越慢。
当然,上述通过RTT来确定第一网络通道的拥塞状态的实现并不是唯一实现方式,当前或未来可能出现的其他确定第一网络通道的拥塞状态的方案,均可应用在本申请中以实现对第一网络通道拥塞状态的确定。
步骤203:基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
MPTCP协议具有高可靠性的传输特点,GAM协议具有高带宽的传输特点。为了便于理解,本申请实施例后续内容中将以第一协议为MPTCP协议、第二协议为GAM协议为例进行相关内容的介绍,但并不构成对本申请所采用网络协议的限制。
当确定第一网络通道的拥塞程度较低时,可以正常的使用第一网络通道发送报文数据,所述报文数据的发送效率也能够得到保证。当第一网络通道的拥塞程度较高时,可以明确如果仍旧采用第一网络通道来发送报文数据,则需要等待的时间会比较长,用户等待的响应时间会比较长,影响用户的使用体验;这种情况下,为了保证报文数据的及时发送,本申请实施例控制通过基于第二协议的第二网络通道对所述报文数据进行发送。也即,本申请方案将第一网络通道确定为默认的发送报文数据的玩过通道,当基于第一协议的第一网络通道比较拥塞时,才会采用不拥塞的基于第二协议的第二网络通道来发送数据。
由此,本申请方案可以基于两种不同的协议发送报文数据,其实现原则是准备两条基于不同网络协议的数据发送通道,在采用第一协议可以快速完成报文数据发送时,采用对应第一协议的网络通道发送报文;在采用第二协议无法快速完成报文数据发送时,采用另一条对应第二协议的网络通道发送报文,从而在第一网络通道拥塞程度较高时,不需要长时间的排队等待发送。该方案完成报文数据的发送可同时采用MPTCP协议和GAM协议,从而能够有效结合两种协议的优点,具有高可靠性和高带宽的特点。
本申请实施例方案能够在异构网络中通过不同协议实现数据收发,其在获得报文数据后,会基于第一网络通道的网络拥塞情况确定采用哪一种协议发送报文,从而有效保证了数据发送效率;该方案通过双重协议的方式,避免了第一协议在拥塞场景下对于其他链路带宽资源的抢占而导致的链路拥塞转移的现象,结合了两种协议的优点,能够满足应用对于高可靠和高带宽的场景需求。
上述实施例内容中,在步骤检测第一网络通道的拥塞状态前,还可以包括:确定所述报文数据为需发送到外网的报文数据。
可以理解的,执行本申请实施例所述方法的主体类似于一个网关设备,其负责传输处理的数据是双向的。以该设备为终端侧的网关设备为例,其可以将从终端接收的报文数据发送到外网,最终传送到服务端,也可以从外网接收来自于服务端的报文数据,并将其路由发送给对应的终端。因此,在获得报文数据后,有必要首先判断其流向。若报文数据是需要发送给外网的数据,则可以将所述报文数据放入发送队列,该发送队列为存放需要发送到外网的数据的队列。而若报文数据是需要发送给内网设备的数据,则可以存放到对应内网设备的队列,这部分内容将在后面的实施例内容中详细介绍,在此不再过多说明。
以上对所有获得的报文数据,基于其数据流向对报文数据进行分流处理,确保需要发送给外网的报文数据能够准确发送到外网,需要发送给内网设备的报文数据可以准确的路由到目标设备,保障了数据转发工作的高效准确执行。
本申请该实现中,可以将第一网络通道的拥塞度进行量化,通过量化后的拥塞度与系统预先存储的设定值进行比较,根据比较结果确定采用哪一个网络通道,也即采用哪个网络协议发送所述报文数据。
前文介绍到,可以通过网络时延RTT来确定第一网络通道的拥塞度。RTT的数量级一般为毫秒(ms),通过配置设定值,将RTT对应的时间值与设定值进行比较。其中的设定值可以通过标定获得。若RTT大于设定值,表征第一网络通道的拥塞度较高,已不适宜发送报文数据;为了保证报文数据的及时发送,控制通过第二协议的第二网络通道发送报文数据。若RTT不大于设定值,表征第一网络通道的拥塞度不高,能够满足发送报文数据的速度需求,则可以采用默认的第一网络通道发送报文数据。
本实现方案,通过将第一网络通道的拥塞度量化,使得系统可通过与设定值的比较定量的确定第一网络通道的拥塞度是否满足条件。在拥塞度不大于设定值时,基于默认的第一网络通道发送报文数据;在拥塞度大于设定值时,通过当前发送速度更快的第二网络通道发送所述报文数据,保证了数据发送时效。
图3为本申请实施例公开的另一个用于用户空间进行数据处理的方法流程图。结合图3所示,用于用户空间进行数据处理的方法可以包括:
步骤301:获得报文数据。
步骤302:检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据。
步骤303:确定所述第一网络通道的拥塞度不大于设定值,通过所述第一网络通道发送放入发送队列中的所述报文数据。
第一网络通道的拥塞度不大于设定值的情况下,由第一网络通道负责报文数据的发送。第一网络通道基于MPTCP协议实现。由于需要发送到外网的报文数据通常会按照接收顺序依次存放在发送队列,由此所述第一网络通道可以直接从发送队列中取出报文数据并进行MPTCP协议的封装处理,并在封装处理后发送出去。需要说明的是,这里所述的将发送报文数据,并不是直接将报文数据发送到外网上。本实施例所述数据处理方法是在用户空间执行的,而在用户空间,是没有将报文数据发送到外网的权项的。因此,在用户空间将报文数据进行MPTCP协议的封装处理后,会通过XDP接口,基于eBPF技术将封装好的报文数据发送到内核空间的网卡硬件,由网卡硬件将封装好的报文数据发送至外网。
步骤304:确定所述第一网络通道的拥塞度大于设定值;将发送队列中的报文数据挂载至重传队列。
第一网络通道的拥塞度不大于设定值的情况下,由第二网络通道负责报文数据的发送。第二网络通道可基于GAM协议实现。本申请实施例中,第二网络通道不能够直接从发送队列获得报文数据,若第一网络通道和第二网络通道共享发送队列,则会造成发送内容的混乱,各个通道发送的报文数据的界限并不清晰。因此,本实现中,管理控制第一网络通道的处理模块仅能从发送队列获取报文数据,而管理控制第二网络通道的处理模块仅能从重传队列获取报文数据,以避免发送的报文数据界限不清晰,容易发生的数据漏传或重复发送的情况。
本实施例中,在确定第一网络通道的拥塞度较高,不适宜发送所述报文数据的情况下,管理控制第一网络通道的处理模块会控制将发送队列中的所述报文数据挂载到重传队列中,并且可选的,可以进一步通知管理控制第二网络通道的处理模块第一网络通道当前的拥塞度比较高。
其中,所述发送队列和所述重传队列采用统一的流序列号管理机制。也即,虽然系统接收到的报文数据可以基于不同的网络协议通过不同的网络通道发送,但第一网络通道和第二网络通道所发送的报文数据采用统一的流序列号。例如,第一网络通道发送了第一数报文数据中的①②③数据包,第二网络通道发送了第一报文数据中的④⑤⑥,这样,即使通过不同的网络协议将第一报文数据发出,但在接收端也可以基于第一报文数据的标识以及数据包的序列号正确的对第一报文数据的各个数据包进行正确的排序组装,为业务数据在不同网络协议之间的无缝传输提供基础支持。通过统一的流序列管理机制,实现了MTCP与GMA协议的统一流管理。
步骤305:通过所述第二网络通道发送所述重传队列中的报文数据。
管理控制第二网络通道的处理模块可以周期性的检测重传队列,若检测到重传队列中挂载了报文数据,则自动从所述重传队列中获取报文数据并处理发送。或者,管理控制第二网络通道的处理模块在接收到管理控制第一网络通道的处理模块发送的拥塞消息时,再从重传队列中获取报文数据进行处理发,并通过所述第二网络通道进行发送。在检测到第一网络数据的拥塞状态解除后,也即拥塞度降到设定值一下时,管理控制第一网络通道的处理模块也可以将拥塞解除消息发送给管理控制第二网络通道的处理模块,之后回复由第一网络通道发送报文数据。
所述第二网络通道和所述第一网络通道发送出的报文数据的目的地是一致的,即内核空间的网卡硬件。此处的网卡硬件仅负责将来自于第一网络通道或第二网络通道接收到的报文数据转发至外网。
本实施例内容详细介绍了基于拥塞状态确定采用第一网络通道或第二网络通道发送所述报文数据的具体实现,其中,第一网络通道在拥塞度较低时负责发送列表中报文数据的发送,第二网络通道负责重传列表中报文数据的发送,实现中发送队列和所述重传队列采用统一的流序列号管理机制,为业务数据在不同网络协议之间的无缝传输提供基础支持,且MPTCP协议与GAM协议共享发送队列与重传队列,实现了业务流在不同协议之间的无缝切换。
一个实现中,用于用户空间进行数据处理的方法在获得报文数据后,还可以包括:确定所述报文数据的数据流表,所述数据流表至少表征数据发送地址和数据接收地址。
本实施例中,不会将所有接收到的报文数据均放在一个数据流中,而是会根据报文数据的来源地和目的地创建不同的数据流表。实现中会将来源地和目的地均相同的报文数据分配到同一个数据流表中,而报文数据中来源地和目的地中至少一个不相同的报文数据,必然会分配到不同的数据流表。例如,来源地包括A、B、C,目的地包括M、N,共可以有6个数据流表,即A→M、A→N、B→M、B→N、C→M和C→N。示例中,第一个报文数据来源于A,目的地为N,分配到A→N数据流表;第二个报文数据来源于B,目的地为N,分配到B→N数据流表,第三个报文数据来源于A,目的地为N,同样分配到A→N数据流表。
具体的,确定报文数据的数据流表,可以基于报文数据中的五元组信息来确定。五元组信息中记载了报文数据的源IP地址,源端口,目的IP地址,目的端口和传输层协议,因此可以基于五元组信息很快的确定出该报文数据所属的数据流表。对应的,发送队列和重传队列也可以与数据流表对应的有多个,也即,每一个数据流表都有自己对应的发送队列和重传队列,每个报文数据在放入发送队列或重传队列时,也是存放进与其数据流表对应的发送队列或重传队列。
如果将多个来源地和/或目的地不同的报文数据都放在一个达到数据流中,在其中某个报文数据发送失败时,该报文数据会风反复的重新发送直至发送成功,这样使得该报文数据后面的其他数据也阻塞在后面无法发送。本实施例中,之所以基于数据流表创建发送队列和重传队列,是为了让不同数据流之间的传送互不影响。针对不同的数据流单独配置对应的发送队列和重传队列,这样,在某个数据流阻塞后,不会影响其他业务数据流的传输,从而减少头阻塞带来的影响,整体上也保证了业务数据的发送效率。
本实施例所述用于用户空间进行数据处理的方法接收到的报文数据可以来自于外网,也可以来自于内网设备。前文介绍的内容均是以报文数据来自于内网设备的实现介绍。实际应用中,当接收到的报文数据为通过外网接收到的报文数据时,方法还可以包括:将所述报文数据放入排序缓存队列;发送在所述排序缓存队列中排序完成的报文数据。
图4为本申请实施例公开的用于用户空间进行数据处理的方案实现流程示意图,其示出了一个比较完整的数据处理流程。对于其中前文已经涉及到流程步骤,在前文的实施例中都已进行过详细的介绍,在此不再过多重复。下面将对于接收到的报文数据为通过外网接收到的报文数据时的执行步骤做详细介绍。
在接收到的报文数据为通过外网接收到的报文数据时,去除掉报文数据的封装,得到原始的报文数据,然后可以将原始的报文数据放入排序缓存队列。一组业务数据可能包括多个报文数据包,这些报文数据包可以通过不同的网络、不同的协议发送而来,由于基于的网络协议和网络的不同,不同的报文数据包到达网关设备的时间也不相同,这就使得接收到的属于同一组业务数据的多个报文数据包的顺序已打乱。为了得到原本的业务数据,需要将接收到的多个报文数据包按照其携带的序号进行排序。因此,在接收到报文数据后,不会直接将其路由给网内设备,而是会在一组业务数据中所有的报文数据包都接收到后,重新拍好顺序后发送给目的设备。
当然,在会确认报文数据的数据流表的其他实现中,排序缓存队列也会包括多个,一个数据流表对应有一个排序缓存队列。则在将报文数据放入排序缓存队列时,会将其放入与其数据流表对应的排序缓存队列。与将报文数据发送至外网的原理相同,在将所有需要路由到内网设备的所有的报文数据均放在一个数据流中时,当其中某个报文数据阻塞后,会使得后面所有排队等到发送的报文数据均拥塞在后方,形成头阻塞,影响报文发送效率。在区分数据流表时,一个数据流的阻塞不会影响到其他数据流的报文发送,从而保证报文的整体发送速度。
一个实现中,用于用户空间进行数据处理的方法除了前述实施例介绍的各个流程步骤外,还可以包括:基于通过所述第二网络通道发送的报文数据的数据量扩展所述第一网络通道的数据发送资源。
本申请实现中,只有在第一网络通道拥塞度比较高时,才会启用第二网络通道发送报文数据。而第一网络通通道之所以会发生拥塞,抛开网络信号等不可控的因素外,还可能是第一网络通道的配置资源匮乏。因此,在第二网络通道发送了报文数据后,管理控制第二网络通道的处理模块可以将第二网络通道发送的报文数据的数据量反馈给管理控制第一网络通道的处理模块,以使得其基于第二网络通道发出的报文数据的数据量明确报文发送需求,适应性的扩展第一网络通道的数据发送资源。例如,第一网络通道扩展前每秒可以发送5个报文数据包,而扩展后每秒可以发送7个报文数据包。
其他实现中,后续在检测到第一网络通道长时间处于空闲状态,或者固定时间段内空闲状态占比高于设定的数值时,则可以动态的缩减第一网络通道的数据发送资源,避免造成相关资源的空闲浪费。至于缩减资源的缩减量或缩减比例,可以根据实际应用场景来进行配置。其中的“长时间”、“固定时间段”、“设定的数值”等,均可以基于实际情况或行业经验来设定,本申请对此并不做固定限制。
本实施例中,可基于需要发送的报文数据的数据量动态的扩展或缩减第一网络通道的数据发送资源,使得在报文数据量比较大时,及时扩展第一网络通道的数据发送资源,保证仍然能够高可靠的、快速高效的完成报文数据的发送;而在报文数据量比较小时,缩减第一网络通道的数据发送资源,避免不必要的资源浪费。
图5为本申请实施例公开的用于用户空间进行数据处理方案的实现原理架构示意图。图5可以为终端侧的网关设备的部分架构图。其中,本申请所述行数据处理方案的实现均在用户空间的多网络业务转发模块中完成。整个方案的数据处理如下:图5中左下角内核空间的网卡硬件接收到数据报文并传送至接收换,用户空间的多网络业务转发模块通过XDP接口,基于eBPF技术从接收换获得报文数据;获得报文数据后,首先进行应用流表管理,即确定报文数据的数据流表;在确定报文数据为需要发送至外网的数据时,报文数据从应用流标管理模块向右流出存放进发送队列;MPTCP协议处理模块实时检测第一网络通道的拥塞度,拥塞度低时控制从发送队列获取报文数据,并通过基于MPTCP协议的第一网络通道发送报文数据至发送环,通过网卡硬件发送至外网;拥塞度高时控制将发送队列的报文数据挂载到重传队列,并将拥塞消息通知给GMA协议处理模块;GMA协议处理模块收到通知后从重传队列获取报文数据,并通过基于MPTCP协议的第二网络通道发送报文数据至发送环,通过网卡硬件发送至外网;在确定报文数据为从外网接收的数据时,报文数据从应用流标管理模块向下流出存放进排序缓存队列,待排序完成后,将相应的报文数据通过内核协议栈传送到发送换,通过网卡硬件路由给目标内网设备。
结合图5所示,一个具体实现中,数据处理流程可以包括:
1、创建XDP接口从网卡硬件接收环中获取接收到的业务报文,并根据报文的五元组信息创建数据流表;
2、当报文数据由MPTCP隧道或GMA隧道封装,则解除隧道封装后,假如为TCP报文则将报文挂载至该流表下的排序缓存队列中,根据TCP包的SN号进行排序后转发至Linux内核,由协议栈查找路由后进行转发;假如为UDP报文则直接将报文转发至Linux内核协议栈由其进行报文转发;
3、假如为应用报文(需要发送至外网的报文数据)则根据报文的五元组信息将其挂载至对应流表下的发送队列中,由MPTCP协议处理模块进行封装,处理后通过XDP接口将其挂载至硬件网卡的发送环中进行多网络发送;
4、MPTCP协议处理模块根据报文发送的时间戳与接收端ACK时间戳计算当前链路的RTT指数;
5、当RTT指数超过某一阈值后,MPTCP协议处理模块向GMA协议处理模块发送拥塞通告消息,并且将发送队列中的业务报文挂载至该流表下的重传队列中;
6、GMA协议处理模块接收到拥塞通告后,从重传队列中取出业务报文,填充GMA首部,并根据路径策略选择最优线路进行发送而无需等待对端的ACK应答;
7、GMA协议处理模块发送成功后向MPTCP上报发送通知事件,通知MPTCP对本地窗口进行扩充处理,以满足后续报文的发送需求;当链路的RTT数值减低到阈值后,MPTCP处理模块协议向GMA协议处理模块发送拥塞解除消息,后续业务报文由MPTCP协议处理模块进行可靠传输。
本申请方案利用XDP接口和eBPF技术将MPTCP协议从内核态转移至用户态,为协议实现提高了灵活度,为双协议切换进行数据发送的实现提供了基础,方案会基于第一网络通道的网络拥塞情况确定采用哪一种协议发送报文,通过双重协议的方式,避免了第一协议在拥塞场景下对于其他链路带宽资源的抢占而导致的链路拥塞转移的现象,能够有效提升数据发送效率,提升用户使用体验。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
上述本申请公开的实施例中详细描述了方法,对于本申请的方法可采用多种形式的装置实现,因此本申请还公开了一种装置,下面给出具体的实施例进行详细说明。
图6为本申请实施例公开的一种用于用户空间进行数据处理的装置的结构示意图。参见图6所示,用于用户空间进行数据处理的装置60可以包括:
报文获得模块601,用于获得报文数据。
拥塞检测模块602,用于检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据。
发送决策模块603,用于基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
本实施例所述用于用户空间进行数据处理的方案能够在异构网络中通过不同协议实现数据收发的实现,其在获得报文数据后,会基于第一网络通道的网络拥塞情况确定采用哪一种协议发送报文,从而有效保证了数据发送效率;该方案通过双重协议的方式,避免了第一协议在拥塞场景下对于其他链路带宽资源的抢占而导致的链路拥塞转移的现象,结合了两种协议的优点,能够满足应用对于高可靠和高带宽的场景需求。
一个实现中,装置还包括:数据流管理模块,用于确定所述报文数据为需发送到外网的报文数据;将所述报文数据放入发送队列。
一个实现中,发送决策模块具体可用于:确定所述第一网络通道的拥塞度不大于设定值;通过所述第一网络通道发送放入发送队列中的所述报文数据。
一个实现中,发送决策模块具体可用于:确定所述第一网络通道的拥塞度大于设定值;将发送队列中的报文数据挂载至重传队列,所述发送队列和所述重传队列采用统一的流序列号管理机制;通过所述第二网络通道发送所述重传队列中的报文数据。
一个实现中,装置还包括:流表确定模块,用于确定所述报文数据的数据流表,所述数据流表至少表征数据发送地址和数据接收地址;则所述数据流管理模块用于将所述报文数据放入与所述数据流表对应的发送队列。
一个实现中,流管理模块还用于:确定所述报文数据为通过外网接收到的报文数据;将所述报文数据放入与所述数据流表对应的排序缓存队列;装置还包括:排序管理模块,用于发送在所述排序缓存队列中排序完成的报文数据。
一个实现中,装置还包括:资源管理模块,用于基于通过所述第二网络通道发送的报文数据的数据量扩展所述第一网络通道的数据发送资源。
一个实现中,报文获得模块具体用于:从将内核驱动映射成用户态的文件接口获得报文数据。
上述实施例中的所述的任意一种用于用户空间进行数据处理的装置包括处理器和存储器,上述实施例中的报文获得模块、拥塞检测模块、发送决策模块、数据流管理模块、流表确定模块、排序管理模块等均作为程序模块存储在存储器中,由处理器执行存储在所述存储器中的上述程序模块来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序模块。内核可以设置一个或多个,通过调整内核参数来实现回访数据的处理。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
在示例性实施例中,还提供了一种计算机可读存储介质,可直接加载到计算机的内部存储器,其中含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述用于用户空间进行数据处理的方法任一实施例所示步骤。
在示例性实施例中,还提供一种计算机程序产品,可直接加载到计算机的内部存储器,其中含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述所述的用于用户空间进行数据处理的方法任一实施例所示步骤。
进一步,本申请实施例提供了一种电子设备。图7为本申请实施例公开的一种电子设备的结构示意图。参见图7所示,电子设备70包括至少一个处理器701、以及与处理器连接的至少一个存储器702、总线703;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的可执行程序指令,以执行上述的用于用户空间进行数据处理的方法。
其中,所述可执行程序指令包括:获得报文数据;检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种用于用户空间进行数据处理的方法,包括:
获得报文数据;
检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;
基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
2.根据权利要求1所述的方法,在所述检测第一网络通道的拥塞状态前,还包括:
确定所述报文数据为需发送到外网的报文数据;
将所述报文数据放入发送队列。
3.根据权利要求1所述的方法,所述基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,包括:
确定所述第一网络通道的拥塞度不大于设定值;
通过所述第一网络通道发送放入发送队列中的所述报文数据。
4.根据权利要求1所述的方法,所述基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,包括:
确定所述第一网络通道的拥塞度大于设定值;
将发送队列中的报文数据挂载至重传队列,所述发送队列和所述重传队列采用统一的流序列号管理机制;
通过所述第二网络通道发送所述重传队列中的报文数据。
5.根据权利要求2所述的方法,所述获得报文数据后,还包括:
确定所述报文数据的数据流表,所述数据流表至少表征数据发送地址和数据接收地址;
所述将所述报文数据放入发送队列,包括:
将所述报文数据放入与所述数据流表对应的发送队列。
6.根据权利要求5所述的方法,还包括:
确定所述报文数据为通过外网接收到的报文数据;
将所述报文数据放入与所述数据流表对应的排序缓存队列;
发送在所述排序缓存队列中排序完成的报文数据。
7.根据权利要求1所述的方法,还包括:
基于通过所述第二网络通道发送的报文数据的数据量扩展所述第一网络通道的数据发送资源。
8.根据权利要求1所述的方法,所述获得报文数据,包括:
从将内核驱动映射成用户态的文件接口获得报文数据。
9.一种用于用户空间进行数据处理的装置,包括:
报文获得模块,用于获得报文数据;
拥塞检测模块,用于检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;
发送决策模块,用于基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
10.一种电子设备,包括:
处理器;
存储器,用于存储所述处理器的可执行程序指令;
其中,所述可执行程序指令包括:获得报文数据;检测第一网络通道的拥塞状态,其中,所述第一网络通道基于第一协议传送数据;基于所述拥塞状态确定采用所述第一网络通道或第二网络通道发送所述报文数据,其中,所述第二网络通道基于不同于所述第一协议的第二协议传送数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211266656.9A CN115643212A (zh) | 2022-10-17 | 2022-10-17 | 用于用户空间进行数据处理的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211266656.9A CN115643212A (zh) | 2022-10-17 | 2022-10-17 | 用于用户空间进行数据处理的方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115643212A true CN115643212A (zh) | 2023-01-24 |
Family
ID=84944107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211266656.9A Pending CN115643212A (zh) | 2022-10-17 | 2022-10-17 | 用于用户空间进行数据处理的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115643212A (zh) |
-
2022
- 2022-10-17 CN CN202211266656.9A patent/CN115643212A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11005685B2 (en) | Methods and systems for transmitting packets through aggregated end-to-end connection | |
US7643427B2 (en) | Multipath routing architecture for large data transfers | |
JP2020502948A (ja) | パケット伝送システムおよび方法 | |
KR100454502B1 (ko) | 아이피 라우터에서 VoIP 트래픽에 대한 QoS를제공하는 장치 및 포워딩방법 | |
JP5016034B2 (ja) | 圧縮ベースQoSのための方法及びシステム | |
WO2020022209A1 (ja) | ネットワーク制御装置及びネットワーク制御方法 | |
US7158480B1 (en) | Feedback output queuing system, apparatus, and method | |
CN112702274B (zh) | 战术瞄准网络技术中基于路由稳定性的跨层拥塞控制方法 | |
US20050220097A1 (en) | Expedited data transmission in packet based network | |
CN110661723A (zh) | 一种数据传输方法、计算设备、网络设备及数据传输系统 | |
US20060203730A1 (en) | Method and system for reducing end station latency in response to network congestion | |
CN100377544C (zh) | 包通信系统和传送设备 | |
JP2008546328A (ja) | スケジュールされたパケット送給システム及び方法 | |
JP2002009832A (ja) | ネットワーク中継装置およびパケット結合方法 | |
WO2001045331A1 (en) | Congestion control method for a packet-switched network | |
JP2012075173A (ja) | 動的なモードドリブンリンク管理のためのシステム及び方法 | |
JP2009542113A (ja) | フォルトトレラントQoSのための方法及びシステム | |
CN104704783A (zh) | Tcp映射的系统和方法 | |
US20230026835A1 (en) | Communication device and communication method | |
KR101849302B1 (ko) | 이종 망에서 다중 경로 전송제어프로토콜(tcp)의 혼잡 윈도우 제어 방법 | |
CN113347681B (zh) | 数据传输方法、装置、存储介质及电子装置 | |
CN112822720B (zh) | 无人机组网技术中基于mac层链路质量的跨层拥塞控制方法 | |
CN112737940A (zh) | 一种数据传输的方法和装置 | |
JP2014518047A (ja) | 適応性の伝送キュー長を用いたデータパケット損失低減システムおよび方法 | |
JP2006197473A (ja) | ノード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |