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

2016-02-19 20:59 9 1 收藏

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

【 tulaoshi.com - 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字节变量,来存储哪些网卡是镜像流量口,防止多余的资源浪费。

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

__read_mostly__u8 ifindex_bits = 0;

Skb包复制和转发

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

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

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

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

最后清理skb_buff结构。

启动脚本

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

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

实测效果

编译,填充参数并执行

执行sh sh.sh

Dmesg输出

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

镜像流量效果

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

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

CPU占用

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

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

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

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

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

来源:http://www.tulaoshi.com/n/20160219/1624989.html

延伸阅读
标签: 浏览器
IE右键中添加“复制图片地址”和“复制链接地址” 1、先下载浏览器执行复制操作的脚本文件和注册表写入文件,已打包至 iefans.rar。 2、下载完成解压后,将 CopyImageUrl.html 和 CopyUrl.html 复制至 C:Program FilesInternet Explorer 目录中。 如果您的系统默认不是安装在C盘,或者您不想将这两个文件放置在 C:Program Files...
标签: Java JAVA基础
一:背景:Decorator *Decorator 常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator 模式中是必须的。 *Decorator 定义: 动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator 模式相比用生成子...
标签: MySQL mysql数据库
 MySQL 版本:4.1 环境介绍:主库 192.168.0.205 从库 192.168.0.206 1、主库创建/etc/my.cnf,修改[mysqld]里边的键值增加 server-id=1 log-bin=binlog_name 2、主库增加用户,用于从库读取主库日志。 grant replication slave,reload,super on *.* to ’slave’@’192.168.0.206’ identified by ’123456’ 3、从库连接主库...
一:背景:Decorator *Decorator 常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator 模式中是必须的。 *Decorator 定义: 动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator 模式相比用生成子类方式达到功能的扩充显得更为灵...

经验教程

439

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部