当前位置: 首页 > news >正文

Ntop性能提升方案

Ntop性能提升方案

 

Ntop是一款Linux下常见的开源监控软件,它可以监测的数据包括:网络流量、使用协议、系统负载、端口情况、数据包发送时间等。正常情况下它工作的时候就像一部被动声纳,默默的接收看来自网络的各种信息,通过对这些数据的分析,网络管理员可以深入了解网络当前的运行状况,不过一旦超过Ntop数据包的处理能力,Ntop随即出现性能问题,从而导致Ntop无法准确分析网络流量和各种数据,对网络管理造成影响。下文介绍了一种提高Ntop性能的方法。

通常Ntop的抓包分析功能,是通过Ntop自己完成,但它们都是通过libpcap来实现抓包,且速度不能超过100M,分析一下libpcap的流程我们明白,首先数据包通过路径为网卡硬中断→软中断→内核协议栈→系统调用→socket->libpcap接口→用户应用程序,在这个流程中,可以看出数据的copy比较多,所以在高速率下libpcap 抓包丢包严重也不用感到奇怪了。

对于千兆的网络就需要采用PF_RING技术来接受数据包了,PF_Ring运行于Linux的内核层,体系结构图如下图所示,它采用类类似零拷贝技术,而且PF_Ring从网卡获取的数据的速度比libpcap有成倍的提高,而且在千兆环境下几乎不丢包。

wKioL1dx3oLi9vn-AACz6VCccoo707.jpg-wh_50

对于内核必须熟悉的可以用下面的方法,首先给内核源码打补丁(以下内容需要读者具备Linux内核编译基础)

1.zcat linux-2.6.25-1-686-smp-PF_RING.patch.gz | patch -p0

2./usr/src/目录下的linux-2.6.25目录中,编辑Makefile 在这个地方加上一个自定义的后缀(比如-PF_RING):

   EXTRAVERSION = -PF_RING

3.make menuconfig

wKiom1dx3pLRi_goAACs-x8Hy_g225.jpg-wh_50

 

wKioL1dx3qPhbsY2AABwo0i45oU138.jpg-wh_50

这里按y选上PF_RING,然后保存修改到.config退出。然后就开始编译内核

#make

#make modules  安装编译好的modules

#make install

注意:将bzImage添加到grub中,以便用新内核启动(注意,新添加的内核不是默认启动项)

(用 make install 可以免去手动复制bzImage并生成initrd的繁琐过程)

进入libpcap-1.1.1-ring目录下,修改源码,将pf_ring的内核ring缓冲区设为2M,默认0.5M,然后修改MakeFile,将安装目录指向usr/,默认指向usr/local。接着编译make,然后make install;这样,就将libpfring.so ,pfring_e1000e_dna.h,pfring.h,libpfring.a拷贝到了usr/includeusr/lib下,同时用libpcap-1.1.1-ring的库文件替换了原来的libpcap库文件;

如果大家觉得这种修改内核的方法比较复杂,下面给大家推荐一个简单的方法到www.ntop.org,下载PF_RING-5.1.0.tar.gz包,解开PF_RING 以独立模块运行就成了,没有必要打 patch 到内核后直接make就可以。

#insmod ./pf_ring.ko   加载模块

# dmesg | grep RING

[PF_RING] Welcome to PF_RING 3.9.3                              # 这一部分是PF_RING初始化时输出的

[PF_RING] Ring slots       4096

[PF_RING] Slot version     9

[PF_RING] Capture TX       Yes [RX+TX]

[PF_RING] IP Defragment    No

[PF_RING] Initialized correctly

[PF_RING] registered /proc/net/pf_ring/

[PF_RING] successfully allocated 815104 bytes at 0xd0ad4000    # 以后每次运行PF_RING程序,会输出这样的调试信息

[PF_RING] allocated 4115 slots [slot_len=198][tot_mem=815104]

[PF_RING] removed /proc/net/pf_ring/2849-eth0.0

注意,刚启动机器时,ls /proc/net/pf_ring/ 是看不到这个目录的,只有当需要PF_RING的程序第一次运行时,才会生成这个目录以及一个info文件

安装完成后在shell下输入:

#dmesg |grep PF_RING即可验证是否配置成功,参见图4

 

wKiom1dx3rTAYXNiAADSPgP9f8s683.jpg-wh_50

当你看到如图4所示的输出后就预示着这次对Ntop的性能提上改造成功,这时你的Ntop系统在数据包捕获性能上就比先前有所提高,能够适应更加大流量的网络环境。

 

51CTO学院优秀讲师评选中,我期待您的宝贵一票! 

http://edu.51cto.com/lecturer/user_id-350944.html

 

 

相关文章:

  • OC执行JavaScript代码
  • 4.3、Android Studio突破64K方法限制
  • Java集合源码分析(二)ArrayList
  • 性能测试基础知识
  • [PHP内核探索]PHP中的哈希表
  • 前端学习路线(转自知乎)
  • 【我的《冒号课堂》学习笔记】设计原则(1)间接原则
  • 将字符串中的首字母大写
  • koan重新安装系统
  • mysql JDBC URL格式
  • 李洪强iOS开发之OC[015]#pragma mark的使用
  • QCon旧金山2016大会,议题发布及研讨会一瞥
  • 回到顶部
  • Maven更新子模块的版本号
  • 如何提高网页的加载速度
  • 【Amaple教程】5. 插件
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • IOS评论框不贴底(ios12新bug)
  • Spring Boot MyBatis配置多种数据库
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 安装python包到指定虚拟环境
  • 程序员该如何有效的找工作?
  • 初识 webpack
  • 从输入URL到页面加载发生了什么
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 工程优化暨babel升级小记
  • 回顾 Swift 多平台移植进度 #2
  • 回流、重绘及其优化
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 聊聊flink的TableFactory
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • AI算硅基生命吗,为什么?
  • const的用法,特别是用在函数前面与后面的区别
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # 计算机视觉入门
  • ###C语言程序设计-----C语言学习(6)#
  • #微信小程序(布局、渲染层基础知识)
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • ${factoryList }后面有空格不影响
  • (1)Nginx简介和安装教程
  • (145)光线追踪距离场柔和阴影
  • (4)(4.6) Triducer
  • (二)JAVA使用POI操作excel
  • (二)linux使用docker容器运行mysql
  • (二)构建dubbo分布式平台-平台功能导图
  • (二十四)Flask之flask-session组件
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (五)网络优化与超参数选择--九五小庞
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 未来三学期想要修的课 (日記)
  • (转)视频码率,帧率和分辨率的联系与区别