一种TCP/UDP代理的IP复用方法和系统与流程

文档序号:32348018发布日期:2022-11-26 12:00阅读:308来源:国知局
一种TCP/UDP代理的IP复用方法和系统与流程
一种tcp/udp代理的ip复用方法和系统
技术领域
1.本发明涉及通信技术领域,尤其涉及一种tcp/udp代理的ip复用方法和系统。


背景技术:

2.如图1所示,目前传统的tcp/udp代理加速场景中,主要有两种方法进行租户隔离,也即设置配置文件:
3.1.使用ip区分客户(例如user1、user2),给每个客户分配不同的ip,这样达到每个接入ip对应不同的业务源站(例如origin1、origin2);
4.2.使用ip和端口组合区分客户,每个客户分配不同的ip加端口的组合,每个ip加端口的组合对应不同的业务源站。
5.使用ip区分客户的方法存在以下问题:
6.1.必须给每个客户分配一个ip用于区分每个客户配置、流量、带宽等信息;
7.2.通过不同的ip区分每个客户不同的源站,接入节点(access node)和父节点(parent node)的ip都需要进行区分,即接入ip和父节点ip,通过不同ip对应到不同的配置和回源信息;
8.3.业务变更需要更换ip时,需要一个个进行替换;
9.4.需要提前申请大量的ip,ip不够时,会影响新客户的使用;
10.使用ip和端口组合区分客户的方法存在以下问题:
11.1.在同一个ip使用不同的端口区分客户,必须给不同的客户分配不同的端口,用于区分每个客户配置、流量、带宽等信息;
12.2.通过ip加端口的组合区分客户不同的源站信息,每个ip最多只有65535个端口,达到65535个端口后,还是需要更换ip。
13.4.比ip区分用户多了个端口的维护,需要配套的管理系统维护ip和端口与客户的关系,在业务变更时,ip和端口也需要进行修改。
14.以上两种方法均存在:
15.1.ip浪费,成本高,大量接入客户后,每个客户需要分配一个接入点ip,同时需要分配父节点ip,ip的成本比较高,并且在需要更换ip时,每个ip都需要进行更换,更新成本也比较大;
16.2.业务管理的复杂度高,接入节点和父节点都需要分配不同的ip加端口用来区分客户,管理系统需要同时维护不同的接入点ip端口和不同的父节点ip端口,管理系统开发和维护的复杂度高。
17.3.变更风险大,在有业务变更内部需要修改ip和端口时,风险比较大,由于涉及的ip很多,更容易影响业务。
18.因此,针对上述问题,有必要提出进一步地解决方案,以至少解决其中一个问题。


技术实现要素:

