CN108123890A - 一种负载均衡系统中的链路检测方法、装置及电子设备 - Google Patents

一种负载均衡系统中的链路检测方法、装置及电子设备 Download PDF

Info

Publication number
CN108123890A
CN108123890A CN201611089692.7A CN201611089692A CN108123890A CN 108123890 A CN108123890 A CN 108123890A CN 201611089692 A CN201611089692 A CN 201611089692A CN 108123890 A CN108123890 A CN 108123890A
Authority
CN
China
Prior art keywords
transport stream
data packet
record
link
client
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
CN201611089692.7A
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201611089692.7A priority Critical patent/CN108123890A/zh
Publication of CN108123890A publication Critical patent/CN108123890A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • H04L47/323Discarding or blocking control packets, e.g. ACK packets

Landscapes

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

Abstract

本申请提供一种负载均衡系统中的链路检测方法、装置及电子设备;所述负载均衡系统中的链路检测方法包括:当负载均衡服务器收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;根据比较结果更新所述数据包所属传输流的记录;根据传输流的记录判断链路是否异常。本申请能够高效、自动进行链路检测。

Description

一种负载均衡系统中的链路检测方法、装置及电子设备
技术领域
本发明涉及计算机领域,尤其涉及一种负载均衡系统中的链路检测方法、装置及电子设备。
背景技术
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP工作在全双工模式,它可以同时进行双向数据传输。客户端与服务器在TCP握手阶段协商好双方的初始序列号,双方均可同时作为接收端和发送端。下面是TCP传输过程中,接收端向发送端发送数据的流程,包括发送数据和确认收到两个步骤:
发送数据:发送端向接收端发送一个带有数据的数据包,该数据包中的序列号为上一发送数据包的序列号+上一发送数据包的数据长度,确认序列号为上一接收数据包的序列号+上一接收数据包的数据长度;
确认收到:接收端收到该数据包,向发送端发送一个确认数据包,该确认数据包中,序列号是所接收到的数据包中的确认序列号(相当于接收端上一发送数据包的序列号+接收端上一发送数据包的数据长度),确认序列号为接收到的数据包中的序列号+接收到的数据包的数据长度。
数据包中的序列号可以保证所有传输的数据按照正常的次序进行重组,而且通过确认保证数据传输的完整性。
当前一种TCP数据传输方案中,客户端和真实服务器(Real Server,RS)之间的TCP数据包会通过负载均衡服务器(Load Balancer,LB)传递;该数据传输方案中的链路丢包检测采取如下方案:在出现问题后,客户端、、后端的真实服务器均通过抓包工具抓取数据流量得到抓包文件;然后由工作人员通过wireshark等工具分析抓包文件,从而判断链路是否丢包。
上述链路丢包检测方案的缺点在于:
抓包分析具有滞后性,在出现问题的时候未开始进行抓包,出现问题后再进行抓包,对问题的复现具有不确定性;LB作为流量中心节点,抓取数据流量并保存成抓包文件会带来很大的数据量,因此无法长时间抓包,且人工分析成本高;另外,无法对LB上所有流进行汇总分析。
发明内容
本申请提供一种负载均衡系统中的链路检测方法、装置及电子设备,能够高效、自动进行链路检测。
本申请采用如下技术方案。
一种负载均衡系统中的链路检测方法,包括:
当负载均衡服务器LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
根据比较结果更新所述数据包所属传输流的记录;
根据传输流的记录判断链路是否异常。
可选地,所述数据包为传输控制协议TCP数据包,所述数据包所属传输流为TCP流;所述数据包所属传输流的记录为流表中的流表项。
可选地,所述根据比较结果更新该数据包所属传输流的记录包括以下一项或多项:
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端出方向的丢包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中发送端的最大序列号,且小于接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端入方向的乱序包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,等于所述序列号信息中发送端的最大序列号,且所述数据包的数据长度不为0,则在所述数据包所属传输流的记录中,将发送端入方向的重传包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,大于所述序列号信息中发送端的最大序列号,则将所述序列号信息中发送端的最大序列号更新成所述数据包中的序列号加上所述数据包的数据长度。
可选地,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
所述根据传输流的记录判断链路是否异常包括以下一或多项:
如果传输流的记录中客户端出方向的丢包数大于0,则判断该传输流所对应的LB到客户端的链路异常;
如果传输流的记录中服务器出方向的丢包数大于0,则判断该传输流所对应的LB到服务器的链路异常;
如果传输流的记录中客户端入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和服务器之间的链路异常;
如果传输流的记录中服务器入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和客户端之间的链路异常。
可选地,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
所述LB收到数据包后还包括:在所述数据包所属传输流的记录中,将所述数据包的发送端入方向的数据包的数量加1;LB转发所述数据包后,在所述数据包所属传输流的记录中,将所述数据包的接收端出方向的数据包的数量加1;
所述根据传输流的记录判断链路是否异常包括:
按照指定的转发规则对各传输流的记录进行筛选;对筛选出的传输流的记录进行以下一或多项判断:
如果筛选出的传输流中,客户端出方向的平均丢包率的变化满足第一预定条件,则判断筛选出的传输流所对应的LB到客户端的链路异常;
如果筛选出的传输流中,客户端入方向的平均乱序率的变化满足第二预定条件,则判断筛选出的传输流所对应的LB和客户端之间的链路异常;
如果筛选出的传输流中,服务器出方向的平均丢包率的变化满足第三预定条件,则判断筛选出的传输流所对应的LB到服务器的链路异常;
如果筛选出的传输流中,服务器入方向的平均乱序率的变化满足第四预定条件,则判断筛选出的传输流所对应的LB和服务器之间的链路异常;
其中,一个方向的丢包率是该方向的丢包数除以该方向的数据包的数量;一个方向的乱序率是该方向的乱序包数加上重传包数之和,除以该方向的数据包的数量。
一种负载均衡系统中的链路检测方法,包括:
当负载均衡服务器LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
可选地,所述数据包为传输控制协议TCP数据包,所述数据包所属传输流为TCP流;所述数据包所属传输流的记录为流表中的流表项。
可选地,所述对于指定传输流,根据该传输流的记录判断链路是否异常包括:
对于指定传输流进行如下一项或多项判断:
如果客户端记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的客户端到LB的链路有丢包;
如果客户端记录的指定传输流的入包量小于指定传输流的记录中的客户端出包量,则判断LB到指定传输流所对应的客户端的链路有丢包;
如果服务器记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的服务器到LB的链路有丢包;
如果服务器记录的指定传输流的入包量小于指定传输流的记录中的服务器出包量,则判断LB到指定传输流所对应的服务器的链路有丢包。
一种负载均衡系统中的链路检测装置,包括:
比较模块,用于当负载均衡服务器LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
更新模块,用于根据比较结果更新所述数据包所属传输流的记录;
判断模块,用于根据传输流的记录判断链路是否异常。
可选地,所述数据包为传输控制协议TCP数据包,所述数据包所属传输流为TCP流;所述数据包所属传输流的记录为流表中的流表项。
可选地,所述更新模块根据比较结果更新该数据包所属传输流的记录包括以下一项或多项:
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端出方向的丢包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中发送端的最大序列号,且小于接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端入方向的乱序包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,等于所述序列号信息中发送端的最大序列号,且所述数据包的数据长度不为0,则在所述数据包所属传输流的记录中,将发送端入方向的重传包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,大于所述序列号信息中发送端的最大序列号,则将所述序列号信息中发送端的最大序列号更新成所述数据包中的序列号加上所述数据包的数据长度。
可选地,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
所述判断模块根据传输流的记录判断链路是否异常包括以下一或多项:
如果传输流的记录中客户端出方向的丢包数大于0,则判断该传输流所对应的LB到客户端的链路异常;
如果传输流的记录中服务器出方向的丢包数大于0,则判断该传输流所对应的LB到服务器的链路异常;
如果传输流的记录中客户端入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和服务器之间的链路异常;
如果传输流的记录中服务器入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和客户端之间的链路异常。
可选地,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
所述更新模块还用于在LB收到数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入方向的数据包的数量加1;在LB转发所述数据包后,在所述数据包所属传输流的记录中,将所述数据包的接收端出方向的数据包的数量加1;
所述判断模块根据传输流的记录判断链路是否异常包括:
按照指定的转发规则对各传输流的记录进行筛选;对筛选出的传输流的记录进行以下一或多项判断:
如果客户端出方向的平均丢包率的变化满足第一预定条件,则判断筛选出的传输流所对应的LB到客户端的链路异常;
如果客户端入方向的平均乱序率的变化满足第二预定条件,则判断筛选出的传输流所对应的LB和客户端之间的链路异常;
如果服务器出方向的平均丢包率的变化满足第三预定条件,则判断筛选出的传输流所对应的LB到服务器的链路异常;
如果服务器入方向的平均乱序率的变化满足第四预定条件,则判断筛选出的传输流所对应的LB和服务器之间的链路异常。
一种负载均衡系统中的链路检测装置,包括:
记录模块,用于当负载均衡服务器LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当所述LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
链路判断模块,用于对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
可选地,所述数据包为传输控制协议TCP数据包,所述数据包所属传输流为TCP流;所述数据包所属传输流的记录为流表中的流表项。
可选地,所述链路判断模块对于指定传输流,根据该传输流的记录判断链路是否异常包括:
所述链路判断模块对于指定传输流进行如下一项或多项判断:
如果客户端记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的客户端到LB的链路有丢包;
如果客户端记录的指定传输流的入包量小于指定传输流的记录中的客户端出包量,则判断LB到指定传输流所对应的客户端的链路有丢包;
如果服务器记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的服务器到LB的链路有丢包;
如果服务器记录的指定传输流的入包量小于指定传输流的记录中的服务器出包量,则判断LB到指定传输流所对应的服务器的链路有丢包。
一种负载均衡系统中进行链路检测的电子设备,包括:
第一存储器和第一处理器;
所述第一存储器用于保存用于进行链路检测的程序;所述用于进行链路检测的程序在被所述第一处理器读取执行时,执行以下操作:
当负载均衡服务器LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
根据比较结果更新所述数据包所属传输流的记录;
根据传输流的记录判断链路是否异常。
一种负载均衡系统中进行链路检测的电子设备,包括:
第二存储器和第二处理器;
所述第二存储器用于保存用于进行链路检测的程序;所述用于进行链路检测的程序在被所述第二处理器读取执行时,执行以下操作:
当负载均衡服务器LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
本申请包括以下优点:
本申请至少一个实施例能够对LB转发的数据包进行信息抽取、记录和比较,从而在出现问题时能及时定位,而且无需产生抓包文件,不需要人工分析,提升了链路检测的效率。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1是出方向、入方向的示意图;
图2是LVS的FULLNAT模式下的TCP流转发过程示意图;
图3是实施例一的链路检测方法的流程图;
图4是实施例一中根据比较结果更新该数据包所属传输流的记录的例子的流程图;
图5是实施例一中一种判断方案的例子的流程图;
图6是实施例一中另一种判断方案的例子的流程图;
图7是实施例二的链路检测方法的流程图;
图8是实施例二中判断过程的例子的流程图;
图9是实施例三的链路检测装置的流程图;
图10是实施例四的链路检测装置的流程图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一种配置中,进行链路检测的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块N(N为大于2的整数)。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
首先,对本文中出现的以下概念进行说明。
发送端:发送端是发送数据包给LB的设备,可以是客户端或服务器。也就是说,当客户端发送数据包给服务器时,客户端是发送端,当服务器发送数据包给客户端时,服务器是发送端。
接收端:接收端是LB发送数据包的目标设备,可以是客户端或服务器。也就是说,当客户端发送数据包给服务器时,服务器是接收端,当服务器发送数据包给客户端时,客户端是接收端。
本文中,无论客户端发送数据包给服务器,还是服务器发送数据包给客户端,都会经过LB转发。
出方向:是指从LB向客户端或服务器发送数据包的方向,包括客户端出方向和服务器出方向,如图1所示。
本文中出现的发送端出方向,当数据包是客户端发送给LB时,是指客户端出方向;当数据包是服务器发送给LB时,是指服务器出方向。
入方向:是指从客户端或服务器向LB发送数据包的方向,包括客户端入方向和服务器入方向,如图1所示。
本文中出现的发送端入方向,当数据包是客户端发送给LB时,是指客户端入方向;当数据包是服务器发送给LB时,是指服务器入方向。
客户端入包量:是指LB收到的从客户端发送的数据包的数量,也就是经过LB转发的、属于客户端入方向的数据包的数量。
服务器入包量:是指LB收到的从服务器发送的数据包的数量,也就是经过LB转发的、属于服务器入方向的数据包的数量。
客户端出包量:是指LB发往客户端的数据包的数量,也就是经过LB转发的、属于客户端出方向的数据包的数量。
服务器出包量:是指LB发往服务器的数据包的数量,也就是经过LB转发的、属于服务器出方向的数据包的数量。
上述客户端入包量、服务器入包量、客户端出包量、服务器出包量都是针对LB而言的,而本文中客户端记录的出包量、入包量分别是指客户端发送出去的数据包的数量、接收到的数据包的数量;服务器记录的出包量、入包量分别是指服务器发送出去的数据包的数量、接收到的数据包的数量。
数据长度:是指数据报文中有效数据的长度;对于不同类型的数据报文,数据长度有可能不同。常见的TCP数据报文包括以下四种:
(1)SYN,TCP建立连接时携带,报文内容长度为0,视为占用内容长度为1。
(2)ACK,TCP数据传输中对于对端报文的响应标志,占用内容长度与报文内容长度等同。
(3)FIN,TCP结束连接时携带,报文内容长度为0,视为占用内容长度为1。
(4)RST,TCP立即结束连接标志,不占用报文内容长度,报文内容长度和占用内容长度均为0。
其中,以占用内容长度作为数据包的数据长度。
下面介绍本文的方案的应用场景之一:Linux虚拟服务器(Linux VirtualServer,LVS)的FULLNAT模式进行介绍。LVS的FULLNAT模式下的TCP流转发过程如图2所示,包括如下步骤:
客户端发送源地址CIP,源端口CPORT,向目的地址VIP,目的端口VPORT的数据包来发起一条TCP连接,该数据包的序列号Seq为a,确认序列号Ack_seq为b,数据长度len为x;
LB收到此数据包后,会读取LB上的流表信息,将源地址转换为LIP,源端口转换为LPORT,目的地址转换为RIP,目的端口转换为RPORT,并将序列号Seq与确认序列号Ack_seq根据流表中的信息分别转换为c和d;转换后发送给后端的RS;
RS收到此数据包,发送确认数据包,携带数据发给LB;确认数据包中,源地址是RIP,源端口RPORT,目的地址是LIP,目的端口是LPORT;序列号Seq是d,确认序列号Ack_seq是c+x,长度len是y;
LB收到RS的确认数据包后,根据流表中的信息,做源和目的地址以及序列号和确认序列号的转换,将源地址转换为VIP,源端口转换为VPORT,目的地址转换为CIP,目的端口转换为CPORT,序列号Seq转换为b,确认序列号Ack_seq转换为a+x;转换后将确认数据包发送给客户端。
由此完成一次数据传输的过程,一个TCP连接的通信是多次这个过程的叠加。
实施例一、一种负载均衡系统中的链路检测方法,如图3所示,包括步骤S110~S130:
S110、当LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
S120、根据比较结果更新所述数据包所属传输流的记录;
S130、根据传输流的记录判断链路是否异常。
本实施例能够对LB转发的数据包进行序列号等信息的抽取、记录和比较,从而在出现问题时能及时定位,而且无需产生抓包文件,不需要人工分析,提升了链路检测的效率。
本实施例的方法可以但不限于由LB执行。
本实施例中,数据包所属的传输流可以由该数据包的发送端、接收端唯一确定;比如客户端C1的端口CP1和服务器S1的端口SP1之间通过LB交互的所有数据包,包括客户端C1通过端口CP1发送给服务器S1的端口SP1的数据包,以及服务器S1通过端口SP1发送给客户端C1的端口CP1的数据包,都属于同一个传输流;该传输流对应的链路包含:客户端C1的端口CP1和LB之间的链路、服务器S1的端口SP1和LB之间的链路。
本实施例中,链路异常的情况可以包括:存在丢包、不稳定等。
本实施例中,当LB接收到数据包后,可以执行步骤S110~S120,而步骤S130和前两个步骤之间不存在必然的前后关系,可以周期性执行步骤S130,还可以在特定条件(比如用户要求检测或输入待检测链路/传输流的标识时、再比如满足预设条件时)执行步骤S130。
一种实现方式中,所述数据包可以是TCP数据包,所述数据包所属传输流可以是TCP流;所述数据包所属传输流的记录可以是流表中的流表项。
本实现方式中,采用流表的形式保存各传输流的记录,其中,一个流表项对应于一个传输流;可以通过数据包的四元组信息(源地址,源端口,目的地址,目的端口)在流表中查找所属传输流的流表项。其它实现方式中,也可以采用其它方式保存传输流的记录。
其它实现方式中,除了TCP协议,本实施例的方法对于数据包中含有发送端、接收端标识、序列号、确认序列号,且可以在转发过程中提取出来的其它协议也可以适用。
一种实现方式中,所述根据比较结果更新该数据包所属传输流的记录可以包括以下一项或多项:
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端出方向的丢包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中发送端的最大序列号,且小于接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端入方向的乱序包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,等于所述序列号信息中发送端的最大序列号,且数据包的数据长度不为0,则在所述数据包所属传输流的记录中,将发送端入方向的重传包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,大于所述序列号信息中发送端的最大序列号,则将所述序列号信息中发送端的最大序列号更新成所述数据包中的序列号加上所述数据包的数据长度。
本实现方式中,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端。
本实现方式中,根据比较结果更新该数据包所属传输流的记录的一个具体例子如图4所示,本例子中,传输的是TCP数据包,采用流表进行记录,一个流表项对应一个传输流;更新过程包括如下步骤201~207:
201、LB收到一个TCP数据包。
202、根据该TCP数据包的四元组信息(源地址,源端口,目的地址,目的端口)判断该TCP数据包对应的流表项是否在流表中存在。如果不存在则执行步骤203;存在则执行步骤205。
四元组信息是(IP1,PORT1,IP2,PORT2)的TCP数据包,和四元组信息是(IP2,PORT2,IP1,PORT1)的TCP数据包对应于同一个流表项;也就是说,某个客户端(假设固定使用某个端口)和某个服务器(假设固定使用某个端口)之间交互的TCP数据包都属于同一个TCP流,都对应于该TCP流的流表项。
流表项中可以包括两组(地址,端口),还可以包括后文的序列号信息、出包量、入包量、丢包数、乱序包数、重传包数等信息。
203、判断该TCP数据包的目的地址、目的端口是否命中预定的转发规则;一个转发规则可以对应于一个或多个传输流。如果没有命中,则丢弃该TCP数据包;如果命中,则说明该TCP数据包是所属TCP流中的首个数据包,进行步骤204。
204、创建该TCP数据包对应的流表项,发送端入包量加1,并在所创建的流表项的TCP序列号信息中记录发送端最大序列号和发送端最大确认序列号,其中,发送端最大序列号是所述TCP数据包中的序列号加上所述TCP数据包的数据长度,发送端最大确认序列号是所述TCP数包中的确认序列号加上所述TCP数据包的数据长度;跳转到步骤207。
由于通常是客户端发起首个数据包,因此步骤204中的发送端通常是客户端。
另外,在创建的流表项中,接收端最大序列号和接收端最大确认序列号可以先设置为空值,或0。
205、确定该TCP数据包的方向属于客户端入方向还是服务器入方向(即:是客户端发送给LB的,还是服务器发送给LB的),将该TCP数据包对应的流表项中的发送端入包量加1(如果是客户端发到LB的TCP数据包,则客户端入包量加1;如果是服务器发到LB的TCP数据包,则服务器入包量加1);读取该TCP数据包对应的流表项中的序列号信息,包括:客户端最大序列号,客户端最大确认序列号,服务器最大序列号,服务器最大确认序列号;
206、将该TCP数据包中的序列号加上该TCP数据包的数据长度后,与读取的序列号信息进行比较,根据比较结果对该TCP数据包对应的流表项进行相应处理,包括:
(1)如果该TCP数据包中的序列号加上该TCP数据包的数据长度,小于接收端最大确认序列号,则判断LB到发送端的链路上发生丢包,该TCP数据包对应的流表项中,发送端出方向的丢包数加1。
下面举例说明该比较结果和相应的处理。
假如该TCP数据包是客户端发给LB的,如果该TCP数据包中的序列号加上该TCP数据包的长度,小于服务器最大确认序列号,则该TCP数据包对应的流表项中,客户端出方向的丢包数加1。
假如该TCP数据包是服务器发给LB的,如果该TCP数据包中的序列号加上该TCP数据包的长度,小于客户端最大确认序列号,则该TCP数据包对应的流表项中,服务器出方向的丢包数加1。
(2)如果该TCP数据包中的序列号加上该TCP数据包的数据长度,小于发送端最大序列号,且大于接收端最大确认序列号,则可能为丢包重传,也可能为TCP乱序,该TCP数据包对应的流表项中,发送端入方向的乱序包数加1。
下面举例说明该比较结果和相应的处理。
假如该TCP数据包是客户端发给LB的,如果该TCP数据包中的序列号加上该TCP数据包的长度,小于客户端最大序列号、且大于服务器最大确认序列号,则该TCP数据包对应的流表项中,客户端入方向的乱序包数加1。
假如该TCP数据包是服务器发给LB的,如果该TCP数据包中的序列号加上该TCP数据包的长度,小于服务器最大序列号、且大于客户端最大确认序列号,则该TCP数据包对应的流表项中,服务器入方向的乱序包数加1。
(3)如果该TCP数据包中的序列号加上所述数据包的数据长度,等于所述序列号信息中发送端最大序列号,且该TCP数据包的数据长度(即:占用内容长度)不为0,则该TCP数据包对应的流表项中,将发送端入方向的重传包数加1;
下面举例说明该比较结果和相应的处理。
假如该TCP数据包是客户端发给LB的,如果该TCP数据包中的序列号加上该TCP数据包的长度,等于客户端最大序列号、且数据长度不为0,则该TCP数据包对应的流表项中,客户端入方向的重传包数加1。
假如该TCP数据包是服务器发给LB的,如果该TCP数据包中的序列号加上该TCP数据包的长度,等于服务器最大序列号、且数据长度不为0,则该TCP数据包对应的流表项中,服务器入方向的重传包数加1。
(4)如果该TCP数据包中的序列号加上该TCP数据包的数据长度,大于发送端最大序列号,则为正常状态,更新该TCP数据包对应的流表项,将发送端最大序列号改为该TCP数据包的序列号加上该TCP数据包的数据长度,将发送端最大确认序列号改为该TCP数据包的确认序列号加上该TCP数据包的数据长度。
下面举例说明该比较结果和相应的处理。假设该TCP数据包的有效数据的长度为len,序列号为seq_example,确认序列号为ACKseq_example。
假如该TCP数据包是客户端发给LB的,如果该TCP数据包中的序列号加上该TCP数据包的长度,大于客户端最大序列号,则更新该TCP数据包对应的流表项,将客户端最大序列号更新为seq_example+len,将客户端最大确认序列号更新为ACKseq_example+len。
假如该TCP数据包是服务器发给LB的,如果该TCP数据包中的序列号加上该TCP数据包的长度,大于服务器最大序列号,则更新该TCP数据包对应的流表项,将服务器最大序列号更新为seq_example+len,将服务器最大确认序列号更新为ACKseq_example+len。
本步骤中,默认接收端最大确认序列号是小于或等于发送端最大序列号的,因此上述(4)的比较结果中,只要TCP数据包的序列号加上数据长度,大于发送端最大序列号,就必然意味着也大于接收端最大确认序列号。
本步骤中,如果序列号信息中的某个序列号是空值,则默认为比较时必然大于该序列号。比如服务器最大序列号是空值时,则认为TCP数据包中的序列号加TCP数据包的数据长度大于服务器最大序列号。
207、转发该TCP数据包给接收端,将该TCP数据包对应的流表项中的接收端出包量加1。
下面举例说明本步骤。
假如该TCP数据包是客户端发给LB的,则本步骤是转发该TCP数据包给服务器,将该TCP数据包对应的流表项中的服务器出包量加1。
假如该TCP数据包是服务器发给LB的,则本步骤是转发该TCP数据包给客户端,将该TCP数据包对应的流表项中的客户端出包量加1。
本实现方式的一种判断方案中,所述根据传输流的记录判断链路是否异常可以包括以下一或多项:
如果传输流的记录中客户端出方向的丢包数大于0,则判断该传输流所对应的LB到客户端的链路异常;
如果传输流的记录中服务器出方向的丢包数大于0,则判断该传输流所对应的LB到服务器的链路异常;
如果传输流的记录中客户端入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和服务器之间的链路异常;
如果传输流的记录中服务器入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和客户端之间的链路异常。
本判断方案中,通过一个传输流的记录,可以判断该传输流对应的链路是否存在问题;比如该传输流是客户端C1的端口CP1和服务器S1的端口SP1之间的传输流,则相应可以判断LB和客户端C1之间的链路、LB和服务器S1之间的链路中的一个或多个链路是否异常。
本判断方案中,LB和服务器之间的链路包括LB到服务器的链路、服务器到LB的链路;LB和客户端之间的链路包括LB到客户端的链路、客户端到LB的链路。
该判断方案的一个例子的流程如图5所示,假设按照图4所示的例子更新传输流的记录,用户通过输入TCP流的四元组信息来检测相应传输流对应的链路,该判断方案的过程包括如下步骤301~302:
301、根据输入的TCP流的四元组信息(源地址,源端口,目的地址,目的端口)从LB的流表中查询得到对应的流表项;如果查不到则结束,能查到则进行步骤302。
302、根据所查询到的流表项中的丢包数及乱序数进行统计分析,得到问题链路信息,包括:
(1)如果客户端出方向有丢包(即流表项中客户端出方向的丢包数大于0),表示LB到客户端的链路有问题;
(2)如果服务器出方向有丢包(即流表项中服务器出方向的丢包数大于0),表示LB到服务器的链路有问题;
(3)如果客户端入方向有乱序(即流表项中客户端入方向的乱序包数或重传包数大于0),则表示LB和服务器之间的链路可能不稳定;
(4)如果服务器入方向有乱序(即流表项中服务器入方向的乱序包数或重传包数大于0),则表示LB和客户端之间的链路可能不稳定。
本例子中,链路有问题或可能不稳定即表示链路异常。
本实现方式的另一种判断方案中,所述LB收到数据包后还可以包括:
在所述数据包所属传输流的记录中,将所述数据包的发送端入方向的数据包的数量加1;在LB转发所述数据包后,在所述数据包所属传输流的记录中,将所述数据包的接收端出方向的数据包的数量加1;
所述根据传输流的记录判断链路是否异常可以包括:
按照指定的转发规则对各传输流的记录进行筛选;对筛选出的传输流的记录进行以下一或多项判断:
如果筛选出的传输流中,客户端出方向的平均丢包率的变化满足第一预定条件,则判断筛选出的传输流所对应的LB到客户端的链路异常;
如果筛选出的传输流中,客户端入方向的平均乱序率的变化满足第二预定条件,则判断筛选出的传输流所对应的LB和客户端之间的链路异常;
如果筛选出的传输流中,服务器出方向的平均丢包率的变化满足第三预定条件,则判断筛选出的传输流所对应的LB到服务器的链路异常;
如果筛选出的传输流中,服务器入方向的平均乱序率的变化满足第四预定条件,则判断筛选出的传输流所对应的LB和服务器之间的链路异常。
本判断方案中,如果用户指定了多个转发规则,则可以对于每个指定的转发规则分别进行上述的筛选和判断。用户可以通过输入转发规则中的部分内容(比如目的地址和目的端口)等方式指定转发规则。
本判断方案中,LB和服务器之间的链路包括LB到服务器的链路、服务器到LB的链路;LB和客户端之间的链路包括LB到客户端的链路、客户端到LB的链路。
本判断方案中,判断出LB到客户端/服务器的链路异常,是指所述指定的转发规则对应的各传输流所对应的链路中,LB到客户端/服务器的链路异常。判断出LB和客户端/服务器之间的链路异常,是指所述指定的转发规则对应的各传输流所对应的链路中,LB和客户端/服务器之间的链路异常。
其中:
客户端出方向的平均丢包率可以是指对应于指定的转发规则的各传输流的流表项中,客户端出方向的丢包率的平均值;
客户端入方向的平均乱序率可以是指对应于指定的转发规则的各TCP流的流表项中,客户端入方向的乱序率的平均值;
服务器出方向的平均丢包率可以是指对应于指定的转发规则的各TCP流的流表项中,服务器出方向的丢包率的平均值;
服务器入方向的平均乱序率可以是指对应于指定的转发规则的各TCP流的流表项中,服务器入方向的乱序率的平均值;
其中,一个方向的丢包率可以是该方向的丢包数除以该方向的数据包的数量;比如客户端出方向的丢包率,是客户端出方向的丢包数除以客户端出方向的数据包的数量(即除以客户端出包量)。一个方向的乱序率可以是该方向的乱序包数加上重传包数之和,除以该方向的数据包的数量;比如客户端入方向的乱序率,是客户端入方向的乱序包数加上重传包数之和,除以客户端入方向的数据包的数量(即除以客户端入包量)。
本判断方案中,可以周期性进行判断,从而确定平均丢包率/平均乱序率的变化情况;周期的长度可以自行设置。
其中,第一预定条件可以和第三预定条件相同,可以但不限于是:本周期平均丢包率的增长值除以上一周期的平均丢包率所得结果大于第一阈值;其中,本周期平均丢包率的增长值可以是本周期的平均丢包率减去上一周期的平均丢包率。
第一预定条件可以和第三预定条件相同,可以但不限于是:本周期平均乱序率的增长值除以上一周期的平均乱序率所得结果大于第二阈值;其中,本周期平均乱序率的增长值可以是本周期的平均乱序率减去上一周期的平均乱序率。
该判断方案可以基于转发规则进行流汇聚分析,该判断方案的一个例子的流程如图6所示,假设按照图4所示的例子更新传输流的记录,该判断方案的过程包括步骤501~504:
501、获取流表中全部流表项。
502、根据转发规则和流表项对TCP流进行分类。
本步骤中,是将同一个转发规则对应的TCP流分为一类,即:流表项中的任一组(地址、端口)和某个转发规则中至少一组(目的地址、目的端口)相同的TCP流分为一类,对应于该转发规则。
503、对于指定的转发规则对应的所有TCP流进行汇总分析,得到客户端出方向的平均丢包率、客户端入方向的平均乱序率、服务器出方向的平均丢包率、服务器入方向的平均乱序率。
504、进行链路分析判断,包括:
(1)如果客户端出方向的平均丢包率突增,则表示LB到客户端的链路出现问题;
(2)如果客户端入方向的平均乱序率突增,则表示LB和RS之间的链路出现问题;
(3)如果服务器出方向的平均丢包率突增,则表示LB到服务器的链路出现问题;
(4)如果服务器入方向的平均乱序率突增,则表示LB和客户端之间的链路出现问题。
本例子中,链路出现问题即表示链路异常。
本实施例中,对所有流的链路统计信息做汇聚,并根据丢包率/乱序率的趋势变化来分析判断LB上该服务对应的哪条链路有可能出现了问题。
其中,平均丢包率突增的含义可以是指:
本周期平均丢包率的增长值除以上一周期的平均丢包率所得结果大于第一阈值;其中,本周期平均丢包率的增长值是本周期的平均丢包率减去上一周期的平均丢包率。
平均乱序率突增的含义可以是指:本周期平均乱序率的增长值除以上一周期的平均乱序率所得结果大于第二阈值;其中,本周期平均乱序率的增长值是本周期的平均乱序率减去上一周期的平均乱序率。
上述两种判断方案可以单独使用,也可以一起使用,相互印证结果。
其它实现方式中,可以采用另外的判断方案,以根据传输流的记录定位可能存在问题的链路。
实施例二、一种负载均衡系统中的链路检测方法,如图7所示,包括步骤S210~S220:
S210、当LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当所述LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
S220、对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
本实施例能够对LB转发的数据包进行入包量、出包量等信息的抽取、记录和比较,从而在出现问题时能及时定位,而且无需产生抓包文件,不需要人工分析,提升了链路检测的效率。
本实施例的方法可以但不限于由LB执行。
本实施例中,数据包所属的传输流可以由该数据包的发送端、接收端唯一确定;比如客户端C1的端口CP1和服务器S1的端口SP1之间通过LB交互的所有数据包,包括客户端C1通过端口CP1发送给服务器S1的端口SP1的数据包,以及服务器S1通过端口SP1发送给客户端C1的端口CP1的数据包,都属于同一个传输流;该传输流对应的链路包含:客户端C1的端口CP1和LB之间的链路、服务器S1的端口SP1和LB之间的链路。
本实施例中,链路异常的情况可以包括:存在丢包、不稳定等。
本实施例中,当LB收到的是客户端发送给服务器的数据包时,步骤S210是在所述数据包所属传输流的记录中,将客户端入包量加1;步骤S220是在所述数据包所属传输流的记录中,将服务器出包量加1;
当LB收到的是服务器发送给客户端的数据包时,步骤S210是在所述数据包所属传输流的记录中,将服务器入包量加1;步骤S220是在所述数据包所属传输流的记录中,将客户端出包量加1。
本实施例中,指定的传输流可以由用户根据需要自行指定,用户可以通过输入传输流或对应链路的标识来进行指定。如果指定多个传输流,可以对于每个传输流分别执行上述步骤S220。
本实施例中,当LB接收到数据包后,可以执行步骤S210,而步骤S220和步骤S210之间不存在必然的前后关系,可以周期性执行步骤S220,还可以在特定条件(比如用户要求检测或输入待检测链路/传输流的标识时、再比如满足预设条件时)执行步骤S220。
一种实现方式中,所述数据包可以是TCP数据包,所述数据包所属传输流可以是TCP流;所述数据包所属传输流的记录可以是流表中的流表项。
本实现方式中,采用流表的形式保存各传输流的记录,其中,一个流表项对应于一个传输流;可以参照图4中步骤202的方式找到数据包所属传输流的记录。其它实现方式中,也可以采用其它方式保存传输流的记录。
其它实现方式中,除了TCP协议,本实施例的方法对于数据包中含有发送端、接收端标识、序列号、确认序列号,且可以在转发过程中提取出来的其它协议也可以适用。
一种实现方式中,所述对于指定传输流,根据该传输流的记录判断链路是否异常可以包括:
对于指定传输流进行如下一项或多项判断:
如果客户端记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的客户端到LB的链路有丢包;
如果客户端记录的指定传输流的入包量小于指定传输流的记录中的客户端出包量,则判断LB到指定传输流所对应的客户端的链路有丢包;
如果服务器记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的服务器到LB的链路有丢包;
如果服务器记录的指定传输流的入包量小于指定传输流的记录中的服务器出包量,则判断LB到指定传输流所对应的服务器的链路有丢包。
本实现方式的一个例子的流程如图8所示,包括如下步骤801~804:
801、在客户端和服务器部署抓包程序,抓取访问流量的流信息;可以分别得到客户端记录的出包量和入包量,以及服务器记录的出包量和入包量。
其中,客户端和服务器记录的出包量、入包量是分TCP流记录的,即记录的是针对每个TCP流,出包量、入包量各是多少。
802、对于指定的TCP流,获取客户端和服务器上记录的针对该TCP流的出包量和入包量。
803、从LB的流表中查询得到指定的TCP流的流表项。
804、根据查询到的流表项,与客户端和服务器记录的出包量、入包量(均是针对指定的TCP流)做对比,分析得到问题链路信息,包括:
(1)如果客户端记录的出包量大于流表项中的客户端入包量,则表示客户端到LB的链路有丢包;
(2)如果客户端记录的入包量小于流表项中的客户端出包量,则表示LB到客户端的链路有丢包;
(3)如果服务端记录的出包量大于流表项中的服务端入包量,则表示服务器到LB的链路有丢包;
(4)如果服务端记录的入包量小于流表项中的服务端出包量,则表示LB到服务器的链路有丢包。
实施例一和实施例二的方案可以各自单独使用,来定位异常的链路;也可以一起使用,各自的判断结果可以相互印证。
实施例三、一种负载均衡系统中的链路检测装置,如图9所示,包括:
比较模块31,用于当LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
更新模块32,用于根据比较结果更新所述数据包所属传输流的记录;
判断模块33,用于根据传输流的记录判断链路是否异常。
本实施例中,比较模块31是上述装置中负责比较序列号和记录的部分,可以是软件、硬件或两者的结合。
本实施例中,更新模块32是上述装置中负责更新记录的部分,可以是软件、硬件或两者的结合。
本实施例中,判断模块33是上述装置中负责判断链路异常的部分,可以是软件、硬件或两者的结合。
一种实现方式中,所述数据包可以为TCP数据包,所述数据包所属传输流可以TCP流;所述数据包所属传输流的记录可以为流表中的流表项。
一种实现方式中,所述更新模块根据比较结果更新该数据包所属传输流的记录可以包括以下一项或多项:
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端出方向的丢包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中发送端的最大序列号,且小于接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端入方向的乱序包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,等于所述序列号信息中发送端的最大序列号,且所述数据包的数据长度不为0,则在所述数据包所属传输流的记录中,将发送端入方向的重传包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,大于所述序列号信息中发送端的最大序列号,则将所述序列号信息中发送端的最大序列号更新成所述数据包中的序列号加上所述数据包的数据长度。
本实现方式中,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
本实现方式的一种判断方案中,所述判断模块根据传输流的记录判断链路是否异常可以包括以下一或多项:
如果传输流的记录中客户端出方向的丢包数大于0,则判断该传输流所对应的LB到客户端的链路异常;
如果传输流的记录中服务器出方向的丢包数大于0,则判断该传输流所对应的LB到服务器的链路异常;
如果传输流的记录中客户端入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和服务器之间的链路异常;
如果传输流的记录中服务器入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和客户端之间的链路异常。
本判断方案中,所述判断模块可以包括链路分析模块,通过输入传输流的源地址,源端口,目的地址,目的端口,得到分析的问题链路信息,即得到:相应传输流对应的链路是否异常。
本实现方式的又一种判断方案中,所述更新模块还可以用于在LB收到数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入方向的数据包的数量加1;在LB转发所述数据包后,在所述数据包所属传输流的记录中,将所述数据包的接收端出方向的数据包的数量加1;
所述判断模块根据传输流的记录判断链路是否异常可以包括:
按照指定的转发规则对各传输流的记录进行筛选;对筛选出的传输流的记录进行以下一或多项判断:
如果客户端出方向的平均丢包率的变化满足第一预定条件,则判断筛选出的传输流所对应的LB到客户端的链路异常;
如果客户端入方向的平均乱序率的变化满足第二预定条件,则判断筛选出的传输流所对应的LB和客户端之间的链路异常;
如果服务器出方向的平均丢包率的变化满足第三预定条件,则判断筛选出的传输流所对应的LB到服务器的链路异常;
如果服务器入方向的平均乱序率的变化满足第四预定条件,则判断筛选出的传输流所对应的LB和服务器之间的链路异常。
本判断方案中,所述判断模块可以包括转发规则流汇聚分析模块,通过输入目的地址,目的端口,得到相应转发规则的链路汇聚分析结果,即得到:指定的转发规则对应的传输流对应的链路是否异常。
本实施例的链路检测装置的各模块的操作分别对应于实施例一中的步骤S110~S130,各模块操作的其它实现细节可参见实施例一。
实施例四、一种负载均衡系统中的链路检测装置,如图10所示,包括:
记录模块41,用于当负载均衡服务器LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当所述LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
链路判断模块42,用于对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
本实施例中,记录模块41是上述装置中负责对传输流的信息进行记录的部分,可以是软件、硬件或两者的结合。
本实施例中,链路判断模块42是上述装置中负责判断链路异常的部分,可以是软件、硬件或两者的结合。
一种实现方式中,所述数据包可以是传输控制协议TCP数据包,所述数据包所属传输流可以是TCP流;所述数据包所属传输流的记录可以是流表中的流表项。
一种实现方式中,所述链路判断模块对于指定传输流,根据该传输流的记录判断链路是否异常可以包括:
所述链路判断模块对于指定传输流进行如下一项或多项判断:
如果客户端记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的客户端到LB的链路有丢包;
如果客户端记录的指定传输流的入包量小于指定传输流的记录中的客户端出包量,则判断LB到指定传输流所对应的客户端的链路有丢包;
如果服务器记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的服务器到LB的链路有丢包;
如果服务器记录的指定传输流的入包量小于指定传输流的记录中的服务器出包量,则判断LB到指定传输流所对应的服务器的链路有丢包。
本实现方式中,通过输入传输流的源地址,源端口,目的地址,目的端口,可以得到问题链路信息,即得到:相应传输流对应的链路是否异常。
本实施例的链路检测装置的各模块的操作分别对应于实施例二中的步骤S210~S220,各模块操作的其它实现细节可参见实施例二。
实施例五、一种负载均衡系统中进行链路检测的电子设备,包括:
第一存储器和第一处理器;
所述第一存储器用于保存用于进行链路检测的程序;所述用于进行链路检测的程序在被所述第一处理器读取执行时,执行以下操作:
当负载均衡服务器LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
根据比较结果更新所述数据包所属传输流的记录;
根据传输流的记录判断链路是否异常。
本实施例中,用于进行链路检测的程序在被第一处理器读取执行时,所执行的操作对应于实施例一中的步骤S110~S130;该程序所执行的操作的其它细节可参见实施例一。
实施例六、一种负载均衡系统中进行链路检测的电子设备,包括:
第二存储器和第二处理器;
所述第二存储器用于保存用于进行链路检测的程序;所述用于进行链路检测的程序在被所述第二处理器读取执行时,执行以下操作:
当负载均衡服务器LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
本实施例中,用于进行链路检测的程序在被第二处理器读取执行时,所执行的操作对应于实施例二中的步骤S210~S220;该程序所执行的操作的其它细节可参见实施例二。
如果采用同一个电子设备实现实施例一和二的方法,则可以采用同一个存储器存储实施例五和实施例六中的用于进行链路检测的程序,并采用同一个处理器读取执行实施例五和实施例六中的用于进行链路检测的程序。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。

Claims (18)

1.一种负载均衡系统中的链路检测方法,包括:
当负载均衡服务器LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
根据比较结果更新所述数据包所属传输流的记录;
根据传输流的记录判断链路是否异常。
2.如权利要求1所述的链路检测方法,其特征在于:
所述数据包为传输控制协议TCP数据包,所述数据包所属传输流为TCP流;所述数据包所属传输流的记录为流表中的流表项。
3.如权利要求1所述的链路检测方法,其特征在于,所述根据比较结果更新该数据包所属传输流的记录包括以下一项或多项:
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端出方向的丢包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中发送端的最大序列号,且小于接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端入方向的乱序包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,等于所述序列号信息中发送端的最大序列号,且所述数据包的数据长度不为0,则在所述数据包所属传输流的记录中,将发送端入方向的重传包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,大于所述序列号信息中发送端的最大序列号,则将所述序列号信息中发送端的最大序列号更新成所述数据包中的序列号加上所述数据包的数据长度。
4.如权利要求3所述的链路检测方法,其特征在于,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
所述根据传输流的记录判断链路是否异常包括以下一或多项:
如果传输流的记录中客户端出方向的丢包数大于0,则判断该传输流所对应的LB到客户端的链路异常;
如果传输流的记录中服务器出方向的丢包数大于0,则判断该传输流所对应的LB到服务器的链路异常;
如果传输流的记录中客户端入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和服务器之间的链路异常;
如果传输流的记录中服务器入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和客户端之间的链路异常。
5.如权利要求3所述的链路检测方法,其特征在于,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
所述LB收到数据包后还包括:在所述数据包所属传输流的记录中,将所述数据包的发送端入方向的数据包的数量加1;LB转发所述数据包后,在所述数据包所属传输流的记录中,将所述数据包的接收端出方向的数据包的数量加1;
所述根据传输流的记录判断链路是否异常包括:
按照指定的转发规则对各传输流的记录进行筛选;对筛选出的传输流的记录进行以下一或多项判断:
如果筛选出的传输流中,客户端出方向的平均丢包率的变化满足第一预定条件,则判断筛选出的传输流所对应的LB到客户端的链路异常;
如果筛选出的传输流中,客户端入方向的平均乱序率的变化满足第二预定条件,则判断筛选出的传输流所对应的LB和客户端之间的链路异常;
如果筛选出的传输流中,服务器出方向的平均丢包率的变化满足第三预定条件,则判断筛选出的传输流所对应的LB到服务器的链路异常;
如果筛选出的传输流中,服务器入方向的平均乱序率的变化满足第四预定条件,则判断筛选出的传输流所对应的LB和服务器之间的链路异常;
其中,一个方向的丢包率是该方向的丢包数除以该方向的数据包的数量;一个方向的乱序率是该方向的乱序包数加上重传包数之和,除以该方向的数据包的数量。
6.一种负载均衡系统中的链路检测方法,包括:
当负载均衡服务器LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
7.如权利要求6所述的链路检测方法,其特征在于:
所述数据包为传输控制协议TCP数据包,所述数据包所属传输流为TCP流;所述数据包所属传输流的记录为流表中的流表项。
8.如权利要求6所述的方法,其特征在于,所述对于指定传输流,根据该传输流的记录判断链路是否异常包括:
对于指定传输流进行如下一项或多项判断:
如果客户端记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的客户端到LB的链路有丢包;
如果客户端记录的指定传输流的入包量小于指定传输流的记录中的客户端出包量,则判断LB到指定传输流所对应的客户端的链路有丢包;
如果服务器记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的服务器到LB的链路有丢包;
如果服务器记录的指定传输流的入包量小于指定传输流的记录中的服务器出包量,则判断LB到指定传输流所对应的服务器的链路有丢包。
9.一种负载均衡系统中的链路检测装置,其特征在于,包括:
比较模块,用于当负载均衡服务器LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
更新模块,用于根据比较结果更新所述数据包所属传输流的记录;
判断模块,用于根据传输流的记录判断链路是否异常。
10.如权利要求9所述的链路检测装置,其特征在于:
所述数据包为传输控制协议TCP数据包,所述数据包所属传输流为TCP流;所述数据包所属传输流的记录为流表中的流表项。
11.如权利要求9所述的链路检测装置,其特征在于,所述更新模块根据比较结果更新该数据包所属传输流的记录包括以下一项或多项:
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端出方向的丢包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,小于所述序列号信息中发送端的最大序列号,且小于接收端的最大确认序列号,则在所述数据包所属传输流的记录中,将发送端入方向的乱序包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,等于所述序列号信息中发送端的最大序列号,且所述数据包的数据长度不为0,则在所述数据包所属传输流的记录中,将发送端入方向的重传包数加1;
如果所述数据包中的序列号加上所述数据包的数据长度,大于所述序列号信息中发送端的最大序列号,则将所述序列号信息中发送端的最大序列号更新成所述数据包中的序列号加上所述数据包的数据长度。
12.如权利要求11所述的链路检测装置,其特征在于,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
所述判断模块根据传输流的记录判断链路是否异常包括以下一或多项:
如果传输流的记录中客户端出方向的丢包数大于0,则判断该传输流所对应的LB到客户端的链路异常;
如果传输流的记录中服务器出方向的丢包数大于0,则判断该传输流所对应的LB到服务器的链路异常;
如果传输流的记录中客户端入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和服务器之间的链路异常;
如果传输流的记录中服务器入方向的乱序包数或重传包数大于0,则判断该传输流所对应的LB和客户端之间的链路异常。
13.如权利要求11所述的链路检测装置,其特征在于,所述发送端是客户端,所述接收端是服务器;或所述发送端是服务器,所述接收端是客户端;
所述更新模块还用于在LB收到数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入方向的数据包的数量加1;在LB转发所述数据包后,在所述数据包所属传输流的记录中,将所述数据包的接收端出方向的数据包的数量加1;
所述判断模块根据传输流的记录判断链路是否异常包括:
按照指定的转发规则对各传输流的记录进行筛选;对筛选出的传输流的记录进行以下一或多项判断:
如果客户端出方向的平均丢包率的变化满足第一预定条件,则判断筛选出的传输流所对应的LB到客户端的链路异常;
如果客户端入方向的平均乱序率的变化满足第二预定条件,则判断筛选出的传输流所对应的LB和客户端之间的链路异常;
如果服务器出方向的平均丢包率的变化满足第三预定条件,则判断筛选出的传输流所对应的LB到服务器的链路异常;
如果服务器入方向的平均乱序率的变化满足第四预定条件,则判断筛选出的传输流所对应的LB和服务器之间的链路异常。
14.一种负载均衡系统中的链路检测装置,其特征在于,包括:
记录模块,用于当负载均衡服务器LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当所述LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
链路判断模块,用于对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
15.如权利要求14所述的链路检测装置,其特征在于:
所述数据包为传输控制协议TCP数据包,所述数据包所属传输流为TCP流;所述数据包所属传输流的记录为流表中的流表项。
16.如权利要求14所述的装置,其特征在于,所述链路判断模块对于指定传输流,根据该传输流的记录判断链路是否异常包括:
所述链路判断模块对于指定传输流进行如下一项或多项判断:
如果客户端记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的客户端到LB的链路有丢包;
如果客户端记录的指定传输流的入包量小于指定传输流的记录中的客户端出包量,则判断LB到指定传输流所对应的客户端的链路有丢包;
如果服务器记录的指定传输流的出包量大于指定传输流的记录中的客户端入包量,则判断指定传输流所对应的服务器到LB的链路有丢包;
如果服务器记录的指定传输流的入包量小于指定传输流的记录中的服务器出包量,则判断LB到指定传输流所对应的服务器的链路有丢包。
17.一种负载均衡系统中进行链路检测的电子设备,包括:
第一存储器和第一处理器;
其特征在于:
所述第一存储器用于保存用于进行链路检测的程序;所述用于进行链路检测的程序在被所述第一处理器读取执行时,执行以下操作:
当负载均衡服务器LB收到的数据包后,提取所述数据包里的序列号,和所述数据包所属传输流的记录中的序列号信息进行比较;
根据比较结果更新所述数据包所属传输流的记录;
根据传输流的记录判断链路是否异常。
18.一种负载均衡系统中进行链路检测的电子设备,包括:
第二存储器和第二处理器;其特征在于:
所述第二存储器用于保存用于进行链路检测的程序;所述用于进行链路检测的程序在被所述第二处理器读取执行时,执行以下操作:
当负载均衡服务器LB收到的数据包后,在所述数据包所属传输流的记录中,将所述数据包的发送端入包量加1;当LB将所述数据包转发给接收端后,在所述数据包所属传输流的记录中,将所述数据包的接收端出包量加1;
对于指定的传输流,根据该传输流的记录判断该传输流对应的链路是否异常。
CN201611089692.7A 2016-11-30 2016-11-30 一种负载均衡系统中的链路检测方法、装置及电子设备 Pending CN108123890A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611089692.7A CN108123890A (zh) 2016-11-30 2016-11-30 一种负载均衡系统中的链路检测方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611089692.7A CN108123890A (zh) 2016-11-30 2016-11-30 一种负载均衡系统中的链路检测方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN108123890A true CN108123890A (zh) 2018-06-05

