技术领域
[0001] 本
发明涉及网络检测技术领域,尤其涉及一种用于数据中心网络延迟的检测方法及装置。
背景技术
[0002] 目前
云计算虚拟化在企业的数据中心已被大规模使用,用户的业务部署在
虚拟机内,多个虚拟机之间通过虚拟网络及物理网络连接,其复杂程度远高于传统数据中心网络。当其承载的业务发生延迟时,需要判断延迟是否发生在虚拟网络或者物理网络上,现有的网络延迟检测多采用主动探测法,如通过Ping方式获取路径的双向延迟,但是,通过Ping方式检测网络延迟存在如下问题:
[0003] Ping方式不能获取端到端的单方向延迟,虚拟化场景下数据流的往返路径往往不是固定的,无法判断某一路径是否存在延迟。而且主动探测方式具有时效性限制,只能用来判断在探测时间点是否存在延迟,无法作为业务延迟时业务数据包是否存在网络延迟的依据。
发明内容
[0004] 本发明的目的在于提供一种用于数据中心网络延迟的检测方法及装置,能够准确获取网络层面端到端的单向延迟数据。
[0005] 为了实现上述目的,本发明的一方面提供一种用于数据中心网络延迟的检测方法,所述数据中心至少包括第一
服务器以及设在第一服务器中的第一虚拟机,第二服务器以及设在第二服务器中的第二虚拟机,所述方法包括:
[0006] 同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时钟源;
[0007] 通过第一虚拟机发送数据包,依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包,所述数据包中保证包括时间戳信息和标志位信息;
[0008] 基于数据包分别在第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时间戳信息,获取数据包在每段路径传送的延迟数据;
[0009] 将各段路径的延迟数据与对应路径的时间
阈值比对,得到各段路径的网络延迟检测结果。
[0010] 优选地,在步骤通过第一虚拟机发送数据包,依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包之前还包括:
[0011] 在第一虚拟机、第一服务器、第二服务器和第二虚拟机中分别设立检测点,所述检测点用于捕获数据包经过时的时间戳信息和标志位信息。
[0012] 较佳地,所述数据包的IP头部采用复用IP协议头,所述IP头部中包括ident字段、CE标志位字段和DF标志位字段;其中,
[0013] 所述ident字段用于添加数据包的时间戳信息,所述CE标志位字段用于标记数据包的时间戳信息是否已被添加,所述DF标志位字段用于标记数据包的时间戳信息是否可被添加。
[0014] 进一步地,通过第一虚拟机发送数据包,依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包,所述数据包中保证包括时间戳信息和标志位信息的方法包括:
[0015] 第一虚拟机发送数据包,通过对应的检测点检测数据包中DF标志位字段是否为空,并在非空时在ident字段中插入时间戳信息S1,同时
修改CE标志位字段为非空;
[0016] 第一服务器接收所述数据包,通过对应的检测点检测数据包中CE标志位字段是否为空,并在非空时捕获ident字段中的时间戳信息S1,同时记录当前时刻的时间戳信息S2;
[0017] 将数据包中ident字段的时间戳信息S1替换为时间戳信息S2后通过第一服务器再发送;
[0018] 第二服务器接收所述数据包,通过对应的检测点检测数据包中CE标志位字段是否为空,并在非空时捕获ident字段中的时间戳信息S2,同时记录当前时刻的时间戳信息S3;
[0019] 将数据包中ident字段的时间戳信息S2替换为时间戳信息S3后通过第二服务器再发送;
[0020] 第二虚拟机接收所述数据包,通过对应的检测点检测数据包中CE标志位字段是否为空,并在非空时捕获ident字段中的时间戳信息S3,同时记录当前时刻的时间戳信息S4。
[0021] 优选地,基于数据包分别在第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时间戳信息,获取数据包在每段路径传送的延迟数据的方法包括:
[0022] 将时间戳信息S2与时间戳信息S1求差计算第一虚拟机至第一服务器路径的延迟数据T1;
[0023] 将时间戳信息S3与时间戳信息S2求差计算第一服务器至第二服务器路径的延迟数据T2;
[0024] 将时间戳信息S4与时间戳信息S3求差计算第二服务器至第二虚拟机路径的延迟数据T3。
[0025] 可选地,同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机时钟源的方法包括:
[0026] 选用微秒级时间同步机制,同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机的时钟源。
[0027] 可选地,所述ident字段占用IP头部的前15位字段,所述CE标志位字段占用IP头部的第16位字段,所述DF标志位字段占用IP头部的第17位字段。
[0028] 与
现有技术相比,本发明提供的用于数据中心网络延迟的检测方法具有以下有益效果:
[0029] 本发明提供的用于数据中心网络延迟的检测方法中,通过将端到端的数据中心网络划分为虚拟网络和物理网络,也即将第一虚拟机至第一服务器之间以及第二服务器至第二虚拟机之间的网络划为虚拟网络,将第一服务器至第二服务器之间的网络划为物理网络,然后采用时间同步机制同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时钟源,接着利用第一虚拟机发送一数据包,并依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包,通过捕获该数据包分别在第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时间戳信息,可以计算出数据包在第一虚拟机至第一服务器,也即第一阶段虚拟网络路径传送的延迟数据,第一服务器至第二服务器,也即物理网络路径传送的延迟数据,第二服务器至第二虚拟机,也即第二阶段虚拟网络路径传送的延迟数据,分别将第一阶段虚拟网络、物理网络和第二阶段虚拟网络的延迟数据与对应路径预设的时间阈值比对,当延迟数据超过时间阈值时表明对应路径网络延迟,当延迟数据未超过时间阈值时表明对应路径网络不延迟。
[0030] 可见,本发明采用单向分段式的路径网络延迟检测方法,相比较于现有技术采用的双向路径网络检测方法而言,不仅检测结果更准确,而且检测的范围也更加精确,能够精准获取每段路径网络的延迟检测结果,得到网络层面端到端的单向延迟数据。
[0031] 本发明的另一方面提供一种用于数据中心网络延迟的检测装置,应用有上述技术方案提到的用于数据中心网络延迟的检测方法,该装置包括:
[0032] 时钟同步单元,用于同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时钟源;
[0033] 数据包检测单元,用于通过第一虚拟机发送数据包,依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包,所述数据包中保证包括时间戳信息和标志位信息;
[0034] 延迟计算单元,用于基于数据包分别在第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时间戳信息,获取数据包在每段路径传送的延迟数据;
[0035] 延迟输出单元,用于将各段路径的延迟数据与对应路径的时间阈值比对,得到各段路径的网络延迟检测结果。
[0036] 优选地,还包括:
[0037] 检测点设置单元,用于在第一虚拟机、第一服务器、第二服务器和第二虚拟机中分别设立检测点,所述检测点用于捕获数据包经过时的时间戳信息和标志位信息。
[0038] 与现有技术相比,本发明提供的用于数据中心网络延迟的检测装置的有益效果与上述技术方案提供的用于数据中心网络延迟的检测方法的有益效果相同,在此不做赘述。
[0039] 本发明的第三方面提供一种计算机可读存储介质,计算机可读存储介质上存储有
计算机程序,计算机程序被处理器运行时执行上述用于数据中心网络延迟的检测方法的步骤。
[0040] 与现有技术相比,本发明提供的计算机可读存储介质的有益效果与上述技术方案提供的用于数据中心网络延迟的检测方法的有益效果相同,在此不做赘述。
附图说明
[0041] 此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性
实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0042] 图1为实施例中用于数据中心网络延迟的检测方法的流程示意图;
[0043] 图2为实施例中CE标志位字段和DF标志位字段在IP协议头部的
位置示意图;
[0044] 图3为实施例中时间戳信息在IP协议头部的位置示意图;
[0045] 图4为实施例中数据中心的网络路径示意图;
[0046] 图5为实施例中第一虚拟机网卡驱动的发包过程中添加时间戳信息与解析时间戳信息的示例图。
具体实施方式
[0047] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。
[0048] 实施例一
[0049] 请参阅图1和图4,本实施例提供一种用于数据中心网络延迟的检测方法,数据中心至少包括第一服务器以及设在第一服务器中的第一虚拟机,第二服务器以及设在第二服务器中的第二虚拟机,该方法包括:同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时钟源;通过第一虚拟机发送数据包,依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包,数据包中保证包括时间戳信息和标志位信息;基于数据包分别在第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时间戳信息,获取数据包在每段路径传送的延迟数据;将各段路径的延迟数据与对应路径的时间阈值比对,得到各段路径的网络延迟检测结果。
[0050] 本实施例提供的用于数据中心网络延迟的检测方法中,通过将端到端的数据中心网络划分为虚拟网络和物理网络,也即将第一虚拟机至第一服务器之间以及第二服务器至第二虚拟机之间的网络划为虚拟网络,将第一服务器至第二服务器之间的网络划为物理网络,然后采用时间同步机制同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时钟源,接着利用第一虚拟机发送一数据包,并依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包,通过捕获该数据包分别在第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时间戳信息,可以计算出数据包在第一虚拟机至第一服务器,也即第一阶段虚拟网络路径(如图4中的标记1)传送的延迟数据,第一服务器至第二服务器,也即物理网络路径(如图4中的标记2)传送的延迟数据,第二服务器至第二虚拟机,也即第二阶段虚拟网络路径(如图4中的标记3)传送的延迟数据,分别将第一阶段虚拟网络、物理网络和第二阶段虚拟网络的延迟数据与对应路径预设的时间阈值比对,当延迟数据超过时间阈值时表明对应路径网络延迟,当延迟数据未超过时间阈值时表明对应路径网络不延迟。
[0051] 可见,本实施例采用单向分段式的路径网络延迟检测方法,相比较于现有技术采用的双向路径网络检测方法而言,不仅检测结果更准确,而且检测的范围也更加精确,能够精准获取每段路径网络的延迟检测结果,得到网络层面端到端的单向延迟数据。采用数据包自身携带时间戳信息可以精确计算每个数据包的链路延迟。容易理解的是,上述端到端是指第一虚拟机至第二虚拟机之间的路径网络。
[0052] 上述实施例中,在步骤通过第一虚拟机发送数据包,依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包之前还包括:
[0053] 在第一虚拟机、第一服务器、第二服务器和第二虚拟机中分别设立检测点,检测点用于捕获数据包经过时的时间戳信息和标志位信息。
[0054] 具体实施时,设在第一虚拟机中的检测点用于监测第一虚拟机网卡驱动发包过程,设在第一服务器中的检测点用于监测第一服务器网卡驱动发包过程,设在第二服务器中的检测点用于监测第二服务器网卡驱动收包过程,设在第二虚拟机中的检测点用于监测第二虚拟机网卡驱动收包过程。
[0055] 请参阅图2和图3,示例性地,数据包的IP头部采用复用IP协议头,IP头部中包括ident字段、CE标志位字段和DF标志位字段;其中,ident字段用于添加数据包的时间戳信息,CE标志位字段用于标记数据包的时间戳信息是否已被添加,DF标志位字段用于标记数据包的时间戳信息是否可被添加。其中,ident字段也叫分段标识符,CE标志位字段也叫协议保留标志位,DF标志位字段也叫禁用分段标记位,ident字段占用IP头部的前15位字段,CE标志位字段占用IP头部的第16位字段,DF标志位字段占用IP头部的第17位字段。通过在数据包的ident字段中添加时间戳信息,使其能够兼容TCP/IP网络协议,不影响业务及网络转发设备的兼容性。
[0056] 上述实施例中通过第一虚拟机发送数据包,依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包的方法包括:
[0057] 第一虚拟机发送数据包,通过对应的检测点检测数据包中DF标志位字段是否为空,并在非空时在ident字段中插入时间戳信息S1,同时修改CE标志位字段为非空;第一服务器接收数据包,通过对应的检测点检测数据包中CE标志位字段是否为空,并在非空时捕获ident字段中的时间戳信息S1,同时记录当前时刻的时间戳信息S2;将数据包中ident字段的时间戳信息S1替换为时间戳信息S2后通过第一服务器再发送;第二服务器接收数据包,通过对应的检测点检测数据包中CE标志位字段是否为空,并在非空时捕获ident字段中的时间戳信息S2,同时记录当前时刻的时间戳信息S3;将数据包中ident字段的时间戳信息S2替换为时间戳信息S3后通过第二服务器再发送;第二虚拟机接收数据包,通过对应的检测点检测数据包中CE标志位字段是否为空,并在非空时捕获ident字段中的时间戳信息S3,同时记录当前时刻的时间戳信息S4。
[0058] 基于数据包分别在第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时间戳信息,获取数据包在每段路径传送的延迟数据的方法包括:
[0059] 将时间戳信息S2与时间戳信息S1求差计算第一虚拟机至第一服务器路径的延迟数据T1;将时间戳信息S3与时间戳信息S2求差计算第一服务器至第二服务器路径的延迟数据T2;将时间戳信息S4与时间戳信息S3求差计算第二服务器至第二虚拟机路径的延迟数据T3。
[0060] 具体实施时,在第一虚拟机网卡驱动发包过程中,请参阅图5,设在第一虚拟机中的检测点首先检测数据包IP头部DF标志位字段是否为空,也即判断“DF=0”是否成立,若不成立则表示可在ident字段中插入时间戳信息S1,同时将CE标志位字段修改为非空,也即修改为“CE=1”,反之,“DF=1”表示ident字段已被占用,不能再插入时间戳信息,“CE=0”表示时间戳信息已被添加,无需在插入时间戳信息。
[0061] 接着由第一服务器接收由第一虚拟机网卡驱动发来的数据包,对应检测点检测数据包中CE标志位字段是否为空,若为非空也即“CE=1”时则捕获数据包中ident字段的时间戳信息S1,同时记录当前时刻的时间戳信息S2,此时利用公式T1=S2-S1计算第一阶段虚拟网络路径传送的延迟数据;然后将数据包中ident字段的时间戳信息S1替换为时间戳信息S2并由第一服务器网卡执行驱动发包过程。
[0062] 接下来由第二服务器接收由第一服务器网卡驱动发来的数据包,对应检测点检测数据包中CE标志位字段是否为空,若为非空也即“CE=1”时则捕获数据包中ident字段的时间戳信息S2,同时记录当前时刻的时间戳信息S3,此时利用公式T2=S3-S2计算物理网络路径传送的延迟数据;然后将数据包中ident字段的时间戳信息S2替换为时间戳信息S3并由第二服务器网卡执行驱动发包过程。
[0063] 之后由第二虚拟机接收由第二服务器网卡驱动发来的数据包,对应检测点检测数据包中CE标志位字段是否为空,若为非空也即“CE=1”时则捕获数据包中ident字段的时间戳信息S3,同时记录当前时刻的时间戳信息S4,此时利用公式T3=S4-S3计算物理网络路径传送的延迟数据.。
[0064] 可选地,上述实施例中同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机时钟源的方法包括:
[0065] 选用微秒级时间同步机制,同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机的时钟源。例如,在Linux下使用chrony来做时钟同步。
[0066] 示例性地,第一阶段虚拟网络路径的时间阈值为1毫秒,物理网络路径的时间阈值为10毫秒,第二阶段虚拟网络路径的时间阈值为1秒,本实施例对上述时间阈值的设定不做限定,本领域技术人员可根据应用需要自行设定。
[0067] 实施例二
[0068] 本实施例提供一种用于数据中心网络延迟的检测装置,所述数据中心至少包括第一服务器以及设在第一服务器中的第一虚拟机,第二服务器以及设在第二服务器中的第二虚拟机,其特征在于,该装置包括:
[0069] 时钟同步单元,用于同步数据中心中第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时钟源;
[0070] 数据包检测单元,用于通过第一虚拟机发送数据包,依次经过第一服务器、第二服务器传送至第二虚拟机接收数据包,所述数据包中保证包括时间戳信息和标志位信息;
[0071] 延迟计算单元,用于基于数据包分别在第一虚拟机、第一服务器、第二服务器和第二虚拟机中的时间戳信息,获取数据包在每段路径传送的延迟数据;
[0072] 延迟输出单元,用于将各段路径的延迟数据与对应路径的时间阈值比对,得到各段路径的网络延迟检测结果。
[0073] 优选地,还包括:
[0074] 检测点设置单元,用于在第一虚拟机、第一服务器、第二服务器和第二虚拟机中分别设立检测点,所述检测点用于捕获数据包经过时的时间戳信息和标志位信息。
[0075] 与现有技术相比,本实施例提供的用于数据中心网络延迟的检测装置的有益效果与上述实施例提供的用于数据中心网络延迟的检测方法的有益效果相同,在此不做赘述。
[0076] 实施例三
[0077] 本实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述用于数据中心网络延迟的检测方法的步骤。
[0078] 与现有技术相比,本实施例提供的计算机可读存储介质的有益效果与上述技术方案提供的用于数据中心网络延迟的检测方法的有益效果相同,在此不做赘述。
[0079] 本领域普通技术人员可以理解,实现上述发明方法中的全部或部分步骤是可以通过程序来指令相关的
硬件来完成,上述程序可以存储于计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,上述的存储介质可以是:ROM/RAM、磁碟、光盘、存储卡等。
[0080] 以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉
本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述
权利要求的保护范围为准。