日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】PF_RING开发指南

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】PF_RING开发指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:PF_RING開發指南-yww680169-ChinaUnix博客

1.?????? 概述

PF_RING是Luca Deri發明的提高內核處理數據包效率,并兼顧應用程序的補丁,如Libpcap和TCPDUMP等,以及一些輔助性程序(如ntop查看并分析網絡流量等)。PF_RING是一種新型的網絡socket,它可以極大的改進包捕獲的速度。并且有如下特征:

1) 可以用于Linux 2.6.18以上的內核;

2) 4.x版本的PF_RING可以直接應用于內核,不需要給內核打補丁;

3) PF_RING驅動可以進行包捕獲的加速;

4) 支持使用商用網絡適配器的10 GB的硬件包過濾

5) 設備驅動無關(推薦使用支持NAPI的網卡(intel網卡)來獲得最好的性能);

6) 基于內核的包捕獲和采樣;

7) Lipcap支持與基于pcap的應用程序的無縫集成;

8) 可以指定上百個頭過濾到BPF中;

9) 內容檢查,以至于只有符合負載過濾的包才能通過;

10)PF_RING的插件可以用于增強包解析和內容過濾;

11)可以工作在混雜模式(經過網卡的報文全部可以被捕獲到);

?

官網:

最新版本4.7,下載網址<。

最新版本的目錄結構:

Drivers/

Drivers/Broadcom/

Drivers/Intel/

Drivers/myricom/

Kernel/??? 內核有關的補丁

Userland/? 用戶空間代碼

Userland/lib 用戶空間庫用于控制PF_RING

Userland/libpcap-xxx-ring PF_RING支持的Libpcap增強庫

Userland/examples/ 包計數應用(使用它作為測試使用)

2.?????? 編譯

編譯安裝PF_RING之前需要卸載原來的網卡驅動,卸載之前使用ethtool命令查看當前網卡的類型和驅動版本。

# ethtool -i ethx

# lsmod | grep e1000e

# rmmod e1000e?????????? 此處為e1000e驅動

注:如果使用ssh遠程卸載驅動會造成網絡不能連接,務必現場操作。

2.1.? 編譯內核

解壓縮PF_RING安裝包,進入到Kernel目錄下編譯和安裝內核補丁。

# tar -zxf PF_RING.4.7.0.tar.gz

# cd PF_RING.4.7.0/kernel

# make

# sudo make install???????????? 內核安裝需要root用戶權限

insmod?/kernel/pf_ring.ko [transparent_mode=0|1|2]

[min_num_slots=x][enable_tx_capture=1|0][enable_ip_defrag=1|0][quick_mode=1|0]

??? 實例:

??? # sodu insmod pf_ring.ko transparent_mode=1

當PF_RING激活時,會創建/proc/net/pf_ring目錄,使用cat命令查看設置:

# cat /proc/net/pf_ring/info

注1:為了編譯PF_RING內核模塊,你需要安裝Linux內核的頭文件(或者內核源代碼)。

2.2.? 編譯用戶空間PF_RING庫

進入到用戶空間庫userland/lib下,編譯和安裝。

# cd ../userland/lib

# ./configure

# make

# sodu make install

如果需要使用libpcap抓包分析,請卸載之前安裝的libpcap,然后進入/userland/libpcap-xxx-ring/目錄下配置、編譯和安裝驅動。

# rpm -qa libpcap??? 查看安裝的libpcap,如果有libpcap則強制卸載

# rpm -e libpcap --nodefs ?

# cd ../libpcap

# ./configure

# make

# sudo make install

注:為了使用PF_RING的優點,請使用PF_RING使能的libpcap.a重新編譯應用。

進入到userland/examples目錄編譯例子程序。

# cd?/userland/examples

# make

# ./pfcount -i eth0???? 捕獲eth0網口的數據報文

注:使用drivers/intel/ixgbe下的驅動(支持DNA的ixgbe驅動的網卡)+DNA驅動技術可以達到線速采集,PF_RING模塊必須在DNA驅動之前加載。

2.3.? 編譯網卡的驅動

進入到drivers目錄下,根據ethtool -i ethx命令查看的網卡類型和驅動進入指定的目錄進行編譯和安裝。

# cd ../../ drivers/intel/e1000e/e1000e-1.3.10a/src

# make

# sodu make install

開始安裝驅動,進入/lib/modules//kernel/net目錄,可以看到有pf_ring目錄,進入到該目錄下進行PF_RING模塊的安裝。

# sodu insmod pf_ring.ko transparent_mode=1

安裝網卡驅動,進入到目錄lib/modules//kernel/drivers/net下進行網卡驅動安裝。

# sodu insmod e1000e.ko

# sodu modprobe e1000e? (只能載入/lib/modules//中模塊)

安裝完畢,使用dmesg命令查看驅動是否安裝成功,如果成功的話,可以看到:

# dmesg

[PR_RING]…… 信息。

PF_RING會安裝一個類型為27的協議簇,可以使用sock(PF_RING, SOCK_RAW,0)打開一個socket,使用libpcap的朋友不需要修改程序,需要重新編譯,鏈接的時候請加上libpfring.so。

啟動自動加載PF_RING模塊,修改/etc/modprobe.conf文件

# vi /etc/modprobe.conf

在文件的尾部增加一行 modprobe pf_ring

系統重啟后內核會自動加載pf_ring模塊,modprobe只能加載/lib/modules下的模塊。

3.?使用

使用用戶空間中的PF_RING庫API來編寫代碼,并且使用用戶空間中的libpfring.a和libpcap.a編譯代碼就可以使用PF_RING來提高包捕獲的性能。

請詳細的內容請參考網址:

用戶手冊:

總結

以上是生活随笔為你收集整理的【转】PF_RING开发指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。