19.为了解决相关的ip浪费和成本高的问题,本发明提供一种tcp/udp代理的ip复用方法。所述技术方案是:
20.一种tcp/udp代理的ip复用方法,为父节点配置单一的父节点ip或单一的父节点ip和端口,并包括:
21.接入节点接收客户端发送的tcp/udp数据,所述tcp/udp数据经tls加密;
22.所述接入节点将接入ip或接入ip和端口在先,所述tcp/udp数据在后发送至对应的父节点;
23.所述父节点通过所述接入ip或接入ip和端口获取回源信息;
24.所述父节点将所述tcp/udp数据发送至对应的源站。
25.优选地,当所述接入节点部署ssl证书时,包括:
26.所述接入节点将所述接入ip或接入ip和端口作为key从配置文件中获取对应的父节点ip或父节点ip和端口;
27.当所述接入节点未部署ssl证书时,包括:
28.所述接入节点解析所述tcp/udp数据中的tls握手数据,获取server_name字段;
29.所述接入节点将所述server_name字段作为key从配置文件中获取对应的父节点ip或父节点ip和端口。
30.优选地,所述父节点通过所述接入ip或接入ip和端口获取回源信息,包括:
31.所述父节点根据所述接入ip或接入ip和和端口判断是否需要解析所述tcp/udp数据中的tls握手数据,若所述父节点将所述接入ip或接入ip和端口作为key从配置文件中能够获取回源信息,则无需解析;若不能,则所述父节点解析所述tcp/udp数据中的tls握手数据,获取server_name字段,并将所述server_name字段作为key从配置文件中获取回源信息。
32.优选地,所述接入节点将接入ip或接入ip和端口在先,所述tcp/udp数据在后发送至所述父节点,包括:
33.所述接入节点先向所述父节点发送接入ip或接入ip和端口,在接收到所述父节点回复信息后立即向所述父节点发送tcp/udp数据;或,
34.所述接入节点将所述接入ip或接入ip和端口在先、tcp/udp数据在后打包发送至所述父节点。
35.优选地,所述接入节点的配置为接入ip和端口,且所述接入ip和端口为6个字节,接入ip为4个字节,端口为2个字节。
36.另一技术方案为:
37.一种tcp/udp代理的ip复用系统,包括若干客户端、接入节点、父节点和源站,为父节点配置单一的父节点ip或单一的父节点ip和端口,且,
38.所述接入节点用于接收客户端发送的tcp/udp数据,所述tcp/udp数据经tls加密,再将接入ip或接入ip和端口在先,所述tcp/udp数据在后发送至对应的所述父节点;
39.所述父节点用于通过所述接入ip或接入ip和端口获取回源信息,再将所述tcp/udp数据发送至对应的源站。
40.优选地,所述接入节点部署ssl证书,且所述接入节点将所述接入ip或接入ip和端
口作为key从配置文件中获取对应的父节点ip或父节点ip和端口;或,
41.所述接入节点未部署ssl证书,且所述接入节点解析所述tcp/udp数据中的tls握手数据,获取server_name字段,并将所述server_name字段作为key从配置文件中获取对应的父节点ip或父节点ip和端口。
42.优选地,所述父节点用于通过所述接入ip或接入ip和端口获取回源信息,包括:
43.所述父节点用于根据所述接入ip或接入ip和端口判断是否需要解析所述tcp/udp数据中的tls握手数据,若所述父节点将所述接入ip或接入ip和端口作为key从配置文件中能够获取回源信息,则无需解析;若不能,则所述父节点解析所述tcp/udp数据中的tls握手数据,获取server_name字段,并将所述server_name字段作为key从配置文件中获取回源信息。
44.优选地,所述接入节点用于将接入ip或接入ip和端口在先,所述tcp/udp数据在后发送至所述父节点,包括:
45.所述接入节点用于先向所述父节点发送接入ip或接入ip和端口,在接收到所述父节点回复信息后立即向所述父节点发送tcp/udp数据;或,
46.所述接入节点用于将所述接入ip或接入ip和端口在先、tcp/udp数据在后打包发送至所述父节点。
47.优选地,所述接入节点的配置为接入ip和端口,且所述接入ip和端口为6个字节,接入ip为4个字节,端口为2个字节。
48.与现有技术相比,本发明的有益效果是:
49.本发明通过解析客户端发起的tls握手数据,获取到用户发起clienthello中的server_name字段,通过此区分客户,从而不同的客户使用相同ip进行接入,复用了接入ip,减少接入ip的浪费;接入节点将数据代理到父节点前,在tcp/udp数据前添加一个内部自定义数据,即客户接入ip,然后和tcp/udp数据转发到父节点,父节点解析出此数据,则可以区分客户,从而把tcp/udp数据发送到源站,这种方式减少了父节点ip的浪费,复用了父节点的ip;也即本发明只需要根据解析出来的server_name字段区分接入点的客户,生成接入点的配置,父节点使用固定端口接入,无需按客户区分端口;本发明无需部署ssl证书,无需额外的端口维护,简化了配置维护;本发明在有变更需要替换ip时,更换一个ip相当于更换了大部分用户的接入ip,达到统一替换的目的。
附图说明
50.图1为现有技术中的tcp/udp代理处理流程框图;
51.图2为本发明中接入节点的处理流程框图;
52.图3为本发明中接入节点的处理流程图;
53.图4为本发明中接入节点向父节点发送的数据格式示意图;
54.图5(a)为本发明中父节点的处理流程框体,且接入节点复用ip;
55.图5(b)为本发明中父节点的处理流程框体,且接入节点未复用ip;
56.图6为本发明中父节点的处理流程图。
具体实施方式
57.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
58.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
59.实施例1:
60.以下以ip和端口组合区分客户方式,tcp代理加速为例进行说明,以ip区分客户方式以及udp代理为基本相同步骤。
61.如图2和图3所示,接入节点针对客户端发起的tcp数据,首先会进行tls握手,接入节点对客户端发送的tls数据进行解析,拿到其中的server_name字段,此步骤和标准的https的tls握手一致,但是不同的是,这里的接入节点是不部署ssl证书的,不做任何数据加解密。然后接入节点再和父节点建连后,把接入ip和端口放到实际客户端数据的签名发给父节点,便于父节点区分客户。
62.具体地:
63.step1:接入节点接收客户端发送的tcp数据,也即接收用户请求的tcp数据,该tcp数据是经tls加密过的数据;
64.step2:接入节点的加速服务收到客户端的请求后数据后,先预读取前面部分数据,获取到client hello握手数据;
65.step3:解析拿到握手数据里面的server_name字段;
66.step4:通过server_name作为配置的key,从配置文件中获取配置信息,主要是获取父节点的ip和端口;该配置文件包括server_name和父节点的映射。
67.step5:和获取到的父节点进行建立连接,准备发送数据;
68.step6:在发送业务数据(即tcp数据)之前,在和父节点连接的最前面,先发送接入ip和端口给父节点;
69.step7:在接收到父节点回复信息后立即在连接上发送终端实际的业务数据给父节点,后续交给父节点处理。
70.step6-step7也可以采用将接入ip和端口在先、终端实际的业务数据(即tcp数据)在后打包发送给父节点,后续交给父节点处理。
71.数据格式如图4,前面6个字节是接入节点的接入ip和端口。
72.相比传统的不同的用户业务使用不同的ip接入而言,本实施例接入节点复用ip和端口接入了不同的用户,通过预解析tls握手信息,拿到不同的用户业务请求,从而达到区分用户业务的目的,进而接入节点可以对每个业务单独处理各自的逻辑,并回父节点获取数据。
73.以上为接入节点复用ip情况,若接入节点不复用ip,即按照常规配置,则此时,接入节点一般部署有ssl证书,接入节点将接入ip和端口作为key从配置文件中获取对应的父节点ip和端口。该配置文件包括接入ip和端口和父节点ip和端口的映射。
74.如图5(a)、图5(b)和图6所示,接入节点无论是否复用ip,父节点都是复用ip和端
口的,通过接入节点转发到父节点的接入ip和端口,父节点既节省了ip,也做到了租户隔离。
75.接入点在终端发送的tcp数据前增加了6个字节的ip和port(端口),转发给父节点。父节点通过获取到这些信息来做到租户隔离和配置的简单管理,无需给每个接入业务分配不同的父节点ip,共用一个ip就可以完成整个链路流程和访问。
76.具体地:
77.step1:收到接入节点转发到父节点的数据,开始对数据进行解析;
78.step2:拿到前面6个字节的数据,前面4字节是接入节点的ip,后面2字节是端口,把ip+port作为key;
79.step3:通过ip+port从配置文件中获取到回源信息;具体地,父节点根据接入ip和和端口判断是否需要解析所述tcp数据中的tls握手数据,若父节点将接入ip和端口作为key从配置文件中能够获取回源信息,则无需解析,此时,可以理解的是,接入ip和端口为非复用的,配置文件为常规的,即包括接入ip和端口与回源信息的映射;若不能,则所述父节点解析所述tcp数据中的tls握手数据,获取server_name字段,并将所述server_name字段作为key从配置文件中获取回源信息,该配置文件包括server_name和回源信息的映射。
80.step4:将tcp数据发送至源站,也即忽略前面6个字节,剩下的数据直接转发到源站,这样就完成了一次完成的回源转发。
81.相比传统方式的不同的用户业务父节点必须使用不同ip或者端口来区分不同的用户,本实施例不管接入方式如何,父节点都能达到完全复用ip和端口的效果,大大减少了父节点ip和端口的浪费,通过获取到实际的接入ip和端口,从而达到区分用户业务的目的,进而父节点可以对每个业务单独处理各自的逻辑,并回源获取数据。
82.实施例2:
83.以下以ip和端口组合区分客户方式,tcp代理加速为例进行说明,以ip区分客户方式以及udp代理为基本相同步骤。
84.一种tcp/udp代理的ip复用系统,包括若干客户端、接入节点、父节点和源站。该系统用于执行实施例1的方法。
85.具体地,该系统为父节点配置单一的父节点ip和端口。且所述接入节点用于接收客户端发送的tcp数据,所述tcp数据经tls加密。接入节点再将接入ip和端口在先,所述tcp数据在后发送至对应的所述父节点,即所述接入节点用于先向所述父节点发送接入ip和端口,在接收到所述父节点回复信息后立即向所述父节点发送tcp数据;或,所述接入节点用于将接入ip和端口在先、tcp数据在后打包发送至所述父节点。所述接入ip和端口为6个字节,接入ip为4个字节,端口为2个字节。
86.所述父节点用于通过接入ip和端口获取回源信息,再将所述tcp数据发送至对应的源站。所述父节点用于通过所述接入ip或接入ip和端口获取回源信息,包括:所述父节点用于根据接入ip和端口判断是否需要解析所述tcp数据中的tls握手数据,若所述父节点将接入ip和端口作为key从配置文件中能够获取回源信息,则无需解析;若不能,则所述父节点解析所述tcp数据中的tls握手数据,获取server_name字段,并将所述server_name字段作为key从配置文件中获取回源信息。
87.本系统中接入节点可以部署ssl证书,也可以不部署ssl证书。所述接入节点部署
ssl证书,且所述接入节点将所述接入ip或接入ip和端口作为key从配置文件中获取对应的父节点ip和端口。所述接入节点未部署ssl证书,且所述接入节点解析所述tcp数据中的tls握手数据,获取server_name字段,并将所述server_name字段作为key从配置文件中获取对应的父节点ip和端口。
88.综上所述,本发明对于tls加密的tcp/udp请求,可以通过server_name合用接入ip,只需要分配同一个ip,父节点也可以共用同一个ip;对于必须多个ip接入的不同业务,也可以复用父节点ip,使用同一个ip进行服务,从而大大减少了ip的使用,降低了ip和配置管理的难度。
89.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
90.或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
91.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1