基于pcie的高精度时间戳获取方法、装置及网卡的制作方法
【技术领域】
[0001]本发明涉及计算机网络测试技术领域,尤其涉及一种基于PCIE的高精度时间戳获取方法、装置及网卡。
【背景技术】
[0002]外围组件高速互联(PeripheralComponent Interconnect Express,缩写为PCIE)是一种新兴的总线和接口标准。该标准的最大优点是数据传输速率高,目前公开的最高传输速率可达到lOGB/s以上,并且将目前的形式来看还具有相当大的发展潜力。基于PCIE的网卡可以为服务器提供高速流量传输通道,但是仅能够保证网络数据的高速传输,并不能实现网络数据在时间方面的精确分析与测量。
[0003]目前,也出现适用于小规模网络数据流在时间方面的分析与测试,但是这些现有技术仅适用于小规模数据流的分析,时间精度不高,并不能适用高速传输网络数据流的精确分析与测量。因此,需要一种基于PCIE的高精度时间戳获取方法,以解决现有技术中存在的上述技术问题。
【发明内容】
[0004]本发明提供一种基于PCIE的高精度时间戳获取方法、装置及网卡,在网络数据包高速上传的过程中,获得高精度时间戳。
[0005]本发明采用的技术方案是:
[0006]一种基于外围组件高速互联PCIE的高精度时间戳获取方法,其包括:报文高速上送步骤:采用零拷贝模式通过PCIE上送网络数据包至用户态程序;加盖时间戳步骤:在媒体独立接口 MII对每个网络数据包加盖时间戳,其中所述MII位于媒体访问控制MAC层和物理层PHY之间。
[0007]优选地,加盖时间戳步骤之前,所述方法还包括:时钟同步步骤:采用IEEE1588时钟同步协议将本地时钟同步于高精度时钟源。
[0008]优选地,时钟同步步骤之前还包括:时钟频率动态调整步骤:根据IEEE1588时钟同步协议计算出本地时钟与高精度时钟源的时间偏差;通过采样多个时间偏差,获取多个时间偏差的偏差平均值;根据所述偏差平均值调整本地时钟周期。
[0009]优选地,根据所述偏差平均值调整本地时钟周期中,按以下公式计算出调整后的本地时钟周期,next_clyce = inc_intg+(inc_num/inc_den),其中,next_clyce 为调整后的本地时钟周期;inc_intg为调整前的本地时钟周期;inc_num为时钟偏差的平均值;inc_den为本地时钟晶振频率。
[0010]优选地,所述网络数据包,包括:网卡驱动程序包。
[0011]另外,本发明还提供了一种基于PCIE的高精度时间戳获取装置,其包括:报文高速上送模块:用于采用零拷贝模式通过PCIE上送网络数据包至用户态程序;加盖时间戳模块:用于在媒体独立接口 MII对每个网络数据包加盖时间戳,其中所述MII位于媒体访问控制MAC层和物理层PHY之间。
[0012]优选地,所述高精度时间戳获取装置还包括时钟同步模块,用于在媒体独立接口MII对每个网络数据包加盖时间戳之前,采用IEEE1588时钟同步协议将本地时钟同步于高精度时钟源。
[0013]优选地,所述时钟同步模块还包括时钟频率动态调整模块,用于:根据IEEE1588时钟同步协议计算出本地时钟与高精度时钟源的时间偏差;通过采样多个时间偏差,获取多个时间偏差的偏差平均值;根据所述偏差平均值调整本地时钟周期。
[0014]优选地,所述时钟频率动态调整模块,还用于,按以下公式计算出调整后的本地时钟周期,next_clyce = inc_intg+(inc_num/inc_den),其中,next_clyce 为调整后的本地时钟周期;inc_intg为调整前的本地时钟周期;inc_num为时钟偏差的平均值;inc_den为本地时钟晶振频率。
[0015]此外,本发明还提供了一种网卡,其中,所述网卡包括如上文所述的高精度时间戳获取装置。
[0016]采用上述技术方案,本发明至少具有下列效果:
[0017]本发明的高精度时间戳获取方法中,以网卡作为服务器的附属设备,通过PCIE将大量的网络数据包高速地上送到服务器,以供服务器对网络数据包的流量进行测试与分析。采用PCIE上送网络数据包的上送速率可以高达10G。另外,该高精度时间戳获取方法可以在媒体访问控制层和物理层芯片之间的媒体独立接口对网络数据流量中的网络数据包逐包加盖时间戳,由此为服务器的数据流量的测量与分析提供高精度时间戳。进一步地,采用IEEE1588时钟同步协议将本地时钟同步于高精度时钟源,确保时间戳的精度可达到纳秒级,为网络数据流量的测量和分析提供精确性保障。
【附图说明】
[0018]图1为本发明的第一实施例的高精度时间戳获取方法的流程图;
[0019]图2为本发明的第二实施例的高精度时间戳获取方法的流程图;
[0020]图3为本发明的第三实施例的高精度时间戳获取装置的方框图;
[0021]图4为本发明的第四实施例的高精度时间戳获取装置的方框图;
[0022]图5为本发明的第五实施例的高精度时间戳获取装置的方框图。
【具体实施方式】
[0023]为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。
[0024]本发明提供的基于PCIE的高精度时间戳获取方法能够在保证网络数据包高速上传的状态下,能够获得高精度时间戳。下面将详细地描述本发明的高精度时间戳获取方法及其各个步骤。
[0025]第一实施例
[0026]如图1所示,本实施例中的高精度时间戳获取方法包括报文高速上送步骤SlO和加盖时间戳步骤S20。其中,报文高速上送步骤SlO:采用零拷贝模式通过PCIE上送网络数据包至用户态程序。采用零拷贝模式是在网络数据包由网卡直接上送至服务器的用户态程序,由于网络数据包没有经过协议栈而直接上送至用户态程序,减少了网络数据包拷贝的次数,上送速率高达10G,提高了网络数据包传输的速度。在大规模网络数据流量的测量及分析中,PCIE为数据的高速传输提供了强有力的保证。
[0027]为了实现网络数据流量在时间方面的测试,需要对网络数据包加盖时间戳,时间戳用来记录数据包的发送和接收时间,高精度时间戳可为网络时延、带宽以及抖动等网络参数的测量以及分析提供坚实的基础。具体地,加盖时间戳步骤S20:在媒体独立接口 MII对每个网络数据包加盖时间戳,其中MII位于媒体访问控制MAC层和物理层PHY之间。硬件检测PTP帧的方法最精确,在该媒体独立接口处加盖时间戳,能够精确加盖时间戳在每个数据包上,加盖时间戳的精度可达到纳秒级,为数据流量的测量和分析提供精确性保障。
[0028]通过以上分析可以看出,本实施例的高精度时间戳获取方法中将PCIE与高精度时间戳结合起来,为大规模网络数据流量的测试及分析提供了有效地解决方案。
[0029]后续网卡的CPU提取上述时间戳后,上送至服务器,由服务器根据该时间戳完成网络数据流量有关时间方面的分析与测试。其中时间戳的提取可以参照现有技术中时间戳的常规提取方法,在此不再赘述。
[0030]优选地,网络数据包,包括:网卡驱动程序包。网卡驱动程序包高速上传的目的是快速安装网卡驱动程序,由此可以网络数据包的高速上传。
[0031]第二实施例
[0032]如图2所示,本实施例中,加盖时间戳步骤S20之前,高精度时间戳获取方法还包括时钟同步步骤S30:采用IE
EE1588时钟同步协议将本地时钟同步于高精度时钟源。高精度时钟源的频率为500MHz,保证了时间戳本身的时间精度。
[0033]采用1588时间同步协议将网卡的本地时钟同步于高精度时钟源,由于本地时钟的晶振频率与高精度时钟源的晶振频率不可避免地会存在误差,故在采用1588时间同步协议的基础上,作为优选的实施例,时钟同步步骤S30之前,还包括时钟频率动态调整步骤,具体地:根据IEEE1588时钟同步协议计算出本地时钟与高精度时钟源的时间偏差;通过采样多个时间偏差,获取多个时间偏差的偏差平均值;根据偏差平均值调整本地时钟周期。由此进一步保证网卡的本地时钟同步与高精度时钟源,从而使得两者之间时间误差在纳秒级。进一步地,根据偏差平均值调整本地时钟周期中,按以下公式计算出调整后的本地时钟周期,next_clyce = inc_intg+(inc_num/inc_den),其中,next_clyce 为调整后的本地时钟周期;inc_intg为调整前的本地时钟周期;inc_num为时钟偏差的平均值;inc_den为本地时钟晶振频率。后续通过设置相应的寄存器调整本地时钟的晶振周期。
[0034]第三实施例
[0035]如图3所示,本实施例是对应第一实施例的装置类权项。该实施例中提供的基于PCIE的高精度时间戳获取装置包括报文高速上送模块和加盖时间戳模块。其中报文高速上送模块:用于采用零拷贝模式通过PCIE上送网络数据包至用户态程序。加盖时间戳模块:用于在媒体独立接口 MII对每个网络数据包加盖时间戳,其中MII位于媒体访问控制MAC层和物理层PHY之间。
[0036]第四实施例
[0037]如图4所示,相比于第三实施例,本实施例的高精度时间戳获取装置还包括时钟同步模块,用于在媒体独立接口 MII对每个网络数据包加盖时间戳之前,采用IEEE1588时钟同步协议将本地时钟同步于高精度时钟源。报文高速上传模块启动进入工作状态后,发送启动信号至时钟同步模块,时钟同步模块启动后使得网卡的本地时钟同步与高精度时钟源。高精度时钟源的精度应该在纳秒级,并且时钟晶振具有较高的稳定性,以保证本地时钟的晶振频率的稳定性。
[0038]第五实施例
[0039]如图5所示,本实施例的高精度时间戳获取装置还包括时钟频率动态调整模块。时钟频率动态调整模块用于:在时钟同步模块采用IEEE1588时钟同步协议将本地时钟同步于高精度时钟源之前,根据IEEE1588时钟同步协议计算出本地时钟与高精度时钟源的时间偏差;通过采样多个时间偏差,获取多个时间偏差的偏差平均值;根据偏差平均值调整本地时钟周期。
[0040]进一步地,时钟频率动态调整模块,还用于,按以下公式计算出调整后的本地时钟周期,next_clyce = inc_intg+(inc_num/inc_den),其中,next_clyce 为调整后的本地时钟周期;inc_intg为调整前的本地时钟周期;inc_num为时钟偏差的平均值;inc_den为本地时钟晶振频率。
[0041]第六实施例
[0042]本实施例中提供了一种网卡,这种网卡包括如上文所述的高精度时间戳获取装置,该高精度时间戳获取装置的详细技术内容可以参见第三实施例、第四实施例以及第五实施例中的描述。该网卡作为流量分析服务器的专用附属设备,例如以PCIE 8X为硬件传输通道,具有40G理论带宽,足以满足大规模数据流量的测试及分析使用。
[0043]通过【具体实施方式】的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。
【主权项】
1.一种基于外围组件高速互联PCIE的高精度时间戳获取方法,其特征在于,包括: 报文高速上送步骤:采用零拷贝模式通过PCIE上送网络数据包至用户态程序; 加盖时间戳步骤:在媒体独立接口 MII对每个网络数据包加盖时间戳,其中所述MII位于媒体访问控制MAC层和物理层PHY之间。2.根据权利要求1所述的高精度时间戳获取方法,其特征在于,加盖时间戳步骤之前,所述方法还包括: 时钟同步步骤:采用IEEE1588时钟同步协议将本地时钟同步于高精度时钟源。3.根据权利要求2所述的高精度时间戳获取方法,其特征在于,时钟同步步骤之前,所述方法还包括:时钟频率动态调整步骤: 根据IEEE1588时钟同步协议计算出本地时钟与高精度时钟源的时间偏差; 通过采样多个时间偏差,获取多个时间偏差的偏差平均值; 根据所述偏差平均值调整本地时钟周期。4.根据权利要求3所述的高精度时间戳获取方法,其特征在于,根据所述偏差平均值调整本地时钟周期中,按以下公式计算出调整后的本地时钟周期, next_clyce = inc_intg+ (inc_num/inc_den),其中,next_clyce 为调整后的本地时钟周期;inc_intg为调整前的本地时钟周期;inc_num为时钟偏差的平均值;inc_den为本地时钟晶振频率。5.根据权利要求1至4中任一项所述的高精度时间戳获取方法,其特征在于,所述网络数据包,包括:网卡驱动程序包。6.一种基于PCIE的高精度时间戳获取装置,其特征在于,包括: 报文高速上送模块:用于采用零拷贝模式通过PCIE上送网络数据包至用户态程序; 加盖时间戳模块:用于在媒体独立接口 MII对每个网络数据包加盖时间戳,其中所述MII位于媒体访问控制MAC层和物理层PHY之间。7.根据权利要求6所述的高精度时间戳获取装置,其特征在于,所述高精度时间戳获取装置还包括时钟同步模块,用于在媒体独立接口 MII对每个网络数据包加盖时间戳之前,采用IEEE1588时钟同步协议将本地时钟同步于高精度时钟源。8.根据权利要求7所述的高精度时间戳获取装置,其特征在于,所述高精度时间戳获取装置还包括时钟频率动态调整模块,用于在所述时钟同步模块采用IEEE1588时钟同步协议将本地时钟同步于高精度时钟源之前, 根据IEEE1588时钟同步协议计算出本地时钟与高精度时钟源的时间偏差; 通过采样多个时间偏差,获取多个时间偏差的偏差平均值; 根据所述偏差平均值调整本地时钟周期。9.根据权利要求8所述的高精度时间戳获取装置,其特征在于,所述时钟频率动态调整模块,还用于按以下公式计算出调整后的本地时钟周期, next_clyce = inc_intg+ (inc_num/inc_den),其中,next_clyce 为调整后的本地时钟周期;inc_intg为调整前的本地时钟周期;inc_num为时钟偏差的平均值;inc_den为本地时钟晶振频率。10.一种网卡,其特征在于,所述网卡包括如权利要求6至9中任一项所述的高精度时间戳获取装置。
【专利摘要】本发明提出了一种基于外围组件高速互联PCIE的高精度时间戳获取方法、装置及网卡。所述方法包括:报文高速上送步骤:采用零拷贝模式通过PCIE上送网络数据包至用户态程序;加盖时间戳步骤:在媒体独立接口MII对每个网络数据包加盖时间戳,其中所述MII位于媒体访问控制MAC层和物理层PHY之间。在网络数据包高速上传的过程中,获得高精度时间戳。
【IPC分类】H04L12/26
【公开号】CN104901844
【申请号】CN201510240376
【发明人】邹昕, 周立, 张家琦, 金暐, 黄文廷, 李应博
【申请人】国家计算机网络与信息安全管理中心
【公开日】2015年9月9日
【申请日】2015年5月13日