Family

ID=62227415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611089692.7A Pending CN108123890A (zh) 2016-11-30 2016-11-30 一种负载均衡系统中的链路检测方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN108123890A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110351138A (zh) * 2019-07-11 2019-10-18 中国工商银行股份有限公司 应用于联机事务处理系统的故障定位方法和系统
CN113472900A (zh) * 2021-09-01 2021-10-01 阿里云计算有限公司 报文处理方法、设备、存储介质及计算机程序产品
CN114553678A (zh) * 2022-02-09 2022-05-27 紫光云(南京)数字技术有限公司 一种云网络软slb流量问题的诊断方法
WO2023236874A1 (zh) * 2022-06-08 2023-12-14 华为技术有限公司 通信链路的检测方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101252591A (zh) * 2008-04-03 2008-08-27 中国科学技术大学 实现上下行数据分离的方法和装置
CN102215247A (zh) * 2010-05-06 2011-10-12 华为技术有限公司 网络就近性负载均衡方法及设备
CN102868576A (zh) * 2012-09-26 2013-01-09 电子科技大学 宽带网用户接入链路下行丢包率测量方法
CN102904828A (zh) * 2012-10-26 2013-01-30 杭州迪普科技有限公司 一种负载均衡方法及装置
CN103036975A (zh) * 2012-12-13 2013-04-10 深信服网络科技(深圳)有限公司 虚拟机控制方法及装置
CN103533080A (zh) * 2013-10-25 2014-01-22 北京奇虎科技有限公司 用于lvs的服务器调度方法及装置
CN103780502A (zh) * 2012-10-17 2014-05-07 阿里巴巴集团控股有限公司 一种负载均衡下的数据交互系统、方法及装置
CN105939201A (zh) * 2015-07-13 2016-09-14 杭州迪普科技有限公司 服务器状态的检查方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101252591A (zh) * 2008-04-03 2008-08-27 中国科学技术大学 实现上下行数据分离的方法和装置
CN102215247A (zh) * 2010-05-06 2011-10-12 华为技术有限公司 网络就近性负载均衡方法及设备
CN102868576A (zh) * 2012-09-26 2013-01-09 电子科技大学 宽带网用户接入链路下行丢包率测量方法
CN103780502A (zh) * 2012-10-17 2014-05-07 阿里巴巴集团控股有限公司 一种负载均衡下的数据交互系统、方法及装置
CN102904828A (zh) * 2012-10-26 2013-01-30 杭州迪普科技有限公司 一种负载均衡方法及装置
CN103036975A (zh) * 2012-12-13 2013-04-10 深信服网络科技(深圳)有限公司 虚拟机控制方法及装置
CN103533080A (zh) * 2013-10-25 2014-01-22 北京奇虎科技有限公司 用于lvs的服务器调度方法及装置
CN105939201A (zh) * 2015-07-13 2016-09-14 杭州迪普科技有限公司 服务器状态的检查方法和装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110351138A (zh) * 2019-07-11 2019-10-18 中国工商银行股份有限公司 应用于联机事务处理系统的故障定位方法和系统
CN113472900A (zh) * 2021-09-01 2021-10-01 阿里云计算有限公司 报文处理方法、设备、存储介质及计算机程序产品
CN114553678A (zh) * 2022-02-09 2022-05-27 紫光云(南京)数字技术有限公司 一种云网络软slb流量问题的诊断方法
CN114553678B (zh) * 2022-02-09 2024-02-13 紫光云(南京)数字技术有限公司 一种云网络软slb流量问题的诊断方法
WO2023236874A1 (zh) * 2022-06-08 2023-12-14 华为技术有限公司 通信链路的检测方法及装置

