CN103427935A - 一种消除位置误差的网络时延测量方法及系统 - Google Patents
一种消除位置误差的网络时延测量方法及系统 Download PDFInfo
- Publication number
- CN103427935A CN103427935A CN2012101523267A CN201210152326A CN103427935A CN 103427935 A CN103427935 A CN 103427935A CN 2012101523267 A CN2012101523267 A CN 2012101523267A CN 201210152326 A CN201210152326 A CN 201210152326A CN 103427935 A CN103427935 A CN 103427935A
- Authority
- CN
- China
- Prior art keywords
- packet
- network
- intermediate layer
- timestamp
- measurement
- 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
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种消除位置误差的网络时延测量方法及系统,该方法在端主机Windows操作系统的微端口驱动和协议驱动间插入一个NDIS中间层驱动程序,将测量时间戳的记录位置从传统应用程序下移到该中间层驱动,用户空间的测量探针程序依据其记录并返回的时间戳来计算网络路径的时延值(包括单向时延和往返时延),实现消除时延测量位置误差。由于位置误差受主机硬件性能、内核复杂度、系统负载、中断响应、内核旋转锁、进程与线程调度等多因素的影响,特别受系统负载和进程/线程调度影响最大。本发明改进后的方法尽可能地让测量过程的收/发数据包时间戳记录位置接近测量主机网卡收/发包的时刻,从而消除主机本身处理数据包的时间消耗,即消除测量位置误差。
Description
技术领域
本发明涉及一种互联网络时延主动测量误差消除的方法,特别是经济、高效的消除测量主机位置误差的方法。本发明的技术领域是互联网端到端性能测量与监控,具体涉及一种消除位置误差的网络时延测量方法及系统。
背景技术
在互联网测量与监控领域,路径时延是衡量网络性能的关键参数之一,也是网络丢包率、时延抖动、瓶颈带宽等其它指标测量的基础。精确的路径时延测量是一个困难的问题,但它在网络行为分析、性能监测、网络应用设计等领域有着广泛的应用。IETF组织的IP网络性能指标工作组(IP Performance Metrics Working Group,IPPM)对路径时延定义进行了标准化,将其分为往返时延和单向时延。国内外许多研究者针对路径时延测量提出了大量的实现与改进方法,例如:基于多次正向和反向往返时延估计单向时延的测量方法,基于TCP的往返时延测量方法,基于组播的时延测量方法等等。路径时延测量的误差来源主要有两种:一种是测量主机的时钟不同步带来的时钟误差;二是因为测量主机记录的收/发包时间戳不是真实的到达/离开网卡的时刻而产生的位置误差。这两类误差都会导致测量结果中包含由主机处理所带来的测量误差,会使评价网络时延、时延抖动、带宽等指标性能不准确。因此必须尽可能地消除这两类误差,提高路径时延测量精度。
国内外目前的研究成果集中在解决测量主机时钟不同步带来的时钟误差的消除问题,依据同步时钟源分为两类:一类是基于外部时钟源的同步,主要包括网络时间协议(Network Time Protocol,NTP)、全球定位系统(Global Position System,GPS)、IEEE1588时钟同步协议。另一类是基于端到端测量的时钟同步,主要包括在线和离线两种方式。例如:采用线性规划算法、凸包算法、聚类算法等方法消除时钟偏差取得了较为理想的结果,但这些方法都没涉及测量位置误差的消除。
同时针对因为测量主机记录的收/发包时间戳不是真实的到达/离开网卡的时刻而产生的位置误差问题,目前也有少量研究,主要包括:Endaceg公司生产的专用于数据包捕获的DAG(Data Acquisition and Generation)采集卡,可以实现捕获数据包的同时记录时间戳,但这种方式硬件价格昂贵,不利于普遍部署,并且DAG主要用于高速链路的数据包捕获,是网络流量工程的基础硬件,不适于网络时延主动测量方式的应用;基于Linux环境在网卡驱动程序来记录时间戳的方法,该方案需要较多地修改Linux网络设备内核代码并重新编译内核,而且不能普遍适应各种类型的网卡;Tcpdump等基于BPF的流量监测工具实现了在Linux系统的设备独立层记录收包时间戳,减少了收包的位置误差,但没有实现发送位置误差的消除,也不适宜于主动的时延测量应用设计。
因此到目前为止,还没有一种便捷的、经济的、且适合于主动时延测量的位置误差消除方法。
发明内容
本发明的目的在于,为克服现有技术在测量网络延时时存在的位置误差问题,本发明提供了一种消除位置误差的网络时延测量方法。
本发明的技术方案基于Windows平台、且适宜于主动测量方式的网络端到端时延测量位置误差消除方法。
为实现上述目的,本发明提供了一种消除位置误差的网络时延值测量方法,该方法用于端到端的网络时延测量,所述方法包含:
在一次往返测量过程中:
步骤101)源端主机记录其向目的端主机发送数据包的时间戳信息tsend_s;
步骤102)目的端主机记录其收到源端发送的数据包的时间戳信息trecv_d,然后再记录其向发送端回应数据包的时间戳信息tresponse_d;
步骤103)源端收到目的端回应的数据包,并记录其受到该回应数据包的时间戳信息trecv_s;
步骤104)采用如下公式计算端到端的单向和/或双向网络延时值:
路径正向单向时延:FOWD=trecv_d-tsend_s;
路径反向单向时延:ROWD=trecv_s-tresponse_d;
路径往返时延:RTT=(trecv_d-tsend_s)+(trecv_s-tresponse_d);
其中,所述步骤101)、102)和103)通过在所述源端和目的端主机的Windows操作系统的微端口驱动和协议驱动间插入NDIS中间层驱动,该驱动层能够记录用于测量网络延时的收/发数据包的时间戳信息。
上述技术方案中,当用于确定路径正向延时值时上述方法具体包含如下子步骤:
步骤101)当NDIS中间层驱动截获到一个数据封包时,检测是否是测量数据包,如果是测量数据包,进入步骤102)进行位置误差处理;否则直接发往微端口层;
步骤102)对测量数据包进行位置误差处理,源端主机的NDIS中间层驱动把获得的系统时间戳插入到待发送数据包负载中用户数据段的头4个字节,然后重新计算数据包校验和,并将该新的封包发往微端口层;
步骤103)目的端主机的NDIS中间层驱动把获得的系统时间戳减去发送端传来的时间戳插入到数据包负载中用户数据段的头4个字节,并调用例程通知上层协议驱动;
步骤104)目的端测量应用程序从套接字接收缓冲区取回测量数据包,读取头4个字节便得到消除测量位置误差的端到端路径正向单向时延值。
上述技术方案中,所述收/发数据包的时间戳信息能够利用内核例程返回的操作系统时钟的计时获取,或通过调用内核例程以CPU频率计数获取。
上述技术方案中,所述NDIS中间层驱动有两种方式处理源端和目的端数据包的发送:一种是把收到的包描述符直接传递到下层,称为重利用;另一种是根据收到的包描述符重建一个新的包描述符,称为重申请;
其中,所述NDIS中间层驱动获得的网络封包结构是一个单向链表,所述包描述符相当于整个链表的表头指针。
上述技术方案中,所述步骤103)进一步包含如下子步骤:
步骤103-1)当目的端主机的物理网卡接收到一个数据包时,触发中断,中断处理程序接管中断后,调用网卡微端口驱动所注册的中断处理例程,微端口驱动把网卡收到的数据拷贝到微端口驱动缓冲区队列;
步骤103-2)微端口驱动程序尽可能等待更多的数据包到达,并推迟一个随机时间片后调用相应内核例程通知NDIS中间层驱动处理到达的数据包;
步骤103-3)NDIS中间层驱动把到达的数据包中的所有数据拷贝到一个连续的内存并进行下个步骤的封包处理;
步骤103-4)NDIS中间层驱动获得目的端接收数据包记录的时间戳信息,并读取源端传来数据包时的时间戳信息,然后将所述两个时间戳信息做差并将差值重新写到待回应的数据包;
步骤103-5)NDIS中间层驱动通知其上层的协议驱动,从套接字接收缓冲区取回待回应的数据包,即获得一个消除测量位置误差的端到端路径正向的单向时延值。
基于上述方法本发明还提供了一种消除位置误差的网络时延值测量系统,该系统设置于网络两端的源端和目的端主机中,所述系统基于Windows平台,包含:设置于微端口驱动层和协议驱动层之间的NDIS中间层驱动层,及位于应用层的测量探针模块;其中:
NDIS中间层驱动层,用于检测是否是测量数据包并在数据包的用户数据段位置记录用于测量网络延时的收/发数据包的时间戳信息;
测量探针模块,用于依据收到的NDIS中间层驱动层记录的时间戳信息采用如下公式计算路径正向延时值、路径反向延时值或路径双向延时值;
路径正向单向时延:FOWD=trecv_d-tsend_s;
路径反向单向时延:ROWD=trecv_s-tresponse_d;
路径往返时延:RTT=(trecv_d-tsend_s)+(trecv_s-tresponse_d);
其中,trecv_d表示源端存储模块记录的发送时间戳,tsend_s表示目的端的存储模块记录的接收数据包时间戳、tresponse_d表示目的端存储模块记录的其回应包的时间戳,trecv_s表示源端存储模块记录的其收到回应包的时间戳。
上述技术方案中,所述NDIS中间层驱动层还包含:
数据包检测模块,用于当NDIS中间层驱动截获到一个数据封包时,检测是否是测量数据包,如果是测量数据包则进行位置误差处理;否则直接发往微端口层。
封包模块,用于对接收的测量数据包进行位置误差处理,把获得的系统时间戳或者计算得到的延时值插入到数据包负载中用户数据段的字节中,然后重新计算数据包校验和,并将该新的封包发往微端口层或通知上层协议驱动。
上述技术方案中,所述NDIS中间层驱动层有两种方式处理源端和目的端数据包的发送:一种是把收到的包描述符直接传递到下层,称为重利用;另一种是根据收到的包描述符重建一个新的包描述符,称为重申请;
其中,所述NDIS中间层驱动层获得的网络封包结构是一个单向链表,所述包描述符为整个链表的表头指针。
与现有技术相比,本发明的技术优势在于:
本发明所采用的方法在进行网络时延测量时能够高精度的消除测量方法不完善所带来的位置误差,且能够适用于主动和被动模式的时延测量,不需要额外的硬件和软件支持,成本很低,因此适合于普遍部署和应用。
附图说明
图1是本发明基于windows NDIS中间层驱动实现时间戳记录的方法模型;
图2是本发明实现发送位置误差消除的流程;
图3是本发明实现接收位置误差消除的流程;
图4为在轻载条件下IMD-ping和ping的往返时延时序(包长1500字节)及稳定性;
图5为在并发测量条件下IMD-ping和ping的往返时延时序(包长1500字节)及稳定性。
具体实施方式
下面结合附图对本发明的内容进行详细说明。
本发明通过在Windows操作系统的微端口驱动和协议驱动之间插入一个NDIS中间层驱动程序,将测量时间戳的记录位置从传统应用程序下移到该中间层驱动,用户空间的测量探针程序依据其记录并返回的时间戳来计算网络路径的时延值,从而实现消除时延测量位置误差。测量位置误差分析及本发明方法的实现过程描述如下:
(1)位置误差分析
位置误差主要包括:(1)内核驱动各层处理数据包的时间;(2)通信应用进程/线程间竞争CPU的排队时间。如图1所示为Windows系统的网络体系结构及套接字通信过程,数据包在应用进程与物理网卡之间往返传递,经历了用户态DLL调用、系统调用及内核的多层处理。在应用进程记录的数据包发送时间戳t1,不是数据包被送到物理链路的真实发送时刻tsend,而是提前了Δtsend时间,即tsend=t1+Δtsend。在应用进程记录的包接收时间戳t2,不是数据包从物理链路送到网卡的真实接收时刻trecv,而是滞后了Δtrecv时间,即trecv=t2-Δtrecv。主流的网络时延测量程序(如ping程序)是使用的t2-t1。它实际包含了主机发送和接收包的处理时间,即位置误差为:ErrLoc=Δtsend+Δtrecv。
实际上,位置误差ErrLoc的值受主机硬件性能、内核复杂度、系统负载、中断响应、内核旋转锁、进程与线程调度等多因素的影响,ErrLoc值可达到数十至数百毫秒,特别在大流量导致主机内核出现“中断活锁”的极端情况下,位置误差可达到数百毫秒甚至无穷大。
(2)发送位置误差消除
在NDIS封包管理机制中,NDIS交给中间层驱动程序是一个结构为NDIS_PACKET的包描述符(NDIS Packet Descriptor,NPD)。中间层获得的网络封包结构是一个单向链表,包描述符相当于整个链表的表头指针。这样上层协议驱动程序调用NdisSend/NdisSendPackets内核例程请求NDIS发送数据包时,NDIS将调用中间层驱动实现的MiniportSend/MiniportSendPackets例程。此时,在中间层驱动的MiniportSend/MiniportSendPackets例程中完成发送时间戳的记录,算法如图2。之后,中间层驱动再调用其实现的NdisSend/NdisSendPackets例程请求NDIS往下层发送数据包,NDIS便调用其下层的Miniport Driver的MiniportSend/MiniportSendPackets例程通过NDIS接口控制物理网卡,将数据发送出去。
在NDIS中间层驱动规范中,有两种方式处理包发送:一种是把收到的包描述符直接传递到下层,称为重利用;另一种是根据收到的包描述符重建一个新的包描述符,称为重申请。事实上,重申请包描述符并不需要对网络数据包重建,所涉及内存操作少,可以忽略代价开销。而在重利用方式下,需要调用内核例程NdisIMGetCurrentPacketStack检测当前驱动的栈空间是否可供利用,在没有剩余空间的情况下必须转入重申请。在大量通信的情况下,重利用方式是不经济的。图2中,原始包描述符复制到新申请的包描述符MyPacket时,关键是复制NDIS_PACKET_EXTENSION结构。为不影响主机系统其它通信程序正常通信,在中间驱动程序截获到一个数据封包时,需要检测是否是测量数据包,如果不是则直接调用NdisSend/NdisSendPackets例程将MyPacket发往微端口层,否则进行位置误差处理。位置误差处理过程中,把GetTimeStamp函数获得的系统时间戳插入到数据包负载中用户数据段的头4个字节(根据IEEE802.3以太网帧格式,依据最小有效帧长度64字节计算,TCP、UDP及ICMP协议数据包的用户数据段长度分别是6、18和18字节),然后重新计算数据包校验和。
(3)接收位置误差消除
接收位置误差消除流程如图3所示。
当物理网卡接收到一个数据包时,触发中断,中断处理程序接管中断后,调用网卡微端口驱动所注册的中断处理例程,微端口驱动把网卡收到的数据拷贝到微端口驱动缓冲区队列。基于效率的原因,微端口驱动程序尽可能等待更多的数据包到达,因此会推迟一个随机时间片后通知上层驱动处理到达的数据包[18].微端口驱动调用NdisMIndicateReceive/NdisMEthIndicateReceive例程通知中间层驱动。由于下层微端口驱动程序传递上来的网络封包在内存中的存储地址并不是连续的,因此在进行封包处理之前需要先把数据包中的所有数据拷贝到一个连续的内存中才能进行处理。中间层驱动在PtReceive/PtReceivePacket例程中用GetTimeStamp例程获得接收时间戳t4,并读取发送端传来的时间戳t3。然后将t4减去t3的值(即单向时延值)重新写入MyPacket指向数据包数据包负载中用户数据段的头4个字节,并将尾部数据去掉后重新计算数据包校验和(这样可以减少计算校验和的时间开销),算法如图3。之后,中间层驱动再调用NdisMIndicateReceivePacket例程通知上层协议驱动。这样,测量应用程序调用Winsock的接口函数recv/recvfrom从套接字接收缓冲区取回测量数据包,读取头4个字节便得到一个基本消除测量位置误差的端到端单向时延值。
(4)高精度内核时间戳
Windows操作系统内核驱动程序开发包提供的系统时钟例程主要有KeQueryTickCount、KeQuerySystemTime、KeGetCurrenttime等都是依据定时器中断计数完成计时。通用PC的晶体振荡器频率是14.318Mhz,由8253定时/计数器分频后提供给软件。内核例程可读取的时钟频率为1.193MHz,故软件时钟分辨率较差,约为10ms,不宜作为测量时延时钟源。CPU时钟频率从4.77Mhz到现在的1GHz以上,分辨率高且稳定性强,CPU时钟周期表示了同步动态随机存储器(SynchronousDynamic Random Access Memory,SDRAM)所能运行的最高频率。利用内核例程KeQueryPerformanceCounter可以获得微秒级精度计时,满足时延测量的时钟要求。在操作系统内核中获取微秒级精度计时的GetTimeStamp函数,其算法算法如下:
①调用内核例程KeQueryPerformanceCounter获取CPU频率信息结构Freq及频率计数CurTime;
②利用算式((CurTime.QuadPart*1000000)/Freq.QuadPart)计算时间戳信息,精度为微秒。
(5)NDIS中间层驱动程序设计
基于Windows NDIS规范编程实现了如图3所示的时延测量中间层驱动程序,以下称为DelayM-IMDriver。并改造Windows系统的ping程序,把时间戳记录位置从应用程序位置下移到DelayM-IMDriver中,改造的ping程序称为IMD-ping。本发明的DelayM-IMDriver的核心算法设计如下:
①调用内核例程NdisAllocateMemoryWithTag分配无分页内存块,并将起始地址赋值给pPacketContent指针变量;
②调用内核例程NdisQueryPacket找到第一个Ndis_Buffer;
③循环调用NdisQueryBufferSafe、NdisMoveMemory和NdisGetNextBuffer例程取得Ndis_Buffer中存储缓冲区的虚拟地址、内存中的物理块数、NDIS_BUFFER包数、总共的包数据长度、IP包指针及获得下一个NDIS_BUFFER;如果系统资源低或者甚至耗尽的时候,会产生Bug Check错误;
④取得数据包内容后,根据IP头部协议域判断是否为测量数据包,如果不是测量数据包,直接发送到微端口驱动或通知上层协议驱动;如果是测量数据包,则进行以下操作:
a)调用例程GetTimeStamp例程得到时间戳time_stamp;
b)将时间戳time_stamp插入数据包的用户数据段;
c)重新计算校验和,并更新IP数据包得到新的测量数据包;
d)将新的测量数据包发送到微端口驱动或通知上层协议驱动;
e)调用NdisFreeMemory例程释放pPacketContent指向的数据包。
本发明可应用于IP网络测量应用领域。实施方式描述如下:
1.本发明的实验与验证过程
(1)实验设计
基于WindowsNDIS规范编程实现了如图3所示的时延测量中间层驱动程序,以下称为DelayM-IMDriver。并改造Windows系统的ping程序,把时间戳记录位置从应用程序位置下移到DelayM-IMDriver中,改造的ping程序以下称为IMD-ping。实验比较了其与应用层记录时间戳测量方法,如,ping的性能差异。为避免网络背景流量引起的时延变化对实验结果评估的影响,将两台PC机用1m长度的5类双绞线直连(一台作为测量主机,另一台为目标主机),并关闭两台PC上运行的其它通信类进程。PC机配置为:CPU Pentium(R)Dual-Core 3.2G,2GB内存,Intel-82567LF-Gigabit以太网卡,windows XP SP3操作系统。1m长度双绞线的信号传输时延仅为1ns,可忽略不计。IMD-ping测量RTT值时,两台PC上都安装DelayM-IMDriver驱动程序。这样在测量主机和目标主机可分别得到两组时间戳,即测量主机端的发送/接收时间戳组(ts-send,ts-recv)和目标主机端的接收/回应时间戳组(td-recv,td-send)。准确的RTT值可依据(td-recv-td-send)-(ts-send-ts-recv)计算得到,两台PC间可不进行时钟同步。由于网卡中断模式以及数据包聚集的特性,网卡收到数据后会延迟递交到驱动层,时延值约在25us左右[20]。在操作系统中,延迟过程调用(Deferred Procedure Call,DPC)时延约在30us左右。因此,在中间层驱动接收到网卡递交上来的数据包约有50us左右的时延。
(2)实验结果与评估
实验1:关闭两台PC无关的后台进程,在轻载条件下评估测量精度。分别对64、512和1500字节等3种典型长度数据包进行实验。每次实验分别对IMD-ping和ping的RTT值连续采样1000次,得到两个实验样本。表1为在3种典型数据包长度下IMD-ping和ping的RTT均值及精确度比较。在各种数据包长度下,ping与IMD-ping都有较大的差值。根据标准差分析,ping结果的抖动比IMD-ping大。IMD-ping相对ping在3种典型包长度下测量误差分别下降19.1%、14%和26.7%,且标准差小于10us。故IMD-ping测量精度高于ping。图4为IMD-ping和ping的24小时RTT测量时序(包长1500字节),可观测到IMD-ping的RTT值抖动不大,测量结果稳定。
表1轻载条件下IMD-ping与ping的RTT均值(us)及标准差(us)
实验2:并发测量条件下,测量精度及稳定性评估。在大规模测量环境下,一台测量主机通常要对数十台甚至上百台目标主机进行测量,系统负载较大,进程/线程调度排队引起的时延值大。在这种环境下,类似ping的方法很难准确测量网络时延,测量结果中可能包含几倍甚至上百倍的测量误差。表2为测量主机10条测量线程并发执行情况下,IMD-ping和ping的RTT均值及精确度比较(包长1500字节)。图5为测量结果时序。在这种并发测量条件下,Ping测量结果标准差达到128.36,RTT值抖动大,且存在大的测量位置误差,与IMD-ping的均值差超过500us。这种过大的测量位置误差难以准确地分析网络性能。与ping等传统方法相比,IMD-ping测量结果稳定,基本不受系统负载影响,整体较平稳,标准差约为5us。因此,IMD-ping这种把测量时间戳记录位置从应用程序下移到NDIS中间层驱动的方法,基本消除测量位置误差,性能稳定,可以较为准确地测量网络时延。
表2并发测量条件下IMD-ping与ping的RTT均值(us)及标准差(us)
2.测量实施方式
本方法实施经济简单,过程如下:
(1)在测量的两个端主机分别安装DelayM-IMDriver驱动程序。驱动程序
DelayM-IMDriver完成测量数据包的判断、时间戳记录并写入测量数据包。
在测量的两个端主机分别开启IMD-ping的RTT测量进程。IMD-ping根据测量包中返回的时间戳来计算测量时延值。这种方法把测量时间戳记录位置从应用程序下移到NDIS中间层驱动位置,可基本消除测量位置误差,性能稳定,可较为准确地测量网络时延。
需要说明的是,以上介绍的本发明的实施方案而并非限制。本领域的技术人员应当理解,任何对本发明技术方案的修改或者等同替代都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围内。
Claims (8)
1.一种消除位置误差的网络时延值测量方法,该方法用于端到端的网络时延测量,所述方法包含:
在一次往返测量过程中:
步骤101)源端主机记录其向目的端主机发送数据包的时间戳信息tsend_s;
步骤102)目的端主机记录其收到源端发送的数据包的时间戳信息trecv_d,然后再记录其向发送端回应数据包的时间戳信息tresponse_d;
步骤103)源端收到目的端回应的数据包,并记录其受到该回应数据包的时间戳信息trecv_s;
步骤104)采用如下公式计算端到端的单向和/或双向网络延时值:
路径正向单向时延:FOWD=trecvd-tsend_s;
路径反向单向时延:ROWD=trecv_s-tresponse_d;
路径往返时延:RTT=(trecv_d-tsend_s)+(trecv_s-tresponse_d);
其中,所述步骤101)、102)和103)通过在所述源端和目的端主机的Windows操作系统的微端口驱动和协议驱动间插入NDIS中间层驱动,该驱动层能够记录用于测量网络延时的收/发数据包的时间戳信息。
2.根据权利要求1所述的网络时延测量位置误差消除方法,其特征在于,当用于确定路径正向延时值时上述方法具体包含如下子步骤:
步骤101)当NDIS中间层驱动截获到一个数据封包时,检测是否是测量数据包,如果是测量数据包,进入步骤102)进行位置误差处理;否则直接发往微端口层;
步骤102)对测量数据包进行位置误差处理,源端主机的NDIS中间层驱动把获得的系统时间戳插入到待发送数据包负载中用户数据段的头4个字节,然后重新计算数据包校验和,并将该新的封包发往微端口层;
步骤103)目的端主机的NDIS中间层驱动把获得的系统时间戳减去发送端传来的时间戳插入到数据包负载中用户数据段的头4个字节,并调用例程通知上层协议驱动;
步骤104)目的端测量应用程序从套接字接收缓冲区取回测量数据包,读取头4个字节便得到消除测量位置误差的端到端路径正向单向时延值。
3.根据权利要求1所述的网络时延测量位置误差消除方法,其特征在于,所述收/发数据包的时间戳信息能够利用内核例程返回的操作系统时钟的计时获取,或通过调用内核例程以CPU频率计数获取。
4.根据权利要求1所述的消除位置误差的网络时延测量方法,其特征在于,所述NDIS中间层驱动有两种方式处理源端和目的端数据包的发送:一种是把收到的包描述符直接传递到下层,称为重利用;另一种是根据收到的包描述符重建一个新的包描述符,称为重申请;
其中,所述NDIS中间层驱动获得的网络封包结构是一个单向链表,所述包描述符相当于整个链表的表头指针。
5.根据权利要求2所述的消除位置误差的网络时延测量方法,其特征在于,所述步骤103)进一步包含如下子步骤:
步骤103-1)当目的端主机的物理网卡接收到一个数据包时,触发中断,中断处理程序接管中断后,调用网卡微端口驱动所注册的中断处理例程,微端口驱动把网卡收到的数据拷贝到微端口驱动缓冲区队列;
步骤103-2)微端口驱动程序尽可能等待更多的数据包到达,并推迟一个随机时间片后调用相应内核例程通知NDIS中间层驱动处理到达的数据包;
步骤103-3)NDIS中间层驱动把到达的数据包中的所有数据拷贝到一个连续的内存并进行下个步骤的封包处理;
步骤103-4)NDIS中间层驱动获得目的端接收数据包记录的时间戳信息,并读取源端传来数据包时的时间戳信息,然后将所述两个时间戳信息做差并将差值重新写到待回应的数据包;
步骤103-5)NDIS中间层驱动通知其上层的协议驱动,从套接字接收缓冲区取回待回应的数据包,即获得一个消除测量位置误差的端到端路径正向的单向时延值。
6.一种消除位置误差的网络时延值测量系统,该系统设置于网络两端的源端和目的端主机中,所述系统基于Windows平台,包含:设置于微端口驱动层和协议驱动层之间的NDIS中间层驱动层,及位于应用层的测量探针模块;其中:
NDIS中间层驱动层,用于检测是否是测量数据包并在数据包的用户数据段位置记录用于测量网络延时的收/发数据包的时间戳信息;
测量探针模块,用于依据收到的NDIS中间层驱动层记录的时间戳信息采用如下公式计算路径正向延时值、路径反向延时值或路径双向延时值;
路径正向单向时延:FOWD=trecv_d-tsend_s;
路径反向单向时延:ROWD=trecv_s-tresponse_d;
路径往返时延:RTT=(trecv_d-tsend_s)+(trecv_s-tresponse_d);
其中,trecv_d表示源端存储模块记录的发送时间戳,tsend_s表示目的端的存储模块记录的接收数据包时间戳、tresponse_d表示目的端存储模块记录的其回应包的时间戳,trecv_s表示源端存储模块记录的其收到回应包的时间戳。
7.根据权利要求6所述的消除位置误差的网络时延值测量系统,其特征在于,所述NDIS中间层驱动层还包含:
数据包检测模块,用于当NDIS中间层驱动截获到一个数据封包时,检测是否是测量数据包,如果是测量数据包则进行位置误差处理;否则直接发往微端口层。
封包模块,用于对接收的测量数据包进行位置误差处理,把获得的系统时间戳或者计算得到的延时值插入到数据包负载中用户数据段的字节中,然后重新计算数据包校验和,并将该新的封包发往微端口层或通知上层协议驱动。
8.根据权利要求6所述的消除位置误差的网络时延测量系统,其特征在于,所述NDIS中间层驱动层有两种方式处理源端和目的端数据包的发送:一种是把收到的包描述符直接传递到下层,称为重利用;另一种是根据收到的包描述符重建一个新的包描述符,称为重申请;
其中,所述NDIS中间层驱动层获得的网络封包结构是一个单向链表,所述包描述符为整个链表的表头指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210152326.7A CN103427935B (zh) | 2012-05-16 | 2012-05-16 | 一种消除位置误差的网络时延测量方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210152326.7A CN103427935B (zh) | 2012-05-16 | 2012-05-16 | 一种消除位置误差的网络时延测量方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103427935A true CN103427935A (zh) | 2013-12-04 |
CN103427935B CN103427935B (zh) | 2016-08-03 |
Family
ID=49652166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210152326.7A Expired - Fee Related CN103427935B (zh) | 2012-05-16 | 2012-05-16 | 一种消除位置误差的网络时延测量方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103427935B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104144088A (zh) * | 2014-07-24 | 2014-11-12 | 重庆邮电大学 | 一种提高时延测量精度的网络时延测量方法 |
CN107147544A (zh) * | 2017-05-11 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种测试网络延时的方法及装置 |
CN108156056A (zh) * | 2017-12-28 | 2018-06-12 | 华为技术有限公司 | 网络质量测量方法及其装置 |
CN108337388A (zh) * | 2017-01-19 | 2018-07-27 | 南宁富桂精密工业有限公司 | 网络电话通信方法及路由器 |
CN108880942A (zh) * | 2018-06-29 | 2018-11-23 | 咪咕音乐有限公司 | 一种tcp会话流的异常确定方法、装置及存储介质 |
CN109219803A (zh) * | 2016-05-19 | 2019-01-15 | 慧与发展有限责任合伙企业 | 用于对传感器测量值进行预处理的方法和系统 |
CN111786853A (zh) * | 2020-07-01 | 2020-10-16 | 公安部第三研究所 | 针对安全隔离与信息交换产品实现吞吐量和延时指标测试的系统及其方法 |
CN112532472A (zh) * | 2020-11-09 | 2021-03-19 | 广东电网有限责任公司广州供电局 | 一种相量测量单元上传延时的测试方法 |
CN113422704A (zh) * | 2021-02-05 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 数据测量方法、装置、电子设备及计算机存储介质 |
CN114095398A (zh) * | 2021-10-22 | 2022-02-25 | 深信服科技股份有限公司 | 探测时延的确定方法、装置、电子设备及存储介质 |
CN114826983A (zh) * | 2022-06-08 | 2022-07-29 | 深圳云豹智能有限公司 | Virtio网络设备延时定位方法、处理单元及virtio网络设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933429A (zh) * | 2005-09-12 | 2007-03-21 | 华为技术有限公司 | 数据通信网络中时延特性的测量方法 |
CN101854268A (zh) * | 2009-04-04 | 2010-10-06 | 华为技术有限公司 | Ip网络性能测量、服务质量控制的方法、装置和系统 |
-
2012
- 2012-05-16 CN CN201210152326.7A patent/CN103427935B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933429A (zh) * | 2005-09-12 | 2007-03-21 | 华为技术有限公司 | 数据通信网络中时延特性的测量方法 |
CN101854268A (zh) * | 2009-04-04 | 2010-10-06 | 华为技术有限公司 | Ip网络性能测量、服务质量控制的方法、装置和系统 |
Non-Patent Citations (1)
Title |
---|
江亮亮: "大规模网络流量测量中的关键技术研究与实现", 《万方数据企业知识服务平台》, 21 August 2009 (2009-08-21) * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104144088A (zh) * | 2014-07-24 | 2014-11-12 | 重庆邮电大学 | 一种提高时延测量精度的网络时延测量方法 |
CN109219803A (zh) * | 2016-05-19 | 2019-01-15 | 慧与发展有限责任合伙企业 | 用于对传感器测量值进行预处理的方法和系统 |
CN109219803B (zh) * | 2016-05-19 | 2022-02-18 | 慧与发展有限责任合伙企业 | 数据处理方法、分析服务器和机器可读存储介质 |
CN108337388A (zh) * | 2017-01-19 | 2018-07-27 | 南宁富桂精密工业有限公司 | 网络电话通信方法及路由器 |
CN107147544A (zh) * | 2017-05-11 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种测试网络延时的方法及装置 |
CN108156056B (zh) * | 2017-12-28 | 2021-07-09 | 华为技术有限公司 | 网络质量测量方法及其装置 |
CN108156056A (zh) * | 2017-12-28 | 2018-06-12 | 华为技术有限公司 | 网络质量测量方法及其装置 |
US11606275B2 (en) | 2017-12-28 | 2023-03-14 | Huawei Technologies Co., Ltd. | Network quality measurement method and apparatus |
CN108880942A (zh) * | 2018-06-29 | 2018-11-23 | 咪咕音乐有限公司 | 一种tcp会话流的异常确定方法、装置及存储介质 |
CN111786853A (zh) * | 2020-07-01 | 2020-10-16 | 公安部第三研究所 | 针对安全隔离与信息交换产品实现吞吐量和延时指标测试的系统及其方法 |
CN112532472A (zh) * | 2020-11-09 | 2021-03-19 | 广东电网有限责任公司广州供电局 | 一种相量测量单元上传延时的测试方法 |
CN112532472B (zh) * | 2020-11-09 | 2022-11-04 | 广东电网有限责任公司广州供电局 | 一种相量测量单元上传延时的测试方法 |
CN113422704A (zh) * | 2021-02-05 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 数据测量方法、装置、电子设备及计算机存储介质 |
CN114095398A (zh) * | 2021-10-22 | 2022-02-25 | 深信服科技股份有限公司 | 探测时延的确定方法、装置、电子设备及存储介质 |
CN114826983A (zh) * | 2022-06-08 | 2022-07-29 | 深圳云豹智能有限公司 | Virtio网络设备延时定位方法、处理单元及virtio网络设备 |
CN114826983B (zh) * | 2022-06-08 | 2023-11-17 | 深圳云豹智能有限公司 | Virtio网络设备延时定位方法、处理单元及virtio网络设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103427935B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103427935B (zh) | 一种消除位置误差的网络时延测量方法及系统 | |
CN104144088A (zh) | 一种提高时延测量精度的网络时延测量方法 | |
US10908941B2 (en) | Timestamping data received by monitoring system in NFV | |
US6442141B1 (en) | Network delay and loss simulator | |
Weingärtner et al. | {SliceTime}: A Platform for Scalable and Accurate Network Emulation | |
CN102946616B (zh) | 一种物联网中间件性能测试系统和测试方法 | |
CN102104502A (zh) | 一种基于Linux系统的以太网网络设备性能测试平台 | |
CN106341266B (zh) | 具有主动和被动传输模式的硬件tcp/ip协议栈装置 | |
US20020024973A1 (en) | Hardware time stamping and registration of packetized data method and system | |
CN103117900B (zh) | 一种可配置式工业以太网数据解析系统及解析方法 | |
CN103560928A (zh) | 测试网络设备转发性能的方法及系统 | |
CN104901851A (zh) | 一种检测网络质量的方法和系统 | |
CN112865901A (zh) | 一种基于fpga纳秒时间戳的高速数据包采集系统及方法 | |
WO2023123956A1 (zh) | 一种io全生命周期时延监测方法及相关装置 | |
CN100334846C (zh) | 一种基于通用pc的高精度网络时延测量方法 | |
CN103023720A (zh) | 一种测试广域网接口性能的系统及方法 | |
CN102025556A (zh) | 一种oam包精确时延测量的方法和装置 | |
Sriraman et al. | Deconstructing the tail at scale effect across network protocols | |
CN103647615A (zh) | 报文传输过程中延迟抖动消除方法及装置 | |
Zhou et al. | Hats: high accuracy timestamping system based on netfpga | |
Leira et al. | High-speed optical networks latency measurements in the microsecond timescale with software-based traffic injection | |
CN114095398A (zh) | 探测时延的确定方法、装置、电子设备及存储介质 | |
Huang | Hardware nanosecond‐precision timestamping for line‐rate packet capture | |
Donnelly et al. | Passive calibration of an active measurement system | |
WO2020132834A1 (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 Termination date: 20190516 |
|
CF01 | Termination of patent right due to non-payment of annual fee |