亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

pktgen使用詳細教程

2024-06-28 13:26:30
字體:
來源:轉載
供稿:網友
pktgen使用詳細教程

  網上有很多講解pktgen的文章,但總是不夠全面細致,看完之后自己還是不會寫pktgen測試腳本,為此本文對pktgen進行詳細的闡述,讓大家看完本文后能夠自己動手寫pktgen shell.

  1.pktgen簡介

  pktgen是一個位于linux內核層的高性能網絡測試工具,由瑞士皇家理工大學的TSlab實驗室的Robert Olsson開發的(現在應該不在皇家理工了),主要用來測試網絡驅動與網卡設備,支持多線程,能夠產生隨機mac地址、ip地址、UDP端口號的數據包,pktgen 的作者使用多CPU處理器在不同的PCI總線(pci 、pcie等總線)上用千兆以太網卡做過測試(pktgen的表現依賴于CPU處理速率、內存延時、pci總線速率等硬件參數),發送數據速率甚至可以大于10GBit/s??梢娛强梢詽M足大多數的網卡等測試需求。

  pktgen的配置與統計信息查看都使用/PRoc文件系統完成,/proc文件系統是一種特殊的,有軟件創建的文件系統,內核使用/proc文件系統向外界導出信息,外界也可以通過它配置內核態的一些進程的參數,如ps top uptime等linux發行版中的很多工具就是通過/proc實現的.在大多情況下,我們只用/proc讀出數據(用于調試內核驅動等),而在pktgen中配置命令就用到了/proc的寫入數據功能。

  2.使用pktgen進行發包實驗

 現在版本的linux發行版大多加入了pktgen,使用以下命令加載pktgen模塊:

#modprobe pktgen

  然后你將在你的電腦的/proc/net/pktgen看到以下文件:

kpktgend_0  kpktgend_1  kpktgend_2  kpktgend_3  pgctrl

  其中kpktgen_*的多少是根據你的CPU的個數決定的,如我的機子的CPU數目為4,則有四個此文件。

  通過命令cat /proc/net/pktgen/pgctrl可以查看pktgen的版本等信息:

#cat /proc/net/pktgen/pgctrlPacket Generator for packet performance testing. Version: 2.74

  2.1使用pktgen一些需要注意的地方

  1)中斷親和力

  當使用某個線程(kpktgend_x)通過某個端口(ethx)發送(接受)數據時,我們應該把這個端口所對應的中斷綁定到某一個CPU上,從而防止CPU的變動(操作系統引起的)導致CPU緩存的丟失。具體做法如下

  首先,通過以下命令查看ethx所對應的中斷,在這里我們以eth3為例

# cat /proc/interrupts | grep eth3

47: 45836 0 0 0 PCI-MSI-edge eth3-TxRx-0 48: 45836 0 0 0 PCI-MSI-edge eth3-TxRx-1 49: 45836 0 0 0 PCI-MSI-edge eth3-TxRx-2 50: 45836 0 0 0 PCI-MSI-edge eth3-TxRx-3 51: 0 0 0 0 PCI-MSI-edge eth3:lsc

 由上可以看出eth3使用了五個中斷號,為47-51,我們在這里將其都綁定在CPU0上

# echo 1 /proc/irq/47/smp_affinity# echo 1 /proc/irq/48/smp_affinity# echo 1 /proc/irq/49/smp_affinity# echo 1 /proc/irq/50/smp_affinity# echo 1 /proc/irq/51/smp_affinity

  當然若你分開綁定的話,在大數據流的時候可以均攤CPU的負擔,可能對最高性能有所提升,具體就不清楚了,這個應該還和Intel網卡的多隊列相關了,有關分析有待進一步實驗。

Robert測試結果說明,正確的中斷親和力綁定,對發送速率有60%的提升。

  2)clone_skb:限制內存的分配(clone_skb應該只是復制skb的結構體,不復制數據區)

    此部分還沒有看懂,應該是跟cpu高速緩存相關,先放著,不懂并不影響后面的實驗。

  3)延時:減小發送速率

    在發送一個數據包后延時一會,延時的單位是ns級,從而達到減小發送速率的目的。若延時時間大于發送時間,應該是可以通過此功能達到每秒發送特定數據包個數的效果,即安特定的頻率發送數據包。

  2.2搭建實驗環境

 1)實驗拓撲如下

