基于时钟计数和系统时间戳映射关系的网络收包计时方法与流程

未命名 08-25 阅读:105 评论:0


1.本申请涉及计算机网络技术领域,尤其是高带宽网络的实时流量分析。


背景技术:

2.随着计算机网络技术的发展,万物互联成为物联网、大数据和人工智能等新兴应用的基础。网络硬件性能越来越高,网络流量越来越大。网络的开放性、互连性等特征,也使网络易受黑客、恶意软件的攻击和入侵,构成网络安全威胁。
3.全流量实时网络分析通过对网络信息流的采集并分析,帮助网络管理者及时获得网络流量的特征信息,有助于进行网络容量规划、网络性能监控、网络行为分析以及网络攻击溯源,为网络的稳定、安全、高效运行提供技术保障。
4.全流量网络实时分析提供完整并相互关联的数据包分析,因此需要精确、实时地处理每个网络流和数据包,尤其是同一条流所包含的数据包,其中每个数据包的时间戳必须精准,否则无法保障分析的精确性。但是对于万兆级网络流量的实时分析来说,每个数据包的接收和处理时间必须要足够短,否则会造成网络丢包或堵塞。因此数据包分析需要尽可能避免耗时操作,例如通过浮点运算获取数据包的时间戳。如果每个数据包的接收处理时间能节省几个微秒甚至几十个纳秒,那么对于万兆级网络流量分析的性能提升也是十分可观的,有助于以最小的计算资源实现无丢包的实时而精准的数据包分析。


技术实现要素:

5.本申请提供了一种通过定时维护cputsc计数和系统时间戳的映射关系,快速获得网络收包时间的简易方法。
6.具体本申请是通过如下技术方案实现的:l选用支持tsc计数的cpu,例如x86或arm处理器。
7.l设置cpu工作频率为固定频率,应用程序获取cpu工作频率值。
8.l应用程序定时维护当前时间前后若干秒内的系统时间戳整秒及其对应时间点的cputsc计数值的映射表。(注:用户可以根据实际工作环境自定义若干秒的数值)l网卡驱动收包时读取并存储即时的cputsc计数值。
9.l实时包处理模块计算数据包接收时间时,使用收包时读取的tsc计数值从维护好的映射表中依次比对,得到不大于且最接近计数值的映射表项,映射表项中的时间戳数值即为所求数据包的时间戳。整个过程无需执行耗时的浮点运算指令。
附图说明
10.图1是定时维护最近系统时间戳与tsc计数值之间映射关系的流程图;图2是定时操作完成后,队列的数据示例图;图3是搜索系统时间戳与tsc计数映射表,并找到当前tsc计数值最匹配的系统时间戳的流程图;
具体实施方式
11.本申请涉及的技术和术语:ltsc,timestampcounter,cpu维护的自启动以来的时钟周期计数。
12.l系统时间戳(例如unixtimestamp),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。其中unix系统时间戳不仅被使用在unix系统、也在许多其他操作系统中被广泛采用。
13.l包(packet)是tcp/ip协议通信传输中的数据单位,一般也称"数据包"。
14.下面以unix系统为示例,详细说明如何定时维护unix时间戳与tsc计数值之间的映射关系。
15.参见图1,描述操作的流程图s101、获取当前时间戳和tsc计数值:通过系统调用或api获得当前unix时间戳和cputsc计数值。
16.s102、时间戳和tsc计数值对齐秒数:s101读取的时间戳不是整数秒的,是带有小数点的值,可以通过去掉小数得到整秒数值。对应同时读取的tsc数值,可以减去cpu频率乘以时间戳小数点的乘积,得到整秒对应的tsc数值。
17.s103、设置队列各项的值:空队列时,队列中间的项存储s102中得到的时间戳和tsc数值。然后前后的项,分别依次存储时间戳加和减一秒后的值,对应存储tsc值加和减cpu工作频率后得到的值。循环把队列填满。由于面向实时应用,维护的队列时间范围在当前时间前后若干秒(比如3秒)即可。
18.s104、去除队列首项,追加的项设置最新值:队列非空时,由于是定时操作,可以老化去掉最早时间的一项,并在队列末尾加上最新时间的一项。更新项的tsc值,基于s102中重新计算得到的值,不使用前面已生成的tsc加上cpu工作频率来得到,避免长时间开机后cpu工作频率不稳定引起的误差。队列操作可以使用循环队列数据结构来优化性能。
19.参见图2,描述定时操作完成后,队列项的数据示例可以加入指针变量指向队列中当前时间戳的项。
20.搜索unix时间戳与tsc计数映射表找到现在tsc计数值最匹配的unix时间戳当带有tsc数值的数据包需要确定具体时间时,使用本操作。
21.本操作示例可以使用二分搜索法,但不是必须,使用循环依次搜索也可以,性能差别可忽略。
22.参见图3,描述操作示例流程图s301、比较队列当前项与搜索tsc值大小:从维护好的时间戳与tsc数值的映射表中读取最近一次更新项的tsc数值,同当前待查询的tsc数值进行比较。
23.s302、顺着队列向前搜索:如果待查询数值小于当前项的tsc数值,则顺着队列向前搜索,直至找到搜索值大于等于队列项存储的tsc值,则该队列项存储的时间戳即为期望的时间戳。
24.s303、顺着队列向后搜索:如果待查询数值大于当前项的tsc数值,则顺着队列向后搜索,直至找到搜索值小于队列项存储的tsc值,则该队列项的前一项存储的时间戳即为期望的时间戳。


技术特征:
1. 基于时钟计数和系统时间戳映射关系的网络收包计时方法,其特征在于,包括: 应用于收取高流量网络报文并进行深度包解析场景;定时维护当前时间前后若干秒内的系统时间戳整秒数及其对应的cpu tsc计数值的映射表;收取网络数据包时读取即时cpu tsc计数值;解析数据包需要确定数据包到达时间戳时,通过对维护好的映射表进行查表操作来获取数据包tsc数值对应的时间戳信息,避免使用浮点指令来提高操作性能。

技术总结
本申请提供了一种基于时钟计数和系统时间戳映射关系的网络收包计时方法。该方法包括:先设置CPU运行在固定频率,并定时维护当前时间前后若干秒范围内系统时间戳整秒对应的TSC基准计数值。查询TSC计数值对应时间戳时,数值依次同维护好的TSC基准计数值进行比对,得到不大于且最接近查询计数值的基准计数值,然后读取该基准计数值对应的时间戳秒数,即得到TSC计数值对应的时间戳秒数。本申请提供的计算方法可以应用到旁路或者串行部署的网络流量分析设备中,也可以应用到网络报文分析软件中,以及应用到多采集点的网络故障分析系统中。中。中。


技术研发人员:韩韶华 陈志明
受保护的技术使用者:无锡畅云网络有限公司
技术研发日:2022.02.11
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