CN103491016A - Udp负载均衡系统中源地址传递方法、系统及装置 - Google Patents
Udp负载均衡系统中源地址传递方法、系统及装置 Download PDFInfo
- Publication number
- CN103491016A CN103491016A CN201210189879.XA CN201210189879A CN103491016A CN 103491016 A CN103491016 A CN 103491016A CN 201210189879 A CN201210189879 A CN 201210189879A CN 103491016 A CN103491016 A CN 103491016A
- Authority
- CN
- China
- Prior art keywords
- load
- port numbers
- balancing device
- message bag
- address
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提出一种UDP负载均衡系统中源地址传递方法、系统及装置。负载均衡系统中源地址传递方法包括以下步骤:负载均衡设备接收客户端发送的用户数据包协议UDP数据包;所述负载均衡设备对所述UDP数据包进行源地址转换,并将包含所述客户端的地址和/或端口号的隧穿模型TTM选项插入到所述UDP数据包中并发送至后端服务器;所述后端服务器解析所述UDP数据包的TTM选项并获得所述客户端的地址和/或端口号;以及所述后端服务器根据所述客户端的地址和/或端口号生成相应的响应数据包。本发明可以在使用源地址转换技术的情况下将客户端真实地址和端口号传递给后端服务器,同时可满足跨网段部署的需求。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种UDP负载均衡系统中源地址传递方法、系统及装置。
背景技术
在现有的四层UDP(User Datagram Protocol,用户数据包协议)负载均衡设备中,如果采用源地址翻译技术,则后端服务器只能获取到翻译之后的虚拟源IP,无法获取客户端的真实IP,从而无法进一步开展基于客户端地理位置的相关服务;如果不采用源地址翻译技术,则或者不能将后端服务器部署在与负载均衡设备不同的网段之中,或者外出流量不能经过负载均衡设备,从而增加了后端服务器受攻击的风险。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。
为此,本发明的一个目的在于提出一种能够同时满足客户端真实IP获取和跨网段部署两种需求的UDP负载均衡系统中源地址传递方法。
本发明的另一个目的在于提出一种能够同时满足客户端真实IP获取和跨网段部署两种需求的UDP负载均衡系统中源地址传递系统。
本发明的又一个目的在于提出一种负载均衡设备。
本发明的再一个目的在于提出一种后端服务器。
为达到上述目的,根据本发明第一方面的实施例提出一种UDP负载均衡系统中源地址传递方法,包括以下步骤:负载均衡设备接收客户端发送的用户数据包协议UDP数据包;所述负载均衡设备对所述UDP数据包进行源地址转换,并将包含所述客户端的地址和/或端口号的隧穿模型TTM选项插入到所述UDP数据包中并发送至后端服务器;所述后端服务器解析所述UDP数据包的TTM选项并获得所述客户端的地址和/或端口号;以及所述后端服务器根据所述客户端的地址和/或端口号生成相应的响应数据包。
根据本发明实施例的UDP负载均衡系统中源地址传递方法,通过将客户端的地址和/或端口号插入到TTM选项中,并将TTM选项插入到UDP数据包中发送至后端服务器,从而后端服务器可以获取到客户端的真实地址,从而可以提供基于地理位置的相关服务。同时,通过使用源地址翻译技术,可以满足系统跨网段部署的需求,提高灵活性,而且可以避免后端服务器受到攻击,增加安全性。
为达到上述目的,根据本发明第二方面的实施例提出一种UDP负载均衡系统中源地址传递系统,包括客户端、负载均衡设备和后端服务器。其中,所述客户端用于向所述负载均衡设备发送UDP数据包,并接收所述负载均衡设备发送的响应数据包;所述负载均衡设备用于接收所述客户端发送的UDP数据包,并对所述UDP数据包进行源地址转换,以及将包含所述客户端的地址和/或端口号的TTM选项插入到所述UDP数据包中并发送至后端服务器;所述后端服务器用于接收所述负载均衡设备发送的UDP数据包,并解析所述UDP数据包的TTM选项以获得所述客户端的地址和/或端口号,以及根据所述客户端的地址和/或端口号生成相应的响应数据包。
根据本发明实施例的UDP负载均衡系统中源地址传递系统,通过将客户端的地址和/或端口号插入到TTM选项中,并将TTM选项插入到UDP数据包中发送至后端服务器,从而后端服务器可以获取到客户端的真实地址,从而可以提供基于地理位置的相关服务。同时,通过使用源地址翻译技术,可以满足系统跨网段部署的需求,提高灵活性,而且可以避免后端服务器受到攻击,增加安全性。
为达到上述目的,根据本发明第三方面的实施例提出一种负载均衡设备,包括:接收模块,用于接收客户端发送的UDP数据包,及接收后端服务器发送的响应数据包;源地址转换模块,用于对所述UDP数据包进行源地址转换;插入模块,用于将包含所述客户端的地址和/或端口号的隧穿模型TTM选项插入到所述源地址转换后的UDP数据包中;以及发送模块,用于将插入所述TTM选项的UDP数据包至所述后端服务器。
根据本发明实施例的负载均衡设备,通过使用源地址转换技术,可以使得负载均衡设备和后端服务器跨网段部署,提高灵活性,而且可以避免后端服务器受到攻击,增加安全性。同时,通过将包含客户端的地址和/或端口号的TTM选项插入到UDP数据包中,使得后端服务器可以获取到客户端的真实地址,从而可以开展地理位置相关的服务。
为达到上述目的,本发明第四方面的实施例提出一种后端服务器,包括:接收模块,用于接收负载均衡设备发送的UDP数据包,其中,所述UDP数据包TTM选项中包含所述客户端的地址和/或端口号,且所述UDP数据包中的源地址和/或源端口为所述负载均衡设备的地址和/或端口号;解析模块,用于解析所述UDP数据包的TTM选项以获得所述客户端的地址和/或端口号;以及处理模块,用于根据所述客户端的地址和/或端口号生成相应的响应数据包。
通过本发明实施例的后端服务器,可以获取到客户端的真实地址,从而可以开展地理位置相关的服务。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例的UDP负载均衡系统中源地址传递方法的流程图;
图2是本发明一个实施例的UDP负载均衡系统中UDP数据包传递示意图;
图3是本发明另一个实施例的UDP负载均衡系统中源地址传递方法的流程图;
图4是本发明又一个实施例的UDP负载均衡系统中源地址传递方法的流程图;
图5是本发明一个实施例的UDP负载均衡系统中源地址传递系统的结构框图;
图6是图5中所示的后端服务器的结构框图;
图7是本发明一个实施例的负载均衡设备的结构框图;
图8是本发明另一个实施例的负载均衡设备的结构框图;
图9是本发明又一个实施例的负载均衡设备的结构框图;
图10是本发明一个实施例的后端服务器的结构框图;
图11是图10中所示的处理模块的一个实施例的结构框图;以及
图12是图10中所示的处理模块的另一个实施例的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
图1为本发明一个实施例的UDP负载均衡系统中源地址传递方法的流程图。如图1所示,该方法包括以下步骤:
步骤S101,负载均衡设备接收客户端发送的UDP数据包。
步骤S102,负载均衡设备对UDP数据包进行源地址转换,并将包含客户端的地址和/或端口号的TTM(Tunnel Through Model,隧穿模型)选项插入到UDP数据包中并发送至后端服务器。
具体地,负载均衡设备可采用本领域技术人员所熟知的源地址转换技术对UDP数据包进行地址转换,此处不再详细描述。
在本发明的一个实施例中,为了将客户端的IP地址信息填充在UDP数据包中,负载均衡设备会使用客户端的IP地址信息构造一个TTM选项并插入到数据包的IP首部。
下表1为一个TTM选项的示例。根据IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)最新发布(截至2011年10月19日)的IP选项字段分配表,选项编号字段31未被使用,因此,在表1示出的TTM选项中包括1字节的选项编号(31),1字节的选项长度(8bit),2字节的客户端端口(CPORT)和4字节的客户端IP(CIP),总长度为8个字节。应理解,这仅为示意性的例子,并不用于限制本发明,本领域技术人员可以根据实际需要设置TTM选项的长度,而且在TTM选项中可以只插入客户端的地址,或者只插入客户端的端口号,或者同时插入客户端的地址和端口号。
表1TTM选项
需要注意的是,在UDP数据包中插入TTM选项必然会增加UDP数据包的长度。因此,如果UDP数据包的原始长度已经接近或达到MTU(Maximum Transmission Unit,最大传输单元),则无法将TTM选项插入到UDP数据包中。例如,如果TTM为8个字节,UDP数据包的原始长度为32个字节,MTU为36个字节,则无法将该TTM插入到此UDP数据包中。
因此,在将TTM选项插入UDP数据包时,需首先判断UDP数据包是否满足TTM选项插入条件,即TTM选项的长度加UDP数据包的长度是否小于MTU。如果满足,则直接插入。如果不满足,则将UDP数据包进行分片,并将TTM选项插入到分片后的第一个数据包的首部。
还应注意的是,某些UDP数据包具有不分片位,即无法对UDP数据包进行分片,此时负载均衡设备丢弃数据包,并向客户端回发icmp(internet control message protocol,互联网控制报文协议)目的不可达或需要分片的报文,以使客户端重新发送可分片的UDP数据包,再对重发的UDP数据包分片并将TTM选项插入到分片后的第一个数据包的首部。这种方法的缺点是效率低,这是因为目前多数客户端都以以太网MTU500作为默认MTU,如果负载均衡设备的MTU小于这个值会导致路径MTU发现机制使用多个数据包进行MTU探测。
针对上述问题,在本发明的其他实施例中,负载均衡设备还可无视UDP数据包的不分片位,继续对UDP数据包进行分片,这种方法的优点是效率高,但是需要后端服务器能够顺利完成分片重组。
应理解的是,为了实现向后兼容,IP协议对于不能识别的选项不作处理,仅仅根据长度位跳过。因此,本发明的TTM选项对于其他网络设备不会造成任何影响。
步骤S103,后端服务器解析UDP数据包的TTM选项并获得客户端的地址和/或端口号。
TTM选项并不是一个标准的IP选项,因此标准的Linux内核无法识别此选项。为了让后端服务器能够识别出该选项,在本发明的一个实施例中,在后端服务器的Linux内核中插入一个模块,该模块在网络滤波器上挂上钩子函数in和out,处理进入后端服务器的流量和从后端服务器流出的流量。
具体地,对于进入后端服务器的流量,在UDP数据包进入后端服务器的内核之前,当数据包到达in函数时,该函数会从UDP数据包的IP首部识别出TTM选项并读取其中的客户端地址和/或客户端端口号。然后,用客户端地址和/或客户端端口号替换负载均衡设备的源地址和/或端口号,替换后将UDP数据包发送至后端服务器的内核以使内核生成相应的响应数据包,并将负载均衡设备的源地址和/或端口号与客户端的地址和/或端口号之间的对应关系加入转换表中。由此,在返回数据包时,可以根据转换表将目的地址转换为负载均衡设备的地址,而不是客户端的真实地址,使数据包可以不经客户端真实地址默认的路由回到负载均衡设备。
如前所述,在后端服务器中维护一个转换表,带有TTM选项的数据包进入后端服务器时会建立一个表项,每个表项存储有负载均衡设备的源地址和/或端口号与客户端的地址和/或端口号之间的对应关系。当不断有新的客户端访问时,该转换表会越来越大,占用大量的内存。为了防止这种情况的发生,在本发明的一个实施例中,对每个表项设置一个超时时间,当表项的存在时间超过超时时间时被删除,从而节省系统资源。
步骤S104,后端服务器根据客户端的地址和/或端口号生成相应的响应数据包。
根据本发明实施例的UDP负载均衡系统中源地址传递方法,通过将客户端的地址和/或端口号插入到TTM选项中,并将TTM选项插入到UDP数据包中发送至后端服务器,从而后端服务器可以获取到客户端的真实地址,从而可以提供基于地理位置的相关服务。同时,通过使用源地址翻译技术,可以满足系统跨网段部署的需求,提高灵活性,而且可以避免后端服务器受到攻击,增加安全性。
图3为本发明另一个实施例的UDP负载均衡系统中源地址传递方法的流程图。如图3所示,该方法包括以下步骤:
步骤S201,负载均衡设备接收客户端发送的UDP数据包。
步骤S202,负载均衡设备对UDP数据包进行源地址转换。
步骤S203,负载均衡设备根据客户端的地址和/或端口号构造TTM选项。
步骤S204,判断UDP数据包是否满足TTM选项插入条件。
步骤S205,如果满足,则将TTM选项直接插入到UDP数据包中。
步骤S206,如果不满足,则进一步判断UDP数据包是否可以分片。
步骤S207,如果不可以分片,则负载均衡设备向客户端回发icmp目的不可达或需要分片的报文。由此,客户端重新发送可分片的UDP数据包。
步骤S208,如果可以分片,则将UDP数据包进行分片,并将TTM选项插入到分片后的第一个数据包的首部。
步骤S209,负载均衡设备将带有TTM选项的UDP数据包发送至后端服务器。
步骤S210,在UDP数据包进入后端服务器的内核之前,后端服务器的网络过滤器从UDP数据包的TTM选项获得客户端的地址和/或端口号。
步骤S211,网络过滤器将UDP数据包中负载均衡设备的源地址和/或端口号替换为获得的客户端的地址和/或端口号,并将负载均衡设备的源地址和/或端口号与客户端的地址和/或端口号之间的对应关系加入转换表。
步骤S212,网络过滤器将源地址和/或端口号替换后的UDP数据包发送至后端服务器的内核。
步骤S213,后端服务器的内核根据客户端的地址和/或端口号生成相应的响应数据包。
上述步骤S201至步骤S213的具体实现过程可与本发明第一实施例中的描述相同,此处不再详细描述。
步骤S214,网络过滤器截获响应数据包,并根据转换表将响应数据包的目的地址和/或端口号替换为负载均衡设备的源地址和/或端口号。
根据上面实施例的描述,对于从后端服务器流出的流量,在网络过滤器的out函数中,截获响应数据包,并根据转换表将响应数据的目的地址和/或端口号替换为负载均衡设备的源地址和/或端口号。
步骤S215,网络过滤器将替换后的响应数据包发送至负载均衡设备。
由此,由后端服务器返回的数据包可以不经默认路由返回至负载均衡设备,使得负载均衡设备能够完整追踪连接状态,从而有利于数据流的监控。
图4为本发明又一个实施例的UDP负载均衡设备中源地址传递方法的流程图。如图4所示,该方法包括以下步骤:
步骤S301,负载均衡设备接收客户端发送的UDP数据包。
步骤S302,负载均衡设备对UDP数据包进行源地址转换。
步骤S303,负载均衡设备根据客户端的地址和/或端口号构造TTM选项。
步骤S304,判断UDP数据包是否满足TTM选项插入条件。
步骤S305,如果满足,则将TTM选项插入到UDP数据包中并发送至后端服务器。
步骤S306,如果不满足,则进一步判断UDP数据包是否可以分片。
步骤S307,如果不可以分片,则负载均衡设备向客户端回发icmp目的不可达或需要分片的报文。由此,客户端重新发送可分片的UDP数据包。
步骤S308,如果可以分片,则将UDP数据包进行分片,并将TTM选项插入到分片后的第一个数据包的首部。
步骤S309,负载均衡设备将带有TTM选项的UDP数据包发送至后端服务器。
步骤S310,在UDP数据包进入后端服务器的内核之前,后端服务器的网络过滤器从UDP数据包的TTM选项获得客户端的地址和/或端口号。
步骤S311,网络过滤器将UDP数据包中负载均衡设备的源地址和/或端口号替换为获得的客户端的地址和/或端口号,并将负载均衡设备的源地址和/或端口号与客户端的地址和/或端口号之间的对应关系加入转换表。
步骤S312,网络过滤器将源地址和/或端口号替换后的UDP数据包发送至后端服务器的内核。
步骤S313,后端服务器的内核根据客户端的地址和/或端口号生成相应的响应数据包。
步骤S314,网络过滤器截获响应数据包,并根据转换表将响应数据包的目的地址和/或端口号替换为负载均衡设备的源地址和/或端口号。
步骤S315,网络过滤器将替换后的响应数据包发送至负载均衡设备。
步骤S316,负载均衡设备对响应数据包进行目的地址转换,将响应数据包的目的地址和/或端口号替换为客户端的源地址和/或端口号。从而将数据包返回客户端。
根据本发明实施例的UDP负载均衡设备中源地址传递方法,至少实现以下技术效果:
1、后端服务器和负载均衡设备部署在不同的网段,灵活性高。
2、后端服务器的默认网关不需指向负载均衡设备,即返回的数据包可以不经默认路由回到负载均衡设备。
3、两个方向的数据流都经过负载均衡设备,实现完整追踪连接状态,有利于数据流的监控。
4、后端服务器可以获取到客户端的真实地址,有利于开展地理位置相关的服务。
为实现上述实施例,本发明还提出一种UDP负载均衡系统中源地址传递系统。
图5为本发明一个实施例的UDP负载均衡系统中源地址传递系统的结构框图。如图5所示,该系统包括:客户端1、负载均衡设备2和后端服务器3。
客户端1用于向负载均衡设备2发送UDP数据包,并接收负载均衡设备发送的响应数据包。负载均衡设备2用于接收客户端1发送的UDP数据包,并对UDP数据包进行源地址转换,以及将包含客户端的地址和端口号的TTM选项插入到UDP数据包中并发送至后端服务器3。后端服务器3用于接收负载均衡设备2发送的UDP数据包,并解析UDP数据包的TTM选项以获得客户端1的地址和端口号,以及根据客户端的地址和端口号生成相应的响应数据包。
根据本发明实施例的基于UDP负载均衡系统中源地址传递系统,通过将客户端的地址和/或端口号插入到TTM选项中,并将TTM选项插入到UDP数据包中发送至后端服务器,从而后端服务器可以获取到客户端的真实地址,从而可以提供基于地理位置的相关服务。同时,通过使用源地址翻译技术,可以满足系统跨网段部署的需求,提高灵活性,而且可以避免后端服务器受到攻击,增加安全性。
图6为本发明一个实施例的后端服务器的结构框图。如图6所示,在本发明的一个实施例中,后端服务器3包括网络过滤器310和内核320。网络过滤器310用于在UDP数据包进入内核32之前,从UDP数据包的TTM选项获得客户端1的地址和/或端口号,并将UDP数据包中负载均衡设备2的源地址和/或端口号替换为获得的客户端1的地址和/或端口号,以及将负载均衡设备2的源地址和/或端口号与客户端1的地址和/或端口号之间的对应关系加入转换表,并将源地址和/或端口号替换后的UDP数据包发送至内核320。内核320用于根据源地址和/或端口号替换后的UDP数据包生成相应的响应数据包。由此,由后端服务器返回的数据包可以根据转换表将响应数据的目的地址和/或端口号替换为负载均衡设备2的源地址和/或端口号,将数据包返回至负载均衡设备2,使得负载均衡设备2能够完整追踪连接状态,从而有利于数据流的监控。
由此,在本发明的一个实施例中,网络过滤器310还用于截获内核320生成的响应数据包,并根据转换表将响应数据包的目的地址和/或端口号替换为负载均衡设备2的源地址和/或端口号,以及将替换后的响应数据包发送至负载均衡设备2。
应理解,在本发明的其他实施例中,网络过滤器310还可插入至内核320中,作为内核320的一个模块,实现同样的功能,这些变化和修改均应包含在本发明的保护范围内。
此外,在本发明的一个实施例中,负载均衡设备2还用于在UDP数据包不满足TTM选项的插入条件时,将UDP数据包进行分片,并在分片后的第一个UDP数据包中插入TTM选项。在本发明的另一个实施例中,负载均衡设备2还用于在UDP数据包中具有不分片位时,向客户端1回发icmp目的不可达或需要分片的报文。由此保证TTM选项能够插入到UDP数据包中,且插入后的UDP数据包不超过MTU,能够正常传输。
根据本发明实施例的UDP负载均衡设备中源地址传递系统,至少实现以下技术效果:
1、后端服务器3和负载均衡设备2部署在不同的网段,灵活性高。
2、后端服务器3的默认网关不需指向负载均衡设备2,即返回的数据包可以不经默认路由回到负载均衡设备2。
3、两个方向的数据流都经过负载均衡设备2,实现完整追踪连接状态,有利于数据流的监控。
4、后端服务器3可以获取到客户端1的真实地址,有利于开展地理位置相关的服务。
为实现上述实施例,本发明还提出一种负载均衡设备。
图7为本发明一个实施例的负载均衡设备的结构框图。如图7所示,该负载均衡设备2包括:第一接收模块21、源地址转换模块22、插入模块23和发送模块24。
第一接收模块21用于接收客户端1发送的UDP数据包,及接收后端服务器3发送的响应数据包。源地址转换模块22用于对UDP数据包进行源地址转换。插入模块23用于将包含客户端1的地址和/或端口号的TTM选项插入到源地址转换后的UDP数据包中。发送模块24用于将插入TTM选项的UDP数据包发送至后端服务器3。
应理解,将TTM选项插入UDP数据包中可能会引起数据包的长度过长,导致无法传输。因此,在插入TTM选项时需首先判断是否满足插入条件,对不满足插入条件的UDP数据包进行处理后再插入。
图8为本发明另一个实施例的负载均衡设备的结构框图。如图8所示,在图7所示的实施例的基础上,该负载均衡设备2还包括:判断模块25和分片模块26。
判断模块25用于判断UDP数据包是否满足TTM选项的插入条件,例如判断UDP数据包的长度加TTM选项的长度是否小于MTU。分片模块26用于在判断模块25判断不满足TTM选项的插入条件时,将UDP数据包进行分片,并在分片后,插入模块23将TTM选项插入分片后的第一个UDP数据包中。由此,保证TTM选项的插入以及插入后数据包的正常传输。
图9为本发明又一个实施例的负载均衡设备的结构框图。如图9所示,在途8所示的实施例的基础上,该负载均衡设备还包括目的地址转换模块27。
目的地址转换模块27用于对响应数据包进行目的地址转换,将响应数据包的目的地址和/或端口号替换为客户端的源地址和/或端口号。由此,将数据包返回至客户端。
在本发明的一个实施例中,判断模块25和分片模块26为可选的。
根据本发明实施例的负载均衡设备,通过使用源地址转换技术,可以使得负载均衡设备和后端服务器跨网段部署,提高灵活性,而且可以避免后端服务器受到攻击,增加安全性。同时,通过将包含客户端的地址和/或端口号的TTM选项插入到UDP数据包中,使得后端服务器可以获取到客户端的真实地址,从而可以开展地理位置相关的服务。
为实现上述实施例,本发明还提出一种后端服务器。
图10为本发明一个实施例的后端服务器的结构框图。如图10所示,该后端服务器包括:第二接收模块31、解析模块32和处理模块33。
第二接收模块31用于接收负载均衡设备2发送的UDP数据包,其中,UDP数据包TTM选项中包含客户端的地址和/或端口号,且UDP数据包中的源地址和/或端口号为负载均衡设备2的地址和/或端口号。解析模块32用于解析UDP数据包的TTM选项以获得客户端的地址和/或端口号。处理模块33用于根据客户端的地址和/或端口号生成相应的响应数据包。
图11为本发明一个实施例的处理模块的结构框图。如图11所示,在本发明的一个实施例中,处理模块33进一步包括网络过滤器331和内核332。网络过滤器331用于在UDP数据包进入内核332之前,从UDP数据包的TTM选项获得客户端的地址和/或端口号,并将UDP数据包中负载均衡设备2的源地址和/或端口号替换为获得的客户端的地址和/或端口号,以及将负载均衡设备2的源地址和/或端口号与客户端的地址和/或端口号之间的对应关系加入转换表,并将源地址和/或端口号替换后的UDP数据包发送至内核332。内核332用于根据源地址和/或端口号替换后的UDP数据包生成相应的响应数据包。
在本发明的一个实施例中,网络过滤器331还用于截获响应数据包,并根据转换表将响应数据包的目的地址和/或端口号替换为负载均衡设备2的源地址和/或端口号,以及将替换后的响应数据包发送至负载均衡设备2。
图12为本发明另一个实施例的处理模块的结构框图。如图12所示,在图11所示的实施例的基础上,处理模块33进一步还包括转换表维护模块333。转换表维护模块333用于对转换表中的表项进行维护,其中,每个表项存储有负载均衡设备的源地址和/或端口号和所述客户端的地址和/或端口号之间的对应关系,转换表维护模块333在转换表中的表项超过超时时间时将表项删除。从而减少系统资源的占用。
根据本发明实施例的后端服务器,可以获取到客户端的真实地址,从而可以开展地理位置相关的服务。
上述系统和装置中各个模块的工作过程可参见方法实施例的描述,此处不再详细描述。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (20)
1.一种UDP负载均衡设备中源地址传递方法,其特征在于,包括以下步骤:
负载均衡设备接收客户端发送的用户数据包协议UDP数据包;
所述负载均衡设备对所述UDP数据包进行源地址转换,并将包含所述客户端的地址和/或端口号的隧穿模型TTM选项插入到所述UDP数据包中并发送至后端服务器;
所述后端服务器解析所述UDP数据包的TTM选项并获得所述客户端的地址和/或端口号;以及
所述后端服务器根据所述客户端的地址和/或端口号生成相应的响应数据包。
2.如权利要求1所述的UDP负载均衡设备中源地址传递方法,其特征在于,所述后端服务器解析UDP数据包的TTM选项并获得客户端的地址和/或端口号,进一步包括:
在所述UDP数据包进入所述后端服务器的内核之前,所述后端服务器的网络过滤器从所述UDP数据包的TTM选项获得客户端的地址和/或端口号;
所述网络过滤器将所述UDP数据包中所述负载均衡设备的源地址和/或端口号替换为获得的所述客户端的地址和/或端口号,并将所述负载均衡设备的源地址和/或端口号与所述客户端的地址和/或端口号之间的对应关系加入转换表;以及
所述网络过滤器将源地址和/或端口号替换后的UDP数据包发送至所述后端服务器的内核,以使所述内核生成所述相应的响应数据包。
3.如权利要求2所述的UDP负载均衡设备中源地址传递方法,其特征在于,在所述后端服务器的内核生成所述响应数据包之后,还包括:
所述网络过滤器截获所述响应数据包,并根据所述转换表将所述响应数据包的目的地址和/或端口号替换为所述负载均衡设备的源地址和/或端口号;以及
所述网络过滤器将替换后的所述响应数据包发送至所述负载均衡设备。
4.如权利要求3所述的UDP负载均衡设备中源地址传递方法,其特征在于,还包括:
所述负载均衡设备对所述响应数据包进行目的地址转换,将所述响应数据包的目的地址和/或端口号替换为所述客户端的源地址和/或端口号。
5.如权利要求2所述的UDP负载均衡设备中源地址传递方法,其特征在于,所述转换表中包括多个表项,每个表项存储有所述负载均衡设备的源地址和/或端口号与所述客户端的地址和/或端口号之间的对应关系,且所述每个表项在超过超时时间时被删除。
6.如权利要求1-5任一项所述的UDP负载均衡设备中源地址传递方法,其特征在于,在所述负载均衡设备接收客户端发送的UDP数据包之后,还包括:
所述负载均衡设备判断所述UDP数据包是否满足所述TTM选项的插入条件;
如果判断不满足所述TTM选项的插入条件,则将所述UDP数据包进行分片,并在所述分片后的第一个UDP数据包中插入所述TTM选项。
7.如权利要求1-6任一项所述的UDP负载均衡设备中源地址传递方法,其特征在于,在判断不满足所述TTM选项的插入条件之后,还包括:
判断所述UDP数据包中是否具有不分片位;
如果所述UDP数据包中具有不分片位,则所述负载均衡设备向所述客户端回发互联网控制报文协议icmp目的不可达或需要分片的报文。
8.一种UDP负载均衡设备中源地址传递系统,其特征在于,包括客户端、负载均衡设备和后端服务器,其中,
所述客户端,用于向所述负载均衡设备发送UDP数据包,并接收所述负载均衡设备发送的响应数据包;
所述负载均衡设备,用于接收所述客户端发送的UDP数据包,并对所述UDP数据包进行源地址转换,以及将包含所述客户端的地址和/或端口号的TTM选项插入到所述UDP数据包中并发送至后端服务器;
所述后端服务器,用于接收所述负载均衡设备发送的UDP数据包,并解析所述UDP数据包的TTM选项以获得所述客户端的地址和/或端口号,以及根据所述客户端的地址和/或端口号生成相应的响应数据包。
9.如权利要求8所述的UDP负载均衡设备中源地址传递系统,其特征在于,所述后端服务器包括网络过滤器和内核,其中,
所述网络过滤器,用于在所述UDP数据包进入所述内核之前,从所述UDP数据包的TTM选项获得客户端的地址和/或端口号,并将所述UDP数据包中所述负载均衡设备的源地址和/或端口号替换为获得的所述客户端的地址和/或端口号,以及将所述负载均衡设备的源地址和/或端口号和所述客户端的地址和/或端口号之间的对应关系加入转换表,并将源地址和/或端口号替换后的UDP数据包发送至所述内核;
所述内核,用于根据所述源地址和/或端口号替换后的UDP数据包生成所述相应的响应数据包。
10.如权利要求9所述的UDP负载均衡设备中源地址传递系统,其特征在于,所述网络过滤器还用于截获所述响应数据包,并根据所述转换表将所述响应数据包的目的地址和/或端口号替换为所述负载均衡设备的源地址和/或端口号,以及将替换后的所述响应数据包发送至所述负载均衡设备。
11.如权利要求10所述的UDP负载均衡设备中源地址传递系统,其特征在于,负载均衡设备还用于对所述响应数据包进行目的地址转换,将所述响应数据包的目的地址和/或端口号替换为所述客户端的源地址和/或端口号。
12.如权利要求8所述的UDP负载均衡设备中源地址传递系统,其特征在于,所述负载均衡设备还用于在所述UDP数据包不满足所述TTM选项的插入条件时,将所述UDP数据包进行分片,并在所述分片后的第一个UDP数据包中插入所述TTM选项。
13.如权利要求12所述的UDP负载均衡设备中源地址传递系统,其特征在于,所述负载均衡设备还用于在所述UDP数据包中具有不分片位时,向所述客户端回发icmp目的不可达或需要分片的报文。
14.一种负载均衡设备,其特征在于,包括:
接收模块,用于接收客户端发送的UDP数据包,及接收后端服务器发送的响应数据包;
源地址转换模块,用于对所述UDP数据包进行源地址转换;
插入模块,用于将包含所述客户端的地址和/或端口号的隧穿模型TTM选项插入到所述源地址转换后的UDP数据包中;以及
发送模块,用于将插入所述TTM选项的UDP数据包发送至所述后端服务器。
15.如权利要求14所述的负载均衡设备,其特征在于,还包括:
目的地址转换模块,用于对所述响应数据包进行目的地址转换,将所述响应数据包的目的地址和/或端口号替换为所述客户端的源地址和/或端口号。
16.如权利要求14所述的负载均衡设备,其特征在于,还包括:
判断模块,用于判断所述UDP数据包是否满足所述TTM选项的插入条件;以及
分片模块,用于在所述判断模块判断不满足所述TTM选项的插入条件时,将所述UDP数据包进行分片,并在所述分片后的第一个UDP数据包中插入所述TTM选项。
17.一种后端服务器,其特征在于,包括:
接收模块,用于接收负载均衡设备发送的UDP数据包,其中,所述UDP数据包TTM选项中包含所述客户端的地址和/或端口号,且所述UDP数据包中的源地址和/或源端口为所述负载均衡设备的地址和/或端口号;
解析模块,用于解析所述UDP数据包的TTM选项以获得所述客户端的地址和/或端口号;以及
处理模块,用于根据所述客户端的地址和/或端口号生成相应的响应数据包。
18.如权利要求17所述的后端服务器,其特征在于,所述处理模块进一步包括网络过滤器和内核,其中,
所述网络过滤器,用于在所述UDP数据包进入所述内核之前,从所述UDP数据包的TTM选项获得客户端的地址和/或端口号,并将所述UDP数据包中所述负载均衡设备的源地址和/或端口号替换为获得的所述客户端的地址和/或端口号,以及将所述负载均衡设备的源地址和/或端口号与所述客户端的地址和/或端口号之间的对应关系加入转换表,并将源地址和/或端口号替换后的UDP数据包发送至所述内核;
所述内核,用于根据所述源地址和/或端口号替换后的UDP数据包生成所述相应的响应数据包。
19.如权利要求18所述的后端服务器,其特征在于,所述网络过滤器还用于截获所述响应数据包,并根据所述转换表将所述响应数据包的目的地址和/或端口号替换为所述负载均衡设备的源地址和/或端口号,以及将替换后的所述响应数据包发送至所述负载均衡设备。
20.如权利要求18所述的后端服务器,其特征在于,其中,所述处理模块还包括:
转换表维护模块,用于对所述转换表中的表项进行维护,其中,每个表项存储有所述负载均衡设备的源地址和/或端口号和所述客户端的地址和/或端口号之间的对应关系,所述转换表维护模块在所述转换表中的表项超过超时时间时将所述表项删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210189879.XA CN103491016B (zh) | 2012-06-08 | 2012-06-08 | Udp负载均衡系统中源地址传递方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210189879.XA CN103491016B (zh) | 2012-06-08 | 2012-06-08 | Udp负载均衡系统中源地址传递方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103491016A true CN103491016A (zh) | 2014-01-01 |
CN103491016B CN103491016B (zh) | 2017-11-17 |
Family
ID=49830986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210189879.XA Active CN103491016B (zh) | 2012-06-08 | 2012-06-08 | Udp负载均衡系统中源地址传递方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103491016B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106130893A (zh) * | 2016-06-28 | 2016-11-16 | 联想(北京)有限公司 | 一种数据包发送方法及电子设备 |
CN107329713A (zh) * | 2017-06-27 | 2017-11-07 | 福州汇思博信息技术有限公司 | 一种跨网段的打印方法及系统 |
CN110933190A (zh) * | 2019-10-18 | 2020-03-27 | 平安科技(深圳)有限公司 | 一种客户端地址获取方法、装置、存储介质及计算机设备 |
CN111586208A (zh) * | 2020-06-17 | 2020-08-25 | 北京宏图佳都通信设备有限公司 | 用于跨网络传递客户端源地址的方法、系统及相关设备 |
CN111586207A (zh) * | 2020-06-17 | 2020-08-25 | 北京宏图佳都通信设备有限公司 | 用于跨网络传递客户端源地址的方法、系统及相关设备 |
CN113395241A (zh) * | 2020-03-13 | 2021-09-14 | 西安诺瓦星云科技股份有限公司 | 数据通信方法、装置和系统 |
CN114900494A (zh) * | 2022-05-18 | 2022-08-12 | 杭州安恒信息技术股份有限公司 | 一种内网ip地址传输方法、系统及存储介质 |
WO2023024416A1 (zh) * | 2021-08-26 | 2023-03-02 | 平安科技(深圳)有限公司 | 基于负载均衡的数据传输方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1403934A (zh) * | 2001-09-06 | 2003-03-19 | 华为技术有限公司 | 对流媒体服务器实现负载均衡的方法和设备 |
CN1512377A (zh) * | 2002-12-31 | 2004-07-14 | 联想(北京)有限公司 | 基于内核中套接字对接的第七层负载均衡的方法 |
US6779035B1 (en) * | 2000-03-06 | 2004-08-17 | Microsoft Corporation | Application programming interface and generalized network address translator for translation of transport-layer sessions |
CN1545275A (zh) * | 2003-11-21 | 2004-11-10 | 清华大学深圳研究生院 | 基于Netfilter架构的流媒体集群服务内容调度方法 |
CN101252591A (zh) * | 2008-04-03 | 2008-08-27 | 中国科学技术大学 | 实现上下行数据分离的方法和装置 |
US20090094610A1 (en) * | 2007-10-05 | 2009-04-09 | Cisco Technology, Inc. | Scalable Resources In A Virtualized Load Balancer |
CN101827029A (zh) * | 2010-04-21 | 2010-09-08 | 烽火通信科技股份有限公司 | 一种Linux网络设备动态标记RTP流量的方法 |
CN102255932A (zh) * | 2010-05-20 | 2011-11-23 | 百度在线网络技术(北京)有限公司 | 负载均衡方法和负载均衡器 |
-
2012
- 2012-06-08 CN CN201210189879.XA patent/CN103491016B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6779035B1 (en) * | 2000-03-06 | 2004-08-17 | Microsoft Corporation | Application programming interface and generalized network address translator for translation of transport-layer sessions |
CN1403934A (zh) * | 2001-09-06 | 2003-03-19 | 华为技术有限公司 | 对流媒体服务器实现负载均衡的方法和设备 |
CN1512377A (zh) * | 2002-12-31 | 2004-07-14 | 联想(北京)有限公司 | 基于内核中套接字对接的第七层负载均衡的方法 |
CN1545275A (zh) * | 2003-11-21 | 2004-11-10 | 清华大学深圳研究生院 | 基于Netfilter架构的流媒体集群服务内容调度方法 |
US20090094610A1 (en) * | 2007-10-05 | 2009-04-09 | Cisco Technology, Inc. | Scalable Resources In A Virtualized Load Balancer |
CN101252591A (zh) * | 2008-04-03 | 2008-08-27 | 中国科学技术大学 | 实现上下行数据分离的方法和装置 |
CN101827029A (zh) * | 2010-04-21 | 2010-09-08 | 烽火通信科技股份有限公司 | 一种Linux网络设备动态标记RTP流量的方法 |
CN102255932A (zh) * | 2010-05-20 | 2011-11-23 | 百度在线网络技术(北京)有限公司 | 负载均衡方法和负载均衡器 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106130893A (zh) * | 2016-06-28 | 2016-11-16 | 联想(北京)有限公司 | 一种数据包发送方法及电子设备 |
CN106130893B (zh) * | 2016-06-28 | 2019-07-26 | 联想(北京)有限公司 | 一种数据包发送方法及电子设备 |
CN107329713A (zh) * | 2017-06-27 | 2017-11-07 | 福州汇思博信息技术有限公司 | 一种跨网段的打印方法及系统 |
CN107329713B (zh) * | 2017-06-27 | 2020-08-18 | 福州汇思博信息技术有限公司 | 一种跨网段的打印方法及系统 |
CN110933190A (zh) * | 2019-10-18 | 2020-03-27 | 平安科技(深圳)有限公司 | 一种客户端地址获取方法、装置、存储介质及计算机设备 |
CN113395241A (zh) * | 2020-03-13 | 2021-09-14 | 西安诺瓦星云科技股份有限公司 | 数据通信方法、装置和系统 |
CN111586208A (zh) * | 2020-06-17 | 2020-08-25 | 北京宏图佳都通信设备有限公司 | 用于跨网络传递客户端源地址的方法、系统及相关设备 |
CN111586207A (zh) * | 2020-06-17 | 2020-08-25 | 北京宏图佳都通信设备有限公司 | 用于跨网络传递客户端源地址的方法、系统及相关设备 |
WO2023024416A1 (zh) * | 2021-08-26 | 2023-03-02 | 平安科技(深圳)有限公司 | 基于负载均衡的数据传输方法、装置、设备及存储介质 |
CN114900494A (zh) * | 2022-05-18 | 2022-08-12 | 杭州安恒信息技术股份有限公司 | 一种内网ip地址传输方法、系统及存储介质 |
CN114900494B (zh) * | 2022-05-18 | 2024-04-26 | 杭州安恒信息技术股份有限公司 | 一种内网ip地址传输方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103491016B (zh) | 2017-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103491016A (zh) | Udp负载均衡系统中源地址传递方法、系统及装置 | |
CN103491053A (zh) | Udp负载均衡方法、系统及装置 | |
CN102769603B (zh) | 一种数据传输的方法、系统及设备 | |
CN1925496B (zh) | 一种具有多网卡终端设备的网络层负载分担系统和方法 | |
EP1445919A2 (en) | Dual-mode virtual network addressing | |
CN102857974A (zh) | 具有用于锚定用户会话的分散控制平面的移动网关 | |
Shi et al. | NDNLP: A link protocol for NDN | |
WO2005119958A2 (en) | Routing switch detecting change in session identifier before reconfiguring routing table | |
CN103117946B (zh) | 基于隔离装置与隔离网关结合应用的流量分担方法 | |
CN103139246B (zh) | 负载均衡设备和负载均衡及防御方法 | |
US20120230208A1 (en) | Metadata Capture for Testing TCP Connections | |
JP2019506807A (ja) | データパケットの送信方法、受信方法、送信装置及び受信装置 | |
CN102546319A (zh) | 物联网终端互通的方法及系统 | |
CN103795518A (zh) | 一种设备间端口模式同步方法、设备及系统 | |
CN102255808B (zh) | 拥塞通告方法、装置、系统及网络设备 | |
CN103379182A (zh) | 数据传输方法和客户端 | |
CN102546364B (zh) | 网络数据分流方法及其装置 | |
CN107277011B (zh) | 终端设备的数据分类方法及装置 | |
CN101217434B (zh) | 一种接入网关状态检测方法 | |
EP2477356B1 (en) | Tracking packet sequence numbers | |
CN103124239B (zh) | 基于正向隔离装置与隔离网关结合应用的负载均衡方法 | |
CN103036984B (zh) | 一种单向流量的检测方法及网络设备 | |
US7756160B2 (en) | Packet consolidation | |
CN102045240A (zh) | 路由转发方法及装置 | |
CN104883739B (zh) | 一种无线通信业务发送和接收方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |