Linux中多路镜像流量聚合和复制的处理步骤

紫风铃ILOVEYOU

紫风铃ILOVEYOU

2016-02-19 20:59

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的Linux中多路镜像流量聚合和复制的处理步骤,手机电脑控们准备好了吗?一起看过来吧!

在Linux系统操作中,安全性监控和测试的过程中会遇到异常流量等问题,这就需要在Linux内核上进行多路镜像流量聚合和复制的处理了,那么要如何进行操作呢?随图老师小编一起来学习一下吧。

架构设计

 Linux中多路镜像流量聚合和复制的处理步骤

内核模块的流程比较简单,转发配置从用户态提交给内核模块,如eth1@eth2_eth1@eth3_eth1/eth4@eth5,这段的配置是:

来自eth1的流量,复制给eth2和eth3

来自eth1和eth4的流量,聚合给eth5

MIRROR内核模块中,只需要实现参数读取,配置分析,网卡判断(源,目的)即可。

算法、代码实现

参数输入

 Linux中多路镜像流量聚合和复制的处理步骤

这段代码的功能是,将前面提到的如eth1@eth2_eth1@eth3_eth1/eth4@eth5这样的参数,按照_进行拆分,分段提交给参数设置函数option_setup

参数设置

 Linux中多路镜像流量聚合和复制的处理步骤

这里我们把得到的参数eth0@eth1进行进一步的拆分,分出了源网卡eth0,目的网卡eth1,在内核模块的全局变量中,有一个结构

__read_mostly __u8 ethout_bits[MAX_OUT] ={0};

用来存储每个网卡对应分发的网卡号,可以这样理解,如果服务器有8个网卡,那么每个网都会有一个8位的二进制数来标明它的转发,比如eth0复制到eth1,那么ethout_bits[0]就等于01000000,以此类推,如果我要把eth0复制到其他所有网卡,就会是01111111。

同时用一个全局的8字节变量,来存储哪些网卡是镜像流量口,防止多余的资源浪费。

__read_mostly__u8 ifindex_bits = 0;

Skb包复制和转发

 Linux中多路镜像流量聚合和复制的处理步骤

当Linux内核收到一个skb结构的数据包时,判断这个数据包是不是在转发列表里,也就是网卡是不是镜像源。

 Linux中多路镜像流量聚合和复制的处理步骤

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)

接着我用了一个循环,来遍历存储的转发目的网口,如果匹配的话,就使用skb_clone函数将数据包复制一份,然后通过dev_queue_xmit函数直接发送出去。

最后清理skb_buff结构。

启动脚本

为了方便调试和快速提交参数,可以使用如下的shell脚本:

 Linux中多路镜像流量聚合和复制的处理步骤

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)

实测效果

编译,填充参数并执行

执行sh sh.sh

Dmesg输出

 Linux中多路镜像流量聚合和复制的处理步骤

镜像流量效果

 Linux中多路镜像流量聚合和复制的处理步骤

这里可以看到流量统计由于网卡速率,时间差等,并不会100%一样,是正常的。

CPU占用

当流量已经达到400M左右的时候,CPU占用仍然比较低。

 Linux中多路镜像流量聚合和复制的处理步骤

MIRROR.c源代码与pdf格式下载

上面就是Linux内核实现多路镜像流量聚合和复制的方法介绍了,如果你的交换机上可做镜像流量的端口数量有限制,又不想购买专业的设备的话,不妨试试上面介绍的方法吧。

展开更多 50%)
分享

猜你喜欢

Linux中多路镜像流量聚合和复制的处理步骤

电脑入门
Linux中多路镜像流量聚合和复制的处理步骤

Linux 常用命令(文件的复制、删除和移动)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux 常用命令(文件的复制、删除和移动)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Linux常用命令(文件的复制、删除和移动)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux常用命令(文件的复制、删除和移动)

Linux中挂载windows共享文件的详细步骤

电脑入门
Linux中挂载windows共享文件的详细步骤

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Linux中复制目录报错cp:omitting directory的解决办法

服务器
Linux中复制目录报错cp:omitting directory的解决办法

Linux安装配置JDK和Eclipse的步骤

电脑入门
Linux安装配置JDK和Eclipse的步骤

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

解决Windows XP SP2常遇的问题

解决Windows XP SP2常遇的问题

Java编程基础:EJB专用术语的详细解释

Java编程基础:EJB专用术语的详细解释
下拉加载更多内容 ↓