当前位置: 技术问答>linux和unix
linux下大批量抓包并处理 水贴勿入
来源: 互联网 发布时间:2016-05-29
本文导语: 做一项目,根据库文件进行URL网络过滤,linux服务器不断地监听并抓包分析URL,问题是此服务器在主干网络,如何才能保证不丢包。目前有两个方法 1、每接一个包开个进程处理分析 ,这样系统应该很容易崩溃 2、...
做一项目,根据库文件进行URL网络过滤,linux服务器不断地监听并抓包分析URL,问题是此服务器在主干网络,如何才能保证不丢包。目前有两个方法 1、每接一个包开个进程处理分析 ,这样系统应该很容易崩溃 2、开个缓冲区队列进行接包,开若干个线程处理。
问题是1、如何测试,对比,最好能看见系统崩溃时的进程列表 2、还有没有高级点的方法来接包,因为流量很大
问题是1、如何测试,对比,最好能看见系统崩溃时的进程列表 2、还有没有高级点的方法来接包,因为流量很大
|
1.你的包量到底有多大你没说,什么数量级别的1k packet/s ,1w packet /s ,10w packet/s?
2.1w/s的级别估计方法1估计够呛.
3.把数据转包到另外一台机器做分析。
4.把处理的包都写到文件里面去,一个小时一个文件,每个进程对应一个文件。在写一个脚本删除一个小时以前的文件,配置 contrab。
5.根据包的from ip分进程处理,比如开10 ~ 100个进程处理。
胡乱说的些想法,楼主见笑了。
2.1w/s的级别估计方法1估计够呛.
3.把数据转包到另外一台机器做分析。
4.把处理的包都写到文件里面去,一个小时一个文件,每个进程对应一个文件。在写一个脚本删除一个小时以前的文件,配置 contrab。
5.根据包的from ip分进程处理,比如开10 ~ 100个进程处理。
胡乱说的些想法,楼主见笑了。
|
1、你的机器硬件负载能力,CPU怎么样,内存是否够大,这个直接决定了包的处理速度和缓存数量
2、按照你的描述,基本上1的条件你没办法满足,这个是由客观条件决定的,而非能实现
3、那就考虑一种替代的方案,采用Monitor的方式,即在server之前桥接一台机器,这台机器什么都不做,只是负责捕获
到server的包,分析并处理,这样也可以客观的反映server的情况,和server实现一个同步
2、按照你的描述,基本上1的条件你没办法满足,这个是由客观条件决定的,而非能实现
3、那就考虑一种替代的方案,采用Monitor的方式,即在server之前桥接一台机器,这台机器什么都不做,只是负责捕获
到server的包,分析并处理,这样也可以客观的反映server的情况,和server实现一个同步