`
david_je
  • 浏览: 373123 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何在Linux下统计高速网络中的流量?

 
阅读更多

如何在Linux下统计高速网络中的流量?

2014-01-22 11:04 彭秦进 极客范 字号:T | T
一键收藏,随时查看,分享好友!

在Linux中有很多的流量监控工具,它们可以监控、分类网络流量,以花哨的图形用户界面提供实时流量分析报告。本文中我们介绍一种简单的Shell 脚本,它可以监控网络流量而且不依赖于缓慢的libpcap库。

AD:2013云计算架构师峰会课程资料下载

 

nethogs2

在Linux中有很多的流量监控工具,它们可以监控、分类网络流量,以花哨的图形用户界面提供实时流量分析报告。大多数这些工具(例如:ntopng ,  iftop )都是基于libpcap 库的 ,这个函数库是用来截取流经网卡的数据包的,可在用户空间用来监视分析网络流量。尽管这些工具功能齐全,然而基于libpcap库的流量监控工具无法处理高速(Gb以上)的网络接口,原因是由于在用户空间做数据包截取的系统开销过高所致。

在本文中我们介绍一种简单的Shell 脚本,它可以监控网络流量而且不依赖于缓慢的libpcap库。这些脚本支持Gb以上规模的高速网络接口,如果你对“汇聚型”的网络流量感兴趣的话,它们可统计每个网络接口上的流量。

脚本主要是基于sysfs虚拟文件系统,这是由内核用来将设备或驱动相关的信息输出到用户空间的一种机制。网络接口的相关分析数据会通过“/sys/class/net/<ethX>/statistics”输出。

举个例子,eth0的网口上分析报告会输出到这些文件中:

  • /sys/class/net/eth0/statistics/rx_packets: 收到的数据包数据
  • /sys/class/net/eth0/statistics/tx_packets: 传输的数据包数量
  • /sys/class/net/eth0/statistics/rx_bytes: 接收的字节数
  • /sys/class/net/eth0/statistics/tx_bytes: 传输的字节数
  • /sys/class/net/eth0/statistics/rx_dropped: 收包时丢弃的数据包
  • /sys/class/net/eth0/statistics/tx_dropped: 发包时丢弃的数据包

这些数据会根据内核数据发生变更的时候自动刷新。因此,你可以编写一系列的脚本进行分析并计算流量统计。下面就是这样的脚本(感谢 joemiller 提供)。第一个脚本是统计每秒数据量,包含接收(RX)或发送(TX)。而后面的则是一个描述网络传输中的接收(RX)发送(TX)带宽。这些脚本中安装不需要任何的工具。

测量网口每秒数据包:

  1. #!/bin/bash 
  2. INTERVAL="1"  # update interval in seconds 
  3. if [ -z "$1" ]; then 
  4.         echo 
  5.         echo usage: $0 [network-interface] 
  6.         echo 
  7.         echo e.g. $0 eth0 
  8.         echo 
  9.         echo shows packets-per-second 
  10.         exit 
  11. fi 
  12. IF=$1 
  13. while true 
  14. do 
  15.         R1=`cat /sys/class/net/$1/statistics/rx_packets` 
  16.         T1=`cat /sys/class/net/$1/statistics/tx_packets` 
  17.         sleep $INTERVAL 
  18.         R2=`cat /sys/class/net/$1/statistics/rx_packets` 
  19.         T2=`cat /sys/class/net/$1/statistics/tx_packets` 
  20.         TXPPS=`expr $T2 - $T1` 
  21.         RXPPS=`expr $R2 - $R1` 
  22.         echo "TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s" 
  23. done 

网络带宽测量:

  1. #!/bin/bash 
  2. INTERVAL="1"  # update interval in seconds 
  3. if [ -z "$1" ]; then 
  4.         echo 
  5.         echo usage: $0 [network-interface] 
  6.         echo 
  7.         echo e.g. $0 eth0 
  8.         echo 
  9.         exit 
  10. fi 
  11. IF=$1 
  12. while true 
  13. do 
  14.         R1=`cat /sys/class/net/$1/statistics/rx_bytes` 
  15.         T1=`cat /sys/class/net/$1/statistics/tx_bytes` 
  16.         sleep $INTERVAL 
  17.         R2=`cat /sys/class/net/$1/statistics/rx_bytes` 
  18.         T2=`cat /sys/class/net/$1/statistics/tx_bytes` 
  19.         TBPS=`expr $T2 - $T1` 
  20.         RBPS=`expr $R2 - $R1` 
  21.         TKBPS=`expr $TBPS / 1024` 
  22.         RKBPS=`expr $RBPS / 1024` 
  23.         echo "TX $1: $TKBPS kb/s RX $1: $RKBPS kb/s" 
  24. done 

下面的屏幕截图显示了上面的两个脚本的输出。

152940zdJ

原文链接: Dan Nanni 翻译: 极客范 彭秦进

译文链接: http://www.geekfan.net/5558/

分享到:
评论

相关推荐

    基于Linux内核高速IP网络测量器的研究.pdf

    高速IP网络测量器在Linux内核中的研究旨在解决如何在复杂网络环境中高效地捕获和分析数据包,以满足网络行为分析的需求。这篇文章深入探讨了基于Linux内核的高速IP网络测量器的设计与实现,特别是在高速网络环境下...

    Opencv实现的利用监控摄像头对高速路口车流量计数.zip

    在本项目中,“Opencv实现的利用监控摄像头对高速路口车流量计数.zip”是一个集成了OpenCV库的计算机视觉应用,旨在通过监控摄像头实时分析并统计高速路口的车流量。这一技术对于交通管理和城市规划具有重要意义,...

    基于嵌入式Linux的网络设备驱动设计与实现.pdf

    与块设备驱动不同,网络驱动程序需要异步接收来自外界的数据包,并且处理大量管理任务,如设置地址、修改传输参数、流量控制和错误统计。 网络驱动程序的实现主要包括数据发送、接收和超时事件的处理。在Intel PXA...

    流量监控TrafficMonitor

    流量监控是网络管理的关键组成部分,尤其在今天大数据量和高速网络环境下,确保网络资源的合理分配和优化至关重要。 TrafficMonitor作为一款流量监控工具,可能具备以下功能: 1. **实时监控**:提供实时的网络...

    流量监控器(上传下载速度监控器)

    在IT领域,网络速度监控是至关重要的,尤其是对于那些依赖高速网络进行工作或者日常活动的用户。"流量监控器(上传下载速度监控器)"是一种工具,它的主要功能是实时监测和记录计算机网络的上传和下载速率,帮助用户...

    基于Netfilter的P2P流量测量系统研究

    具体来说,系统首先提取流行的P2P协议的应用层特征,然后在内核层面进行高速匹配,一旦识别出P2P数据流,便利用连接跟踪技术进行流量统计。连接跟踪通过对peer间连接会话的关键信息(如源IP、目的IP、端口号等)进行...

    LINUX-JiQunbushu.rar_负载均衡

    在IT行业中,Linux集群部署和负载均衡是两个关键的概念,对于构建高可用性和高性能的系统至关重要。本资料包“LINUX-JiQunbushu.rar”聚焦于这两个主题,尤其是如何在Linux环境下实现负载均衡。 首先,让我们深入...

    Linux Debugging and Performance Tuning Tips and Techniques

    - **定义**:缓存缺失是指请求的数据不在高速缓存中而必须从较慢的存储层获取的情况。 - **优化方法**:通过调整缓存策略、增加缓存容量等方式减少缓存缺失。 ##### 13. 用户模式Linux - **概念**:用户模式Linux ...

    netxen_nic.rar_V2

    在Linux操作系统中,对网络设备的管理和监控是至关重要的,而`netxen_nic.rar_V2`正是为Linux v2.13.6提供的一份关键更新,旨在提升网络统计功能,以更好地收集和分析网络流量。 一、NetXen网络适配器的核心特性 1....

    论文研究-网络处理器在仿真测试领域的应用研究.pdf

    在网络仿真测试系统中,主要包括以下几个关键模块: 1. 网络数据处理调度管理:负责整个系统的数据流量管理,确保数据包的高效传输和处理。 2. 网络数据处理模块:实现数据包的捕获、过滤和转发等基本网络数据处理...

    车载信息终端在智能客流量系统中的应用研究.pdf

    本文设计了一种方法,通过RS232转CAN模块和RS232转RS485模块,将公交车上的CAN总线和RS485信号转换为RS232信号,以便在Linux和Windows两种操作系统下构建数据分析系统。这种设计允许用户根据实际需求实时获取公交车...

    论文研究-面向网络测试的嵌入式系统设计与实现 .pdf

    服务器端软件在嵌入式Linux系统上运行,主要负责流量产生、数据统计、数据上报和通信处理等功能。 文档还提到了嵌入式Linux操作系统的应用。Linux操作系统在作为桌面系统的基础上,进入嵌入式系统领域时,需要解决...

    精通LINUX设备驱动程序开发

    311 15.1.6 统计 312 15.1.7 配置 313 15.1.8 总线相关内容 314 15.2 与协议层会话 314 15.2.1 接收路径 314 15.2.2 发送路径 315 15.2.3 流量控制 315 15.3 缓冲区管理和并发控制 315 15.4 设备实例:...

    pfring数据包捕获

    然而,这种方式存在明显的性能瓶颈,特别是在高速网络环境下,频繁的轮询操作会消耗大量的CPU资源,导致数据包丢失和处理延迟,从而影响数据包捕获的完整性和实时性。 #### 2. pfring的创新之处 pfring通过引入一...

    nf_nat_masquerade.rar_The Express

    在这种情况下,`nfnetlink_acct.c`可能涉及网络流量的会计和统计,以确保NAT Masquerading的有效管理,同时`nvme.c`确保快速的数据存取。 总结来说,这些文件涉及到的IT知识点主要包括Linux系统的网络配置、NAT ...

    Oracle 11g Express 官方linux 64位版本

    总结来说,Oracle 11g Express Edition是Oracle公司在Linux 64位环境中提供的一款免费数据库解决方案,适合开发者和小团队进行学习和低流量应用的部署。通过理解其核心特性、安装流程和使用方法,用户可以充分利用这...

    tky.rar_fellpv7_网络

    这可能涉及到网络运营、安全监控、业务分析等方面,例如检测垃圾短信、保障通信安全、统计短信流量等。 5. **oumtsmon-0.8.91.i386.tar.gz**:这是一个Linux软件包的名称,通常表示一个开源项目。"oumtsmon"可能是...

    quectel-CM.zip

    总的来说,Quectel CM拨号程序是Linux环境下管理和控制4G模块的重要工具,它的存在使得Linux设备能够无缝接入4G网络,满足各种场景下的通信需求。对于开发人员和系统集成商来说,理解和掌握这款软件的使用方法,能够...

Global site tag (gtag.js) - Google Analytics