热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux小知识---pf_ring开发使用h命令参数详解

本文主要介绍关于linux,pfring的知识点,对【Linux小知识---pf_ring开发使用】和【h命令参数详解】有兴趣的朋友可以看下由【胖哥王老师】投稿的技术文章,希望该技术和经验能帮到你解决

本文主要介绍关于linux,pfring的知识点,对【Linux小知识---pf_ring开发使用】和【h命令参数详解】有兴趣的朋友可以看下由【胖哥王老师】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的操作系统,linux知识,驱动开发相关技术问题。

h命令参数详解

使用背景

pf_ring主要用来加速流量获取流程,通过创建循环buf和mmap零拷贝技术的使用,缩短数据到达应用层的时间,提高系统处理数据的效率,降低丢包的概率。
具体知识点可以参考
《PF_RING简介》
主要就是下面的图

Linux小知识---pf_ring开发使用 h命令参数详解


目前还没用到DNA技术,听说要付费……

Linux小知识---pf_ring开发使用 h命令参数详解

环境安装

以下内容来自于PF_RING官方网站《PF_RING官方网站》
有部分为本地实测内容,修改了一些,可能这个网站和最新的代码不太一样,有些地方需要先configure才能make。
不过好在依赖的东西不多,还是能顺利安装的。

下载代码
git clone https://github.com/ntop/PF_RING.git

网速不太流畅,多试试吧。

代码结构如下

Linux小知识---pf_ring开发使用 h命令参数详解

安装内核模块
cd PF_RING/kernel
make
make install
加载模块
cd PF_RING/kernel
sudo insmod ./pf_ring.ko [min_num_slots=N] [enable_tx_capture=1|0] [ enable_ip_defrag=1|0]
参数含义min_num_slots内核模块排队的最小数据包数(默认值–4096)enable_tx_capture1–捕获发出的包,0–不捕获发出的包enable_ip_defrag设置为1以启用IP碎片整理,仅对RX流量进行碎片整理 修改驱动

如果您想在Intel适配器上实现万兆及以上的线速率数据包捕获,那么需要使用零拷贝驱动。首先查看网卡的驱动

ethtool -i eth1 | grep driver
driver: xxx

目前驱动支持

1 Gbit
e1000e (RX and TX)
Supported cards: Intel 8254x/8256x/82571/82572/82573/82574/82583
igb (RX and TX)
Supported cards: Intel 82575/82576/82580/I210/I35010 Gbit
ixgbe/ixgbevf (RX and TX)
Supported cards: Intel 82599/X520/X540/X55x10/40 Gbit
i40e (RX and TX)
Supported cards: Intel X710/XL71010/25/50/100 Gbit
ice (RX and TX)
Supported cards: E810

例如驱动是ixgbe

cd PF_RING/drivers/intel
./configure
make
cd ixgbe/ixgbe-*-zc/src
./load_driver.sh
用户空间lib和pcap

libpfring和libpcap均以源代码格式分发。它们可以按如下方式编译和安装:

cd PF_RING/userland/lib
./configure && make
sudo make install
cd ../libpcap
./configure && make
sudo make install

然后相关pcap的软件,tcpdump之类的,应该就可以使用了。

Linux小知识---pf_ring开发使用 h命令参数详解

应用例子

我用的是ubuntu,需要安装两个第三方软件

apt install bison
apt-get install flex

然后编译example

cd PF_RING/userland/
./configure
make
pfcount (位于PF_RING/userland/examples) 是一个用来统计raw包并显示统计信息的例子
./pfcount -i zc:eth1
=========================
Absolute Stats: [64415543 pkts rcvd][0 pkts dropped]
Total Pkts=64415543/Dropped=0.0 %
64'415'543 pkts - 5'410'905'612 bytes [4'293'748.94 pkt/sec - 2'885.39 Mbit/sec]
=========================
Actual Stats: 14214472 pkts [1'000.03 ms][14'214'017.15 pps/9.55 Gbps]
=========================

通过-v的参数,还可以解析报文和2,3,4层的数据:

./pfcount -i eth1 -v 1
Dumping statistics on /proc/net/pf_ring/stats/15773-eno1.279
11:31:41.968485349 [TX][if_index=6][hash=2169540001][00:26:90:D3:CC:F1 -> 0C:C7:7A:CC:C1:4D] [IPv4][192.168.1.20:22 -> 192.168.1.21:34762] [l3_proto=TCP][hash=2169540001][tos=16][tcp_seq_num=415123802] [caplen=254][len=254][eth_offset=0][l3_offset=14][l4_offset=34][payload_offset=66]
11:31:41.968557503 [TX][if_index=6][hash=2169540001][00:26:90:D3:CC:F1 -> 0C:C7:7A:CC:C1:4D] [IPv4][192.168.1.20:22 -> 192.168.1.21:34762] [l3_proto=TCP][hash=2169540001][tos=16][tcp_seq_num=415123990] [caplen=166][len=166][eth_offset=0][l3_offset=14][l4_offset=34][payload_offset=66]
11:31:41.968598956 [TX][if_index=6][hash=2169540001][00:26:90:D3:CC:F1 -> 0C:C7:7A:CC:C1:4D] [IPv4][192.168.1.20:22 -> 192.168.1.21:34762] [l3_proto=TCP][hash=2169540001][tos=16][tcp_seq_num=415124090] [caplen=390][len=390][eth_offset=0][l3_offset=14][l4_offset=34][payload_offset=66]

zcount (位于PF_RING/userland/examples_zc) 类似于pfcount,但是以PF_RING ZC API完成:

./zcount -i zc:eth1 -c 10
=========================
Absolute Stats: 89415341 pkts (0 drops) - 7510888644 bytes
Actual Stats: 14'218'113.27 pps (0.00 drops) - 9.55 Gbps
=========================
结束语

这个知识点还是从一个企业的岗位需求里看到的,我之前在一篇博客里就写过,如果不知道学什么,就去看看招聘信息,里面就有大量的知识点,而且这些都是有价值的,能支撑工作的知识点。
就像周董出了新歌,以前的歌,感觉从来没有像这首歌一样,需要这么丰富的知识点,开始听,感觉和之前一样听不太清楚,感觉还是以前的感觉,但是看了歌词,还是听不懂,这就是知识点不够啊,看来周董这几年,真是没落下功课。

Linux小知识---pf_ring开发使用 h命令参数详解


今天是个特殊的日子,希望我们不要忘记过去,忘记就意味着背叛。警钟长鸣,吾辈自强!

Linux小知识---pf_ring开发使用 h命令参数详解

本文《Linux小知识---pf_ring开发使用》版权归胖哥王老师所有,引用Linux小知识---pf_ring开发使用需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • Linux 中使用 clone 函数来创建线程
    2019独角兽企业重金招聘Python工程师标准Linux上创建线程一般使用的是pthread库实际上libc也给我们提供了创建线程的函数那就是cloneintclone(i ... [详细]
  • ARMLinux内核知识点
    ARM-Linux内核知识点文章目录ARM-Linux内核知识点前言一、概述二、ARM-Linux内核的主要架构及功能三、Linux内核源码目录结构四、ARM-Linux进程管理五 ... [详细]
  • 让你明白kvm是什么
    参考:https:blog.csdn.netbbwangjarticledetails80465320KVM工具集合:libvirt:操作和管理KVM虚机的虚拟化API ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • golang源码分析调度概述
    golang源码分析-调度过程概述本文主要概述一下golang的调度器的大概工作的流程,众所周知golang是基于用户态的协程的调度来完成多任务的执行。在Linux ... [详细]
author-avatar
9asd8fy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有