1+-----------+           +-----------+2| Host1     |           |  Host2     |3|       eth1 +-----------+nf0       |4|           |           |           |5|           |           |           |67+-----------+           +-----------+

  首先我們看下一個簡單代碼,對pktgen的shell 控制有個直觀感受,你可以先試著看看此代碼,也可以直接跳過,先看看下面的內容,然后再回過來看此代碼

#!/bin/sh# pktgen.conf -- Sample configuration for send on two devices on a UP system#modprobe pktgenif [[ `lsmod | grep pktgen` == "" ]];then   modprobe pktgenfiif [[ $1 == "" ]];then   pktsize=550else   pktsize=$1fifunction pgset() {    local result    echo $1 > $PGDEV    result=`cat $PGDEV | fgrep "Result: OK:"`    if [ "$result" = "" ]; then         cat $PGDEV | fgrep Result:    fi}function pg() {    echo inject > $PGDEV    cat $PGDEV}# On UP systems only one thread exists -- so just add devices# We use eth1, eth1echo "Adding devices to run".PGDEV=/proc/net/pktgen/kpktgend_0pgset "rem_device_all"pgset "add_device eth1"pgset "max_before_softirq 1"# Configure the individual devicesecho "Configuring devices"PGDEV=/proc/net/pktgen/eth1pgset "clone_skb 1000"pgset "pkt_size $pktsize"pgset "src_mac 00:1B:21:90:4B:E4"pgset "flag IPSRC_RND"pgset "src_min 10.0.0.2"pgset "src_max 10.0.0.255"pgset "dst 10.0.0.1"pgset "dst_mac  00:4E:46:31:30:00"pgset "count 0"# Time to runPGDEV=/proc/net/pktgen/pgctrlecho "pkgsize:$pktsize"echo "Running... ctrl^C to stop"pgset "start"echo "Done"

 

  2)pktgen所有命令解釋如下

pktgen命令

Pktgen控制命令

start

所有的線程開始發送

stop

停止

線程的控制命令

add_device

添加某個端口到某個線程

rem_device_all

刪除綁定在某個線程的所有端口

max_before_softirq

在最多發送多少個數據包后,執行do_softirq()

端口命令

debug

調試

clone_skb

對每個skb進行多少個復制,0表示不復制。對于Dos等測試必須至零

clear_counters

清空計數器,一般程序自動清空

pkt_size

鏈路包的大?。ㄇ叭RC的值)

min_pkt_size

數據包最小值

max_pkt_size

最大值

flags

包的分片數量?

count

發送數據包的個數,0 表示一直發送

delay

發送兩個數據包之間的延時

dst

目的IP

dst_min

目的IP的最小值

dst_max

最大值

src_min

源IP最小值

src_max

最大值

dst6

目的IPv6地址

src6

源IPv6地址

dstmac

目的mac

srcmac

源mac

src_mac_count

源mac的數量,從srcmac設置的mac開始輪詢

dst_mac_count

同上

udp_src_min

最小源udp端口號

udp_src_max

最大源udp端口號

udp_dst_min

最小目的udp端口號

udp_dst_max

最大目的udp端口號

flows

并發流的個數

flowlen

流的長度

Flags

IPSRC_RND

IPDST_RND

TXSIZE_RND

UDPSRC_RND

UDPDST_RND

MACSRC_RND

MACDST_RND

PSRC_RND 源IP隨機發送

  

  3)配置實例

  通過/proc接口配置pktgen,首先為了方便起見定義兩個配置函數

function pgset() {    local result    echo $1 > $PGDEV    result=`cat $PGDEV | fgrep "Result: OK:"`    if [ "$result" = "" ]; then         cat $PGDEV | fgrep Result:    fi}function pg() {    echo inject > $PGDEV    cat $PGDEV}

  pktgen.conf-1 :在當CPU系統中將eth1 eth2 綁定到線程0,部分代碼如下

PGDEV=/proc/net/pktgen/kpktgend_0pgset "rem_device_all"pgset "add_device eth1"pgset "add_device eth2"

  pktgen.conf-2: eth1使用線程0 eth2使用線程1發送,部分代碼如下

