组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com 译者:黎文伟(liww liww001@263.net) 译文发布时间:2001-12-28 版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须 保留本文档的翻译及版权信息。 Network Working Group V. Paxson Request for Comments: 2330 Lawrence Berkeley National Lab Category: Informational G. Almes Advanced Network & Services J. Mahdavi M. Mathis Pittsburgh Supercomputer Center May 1998 IP性能度量参数的框架 (RFC2330——Framework for IP Performance Metrics) 目录 1. 备忘录状态 1 2. 版权通告 1 3. 介绍 1 4. IP 性能度量参数的准则 2 5. 路径和云的术语 3 6. 基本概念 3 6.1.度量参数 3 6.2.测量方法学 4 6.3.测量,不确定性,错误 5 7.度量参数和分析框架 5 8.由经验明确说明的度量参数 7 9. 合成的两种形式 7 9.1.度量参数的空间合成 7 9.2.正式模型和经验度量参数的时间合成 8 10. 与时间有关的问题 9 10.1.时钟问题 9 10.2."线时(Wire Time)”的概念 11 11. 个体,样本,与统计 12 11.1.收集样本的方法 13 11.2自身一致性 15 11.3.定义统计分布 16 11.4.拟合良度(Goodness-of-Fit)的测试 17 12. 消除随机的度量参数 18 13. P型分组(PACKETS OF TYPE P) 18 14. 互联网地址与主机 19 15. 标准构成的分组 19 16. 致谢 20 17. 安全考虑 20 18. 附录 20 19. 参考书目 24 20. 作者地址 25 21. 版权声明 26 1. 备忘录状态 本备忘录给互联网社会提供信息。它没有明确任何种类的互联网标准。不限制对本备忘 录的分发和散布。 2. 版权通告 Copyright ? The Internet Society (1998). All Rights Reserved. 3. 介绍 本备忘录的目的是给由互联网工程任务组(IETF)的IP性能度量参数工作组努力开 发的特定度量参数定义一个通用的框架,这项工作由操作领域的基准测试方法学工作组 (BMWG)开始做的,现在由传输领域的IP性能度量参数工作组接手。 我们从展示对我们所采取的度量参数定的几个准则开始。设计这些准则是为了提升 IPPM的成就,这个成就将使互联网用户和互联网服务提供者对通过互联网的端到端路 径和包含这些路径一部分的特定的“IP云(IP clouds)”的性能及可靠性获得一个最大化 的普遍、准确的理解。 然后,我们定义了几个互联网的词汇,这些词汇使我们能清楚的讲叙互联网组件: 如路由器、路径(paths)、和云(clouds)。 我们还定义了“度量参数(metrics)”和“测试方法学”的基本概念,以讲清楚测试 时的问题。给出这些概念后,我们继续讨论测量不确定性、错误、开发一个解决方案、 某些精微的观念与被互联网工程学科许多方面所公认的分析框架的关系等重要的问题。 然后,我们介绍依据经验定义的度量参数的概念,并以对度量参数能怎样稳定的一般讨 论作为这部分的结束。 本文的其它部分涉及与定义合理的度量参数和方法学相关的多种问题:怎样处理不 完善的时钟;与“主机时间(host time)”截然不同的“线时(wire time)的概念;怎样 将个体的度量集聚集为样本且从这些样本中的到合理的统计表;为什么推荐要避免用概 率论性的术语(如一个分组被丢弃的概率)来考虑互联网的属性,因为这些术语常对网 络的行为包含了含蓄的假定;根据普通类型的分组来定义度量参数的有效性;倾向与采 用IP地址而不是DNS主机名的好处;和“标准构成”分组的概念。附录讨论了用于验 证一组值是否符合一个给定的统计分布的Anderson-Darling测试算法,还给出了实现这 一算法的C代码。 在本备忘录的一些部分,我们将会用大括号来表明注释文字{注释:……}我们强调 注释就只是注释,而不是这个框架文档自身的一部分,也不是对特定度量参数的建议。 在一些场合,注释会讨论测量标准可能预想到的一些属性,但读者应该假定任何这样的 讨论目的只是使这个框架文档中的要点清楚明白地显示出来,而没有建议任何明确的度 量参数。 4. IP 性能度量参数的准则 IPPM努力的整个目标是达到一个让互联网传输服务的用户和提供者对他们所使用/ 提供的互联网组件“云”的性能和可靠性获得一个准确的共同的理解的形势。 为达到这个目的,必须为穿过互联网的路径开发性能和可靠性的度量参数。在几次 IETF的会议中为这些度量参数明确了制定准则: 度量参数必须具体,定义明确。 一个度量参数的测量方法应该有可重复性:如果在同样的条件下使用测量方法多次,相 同的测量应该得到相同的测量结果。 度量参数必须对采用相同的技术实现的IP云不表现出偏见(bias)。 度量参数必须对采用不同的技术实现的IP云能够明白且清楚的表现出偏见。 度量参数必须对用户和服务提供者理解他们所经验或提供的性能有用。 度量参数必须避免引起人为的性能目标。 5. 路径和云的术语 下面列出了定义的在开发路径度量参数中需要有准确性的术语。我们从“主机 (host)”,“路由器(router)”,和“链路(link)”等低级的概念开始,然后定义“路径(path)”, “IP云(IP cloud)”,和允许我们将一条路径分成相关的块的“交换链路(exchange)”等 概念。 主机:能使用互联网协议来通信的计算机;包括“路由器”。 链路:在两个(或多个)主机之间的单个的链路层连接;包括租用线路,以太网, 帧中继云,等。 路由器:在主机之间通过转发IP分组来便利网络层通信的主机。 路径:有< h0, l1, h1, ..., ln, hn >形式的序列,这里n >=0,每个hi是一个主机,每个 li是在hi-1和hi之间的一条链路, h1...hn-1的每一个都是一个路由器。一个对被 命名为一“跳(hop)”。在一个适当的操作配置环境中,在路径中的链路和路由器便利了 从h0 到 hn分组的网络层通信。注意路径是一个单向的概念。 子路径 给定一条路径,子路径是给定路径的任何本身也是一条路径的子序列。(因此,子路 径的开始和结束元素是主机。) 云:一个顶点是路由器且边是连接路由器对的链路的无向图(可能有循环)。形式上, 以太网,帧中继云,和其它连接多于两个路由器而被模拟为图边的完全连接网格 (fully-connected meshes)的链路。注意连接到云意思是通过一条链路连接到云的一个路 由器,这条链路本身不是云的一部分。 交换链路(exchange):链路的一种特殊情况,交换链路直接地连接一个主机到云和 /或一个云到另一个云。 云子路径:一给定路径的子路径,它的所有主机是一给定云的路由器。 分类路径:有< h0, e1, C1, ..., en, hn >形式的序列,这里n >= 0,h0和 hn是主机, 每个e1 ... en是一条交换链路,每个C1 ... Cn-1是一条云子路径。 6. 基本概念 6.1.度量参数 在实际运行的互联网中,有几个我们想知道其值的与互联网性能和可靠性相关的数量。 当这样一个数量被仔细的明确时,我们给这个数量定义了一个度量参数。我们预计对于每个 度量参数(或每个紧密相关的度量参数组)都会有单独的RFCs。 在有些场合,可能没有明显的方法来有效地测量度量参数;这是允许的,甚至我们认为 有时很有用。然而,要求度量参数规范说明必须尽可能地说清楚规定的是什么数量。因此, 测量实践的困难有时可以接受,但是不允许意义上的含糊不清。 每个度量参数都根据测量的标准单位来定义。使用国际公制系统,且注意一下几点: 当一个单位是简单的以米(对距离/长度)或秒(对时间)来表达时,基于合适的单位的 千进制的适当的单位是可接受的。因此,允许距离用千米表达,时间用毫秒或微秒来表达, 但不允许用厘米。(因为这个单位不是千进制的。) 当一个单位是用单位的组合来表达时,基于合适的单位的千进制的适当的单位是可接受 的,但是所有的千进制单位必须是在前面的。因此,允许用千米每秒(km/s),但不允许米每 毫秒。 信息的单位是位。 在位或包含位的组合单位中用到千进制时,这些千进制使用其在公制系统中的含义(即 是指十进制的1000),而不是在计算机存储中惯用的含义(即十进制的1024)。在任何定义而 使用的单位包含了位的RFC中,都将遵循这个约定并重复这点以确保澄清用户的观念。 当给出时间时,要应用UTC(世界时间代码)来表达。 注意这些点是用于度量参数的规范中而不是,例如,用于分组的格式,分组格式或许会 优先采用八位组或以八位组作为位的补充。 最后,我们提醒一些度量参数也许是纯粹根据其它的度量参数来定义的;这种度量参数 被称为“生成度量参数”。 6.2.测量方法学 对于一给定的定义明确的度量参数集合,可能存在许多截然不同的测量方法。一个 局部的列表包括: 采用注入测试流量的方法来直接测量一个性能度量参数。例如:对给定时间,给定路由, 给定长度的IP分组的往返延迟的测量。 从低级别层的测量中来预测一个度量参数。如:给出传播延迟和延一路径的每一步的带 宽的准确测量,预测给定长度的IP分组在路径上的全部延迟。 从一个更聚合的测量中估计其组成之一的度量参数。如:给出一给定一跳路径对不同长 度IP分组延迟的准确测量,估计这个一跳路径上的链路的传播延迟。 从一组相关的其它时间的度量值来估计在某时的测量值。如:给出过去时间的流量容量 的准确测量和过去时间及现在准确测量的延迟,以及给定流量动态的模型,估计在当前时间 将看到的流量容量。 这个列表绝不是毫无遗漏的,它的目的是指出测量技术多样性。 当一个度量参数明确后,一个给定的测量方法必须提出并讨论。然而,这个测量方法并 不是规范说明中的正式部分。 一个度量参数的测量方法应该有可重复性:如果在相同的条件下多次使用该测量方法, 得到的结果应当是一致的。 从前一段提到的“相同条件”后退一点点,我们可以用更准确的词——“连贯性”来描 叙给定测量方法的属性:一个度量参数的测量方法显示出连贯性,如果条件的变化很小,得 到的测量结果的变化也很小。稍微精密一点说,对每一个正的ε,存在一个正的δ,因此如果 两组条件在彼此的δ之内,那么测量结果将在彼此的ε之内。在这里,这应被视为是关于一 种健壮性的启发式的直觉而不是精确的观念。 至少有一种测量方法显示出连贯性的度量参数就说它自身有连贯性。 注意,有些度量参数,如沿路径的跳数,其值是整数所以不能完全显示出上述意义的连 贯性。 此外要注意,实践中,想知道(或能数量化)与特定时间测量相关的条件可能是不实际 的。例如:因为高速广域网中给定路由器的即时负载(被服务的分组)在相对简短的时期内 能相差很大地变化且对一个外部的观察者来说确定其数量会非常困难,特定度量参数的不同 的统计量可能更有可重复性,或者较好的显示连贯性。这时,当度量参数明确说明了时那些 特定的统计量也应该明确说明。 最后,有些测量行为不修改,或只是轻微地修改测量方法试图测量的性能参数的值;在 这个意义下,这些方法可能是“保守”的。{注释:例如,在适度负载的高速广域网内,使用 几个小的“ping”分组来测量延时的测量方法似乎不会影响(影响很大)被其他人观测到的 网络的延迟属性。相应的,使用大的流量来测量流量容量的方法似乎会失败。} 6.3.测量,不确定性,错误 即使是给表现最为明显的度量参数使用的最好的测量方法也会产生错误。然而,那 些开发出这些测量方法的人应该努力争取: 使他们的不确定性/错误最小, 理解并证明不确定性/错误的来源,还要 确定不确定性/错误的数量。 例如,在开发测量延迟的方法是,理解你的系统时钟的任何错误是怎样将错误引入 你的延迟测量中来的,并尽你所能的将这种影响数值化。在一些情况下,这会导致一个 必要条件:如果系统时钟要用于做某种测量,它的质量至少要高于某个标准。 作为第二个例子,考虑计算机在做测量时由于测量的额外开销引起的计时错误,与 互联网被测组件的延迟相反。前者是一个测量错误,而后者反映了互联网的度量参数。 注意,一种有助于避免这种额外开销的技术是使用分组过滤器/嗅探器,在一台分离的准 确地记录分组和时间戳的计算机上运行。(见下面“线时”的讨论。)然后记录的结果可 用于分析以评价测试流量,使测量主机的延迟影响最小,或者至少使这些延迟能得到说 明。我们注意到,即使过滤器/嗅探器在同一台机器上运行,这种技术也证明是有益的, 因为这种测量通常提供的是“内核级”时间戳,而不是精确度差点的“应用级”时间戳。 最后,我们注意到原始度量参数(derived metrics ,如上定义)或有时间或空间合 成的度量参数(定义如下)为测量的不确定性的分析提供了特定的场合。即不确定性怎 样因为原始的或合成的参数而传播(概念上的)。 7.度量参数和分析框架 在互联网从二十世纪六十年代早期的分组交换研究中发展时,互联网工程界开发了一个 概念的普遍的分析框架。这个分析框架,或A-frame,为协议的设计者和实现者、与测量有 关的人、用仿真和分析工具研究计算机网络性能的人所用,对我们的工作有极大的好处。这 里一个主要的目标是产生在分析和实践的设置里都一致的网络特征,因为这会使非经验式的 网络研究能更好的与实际网络行为一致,并更好的用来促进我们对实际网络行为的理解这两 个机会最大化。 因此,无论何时,只要可能我们就应发展和借用(leverage off)A-frame。这样,无论何 时只要一个被明确说明的度量参数我们理解是与A-frame内的概念紧密相关的,我们就要试 着用A-frame的术语来明确说明这个度量参数。在这样的规范里,我们将通过恰当的定义度 量参数所需的概念来发展A-frame,然后通过根据这些概念定义度量参数来借用A-frame。 这样的参数将被称为“分析确定度量参数(analytically specified metric)”,或者,更简单 一点,分析度量参数(analytical metric)。 {注释:这样的分析度量参数的例子有: 链路传播时间: 以秒计的,一个位从一个互联网主机的输出端口通过单一的链路传输到另一互联网主机 所需的时间。 分组长k时的链路带宽: .以位每秒(bps)计的,只计数分组长k字节的IP分组时的容量。 路由:如第五节定义的,给定时间从A到B的路径。 路由跳数:路由路径的“n”值。} 注意,我们并没有给出一个什么A-frame概念会在规范里显现的优先的表格,但是我们 鼓励他们的使用并要求仔细地明确说明他们;以至在我们的度量参数集开发时明确说明的 A-frame概念集技术上也会彼此一致,也与在一般互联网界对这些概念的普遍理解一致。 这些A-frame概念将试着以这样一种方法从实际互联网组件中抽象出来: 组件的基本功能保留, 组件与我们想创建的度量参数有关的属性保留, 这些组件属性的子集被潜在地定义为分析度量参数,且 实际互联网组件与我们想创建的度量参数不相关的那些属性被丢弃。 例如,当在分组转发的背景下考虑路由器时,我们可以把路由器抽象成这样一个组件模 型:它从输入链路接受分组,将它们在长度有限的先进先出(FIFO)的分组队列中排队,当 分组队列满了是采用尾部丢弃,将分组转发到输出链路。输入和输出链路的传输速度(位/ 秒),路由器的延迟(秒),和分组队列的最大长度(位)是相关的分析度量参数。 在某些情况里,这样的涉及路由器的分析度量参数会与互联网路径性能的特定度量参数 非常紧密地相关。例如,一个显而易见的包括路由器延迟(L),分组长度(P,以位计),和 输出链路的传输速度(B)的公式(L + P/B)可能与因为沿路径插入特定路由器引起的分组延 迟的增长紧密接近。 然而,我们强调,适当的定义恰当的A-frame概念及它们的分析度量参数要以不太明显 的方式支持建立更一般的参数的努力。 {注释:例如,当考虑路径的流量容量时,能够将沿着路径的路由器转化为上述的分组转 发器是有实际价值的。估计路径流量容量的技术可能断然地以不显然的方式将最大分组队列 长度做为一个参数。例如,随着最大分组队列长度增长,尽管输入链路的流量有起伏,路由 器持续地转发流量至输出链路的能力也会增加。然而,估计这个增加量还是一个在研究的问 题。} 注意,在我们明确说明A-frame概念和分析度量参数时,我们将不可避免的作出简化的 假定。这些概念的关键任务是抽象出互联网组件与给定度量参数相关的属性。为避免作出使 模型和度量努力偏向某个设计的假定,需要判断。 {注释:例如,路由器可能不使用尾部丢弃(tail-drop),即使对模型分析来说尾部丢弃可 能更容易。} 最后,注意A-frame不同的元素可较好地作出不同的简化假设。例如,促进路径延迟定 义而用的路由器抽象可能将路由器的分组队列看成一个简单的先进先出队列,但是促进资源 可预留分组(RSVP-enabled packet)处理定义而用的路由器抽象可能将路由器的分组队列看 成一个相反的假定——支持跃进延迟(supporting bounded delay)。这并不是说我们同时作了 相矛盾的假定,而是出于不同的目的,我们工作的两个不同部分可以两种有分歧的方式来改 进更简单的基本概念。 {注释:用更数学化的话说,A-frame 作为一个整体不需要一致,但用于定义特定度量参 数的A-frame 特定元素集合必须一致。} 8.由经验明确说明的度量参数 通常因为A-frame 缺少处理它们的细节和能力,存在不完全符合A-frame 的有用的 性能和可靠性度量参数。例如,“沿路径使用遵从RFC2001-TCP可得的最大流量容量” 会比较好测量,但是我们没有足够丰富的分析框架来允许我们将这个流量容量当一个分 析度量参数对待。 这些概念仍可通过描叙一个测量它们的参考方法来很好的说明。 这样的度量参数可被称为“经验说明度量参数”,或者更简单,经验度量参数。 这样的经验度量参数应具有三个属性: 对每一个参数,我们应有根据互联网组件而来的清楚地定义。 至少应该有一种有效的方法来测量它们。 为了可能的扩展,我们应对这种参数有根据A-frame 的理解(这种理解必然是不完全 的),以此我们可以用我们的测量来思考A-frame 组件和A-frame 组件集合的性能和可靠性。 9. 合成的两种形式 9.1.度量参数的空间合成 某些场合下,以一种显示出空间合成的方式来定义度量参数可能是现实的也是有用 的。 使用空间合成,我们意指一些路径度量参数的特征,这里应用于一(完整的)路径 的度量参数也能用于定义不同的子路径;而且,该参数所用的适当的A-frame 概念暗示 了在用于这些不同子路径的参数之间的有用的关系(包括完整路径,给定分类路径的不 同的云子路径,甚至沿路径的单个路由器)。空间合成的有效性依赖于: 在应用于相关的A-frame组件时这些关系在分析中的有用性, 在应用于度量参数和测量方法时相应关系的实际使用。 {注释:例如,考虑沿路径P,100字节长分组的延迟的一些度量参数,并考虑路径P的 分类路径。这样一个度量参数的定义里可能包含了这样的猜想:通过P 的延迟非常接近通过给定分类路径交换链路(ei)和云(Ci)的相应的度量参数之和。这个定义也 会包含相应关系是怎样用于对路径P和对分类路径的交换链路、云的相关的A-frame组件的 注解。} 当一个度量参数的定义包含了通过路径的参数与通过该路径的子路径的参数有关的猜想 时,这个猜想规定了该参数显示了空间合成性。那么,定义里就应包括: 用于该度量参数的明确的猜想, 在对路径上该参数的准确测量方面,这个合成在实践中有用的理由, 在更有效的使用A-frame概念对路径作出分析方面,这个合成的有用性的理由, 对这个猜想怎样会不正确的分析。 9.2.正式模型和经验度量参数的时间合成 某些场合下,,以一种显示出时间合成的方式来定义度量参数可能是现实的也是有用 的。 使用时间合成,我们意指一些路径度量参数的特征,这里应用于在给定时间T时路 径的度量参数也能用于定义不同的时间t0 < t1 < ... < tn < T时的路径,而且,该参数所用 的适当的A-frame 概念暗示了在用于时间t0, ..., tn和时间T的参数之间的有用的关系。 空间合成的有效性依赖于: 在应用于相关的A-frame组件时这些关系在分析中的有用性, 在应用于度量参数和测量方法时相应关系的实际使用。 {注释:例如,考虑时间T内的5分钟长的时间通过路径P的预期的流量容量的度 量参数 ,并假定我们获得了之前的4个5分钟长的时间t0, t1, t2, 和t3的相应值。这样 一个度量参数的定义里可能包含了这样的猜想:在时间T的流量容量能从t0, ..., t3的值 的某种推断中估计出来。这个定义也会包含相应关系是怎样用于相关的A-frame组件的 注解。 注意:涉及流量容量的任何合成(时间或空间的)似乎很微妙,而且时间合成一般 要比空间合成更微妙,所以读者应理解下面的例子是有意地考虑不周。} 当一个度量参数的定义包含了在给定时间T通过路径的参数与在一组其它时间通过 该路径的参数相关的假定时,这个猜想规定了该参数显示了时间合成性。那么,定义里 就应包括: 用于该度量参数的明确的猜想, 在对路径上该参数的准确测量方面,这个合成在实践中有用的理由, 在更有效的使用A-frame概念对路径作出分析方面,这个合成的有用性的理由, 10. 与时间有关的问题 10.1.时钟问题 对许多度量参数来说,时间的测量是一个中心问题。因为这点,在设计测量某参数 的方法时弄清由不完善的系统时钟引起的不同类型错误和不确定性至关紧要。这一部分 里,我们定义讨论时钟特性的术语并简单涉及任何合理的方法都应阐明的与测试相关的 问题。 网络时间协议(NTP; RFC 1305)定义了讨论时钟特性的术语,在适当时我们也是采用 它。NTP的主要目的是在相当长时间范围内提供准确的记时,比如几天内精确到分钟; 然而,对测量目的而言,如在测量的开始到结束,或跨越收集测量样本过程的一段时间, 短期内记时的准确性常常是更重要的。目标上的不同有时导致不同术语的定义,正如下 所讨论的。 一开始,我们定义一个在特定瞬间的时钟“偏移”为系统时钟报告的时间与UTC 定义的“真实”时间的差。如果时钟报告时间Tc,真实时间是Tt,那么时钟偏移就是 Tc - Tt. 如果在特定瞬间的时钟偏移是零我们说时钟是“精确”的,更一般的,时钟“精确 度”就是偏移的绝对值有多靠近零。对NTP而言,精确度还包括时钟频率的概念;对我 们的目的而言,我们把这个概念包含在时钟的“脉冲相位差(skew)”中,因为我们是根 据单一时刻而不是一个时间段来定义精确度的。 在特定瞬间时钟的“脉冲相位差”是时钟和真实时间之间频率的不同(它关于真实 时间的偏移的第一个派生)。 正如RFC1305中所叙,真实时钟显示了一些脉冲相位差的变化。即,时钟关于真实 时间的偏移的第二个派生通常是非零的。为与RFC1305保持一致,我们定义这个数量为 时钟“漂移” 时钟“分辨率(resolution)”是时钟时间更新的最小单位。它给出了时钟不确定性的 低级的边界。(注意时钟可能有非常高的分辨率却又不精确)分辨率是以秒来定义的。然 而,分辨率是相对于时钟报告的时间而言而不是真实时间,所以例如说时钟10毫秒的分 辨率只是意味着它的时间概念按0.01秒增长,而不是时间更新时的真实数值。 {注释:系统在与时钟接口的应用程序时钟没有提前时怎样报告顺序呼叫的时间这方 面是不同的。一些系统就是简单的返回相同的没变化的给前面呼叫的时间。其它一些系 统可能给报告的时间增加一个小的增量,以保持单调增加的时间戳。对于后一个系统, 在定义时钟分辨率时我们不考虑这个小增量。实际上,它是评估时钟分辨率的一个障碍, 因为一个很自然的评估时钟分辨率的方法是重复的问询系统时钟来确定报告的时间里最 小的非零的不同。 我们期望时钟分辨率很少变化(例如,因为硬件的更新)。 有许多有趣的度量参数,它们的一些自然的测量方法涉及比较两个不同的时钟报告 的时间。一个例子就是单向分组延迟[AK97]。这里,分组通过网络所需要的时间经过比 较在分组走过路径一端的时钟报告的时间(相应的是分组第一次进入网络的时间)和在 路径另一端的时钟报告的时间(相应的是分组结束通过网络的时间)而得出。 因此我们也对描叙两个时钟C1 和C2怎样比较的术语感兴趣。为了这个目的,我 们指出上面“真实时间”的概念被系统时钟C1所报告的时间所代替。例如,时钟C2在 一特定瞬间相对于C1的偏移是Tc2 - Tc1,即由C2和C1所报告时间的即时差别。为了 消除两个时钟之间比较时术语的使用和与真实时间比较时术语的使用的歧义,我们在前 一种情况使用“相对”这个词语。所以我们在这一段开始所定义的偏移是C2和C1之间 的“相对偏移”。 在比较时钟时,“分辨率”与上一段术语的类似术语不是“相对分辨率”,实际上而 是“联合分辨率”,亦即C1和C2分辨率之和。联合分辨率暗示了对通过将一个时钟产 生的时间戳减去另一个时钟产生的时间戳而计算得的任何时间间隔的精确度的保守的较 低的限制。 如果两个时钟关于彼此是“准确的”(它们的相对偏移是零),我们就说这个时钟对 是“同步”的。注意时钟可能高度同步却在它们报告真实时间方面很不精确。这一点很 重要,因为对许多互联网测量来说,两个时钟之间的同步远比时钟的准确性重要。这对 脉冲相位差来说也有点正确:只要绝对脉冲相位差不是太大,那么最小的相对脉冲相位 差更重要,因为它引起通过比较由两个时钟产生的时间戳而测量到的分组传输时间的系 统的趋势。 这些区别的说明是因为对互联网测量而言,往往最重要的是那个通过比较两个时钟 输出而计算的时间的差别。计算这些差别的过程清除了任何由于时钟对真实时间不准确 而产生的错误;但是,这些差别本身要准确地反映真实时间的差别这一点至关重要, 测量方法会常常从保证两个时钟是同步的而且有最小的脉冲相位差和漂移这一步骤 开始。 {注释:一个保证这些条件(和时钟准确性)的有效的方法是使用从外部资源获得时 间观念的时钟,而不只是主机计算机的时钟(这后者往往会面临很大的错误)。如果时钟 直接获得时间,例如通过与GPS(全球定位系统)单位有即时通道,就更好。} 如果时钟使用如NTP的网络时间同步协议来间接获得它们的时间,就出现了两个重 要的关注之点: 第一,NTP的准确性部分依赖于为NTP对等体所用的互联网路径的属性(特别是 延迟属性),并且这些属性可能恰恰就是我们希望测量的属性,所以使用NTP来校准这 样的测量可能是谬误的。 第二,NTP的焦点在时钟的准确性,它可能以短期的时钟脉冲相位差和漂移为代价 来达到这点。例如,当一个主机的时钟是间接地与时钟源同步时,如果同步间隔很少出 现,那么主机有时候会面临这样的问题:怎样以它刚刚知道的相当不同的、更准确的时 间Ta来调校它当前的不正确的时间Ti。达到这一目的的两种方法是或者立即将当前时 间设置为Ta,或者调整当地时钟的更新频率(也即它的脉冲相位差)以至在未来某点当 地时间Ti会与更准确的时间Ta一致。前一个机制导致了不连续性而且也违背了时间戳 是单调增加的普遍假设。如果主机的时钟被设置为向后“合拍”,有时这很容易被探测到。 如果时钟被设置为向前“合拍”,这会很难探测到。第二种机制引起的脉冲相位差在计算 时间的差别时,如上所讨论的,能导致相当的不准确。 为了阐明为什么脉冲相位差是至关重要的,考虑以一分钟为间隔测得的两互联网主 机间的单向延迟样本。对一横穿网络的路径,主机间的真实传输延迟似乎应该是50毫秒 的价数。如果两个时钟间的脉冲相位差是0.01%,亦即10000中的1份,那么在观测10 分钟之后引入测量中的错误是60毫秒。除非被纠正了,这个错误足够彻底地抹杀传输延 迟测量中的任何准确性。最后,我们指出估计不同步的网络时钟之间的脉冲相位差错误 是个开放的研究领域(探测和补偿这类错误的讨论见[Pa97])。这个缺点使使用可靠的, 诸如GPS之类的独立时钟源变得特别合意。 10.2.“线时(Wire Time)”的概念 互联网测量时常是复杂的,因为要使用互联网主机自己来完成测量。这些主机能引 起延迟,瓶颈,和相似的由硬件或操作系统的影响且与我们想要测量的网络行为无关的 事件。在网络事件的时间戳出现在应用层时,这个问题特别尖锐。 为了提供讨论这些影响的一般的方法,我们引入“线时(wire time)”的两个概念。 这些概念只是根据在特定位置观测互联网路径L的主机H来定义的: 对于一给定分组P,P在L上到H的“线路达到时间(wire arrival time)”是P的任 何位在H在L上的观察位置出现的第一时间。 对于一给定分组P,P在L上到H的“线路退出时间(wire exit time)” 是P的所 有位在H在L上的观察位置出现的第一时间 注意,定义的本质是我们在链路哪里观察的观念。这个区别很重要,因为对于大延 迟链路,我们可能获得非常不同的时间,恰恰依赖我们在哪里观察链路。我们可以允许 观察位置是沿链路的任意位置;然而,我们根据互联网主机来定义是因为我们预期在实 践中,对于IPPM测量参数,所有这样的记时都应被限制由互联网主机来完成,而不是 可能可以在主机不能观察的位置监视链路的特别的硬件设备。这个定义也考虑到了由多 个物理信道所组成的链路的问题。因为这些多个的信道在IP层不可见,它们不能按照上 面定义个别地观察。 有可能,尽管希望不是普遍的,一个分组P因为转发循环而可能多次通过特定链路 P,多次循环的旅程甚至可能相互重叠,由链路技术决定。无论何时出现这种现象,我 们定义一个与每个H在链路上的位置见到P的时刻关联的单独的线时。这个定义是值得 的,因为它暗示了分组通过互联网内一点的唯一的时间是天生地需要小心对待的观念。 历史上,线时这个术语被用来宽松地表示分组在链路上出现的时间,没有明确说明 这是指第一个位,最后一位,或者其它的考虑。这个非正式的定义普遍地已经非常有用, 因为它常常用来区分因为网络而不是终端主机引起的分组的传播延迟开始和终止。 在适当的时候,度量参数应根据线时而不是主机终点时间来定义,因此度量参数的 定义从由网络引起的延迟里突出了由主机引起的单独的延迟。 我们指出涉及到IP分段来处理线时的时候一个潜在的困难。可能会有这种情况,由 于分段,特定分组只有一部分通过H的位置。这样的分片它本身是合法的分组并且有与 它相关联的定义明确的线时;但它们集合而成的IP分组可能没有。 我们还指出,根据我们的知识,对于互联网流量这些概念先前还没有以确切的术语 来定义。因此,我们可以凭经验知道在将来这些定义需要一些修改。 {注释:有时测量线时是困难的,一种技术是使用分组筛选器(packet filter)来监视 链路上的流量。 这些筛选器的体系结构常常试图将每一个分组与尽可能靠近线时的一个时间戳关联 起来。然而我们指出一个普遍的错误来源是在终端主机之一上运行分组筛选器。这种情 况下,可观察到一些分组筛选器接受了一些与分组被调度注入网络时间相应的分组时间 戳,而不是分组实际被发送到网络的时间(线时)。这两个时间会有着实质的不同。处理 这一问题的技术是在单独的被动地监视给定链路的主机上运行分组筛选器。然而,对一 些链路技术而言这可能是有问题的。对分组筛选器能引起的错误见[Pa97]。最后,我们 指出分组筛选器常常会只捕获分段IP分组的第一个分片,因为筛选是根据IP内的域和 传输协议报头的。由于我们通常希望我们的测量方法避免产生了分段流量的复杂性,使 当分组筛选器探知有分段时一个处理它们的出现的策略是:标记测量流量具有反常的形 式并放弃对分组记时的进一步分析。} 11. 个体,样本,与统计 根据经验,我们发现在三个截然不同然而又相关的概念之间引入区别很有用: 用“个体”度量参数,我们是指在某种意义上度量参数是原子的。例如,从一个主 机到另一个主机的“桶吞吐量容量(bulk throughput capacity)”的单个例子可以被定义为 一个个体度量参数,即使这个例子涉及测量大量互联网分组的记时。 用“样本”度量参数,我们是指通过将大量独特的例子合在一起从给定的个体度量 参数得出的度量参数。例如,从一个主机到另一个主机的单向延迟的样本度量参数我们 可以定义为一小时长的测量,测量时间间隔服从泊松分布,平均每次测量持续一秒钟。 用“统计” 度量参数,我们是指源于通过计算一些个体度量参数在样本上定义值的 统计量得出的特定样本度量参数的度量参数。例如,上面给出的样本的所有单向延迟的 平均可被定义为一个统计度量参数。 通过一致地使用个体,样本,统计这些概念,我们可以重用怎样定义不同的度量参 数的样本和统计量的教训。这三个概念之间的正交性因而使得我们所有的工作更有效更 可被业界理解 在这一节的剩余部分,我们将包括我们相信对多种度量参数定义和测量努力很重要 的话题 11.1.收集样本的方法 收集样本的主要理由是了解被测的参数呈现出何种变化和一致性。这些变化应该是 关于互联网不同点或不同测量时间的。在基于样本估计变化时,人们通常做出了样本是 “没有偏见的”假设,意味着收集样本的测量结果的过程不会使样本偏斜而以至它不再 准确地反映度量参数的变化和一致性。 一个普遍的收集样本的方法是在由固定时间数分开的点测量:周期抽样。因为它的 简单,周期抽样特别吸引人,但它有两个潜在的问题: 如果被测量的参数本身表现出周期行为,那么存在一个可能性:如果周期碰巧相同 (或者周期直接相同或者一个是另一个的倍数),抽样会仅仅观察到周期行为的一部分。 与这个问题有关的是周期抽样能被容易地预测的观念。如果有网络组件能临时被改动的 机制以至抽样只能看到被改动了的行为,可预测的抽样是容易被控制的。 测量的活动可能影响被测量的东西(如,注入测量流量到网络中会改变网络的拥塞 水平),而且重复的周期影响能驱动网络到同步的状态(见[FJ94]),极大地放大原本单 独来说是较小的错误。 一个更合理的途径是基于“随机附加抽样”:样本在独立地随机产生的间隔获得,间 隔有共同的统计分布G(t) [BM92]。这种抽样方法的质量依赖于分布G(t)。例如,如果 G(t)以概率1产生常值g,那么这个抽样就退化为周期是g的周期抽样。 随机附加抽样具有显著的好处:一般来说,它避免了同步效应且产生了被抽样属性 的无偏估计。它唯一的显著缺点是: 它使频率域(frequency-domain)分析变复杂,因为样本不是如傅立叶变换 (Fourier-transform)技术所假定的以固定间隔出现; 而且,除非G(t)是指数分布(见下),抽样仍会保持稍微的可预测性,如上面所讨论 的周期抽样。 11.1.1. 泊松抽样 可以证明如果G(t)是参数为λ的指数分布,即G(t) = 1 - exp(-λ * t)。那么新样本的到 达不能被预测(就是说抽样是无偏的)。此外,即使抽样活动影响了网络的状态,抽样也 是渐近无偏的。这种抽样被称作“泊松抽样”。它不会倾向于诱发同步,它能用来准确地 收集周期行为的测量样本,而且当新的样本到达时它不会倾向于被预测控制。 因为这些有价值的属性,我们通常优先使用泊松抽样来采集互联网测量的样本。 {注释:然而,我们指出可能有适合使用不同G(t)的环境。如,指数分布是极大的, 所以它的使用有时会在抽样时间之间产生过大的间隔。我们希望限制这样的最长的间隔 为一个最大值dT,以加速源于抽样的估计的收敛。这应通过G(t) = Unif(0, dT)来做,也 就是0 到dT的均匀分布。当然,如果一个几乎长达dT的间隔过去了而没出现一个样本, 这种抽样会变得高度地可预测.} 在它最纯粹的形式,泊松抽样是这样实现的:产生独立的,指数分布的时间间隔; 在每个间隔过去后采集一个测量样本。能够说明如果在时间T开始,某个人经过间隔dT 完成泊松抽样,在这期间正好做了N次测量,那么这些测量将在时间间隔[T, T+dT]内是 均匀分布。因此另一个产生泊松抽样的方法是选取dT 和N,并在间隔[T, T+dT]内均一 地产生N个随机抽样时间。这两个方法是等价的,除非N和 dT是外部知道的。这种情 况下,测量时间不能被预测的属性被削弱了(其它属性仍然保持)。N/dT方法有一个优 点:处理N 和 dT的固定值比处理固定了λ,但经过长度可变的时间间隔做可变数量的 测量简单。 11.1.2. 几何抽样 与泊松抽样紧密相关的是“几何抽样”,它以固定的概率p测量外部事件。如,某个 人可能捕获了通过链路的所有分组却只将分组记录在追踪文件,如果产生的在0到1之 间服从均匀分布的随机数小于给定的概率p。几何抽样有如泊松抽样的无偏和事前不可 预测的属性,所以如果它符合一个特定的互联网测量任务,采用它也是合理的。更多的 讨论见[CPB93]。 11.1.3. 产生帕松抽样时间间隔 要产生帕松抽样时间间隔,首先决定个体测量的平均测量间隔时间的参数λ(即, 对于30秒的平均抽样间隔,我们有λ = 1/30,如果时间单位是秒)。然后产生一系列(伪) 指数分布随机数E1, E2, ..., En 。第一个测量在时间E1做,下一个在时间E1+E2做,以 次类推。 一个产生(伪)指数分布随机数的技术是基于能够产生在0到1之间服从均匀分布 的(伪)随机数U1, U2, ..., Un的能力。许多计算机提供了做到这点的函数库。给出了 Ui,产生Ei使用公式:Ei = -log(Ui) / λ。这里log(Ui)是Ui的自然对数。{注释:这个技术 是更一般的以一给定分布产生随机数的“逆变换”的一个实例。} 实现细节: 对于近似帕松抽样至少有三种不同的方法,这里我们描叙为方法1到3。方法1是 最容易实现但有最多的错误,方法3是实现最困难的但有最少的错误(可能没有)。 方法1如下进行: 1. 产生E1并等那么久。 2. 完成一个测量。 3. 产生E2并等那么久。 4. 完成一个测量。 5. 产生E3并等那么久。 6. 完成一个测量。 这种方法的问题是“完成一个测量”步骤本身需要时间,所以抽样不是在时间E1, E1+E2,等等做出的,而是在时间E1,E1+M1+E2,等等做出的,这里Mi是第i次测量 需要的时间。如果Mi与1/λ比较非常小那么由这个方法引起的可能错误同样也小。当 Mi与1/λ比较不可忽略时,可能的错误增大了。 方法2试着通过考虑测量所需的时间(即Mi)并与之相应的调整等待时间间隔来纠 正这个错误: 1. 产生E1并等那么久。 2. 完成一个测量,并测量它所费的时间M1 3. 产生E2并等E2-M1长时间。 4. 完成一个测量并测量M2。 只要E{i+1} >= Mi,这个方法工作得很好。但是,如果E{i+1} < Mi那么就不可能 等合适长度的时间了。(注意这种情况相当于需要同时完成两个测量。) 方法3产生一个测量间隔时间的时间表E1, E1+E2,等等,然后坚持按表进行: 1. 产生时间间隔E1, E2, ..., En。 2. 计算测量进行时间T1, T2, ..., Tn, 其中 Ti = E1 + ... + Ei。 3. 在时间T1, T2, ..., Tn安排做一次测量。 由于允许同时的测量,方法3避免了方法1和2的弱点。然而,如果同时进行的测 量彼此干扰,方法3就没有任何优点还可能被正实比方法1和2还要差。 对于互联网的现象,不知道这些方法不准确到什么程度是显著的。如果Mi远比1/λ 小,那么三种方法里的任何一种都可以采用。如果Mi比1/λ小但差得不多,那么方法2 比方法1要好。如果同时进行的测量彼此不干扰,那么可以采用方法3,尽管比较之下 它的实现相当的困难。 11.2自身一致性 合理的测量方法的一个基本要求是测量尽可能少的使用未经证实的假设。经验已经 痛苦地表明作出一个(常常是内在的)假设却实际是错误的有多容易。一个例子是在测 量中将时钟读数的同步与高度准确的时钟源混为一谈。很容易作出假设因此时间是准确 的,但由于软件故障(bug),时钟源的掉电,时钟源和时钟间通信丢失,时钟实际上可 能很不准确。 这并不是辩论说在测量时不能做任何假设,而是说在实践时,应该检验假设。做到 这一点的一个有力的方法是检查自身一致性。这样的检查既适用于测量的观察值又适用 于测量过程本身使用的值。前者一个简单的例子是在计算往返时间时应检查它是否为负 值。因为负的时间间隔没有物理意义,一旦是负值就要立即标记一个错误。这种类型的 错误应该在事后研究!弄清楚错误在哪里至关重要,因为只有坚持不懈地这样做,我们 才能对测量方法基本的合理性树立信心。例如有可能因为在测量时时钟被使它与另一个 时钟源同步的过程设置后退而得出往返时间为负值。 但是也有可能测量程序存取了它的 估计之一的未初始化的内存,并且,尽管非常少见,这会导致假的估计结果。 如果同样 的程序被其他人用来完成同样的测量,这第二种错误更严重,因为别人也会遭受错误的 结果。此外,只要没被发现它完全是固定的。 自身一致性的一个更精细的例子来自于收集单向互联网延迟样本。如果有这种延迟 的大的样本,它们是否符合一条测量时间和延迟对的直线,以观察结果有一明显的非零 斜度,能被证明是充分高效的。如果是这样,一个可能的解释是测量使用的时钟之一相 对另一个偏斜了。另一个解释是这个斜度确实是网络真正的影响。决定事实是那种解释 很有启示意义(分辨相对时钟偏移和网络的真正影响的讨论见[Pa97])。此外,如果使这 个检查成为测量方法的一部分,那么长期斜度非常接近零这个发现就是测量可能没有被 时钟的偏斜影响致产生有偏的结果的肯定的证据。 最后一个例子阐明检查测量过程本身的自身一致性。上面我们略叙了泊松抽样技术, 它基于产生指数分布的时间间隔。一个合理的测量方法应该包括检查产生的时间间隔以 确认它们实际上是否为指数分布(也确认它们是否遭受了相关性干扰)。附录里面我们讨 论了一个这样的技术并给出了C代码,称为Anderson-Darling测试的一个普遍目的的, 充分认识的拟合良度(Goodness-of-Fit)测试。 最后,我们指出真正与互联网泊松抽样有关的常常不是测量何时开始而是与测量过 程相关的线时。由于用来完成测量的主机的复杂性,它们可能相当不同。因此,即使对 伪随机数字生成器和并发的算法有完全的信任,也提倡尽可能多的考虑应该怎样测试每 个测量过程所作的假设。 11.3.定义统计分布 一个描叙测量数据集合(样本)的方法是把它们看作统计分布,非正式的看作百分 点。有几个稍微不同的方法做到这点。这一节,我们定义一个标准的定义以使这些描叙 一致。 数量测量集合的经验分布函数("empirical distribution function" ,EDF)为函数F(x), 对于任意x,给定整个测量的部分比例<= x.。如果x小于观察到的最小值,那么F(x) 为 零。如果它大于或等于观察到的最大值,那么F(x)为1。 例如,给定了6个测量结果: 2, 7, 7, 4, 18, -5 那么F(-8) = 0, F(-5) = 1/6, F(-5.0001) = 0, F(-4.999) = 1/6, F(7) = 5/6, F(18) = 1, F(239) = 1。 注意我们能够恢复不同的测量值和每个测量值在F(x)里出现次数—--值域内的任何 信息都没丢失。另一方面,概括测量使用柱状图一般而言丢失了关于不同观察值的信息, 所以首选EDF。 然而,或者使用EDF,或者使用柱状图,我们都丢失了关于观测值的顺序的信息。 是否有可能这个丢失的信息重要,依赖于我们所要测量的参数。 我们将使用术语“百分点”来指示对于给定百分比a,F(x) >= a的x的最小值。所 以上面那个例子中,第50百分点是4,因为F(4) = 3/6 = 50%;而第25百分点是-2,因 为F(-5) = 1/6 < 25%,且 F(-2) = 2/6 >= 25%;第100百分点是18;第0百分点是负无穷大。 在使用百分点来概括样本时必须要小心,因为它们能导致无根据的比实际可得到的 结果更精确的现象。任何这样的概括都必须包括样本尺寸N,因为任何比1/N要低的百 分点差异都在样本的分辨率之下。 关于EDF更详细的讨论见[DS86]。 我们用对中值这一普遍(而又重要)概念的注解结束本小节。在统计学里,分布的 中值被定义为一个点X,X满足观察到的值小于等于X的概率等于观察到的值大于X的 概率。在估计一个观察值集合的中值时,这个估计依赖于观察值的数量N,它是奇数或 偶数: 如果N是奇数,那么上面所定义的第50百分点就用做估计的中值。 如果N是偶数,那么估计中值是中间两个观察值的平均;也即,要是观察值以升序 排序且配以从1到N的序号,这里N = 2*K,则估计中值是第K个和第K+1个观察值的 平均。 通常,术语“估计”被从词语“估计中值”里去掉而简单地称这个值为“中值”。 11.4.拟合良度(Goodness-of-Fit)的测试 对于测量校准的一些形式,我们需要测试是否一组数据与那些被从特定分布里抽取 的数据一致。一个例子是:在使用泊松过程做的测量里应用自身一致性检查,一个测试是检 查是否抽样时间的分隔真正符合指数分布;或者是否使用了上面讨论的dT/N方法,是否时 间是在[T, dT]均匀分布。 {注释:至少有三组可能的数据我们应该测试:被安排的分组传输时间,通过使用一个伪 随机数字产生器获得;正好在系统呼叫传输分组之前或之后做的用户级时间戳;和使用分组 过滤器记录的分组的线时。所有这三组数据都可能提供信息:被安排的分组传输时间未能符 合指数分布意味着随机数字产生中的不准确;用户级时间戳的错误意味着调度传输的记时器 的不准确;线时的错误意味着实际分组传输中的不准确,也许是因为共享资源的竞争。} 有许多统计学拟合良度技术完成这样的测试。一个完全的讨论见[DS86]。这本参考书推 荐了Anderson-Darling EDF测试为一个好的所有目的的测试,这个测试也特别适宜检定给定 分布在EDF低尾和高尾的背离。 一个很重要的事是理解拟合良度测试的本性是:首先选择“显著度”,显著度是测试会错 误地宣告测量的给定数据集合未能吻合特定的分布,而实际上测量确实是符合这个分布的。 这一事件的概率。 除非有别的声明,IPPM拟合良度测试选取的显著度为5%,这意味着:如果测试采用了 100个样本而且这些样本里有5个相信在测试中会失败,那么样本全部与被测试的分布一致。 如果有相当多的样本测试失败了,那么样本与被测试的分布一致的假设就被推翻了。如果有 相当少的样本测试失败了,那么有可能样本被修饰得太好而不符合分布。相似地,一些拟合 良度测试(包括Anderson-Darling算法)能检定一个给定的样本是否被修饰了。对这一情况 我们也使用5%的显著度;也即,测试会报告给定的真实的样本有5%的时间“太好了而不真 实”,所以如果测试报告这个发现比1/20更显著,就暗示着出现了不寻常的事情。 附录给出了实现Anderson-Darling测试的示例C代码,也进一步讨论了它的使用。 在网络测量的环境中拟合良度和拟合闭度测试的讨论见[Pa94]。 12. 消除随机的度量参数 在定义用于路径,子路径,云,或其它网络元素的度量参数时,我们一般不把它们定义 为随机的术语(概率)。而是更喜欢确定性的术语。所以,例如不是定义参数为“A和B之 间分组丢失的概率”,而是定义为“A和B之间分组丢失率”。(由第一个定义得出的测量结 果会是0.73,而第二个定义会是100个分组里的73 个。) 我们强调上面的区别涉及度量参数的定义。它不涉及我们用来分析测量结果的技术类型。 这个区别的理由如下。如果定义按照概率来定义参数,在这个定义的背后往往隐藏着一 个被测量的行为的随机模型的假设。我们在参数定义中避免概率的基本目的是避免由于这样 的隐藏假设而出现的偏见。 例如,一个容易作出的隐藏假设是网络组件中由于排队溢出引起的分组丢失能被描叙为 对任何给定分组都以特定的概率发生的事情。然而,在今天的互联网,排队丢包事实上通常 是确定性的,而假定它们应该用概率来描叙会隐藏一组分组内排队丢包之间至关重要的相关 性。所以明确地指出随机假设更好,而不应将假设隐藏在我们的参数定义中。 这并不是意味着我们抛弃用来理解网络性能的随机模型!只是意味着在定义IP度量参数 时,我们避免使用“概率”这样的术语代替“比例”,“比率”这样的术语。例如,为了估计 由与IP度量参数有关的随机模型所用的概率,我们仍然使用随机抽样。在它们真正适当时, 我们也不排除使用以概率定义的参数。(例如,由某种线路噪声引起的传输错误的模拟。) 13. P型分组(PACKETS OF TYPE P) 许多互联网度量参数的一个基本的属性是参数的值依赖于做测量所用的IP分组的类型。 考虑一个IP连接参数:依赖于是否对分组的目的地是知名TCP端口或无限制的UDP端口的 连接感兴趣,或者带无效的IP校验和的分组,或者例如TTL为16的分组,可能获得不同的 结果,在有些环境,这些区别会很有趣(例如,有防火墙的场合,或RSVP预留) 因为这个区别,我们引入“P型分组(packet of type P)”的一般概念,在一些具体的环 境,P需要明确地定义(即:明确是指何种类型的分组),部分定义(例如:带有B字节的有 效负载),或保持一般概念。因此我们可以讨论一般的P型IP连接或更明确的IP-HTTP连接。 一些度量参数和测量方法可以使用一般的P型定义来有效地定义,在完成实际测量时,再给 P型分组以明确的说明。 无论何时,一个度量参数的值依赖于涉及它的分组类型,这个参数的名字应包括特定的 分组类型或如“P型”这样的词语。因此,我们不会定义“IP-连接”的参数而是定义“P型 IP-连接”的参数和/或“HTTP端口IP-连接”参数。这个命名规则作为一个重要的暗示提醒 我们必须清楚的意识到所测量流量的确切类型。 一个与之紧密相关的注意之点:知道是否给定的互联网组件对不同类型分组组成的C类 平等对待是很有用的。如果是的,那么这些分组类型中的任何一种都可以用于接下来对该组 件的测量。这就提示我们设计尽量有确定的C类的度量参数或度量参数集合。 14. 互联网地址与主机 在考虑对一些穿过互联网的路径的参数时,常常会自然地设想它是属于从互联网主机H1 到H2的路径的。尽管用这些术语做的定义,会有些模棱两可,因为互联网主机可以从属于 多于一个的网络。这种场合下,参数的测量结果将依赖于实际测量时所用的网络。 由于有这个模糊性,通常这样的参数定义应该根据互联网IP地址来定义。对于穿过互联 网的单向路径的普遍场合,我们将用术语“源址”表示路径的开始的IP地址,而“目的”表 示路径终点的IP地址。 15. 标准构成的分组 除非有另外的陈叙,所有涉及IP分组的度量参数的定义都包括了一个内在的假设:分组 是标准构成的。如果一个分组满足所有下面的标准就是标准构成的: 在它IP报头内给定的长度与IP报头加上有效负载的长度一致。 它包含有一个有效的IP报头:版本域是4(以后,我们会将其 扩展到包括6);报头长 度大于等于5;校验和正确。 该分组不是IP分片。 源地址和目的地址和研究中的主机一致。 如果TTL域是每过一跳就减一,则要么分组拥有足够从源主机传到目的主机的TTL,要 么分组拥有最大的TTL:255。 除非明确的注释,不能包含IP选项。 如果有传输层报头,它也要有正确的校验和以及其它的有效的域。 我们更要求如果分组被描叙为有“B字节的长度”,那么0,<=B<=65535;而且,如果B 是以字节表示的有效负载长度,那么B<=(65535-以字节表示的IP报头长)。 所以,例如,可以想象定义一个IP连接的度量参数为“IP TOS域为零标准构成分组的P 类型IP连接”或更简洁地,“IP TOS域为零的P类型IP连接”,因为由于约定,标准构成已 经包含在定义里。 一个考虑问题时往往有用的特定标准构成分组类型是“从A到B的最小IP分组”—这 是一个具有以下属性的IP分组: 它是标准构成的。 它的有效负载是0。 它没包含IP选项。 (注意我们没有定义它的协议域,因为不同的值可能得到网络的不同对待。) 在定义IP度量参数时,我们时刻要记得:没有比这种分组更小或更简单的分组能够在正 常工作的IP网络里传输。 16. 致谢 感谢Brian Carpenter, Bill Cerveny, Padma Krishnaswamy Jeff Sedayao 和 Howard Stanislevic 的批评。 17. 安全考虑 本文档涉及关于互联网测量的定义和概念。我们只在高级术语上讨论测量过程,涉及得 出合理测量的原则。因为这样,讨论的主题不影响互联网或在互联网上运行的应用程序的安 全。 也就是说,必须认识到进行互联网测量能引起对安全和隐私的关注。主动测试技术,注 射流量到网络中去,被滥用的话,就是伪装成合法测量活动的拒绝服务(DoS)攻击。被动 技术,记录并分析存在的流量,会把互联网流量的内容暴露给无意识的接受者。因此,每个 度量参数和测量方法的定义必须包括相应的对安全考虑的讨论。 18. 附录 下面我们给出了计算Anderson-Darling (A2)测试统计量的C程序,Anderson-Darling 测 试算法用于决定是否一个值集与给定的统计分布是一致的。外表上,这两个主要的程序是: double exp_A2_known_mean(double x[], int n, double mean) double unif_A2_known_range(double x[], int n, double min_val, double max_val) 都采用它们第一次的声明,x,被测的值n的数组(x的元素经过排序)。余下的参数描叙所 用分布的特征:或者mean(平均值),(1/λ),对于指数分布而言;或者上界和下界,对于均 匀分布而言。程序的名字强调了这些值必须事前就知道,而且不要从数据中估计得到(例如, 通过计算它的样本平均)。从数据中估计得到参数改变了测试统计的显著度。 尽管 [DS86] 给 出了一些例子的显著度表,这些例子中,参数是从数据中估计得到的,出于我们的目的,我 们希望我们应该实际上事前知道参数,因为我们将测量的东西是如分组发送时间之类的我们 希望检验是否符合已知分布的一般值 两个程序都返回如早先描叙的显著度。它是一个0到1之间的值。对程序的正确地使用 是事先选好测试的显著度的阀值;通常为0.05,即如上所叙的5%。随后,如果程序返回的 值严格小于阀值,那么可以认为数据与事前假设的分布不一致,面临与显著度相关的错误。 也即,对于5%的显著度,事实上是从事前假设的分布中来的5%时间的数据会被错误地认为 不一致。 因此,记住这点很重要:如果这些程序使用频繁,那么事实上会偶尔面临错误,即使数 据是无暇的。 另一个涉及显著度的重要之点是为了决定两个数据集哪个更好的符合事前假设的分布而 比较它们是不合理的。实际上这样的测量应该使用如[Pa94] 中所叙的参数λ2这样的“拟合闭 度度量参数”来做。 尽管提供的程序是对于已知了参数的指数分布和均匀分布的,通常写出类似的用于任何 已知参数分布的程序。A2测试的核心在于为测试数据集是否与0到1之间的均匀分布(我们 表示为Unif(0, 1))一致而计算的统计量。如果我们希望测试一个数据集,X,是否与给定分 布G(x)一致,我们首先计算Y = G_inverse(X) 如果X事实上分布服从G(x),那么Y将服从 分布Unif(0, 1);所以通过测试Y与Unif(0, 1)的一致性,我们也就测试了X与G(x)的一致性。 然而,我们指出,上面计算Y的过程可能产生的Y值超过(0,1)的范围。这样的值是 不应当出现的,如果X事实上分布服从G(x);而如果X不是,Y就很容易出现这样的值。 在后一种情况,我们需要避免计算中心A2统计量,因为如果有任何(0,1)范围外的值, 浮点例外可能出现。相应的,程序检查这个概率,而且如果出现,返回一个原始的A2统计 量-1。转换原始A2统计量为显著度的程序同样地传播这个值,返回显著度-1。所以,对这些 程序的任何运用都必须为可能出现的负值显著度准备。 最后一个关于A2统计量使用的重要之点关系到n,被测数据的数量。如果n < 5那么测 试没有意义,而且在这种情况下返回显著度为-1。 另一方面,对于“真实”数据,随着n变得很大,测试获得了激励。在统计学里从所周 知,真实的数据几乎从不恰好符合理论分布,即使是在丢很多次骰子的情况下(简要的讨论 和参考见[Pa94])。A2测试是足够敏感的,对于足够大的真实数据集,测试会几乎总是失败, 因它会试着探测数据对分布符合的轻微的不完整性。 例如,我们发现在测试8192个以泊松间隔发送分组的测量线时时,测量几乎总是通不过 A2测试。另一方面,如所期待的,测试128个测量只在约5%时间里失败于5%的显著度。 因此,通常,在测试失败时,必须注意理解是什么原因导致的。 本附录的剩余部分给出了上面提及的程序的C代码。 /* 计算Anderson-Darling A2 测试统计的程序 * 实现基于“拟合良度技术”中的描叙R. D'Agostino and M. Stephens, editors, Marcel Dekker, Inc., 1986. */ #include #include #include /* 返回n个排序样本的原始A^2测试统计量 z[0] .. z[n-1], 对于 z ~ Unif(0,1). */ extern double compute_A2(double z[], int n); /* 返回与A2的A^2测试统计量关联的显著度,假定被测分布的参数都不是从数据中估 计得出的。 */ extern double A2_significance(double A2); /* 返回n个服从带给定均值的指数分布观察值x[0] .. x[n-1]的A^2 显著度 ? SIDE EFFECT: x[0..n-1] 按返回值排序 */ extern double exp_A2_known_mean(double x[], int n, double mean); /*返回n个服从平均分布[min_val, max_val]观察值x[0] .. x[n-1]的A^2 显著度 ? SIDE EFFECT: the x[0..n-1] are sorted upon return. */ extern double unif_A2_known_range(double x[], int n, double min_val, double max_val); /*返回与给定均值的指数分布一致的伪随机数分布 */ extern double random_exponential(double mean); /* qsort()用于排序双精度浮点数值的辅助函数 */ static int compare_double(const void *v1, const void *v2) { double d1 = *(double *) v1; double d2 = *(double *) v2; if (d1 < d2) return -1; else if (d1 > d2) return 1; else return 0; } double compute_A2(double z[], int n) { int i; double sum = 0.0; if ( n < 5 ) /* 样本数太少*/ return -1.0; /* 如果任何值超出(0,1)范围,则程序立即失败。(并避免在下面的代码里出现可能 的浮点数例外。) */ for (i = 0; i < n; ++i) if ( z[i] <= 0.0 || z[i] >= 1.0 ) return -1.0; /* D'Agostino and Stephens书第101面 */ for (i = 1; i <= n; ++i) { sum += (2 * i - 1) * log(z[i-1]); sum += (2 * n + 1 - 2 * i) * log(1.0 - z[i-1]); } return -n - (1.0 / n) * sum; } double A2_significance(double A2) { /* D'Agostino and Stephens书第105面 */ if (A2 < 0.0) return A2; /* 伪造 A2 值并传播它 */ /* 检查可能地被修改值*/ if (A2 <= 0.201) return 0.99; else if (A2 <= 0.240) return 0.975; else if (A2 <= 0.283) return 0.95; else if (A2 <= 0.346) return 0.90; else if (A2 <= 0.399) return 0.85; /*检查可能的不一致性. */ if (A2 <= 1.248) return 0.25; else if (A2 <= 1.610) return 0.15; else if (A2 <= 1.933) return 0.10; else if (A2 <= 2.492) return 0.05; else if (A2 <= 3.070) return 0.025; else if (A2 <= 3.880) return 0.01; else if (A2 <= 4.500) return 0.005; else if (A2 <= 6.000) return 0.001; else return 0.0; } double exp_A2_known_mean(double x[], int n, double mean) { int i; double A2; /* 排序前n个值*/ qsort(x, n, sizeof(x[0]), compare_double); /* 假定它们符合指数分布,传输到Unif(0,1). */ for (i = 0; i < n; ++i) { x[i] = 1.0 - exp(-x[i] / mean); } /* 做A^2 测试以检查它们是真正符合均匀分布*/ A2 = compute_A2(x, n); return A2_significance(A2); } double unif_A2_known_range(double x[], int n, double min_val, double max_val) { int i; double A2; double range = max_val - min_val; /*排序前n个值*/ qsort(x, n, sizeof(x[0]), compare_double); /*传输Unif(min_val, max_val) 到 Unif(0,1). */ for (i = 0; i < n; ++i) x[i] = (x[i] - min_val) / range; /*做A^2 测试以检查它们是真正符合均匀分布*/ A2 = compute_A2(x, n); return A2_significance(A2); } double random_exponential(double mean) { return -mean * log1p(-drand48()); } 19. 参考书目 [AK97] G. Almes and S. Kalidindi, "A One-way Delay Metric for IPPM", Work in Progress, November 1997. [BM92] I. Bilinskis and A. Mikelsons, Randomized Signal Processing, Prentice Hall International, 1992. [DS86] R. D'Agostino and M. Stephens, editors, Goodness-of-Fit Techniques, Marcel Dekker, Inc., 1986. [CPB93] K. Claffy, G. Polyzos, and H-W. Braun, "Application of Sampling Methodologies to Network Traffic Characterization," Proc. SIGCOMM '93, pp. 194-203, San Francisco, September 1993. [FJ94] S. Floyd and V. Jacobson, "The Synchronization of Periodic Routing Messages," IEEE/ACM Transactions on Networking, 2(2), pp. 122-136, April 1994. [Mi92] Mills, D., "Network Time Protocol (Version 3) Specification, Implementation and Analysis", RFC 1305, March 1992. [Pa94] V. Paxson, "Empirically-Derived Analytic Models of Wide-Area TCP Connections," IEEE/ACM Transactions on Networking, 2(4), pp. 316-336, August 1994. [Pa96] V. Paxson, "Towards a Framework for Defining Internet Performance Metrics," Proceedings of INET '96, ftp://ftp.ee.lbl.gov/papers/metrics-framework-INET96.ps.Z [Pa97] V. Paxson, "Measurements and Analysis of End-to-End Internet Dynamics," Ph.D. dissertation, U.C. Berkeley, 1997, ftp://ftp.ee.lbl.gov/papers/vp-thesis/dis.ps.gz. 20. 作者地址 Vern Paxson MS 50B/2239 Lawrence Berkeley National Laboratory University of California Berkeley, CA 94720 USA Phone: +1 510/486-7504 EMail: vern@ee.lbl.gov Guy Almes Advanced Network & Services, Inc. 200 Business Park Drive Armonk, NY 10504 USA Phone: +1 914/765-1120 EMail: almes@advanced.org Jamshid Mahdavi Pittsburgh Supercomputing Center 4400 5th Avenue Pittsburgh, PA 15213 USA Phone: +1 412/268-6282 EMail: mahdavi@psc.edu Matt Mathis Pittsburgh Supercomputing Center 4400 5th Avenue Pittsburgh, PA 15213 USA Phone: +1 412/268-3319 EMail: mathis@psc.edu 21. 版权声明 Copyright ? The Internet Society (1998). All Rights Reserved. 假如上面的版权声明和本段被包含在所有这样的复制和派生工作里,本文档和它的翻译 可以复制并传播给他人,派生出来的事情,如评价它或解释它或帮助实现它可以被部分的或 全部的准备,复制,出版和分发,没有任何的限制。然而,本文档本身不可以以任何方式修 改,如移除版权声明或提及互联网协会(Internet Society)和其他互联网组织,除非出于发展 互联网标准的需要,这时,必须跟随互联网标准过程里定义的版权,或必须翻译为其他的非 英语语言。 上面提及的有限许可是永久的且不会被互联网协会或它的继承者或它的委派者撤回。 This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. RFC2330 Framework for IP Performance Metrics IP性能度量参数的框架 26 RFC文档中文翻译计划 RFC2330——Framework for IP Performance Metrics IP性能度量参数的框架 RFC文档中文翻译计划