在完成 Map Phase 之 (Job Assignment 及 BRT Building)的運算後,接下來在此章節 我們針對 NetActy 系統的一個互動式查詢的第二階段執行,也就是將所搜尋到的資料 以視覺化的方式呈現給使用者。這個階段是對應到所謂 Reduce Phase,運算內容包含 分散於個計算節點下各通訊連結國家的 BRT partitions 的合併(Merge)以及
Visualization 運算。這個階段的運算時間仍須最小化,以達到互動模式下的執行回應時 間之需求。
第一節 方法一
根據最基本的 MapReduce 運算架構,Map Phase 完成的結果,各 Map 計算節點將 Segments 建立成一或多個 BRT Partitions 後。一種做法是仿效[6]利用 Shuffle 程序將屬 於同一國家的 BRT Partitions 利用 FTP 的方式傳送到某一個負責合併的計算節點合併 成一棵 BRT 並在該節點上執行 Reduce task。這種作法有涉入一次的網路傳輸以及兩次 硬碟檔案讀寫。
Reduce 計算節點負責將合併後各國的 BRT 轉換成可供視覺化呈現的 HTML Code,再回傳給 Visualization Server 將每個國家的 Code 串連成一份 HTML Code 顯示 在網頁地圖上。
我們認為利用 FTP 交換 BRT Partition 以合併各國家所屬單一 BRT 需將 BRT Partition 寫回本地硬碟,再從本地硬碟讀出經網路傳送到目的硬碟以供 Reduce Task 處理,這步 驟需耗費時間與網路頻寬,以及大量 Disk I/O 存與取,應該要盡量避免。在此思維下,
FTP 步驟可利用 Message Passing 方式改善,直接把 Partitions 透過 Socket 傳輸;負責合 併的計算節點在接收合併後直接儲存在 Memory,免除需要額外 effort 在從硬碟中讀進 Memory。
接下來我們考慮是否需要”將 Partitions 合併後轉換成 HTML Code 再將 HTML Code 串聯”? 如果可以不要,將可節省網路傳輸的成本。也就是另一種做法是” 不合 併 Partitions,先各自轉換成 HTML Code 後,交由 Visualization Server 將同一國家的 HTML Code 合併並串聯各國家的 HTML Code”會是相同的結果,我們先定義以下變數 與符號以利說明:
A.
BRT
i,j為第i
個擁有流量國家的第j
個 BRT Partition、B.
BRT 為第
ii
個擁有流量國家合併後的 BRT、C. M 為將 BRT 轉換為 HTML Code 的 Function、
67
$('#title').text('CN-Code');
$('#nor').text('545,575');
$('#nop').text('0');
$('#fs').text('0');
…
$('#sublist').append($('<option></option>').attr('value', 'AS-Name').text('AS-Name'));
… }
}
以上代表某國家的 HTML Code,每個國家都相同部分就省略僅列出會變動的內容。
首先 center 意指該國家劃在地圖上的經緯度、radius 則是當我們以圓圈表示該國家流量 多寡時所應該呈現的半徑,此數值會依 NetFlow Record 數量改變、title 是該國家的 ccTLD (Country code top-level domain)、nor (number of record)為該國家所擁有的 NetFlow Record 數量、nop (number of packet)為該國家所傳輸的封包數量、fs 為該國家傳輸資料 量,最後的 sublist 為該國家內有流量的 AS。
68
i i
i
hc HC
hc
,1
,2
是否成立。首先對任意
hc
i,j而言,都是由相同國家的 BRT Partitions 所產生的,因此hc
i,j間的 center 與 title 就沒有差異。接著不同 Partition 間因為由不同的 Segment 所產生,而這 些 Segment 在時間上不會重疊,所以我們可以將hc
i,j之間的 nor、nop 與 fs 直接相加而 不會造成重複計算。那因為 radius 根據 nor 做計算,所以當 nor 相加後就能重新計算 正確半徑。sublist 紀錄該國家下所有具有流量的 AS,同樣的因為不同 Partition 是由不 同的 Segment 所產生故可能造成不同 Partition 有重複的 AS 存在,所以當我們要合併j
hc
i, 間的 sublist 就只要紀錄所有不重複的 AS 就可以。根 據 上 述 方 法 當 我 們 把 所 有
hc
i,j 合 併 之 後 就 能 夠 產 生HC , 所 以
ii i
i
hc HC
hc
,1
,2
成立。也因此我們就能不做 BRT Partitions 合併的情狀下直接轉換 成 HTML Code 後再對 HTML 合併與串連。綜合以上說明,我們可以省略 BRT Partition 的合併步驟,比起原先做法能有效減 少時間與硬碟讀寫及網路資料傳輸的成本。
第二節 視覺化介面的資料瀏覽:BRT Traversal
當使用者在視覺化地圖介面提出查詢指令(Query)後,系統傳回資料,使用者接下 來可以在此查詢指令做資料瀏覽,例如可針對特定網際網路區域的通訊流量作更加詳 細的閱覽或是回到前一次瀏覽畫面,而這些國家、AS、CIDR、IP 的上下瀏覽 ,系統 之 Visualization Server 需要與參與此查詢指令的計算節點間進行溝通,以找出擁有該 區域的 BRT Partition,請節點將資料回傳或是再次顯示先前瀏覽過的畫面。
為此,我們設計兩個加速使用者上下流覽的技術,透過降低回應時間讓 NetActy 達到較高的可互動性。在下面章節我們會介紹 Visualization Server 與計算節點之間的 通訊模式以及加速資料索取的技巧。
2.1 通訊模式
當使用者透過視覺化地圖介面選取特定區域的流覽需求後,Visualization Server 採
69
用輪詢 (Polling)的方式向各個計算節點詢問是否擁有該區域的 BRT Partition,如果 有,就將對應的資料回覆,否則就回傳空資訊表示該計算節點並沒有該區域的 BRT Partition。當 Visualization Server 完成一輪的詢問收到所有節點回覆,將結果給網站介 面呈現,完成此一流覽。
我們定義 Visualization Server 向各計算節點發送的資料需求訊息的內容格式如 下:
(Query Id_CN _AS _CIDR _IP_Display Level)
A. Query Id:當使用者下達有著時間、空間範圍與流量方向的 Query 指令時,系統會 給予一個獨立唯一的 Id 作為識別,並建立 BRT Partition。在一 Query 下的所有流 覽都使用相同 Id 允許在此 Query 的 BRT Partition 內作閱覽,若 Id 改變則代表新 的 Query 指令產生。
B. CN:欲查詢區域的國家名稱,當填入 ANY 則代表全部國家而沒有特定對象。
C. AS:欲查詢區域的 AS 名稱,當填入 ANY 則代表全部 AS 而沒有特定對象。
D. CIDR:欲查詢區域的 CIDR 名稱,當填入 ANY 則代表全部 CIDR 而沒有特定對 象。
E. IP:欲查詢區域的 IP 名稱,當填入 ANY 則代表全部 IP 而沒有特定對象。
F. Display Level:表示使用者想要呈現的網路層級,從 0 代表顯示國家、1 為顯示特 定或全部 AS、2 為特定或全部 CIDR 而 3 為特定或全部 IP。
所有可能的資料要求訊息我們以圖 30 表示。