CN117336810A - 数据处理方法、数据处理装置、电子设备及存储介质 - Google Patents

数据处理方法、数据处理装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117336810A
CN117336810A CN202311279115.4A CN202311279115A CN117336810A CN 117336810 A CN117336810 A CN 117336810A CN 202311279115 A CN202311279115 A CN 202311279115A CN 117336810 A CN117336810 A CN 117336810A
Authority
CN
China
Prior art keywords
message data
forwarding path
proxy
information
routing information
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
Application number
CN202311279115.4A
Other languages
English (en)
Inventor
刘雅彬
徐勇
聂乐乐
王艳伟
史菲菲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Telecom Technology Innovation Center
China Telecom Corp Ltd
Original Assignee
China Telecom Technology Innovation Center
China Telecom Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Telecom Technology Innovation Center, China Telecom Corp Ltd filed Critical China Telecom Technology Innovation Center
Priority to CN202311279115.4A priority Critical patent/CN117336810A/zh
Publication of CN117336810A publication Critical patent/CN117336810A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/645Splitting route computation layer and forwarding layer, e.g. routing according to path computational element [PCE] or based on OpenFlow functionality

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供了一种数据处理方法、数据处理装置、电子设备及计算机可读存储介质,属于网络通信技术领域。该方法包括:接收客户端发送的报文数据,并确定所述报文数据的转发路径是否为代理转发路径;当所述报文数据的转发路径为代理转发路径时,获取所述报文数据的原始路由信息并存储;响应于触发连接目标服务端,调用所述原始路由信息;基于所述原始路由信息查找所述报文数据的转发路径,并根据所述转发路径,将所述报文数据发送至所述目标服务端。本公开可以准确、有效的确定报文数据的转发路径。

Description