Similar Documents

Publication Publication Date Title
EP3387803B1 (en) Router with optimized statistical functionality
CN107347021B (zh) 一种基于sdn网络可靠传输方法
CN108123890A (zh) 一种负载均衡系统中的链路检测方法、装置及电子设备
US10355961B2 (en) Network traffic capture analysis
EP3972226A1 (en) Network packet flow controller with extended session management
US20060221825A1 (en) Congestion control network relay device and method
CN108881008A (zh) 一种数据传输的方法、装置和系统
CN104717259B (zh) 分布式中转服务器网络辅助的多路径数据传输系统与方法
Soniya et al. A survey on named data networking
CN112468469B (zh) 一种保障sctp协议多归属报文同源同宿的方法和装置
CN103597794B (zh) 用于提供关于数据数组关联的信息以及用于转发数据数组的设想
CN106331117B (zh) 一种数据传输方法
Gao et al. Toward emulation-based performance assessment of constrained application protocol in dynamic networks
CN107147655A (zh) 一种网络双协议栈并行处理模型及其处理方法
CN102299899A (zh) 一种恶劣信道下的tcp加速方法
US11770325B2 (en) Automatically selecting an optimized communication channel for communications with a deflect in an overlay network
CN107005470A (zh) 用于创建数据分组的子流的方法
Kristensen et al. Applications of coloured Petri nets for functional validation of protocol designs
EP2628278B1 (en) Method, system and element for multipurpose data traffic engineering and routing
CN106411924A (zh) 一种创建会话转发表项的方法、转发报文的方法及装置
CN104702478B (zh) 虚拟路由转发实例处理方法及装置
CN107104892A (zh) 网络加速的方法和装置
CN107172230A (zh) 基于第三方数据库实现业务节点通讯地址发现的方法
CN105897665B (zh) 一种卫星网络环境下实现tcp传输的方法及相应的网关
CN107294877A (zh) 一种tcp流重组方法和装置

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20180605

RJ01 Rejection of invention patent application after publication