全球互聯網監控篇之---BGP數據分析篇

在研究領域中最廣泛採用的BGP數據分析軟件是libBGPdump,它是一個開源的C庫,提供了一個簡單的API來解析MRT格式的RIB dumps,並將MRT記錄反序列化為自定義數據結構。它與命令行工具bgpdump一起工作,bgpdump從ASCII格式文件中讀取信息並輸出MRT信息。通常研究人員直接使用命令行工具將整個RIB dumps轉換成文本,然後解析ASCII輸出以進一步處理或保存數據。儘管在過去十年中bgpdump已經是非常有用的BGP數據分析工具,但是它缺少我們在下一節中討論的高級特性(例如,合併和排序來自多個文件和數據源的數據、支持實時處理、可伸縮性等)

已經存在幾個實時處理BGP測量數據的項目,由工業界(例如,Dyn Research)和學術界(例如,PHAS)開發,但是它們的方法要麼是不公開的,要麼是特定於特定應用的(即,它們不是通用框架)。一個例外是BGPmon,這是一個分佈式監控系統,它通過建立具有多個AS的BGP會話來檢索BGP信息,並以XML格式提供實時BGP數據流(它也封裝原始MRT數據)。儘管BGPmon能夠實現實時監控工具的快速原型化,但是它目前僅提供了對有限數量的探測點(與連接到RIPE RIS和RouteViews基礎設施的大量VP相比)的訪問,並且它不能用於處理歷史數據

BGP數據的實時流化

另一方面,在實時監視的背景下,諸如RouteViews和RIPE RIS等流行的公共數據源的主要問題是它們是基於文件的分發系統,因此使得收集到的數據在可用的延遲時間內。我們的測量表明,除了由於文件循環持續時間而導致的5分鐘和15分鐘的延遲之外,由於發佈給基礎設施還有少量的可變延遲。然而,在去年99%的Updates dump可以在不到20分鐘後。由於這些延遲足夠低,可以支持幾個近實時監視應用程序,因此我們開始開發支持這些數據源的BGPStream

BGPStream核心

BGPStream框架是有多個層次構成(圖1)。在本節中,我們將討論核心層(元數據提供程序和libBGPStream),而在本文的其餘部分中,我們將通過案例研究說明上層。元數據提供者提供關於來自數據提供者(本地或遠程)的數據的可用性和位置的信息,這些數據提供者是BGPStream項目外部的數據源。框架的主要庫libBGPStream提供了以下功能:(1)併發處理不同項目的多個收集器收集的RIB和Updates;(2)實時數據處理;(3)數據提取、註釋和錯誤檢查;(4)生成BGP測量數據的時間順序流;(5)用戶可以通過API接收數據流。

BGPStream可分為幾個獨立模塊:BGPReader,一個命令行工具,以ASCII格式輸出請求的BGP數據;pybgpstream,Python實現的libbgpstream API;bgpcorsaro是一個工具,採用模塊化的插件架構提取統計或彙總數據,輸出到規則時間倉內。

全球互聯網監控篇之---BGP數據分析篇

圖1 BGPStream架構

目標與挑戰

BGPStream的目標

1) 高效處理大量分佈的BGP數據

在第2節中,我們強調了利用大量全球分佈的探測點執行分析的重要性。然而,處理如此大量的數據以及探測帶你的分佈式和多樣性(不同的定時、格式等)特性帶來了一系列技術挑戰。

2) 從多個數據源提供基於記錄的時序數據流

BGPStream旨在提供來自多個收集器的統一排序的數據流。記錄級排序(而不是交錯轉儲文件)在至少兩種情況下是重要的:(1)在分析長時間間隔時,該時間間隔內不能緩衝整個輸入實現時間對齊;(2)當輸入的數據源提供連續的數據流(而不是離散的轉儲文件),因為這樣的流不能在轉儲文件級別上進行交叉提取。

3) 提供歷史和近實時數據處理