数据处理方法、数据处理装置、电子设备及存储介质
技术领域
本公开涉及网络通信技术领域,尤其涉及一种数据处理方法、数据处理装置、电子设备及计算机可读存储介质。
背景技术
网络代理技术,可以在客户端与服务端之间建立一个中间层,代理服务器作为中间层,可以拦截客户端和服务端之间的所有通信数据。一些网关可以借助代理服务器实现对数据流量的监控、过滤、检测等。此外,数据在互联网中的传输,离不开路由,例如策略路由可以基于报文数据的路由信息匹配转发路径。然而,现有技术中,当报文数据经过代理服务器进行处理后,往往会使得路由信息发生改变,使得路由只能根据更变后的路由信息查询转发路径,导致路径查询失败或查询结果有误的情况。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开提供了一种数据处理方法、数据处理装置、电子设备及计算机可读存储介质,进而至少在一定程度上克服现有技术中难以根据变更后的路由信息,进行转发路径的准确查询的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种数据处理方法,应用于中间层,包括:接收客户端发送的报文数据,并确定所述报文数据的转发路径是否为代理转发路径;当所述报文数据的转发路径为代理转发路径时,获取所述报文数据的原始路由信息并存储;响应于触发连接目标服务端,调用所述原始路由信息;基于所述原始路由信息查找所述报文数据的转发路径,并根据所述转发路径,将所述报文数据发送至所述目标服务端。
在本公开的一种示例性实施例中,所述中间层包括代理节点;当所述报文数据的转发路径为代理转发路径时,所述接收客户端发送的报文数据,包括:接收客户端发送的报文数据,并将所述报文数据引流到所述中间层的预设虚拟接口;通过所述预设虚拟接口将所述报文数据发送至所述代理节点,以使所述代理节点对所述报文数据进行处理。
在本公开的一种示例性实施例中,所述将所述报文数据引流到所述中间层的预设虚拟接口,包括:获取透明代理的第一配置信息和策略路由的第二配置信息;根据所述第一配置信息和所述第二配置信息,将所述报文数据引流到所述中间层的预设虚拟接口。
在本公开的一种示例性实施例中,所述确定所述报文数据的转发路径是否为代理转发路径,包括:从所述报文数据中提取转发路径的标志位信息,并根据所述标志位信息判断所述报文数据的转发路径是否为代理转发路径。
在本公开的一种示例性实施例中,所述当所述报文数据的转发路径为代理转发路径时,获取所述报文数据的原始路由信息并存储,包括:当所述报文数据的转发路径为代理转发路径时,创建第一结构体以及客户端套接字;将获取的所述报文数据的原始路由信息添加至所述第一结构体中;响应于用户态的代理进程接收到所述报文数据,从所述第一结构体中获取所述原始路由信息,并将所述原始路由信息添加至所述代理进程的客户端套接字中。
在本公开的一种示例性实施例中,所述方法还包括:创建第二结构体以及服务端套接字,并将所述客户端套接字与所述服务端套接字进行关联;基于与所述客户端套接字关联后的所述服务端套接字,将所述原始路由信息发送并存储至所述第二结构体。
在本公开的一种示例性实施例中,所述响应于触发连接目标服务端,调用所述原始路由信息,包括:响应于所述服务端套接字通过预设操作指令与目标服务端进行连接,从所述第二结构体中调用所述原始路由信息。
在本公开的一种示例性实施例中,所述基于所述原始路由信息查找所述报文数据的转发路径,包括:基于所述原始路由信息构建路由查询条件,根据所述路由查询条件查找所述报文数据的转发路径。
根据本公开的一个方面,提供一种数据处理装置,包括:数据接收模块,用于接收客户端发送的报文数据,并确定所述报文数据的转发路径是否为代理转发路径;信息获取模块,用于当所述报文数据的转发路径为代理转发路径时,获取所述报文数据的原始路由信息并存储;信息调用模块,用于响应于触发连接目标服务端,调用所述原始路由信息;路径查找模块,用于基于所述原始路由信息查找所述报文数据的转发路径,并根据所述转发路径,将所述报文数据发送至所述目标服务端。
根据本公开的一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
本公开的示例性实施例具有以下有益效果:
接收客户端发送的报文数据,并确定报文数据的转发路径是否为代理转发路径;当报文数据的转发路径为代理转发路径时,获取报文数据的原始路由信息并存储;响应于触发连接目标服务端,调用原始路由信息;基于原始路由信息查找报文数据的转发路径,并根据转发路径,将报文数据发送至目标服务端。一方面,本示例性实施例提出一种新的数据处理方法,考虑客户端发送的报文数据在经过中间层的代理处理后,其路由信息可能会发生变化,因此提出对原始路由信息进行存储,从而使得中间层在向目标服务端转发客户端发送的报文数据时,无论该报文数据是否经过代理转发,都能够根据原始路由信息匹配转发路径,保证转发路径确定的准确性和有效性;另一方面,本示例性实施例通过对报文数据转发路径的简单判断,并在确定为代理转发路径时对原始路由信息进行保存,通过简单、便捷的方式,即能够实现策略路由的查询有效性,适用范围较为广泛。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出本示例性实施例中一种数据处理方法的系统架构示意图;
图2示意性示出本示例性实施例中一种数据处理方法的流程图;
图3示意性示出本示例性实施例中一种原始路由信息传递路径的架构示意图;
图4示意性示出本示例性实施例中一种数据处理方法的架构示意图;
图5示意性示出本示例性实施例中一种数据处理装置的结构框图;
图6示意性示出本示例性实施例中一种用于实现上述方法的电子设备。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
本公开的示例性实施例首先提供了一种数据处理方法,应用于中间层。图1示出了本示例性实施例的运行环境的一种系统架构示意图,参考图1所示,该系统100可以包括客户端110,中间层120以及服务端130。其中,客户端110也可以是用户端,其可以是用户使用的平板电脑或个人电脑等电子设备;中间层120可以包括代理节点和路由节点,分别用于实现代理功能和路由功能,中间层120可以是路由器、集成路由转发功能的代理服务器或其他安全设备WAF(Web Application Firewall,Web应用防护系统)等,该中间层120可以接收客户端110发送的报文数据,并将其转发至服务端130,以使客户端110与服务端130建立连接;服务端130可以为客户端110提供数据服务等。
应当理解,图1中所示各装置的数据仅为示例性的,根据实际需要,可以设置任意数目的用户端、中间层或服务端,服务端也可以是由多个服务器组成的服务器集群。
基于上述说明,本示例性实施例中的方法可以应用于图1所示的中间层120上。
下面结合附图1对本示例性实施例做进一步说明,如图2所示,数据处理方法可以包括以下步骤S210~S240:
步骤S210,接收客户端发送的报文数据,并确定报文数据的转发路径是否为代理转发路径。
其中,报文数据是指客户端向服务端发送的数据,其可以是任意数据,例如请求与服务器建立连接的报文数据,请求获取服务器信息的报文数据,或者包括具体传输内容的报文数据等。在本示例性实施例中,中间层可以包括代理节点和路由节点,以保证中间层能够同时具有代理功能和策略路由的功能,其中,代理节点可以用于对客户端发送的报文数据进行处理,例如对数据的合法性进行校验,对数据的转发进行控制或登记,或者对数据进行缓存或过滤等等,该代理节点可以是透明代理节点,即代理节点对报文数据的处理对客户端和服务端来说,可以是透明的,无感知的;路由节点可以是策略路由节点,该策略路由是一种相比于常规路由更加灵活的数据包路由转发机制,其策略路由可以基于多种因素来控制报文数据的转发路径,例如可以基于源IP(Internet Protocol,网络互连协议)、目的IP、源端口、目的端口、入接口、出接口、TOS(Type Of Service,服务类型)等路由信息,来确定转发路径。
在本示例性实施例中,中间层在接收到客户端发送的报文数据后,可以先通过代理节点对其进行处理,再通过策略路由确定转发路径,将报文数据发送至目标服务端;或者,中间层接收到客户端发送的报文数据后,直接通过策略路由确定转发路径,将报文数据发送至目标服务端。报文数据的转发路径为代理转发路径即为,中间层在接收到报文数据后需要经过代理节点进行处理,再通过策略路由确定转发路径的路径。
在一示例性实施例中,上述确定报文数据的转发路径是否为代理转发路径,包括:
从报文数据中提取转发路径的标志位信息,并根据标志位信息判断报文数据的转发路径是否为代理转发路径。
报文数据中可以包括标志位信息,用于表征报文数据是否需要经过代理节点处理,该标志位信息可以是预先配置在报文数据中的信息,例如可以在报文数据中配置标志位信息mark,通过识别该标志位确定报文数据的转发路径是否为代理转发路径,若识别mark为“1”,确定报文数据的转发路径为代理转发路径,若识别mark为“0”,确定报文数据的转发路径不是代理转发路径。
步骤S220,当报文数据的转发路径为代理转发路径时,获取报文数据的原始路由信息并存储。
路由信息是指报文数据携带的相关数据,路由节点可以基于该路由信息进行路由或转发路径的查询,具体路由信息可以包括源IP、目的IP、源端口、目的端口、入接口、出接口、TOS等。
在本示例性实施例中,若客户端发出的数据报文不需要经过代理节点处理,即为正常的转发流程时,路由节点可以根据准确的路由信息进行路径查询过程。若客户端发出的数据报文需要经过代理节点处理,如透明代理转发流程,则当代理节点处理完成后,路由信息将会发生变更,例如当报文数据为代理转发路径时,报文数据会被引流到中间层的虚拟接口,如路由设备的本地环回接口,当代理节点对报文数据进行处理之后,会将其再从本机发出,并发送给服务端,而从本机发出的数据报文将会对虚拟接口进行修改,如将入接口修改为本地环回口,并修改客户端端口等,如此,当报文数据经过代理转发后,路由信息将会发生变化,使得路由节点无法通过准确的原始信息进行路径查询。
因此,在本示例性实施例中,当确定报文数据的转发路径为代理转发路径时,可以获取报文数据的原始路由信息并对其进行储存,具体的,可以在中间层的内核中分别构建与客户端相关的结构体,以及与服务端相关的结构体,并将二者相关联,通过结构体之间的关系,对报文数据的原始路径信息进行存储并进行传递,以在中间层需要与目标服务端进行连接时,从结构体中提取报文数据的原始路由信息进行路径查询。
在一示例性实施例中,中间层包括代理节点;当报文数据的转发路径为代理转发路径时,接收客户端发送的报文数据,包括:
接收客户端发送的报文数据,并将报文数据引流到中间层的预设虚拟接口;
通过预设虚拟接口将报文数据发送至代理节点,以使代理节点对报文数据进行处理。
在本示例性实施例中,中间层可以包括代理节点,以执行代理功能,例如在路由设备中配置代理模块,中间层的预设虚拟接口可以是用于将数据传输至代理模块进行处理的接口,例如路由设备的本地环回接口。当中间层接收到客户端发送的报文数据后,可以将报文数据引流到中间层的预设虚拟接口,通过预设虚拟接口将报文数据发送至代理节点,以使代理节点对报文数据进行处理。
在一示例性实施例中,将报文数据引流到中间层的预设虚拟接口,包括:
获取透明代理的第一配置信息和策略路由的第二配置信息;
根据第一配置信息和第二配置信息,将报文数据引流到中间层的预设虚拟接口。
在本示例性实施例中,当中间层接收到客户端发来的请求报文的时候,可以先获取透明代理的第一配置信息和策略路由的第二配置信息,然后,通过“透明代理TPROXY+引流路由”的方式,将报文数据的流量引流到本地环回接口。
透明代理的第一配置信息和策略路由的第二配置信息是指预先设置的用于进行流量引流的命令信息。
具体的,透明代理TPROXY的第一配置信息的确定可以包括,确定透明代理配置所需的数据,例如“源IP网段”、“目的IP网段”、“四层协议类型”、“目的端口”、“上送的本地监听端口”等指标的具体指标值,进而根据这些数据,生成第一配置信息。
在本示例性实施例中,第一配置信息可以通过以下命令信息表示:
Iptables-t mangle-A PREROUTING-s源IP网段-d目的IP网段-p四层协议类型--dport目的端口-j TPROXY--tproxy-mark 0x1/0x1(标记值)--on-port上送的本地监听端口。
其中,上述命令信息中包括固定字段和可变字段,如“iptables-t mangle-APREROUTING-s”、“s”、“d”、“p”、“dport”等为固定字段,其中,iptables为一种命令名称,可以用于为包过滤机制的实现提供规则。
t mangle、A PREROUTING、s源IP网段等为iptables命令下的选项或其他细节命令内容。
可变字段为“源IP网段”、“目的IP网段”、“四层协议类型”等为可变字段,可以分别对应不同的指标名称,当确定各指标对应的指标值,例如“源IP网段”为“1.1.1.1/32”,“目标IP网段”为“2.2.2.2/32”,“四层协议类型”为“tcp”时,即可以确定完整的第一配置信息。例如将这些配置数据代入上述命令信息中可以得到第一配置信息:
iptables-t mangle-A PREROUTING-s 1.1.1.1/32-d 2.2.2.2/32-p tcp--dport80-j TPROXY--tproxy-mark 0x1/0x1--on-port 8047。
引流路由的第二配置信息的确定可以包括,确定引流路由配置所需的数据,例如“表ID”、“优先级”等指标的指标值,根据配置指标对应的指标数据,可以确定第二配置信息。
在本示例性实施例中,第一配置信息可以通过以下命令信息表示:
ip route add local 0.0.0.0/0dev lo table表ID;
ip rule add fwmark 1lookup表ID pri优先级。
其中,上述命令信息中包括固定字段和可变字段,固定字段即为ip route addlocal,或者ip rule add fw等。可变字段即为“表ID”,“优先级”,以及mark后的数字标识等。将可变字段对应的指标所对应的指标值,替换至上述命令信息中,即可以得到对应的第二配置信息,例如“表ID”为“1”,“优先级”为“1”时,第二配置信息可以表示为:
ip route add local 0.0.0.0/0dev lo table 1;
ip rule add fwmark 1lookup 1pri 1。
需要说明的是,在本示例性实施例中,第一配置信息与第二配置信息可以包括具有对应关系的数据信息,例如第一配置信息中的“mark 0x1/0x1(一种标记值)”可以对应第二配置信息中的“mark 1”,有人即若第一配置信息中mark后的数据发生变化,则第二配置信息中mark后的数据也将随之发生变化。
在一示例性实施例中,当报文数据的转发路径为代理转发路径时,获取报文数据的原始路由信息并存储,包括:
当报文数据的转发路径为代理转发路径时,创建第一结构体以及客户端套接字;
将获取的报文数据的原始路由信息添加至第一结构体中;
响应于用户态的代理进程接收到报文数据,从第一结构体中获取原始路由信息,并将原始路由信息添加至代理进程的客户端套接字中。
中间层在接收到报文数据并确定该报文数据将会经过代理节点进行处理时,将会创建第一结构体以及对应的客户端套接字,其中,第一结构体可以是sock1结构体,客户端套接字可以是客户端socket结构体,例如在内核的LOCAL_IN(一种指令)流程中,如果确定报文数据是通过“透明代理TPROXY+引流路由”的方式引流过来的,则可以为其创建预定义结构体,该预定义结构体的名称可以是transparent_proxy_ori_req,并将原始路由信息,如入接口、客户端端口等信息,存储至该预定义结构体中,为了保存原始路由信息,可以将存储了原始路由信息的预定义结构体增加到本次新创建的第一结构体sock1中。
在用户态的代理进程收到报文数据时,可以通过特定接口,如getsockoptTRANSPARENT_PROXY_ORI_INFO,获取内核第一结构体sock1中存储的原始路由信息,并将其存入代理进程的客户端套接字中。
在一示例性实施例中,上述数据处理方法还可以包括:
创建第二结构体以及服务端套接字,并将客户端套接字与服务端套接字进行关联;
基于与客户端套接字关联后的服务端套接字,将原始路由信息发送并存储至第二结构体。
进一步的,为了便于通过中间层与目标服务端进行连接,本示例性实施例还可以创建第二结构体以及对应的服务端套接字,其中,第二结构体可以是sock2结构体,服务端套接字可以是服务端socket结构体。
用户态代理进程在创建第二结构体以及服务端套接字后,可以将客户端套接字与服务端套接字进行关联,从而使得原始路由信息能够从客户端套接字中传递至服务端套接字中,然后通过特定接口,将原始路由信息发送至第二结构体中进行存储,例如用户态代理进程创建服务端套接字socket后,将其与客户端套接字socket关联起来,之后,通过接口setsockopt TRANSPARENT_PROXY_ORI_INFO将原始路由信息下发到内核,内核将收到的原始路由信息存储到第二结构体sock2的预定义结构体,如transparent_proxy_ori_req结构体中。
图3示出了本示例性实施例中原始路由信息传递路径的架构示意图,具体可以包括,客户端310、代理服务器320和目标服务端330。其中,客户端310可以向代理服务器320发送报文数据,代理服务器320用于转发报文数据至目标服务端330。代理服务器320包括第一结构体321、客户端套接字322、服务端套接字323、第二结构体324,当代理服务器320接收到客户端310发送的报文数据时,判断其转发路径,在确定其为代理转发路径时,获取报文数据的原始路由信息,并将其存储至第一结构体321中,在用户态的代理进程收到报文数据时,获取内核第一结构体中存储的原始路由信息,并将其存入代理进程的客户端套接字322中,关联客户端套接字322和服务端套接字323后,可以将原始路由信息发送至内核,使内核将收到的原始路由信息存储至第二结构体324中。
步骤S230,响应于触发连接目标服务端,调用原始路由信息。
在本示例性实施例中,当客户端通过中间层与目标服务端建立连接,中间层的策略路由需要根据路由信息确定报文数据的转发路径时,可以调用在内核中存储的原始路由信息,具体的,可以通过陷入内核的方式,来调用内核中在结构体中存储的原始路由信息,以通过原始路由信息进行转发路径的查找。
在一示例性实施例中,响应于触发连接目标服务端,调用原始路由信息,调用原始路由信息,可以包括:
响应于服务端套接字通过预设操作指令与目标服务端进行连接,从第二结构体中调用原始路由信息。
在本示例性实施例中,客户端通过中间层与目标服务端建立连接,需要先和中间层的内核建立连接,然后再由内核与目标服务端建立连接,而中间层与目标服务端建立连接,则需要通过服务端套接字与目标服务端的连接实现。
在本示例性实施例中,用户态进程中的服务端套接字可以通过预设操作指令与目标服务端建立连接,例如用户态进程中的服务端套接字可以通过connect或sendto等操作指令和目标服务端建立连接。因此,当检测到预设操作指令时,可以从第二结构体中调用原始路由信息。
步骤S240,基于原始路由信息查找报文数据的转发路径,并根据转发路径,将报文数据发送至目标服务端。
在本示例性实施例中,路由节点在内核中会先根据路由信息查询报文数据的转发路径,然后根据查询结果将报文数据发送至目标服务端。具体根据路由信息查询转发路径的过程中,需要构造查询条件结构体,通过该查询条件结构体查找报文数据的转发路径。
在一示例性实施例中,基于原始路由信息查找报文数据的转发路径,包括:
基于原始路由信息构建路由查询条件,根据路由查询条件查找报文数据的转发路径。
在本示例性实施例中,若报文数据经代理节点转发后,路由信息可能会发生变化,例如原始路由信息可以包括报文数据的物理入接口、源IP1、目的IP、源端口1、目的端口等信息,发生变更后,实际路由信息可以包括入接口更改后的本地环回接口、报文数据的源IP2、目的IP、源端口2、目的端口等。
实际路由信息可以被存储在第二结构体sock2中,而原始路由信息可以被存储在第二结构体sock2的预定义结构体中。
需要说明的是,原始路由信息可以包括所有未经改变的路由信息,例如包括物理入接口、源IP1、目的IP、源端口1、目的端口等,也可以仅包括可能会发生变化的路由信息,例如在上述示例中,入接口变更为本地环回接口,源IP1变更为源IP2,源端口1变更为源端口2,为了节省存储资源,可以设置原始路由信息包括物理入接口、源IP1、源端口1,而实际路由信息依然为报文数据的本地环回接口、源IP2、目的IP、源端口2、目的端口等。
因此,基于原始路由信息构建路由查询条件,可以包括,当原始路由信息为全部路由信息时,从第二结构体sock2中的存储的预定义结构体(如transparent_proxy_ori_req结构体)中获取原始路由信息,并使用原始路由信息构造查询条件结构体,以通过该查询条件结构体,执行转发路径的查询;当原始路由信息为部分路由信息时,可以从第二结构体sock2中先获取实际路由信息,初始化查询条件结构体,然后,再从第二结构体sock2中存储的预定义结构体中获取原始路由信息,以通过该原始路由信息对初始化的查询条件结构体进行覆盖或更新,以构成新的路由查询条件,例如使用transparent_proxy_ori_req结构体中的信息覆盖查询条件中的入接口、源端口等信息,从而通过该查询条件结构体,执行转发路径的查询。
这样,就可以根据原始路由信息的入接口、客户端IP、客户端端口、服务端IP、服务端端口等信息查询路由了。
基于上述说明,在本示例性实施例中,接收客户端发送的报文数据,并确定报文数据的转发路径是否为代理转发路径;当报文数据的转发路径为代理转发路径时,获取报文数据的原始路由信息并存储;响应于触发连接目标服务端,调用原始路由信息;基于原始路由信息查找报文数据的转发路径,并根据转发路径,将报文数据发送至目标服务端。一方面,本示例性实施例提出一种新的数据处理方法,考虑客户端发送的报文数据在经过中间层的代理处理后,其路由信息可能会发生变化,因此提出对原始路由信息进行存储,从而使得中间层在向目标服务端转发客户端发送的报文数据时,无论该报文数据是否经过代理转发,都能够根据原始路由信息匹配转发路径,保证转发路径确定的准确性和有效性;另一方面,本示例性实施例通过对报文数据转发路径的简单判断,并在确定为代理转发路径时对原始路由信息进行保存,通过简单、便捷的方式,即能够实现策略路由的查询有效性,适用范围较为广泛。
在本示例性实施例,以具体示例对上述内容进行举例说明,首先需要在代理服务器,也即中间层上配置第一配置信息和第二配置信息,例如第一配置信息可以包括:
iptables-t mangle-A PREROUTING-s 1.1.1.1/32-d 2.2.2.2/32-p tcp--dport80-j TPROXY--tproxy-mark 0x1/0x1--on-port 8047;
第二配置信息可以包括:
ip rule add fwmark 1lookup 1pri 1;
ip route add local 0.0.0.0/0dev lo table 1。
然后,可以设置执行完成透明代理用于指导实际报文数据的转发的策略路由的配置信息,例如:
ip rule add from 1.1.1.0/24to 2.2.2.0/24iif eth1 sport 11011dport80lookup 1111pri 1111;
ip route add 2.2.2.0/24dev eth2 table 1111pri 1111。
需要注意用于引流的策略路由优先级需要高于用于转发的策略路由优先级。
配置完成后,路由信息中,客户端发出源IP为1.1.1.1,源端口为11011,目的IP为2.2.2.2,目的端口为80的TCP(Transmission Control Protocol,传输控制协议)报文。
图4示出了本示例性实施例中另一种数据处理方法的流程图。代理服务器的预设接口,如eth1口(以太网接口),接收到客户端410发送的报文数据后,可以执行以下处理流程:
内核通过TPROXY模块421(内核netfilter中的TPROXY模块,可以用于判断是否需要将报文数据上送代理进程进行透明代理处理)和引流路由模块422将报文数据引流到中间层420代理进程监听的8047端口;
内核的本地输入(LOCAL_IN)423处理报文数据,判断是否需要新创建内核第一结构体424,如内核套接字sock1,用户态代理进程一直在监听8047端口,在内核新建第一结构体时,可以同时向代理进程的监听接口发起连接请求,代理进程会创建对应的客户端套接字425,如客户端socket;
内核的LOCAL_IN在第一结构体新建成功之后,识别报文数据的标志位信息,例如判断mark是否为1,如果为1则表示是代理转发路径,则为其创建transparent_proxy_ori_req结构体,并将入接口eth1、客户端端口11011原始路由信息存入transparent_proxy_ori_req结构体中,然后将此结构体增加到第一结构体中;
代理进程在成功创建客户端套接字后,就会有报文数据到达代理进程,此时,可以判断客户端套接字中是否有原始路由信息,如果没有,则可以通过指令信息getsockoptTRANSPARENT_PROXY_ORI_INFO,获取内核第一结构体中存储的原始路由信息,即入接口eth1、客户端端口11011,并将其存入客户端套接字结构体中;
代理进程创建服务端套接字426,如服务端socket,内核也对应创建第二结构体427,如内核套接字sock2,其中,服务端套接字的本地地址(Local IP)为客户端IP1.1.1.1,本地端口是随机分配的,如33445,源端IP为服务端IP 2.2.2.2,源端端口为80,然后代理进程会将客户端套接字425与服务端套接字426关联起来。
代理进程在成功创建服务端套接字426后,可以通过指令信息setsockoptTRANSPARENT_PROXY_ORI_INFO,将原始路由信息发送到内核第二结构体的transparent_proxy_ori_req结构体中;
代理进程的服务端套接字426通过预设操作指令,如connect或sendto等操作指令,和目标服务端430建立连接,此时,内核中的第二结构体427就会执行查找路由。
在内核查找路由时,可以先初始化查询条件,源IP 1.1.1.1、源端口33445、目的IP2.2.2.2、目的端口80、入接口本地环回口等,然后再使用第二结构体427中存储的transparent_proxy_ori_req信息去覆盖查询条件,即修改源端口为11011、入接口为eth1。
内核会根据查询条件查找到路由table 1111,然后根据查询结果构造报文,并通过策略路由428配置的eth2接口经由本地输出(LOCAL_OUT)429将报文数据发给目标服务端430。
本公开的示例性实施例还提供了一种数据处理装置。参照图5,该装置500可以包括,数据接收模块510,用于接收客户端发送的报文数据,并确定报文数据的转发路径是否为代理转发路径;信息获取模块520,用于当报文数据的转发路径为代理转发路径时,获取报文数据的原始路由信息并存储;信息调用模块530,用于响应于触发连接目标服务端,调用原始路由信息;路径查找模块540,用于基于原始路由信息查找报文数据的转发路径,并根据转发路径,将报文数据发送至目标服务端。
在本公开的一种示例性实施例中,中间层包括代理节点;当报文数据的转发路径为代理转发路径时,数据接收模块,包括:数据引流单元,用于接收客户端发送的报文数据,并将报文数据引流到中间层的预设虚拟接口;数据发送单元,用于通过预设虚拟接口将报文数据发送至代理节点,以使代理节点对报文数据进行处理。
在本公开的一种示例性实施例中,数据引流单元,包括:信息获取子单元,用于获取透明代理的第一配置信息和策略路由的第二配置信息;数据引流子单元,用于根据第一配置信息和第二配置信息,将报文数据引流到中间层的预设虚拟接口。
在本公开的一种示例性实施例中,数据接收模块,包括:信息判断单元,用于从报文数据中提取转发路径的标志位信息,并根据标志位信息判断报文数据的转发路径是否为代理转发路径。
在本公开的一种示例性实施例中,当报文数据的转发路径为代理转发路径时,信息获取模块,包括:第一结构体创建单元,用于当报文数据的转发路径为代理转发路径时,创建第一结构体以及客户端套接字;第一信息添加单元,用于将获取的报文数据的原始路由信息添加至第一结构体中;第二信息添加单元,用于响应于用户态的代理进程接收到报文数据,从第一结构体中获取原始路由信息,并将原始路由信息添加至代理进程的客户端套接字中。
在本公开的一种示例性实施例中,数据处理装置还包括:第二结构体创建单元,用于创建第二结构体以及服务端套接字,并将客户端套接字与服务端套接字进行关联;信息存储单元,用于基于与客户端套接字关联后的服务端套接字,将原始路由信息发送并存储至第二结构体。
在本公开的一种示例性实施例中,信息调用模块,包括:信息调用单元,用于响应于服务端套接字通过预设操作指令与目标服务端进行连接,从第二结构体中调用原始路由信息。
在本公开的一种示例性实施例中,路径查找模块,包括:转发路径查找单元,用于基于原始路由信息构建路由查询条件,根据路由查询条件查找报文数据的转发路径。
上述装置中各模块/单元的具体细节在方法部分的实施例中已经详细说明,未披露的细节内容可以参见方法部分的实施例内容,因此此处不再赘述。
本公开的示例性实施例还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图6来描述根据本公开的这种示例性实施例的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:上述至少一个处理单元610、上述至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640。
其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元610可以执行图2所示的步骤等。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)621和/或高速缓存存储单元622,还可以进一步包括只读存储单元(ROM)623。
存储单元620还可以包括具有一组(至少一个)程序模块625的程序/实用工具624,这样的程序模块625包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器660通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施例的方法。
本公开的示例性实施例还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
本公开的示例性实施例还提供了一种用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施例,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。

