吳禮華,陳源寶,黃 雙,謝 剛,江偉健
(1.武漢第二船舶設(shè)計(jì)研究所,湖北 武漢 430000;2.武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430000)
近年來,隨著網(wǎng)絡(luò)用戶和應(yīng)用數(shù)量的顯著增長,網(wǎng)絡(luò)運(yùn)營商不得不對(duì)基礎(chǔ)設(shè)施進(jìn)行大規(guī)模升級(jí),以滿足不斷增長的用戶需求。Cisco公司的調(diào)研報(bào)告指出,到2021年全球移動(dòng)數(shù)據(jù)流量將進(jìn)一步增長63%[1]。通過網(wǎng)絡(luò)監(jiān)控技術(shù)來感知網(wǎng)絡(luò)的性能對(duì)于現(xiàn)代化的運(yùn)維體系而言至關(guān)重要,我們不僅希望了解關(guān)于網(wǎng)絡(luò)流量的信息,還需要知道他們?cè)诰W(wǎng)絡(luò)傳輸過程中所經(jīng)歷的細(xì)節(jié)。因此,建立一個(gè)強(qiáng)大的網(wǎng)絡(luò)監(jiān)控系統(tǒng)有3個(gè)必須考慮的因素:測量信息的覆蓋面、測量值的精確度和測量任務(wù)所消耗的資源開銷。
然而,如今的很多監(jiān)控解決方案迫使用戶在這三者中做出取舍,其根本原因在于目前的方案過于依賴外部服務(wù)器對(duì)于數(shù)據(jù)的處理,當(dāng)網(wǎng)絡(luò)流量速度很快時(shí),將會(huì)率先成為系統(tǒng)的性能瓶頸。因?yàn)槟壳暗姆治鱿到y(tǒng)在面對(duì)高速流量時(shí),要么使用采樣的方式來降低收到的流量速率,要么必須采用針對(duì)性強(qiáng)的專用硬件,這樣不得不損失部分信息,抑或增加系統(tǒng)成本。因此,考慮在可編程交換機(jī)上實(shí)現(xiàn)一種能讓這兩種目標(biāo)兼顧的遙測系統(tǒng),即利用交換機(jī)中的可編程轉(zhuǎn)發(fā)流水線(Programmable Forwarding Engine,PFE)和運(yùn)行在交換機(jī)操作系統(tǒng)中的CPU等本地計(jì)算資源,結(jié)合網(wǎng)絡(luò)帶內(nèi)遙測(In-band Network Telemetry,INT)技術(shù)以及報(bào)文合并與壓縮技術(shù)在本地生成包含足夠信息量的遙測報(bào)告,即無需通過外置的服務(wù)器,直接在本地即可生成。這種方法無疑可以顯著降低成本,但是又會(huì)帶來新的挑戰(zhàn),即交換機(jī)本地計(jì)算資源難以承擔(dān)高速流量(Tbit/s級(jí))下的報(bào)告生成任務(wù)。因此本文主要研究如何在面對(duì)高速流量時(shí),在交換機(jī)本地生成高精度、特征參數(shù)豐富的測量報(bào)告,提出了一種可部署在硬件交換機(jī)上的批量計(jì)算測量報(bào)告生成方法。
數(shù)據(jù)平面的主要功能是實(shí)現(xiàn)數(shù)據(jù)包的處理和轉(zhuǎn)發(fā),一般由交換機(jī)或路由器等組成,它將數(shù)據(jù)包作為輸入,經(jīng)過流水線式的處理后將它們從指定端口輸出。在傳統(tǒng)數(shù)據(jù)平面設(shè)備中通常由專用集成電路(ASIC)負(fù)責(zé)實(shí)現(xiàn)。這些ASIC通常是可配置的,但是其能夠執(zhí)行的轉(zhuǎn)發(fā)邏輯在設(shè)計(jì)之初是固定好的。
軟件定義網(wǎng)絡(luò)(SDN)[2]是一種全新的網(wǎng)絡(luò)體系架構(gòu),它的核心思想包括將網(wǎng)絡(luò)中控制平面和數(shù)據(jù)平面的解耦以及可編程的特性,它將控制平面從封閉的網(wǎng)絡(luò)設(shè)備中剝離出來,而數(shù)據(jù)平面以通用“白盒”硬件的形式存在。網(wǎng)絡(luò)監(jiān)控系統(tǒng)的主要功能是掌握網(wǎng)絡(luò)中各種流量的當(dāng)前狀態(tài),并為其建立模型來描述當(dāng)前和未來網(wǎng)絡(luò)的運(yùn)行狀態(tài)。這些被監(jiān)控系統(tǒng)感知到的狀態(tài)信息可以用來進(jìn)行深度分析,解決比如網(wǎng)絡(luò)故障定位等問題。
P4.org推出了一種專用的編程語言P4(Programming Protocol-Independent Packet Processors)[3]來配置可編程數(shù)據(jù)平面,這是一種用于網(wǎng)絡(luò)數(shù)據(jù)平面的特定域編程語言,它可以描述網(wǎng)絡(luò)中的可編程轉(zhuǎn)發(fā)設(shè)備(如硬件或軟件交換機(jī)、可編程智能網(wǎng)卡及路由器等)處理數(shù)據(jù)包的方式和流程,讓數(shù)據(jù)平面的功能得到進(jìn)一步開放。
可編程交換機(jī)上實(shí)現(xiàn)一種遙測系統(tǒng)能同時(shí)兼顧測量精度、覆蓋范圍和降低硬件成本,即利用交換機(jī)中的可編程轉(zhuǎn)發(fā)流水線和運(yùn)行在交換機(jī)操作系統(tǒng)中的CPU等本地計(jì)算資源,結(jié)合網(wǎng)絡(luò)帶內(nèi)遙測技術(shù)、報(bào)文合并與壓縮技術(shù)在本地生成包含足夠信息量的遙測報(bào)告,即無需通過外置服務(wù)器,直接在本地生成。
網(wǎng)絡(luò)帶內(nèi)遙測[4]是一種典型的背負(fù)式測量方法,其核心思想是在普通數(shù)據(jù)包的轉(zhuǎn)發(fā)過程中,利用可編程流水線能識(shí)別的指令在數(shù)據(jù)包頭中插入一些需要的元數(shù)據(jù)(比如時(shí)間戳),從而使測量能力擁有數(shù)據(jù)包級(jí)別而不是流級(jí)別的細(xì)粒度。由于整個(gè)過程只在數(shù)據(jù)平面內(nèi)部完成,無需控制平面參與,使得數(shù)據(jù)平面自動(dòng)擁有了端到端的數(shù)據(jù)搜集能力,能夠?qū)崟r(shí)掌握網(wǎng)絡(luò)狀態(tài)信息。然而,這種方法雖然帶來了高精度、高細(xì)粒度、高實(shí)時(shí)性的好處,同時(shí)也會(huì)帶來采集數(shù)據(jù)冗余的問題。為了節(jié)省不必要的處理開銷,針對(duì)不同測量需求,需要在處理測量報(bào)告時(shí),在采樣精度方面做出針對(duì)性的調(diào)整。
測量指標(biāo)的豐富程度,用于評(píng)價(jià)測量報(bào)告中包含的自定義統(tǒng)計(jì)信息和元數(shù)據(jù)的種類多少。擁有自定義測量參數(shù)的功能就可以支持更多的應(yīng)用,因?yàn)椴煌δ艿膽?yīng)用程序需要不同的測量參數(shù),以BOT Net檢測[5]、QoS測量[6]和Incast故障調(diào)試[7]三種常見任務(wù)為例。BOT Net檢測主要依靠系統(tǒng)分析主機(jī)之間的通信模式,僅使用報(bào)告中數(shù)據(jù)包的基本屬性(例如數(shù)據(jù)包計(jì)數(shù)器、字節(jié)計(jì)數(shù)器和時(shí)間戳)就能實(shí)現(xiàn)。QoS測量需要一些網(wǎng)絡(luò)性能的統(tǒng)計(jì)信息,如丟棄數(shù)據(jù)包計(jì)數(shù)和路徑延遲。而Incast問題的調(diào)試則需要使用平均隊(duì)列深度這個(gè)指標(biāo)來評(píng)價(jià)交換機(jī)的內(nèi)部運(yùn)行情況。除了支持更多的應(yīng)用之外,豐富的測量指標(biāo)還可以提高許多應(yīng)用程序的性能,例如基于機(jī)器學(xué)習(xí)的分類器[8]或網(wǎng)絡(luò)異常檢測器[9],它們可以同時(shí)利用多種特征參數(shù)。
我們的需求是在不犧牲測量信息豐富度的情況下,實(shí)現(xiàn)高覆蓋、高精度的網(wǎng)絡(luò)監(jiān)控。結(jié)合可編程數(shù)據(jù)平面的特點(diǎn)以及INT的優(yōu)勢,考慮利用P4的靈活性對(duì)可編程交換機(jī)的功能進(jìn)行優(yōu)化,使其能夠在本機(jī)上為超高速流量(即>1 Tbit/s)生成可定制的測量報(bào)告(INT report),而且無需進(jìn)行采樣操作或依賴外部服務(wù)器的支持。
如果要使用可編程交換機(jī)中的計(jì)算資源直接以Tbit/s速率生成測量報(bào)告是很難的[10]??删幊探粨Q機(jī)內(nèi)部有兩種計(jì)算資源:可編程轉(zhuǎn)發(fā)引擎(Programmable Forwarding Engine,PFE)和通用CPU(例如,多核心的XEON處理器)。這兩個(gè)處理器本身都不能支持測量報(bào)告的生成,一方面因?yàn)镻FE本身沒有足夠的內(nèi)存來跟蹤所有并發(fā)的流量,并且其計(jì)算模型往往受限(為單一功能準(zhǔn)備),這些模型不支持測量報(bào)告生成所需的復(fù)雜數(shù)據(jù)結(jié)構(gòu)。另一方面,交換機(jī)上的通用CPU也無法提供足夠的吞吐量。
我們的目標(biāo)是將產(chǎn)生INT report的功能直接部署到數(shù)據(jù)平面的交換機(jī)上。所以,需要將整個(gè)報(bào)告的產(chǎn)生工作分解成兩個(gè)互補(bǔ)的部分,讓這兩部分分別被兩種處理器處理。首先可利用PFE對(duì)INT包頭中攜帶的測量數(shù)據(jù)進(jìn)行預(yù)處理,以減少后續(xù)CPU所需的工作量,而CPU則專注于處理那些PFE無法計(jì)算的復(fù)雜邏輯,每種處理器都依靠另一個(gè)處理器來克服其自身的局限性。
如圖1所示,首先讓PFE在流水線上生成Mini report,但每次生成只考慮每條流中最近到達(dá)的一批數(shù)據(jù)包(小型批處理)。這樣在PFE中生成Mini report而不是完整的測量報(bào)告減少了對(duì)于內(nèi)存的需求,并允許使用更適合PFE處理的數(shù)據(jù)結(jié)構(gòu)(例如哈希表)。每當(dāng)兩條流發(fā)生沖突時(shí),PFE會(huì)將較舊流的Mini report優(yōu)先發(fā)送到交換機(jī)CPU并更新表項(xiàng)。這種精簡的計(jì)算邏輯可以在計(jì)算資源和模型嚴(yán)重受限的可編程交換機(jī)的PFE上實(shí)現(xiàn)。然后,PFE的DMA引擎再將Mini report傳輸?shù)紺PU的主存儲(chǔ)器,在該內(nèi)存中配置有一個(gè)聚合器,使用針對(duì)測量任務(wù)優(yōu)化過的哈希表將它們重新組合成完整的INT report。最后,這些INT report可以直接導(dǎo)出到外部收集器或分析服務(wù)器,而無需任何額外的處理。使用這種方案,即使在交換機(jī)的CPU上運(yùn)行的聚合器也不需要用采樣的方式來減緩高速流量。
圖1 本地生成INT report示意圖Fig.1 Generate INT report schematics locally
如圖2所示,為可編程交換機(jī)系統(tǒng)結(jié)構(gòu)圖,整個(gè)系統(tǒng)分為兩層,下層是可編程的硬件流水線PFE,可用P4語言描述其功能,支持全線速轉(zhuǎn)發(fā),用于對(duì)收到的流量進(jìn)行分段生成Mini report,上層是交換機(jī)內(nèi)置Linux操作系統(tǒng)和通用CPU,用于將多個(gè)Mini report組合成完整的INT report后導(dǎo)出到外部數(shù)據(jù)分析平臺(tái)。
可編程交換機(jī)上的通用CPU和專用可編程轉(zhuǎn)發(fā)引擎(PFE)。如前所述,這兩種處理器單獨(dú)運(yùn)行都不能支持生成完整INT report的工作。交換機(jī)CPU無法滿足支持所需的處理速度,例如,對(duì)于Tbit/s級(jí)速率的流量而言,每秒會(huì)收到數(shù)億個(gè)數(shù)據(jù)包。主要的瓶頸是將數(shù)據(jù)包轉(zhuǎn)換成INT report的過程,由于內(nèi)存延遲高,鍵值對(duì)比較的操作需要花費(fèi)很多個(gè)時(shí)鐘周期。例如,在Wedge100 BF-32x的CPU上使用Redis所支持的吞吐量約為500 packge/s,比要求的速度低兩個(gè)數(shù)量級(jí)。另一方面,PFE雖然可以使用片上內(nèi)存,以很高的速率執(zhí)行鍵值對(duì)查找的任務(wù),但這個(gè)內(nèi)存太小,無法存儲(chǔ)足夠的INT report以滿足整個(gè)測量任務(wù)的需要。此外,PFE屬于受限計(jì)算模型[5],該模型阻止了PFE,以線速實(shí)現(xiàn)除查找(例如插入)以外的對(duì)完整鍵值(key-value)數(shù)據(jù)結(jié)構(gòu)的操作。
圖2 系統(tǒng)結(jié)構(gòu)圖Fig.2 System structure drawing
通過將INT report生成算法分解為適合PFE和CPU的兩個(gè)部分,其中,PFE僅僅負(fù)責(zé)產(chǎn)生微報(bào)告(Mini report),用于收集短時(shí)間內(nèi)的活動(dòng)流量,這樣可以減少并發(fā)處理的次數(shù),以降低內(nèi)存開銷,同時(shí)這樣做有利于將更簡單的數(shù)據(jù)結(jié)構(gòu)映射到PFE硬件上。在交換機(jī)CPU上運(yùn)行的Mini report聚合器使用優(yōu)化過的key-value數(shù)據(jù)結(jié)構(gòu),負(fù)責(zé)最后將它們組合在一起形成完整的INT report,以發(fā)揮CPU適合做復(fù)雜運(yùn)算的特點(diǎn)。由于在Mini report上操作而不是直接在數(shù)據(jù)包上操作可能會(huì)降低CPU鍵值操作的速率,所以需要對(duì)CPU線程進(jìn)行優(yōu)化,降低單條報(bào)告的計(jì)算成本,以最大限度地提高總吞吐量。
如圖3所示,交換機(jī)的CPU上主要運(yùn)行Mini report聚合器,并將從PFE中收到的Mini report片段組合成完整的INT report。
圖3 內(nèi)部結(jié)構(gòu)圖Fig.3 Internal structure diagram
設(shè)計(jì)Mini report聚合器的挑戰(zhàn)在于優(yōu)化鍵值運(yùn)算的數(shù)據(jù)結(jié)構(gòu),使其能夠?qū)ini report合并成完整INT report的速率最大化。主要分為以下步驟:
(1) 從提交緩沖區(qū)讀取Mini report
PFE的DMA引擎從提交緩沖區(qū)中讀取Mini report,然后拷貝到交換機(jī)主內(nèi)存中的環(huán)形緩沖區(qū)。Mini report聚合器以批處理的方式對(duì)Mini report進(jìn)行合并,然后將空閑單元的地址重新發(fā)送到DMA引擎,這種工作方式與某些高性能網(wǎng)卡的工作方式類似,只要存在可用的空閑單元,DMA引擎就可以動(dòng)態(tài)地調(diào)整拷貝速率?;诙嗪颂幚砥鞯膬?yōu)勢,多個(gè)Mini report聚合器可以與獨(dú)立的緩沖區(qū)同時(shí)工作,PFE會(huì)基于鍵值對(duì)的判斷標(biāo)志來自動(dòng)平衡提交的Mini report與這些緩沖區(qū)的關(guān)系。
(2) 以哈希表的形式存儲(chǔ)Mini report
聚合器以哈希表的形式存儲(chǔ)那些活動(dòng)流量的Mini report,對(duì)于每個(gè)Mini report,聚合器要么通過插入新INT report來更新現(xiàn)有報(bào)告的特征參數(shù),要么直接拷貝INT report到輸出緩沖器,然后移除其對(duì)應(yīng)的哈希表。
然而,這樣的操作方式,導(dǎo)致哈希表的效率成為聚合器的性能瓶頸,所以對(duì)其進(jìn)行優(yōu)化是需要關(guān)注的重點(diǎn)問題。考慮了4種優(yōu)化哈希表性能的方法:
① 線性探測法(Linear Probing,LP):線性探測法對(duì)哈希表進(jìn)行線性搜索,它可以顯著提高INT report的輸出吞吐量。當(dāng)哈希表出現(xiàn)匹配失敗時(shí),下一個(gè)待處理的報(bào)告已經(jīng)被CPU讀入緩存了。
② Flat Table:在這種方法中,聚合器會(huì)直接在哈希表中存儲(chǔ)報(bào)告內(nèi)容,如每個(gè)表項(xiàng)中存儲(chǔ)一個(gè)報(bào)告文件,而不是通過指向容器地址的指針。這樣做的好處是提高多份報(bào)告之間的關(guān)聯(lián)性,節(jié)省了時(shí)鐘周期的數(shù)量,并進(jìn)一步減少了緩存失配的可能性。
③ 鍵值合并法(Integer Key,IK):該方法讓聚合器使用兩個(gè)64 bit整型數(shù)組表示流的鍵值,第一個(gè)數(shù)組存儲(chǔ)IP地址,第二個(gè)存儲(chǔ)端口ID、協(xié)議類型以及物理鏈路ID。這樣就可以利用SSE4.1來進(jìn)行128 bit鍵值對(duì)處理,這樣就只需要兩個(gè)指令周期。
④ 查找表預(yù)讀取(Lookup Prefetching,LPre):聚合器通過批處理查找的方式來降低內(nèi)存延時(shí),它會(huì)預(yù)先從哈希表項(xiàng)中讀取那些最有可能被提前處理的報(bào)告,預(yù)讀取哈希表的方法可以算是對(duì)線性探測法的補(bǔ)充,因?yàn)楫?dāng)報(bào)告不在預(yù)期的表項(xiàng)中時(shí),預(yù)讀取的方法仍然會(huì)加載它。
(3) 重新封裝合并成INT report
CPU中有一個(gè)獨(dú)立線程用于將提交的INT report合并成數(shù)據(jù)包的形式,然后發(fā)送到外置的分析服務(wù)器。同時(shí),它還會(huì)周期性地掃描哈希表項(xiàng),并刪除那些因?yàn)槲刺幚矶瑫r(shí)的流。
實(shí)驗(yàn)平臺(tái)基于5臺(tái)Edgecore公司生產(chǎn)的可編程交換機(jī)Wedge 100BF-32X,它擁有32個(gè)100 Gbit/s端口,使用Barefoot公司的TofinoP4可編程交換芯片,和Intel D1517四核CPU,內(nèi)置8GB RAM。實(shí)驗(yàn)平臺(tái)拓?fù)淙鐖D4所示,Mini report聚合器模塊在Linux系統(tǒng)上使用C++實(shí)現(xiàn)。生成的INT report中包含IP五元組和另外幾種測量參數(shù): CPU利用率、數(shù)據(jù)包總數(shù)、字節(jié)總數(shù)、入口時(shí)間戳和出口時(shí)間戳。測試流量的設(shè)置如表1所示。
圖4 實(shí)驗(yàn)平臺(tái)結(jié)構(gòu)圖Fig.4 Experimental platform structure diagram
實(shí)驗(yàn)中使用Ixia公司的IxLoad工具包來產(chǎn)生測試流量,流量模式為數(shù)據(jù)中心模式。為了模擬出數(shù)據(jù)包速率和活動(dòng)流的數(shù)量隨著鏈路容量線性變換的場景,提前對(duì)Mini report表項(xiàng)進(jìn)行了設(shè)置,為有流量接入的鏈路提前分配了不同的段,并在每個(gè)活躍鏈路的Mini report與CPU緩沖區(qū)之間配置了靜態(tài)負(fù)載均衡。
表1 測試流量Tab.1 Test flow
首先測量Tofino的PFE,用于生成Mini report時(shí)消耗的片上資源。在Tofino的PFE上,Mini report生成器可以達(dá)到線速運(yùn)行,因此問題通過統(tǒng)計(jì)消耗的Tofino片上資源來確定還剩余多少資源可供其余功能單元使用。此處以Tofino中4種主要的片上資源為對(duì)象:可編程轉(zhuǎn)發(fā)表(Match-Action Table,MAT)、超長指令字(Very Long Instruction Word,VLIW)、帶狀態(tài)算術(shù)邏輯單元(stateful Arithmetic and Logic Unit,sSLU)以及三態(tài)內(nèi)容尋址存儲(chǔ)器(Ternary Content Addressable Memory,TCAM)。
由表2可以看出哈希的計(jì)算不需要額外的資源,而Tofino中大部分的sALU被消耗,這是因?yàn)樵谠L問寄存器數(shù)組時(shí),通過配置sALU的方法來計(jì)算數(shù)據(jù)包的哈希,因此避免了這些計(jì)算步驟。
表2 Tofino PFE的資源消耗Tab.2 Resource consumption of Tofino PFE
然后,測試Tofino的PFE中Mini report的生成效率,PFE通過生成Mini report的方式,明顯減少了交換機(jī)CPU的計(jì)算負(fù)荷。利用Mini report與數(shù)據(jù)包的比率隨著PFE中內(nèi)存消耗的變化來描述這種效果。圖5描述了TOR和AGG交換機(jī)的Mini report生成率。由圖5可以看出,初期每10個(gè)包就會(huì)生成一個(gè)Mini report,隨著消耗PFE內(nèi)存的增加,處理能力逐漸增強(qiáng)到每50個(gè)包產(chǎn)生一個(gè)Mini report,此時(shí)僅需要消耗100 K PFE內(nèi)存,然后生成效率趨于穩(wěn)定,隨后即使占用更多的內(nèi)存也不會(huì)再提高生成效率,說明已經(jīng)達(dá)到最佳值,大約每65個(gè)包產(chǎn)生一個(gè)Mini report。
圖5 Mini report生成效率Fig.5 Mini report generation efficiency
由于CPU層的聚合器模塊是采用哈希表存儲(chǔ)的方式處理Mini report,所以如何優(yōu)化哈希表的性能非常重要。因此對(duì)比了2.3節(jié)介紹的4種不同哈希表優(yōu)化方法,其中加入了使用Redis數(shù)據(jù)庫做存儲(chǔ)的數(shù)據(jù)作為參考。由圖6可以看出,4種優(yōu)化方法的吞吐量都是隨著CPU核心數(shù)的增加而增加,其中優(yōu)化效果最好的是LPre方法,在4個(gè)核心全部啟動(dòng)時(shí)可以接近40 Mrps。
圖6 吞吐量對(duì)比Fig.6 Throughput comparison
表3 統(tǒng)計(jì)了添加多種額外特征參數(shù)時(shí)生成INT report所需要消耗的硬件資源的變化。由表3可以看出,在Tofino的PFE中,為了添加新的特征參數(shù),需要額外消耗8個(gè)MAT和sALU。對(duì)于交換機(jī)的CPU而言,新參數(shù)的加入對(duì)吞吐量的影響較小,因?yàn)槠款i的出現(xiàn)是由大量針對(duì)Mini report的操作造成的,而不是針對(duì)單個(gè)Mini report中的字節(jié)進(jìn)行操作造成的。
表3 添加特征參數(shù)引起的開銷變化Tab.3 Changes in overhead caused by adding feature parameters
表4的統(tǒng)計(jì)結(jié)果表明,即使只使用少量的PFE內(nèi)存,Mini report與CPU之間的傳輸速率相比于Tofino PCIe3.0X4接口可達(dá)32 Gbit/s的速度而言也很低。同時(shí)可以發(fā)現(xiàn),將經(jīng)過交換機(jī)本地處理后的INT report發(fā)送到外部收集器時(shí)所消耗的網(wǎng)絡(luò)帶寬很低,只相當(dāng)于同等信息量下原始報(bào)告流量的1/1 000,說明這是一種對(duì)外部服務(wù)器要求不高的解決方案。
表4 通信開銷Tab.4 Communication overhead
利用P4可編程交換機(jī)來實(shí)現(xiàn)一種批量計(jì)算測量報(bào)告的方法,該方案將網(wǎng)絡(luò)測量報(bào)告的生成工作轉(zhuǎn)移到交換機(jī)本地進(jìn)行,設(shè)計(jì)了一種二段式報(bào)告生成方法。先讓交換機(jī)的PFE對(duì)接受到的INT包數(shù)據(jù)進(jìn)行小規(guī)模批處理,生成微報(bào)告;然后通過DMA的方式上傳至CPU層,利用CPU對(duì)它們做二級(jí)聚合,將這些微報(bào)告合并成完整的測量報(bào)告。實(shí)驗(yàn)表明,這種方案可以使商用可編程交換機(jī)支持Tbit級(jí)別的處理任務(wù),從而能夠在單節(jié)點(diǎn)上實(shí)現(xiàn)高覆蓋率的網(wǎng)絡(luò)測量,既保障了測量指標(biāo)的豐富程度,又降低了計(jì)算成本。