系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Linux中多路鏡像流量聚合和復制

Linux中多路鏡像流量聚合和復制的處理步驟

時間:2014-12-15 18:04:50 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20141215/32651.html 手機查看 評論

  在Linux系統(tǒng)操作中,安全性監(jiān)控和測試的過程中會遇到異常流量等問題,這就需要在Linux內(nèi)核上進行多路鏡像流量聚合和復制的處理了,那么要如何進行操作呢?隨小編一起來學習一下吧。

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

   Linux中多路鏡像流量聚合和復制的處理步驟

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

  來自eth1的流量,復制給eth2和eth3

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

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

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

  參數(shù)輸入

   Linux中多路鏡像流量聚合和復制的處理步驟

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

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

   Linux中多路鏡像流量聚合和復制的處理步驟

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

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

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

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

  __read_mostly__u8 ifindex_bits = 0;

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

   Linux中多路鏡像流量聚合和復制的處理步驟

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

  Linux中多路鏡像流量聚合和復制的處理步驟

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

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

  啟動腳本

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

   Linux中多路鏡像流量聚合和復制的處理步驟

  實測效果

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

  執(zhí)行sh sh.sh

  Dmesg輸出

  Linux中多路鏡像流量聚合和復制的處理步驟

  鏡像流量效果

   Linux中多路鏡像流量聚合和復制的處理步驟

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

  CPU占用

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

   Linux中多路鏡像流量聚合和復制的處理步驟

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

  上面就是Linux內(nèi)核實現(xiàn)多路鏡像流量聚合和復制的方法介紹了,如果你的交換機上可做鏡像流量的端口數(shù)量有限制,又不想購買專業(yè)的設(shè)備的話,不妨試試上面介紹的方法吧。

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨特見解

立即評論

以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

掃碼關(guān)注
掃碼關(guān)注

掃碼關(guān)注 官方交流群 軟件收錄