PGDEV=/proc/net/pktgen/kpktgend_0pgset "rem_device_all"pgset "add_device eth1"PGDEV=/proc/net/pktgen/kpktgend_1pgset "rem_device_all"pgset "add_device eth2"

  pktgen.conf-3:在雙cpu系統中 eth1 eth2都使用線程0發送,部分代碼如下

PGDEV=/proc/net/pktgen/kpktgend_0pgset "rem_device_all"pgset "add_device eth1"pgset  "add_device eth2"PGDEV=/proc/net/pktgen/kpktgend_1pgset "rem_device_all"

  pktgen.conf-4:用于Dos測試的腳本,注意clone_skb 0,部分代碼如下

PGDEV=/proc/net/pktgen/eth1pgset "clone_skb 0"pgset "flag IPDST_RND"pgset "dst_min 10.0.0.0"pgset "dst_max 10.255.255.255"

  pktgen.conf-5:用于路由流測試的腳本,同樣注意 clone_skb 0

PGDEV=/proc/net/pktgen/eth1pgset "clone_skb 0"pgset "flag IPDST_RND"pgset "dst_min 10.0.0.0"pgset "dst_max 10.255.255.255"#8k concurrent flows at 4 pktspgset "flows 8192"pgset "flowlen 4"

  最后貼一個比較復雜的腳本:

#Script contributed by Grant Grundler# <grundler@parisc-linux.org># Note! 10 devicesPGDEV=/proc/net/pktgen/kpktgend_0pgset "rem_device_all"pgset "add_device eth3"pgset "add_device eth5"pgset "add_device eth7"pgset "add_device eth9"pgset "add_device eth11"pgset "max_before_softirq 10000"PGDEV=/proc/net/pktgen/kpktgend_1pgset "rem_device_all"pgset "add_device eth2"pgset "add_device eth4"pgset "add_device eth6"pgset "add_device eth8"pgset "add_device eth10"pgset "max_before_softirq 10000"# Configure the individual devicesfor i in 2 3 4 5 6 7 8 9 10 11doPGDEV=/proc/net/pktgen/eth$iecho "Configuring $PGDEV"pgset "clone_skb 500000"pgset "min_pkt_size 60"pgset "max_pkt_size 60"pgset "dst 192.168.3.10$i"pgset "dst_mac 01:02:03:04:05:0$i"pgset "count 0"doneecho "Running... CTRL-C to stop"PGDEV=/proc/net/pktgen/pgctrlpgset "start"tail -2 /proc/net/pktgen/eth*

相關鏈接:

Linux發包工具pktgen教程@蒼穹幻想

