婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Linux內(nèi)核實現(xiàn)多路鏡像流量聚合和復(fù)制的方法

Linux內(nèi)核實現(xiàn)多路鏡像流量聚合和復(fù)制的方法

熱門標簽:南京電銷外呼系統(tǒng)廠家 南通電銷外呼系統(tǒng)排名 信陽智能外呼系統(tǒng)聯(lián)系方式 宿松百度地圖標注 滁州外呼系統(tǒng)接口對接 地圖標注怎么兼職 地圖標注和視頻彩鈴制作生意 營業(yè)廳外呼系統(tǒng)有錄音嗎 合力億捷外呼系統(tǒng)如何解壓安裝
我們在進行安全性監(jiān)控、測試的過程中,難免會遇到這樣的問題:需要部署大量基于鏡像流量的安全設(shè)備,如IPS,異常流量,數(shù)據(jù)庫審計,流量分析等,可是交換機上可以做鏡像流量的端口數(shù)量有限制,購買專業(yè)的設(shè)備又太昂貴。

本文就針對此種情況,從Linux內(nèi)核模塊對網(wǎng)絡(luò)數(shù)據(jù)庫包進行處理,解決上述問題。

應(yīng)用場景

我們在進行安全性監(jiān)控、測試的過程中,難免會遇到這樣的問題:需要部署大量基于鏡像流量的安全設(shè)備,如IPS,異常流量,數(shù)據(jù)庫審計,流量分析等,可是交換機上可以做鏡像流量的端口數(shù)量有限制,購買專業(yè)的設(shè)備又太昂貴。

本文就針對此種情況,從Linux內(nèi)核模塊對網(wǎng)絡(luò)數(shù)據(jù)庫包進行處理,解決上述問題。這里也感謝“白金PT”給予的幫助。

架構(gòu)設(shè)計

內(nèi)核模塊的流程比較簡單,轉(zhuǎn)發(fā)配置從用戶態(tài)提交給內(nèi)核模塊,如”eth1@eth2_eth1@eth3_eth1/eth4@eth5“,這段的配置是:

來自eth1的流量,復(fù)制給eth2和eth3

來自eth1和eth4的流量,聚合給eth5

MIRROR內(nèi)核模塊中,只需要實現(xiàn)參數(shù)讀取,配置分析,網(wǎng)卡判斷(源,目的)即可。

算法、代碼實現(xiàn)

參數(shù)輸入

這段代碼的功能是,將前面提到的如“eth1@eth2_eth1@eth3_eth1/eth4@eth5“這樣的參數(shù),按照”_”進行拆分,分段提交給參數(shù)設(shè)置函數(shù)”option_setup”

參數(shù)設(shè)置

這里我們把得到的參數(shù)”eth0@eth1”進行進一步的拆分,分出了源網(wǎng)卡eth0,目的網(wǎng)卡eth1,在內(nèi)核模塊的全局變量中,有一個結(jié)構(gòu)

”__read_mostly __u8 ethout_bits[MAX_OUT] ={0};“

用來存儲每個網(wǎng)卡對應(yīng)分發(fā)的網(wǎng)卡號,可以這樣理解,如果服務(wù)器有8個網(wǎng)卡,那么每個網(wǎng)都會有一個8位的二進制數(shù)來標明它的轉(zhuǎn)發(fā),比如eth0復(fù)制到eth1,那么ethout_bits[0]就等于01000000,以此類推,如果我要把eth0復(fù)制到其他所有網(wǎng)卡,就會是01111111。

同時用一個全局的8字節(jié)變量,來存儲哪些網(wǎng)卡是鏡像流量口,防止多余的資源浪費。

__read_mostly__u8 ifindex_bits = 0;

Skb包復(fù)制和轉(zhuǎn)發(fā)

當Linux內(nèi)核收到一個skb結(jié)構(gòu)的數(shù)據(jù)包時,判斷這個數(shù)據(jù)包是不是在轉(zhuǎn)發(fā)列表里,也就是網(wǎng)卡是不是鏡像源。

接著我用了一個循環(huán),來遍歷存儲的轉(zhuǎn)發(fā)目的網(wǎng)口,如果匹配的話,就使用skb_clone函數(shù)將數(shù)據(jù)包復(fù)制一份,然后通過dev_queue_xmit函數(shù)直接發(fā)送出去。

最后清理skb_buff結(jié)構(gòu)。

啟動腳本

為了方便調(diào)試和快速提交參數(shù),可以使用如下的shell腳本:

實測效果

編譯,填充參數(shù)并執(zhí)行

執(zhí)行sh sh.sh

Dmesg輸出

鏡像流量效果

這里可以看到流量統(tǒng)計由于網(wǎng)卡速率,時間差等,并不會100%一樣,是正常的。

CPU占用

當流量已經(jīng)達到400M左右的時候,CPU占用仍然比較低。

MIRROR.c源代碼與pdf格式下載

標簽:衢州 銅陵 山南 保定 運城 麗水 潛江 新余

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Linux內(nèi)核實現(xiàn)多路鏡像流量聚合和復(fù)制的方法》,本文關(guān)鍵詞  Linux,內(nèi)核,實現(xiàn),多路,鏡像,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux內(nèi)核實現(xiàn)多路鏡像流量聚合和復(fù)制的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux內(nèi)核實現(xiàn)多路鏡像流量聚合和復(fù)制的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 元阳县| 双鸭山市| 卓尼县| 高青县| 赫章县| 永吉县| 丹巴县| 宜宾市| 青龙| 贵南县| 前郭尔| 安仁县| 土默特左旗| 大悟县| 嵩明县| 维西| 英德市| 新沂市| 吉首市| 延川县| 曲周县| 麻栗坡县| 罗源县| 长兴县| 富顺县| 吉安县| 满洲里市| 永靖县| 焦作市| 德惠市| 临夏市| 宜良县| 朔州市| 天等县| 石台县| 惠州市| 上思县| 黔西县| 西昌市| 苏尼特右旗| 固镇县|