今天分享的論文主題是:如何開展一項科學準確的互聯(lián)網(wǎng)測量研究。本文作者Vern Paxson是UC Berkeley教授、網(wǎng)絡測量領域頂會IMC的創(chuàng)始人,是互聯(lián)網(wǎng)測量領域的權威專家。作者從方法論的層面討論測量方法設計、測試工具選取、數(shù)據(jù)收集等方面存在的諸多挑戰(zhàn),并憑借豐富的網(wǎng)絡測量經(jīng)驗,分享了測量工作中常見的問題、應對策略、注意事項,以及影響結(jié)果的一些因素,幫助新入門的人避免一些“坑”。本文僅介紹通用的原則,而非具體的技術或工具。作者介紹這些方法策略,是為了讓測量工作更加科學、有理有據(jù),讓分析人員對測量中的優(yōu)勢和局限性有充分的了解。本文發(fā)表于互聯(lián)網(wǎng)測量領域頂會IMC 2004。
01【處理誤差或錯誤】
1. 精度(Precision)
【資料圖】
精度屬于測量工具導致的實驗誤差,是指測量工具對測試目標所能提供的最高精準程度決定測量結(jié)果的誤差范圍。例如,以毫秒為單位變化的時鐘無法提供微秒級別的時間精度。在互聯(lián)網(wǎng)測量中需要考慮多種“精度”信息,包括但不限于:
在對數(shù)據(jù)包、Web服務器日志信息、BGP路由信息進行測量時,確定保留或丟棄哪些信息也屬于精度范疇。例如,僅保留數(shù)據(jù)包Header信息比保留完整數(shù)據(jù)包信息精度低。
時間精度有時也是影響測量精確性的主要維度。有時可以忽視時間精度問題,例如,計算機時鐘的精確度是10毫秒,在進行以秒為單位或更粗粒度的分析時無需考慮計算機時鐘帶來的誤差。因此,需要根據(jù)具體實驗權衡判斷。
百分比的有效數(shù)字:網(wǎng)絡測量工作的方法決定了其精度不會太高,因此在進行數(shù)據(jù)統(tǒng)計時,小數(shù)位數(shù)不必保留過多。
2. 元數(shù)據(jù)(Meta-data)
測量分析中的元數(shù)據(jù)有多種類型,但并無明確定義,包括但不限于:
描述性信息,如文件大小、采集時間戳、采集條件、數(shù)據(jù)來源
數(shù)據(jù)存儲格式,如JSON格式、按行存儲,是否需要以特定標識開頭
數(shù)據(jù)存儲、處理、統(tǒng)計等中間過程信息
數(shù)據(jù)授權信息、版權信息、管理員權限
作者認為,保存充分且完整的元數(shù)據(jù)信息與確定精度同等重要。一方面,有效數(shù)據(jù)很難收集,有時狀態(tài)改變便會導致所收集數(shù)據(jù)發(fā)生改變。另一方面,雖然很多元數(shù)據(jù)在收集時并無“立即收益”,但是當發(fā)現(xiàn)其有意義時可能很難再次獲得。
3. 準確度(Accuracy)
準確度的影響因素包括丟包和時鐘問題。相較于精度而言,準確度是一個更大的范圍,它將決定測量結(jié)果是否能夠作為真實情況的縮影。除了測試工具、方法本身帶來的偏差之外,測量中有很多因素會導致結(jié)果錯誤,需要仔細評估各類錯誤是否存在及影響規(guī)模。
案例1:報文數(shù)據(jù)采集、過濾和丟包
數(shù)據(jù)包過濾(filtering)的本質(zhì)是通過預設條件,將符合規(guī)則的包完整保留,或僅保留部分頭部信息。以tcpdump工具為例,用它進行數(shù)據(jù)包采集和分析時將可能存在一系列問題,例如(注:本文作者為tcpdump的初代作者之一):
tcpdump無法跟上過濾器接收數(shù)據(jù)包的效率;過濾器跟不上原始數(shù)據(jù)包的流速
tcpdump在記錄故障信息方面存在缺陷,只能生成關于總丟包數(shù)量的摘要信息,無法將丟包與其發(fā)生的時間點關聯(lián)起來;而ipsumdump可以包括丟包信息和數(shù)據(jù)包。
案例2:時鐘不準確
時鐘不準確現(xiàn)象包括“與真實時間不同步”、“時間突然向前或向后飄移”,或者“時間以錯誤的速率前進”。與時鐘精度的區(qū)別在于,精度可以提前獲知,而準確度需要后續(xù)進行數(shù)據(jù)處理。作者建議在實驗中可以盡可能與真實時間(true time)保持同步,例如GPS比通過NTP同步要準確一些。但有時“絕對時間”未必重要,“相對時間間隔”或“時鐘變化速率”可能更重要。
另一方面,一些工作在實驗設計時需要嚴格考慮“時鐘同步”問題。例如Cao等人[6]提出的TCP側(cè)信道攻擊模型中,Off-path攻擊者需要嚴格判斷1秒內(nèi)是否能夠接收到Server端發(fā)出100個Challenge ACK,因此需要與Server端保持時鐘同步。
4. 理解偏差(Misconception)
貫穿測量研究的一個主要問題是確認“是否對所分析的問題存在理解偏差”,例如實驗設計的測量方法模型可能與實際網(wǎng)絡情況不匹配。本文舉例介紹了以下兩方面問題:
案例1:方法設計中存在錯誤????????????
(1)測量TCP數(shù)據(jù)包丟失的問題:若通過計算重傳的數(shù)據(jù)包數(shù)量方法評估,則可能忽略了數(shù)據(jù)包被網(wǎng)絡不必要地重傳或復制的問題。
(2)評估端到端Web傳輸時間:若直接計算RTT,則可能忽略了網(wǎng)絡中間件(middlebox)的影響。
(3)計算TCP連接大小的分布情況:若計算SYN和FIN的序列號之差,則未考慮到可能監(jiān)測開始時有連接已經(jīng)建立,或者監(jiān)測結(jié)束時有連接還未斷開的情況。
(4)觀測點的位置:無法通過一個AS觀察到BGP的全局可達性。
案例2:數(shù)據(jù)收集不具有代表性
不同網(wǎng)絡節(jié)點,或者同一網(wǎng)絡節(jié)點的不同時期,互聯(lián)網(wǎng)性能存在較大差異
作者認為,研究者難以自己發(fā)現(xiàn)對問題和方法的理解偏差,并且擁有“領域知識”(domain knowledge)的人也不一定能完全避免這類問題。因此作者建議做多次實驗交叉驗證,例如從不同位置或不同時間多次收集不同數(shù)據(jù)集。此外,在測量開始之前可以尋求同行專家的幫助。
5. 結(jié)果校驗(Calibration)
在測量結(jié)束時,需要進行結(jié)果校驗,以解決方法存在誤區(qū)、糾正錯誤結(jié)果等問題。具體從以下方面展開:
方面1:檢驗離群點、異常值
在對結(jié)果進行統(tǒng)計分析時,通常會存在很多離群點(例如極高、極低的值)或驟增驟減的現(xiàn)象(例如短期內(nèi)的大量重復)。這種異?,F(xiàn)象可能是會影響結(jié)論的“特殊案例”(corner case),也可能是測量方法錯誤導致的結(jié)果,因此需要額外分析原因。例如:
(1)流量瞬間增多,可能是因為發(fā)生了DDoS攻擊;
(2)計時器設置錯誤(采集固定間隔的流量 或 定期采集流量)導致測量誤差;
(3)通過采集流量計算RTT的分布,但outbound和inbound packet匹配得不對,導致分析錯誤。
通常而言,發(fā)現(xiàn)異常值需要依靠直覺,而直覺是伴隨經(jīng)驗積累的。
方面2:自洽性檢查
實驗中需要對不同測量數(shù)據(jù)進行交叉驗證和比較,檢查測量方法、數(shù)據(jù)處理和分析等方面的一致性,發(fā)現(xiàn)任何潛在的錯誤、異常值、實驗前后的矛盾性。這就需要對實驗結(jié)果預先設定心理預期,然后通過輔助實驗或附加屬性對預期結(jié)論加以佐證。
例如,在追蹤TCP數(shù)據(jù)流時,如何判斷獲取的流數(shù)據(jù)包是否完整?這個問題可以依賴于TCP協(xié)議設計中的“可靠性”加以排除,因為根據(jù)標準規(guī)范約束,接收方只有在確認接收報文時才能發(fā)ACK,而ACK是可以量化統(tǒng)計的。因此可以通過驗證流完整性來發(fā)現(xiàn)丟包問題。
(1)通過多種方法去驗證一個問題或現(xiàn)象。可以使用相同方法多次測量,例如用兩個monitor同時監(jiān)聽,可以區(qū)分“丟包”和“包過濾”;也可以使用不同方法測同一個問題,例如統(tǒng)計HTTP數(shù)據(jù)流中GET和POST請求數(shù)時,可以直接從原始報文解碼統(tǒng)計,也可以分析由工具(如wireshark)生成的報告。在多次實驗中,無需要求每次結(jié)果都一樣,只要差別不太“離譜”即可(異常情況靠經(jīng)驗判斷)。
(2) 評估合成數(shù)據(jù)。實驗中可以主動構(gòu)造一些異常、錯誤的數(shù)據(jù),判斷測量工具/方法是否能夠檢測出,以及進一步分析如何處理(和魯棒性有關)。此外,作者建議也可以使用一些數(shù)學方法,例如蒙特卡羅方法(統(tǒng)計模擬、隨機抽樣),即根據(jù)問題/場景預先估計統(tǒng)計分布函數(shù),然后通過真實數(shù)據(jù)判斷是否擬合。
總結(jié):評估和數(shù)據(jù)校準過程通常需要在“目標”之外做很多額外的工作,需要花費大量的時間,尤其是當處理的數(shù)據(jù)量很大時。有時這些過程難以避免,每次測量分析時可能都會有一些新的“坑”出現(xiàn),很多臟活累活出在這里,這是很正常的。此外,有一些異常值、不一致現(xiàn)象可以直接刪除,但要事先論證直接刪除不會對結(jié)果造成偏差。這些過程很痛苦,但有必要。
02【處理大規(guī)模數(shù)據(jù)】
處理和分析大數(shù)據(jù)時,主要會受到系統(tǒng)、軟件等各方面的限制,下面介紹一些經(jīng)驗或常見問題。
存儲問題:需考慮磁盤空間、最大文件大小、inode數(shù)/文件數(shù)、文件路徑長度(影響檢索效率)
可視化展示:數(shù)據(jù)點太多機器處理不動,可能需要刪除一些數(shù)據(jù)點
統(tǒng)計學方法自身的局限性:眾所周知,在統(tǒng)計學界,大型數(shù)據(jù)集幾乎從來沒有統(tǒng)計學上的精確描述。例如,大量重復扔骰子的實驗,在某些情況下不能通過對預測二項分布的卡方檢驗。這是因為統(tǒng)計學檢驗方法可能在某些情況下過于精確(例如能夠檢測到統(tǒng)計精確性的微小偏差),導致各種統(tǒng)計分布的誤差在數(shù)據(jù)量充足時會表現(xiàn)得很明顯。
開發(fā)和部署分析代碼時,需要重復“edit–compile–debug”的過程:直接動手分析大數(shù)據(jù)很慢,而且初期寫的代碼需要多輪調(diào)試,很可能運行很久發(fā)現(xiàn)條件設置錯誤
關于大數(shù)據(jù)處理的建議:
提取數(shù)據(jù)的小子集,并首先對這些子集進行深入分析
子集的選取要隨機,避免bias;或選取多個子集
可以結(jié)合一些可視化技術,分析不同子集的特性、分布、統(tǒng)計特征
03【確保分析可復現(xiàn)】
很多人會在投稿DDL前完成了大量測量實驗和結(jié)果分析,隔幾個月審稿人反饋了很多問題,或建議如何進一步分析、補充測量數(shù)據(jù)或者步驟等等。但這個時候距離上次實驗已經(jīng)過去很久了,如何進行分析?
不推薦: 簡單修改腳本,按照指示重新跑一遍數(shù)據(jù),直接用新結(jié)果替換。
推薦方案: 需要了解“原始文本”得出結(jié)論的細節(jié),先將原始數(shù)據(jù)復現(xiàn),在此基礎上繼續(xù)分析。
但是很多人會發(fā)現(xiàn),幾個月前在得出的結(jié)論現(xiàn)在無法復現(xiàn)了,因為研究人員在緊張的數(shù)據(jù)分析階段,會臨時增加一些處理,例如:
刪除一些異常值
為糾正交稿前臨時發(fā)現(xiàn)的問題而采取的折中 (可能包含漏洞和不一致之處)
在論文的不同部分使用了不同版本的分析腳本
甚至可能存在各種錯誤,例如把一個已經(jīng)四舍五入的數(shù)字重新四舍五入
作者建議:
為了避免數(shù)據(jù)分析無法復現(xiàn),同時便于在適當環(huán)節(jié)修改數(shù)據(jù)分析方法或引入新的因素,需要采用一個系統(tǒng)的、結(jié)構(gòu)化的、可復現(xiàn)的分析方法,以保證數(shù)據(jù)分析鏈條可“審計-跟蹤”。具體建議如下:
制作從原始數(shù)據(jù)開始,最終導致衍生的結(jié)果和圖譜(例如,圖表1展示了一個粗淺的案例);
版本控制,詳細記錄特定結(jié)果生成的狀態(tài)、條件,有助于回退狀態(tài);
使用單一的主腳本,整合所有處理過程,并保存所有中間的、臨時的、簡化的數(shù)據(jù)格式及當時的處理條件;
維護一個筆記本,記錄數(shù)據(jù)處理過程;
上述方法要相互結(jié)合使用,必要時互相印證
圖表1:數(shù)據(jù)處理流程圖[5]
04【如何將數(shù)據(jù)集開源】
公開數(shù)據(jù)集可以作為一些分析工作的數(shù)據(jù)支撐,或用于證實其他研究者的分析工作,因此鼓勵研究者將數(shù)據(jù)集開源。但是,數(shù)據(jù)集公開要考慮很多問題,包括但不限于以下幾個方面:
1. 需要包含各類元數(shù)據(jù)信息?
例如數(shù)據(jù)集本身、數(shù)據(jù)采集的精度和準確度、關于數(shù)據(jù)的解釋說明(是否記錄丟包信息、數(shù)據(jù)采集時的帶寬狀態(tài)、是否已對數(shù)據(jù)進行排序)、測量時的輔助信息(如主機名-IP映射,路由信息等,這些會隨時間變化,若不記錄很難復現(xiàn))等。必要時可附上應用于數(shù)據(jù)的分析工具和腳本,具體可參考[1]。
2. 建議定期重復測量工作
長期的測量數(shù)據(jù)很寶貴,不必每次都得出新結(jié)論,但可以對結(jié)果進行一致性檢驗、檢查結(jié)果準確性,或分析變化趨勢。
3. 獲得授權或知情同意?
例如:
隱私、安全和商業(yè)敏感性等方面的原因可能影響數(shù)據(jù)集的公開
倫理道德性是測量工作需要重點考慮的問題(具體參考[2])
使用匿名化技術,例如刪除數(shù)據(jù)包內(nèi)容、重寫IP或headers信息、刪除其他各類敏感信息。關于安全的匿名化問題可進一步參考[3]中的討論。
請求削減數(shù)據(jù)(部分請求數(shù)據(jù)),即可以將數(shù)據(jù)分析程序發(fā)給數(shù)據(jù)提供方,請求其協(xié)助分析結(jié)果,而不要求其公開數(shù)據(jù)。這要求分析人員能夠開發(fā)出可移植的分析軟件和明確的分析步驟,能夠促進分析技術的共享。但局限性在于:數(shù)據(jù)發(fā)布者可能未必愿意持續(xù)合作(除非他們覺得有意義);且數(shù)據(jù)采集可能是一次性的(有生命周期限制),而維護數(shù)據(jù)的過程是長期持續(xù)的。
更多關于如何合理使用公開數(shù)據(jù)集方面的問題,可以參考[4]。
05【總結(jié)】
開展有效且準確的測量工作,建議采取以下策略:
收集全面的元數(shù)據(jù)信息;
校驗并深入分析異常值,檢查實驗自洽性,多次測量實驗相互對比;
構(gòu)建系統(tǒng)性的分析框架,確保實驗結(jié)果可復現(xiàn);
分析大數(shù)據(jù)前,先在子集中驗證,以及觀察不同子集之間的差異;
開展長期、大規(guī)模測量實驗時,要周期性、自動化地檢驗結(jié)果,避免中間發(fā)生中斷,確保meta-data充分保留;
將數(shù)據(jù)分析程序發(fā)給數(shù)據(jù)收集者,保護敏感信息的同時,可以開放共享分析方法、程序。
推薦的工具或方法:
數(shù)據(jù)管理:使用數(shù)據(jù)庫、實現(xiàn)版本控制
分析過程腳本化;大型的分析流程可能需要保存中間臨時結(jié)果
差異分析工具(可視化、差分測試組件)
通過實驗筆記本記錄測量和分析過程的全部細節(jié)
鼓勵公開測試工具
鼓勵公開數(shù)據(jù)集
作者建議大家謹慎對待測量和分析過程中的細節(jié),可能需要補充很多簡單、重復、冗余的工作,但這些是有意義的。這個過程可以讓研究人員深入思考測量工作背后的意義,從而獲得更深刻的見解。隨著時間的推移,仔細檢查這些過程可以幫助實驗人員建立充分的信心(特別是對學生而言)。此外,數(shù)據(jù)校驗過程中可能提供了偶然性的機會,例如會有新的發(fā)現(xiàn)。最后,各種錯誤累加起來可能導致結(jié)果不準確,所以嚴格按規(guī)范的步驟執(zhí)行有助于研究者接近事實與真相。
原文鏈接
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] 清華大學網(wǎng)絡研究院博士后陸超逸供圖
[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.
張明明,編輯&審校 | 陸超逸、劉保君???????
關鍵詞:







