Suricata文檔——第七章性能

7.1. Runmodes

Suricata由多個(gè)稱為線程弥锄,線程模塊和隊(duì)列的“構(gòu)建塊”組成丧靡。 線程就像一個(gè)在計(jì)算機(jī)上運(yùn)行的進(jìn)程。 Suricata是多線程的籽暇,所以多個(gè)線程一次處于活動(dòng)狀態(tài)温治。
線程模塊是功能的一部分。 一個(gè)模塊用于解碼數(shù)據(jù)包戒悠,另一個(gè)模塊是檢測模塊熬荆,另一個(gè)模塊是輸出模塊。 一個(gè)數(shù)據(jù)包可以被多個(gè)線程處理绸狐。 數(shù)據(jù)包將通過隊(duì)列傳遞到下一個(gè)線程卤恳。 數(shù)據(jù)包一次只能由一個(gè)線程處理,但是引擎一次可以處理多個(gè)數(shù)據(jù)包寒矿。 (請參閱Max-pending-packets)一個(gè)線程可以有一個(gè)或多個(gè)線程模塊突琳。 如果他們有更多的模塊,他們只能一次活動(dòng)符相。 線程拆融,模塊和隊(duì)列排列在一起的方式稱為Runmode。

7.1.1不同的Runmodes

您可以從幾個(gè)預(yù)定義的運(yùn)行模式中選擇一個(gè)運(yùn)行模式啊终。 命令行選項(xiàng)-list-runmodes顯示所有可用的運(yùn)行模式镜豹。 所有運(yùn)行模式都有一個(gè)名稱:auto,single孕索,autofp逛艰。 最重要的任務(wù)是檢測; 一個(gè)數(shù)據(jù)包將被檢查數(shù)千個(gè)簽名躏碳。
默認(rèn)運(yùn)行模式的示例:


默認(rèn)運(yùn)行模式

在pfring模式下搞旭,每個(gè)流程在運(yùn)行模式中遵循其自己的固定路線。


pfring 模式

有關(guān)與runmode有關(guān)的命令行選項(xiàng)的更多信息菇绵,請參閱命令行選項(xiàng)肄渗。

7.2 抓包

7.2.1負(fù)載均衡

為了獲得最佳表現(xiàn),Suricata將需要以“worker”模式運(yùn)行咬最。這實(shí)際上意味著有多個(gè)線程翎嫡,每個(gè)線程運(yùn)行一個(gè)完整的數(shù)據(jù)包管道,每個(gè)線程都從捕獲方法接收數(shù)據(jù)包永乌。這意味著我們依靠捕獲方法來將數(shù)據(jù)包分發(fā)到各個(gè)線程上惑申。其中一個(gè)關(guān)鍵的方面就是Suricata需要以正確的順序在同一個(gè)線程中獲取流程的兩個(gè)方面具伍。

AF_PACKET和PF_RING捕獲方法都有選擇“集群類型”的選項(xiàng)。這些默認(rèn)為'cluster_flow'圈驼,它指示捕獲方法按流(5元組)進(jìn)行散列人芽。這個(gè)散列是對稱的。
Netmap沒有內(nèi)置的cluster_flow模式绩脆∮┨可以使用“l(fā)b”工具單獨(dú)添加:https://github.com/luigirizzo/netmap/tree/master/apps/lb

警告最近的AF_PACKET變化已經(jīng)“broken”:https://redmine.openinfosecfoundation.org/issues/1777這種對稱性。目前正在進(jìn)行“解決這個(gè)問題”的工作:https://redmine.openinfosecfoundation.org/issues/1777#note-7靴迫,但現(xiàn)在停留在內(nèi)核<= 4.2或更新到4.4.16+惕味,4.6.5+或4.7+。

在幾乎所有現(xiàn)代NIC的多隊(duì)列NIC上玉锌,都需要考慮RSS設(shè)置名挥。

7.2.2. RSS

接收端縮放(RSS)是網(wǎng)卡使用的一種技術(shù),用于將傳入流量分配到網(wǎng)卡上的各個(gè)隊(duì)列中主守。 這是為了提高性能躺同,但重要的是要認(rèn)識到它是為正常流量設(shè)計(jì)的,而不是針對IDS數(shù)據(jù)包捕獲的情況丸逸。 RSS使用哈希算法來將傳入流量分配到各個(gè)隊(duì)列中蹋艺。 這個(gè)散列通常不是對稱的。 這意味著當(dāng)接收到一個(gè)流的雙方時(shí)黄刚,每一方都可能以不同的隊(duì)列結(jié)束捎谨。 可悲的是,在部署Suricata時(shí)憔维,這是使用跨度端口或水龍頭(Trap)時(shí)的常見情況涛救。

這里的問題是,通過使流量的兩端處于不同的隊(duì)列中业扒,分組處理的順序變得不可預(yù)知检吆。 網(wǎng)卡,驅(qū)動(dòng)程序程储,內(nèi)核和Suricata上的時(shí)間差異將導(dǎo)致數(shù)據(jù)包進(jìn)入的順序高于網(wǎng)絡(luò)蹭沛。 這具體是關(guān)于兩個(gè)交通方向之間的不匹配。 例如章鲤,Suricata跟蹤TCP 3次握手摊灭。 由于這個(gè)時(shí)間問題,在客戶端到服務(wù)器端已經(jīng)開始發(fā)送數(shù)據(jù)之后败徊,SYN / ACK只能被Suricata接收帚呼。 Suricata會將此流量視為無效。
AF_PACKET,PF_RING或NETMAP等支持的捕獲方法都不能解決這個(gè)問題煤杀。 這將需要緩沖和分組重新排序眷蜈,這是昂貴的。

要查看配置了多少個(gè)隊(duì)列:

$ ethtool -l ens2f1
Channel parameters for ens2f1:
Pre-set maximums:
RX: 0
TX: 0
Other: 1
Combined: 64
Current hardware settings:
RX: 0
TX: 0
Other: 1
Combined: 8

有些網(wǎng)卡允許您將其設(shè)置為對稱模式沈自。 英特爾X(L)710卡在理論上可以做到這一點(diǎn)端蛆,但是驅(qū)動(dòng)程序還沒有能力做到這一點(diǎn)(工作正在努力解決這個(gè)問題)。 另一個(gè)解決的方法是設(shè)置一個(gè)特殊的“隨機(jī)密鑰”酥泛,使RSS對稱今豆。 見http://www.ndsl.kaist.edu/~kyoungsoo/papers/TR-symRSS.pdf(PDF)。

然而柔袁,在大多數(shù)情況下呆躲,最佳解決方案是將RSS隊(duì)列的數(shù)量減少到1:
例:

Intel X710 with i40e driver:

ethtool -L $DEV combined 1

有些驅(qū)動(dòng)程序不支持通過ethtool設(shè)置隊(duì)列的數(shù)量。 在某些情況下捶索,有一個(gè)模塊加載時(shí)間選項(xiàng)插掂。 閱讀驅(qū)動(dòng)程序文檔的具體信息。

7.2.3 卸載

網(wǎng)卡腥例,驅(qū)動(dòng)程序和內(nèi)核本身有各種技術(shù)來加速數(shù)據(jù)包的處理辅甥。 通常這些都將被禁用。
LRO / GRO導(dǎo)致將各種較小的數(shù)據(jù)包合并為大“超級數(shù)據(jù)包”燎竖。 這些將需要被禁用璃弄,因?yàn)樗麄兇蚱屏薲size關(guān)鍵字以及TCP狀態(tài)跟蹤。
可以在AF_PACKET和PF_RING上啟用校驗(yàn)和卸載构回,但需要在PCAP夏块,NETMAP等上禁用。

7.2.4 建議