Claims (11)

1.一种数据处理方法,其特征在于,应用于中间层,所述方法包括:
接收客户端发送的报文数据,并确定所述报文数据的转发路径是否为代理转发路径;
当所述报文数据的转发路径为代理转发路径时,获取所述报文数据的原始路由信息并存储;
响应于触发连接目标服务端,调用所述原始路由信息;
基于所述原始路由信息查找所述报文数据的转发路径,并根据所述转发路径,将所述报文数据发送至所述目标服务端。
2.根据权利要求1所述的方法,其特征在于,所述中间层包括代理节点;当所述报文数据的转发路径为代理转发路径时,所述接收客户端发送的报文数据,包括:
接收客户端发送的报文数据,并将所述报文数据引流到所述中间层的预设虚拟接口;
通过所述预设虚拟接口将所述报文数据发送至所述代理节点,以使所述代理节点对所述报文数据进行处理。
3.根据权利要求2所述的方法,其特征在于,所述将所述报文数据引流到所述中间层的预设虚拟接口,包括:
获取透明代理的第一配置信息和策略路由的第二配置信息;
根据所述第一配置信息和所述第二配置信息,将所述报文数据引流到所述中间层的预设虚拟接口。
4.根据权利要求1所述的方法,其特征在于,所述确定所述报文数据的转发路径是否为代理转发路径,包括:
从所述报文数据中提取转发路径的标志位信息,并根据所述标志位信息判断所述报文数据的转发路径是否为代理转发路径。
5.根据权利要求1所述的方法,其特征在于,所述当所述报文数据的转发路径为代理转发路径时,获取所述报文数据的原始路由信息并存储,包括:
当所述报文数据的转发路径为代理转发路径时,创建第一结构体以及客户端套接字;
将获取的所述报文数据的原始路由信息添加至所述第一结构体中;
响应于用户态的代理进程接收到所述报文数据,从所述第一结构体中获取所述原始路由信息,并将所述原始路由信息添加至所述代理进程的客户端套接字中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
创建第二结构体以及服务端套接字,并将所述客户端套接字与所述服务端套接字进行关联;
基于与所述客户端套接字关联后的所述服务端套接字,将所述原始路由信息发送并存储至所述第二结构体。
7.根据权利要求6所述的方法,其特征在于,所述响应于触发连接目标服务端,调用所述原始路由信息,包括:
响应于所述服务端套接字通过预设操作指令与目标服务端进行连接,从所述第二结构体中调用所述原始路由信息。
8.根据权利要求1所述的方法,其特征在于,所述基于所述原始路由信息查找所述报文数据的转发路径,包括:
基于所述原始路由信息构建路由查询条件,根据所述路由查询条件查找所述报文数据的转发路径。
9.一种数据处理装置,其特征在于,应用于中间层,所述装置包括:
数据接收模块,用于接收客户端发送的报文数据,并确定所述报文数据的转发路径是否为代理转发路径;
信息获取模块,用于当所述报文数据的转发路径为代理转发路径时,获取所述报文数据的原始路由信息并存储;
信息调用模块,用于响应于触发连接目标服务端,调用所述原始路由信息;
路径查找模块,用于基于所述原始路由信息查找所述报文数据的转发路径,并根据所述转发路径,将所述报文数据发送至所述目标服务端。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-8任一项所述的方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的方法。
CN202311279115.4A 2023-09-28 2023-09-28 数据处理方法、数据处理装置、电子设备及存储介质 Pending CN117336810A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311279115.4A CN117336810A (zh) 2023-09-28 2023-09-28 数据处理方法、数据处理装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311279115.4A CN117336810A (zh) 2023-09-28 2023-09-28 数据处理方法、数据处理装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117336810A true CN117336810A (zh) 2024-01-02

