网络性能分析之关键

概述

许多重大的商业网络任务,诸如:流量工程,服务质量测量(QOS),SLA查证都需要具有精确测量网络响应时间,数据流带宽和包的延迟。而所有的这些都依赖于对数据包到达某一端时间的精确测量。

NetScout Infinistream 探针中使用的高性能的硬件板卡,使用专利的硬件技术给每一个数据包加上高度精确的时间戳。可能您会有疑问,为什么需要如此投入开发硬件板卡?一台普通的 PC 服务器和一块普通网卡不是也可以吗?

但很不幸的是,用通用架构的服务器和普通网卡的方式有几个问题。首先,我们必须假定有专门为这条链路设计的网卡可以使用。对于一般的局域网来说,这不是问题。但是对于广域网来说,这些板卡就很难买到了。其次,也是最重要的,普通网卡的设计初衷并不是为网络测量而服务的。

普通网卡很少为高负载网络而设计,具有在超高流量情况下,将所有数据传送到 PC机的能力。它们一般都是为了在中等流量情况下的发送和接收而设计,对于一般的应用而言或许已经足够了。而 Infinistream的设计目的是为了能够让系统在极端的全负载情况下,依然具有对数据的分析能力。 普通网卡同时也不具备精确记录数据包到达的能力。

一般来说,普通网卡不给到达的数据包加上时间戳,因为一般而言这不是一块网卡的紧要任务。为了给数据包加上时间戳,主机不得不使用自身的时钟。通常情况下,当一个数据包达到网卡上,网卡将数据包传送给主机,然后产生一个中断通知驱动程序数据包到了。当主机CPU空闲的时候,系统将会响应中断,允许网卡驱动程序给已经收到的数据包加上时间戳。中断信号产生到中断被开始处理的这段时间被叫做中断响应。中断响应时间一般都比较低,在微秒级,但是依赖于主机系统的硬件和处理类型的不同,响应时间偶尔会变得很高,比如 10微秒。而且就目前的技术而言,也缺少一种方法来知道什么时候发生了此类情况。这会直接导致一个巨大的,潜在的,未知的时间戳精度错误。进一步研究中断的信号机制我们发觉,有些系统为了降低中断对系统性能的影响,他们并不是一个数据包一到网卡就产生中断,而且等待几个数据包一起到后,才产生一个中断。确实使用这种方式中断数量下降了,但是那一批数据包只有一个时间戳。使上层分析系统认为这些数据包是同时到达的。

最后一个问题就是给这些数据包加上时间戳的主机 CPU 本身。 主机CPU时钟由于主板晶振的原因,一般可以产生一个微秒级的时间戳。显然这种级别的时间戳已经无法满足高速链路的环境。千兆以太网最小数据包64字节的到达间隔是0.512 微秒。

我们再来讨论一下使用此类方式造成的精度问题。

目前的PC机都使用一个很便宜的晶振。晶振使用特定方法切割后可以产生一个特定的频率,作为主机系统的时钟。

晶振频率的精度和晶振的制造方法,使用时的温度和电压有非常密切的关系。这些问题不会影响系统本身的使用,一般来说都小于100ppm(parts per million),等同于每天偏移几秒钟。 由于晶振频率的细微不同,和随温度变化的特性,两台普通PC 机哪怕开始的时候进行过时间同步,系统时钟在运行了一阵子后,也会变得不一样。这使得在实际环境中,通过比较时间戳的方式进行测量变得非常困难,而且时钟还有别的一些未知和不确定因素会造成改变。

由于没有能力在高速环境中给数据包打上精确的时间戳,在两个测量点之间通过比较时间戳的方式来测试诸如,包延迟,抖动,数据流带宽的方式是无法完成的。

Infinistream 对于时间戳的解决方案是,构建专用的网络测量板卡,用硬件方式给每一个到达的数据包加上一个精确的时间戳。而板卡上的时钟,可以持续使用外部标准时间源进行同步。

什么是时间?

精确自然时间本身依然是物理学家和哲学家之间讨论的话题;然后就我们自身的感知和经验来说,时间就是用来刻画过去到将来的一个持续衡定的变量。

我们将他分成均匀的片断来进行分析。测量时间的基本单位是秒,由国际标准组织定义。(SI)“秒是铯 133原子(Cs133)基态的两个超精细能级之间跃迁所对应的辐射的 9192631770个周期所持续的时间。秒定义可以以铯原子频率标准器来实现,其稳定度依据各标准器的制造方法、维护环境的不同而不同。”

如此精确的定义不会影响我们的日常生活,许多国家使用UTC 时间作为官方时间的基准。 UTC 由法国的 BIPM 计算。BIPM从来自 50 个实验室的超过 200 个原子钟中搜集数据并且进行平均,其中包括国家标准和科技学院(NIST)。

作为平均的结果,BIPM 产生了两种时间的刻度,一个是国际原子时间(International Atomic Time , TAI),另外一个就是 UTC。这些时间刻度都越来越逼近于SI定义的秒的时间刻度。