我們考慮兩種操作模式:(1)歷史模式 - 在程序啟動之前請求的所有BGP數據都是可用的;(2)實時模式 - 在程序運行時請求的BGP數據變得可用。在實時模式下,BGPStream堆棧加上用戶應用程序,處理數據必須比收集器生成數更快。我們最小化BGPStream處理的延遲,從而最大化近實時的用戶應用程序的可用時間來執行實時互聯網監視和測量。

實時模式還介紹了多個收集器排序記錄的問題。這個問題涉及到:(1)緩衝區的大小,(2)應用程序可用數據的完整性,(3)延遲。根據用戶應用程序的特定目標和資源來評估這種權衡,因此我們設計BGPStream可以在實時模式下執行盡力而為的記錄交叉提取,並且根據應用程序的特定目標來選擇特定的解決方案。

4) 支持大量應用和用戶

BGPStream在網絡監測與故障診斷以及科學數據分析等領域具有廣闊的應用前景。目標用戶不應侷限於高性能計算和集群基礎設施的可用性上。BGPStream框架提供了一套適合不同應用程序和開發範式(例如,歷史數據分析、快速原型、腳本編寫、實時監控)的工具和API。

5) 可伸縮性

由於BGP的探測點的關鍵目的是監視和理解互聯網基礎設施,因此收集器項目支持的探測點的數量會不斷增加。同時,技術挑戰(例如,對複雜的中間人攻擊的近實時檢測)需要滿足日益複雜的計算需求的解決方案。我們設計了BGPStream來支持在分佈式和“大數據分析”環境中的部署:例如,Spark本身支持Python,使得BGPStream可以在這種開箱即用的環境中使用。

6) 方便擴展

儘管我們的解決方案被設計成與當前標準和最流行的可用數據源一起工作,但我們設計了一個堆疊和模塊化的框架,便於對新技術和數據源的支持。BGPStream是一個正在演進的項目,需要與數據提供者、互補技術的開發人員和用戶的協調一起以推進BGP監測和測量數據分析的最新進展。

BGPStram元數據提供商

分析BGP測量數據面臨的挑戰之一是識別和獲取相關數據RouteViews和RIPE RIS都可以通過HTTP提供數據,並將基本目錄列表樣式索引添加到數據中。識別用於大規模分析的適當文件(跨多個收集器和長時間段)包括手動瀏覽和下載,或者編寫適合每個項目存儲庫結構的爬蟲腳本。下載數據本身可能需要相當長的時間(例如,在2014中收集的所有數據是2TB)。此外,由於兩個項目在收集新數據時不斷向其歸檔中添加新數據,因此近實時監視需要定製腳本來定期從網站並下載新數據。BGPStream通過元數據提供程序隱藏了這些複雜性:以組件的形式提供對本地或遠程數據存儲庫(數據提供程序,例如,RouteViews和RIPE RIS數據庫)生成文件信息的訪問。

我們實現了這樣一個元數據提供者,稱為BGPStream Broker的Web服務。其功能(1)向libBGPStream提供元數據,(2)負載平衡,(3)用於過載保護的響應窗口,(4)支持實時數據處理。這個Broker連續地提取數據從提供者存儲庫,將關於新文件的元數據存儲到SQL數據庫中,並回答HTTP查詢以識別匹配一組參數的文件的位置。Broker的一個實例託管在聖地亞哥大學聖地亞哥分校的聖地亞哥超級計算機中心,默認情況下由libBGPStream進行安裝,允許在任何互聯網連接的機器上“開箱即用”地使用BGPStream。

Broker只存儲官方存儲庫上可用文件的元數據,而不是文件本身。這種方法最小化了瓶頸的可能性,因為對Broker的查詢和來自Broker的響應都是輕量級的,實際數據由外部數據提供程序提供。這種配置還使得添加額外數據提供者、負載平衡和冗餘變得簡單,因為Broker可以在多個鏡像服務器之間透明地循環或者採用更復雜的策略(例如,從聖地亞哥大學聖地亞哥分校機器發送的請求是通常指向校園鏡像)。

雖然Broker Data Interface是主要的數據訪問接口,但我們還提供了三個用於分析本地文件的其他接口:單文件、CSV文件和SQLite。以下部分假設Broker被用作數據接口。


分享到:


相關文章: