通过部署镜像的方式来捕获数据包、进行数据分析是网络流量分析的关键环节。我们已经为大家推荐过三种镜像方法,以及如何高性能的捕获数据包。接下来,我们一起探讨数据包捕获分析中的重要一步——统一数据包的时间戳。
在讲时间戳之前,我们先来聊聊时间的概念:
01
时间
时间是一个刻画过去到将来持续恒定的变量,是物质运动、变化的持续性、顺序性的表现。我们都知道时间的基本单位是秒,关于秒的精确定义是:未受干扰的铯-133原子基态的两个超精细能级之间跃迁所对应辐射的9亿多个周期所持续的时间。
接下来我们来看什么是时间戳:
02
时间戳
数据包分析经常需要精确测量网络延时或者计算业务处理耗时,这都需要我们在数据包中查看精确的时间,如果数据量非常大,需要有明确区分的时间颗粒度,也就是时间戳。
千兆网络中64字节的最小数据包到达时间间隔是0.512微秒也就是512纳秒。由此可见,在千兆、万兆或者更高速的网络环境中,或者在一些极端场景下,比如极速内存交易、数据库中测绘语句分析等,因为数据量非常大,微秒级的时间戳已经无法满足精确测量延迟耗时的需求。
(如上图所示,微秒级的时间戳上看,有大量数据包时间是一样的,无法精确计算数据包的延时。)
很多时候存在这样的情况:两个业务系统之间进行访问,以TCP为例,经过几层封装,通过进程寻址和网络路由到达对方,这期间数据包在网络传输中是没有时间标记的。
正是由于这种情况,我们需要在捕获数据包时标记时间戳,并保证时间戳的统一。
03
如何保证时间统一
通常给数据包标记时间戳的流程如下:数据包捕获程序驱动网卡,当数据包到达网卡,进入数据包捕获处理流程时会打上时间戳,而时间戳精度是和数据包捕获方式有关。
两种数据包捕获方式时间戳精度分析
Libpcap方式通过内核协议栈处理数据包,需要通过内核调用系统时间,开销相对较大,因此Libpcap时间戳只有微秒级;
DPDK方式绕过了内核协议栈,从用户态直接处理数据包,性能非常高,天旦NPM网络性能管理采用的就是DPDK处理方式,时间戳的精度可以达到纳秒级。
如果对多台数据包捕获设备进行统一管理分析,他们之间的时间同步非常重要。
分布式部署下的各数据包捕获设备时间同步
目前最常用的是NTP同步,如果是局域网传输,时间精度是毫秒级。我们通常会提到两个时间概念,一个是相对准确时间(即为数据包打时间戳的时间),另一个是绝对准确时间(同世界标准时间UTC相对的或与NTP服务器时间相对的)。
总结一下,在捕获数据包标记统一的时间戳时需要注意以下四个问题:
04
协助网络安全预警
统一数据源的时间戳,可以帮助运维技术人员检查网络延迟、调查某种方式影响网络性能、了解原始流量、TCP流吞吐量和抖动等计算性能指标。天旦NPM网络性能管理系统就做到了根据存储策略和设备存储空间而定来提取原始数据包,支持在私有云/传统环境下全量、高性能地采集,并能及时地为数据包标记时间戳。
如今,大多数公司的应用设备都对合规性、入侵检测和网络攻击预防提出了更高要求。在开始捕获数据包时,需要捕获数据包的确切时间,时间戳精度要求在纳秒级。天旦NPM采用了DPDK的数据包捕获方式,时间戳的精度就在纳秒级以上,为网络安全预警提供了更多可能性。