UTC运行的频率和TAI一致,但是包括了外加的跳跃时间。跳跃时间每 10年会约增加 8秒钟。 跳跃时间是为了让 UTC 和一个更老的基于地球的自转周期的时间刻度UT1 之间保持±0.9 秒的误差。

什么是GPS?

GPS,全球定位系统是一个由美国国防部制造的基于人造卫星的导航系统。系统基于一组至少24颗在地球轨道上运行的卫星。每个卫星都包括了一个原子钟,并且通过无线电广播时间。小型接收器可以从多颗卫星中接收到信号,并且确定最精确的时间。卫星离接收设备的距离可以通过测量每一颗卫星信号到达接收设备的时间来确定。用三角定位法就可以知道相对于卫星的位置。通过告知在轨道运行中的方位,在地球上的接收装置可以精确定位。


那GPS如何来保证时钟同步呢?为了能够给数据包加上精确的时间戳,我们需要一个既精确又同步的时钟。时钟需要精确运行在一个已知的频率上两个同步后的异地时钟能够在同一时刻产生一个唯一的时间。由于GPS广播由原子钟产生的时间, GP接受器可以被当作一个非常精确的时钟来使用。时间和 UTC 时间的偏移在±100 纳秒之间。所有的Endace DAG网络测量卡都可以使用GPS接受器作为外部时钟源提供时钟同步。

什么是CDMA?

CDMA (Code Division Multiple Access,码分多址)是移动电话服务的一个类型。CDMA 系统要求所有的组件高度同步,以分配传输到不通的时间槽中。为了达到这个目的,每个 CDMA 基站都包括了一个GPS 接收器来告知时间。这个时间将以广播的方式作为基站控制信号的一部分传送到CDMA 手机上。

由于每个 CDMA 接受器都可以从基站信号中获得一个精确的时间, CDMA 接受器可以作为外部同步时钟源替换前面提到的 GPS 接受器。

用 CDMA 替代直接使用GPS的优势是CDMA无线信号是低频和高强度。这使得信号的覆盖面非常广,可以穿透楼宇。而GPS信号需要在一个空旷的地方才能够被清晰接收。如果要安装 GPS设备,将花费更多钱和时间,  需要在屋顶上安装天线,并且通过电缆和计算机连接。CDMA接受器可以在一个嘈杂的机房中使用一个简单的天线接收信号。由于接受器本身不能发送,所以他在网络中是不可见的,也不会有任何的额外费用。

用 CDMA 方案的劣势是,虽然 CDMA 时间是基于GPS 时间,但是CDMA 接受器和基站之间的距离是未知的。这个未知距离会产生一个未知的时延。这意味着使用 CDMA 接受器进行同步的时钟相对于UTC会有一个未知的时间漂移。这个漂移量是一个常量除非在维护操作的时候变动了 CDMA接受器的位置,一方面改变了接受器和基站之间的距离,另外也有可能造成接受器连接了另外一个基站。

什么是NTP?

客户端计算机的时钟可以通过网络时间协议(Network Time Protocol)和服务器或者一个外部时钟源,例如GPS和CDMA接受器进行时钟同步。NTP是一个分级系统,有外部时钟源连接的顶层NTP被称作Stratum 1 服务器。时间经树型结构由Stratum 1逐级传送到客户端。Pc 和 UTC 时钟用 NTP 方式经由局域网同步的精度可以在一毫秒那。如果通过广域网,精度可以在 10 毫秒内。

在NTP 中,客户端给服务器发送一个请求,询问时间。服务器返回当前时间,同时客户端测量此次交易的时间。客户端将交易时间除以 2,加到服务器返回的时间前。这是因为服务器到客户端需要一定的时间。

不幸的是,这种计算方式假定客户端到服务器的延迟是对等的。然后在实际情况上,这种现象很少出现,这就很好解释了为什么 NTP 的效能在延迟非对等的WAN上效果更差。一般来说,客户机会查询超过一台服务器来,通过仔细的筛选并且测量每一台服务器的稳定性来决定使用哪个。

当客户端上的NTP进程对当前时间有一个评估后,他需要通过微调操作系统的时间来匹配。如果差异太大,他有可能会拒绝微调。如果差别仅仅是几秒钟,他会马上校准系统时间。这样的操作会导致系统时间的非延续性。如果时钟和 UTC 时间和接近,NTP进程将会调整系统时钟频率,这样和UTC 时间的差异就小了。这是一个很慢的过程,当 NTP 守护进程启动的时候,它可能会花费数小时的时间才能将操作系统的时间和 UTC 时间校对到一毫秒的精度以内。

在Stratum 1 服务器上,有一个直连的外接时间源,这样系统时间的精度会好一点儿,在100微秒的精度内。在这种情况下,性能依然会被中断响应时间这样的因素影响。系统时钟仍然需要逐步调整,而不能一次性完全校对准确。

Wizard