今天分享的论文主题是:如何开展一项科学准确的互联网测量研究。本文作者Vern Paxson是UC Berkeley教授、网络测量领域顶会IMC的创始人,是互联网测量领域的权威专家。作者从方法论的层面讨论测量方法设计、测试工具选取、数据收集等方面存在的诸多挑战,并凭借丰富的网络测量经验,分享了测量工作中常见的问题、应对策略、注意事项,以及影响结果的一些因素,帮助新入门的人避免一些“坑”。本文仅介绍通用的原则,而非具体的技术或工具。作者介绍这些方法策略,是为了让测量工作更加科学、有理有据,让分析人员对测量中的优势和局限性有充分的了解。本文发表于互联网测量领域顶会IMC 2004。
01【处理误差或错误】
1. 精度(Precision)
精度属于测量工具导致的实验误差,是指测量工具对测试目标所能提供的最高精准程度决定测量结果的误差范围。例如,以毫秒为单位变化的时钟无法提供微秒级别的时间精度。在互联网测量中需要考虑多种“精度”信息,包括但不限于:
在对数据包、Web服务器日志信息、BGP路由信息进行测量时,确定保留或丢弃哪些信息也属于精度范畴。例如,仅保留数据包Header信息比保留完整数据包信息精度低。
时间精度有时也是影响测量精确性的主要维度。有时可以忽视时间精度问题,例如,计算机时钟的精确度是10毫秒,在进行以秒为单位或更粗粒度的分析时无需考虑计算机时钟带来的误差。因此,需要根据具体实验权衡判断。
百分比的有效数字:网络测量工作的方法决定了其精度不会太高,因此在进行数据统计时,小数位数不必保留过多。
2. 元数据(Meta-data)
测量分析中的元数据有多种类型,但并无明确定义,包括但不限于:
描述性信息,如文件大小、采集时间戳、采集条件、数据来源
数据存储格式,如JSON格式、按行存储,是否需要以特定标识开头
数据存储、处理、统计等中间过程信息
数据授权信息、版权信息、管理员权限
作者认为,保存充分且完整的元数据信息与确定精度同等重要。一方面,有效数据很难收集,有时状态改变便会导致所收集数据发生改变。另一方面,虽然很多元数据在收集时并无“立即收益”,但是当发现其有意义时可能很难再次获得。
3. 准确度(Accuracy)
准确度的影响因素包括丢包和时钟问题。相较于精度而言,准确度是一个更大的范围,它将决定测量结果是否能够作为真实情况的缩影。除了测试工具、方法本身带来的偏差之外,测量中有很多因素会导致结果错误,需要仔细评估各类错误是否存在及影响规模。
案例1:报文数据采集、过滤和丢包
数据包过滤(filtering)的本质是通过预设条件,将符合规则的包完整保留,或仅保留部分头部信息。以tcpdump工具为例,用它进行数据包采集和分析时将可能存在一系列问题,例如(注:本文作者为tcpdump的初代作者之一):
tcpdump无法跟上过滤器接收数据包的效率;过滤器跟不上原始数据包的流速
tcpdump在记录故障信息方面存在缺陷,只能生成关于总丢包数量的摘要信息,无法将丢包与其发生的时间点关联起来;而ipsumdump可以包括丢包信息和数据包。
案例2:时钟不准确
时钟不准确现象包括“与真实时间不同步”、“时间突然向前或向后飘移”,或者“时间以错误的速率前进”。与时钟精度的区别在于,精度可以提前获知,而准确度需要后续进行数据处理。作者建议在实验中可以尽可能与真实时间(true time)保持同步,例如GPS比通过NTP同步要准确一些。但有时“绝对时间”未必重要,“相对时间间隔”或“时钟变化速率”可能更重要。
另一方面,一些工作在实验设计时需要严格考虑“时钟同步”问题。例如Cao等人[6]提出的TCP侧信道攻击模型中,Off-path攻击者需要严格判断1秒内是否能够接收到Server端发出100个Challenge ACK,因此需要与Server端保持时钟同步。
4. 理解偏差(Misconception)
贯穿测量研究的一个主要问题是确认“是否对所分析的问题存在理解偏差”,例如实验设计的测量方法模型可能与实际网络情况不匹配。本文举例介绍了以下两方面问题:
案例1:方法设计中存在错误
(1)测量TCP数据包丢失的问题:若通过计算重传的数据包数量方法评估,则可能忽略了数据包被网络不必要地重传或复制的问题。
(2)评估端到端Web传输时间:若直接计算RTT,则可能忽略了网络中间件(middlebox)的影响。
(3)计算TCP连接大小的分布情况:若计算SYN和FIN的序列号之差,则未考虑到可能监测开始时有连接已经建立,或者监测结束时有连接还未断开的情况。
(4)观测点的位置:无法通过一个AS观察到BGP的全局可达性。
案例2:数据收集不具有代表性
不同网络节点,或者同一网络节点的不同时期,互联网性能存在较大差异
作者认为,研究者难以自己发现对问题和方法的理解偏差,并且拥有“领域知识”(domain knowledge)的人也不一定能完全避免这类问题。因此作者建议做多次实验交叉验证,例如从不同位置或不同时间多次收集不同数据集。此外,在测量开始之前可以寻求同行专家的帮助。
5. 结果校验(Calibration)
在测量结束时,需要进行结果校验,以解决方法存在误区、纠正错误结果等问题。具体从以下方面展开:
方面1:检验离群点、异常值
在对结果进行统计分析时,通常会存在很多离群点(例如极高、极低的值)或骤增骤减的现象(例如短期内的大量重复)。这种异常现象可能是会影响结论的“特殊案例”(corner case),也可能是测量方法错误导致的结果,因此需要额外分析原因。例如:
(1)流量瞬间增多,可能是因为发生了DDoS攻击;
(2)计时器设置错误(采集固定间隔的流量 或 定期采集流量)导致测量误差;
(3)通过采集流量计算RTT的分布,但outbound和inbound packet匹配得不对,导致分析错误。
通常而言,发现异常值需要依靠直觉,而直觉是伴随经验积累的。
方面2:自洽性检查
实验中需要对不同测量数据进行交叉验证和比较,检查测量方法、数据处理和分析等方面的一致性,发现任何潜在的错误、异常值、实验前后的矛盾性。这就需要对实验结果预先设定心理预期,然后通过辅助实验或附加属性对预期结论加以佐证。
例如,在追踪TCP数据流时,如何判断获取的流数据包是否完整?这个问题可以依赖于TCP协议设计中的“可靠性”加以排除,因为根据标准规范约束,接收方只有在确认接收报文时才能发ACK,而ACK是可以量化统计的。因此可以通过验证流完整性来发现丢包问题。
(1)通过多种方法去验证一个问题或现象。可以使用相同方法多次测量,例如用两个monitor同时监听,可以区分“丢包”和“包过滤”;也可以使用不同方法测同一个问题,例如统计HTTP数据流中GET和POST请求数时,可以直接从原始报文解码统计,也可以分析由工具(如wireshark)生成的报告。在多次实验中,无需要求每次结果都一样,只要差别不太“离谱”即可(异常情况靠经验判断)。
(2) 评估合成数据。实验中可以主动构造一些异常、错误的数据,判断测量工具/方法是否能够检测出,以及进一步分析如何处理(和鲁棒性有关)。此外,作者建议也可以使用一些数学方法,例如蒙特卡罗方法(统计模拟、随机抽样),即根据问题/场景预先估计统计分布函数,然后通过真实数据判断是否拟合。
总结:评估和数据校准过程通常需要在“目标”之外做很多额外的工作,需要花费大量的时间,尤其是当处理的数据量很大时。有时这些过程难以避免,每次测量分析时可能都会有一些新的“坑”出现,很多脏活累活出在这里,这是很正常的。此外,有一些异常值、不一致现象可以直接删除,但要事先论证直接删除不会对结果造成偏差。这些过程很痛苦,但有必要。
02【处理大规模数据】
处理和分析大数据时,主要会受到系统、软件等各方面的限制,下面介绍一些经验或常见问题。
存储问题:需考虑磁盘空间、最大文件大小、inode数/文件数、文件路径长度(影响检索效率)
可视化展示:数据点太多机器处理不动,可能需要删除一些数据点
统计学方法自身的局限性:众所周知,在统计学界,大型数据集几乎从来没有统计学上的精确描述。例如,大量重复扔骰子的实验,在某些情况下不能通过对预测二项分布的卡方检验。这是因为统计学检验方法可能在某些情况下过于精确(例如能够检测到统计精确性的微小偏差),导致各种统计分布的误差在数据量充足时会表现得很明显。
开发和部署分析代码时,需要重复“edit–compile–debug”的过程:直接动手分析大数据很慢,而且初期写的代码需要多轮调试,很可能运行很久发现条件设置错误
关于大数据处理的建议:
提取数据的小子集,并首先对这些子集进行深入分析
子集的选取要随机,避免bias;或选取多个子集
可以结合一些可视化技术,分析不同子集的特性、分布、统计特征
03【确保分析可复现】
很多人会在投稿DDL前完成了大量测量实验和结果分析,隔几个月审稿人反馈了很多问题,或建议如何进一步分析、补充测量数据或者步骤等等。但这个时候距离上次实验已经过去很久了,如何进行分析?
不推荐: 简单修改脚本,按照指示重新跑一遍数据,直接用新结果替换。
推荐方案: 需要了解“原始文本”得出结论的细节,先将原始数据复现,在此基础上继续分析。
但是很多人会发现,几个月前在得出的结论现在无法复现了,因为研究人员在紧张的数据分析阶段,会临时增加一些处理,例如:
删除一些异常值
为纠正交稿前临时发现的问题而采取的折中 (可能包含漏洞和不一致之处)
在论文的不同部分使用了不同版本的分析脚本
甚至可能存在各种错误,例如把一个已经四舍五入的数字重新四舍五入
作者建议:
为了避免数据分析无法复现,同时便于在适当环节修改数据分析方法或引入新的因素,需要采用一个系统的、结构化的、可复现的分析方法,以保证数据分析链条可“审计-跟踪”。具体建议如下:
制作从原始数据开始,最终导致衍生的结果和图谱(例如,图表1展示了一个粗浅的案例);
版本控制,详细记录特定结果生成的状态、条件,有助于回退状态;
使用单一的主脚本,整合所有处理过程,并保存所有中间的、临时的、简化的数据格式及当时的处理条件;
维护一个笔记本,记录数据处理过程;
上述方法要相互结合使用,必要时互相印证
图表1:数据处理流程图[5]
04【如何将数据集开源】
公开数据集可以作为一些分析工作的数据支撑,或用于证实其他研究者的分析工作,因此鼓励研究者将数据集开源。但是,数据集公开要考虑很多问题,包括但不限于以下几个方面:
1. 需要包含各类元数据信息
例如数据集本身、数据采集的精度和准确度、关于数据的解释说明(是否记录丢包信息、数据采集时的带宽状态、是否已对数据进行排序)、测量时的辅助信息(如主机名-IP映射,路由信息等,这些会随时间变化,若不记录很难复现)等。必要时可附上应用于数据的分析工具和脚本,具体可参考[1]。
2. 建议定期重复测量工作
长期的测量数据很宝贵,不必每次都得出新结论,但可以对结果进行一致性检验、检查结果准确性,或分析变化趋势。
3. 获得授权或知情同意
例如:
隐私、安全和商业敏感性等方面的原因可能影响数据集的公开
伦理道德性是测量工作需要重点考虑的问题(具体参考[2])
使用匿名化技术,例如删除数据包内容、重写IP或headers信息、删除其他各类敏感信息。关于安全的匿名化问题可进一步参考[3]中的讨论。
请求削减数据(部分请求数据),即可以将数据分析程序发给数据提供方,请求其协助分析结果,而不要求其公开数据。这要求分析人员能够开发出可移植的分析软件和明确的分析步骤,能够促进分析技术的共享。但局限性在于:数据发布者可能未必愿意持续合作(除非他们觉得有意义);且数据采集可能是一次性的(有生命周期限制),而维护数据的过程是长期持续的。
更多关于如何合理使用公开数据集方面的问题,可以参考[4]。
05【总结】
开展有效且准确的测量工作,建议采取以下策略:
收集全面的元数据信息;
校验并深入分析异常值,检查实验自洽性,多次测量实验相互对比;
构建系统性的分析框架,确保实验结果可复现;
分析大数据前,先在子集中验证,以及观察不同子集之间的差异;
开展长期、大规模测量实验时,要周期性、自动化地检验结果,避免中间发生中断,确保meta-data充分保留;
将数据分析程序发给数据收集者,保护敏感信息的同时,可以开放共享分析方法、程序。
推荐的工具或方法:
数据管理:使用数据库、实现版本控制
分析过程脚本化;大型的分析流程可能需要保存中间临时结果
差异分析工具(可视化、差分测试组件)
通过实验笔记本记录测量和分析过程的全部细节
鼓励公开测试工具
鼓励公开数据集
作者建议大家谨慎对待测量和分析过程中的细节,可能需要补充很多简单、重复、冗余的工作,但这些是有意义的。这个过程可以让研究人员深入思考测量工作背后的意义,从而获得更深刻的见解。随着时间的推移,仔细检查这些过程可以帮助实验人员建立充分的信心(特别是对学生而言)。此外,数据校验过程中可能提供了偶然性的机会,例如会有新的发现。最后,各种错误累加起来可能导致结果不准确,所以严格按规范的步骤执行有助于研究者接近事实与真相。
原文链接
https://conferences.sigcomm.org/imc/2004/papers/p263-paxson.pdf
参考文献
[1] DANE Study - Measurement artifacts. https://dane-study.github.io/security2022/measurement/
[2] Y. Zhang, M. Liu, M. Zhang, C. Lu and H. Duan, "Ethics in Security Research: Visions, Reality, and Paths Forward," EuroS&PW, 2022, doi: 10.1109/EuroSPW55150.2022.00064.
[3] Ruoming Pang and Vern Paxson. A high-level programming environment for packet trace anonymization and transformation. SIGCOMM, 2003. https://doi.org/10.1145/863955.863994
[4] Mark Alllman and Vern Paxson. Issues and etiquette concerning use of shared measurement data. IMC 2007. https://doi.org/10.1145/1298306.1298327
[5] 清华大学网络研究院博士后陆超逸供图
[6] Y. Cao, Z. Qian, Z. Wang, T. Dao, S. V. Krishnamurthy and L. M. Marvel, "Off-Path TCP Exploits of the Challenge ACK Global Rate Limit," TON, 2018, doi: 10.1109/TNET.2018.2797081.
张明明,编辑&审校 | 陆超逸、刘保君
声明:本文来自NISL实验室,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。