Family

ID=89291237

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311279115.4A Pending CN117336810A (zh) 2023-09-28 2023-09-28 数据处理方法、数据处理装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117336810A (zh)

Similar Documents

Publication Publication Date Title
CN112470436B (zh) 用于提供多云连通性的系统、方法、以及计算机可读介质
US10237177B2 (en) Transfer device and transfer system
CA2968964C (en) Source ip address transparency systems and methods
US20150358232A1 (en) Packet Forwarding Method and VXLAN Gateway
US20220210063A1 (en) Layer-2 networking information in a virtualized cloud environment
US20180069787A1 (en) Exposing a subset of hosts on an overlay network to components external to the overlay network without exposing another subset of hosts on the overlay network
US9450914B2 (en) Distributed proxy addressing operations
JP4789425B2 (ja) 経路テーブル同期方法、ネットワーク機器および経路テーブル同期プログラム
US11184281B2 (en) Packet processing method and apparatus
JP2006262193A (ja) 制御装置、パケット転送方法およびパケット処理装置
KR20130101618A (ko) 네트워크 가상화에 기반한 네트워크 운용 시스템 및 방법
CN114389967A (zh) 链路检测方法、装置、设备和存储介质
CN113726915A (zh) 网络系统及其中的报文传输方法和相关装置
EP3767900B1 (en) Method for discovering forwarding path, and related device thereof
EP4117239A1 (en) Methods, apparatus and device for sending routing and processing routing, and storage medium
US20230353479A1 (en) Edge Computing Data and Service Discovery Using an Interior Gateway Protocol (IGP)
JP2023511257A (ja) パケット送信方法および装置、ならびに記憶媒体
US20200186463A1 (en) Method and system for name-based in-networking processing
CN116389599A (zh) 网关服务请求的处理、云原生网关系统的管理方法及装置
CN117336810A (zh) 数据处理方法、数据处理装置、电子设备及存储介质
CN115834472A (zh) 一种报文处理方法、转发策略获取方法及装置
CN113709016B (zh) 通信系统以及通信方法、装置、设备和存储介质
CN117097818A (zh) 一种报文处理的方法及相关设备
CN109714262B (zh) 数据传输方法及相关设备
CN111800340A (zh) 数据包转发方法和装置

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