pktgen論文


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久aaaa九色| 成人欧美一区二区三区黑人| 红桃视频成人在线观看| 精品一区二区亚洲| 亚洲第一区第一页| 亚洲欧美日韩中文在线| 中文字幕亚洲一区二区三区五十路| 欧美精品免费在线观看| 91精品国产自产91精品| 亚洲国产古装精品网站| 国产精品久久久久久久天堂| 欧美—级a级欧美特级ar全黄| 国产精品入口夜色视频大尺度| 精品久久久久久久久久久久| 日韩av在线看| 午夜剧场成人观在线视频免费观看| 美女999久久久精品视频| 国产欧美一区二区三区在线看| 欧美激情一区二区三区在线视频观看| 欧美高清视频在线播放| 亚洲精品一区在线观看香蕉| 亚洲国产日韩欧美在线动漫| 亚洲天堂免费在线| 亚洲美女性生活视频| 精品福利樱桃av导航| 懂色av中文一区二区三区天美| 性亚洲最疯狂xxxx高清| 国产日韩在线精品av| 亚洲欧美精品在线| 国产一区二区三区在线观看网站| 欧美日韩国产黄| 97婷婷大伊香蕉精品视频| 久久精品中文字幕免费mv| xxav国产精品美女主播| 久久综合免费视频| 国产精品老女人视频| 精品亚洲一区二区| 精品久久久久久久久久ntr影视| 韩曰欧美视频免费观看| 97精品伊人久久久大香线蕉| 成人乱色短篇合集| 成人激情av在线| 国产精品久久久久久久一区探花| 亚洲国产精品成人av| 国产精品自拍视频| 91色视频在线观看| 国产精品手机播放| 欧美激情视频一区二区三区不卡| 色综合久久88| 欧美性猛交xxxx免费看久久久| 性欧美xxxx交| 人人做人人澡人人爽欧美| 亚洲va男人天堂| 日韩免费在线看| 国产欧美日韩免费看aⅴ视频| 午夜精品一区二区三区在线视频| 欧美成人一区在线| 欧美日韩一区二区三区| 中文字幕久久精品| 亚洲精品一区二区三区不| 91精品久久久久久久久久另类| 国产福利视频一区| 国产亚洲精品成人av久久ww| 2019亚洲日韩新视频| 欧美第一黄网免费网站| 自拍偷拍免费精品| 国产精自产拍久久久久久蜜| 久久在线免费视频| 日韩亚洲欧美中文高清在线| 九九热精品在线| 九九视频这里只有精品| 亚洲性无码av在线| 久久视频中文字幕| 久热国产精品视频| 久热精品视频在线观看一区| 亚洲一区二区三| 欧美黑人狂野猛交老妇| 亚洲裸体xxxx| 精品人伦一区二区三区蜜桃网站| 欧美亚洲另类制服自拍| 亚洲成人av中文字幕| 欧美成人sm免费视频| 992tv成人免费视频| 国产精品一区=区| 午夜精品福利在线观看| 亚洲精品国产精品久久清纯直播| 日韩在线视频免费观看| 亚洲美女精品久久| 一区二区欧美在线| 亚洲网址你懂得| 91亚洲精品在线观看| 亚洲精品小视频| 亚洲自拍av在线| 欧美一级片一区| 国产精品极品在线| 国产精品久久久久久久久久小说| 国产精品亚洲网站| 国产日韩在线视频| 亚洲二区在线播放视频| 国产91色在线| 欧美激情精品久久久久久久变态| 日韩av免费在线观看| 91精品国产综合久久香蕉的用户体验| 国外成人在线播放| 欧美日韩激情美女| 日本精品在线视频| 久久久久国产一区二区三区| 最近日韩中文字幕中文| 日韩国产高清污视频在线观看| 国产美女精品免费电影| 中文字幕精品网| 国产69精品99久久久久久宅男| 色哟哟亚洲精品一区二区| 美女撒尿一区二区三区| 亚洲欧美一区二区精品久久久| 国产一区二区三区在线观看视频| 久久69精品久久久久久久电影好| 97精品伊人久久久大香线蕉| 午夜精品三级视频福利| 精品国产成人在线| 亚洲欧美日韩精品久久| 日韩欧美精品网站| 日韩二区三区在线| 欧美一区二区色| 欧美色欧美亚洲高清在线视频| 7m第一福利500精品视频| 久久99精品视频一区97| 欧美性猛交xxxx乱大交蜜桃| 草民午夜欧美限制a级福利片| 国产精品美女在线观看| 精品久久久久久久大神国产| 日韩美女写真福利在线观看| 亚洲乱码av中文一区二区| 久久精品99久久香蕉国产色戒| 91国自产精品中文字幕亚洲| 日韩免费在线看| 亚洲色图综合久久| 久久精品国产视频| 亚洲国产精品成人va在线观看| 国产色婷婷国产综合在线理论片a| 日韩小视频在线| 久久色精品视频| 国产日韩精品一区二区| 久久视频在线直播| 久久精品久久精品亚洲人| 91精品啪aⅴ在线观看国产| 欧美在线观看一区二区三区| 欧美激情在线视频二区| 中文在线资源观看视频网站免费不卡| 成人福利网站在线观看11| 日韩美女视频免费看| 亚洲伦理中文字幕| 久久亚洲精品中文字幕冲田杏梨| 美女久久久久久久久久久| 国产成人综合久久| 日韩在线视频国产| 精品中文字幕在线观看| 国产精品视频公开费视频| 亚洲欧美制服丝袜| 欧美另类在线观看| 91免费综合在线| 欧美在线亚洲一区| yellow中文字幕久久| 欧美日韩免费网站|