CN114710548B - 报文转发方法及装置 - Google Patents

报文转发方法及装置 Download PDF

Info

Publication number
CN114710548B
CN114710548B CN202210288034.XA CN202210288034A CN114710548B CN 114710548 B CN114710548 B CN 114710548B CN 202210288034 A CN202210288034 A CN 202210288034A CN 114710548 B CN114710548 B CN 114710548B
Authority
CN
China
Prior art keywords
port
service
target
proxy
server
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
Application number
CN202210288034.XA
Other languages
English (en)
Other versions
CN114710548A (zh
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210288034.XA priority Critical patent/CN114710548B/zh
Publication of CN114710548A publication Critical patent/CN114710548A/zh
Application granted granted Critical
Publication of CN114710548B publication Critical patent/CN114710548B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2895Intermediate processing functionally located close to the data provider application, e.g. reverse proxies
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供一种报文转发方法及装置,该方法应用于设置由代理端口的代理服务器,该方法包括:获取多个业务报文,其中,每个所述业务报文中包括一个目标端口;将所述多个业务报文重定向至代理服务器的代理端口;获取所述代理端口接收的各个业务报文中的目标端口;根据各个业务报文中的目标端口,将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器,通过将海量目标端口对应的业务报文重定向至同一个代理端口,由该代理端口进行报文的转发,从而实现流量的转发和加速,大大减少了代理端口的数量,从而减少了报文转发所占用的资源,降低了海量端口加速的成本。

Description

报文转发方法及装置
技术领域
本申请涉及通信技术领域,尤其涉及一种报文转发方法及装置。
背景技术
随着互联网技术的不断发展,网络数据快速扩张,海量的网络数据对网络服务器的网速提出了更高的要求。
常用的服务器加速技术为基于代理服务器,如反向代理服务器、透明代理服务器等,进行客户端和目标服务器之间数据的转发。如通过监听代理服务器上的代理端口的方式,将该代理端口接收到的数据转发至对应的目标端口,从而实现数据在客户端和目标服务器之间的转发。
在海量端口加速的场景下,如为包括多个服务区的游戏加速的场景或者全球业务的加速等,采用上述方式,监听海量端口,将导致端口资源消耗较多,占用较多资源,导致加速成本较高。
发明内容
本申请提供一种报文转发方法及装置,通过将发往多个目标端口的报文均重定向至同一个代理端口,通过该代理端口实现报文的转发,实现了海量端口的加速技术,且加速所占用资源较少,降低了加速成本。
第一方面,本申请提供一种报文转发方法,该方法应用于代理服务器,该代理服务器包括代理端口,该方法包括:
获取多个业务报文,其中,每个所述业务报文中包括一个目标端口;将所述多个业务报文重定向至代理服务器的代理端口;获取所述代理端口接收的各个业务报文中的目标端口;根据各个业务报文中的目标端口,对各个业务报文进行转发,以将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
第二方面,本申请提供一种报文转发装置,所述装置应用于代理服务器,所述代理服务器包括代理端口,所述装置包括:
报文获取模块,用于获取多个业务报文,其中,每个所述业务报文中包括一个目标端口;重定向模块,用于基于所述透明代理应用程序,将所述多个业务报文重定向至代理服务器的代理端口;目标端口获取模块,用于基于所述反向代理应用程序,获取所述代理端口接收的各个业务报文以及各个业务报文中的目标端口;报文转发模块,用于根据各个业务报文的目标端口,对各个业务报文进行转发,以将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
第三方面,本申请提供一种代理服务器,包括:
处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现本申请第一方面提供的报文转发方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现本申请第一方面提供的报文转发方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本申请第一方面提供的报文转发方法。
本申请提供的报文转发方法及装置,针对通过代理服务器进行客户端发往目标服务器的业务报文转发的场景,将接收到的外发至目标服务器的多个业务报文,均重定向至代理服务器的同一个代理端口,由该代理端口基于所解出的业务报文中的目标端口,将该多个业务报文转发至其目标端口对应的目标服务器,从而实现了由一个代理端口进行海量目标端口的业务报文的透明代理的方案,大大减少了代理服务器的资源占用,降低了端口加速的成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1A为本申请实施例提供的全球加速网络***的示意图;
图1B为本申请实施例的一种应用场景示意图;
图2为本申请实施例提供的一种报文转发方法的流程示意图;
图3为本申请另一个实施例提供的报文转发方法的流程示意图;
图4为本申请另一个实施例提供的报文转发方法的流程示意图;
图5为本申请实施例提供的一种报文转发装置的结构示意图;
图6为本申请实施例提供的一种代理服务器的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
全球加速的主要目的是为了使全球用户获得一致的网络访问体验,图1A为本申请实施例提供的全球加速网络***的示意图,如图1A所示,全球加速网络***包括设置在多个加速区域(如图1A以3个加速区域为例,即第一区域至第三区域)的接入点、监听终端和多个终端节点组,每个终端节点组由一个或多个终端节点组成。其中,每个加速区域可以对应一个或多个国家,加速区域的接入点对应一个加速IP。加速区域的用户的网络访问请求通过加速IP采用就近接入的方式,从接入点进入全球加速网络,监听终端在监听到用户客户端发送的网络访问请求之后,为该网络访问请求分配路由以及进行网络资源的调度,从而将该网络访问请求发送至对应的终端节点组中最佳的终端节点,由该终端节点将网络访问请求转发至对应的源站服务器。
在一个实施例中,用户可以自定义设置其对应的终端节点组。
在一个实施例中,上述接入点又被称为代理服务器,源站服务器又称为目标服务器。
在一个实施例中,全球加速网络***可以省略上述终端节点组,即仅由设置在多个加速区域的接入点和监听终端组成,相应的,上述监听终端将接入点输出的网络访问请求转发至源站服务器。
本申请提供的报文转发方法发生在接入点或代理服务器接收到网络访问请求之后,通过本申请提供的报文转发方法将网络访问请求转发至对应的目标服务器。
图1B为本申请实施例的一种应用场景示意图,如图1B所示,在全球加速场景下,一个目标服务器102可以对应多个需要加速的代理服务器104的端口,需要加速的端口可以位于1~64k范围内,如10、100、1k、10k、64k等,如图1B中的端口80、端口443以及端口83至端口88。
以目标服务器102为游戏服务器为例,一个需要加速的端口可以为游戏服务器的一个服务区。以目标服务器102为跨国企业服务器为例,一个需要加速的端口可以对应该跨国企业部署在一个区域的终端,或者可以为该跨国企业的一项业务,如购买业务、售后服务业务、直播业务等。
用户可以预先配置代理服务器的端口映射规则,如通过代理服务器的内核iptables中的nat规则进行端口映射配置。配置完成后,代理服务器104通过监听需要加速的端口对应的代理端口,如端口1001至端口1008(分别与端口80、端口443以及端口83至端口88对应),当到接收到客户端106发往其中一个端口(如端口80)的报文时,即报文的目标端口为端口80,通过预先配置的转发策略,将报文中的端口80转为端口1001,通过端口1001实现客户端106和目标服务器102(端口80对应的服务器)之间报文的转发。
本申请实施例所提及的客户端可以为手机、平板电脑、穿戴设备、电视、机顶盒等设备中的任意一种。
在海量端口加速的场景下,需要加速的端口数据较多,采用上述加速技术,由于监听端口数据较多,将消耗代理服务器104大量的端口资源进行端口的监听,且当用户配置变化时,如增加了一个新的需要加速的目标端口时,还需要动态调整端口映射规则以及转发策略,导致运维成本较高。
为了降低海量端口加速场景下代理服务器的端口资源的占用,本申请提供的报文抓发策略的主要构思为:通过将各个需要加速的各个目标端口对应的报文均重定向至同一个代理端口,在转发时,解出各个报文中的目标端口,基于该目标端口将该代理端口接收的各个报文转发至对应的目标服务器,通过将需加速的海量端口的报文重定向至一个端口的方式,大大减少了代理服务器的资源占用,且在用户配置变化时,无需进行代理服务器内置的转发策略进行更新,实现了免运维服务器加速,降低了海量端口加速和运维的成本。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的一种报文转发方法的流程示意图,本实施例提供的方法可以由代理服务器执行,如图2所示,该报文转发方法包括以下步骤:
步骤S201,获取多个业务报文,每个所述业务报文中包括一个目标端口。
其中,该多个业务报文可以由一个或多个客户端发送至代理服务器。该多个业务报文中每个业务报文中的目标端口可以相同、部分相同或者互不相同。一个目标端口可以对应一个或多个目标服务器。
示例性的,业务报文可以为用于请求资源的任意一种报文、请求等数据包。
具体的,用户可以通过客户端上安装的应用程序、小程序、网页等,向目标服务器发送业务报文,由代理服务器拦截该业务报文。
具体的,业务报文可以包括原端口和目标端口,其中,原端口为发送业务报文的客户端对应的端口,目标端口则为业务报文对应的目标服务器对应的端口。
具体的,可以基于所述代理服务器的内核防火墙,获取所述多个业务报文。
其中,内核防火墙用于对业务报文的进出和转发进行控制。
进一步地,可以基于代理服务器的内核防火墙对应的应用层程序,获取多个业务报文。
示例性的,代理服务器的操作***可以为Linux,该内核防火墙可以为Netfilter,则可以基于通过Netfilter的应用层程序iptables获取外发至各个目标服务的各个业务报文。
步骤S202,将所述多个业务报文重定向至代理服务器的代理端口。
其中,代理端口为将业务报文由客户端转发至对应的目标服务端的端口,可以为预设的一个端口,如1000端口、2000端口、10000端口等。
在一个实施例中,代理服务器可以仅设置一个代理端口,该代理端口用于进行客户端和目标服务器之间业务报文的转发,从而大大减少报文转发所需的代理端口的数量,以及减少监听代理端口所需的资源。
具体的,可以在不修改业务报文的前提下,将多个业务报文重定向至代理服务器的代理端口。
示例性的,可以基于透明代理机制,如Tproxy,将外发至目标服务的多个业务报文重定向至代理服务器的代理端口。
进一步地,可以基于重定向套接字,将多个业务报文重定向至该代理端口。其中,重定向套接字为基于透明代理机制创建的,该套接字设置有IP_TRANSPAENT标识,通过监听0.0.0.0地址的方式实现监听任意一个IP(Internet Protocol,网际互连协议)地址或端口,从而得以监听到的非本地IP地址的业务报文,并将所监听到的业务报文重定向至该代理端口。
具体的,该重定向套接字还可以提取业务报文中的地址和端口,包括客户端地址、原端口和目标端口,并将客户端地址、原端口和目标端口等信息填入辅助数据结构体中,以便于后续的代理应用基于该辅助数据结构体,解出业务报文中的目标端口。
可选的,将所述多个业务报文重定向至代理服务器的代理端口,包括:
针对所述多个业务报文中包括预设标识的业务报文,基于透明代理应用程序,在不修改业务报文的前提下,将所述多个业务报文重定向至所述代理端口。
其中,设置有预设标识的业务报文为需要代理服务器转发的业务报文。不修改业务报文,包括不修改业务报文中的IP地址、端口等内容,如不修改业务报文中的原端口和目标端口。
具体的,在代理服务器的内核防火墙接收到业务报文之后,可以判断该业务报文是否设置有预设标识;若设置有预设标识,则将该业务报文下发至透明代理应用程序,进而由该透明代理应用程序,进行业务报文的重定向。
通过透明代理机制进行重定向,提高了重定向的安全性,降低了用户操作的繁琐程度;通过不修改报文的方式重定向,重定向速度较快,且在用户配置更新之后,无需进行透明代理机制的调整,降低了维护成本。
步骤S203,获取所述代理端口接收的各个业务报文中的目标端口。
其中,目标端口即为业务报文真实的目的端口,即业务报文真正需要发往的端口。
具体的,可以实时监听该代理端口,当该代理端口接收到业务报文,如握手报文,在代理端口与业务报文对应的客户端连接成功或握手成功之后,基于多个业务报文对应的套接字,确定该多个业务报文中每个业务报文中的目标端口。
具体的,可以通过提取所监听的代理端口对应的套接字(即上述重定向套接字)中的数据(包括原端口、目标端口等),并基于所提取的数据包创建一个新的套接字,基于该新的套接字,确定各个业务报文中的目标端口。如通过调用accept()函数实现新的套接字的创建。
示例性的,可以通过函数getsockname()或者属性IP_ORIGDSTADDR,从该新的套接字种获得各个业务报文中的目标端口。
可选的,获取所述代理端口接收的各个业务报文中的目标端口,包括:
基于所述反向代理应用程序,监听所述代理端口;当监听到业务报文对应的客户端与代理服务器连接成功时,根据业务报文通信协议的类型,从业务报文对应的套接字中,获取各个业务报文中的目标端口。
具体的,可以基于反向代理应用程序,如proxy,监听该代理端口,在该代理端口与客户端完成握手,即在业务报文对应的客户端与代理服务器连接成功之后,获取与代理服务器连接成功的一个或多个客户端发送的业务报文,并解出该业务报文中的目标端口。可以按照业务报文的通信协议的类型,从业务报文对应的套接字中,解出业务报文中的目标端口。
其中,该套接字可以通过调用上述重定向套接字的accept()函数的方式创建。
其中,通信协议的类型可以包括TCP(Transmission Control Protocol,传输控制协议)类型和UDP(User Datagram Protocol,用户数据报协议)类型。
通过解出目标端口而非改变目标端口的方式实现报文转发,在用户配置变化时,如新增目标端口时,避免了对代理服务器的反向代理的配置进行调整,降低了运维成本。
步骤S204,根据各个业务报文中的目标端口,对各个业务报文进行转发,以将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
具体的,在得到各个业务报文中的目标端口之后,经由该代理端口,将所接收到的各个业务报文转发至对应的目标端口,从而通过该目标端口将业务报文发送至对应的目标服务器。
具体的,在将业务报文转发至目标端口之后,可以由监听终端将目标端口处的业务报文转发至目标端口对应的目标服务器。
本实施例提供的报文转发方法,针对通过代理服务器进行客户端发往目标服务器的业务报文转发的场景,将接收到的外发至目标服务器的多个业务报文,均重定向至代理服务器的同一个代理端口,由该代理端口基于所解出的业务报文中的目标端口,将该多个业务报文转发至其目标端口对应的目标服务器,从而实现了由一个代理端口进行海量目标端口的业务报文的透明代理的方案,大大减少了代理服务器的资源占用,降低了端口加速的成本;同时,在用户配置发生变化时,如新增目标端口时,无需对代理服务器中的转发配置进行调整,实现了免运维的端口加速策略,降低了端口加速的运维成本。
图3为本申请另一个实施例提供的报文转发方法的流程示意图,本实施例是在图2所示实施例中的基础上,对步骤S203和步骤S204进行进一步细化,如图3所示,本实施例提供的报文转发方法可以包括以下步骤:
步骤S301,获取多个业务报文。
步骤S302,将所述多个业务报文重定向至代理服务器的代理端口。
步骤S303,当业务报文的通信协议为传输控制协议时,基于套接字名称调用函数,从所述业务报文对应的套接字中,获取所述业务报文中的目标端口。
其中,套接字名称调用函数,即函数getsockname(),用于获取一个已捆绑或已连接套接字的名字。
具体的,当业务报文的通信协议为TCP时,可以基于套接字名称调用函数获取业务报文对应的套接字中的地址和端口,包括该套接字中存储的业务报文中的目标端口。
通过调用函数的方式,可以快速地获取业务报文中的目标端口,以为后续的报文转发打下基础。
步骤S304,当业务报文的通信协议为用户数据报协议时,基于所述业务报文对应的套接字的辅助数据结构体,获取业务报文中的目标端口。
其中,辅助数据结构体中存储有对应的套接字的辅助信息,通过迭代该辅助信息,便可以查询到业务报文中的目标端口。
具体的,当业务报文的通信协议为UDP时,为了解出业务报文中的目标端口,可以基于数据接收函数,如recvmsg(),从透明代理应用程序中获取业务报文对应的套接字的辅助数据结构体,遍历该辅助数据结构体的成员,查找索引为预设索引的目标成员,基于目标成员的属性,确定该业务报文的目标端口。
示例性的,预设索引可以为IP_ORIGDSTADDR。
步骤S305,根据业务报文中的目标端口,确定业务报文对应的目标服务器的地址。
具体的,可以根据业务报文对应的目标端口,从预先配置的分发模块中,查找该目标端口对应的目标服务器的地址,即得到业务报文对应的目标服务器的地址。
其中,该分发模块用于存储各个目标端口对应的目标服务器的IP地址。
在一个实施例中,多个目标端口可以对应同一个目标服务器的IP地址,或者,一个目标端口可以对应多个目标服务器的IP地址,或者一个目标端口可以对应一个目标服务器的IP地址,可以基于实际需求进行配置。
示例性的,分发模块可以为{server 192.168.20.20:8000;server192.168.20.20:8001;},其中,8000和8001为目标端口,目标端口8000对应的IP地址为192.168.20.20,目标端口8001对应的IP地址也为192.168.20.20。
当业务报文中的目标端口对应多个目标服务器的地址时,还需要从该多个目标服务器的地址中选择一个地址作为最终的地址。
可选的,根据业务报文中的目标端口,确定业务报文对应的目标服务器的地址,包括:
根据业务报文中的目标端口,从分发模块中确定各个所述业务报文对应的服务器池,所述服务器池由至少一个目标服务器的地址和对应的目标端口组成,其中,所述分发模块中包括各个目标端口对应的服务器池;从业务报文对应的服务器池中,确定各个所述业务报文对应的目标服务器的地址。
其中,分发模块,如upsteam模块,主要用于实现服务器的负载均衡,可以基于调度算法,进行业务报文或连接请求与目标服务器之间的分配。
具体的,可以业务报文的目标端口,从分发模块中查找该目标端口对应的或该目标端口对应的业务报文对应的服务器池。
若该服务器池中存在多个目标服务器的地址,则还需要从该多个目标服务器的地址中选择一个地址,作为该业务报文对应的目标服务器的地址,以由该地址对应的目标服务器响应该业务报文,如与该业务报文对应的客户端建立连接、传送服务数据等。
可选的,从业务报文对应的服务器池中,确定各个所述业务报文对应的目标服务器的地址,包括:
根据目标服务器的权重系数、连接数量和访问次数中的至少一项,从所述业务报文对应的服务器池中,确定所述业务报文对应的目标服务器的地址。
为了提高服务器负载的均衡性以及缩短报文的响应时间,在确定业务报文对应的目标服务器或对应的目标服务器的地址时,需要考虑分发模块中存储的目标服务器的权重系数、目标服务器的连接数量,以及该业务报文对应的客户端访问目标服务器的次数,即访问次数,等因素,从而优先选择权重系数较大、连接数量较少且访问次数较多的目标服务器的地址为该业务报文对应的目标服务器的地址。
可选的,所述方法还包括:
通过动态配置接口,更新所述分发模块的配置,其中,所述分发模块的配置包括所述分发模块中目标服务器的地址、目标服务器对应的端口和目标服务器的权重中的至少一项。
具体的,可以基于代理服务器对应的集群(由多个目标服务器组成)的最新配置(包括目标服务的IP地址及其对应的目标端口),通过动态配置接口,进行分发模块的配置的更新。
示例性的,可以通过动态配置接口,更新分发模块中记录的目标服务器的地址对应的目标端口,如将分发模块中的“127.0.0.1:7079”修改为“127.0.0.1:8080”。还可以通过动态配置接口,在分发模块中增加一个服务器池。
当业务报文数量较多,超出了目标服务器所在集群的承载能力时,往往需要动态扩充集群的服务器,反之,则需要动态减少集群的服务器。在动态增加或减少服务器的场景下,为了进一步降低端口减速的运维成本,可以基于动态配置接口,基于集群的最新配置,进行分发模块的配置的更新,从而实现平滑上线。
步骤S306,根据业务报文对应的目标服务器的地址,将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
在得到目标服务器的真实IP地址之后,基于目标服务器的IP地址,将代理端口接收到的各个业务报文,转发至对应的目标服务器。
在本实施例中,针对通过代理服务器进行客户端发往目标服务器的业务报文转发的场景,将接收到的外发至目标服务器的多个业务报文,均重定向至代理服务器的同一个代理端口,大大减少了海量端口加速场景下转发操作的资源占用,降低了端口加速的成本;在反向代理过程中,基于业务报文通信协议的类型,采用相应的策略从套接字中解出该业务报文的目标端口,从而基于该目标端口对应的目标服务器的IP地址,实现业务报文的转发,实现了海量端口的加速,且当代理服务器对应的目标服务器更新时,如增加、减少目标服务器时,无需调整代理服务器中的转发配置,降低了运维成本。
在目标服务器基于业务报文生成响应数据之后,代理服务器接收该响应数据,并基于目标服务器与对应的客户端之间建立连接的两个套接字,将该响应数据转发至对应的客户端。
图4为本申请另一个实施例提供的报文转发方法的流程示意图,如图4所示,客户端的IP地址为192.168.1.101,客户端发送一个发往443端口的报文,该报文中还包括该客户端对应的原端口;代理服务器(对应两个IP地址,即192.168.1.102和172.16.1.1)的内核防火墙接收该报文,该内核防火墙基于tproxy将所有的报文都重定向至1000端口(代理端口)上;反向代理应用程序proxy监听1000端口,得到报文及其内的目标端口,进而基于目标端口即443端口,得到目标服务器的IP地址,如172.16.1.2;反向代理应用程序proxy使用原端口与IP地址为172.16.1.2的服务器进行通信,即将报文发送至该服务器。
图5为本申请实施例提供的一种报文转发装置的结构示意图,该装置应用于代理服务器,该代理服务器包括代理端口,如图5所示,该报文转发装置包括:报文获取模块510、重定向模块520、目标端口获取模块530和报文转发模块540。
其中,报文获取模块510,用于获取多个业务报文,其中,每个所述业务报文中包括一个目标端口;重定向模块520,用于基于所述透明代理应用程序,将所述多个业务报文重定向至代理服务器的代理端口;目标端口获取模块530,用于基于所述反向代理应用程序,获取所述代理端口接收的各个业务报文以及各个业务报文中的目标端口;报文转发模块540,用于根据各个业务报文的目标端口,对各个业务报文进行转发,以将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
可选的,重定向模块520,具体用于:
针对所述多个业务报文中包括预设标识的业务报文,基于透明代理应用程序,在不修改业务报文的前提下,将所述多个业务报文重定向至所述代理端口。
可选的,目标端口获取模块530,包括:
监听单元,用于基于所述反向代理应用程序,监听所述代理端口;目标端口获取单元,用于当监听到业务报文对应的客户端与代理服务器连接成功时,根据业务报文通信协议的类型,从业务报文对应的套接字中,获取各个业务报文中的目标端口。
可选的,目标端口获取单元,具体用于:
当业务报文的通信协议为传输控制协议时,基于套接字名称调用函数,从所述业务报文对应的套接字中,获取所述业务报文中的目标端口。
可选的,目标端口获取单元,具体用于:
当业务报文的通信协议为用户数据报协议时,基于所述业务报文对应的套接字的辅助数据结构体,获取业务报文中的目标端口。
可选的,报文转发模块540,包括:
地址确定单元,用于根据业务报文中的目标端口,确定业务报文对应的目标服务器的地址;转发单元,用于根据业务报文对应的目标服务器的地址,将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
可选的,地址确定单元,包括:
服务池确定子单元,用于根据业务报文中的目标端口,从分发模块中确定各个所述业务报文对应的服务器池,所述服务器池由至少一个目标服务器的地址和对应的目标端口组成,其中,所述分发模块中包括各个目标端口对应的服务器池;地址确定子单元,用于从业务报文对应的服务器池中,确定各个所述业务报文对应的目标服务器的地址。
可选的,地址确定子单元,具体用于:
根据目标服务器的权重系数、连接数量和访问次数中的至少一项,从所述业务报文对应的服务器池中,确定所述业务报文对应的目标服务器的地址。
可选的,所述装置还包括:
动态配置模块,用于通过动态配置接口,更新所述分发模块的配置,其中,所述分发模块的配置包括所述分发模块中目标服务器的地址、目标服务器对应的端口和目标服务器的权重中的至少一项。
本申请实施例提供的报文转发装置,可用于执行上述图2至图4对应的任意实施例提供的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图6为本申请实施例提供的一种代理服务器的结构示意图,如图6所示,本实施例的提供的代理服务器包括:
至少一个处理器610;以及与所述至少一个处理器通信连接的存储器620;其中,所述存储器620存储有计算机执行指令;所述至少一个处理器610执行所述存储器存储的计算机执行指令,以使所述电子设备执行如前述任一实施例提供的方法。
可选地,存储器620既可以是独立的,也可以跟处理器610集成在一起。
本实施例提供的电子设备的实现原理和技术效果可以参见前述各实施例,此处不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时,可以实现前述任一实施例提供的方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现前述任一实施例提供的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例提供的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (8)

1.一种报文转发方法,其特征在于,所述方法应用于代理服务器,所述代理服务器包括代理端口,所述方法包括:
获取多个业务报文,其中,每个所述业务报文中包括一个目标端口;
针对所述多个业务报文中包括预设标识的业务报文,基于透明代理应用程序创建的重定向套接字,在不修改业务报文的前提下,将所述多个业务报文重定向至代理服务器的代理端口,所述代理服务器仅设置有一个代理端口;
基于反向代理应用程序,监听所述代理端口;
当监听到业务报文对应的客户端与代理服务器连接成功时,根据业务报文通信协议的类型,从业务报文对应的套接字中,获取所述代理端口接收的各个业务报文中的目标端口;
根据各个业务报文中的目标端口,对各个业务报文进行转发,以将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
2.根据权利要求1所述的方法,其特征在于,根据业务报文通信协议的类型,从业务报文对应的套接字中,获取各个业务报文中的目标端口,包括:
当业务报文的通信协议为传输控制协议时,基于套接字名称调用函数,从所述业务报文对应的套接字中,获取所述业务报文中的目标端口。
3.根据权利要求1所述的方法,其特征在于,根据业务报文通信协议的类型,从业务报文对应的套接字中,获取各个业务报文中的目标端口,包括:
当业务报文的通信协议为用户数据报协议时,基于所述业务报文对应的套接字的辅助数据结构体,获取业务报文中的目标端口。
4.根据权利要求1-3任一项所述的方法,其特征在于,根据各个业务报文中的目标端口,对各个业务报文进行转发,以将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器,包括:
根据业务报文中的目标端口,确定业务报文对应的目标服务器的地址;
根据业务报文对应的目标服务器的地址,将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
5.根据权利要求4所述的方法,其特征在于,根据业务报文中的目标端口,确定业务报文对应的目标服务器的地址,包括:
根据业务报文中的目标端口,从分发模块中确定各个所述业务报文对应的服务器池,其中,所述服务器池由至少一个目标服务器的地址和对应的目标端口组成,所述分发模块中包括各个目标端口对应的服务器池;
从业务报文对应的服务器池中,确定各个所述业务报文对应的目标服务器的地址。
6.根据权利要求5所述的方法,其特征在于,从业务报文对应的服务器池中,确定各个所述业务报文对应的目标服务器的地址,包括:
根据目标服务器的权重系数、连接数量和访问次数中的至少一项,从所述业务报文对应的服务器池中,确定所述业务报文对应的目标服务器的地址。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过动态配置接口,更新所述分发模块的配置,其中,所述分发模块的配置包括所述分发模块中目标服务器的地址、目标服务器对应的端口和目标服务器的权重中的至少一项。
8.一种报文转发装置,其特征在于,所述装置应用于代理服务器,所述代理服务器包括代理端口,所述装置包括:
报文获取模块,用于获取多个业务报文,其中,每个所述业务报文中包括一个目标端口;
重定向模块,用于针对所述多个业务报文中包括预设标识的业务报文,基于透明代理应用程序创建的重定向套接字,在不修改业务报文的前提下,将所述多个业务报文重定向至代理服务器的代理端口,所述代理服务器仅设置有一个代理端口;
目标端口获取模块,用于基于反向代理应用程序,当监听到业务报文对应的客户端与代理服务器连接成功时,根据业务报文通信协议的类型,从业务报文对应的套接字中,获取所述代理端口接收的各个业务报文以及各个业务报文中的目标端口;
报文转发模块,用于根据各个业务报文的目标端口,对各个业务报文进行转发,以将所述多个业务报文由所述代理端口,转发至业务报文中的目标端口对应的目标服务器。
CN202210288034.XA 2022-03-22 2022-03-22 报文转发方法及装置 Active CN114710548B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210288034.XA CN114710548B (zh) 2022-03-22 2022-03-22 报文转发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210288034.XA CN114710548B (zh) 2022-03-22 2022-03-22 报文转发方法及装置

Publications (2)

Publication Number Publication Date
CN114710548A CN114710548A (zh) 2022-07-05
CN114710548B true CN114710548B (zh) 2024-04-05

Family

ID=82168550

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210288034.XA Active CN114710548B (zh) 2022-03-22 2022-03-22 报文转发方法及装置

Country Status (1)

Country Link
CN (1) CN114710548B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1929450A (zh) * 2006-10-23 2007-03-14 华为技术有限公司 对网络通信端口重定向的方法和网络通信***
CN1941753A (zh) * 2005-09-30 2007-04-04 华为技术有限公司 下一代网络中的ip互通网关及其实现ip域互通的方法
CN104506670A (zh) * 2014-12-31 2015-04-08 北京奇虎科技有限公司 建立网游连接的方法、设备及***
CN105450585A (zh) * 2014-07-24 2016-03-30 阿里巴巴集团控股有限公司 一种信息传输方法及装置
CN105791315A (zh) * 2016-04-25 2016-07-20 网宿科技股份有限公司 一种udp协议加速方法和***
CN106506512A (zh) * 2016-11-18 2017-03-15 乐视控股(北京)有限公司 代理网络协议的方法、装置以及电子设备
CN107071034A (zh) * 2017-04-20 2017-08-18 网宿科技股份有限公司 一种数据包传输方法和***
CN107295040A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 数据上传方法、装置及***
CN107786502A (zh) * 2016-08-26 2018-03-09 中兴通讯股份有限公司 一种认证代理方法、装置和设备
CN112261094A (zh) * 2020-10-10 2021-01-22 厦门网宿有限公司 一种报文处理方法及代理服务器
CN113452686A (zh) * 2021-06-23 2021-09-28 中移(杭州)信息技术有限公司 数据处理方法、装置、代理服务器及存储介质
WO2021196568A1 (zh) * 2020-03-30 2021-10-07 厦门网宿有限公司 流量代理方法、服务器及存储介质
CN114025370A (zh) * 2021-11-04 2022-02-08 杭州朗和科技有限公司 数据报文传输方法、介质、***和计算设备
CN114189385A (zh) * 2021-12-14 2022-03-15 杭州安恒信息技术股份有限公司 一种流量分发方法、装置、设备和计算机可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120782A1 (en) * 2001-02-26 2002-08-29 Douglas Dillon Transparent proxying enhancement
JP4540720B2 (ja) * 2008-04-02 2010-09-08 株式会社エヌ・ティ・ティ・ドコモ データ通信端末、プロキシ装置、データ通信システム、及びデータ通信方法
JP2016541048A (ja) * 2013-10-28 2016-12-28 華為技術有限公司Huawei Technologies Co.,Ltd. サービスプロキシを使用してデータを転送する方法、デバイスおよびシステム
US9735943B2 (en) * 2015-05-11 2017-08-15 Citrix Systems, Inc. Micro VPN tunneling for mobile platforms
US9985930B2 (en) * 2016-09-14 2018-05-29 Wanpath, LLC Reverse proxy for accessing local network over the internet
US11042397B2 (en) * 2019-02-22 2021-06-22 Vmware, Inc. Providing services with guest VM mobility

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1941753A (zh) * 2005-09-30 2007-04-04 华为技术有限公司 下一代网络中的ip互通网关及其实现ip域互通的方法
CN1929450A (zh) * 2006-10-23 2007-03-14 华为技术有限公司 对网络通信端口重定向的方法和网络通信***
CN105450585A (zh) * 2014-07-24 2016-03-30 阿里巴巴集团控股有限公司 一种信息传输方法及装置
CN104506670A (zh) * 2014-12-31 2015-04-08 北京奇虎科技有限公司 建立网游连接的方法、设备及***
CN107295040A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 数据上传方法、装置及***
CN105791315A (zh) * 2016-04-25 2016-07-20 网宿科技股份有限公司 一种udp协议加速方法和***
CN107786502A (zh) * 2016-08-26 2018-03-09 中兴通讯股份有限公司 一种认证代理方法、装置和设备
CN106506512A (zh) * 2016-11-18 2017-03-15 乐视控股(北京)有限公司 代理网络协议的方法、装置以及电子设备
CN107071034A (zh) * 2017-04-20 2017-08-18 网宿科技股份有限公司 一种数据包传输方法和***
WO2021196568A1 (zh) * 2020-03-30 2021-10-07 厦门网宿有限公司 流量代理方法、服务器及存储介质
CN112261094A (zh) * 2020-10-10 2021-01-22 厦门网宿有限公司 一种报文处理方法及代理服务器
CN113452686A (zh) * 2021-06-23 2021-09-28 中移(杭州)信息技术有限公司 数据处理方法、装置、代理服务器及存储介质
CN114025370A (zh) * 2021-11-04 2022-02-08 杭州朗和科技有限公司 数据报文传输方法、介质、***和计算设备
CN114189385A (zh) * 2021-12-14 2022-03-15 杭州安恒信息技术股份有限公司 一种流量分发方法、装置、设备和计算机可读存储介质

Also Published As

Publication number Publication date
CN114710548A (zh) 2022-07-05

Similar Documents

Publication Publication Date Title
JP7278679B2 (ja) モバイルエッジコンピューティングノードの選択方法、装置及びシステム
CN110198307B (zh) 一种移动边缘计算节点的选择方法、装置及***
WO2023000935A1 (zh) 一种数据处理方法、网元设备以及可读存储介质
CN1902877B (zh) 控制去往无线通信设备的未请求业务的设备及方法
US20140222967A1 (en) Transparent media delivery and proxy
CN104994079B (zh) 访问请求的处理方法和装置、加速服务器
CN114095557B (zh) 数据处理方法、装置、设备以及介质
US10250671B2 (en) P2P-based file transmission control method and P2P communication control device therefor
CN113810512A (zh) 物联网终端接入***、方法、装置及存储介质
CN112738288A (zh) Dns域名解析方法、dns服务器、gslb***及域名解析***
CN109618003B (zh) 一种服务器规划方法、服务器及存储介质
US20240106890A1 (en) Peer-to-peer network scheduling method and system
CN116633934A (zh) 负载均衡方法、装置、节点及存储介质
CN111327668A (zh) 网络管理方法、装置、设备和存储介质
CN114629912B (zh) 基于mec的通信传输方法及装置
CN114285900A (zh) 调度***、认证方法、调度方法、装置、服务器及介质
CN114710548B (zh) 报文转发方法及装置
CN110582090A (zh) 一种cdn调度方法、调度***和mec网元
CN114584558B (zh) 云边协同分布式api网关***及api调用方法
CN114615315A (zh) 线上会话的通讯方法、装置、设备及存储介质
KR20230003490A (ko) 오케스트레이션된 프록시 서비스
CN110324826B (zh) 一种内网访问方法及相关装置
US10715561B2 (en) Reanchoring devices on servers
CN113422772A (zh) 专网终端访问处理方法、装置及电子设备
US10305857B2 (en) Technique for obtaining a policy for routing requests emitted by a software module running on a client device

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
GR01 Patent grant
GR01 Patent grant