閱讀你的驅(qū)動(dòng)文檔纤掸! 例如脐供。 對于i40e,RSS隊(duì)列的ethtool更改可能會導(dǎo)致內(nèi)核恐慌借跪,如果做錯(cuò)了政己。

通用:將RSS隊(duì)列設(shè)置為1或確保RSS散列是對稱的。 禁用NIC卸載掏愁。

AF_PACKET:1個(gè)RSS隊(duì)列并停留在內(nèi)核<= 4.2或者確保你有> = 4.4.16歇由,> = 4.6.5或> = 4.7。
例外:如果RSS是對稱群集類型托猩,可以使用“cluster_qm”將Suricata綁定到RSS隊(duì)列印蓖。 禁用除rx / tx csum之外的NIC卸載。

PF_RING:1個(gè)RSS隊(duì)列并使用群集類型“cluster_flow”京腥。 禁用除rx / tx csum之外的NIC卸載。

NETMAP:1個(gè)RSS隊(duì)列溅蛉。 沒有內(nèi)置的基于流量的負(fù)載平衡公浪,但'lb'工具可以有幫助他宛。 另一個(gè)選擇是使用'autofp'runmode。
例外:如果RSS是對稱的欠气,則負(fù)載平衡基于RSS哈希厅各,并且可以使用多個(gè)RSS隊(duì)列。 禁用所有NIC卸載预柒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末队塘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宜鸯,更是在濱河造成了極大的恐慌憔古,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淋袖,死亡現(xiàn)場離奇詭異鸿市,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)即碗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門焰情,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人剥懒,你說我怎么就攤上這事内舟。” “怎么了初橘?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵谒获,是天一觀的道長。 經(jīng)常有香客問我壁却,道長批狱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任展东,我火速辦了婚禮赔硫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盐肃。我一直安慰自己爪膊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布砸王。 她就那樣靜靜地躺著推盛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谦铃。 梳的紋絲不亂的頭發(fā)上耘成,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼瘪菌。 笑死撒会,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的师妙。 我是一名探鬼主播诵肛,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼默穴!你這毒婦竟也來了怔檩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蓄诽,失蹤者是張志新(化名)和其女友劉穎薛训,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體若专,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡许蓖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了调衰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膊爪。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嚎莉,靈堂內(nèi)的尸體忽然破棺而出米酬,到底是詐尸還是另有隱情,我是刑警寧澤趋箩,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布赃额,位于F島的核電站,受9級特大地震影響叫确,放射性物質(zhì)發(fā)生泄漏跳芳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一竹勉、第九天 我趴在偏房一處隱蔽的房頂上張望飞盆。 院中可真熱鬧,春花似錦次乓、人聲如沸吓歇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽城看。三九已至,卻和暖如春杏慰,著一層夾襖步出監(jiān)牢的瞬間测柠,已是汗流浹背炼鞠。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹃愤,地道東北人簇搅。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓完域,卻偏偏與公主長得像软吐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子吟税,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 7.5 高性能配置 如果有足夠的內(nèi)存凹耙,請考慮suricata.yaml中的以下選項(xiàng),以盡可能減輕CPU的工作量:...
    明翼閱讀 3,588評論 3 1
  • 7.3 調(diào)整注意事項(xiàng) 檢查最佳性能的設(shè)置肠仪。 7.3.1 最大等待數(shù)據(jù)包:<number> 此設(shè)置控制引擎可以處理...
    明翼閱讀 2,091評論 0 2
  • 7.10 Tcmalloc 'tcmalloc'是Google為了改進(jìn)線程化程序中的內(nèi)存處理而在google-pe...
    明翼閱讀 559評論 0 1
  • 7.9 規(guī)則分析 The meaning of the individual fields: Ticks – t...
    明翼閱讀 564評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理肖抱,服務(wù)發(fā)現(xiàn),斷路器异旧,智...
    卡卡羅2017閱讀 134,633評論 18 139