許多ntop產(chǎn)品,如ntopng、nProbe和PF_RING FT等都是基于網(wǎng)絡(luò)流的。然而,并不是所有的用戶都詳細知道什么是網(wǎng)絡(luò)流,以及它在實踐中是如何工作的。這篇博客文章描述了它們是什么以及它們在實踐中是如何工作的。
什么是網(wǎng)絡(luò)流量
網(wǎng)絡(luò)流是一組具有公共財產(chǎn)的數(shù)據(jù)包。它們通常由5元組密鑰標識,這意味著給定流的所有數(shù)據(jù)包都具有相同的源和目的IP、源和目的端口以及應(yīng)用協(xié)議(例如TCP)。在實踐中,流密鑰還至少包括VLAN Id,并且最終包括諸如封裝業(yè)務(wù)的隧道ID之類的其他屬性。流是一種通過使用公共密鑰對數(shù)據(jù)包進行聚類然后對流量進行分類的方法,它與運行netstat-na等命令時在計算機上看到的情況類似。每個流都有各種計數(shù)器,用于跟蹤流數(shù)據(jù)包/字節(jié)和各種其他屬性,如流計時器(第一個和最后一個流數(shù)據(jù)包的時間)、統(tǒng)計信息(重傳、數(shù)據(jù)包無序等)和安全屬性(例如流風(fēng)險)。
流量是如何存儲在內(nèi)存中的?
網(wǎng)絡(luò)流保存在一個名為流緩存的數(shù)據(jù)結(jié)構(gòu)中(通常使用哈希表實現(xiàn)),該數(shù)據(jù)結(jié)構(gòu)不斷地提供傳入的數(shù)據(jù)包。流高速緩存在存儲器中存儲活動流(即,當接收到屬于流的分組時仍然活動的那些流)。下面您可以看到ntopng如何顯示實時流緩存及其5元組密鑰。
網(wǎng)絡(luò)流何時開始?
一旦觀察到第一個流分組,網(wǎng)絡(luò)流就開始。在啟動時,流緩存是空的,并且隨著數(shù)據(jù)包的接收而被填滿。對每個傳入的數(shù)據(jù)包進行解碼,并計算流密鑰。在流緩存中搜索這樣的密鑰:如果沒有找到,則向流緩存中添加新的條目,否則更新具有這樣的密鑰的現(xiàn)有條目,即更新流數(shù)據(jù)包/字節(jié)和計時器的計數(shù)器。因此,本質(zhì)上,當觀察到第一個流分組時,流就開始了。
網(wǎng)絡(luò)流何時結(jié)束?
每個流都有兩個老化計時器:空閑計時器(它跟蹤自接收到最后一個流數(shù)據(jù)包以來已經(jīng)過去了多少時間)和持續(xù)時間計時器(它記錄流持續(xù)的時間)。當這兩個老化定時器中的一個到期時,即當流空閑太長(例如,有一段時間沒有接收到分組)或當流在流高速緩存中存儲太長時,流結(jié)束。在nProbe和PF_RING FT中,當流過期時,它將從流緩存中刪除并發(fā)送到收集器。相反,在ntopng中,從流緩存中刪除流只是為了空閑,因為持久流不會從緩存中刪除。原因是像nProbe這樣的流量探測器需要定期向收集器(例如ntopng)報告有關(guān)監(jiān)控流量的信息,因此流量會被“剪切”并發(fā)送到收集器。相反,在ntopng中,不需要通知收集器,因此只要在首選項中配置了必要的內(nèi)容,流就會留在內(nèi)存中。
流的關(guān)鍵點和方向
如果流是在接收到第一個流數(shù)據(jù)包時創(chuàng)建的,那么我們可以將流客戶端視為真正的網(wǎng)絡(luò)客戶端。例如,從主機1.2.3.4上的客戶端到主機5.6.7.8的SSH,這種通信的流程將是1.2.3.4:X<->5.6.7.8:22(我們假設(shè)SSH在端口22上運行)。看起來是對的吧?但有時你會看到,在流緩存中,這樣的流被報告為5.6.7.8:22<->1.2.3.4:X。為什么?這可能是由于各種原因造成的:
- 應(yīng)用程序(例如ntopng)在流開始后啟動,ntopng觀察到的第一個數(shù)據(jù)包是5.6.7.8:22->1.2.3.4:X,而不是1.2.3.4:X->5.6.7.8:22。
- 流使用正確的密鑰存儲在緩存中,但有一段時間(例如2分鐘)沒有交換數(shù)據(jù)包,因此應(yīng)用程序已將流聲明為過期,并將其從流緩存中刪除。然后,如果突然觀察到一個新的數(shù)據(jù)包,則該數(shù)據(jù)包可能會被發(fā)送到錯誤的方向(例如5.6.7.8:22->1.2.3.4:X),因為這可能是服務(wù)器的保存數(shù)據(jù)包。在這種情況下,流以相反的方向(9,因此是錯誤的)放置在高速緩存中。
可以配置ntopng(通過首選項)和nProbe(使用帶有-t和-d的命令行)流超時,因此這些問題得到了緩解(盡管沒有完全解決)。然而,僅僅調(diào)整超時是不夠的,特別是對于UDP流,因為與TCP相反,沒有TCP標志可以用來猜測真實的流方向。因此,ntopng實現(xiàn)了一些啟發(fā)式來交換流向,但這種啟發(fā)式不能太激進,因為我們可能會報告無效信息。
我們希望這篇文章能讓大家明白基于流量的網(wǎng)絡(luò)流量分析是如何工作的,以及為什么有時會觀察到一些“意外”行為,不是因為漏洞,而是因為這些測量的性質(zhì)。
-
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7553瀏覽量
88729 -
流量
+關(guān)注
關(guān)注
0文章
245瀏覽量
23891 -
流量監(jiān)控
+關(guān)注
關(guān)注
0文章
17瀏覽量
7366
發(fā)布評論請先 登錄
相關(guān)推薦
評論