Linux高性能網絡測試工具|pktgen

原創 Linux二進制 2023-11-04 08:30

一、pktgen概述

pktgenLinux內核自帶的高性能網絡測試工具(高性能發包工具),可實現在內核高速發包。主要用來測試網絡驅動與網卡設備,支持多線程,能夠產生隨機MAC地址、IP地址、UDP端口號的數據包。由于pktgen是內核內置的,使用內核空間,所以它可以達到高帶寬、高發包速率,可用于測試網卡發送速率,也可以用來測試其他網絡設備(如路由器和交換機)。

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

注意

  • pktgen是一個Linux內核模塊,非用戶態工具,不能通過命令行的方式直接運行pktgen

  • pktgen不是全能的發包工具,目前僅支持UDP報文。

二、pktgen加載

在?Linux系統中,你并不能直接找到pktgen命令。因為pktgen作為一個內核線程來運行,需要你加載pktgen內核模塊后,再通過/proc文件系統來交互。pktgen作為內核內置的模塊,它的加載有兩種方式,一種是在命令行直接通過modprobe加載,另一種是通過源碼編譯出pktgen.ko模塊,再insmodmodprobe加載。

1、直接加載

目前,有些Linux機器上自帶了pktgen.ko文件,而有些Linux機器上則沒有該文件,網上的說法是如果內核的/boot/config-$(uname -r)文件中含有CONFIG_NET_PKTGEN=m,則內核默認會編譯出pktgen.ko文件,但我發現實際卻并非如此,也不知道這個說法是怎么來的,果然實踐才能出真知。

我們可以直接在命令行執行modprobe pktgen命令,如果在Linux系統中自帶了pktgen.ko文件,則可直接加載成功,如果Linux中沒有pktgen.ko文件,則會直接報找不到該文件的錯誤。我分別在兩個Linux系統機器中進行了實驗,如下:

#機器一
[root@localhost ~]# modprobe pktgen
[root@localhost ~]# lsmod | grep pktgen
pktgen 61440 0

#機器二
[root@localhost ~]# modprobe pktgen
modprobe: FATAL: Module pktgen not found in directory /lib/modules/4.18.0-394.el8.x86_64

注意Linux系統pktgen.ko文件的默認存放目錄/lib/modules/$(uname -r)/kernel/net/core/,如果在默認存放目錄下有pktgen.ko文件,則可直接modprobe加載。

如果該Linux系統中沒有自帶pktgen.ko文件,則我們可以通過方法二來自己編譯pktgen.ko文件,然后進行加載安裝。

2、源碼編譯加載

通過yum install kernel-devel-$(uname -r)?命令安裝內核開發包。默認安裝目錄為/usr/src/kernels。下載pktgen.c(https://github.com/torvalds/linux/blob/master/net/core/pktgen.c)源碼文件,在pktgen.c文件所在目錄創建Makefile文件,內容如下:

#關閉模塊簽名驗證功能
CONFIG_MODULE_SIG=n

obj-m?+=?pktgen.o
KDIR?:=?/lib/modules/$(shell?uname?-r)/build

all:
????????make?-C?$(KDIR)?M=$(PWD)?modules

clean:
????????make?-C?$(KDIR)?M=$(PWD)?clean

注意:動態安裝模塊的時候可能會出現insmod error required key not available,即內核簽名問題,因此,建議在Makefile文件中設置CONFIG_MODULE_SIG=n

pktgen.c文件所在目錄執行make指令編譯內核模塊,如下:

[root@localhost pktgen_source]# ls
Makefile pktgen.c
[root@localhost pktgen_source]#
[root@localhost pktgen_source]# make
make -C /lib/modules/4.18.0-500.el8.x86_64/build M=/home/lxy/pktgen_source modules
make[1]: Entering directory '/usr/src/kernels/4.18.0-500.el8.x86_64'
CC [M] /home/lxy/pktgen_source/pktgen.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/lxy/pktgen_source/pktgen.mod.o
LD [M] /home/lxy/pktgen_source/pktgen.ko
make[1]: Leaving directory '/usr/src/kernels/4.18.0-500.el8.x86_64'
[root@localhost pktgen_source]#
[root@localhost pktgen_source]# ls
Makefile modules.order Module.symvers pktgen.c pktgen.ko pktgen.mod.c pktgen.mod.o pktgen.o
[root@localhost pktgen_source]# insmod ./pktgen.ko
[root@localhost pktgen_source]# lsmod | grep pktgen
pktgen 57344 0
[root@localhost pktgen_source]# ls -l /proc/net/pktgen/
total 0
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_0
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_1
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_10
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_11
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_12
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_13
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_14
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_15
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_2
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_3
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_4
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_5
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_6
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_7
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_8
-rw-------. 1 root root 0 Nov 2 17:20 kpktgend_9
-rw-------. 1 root root 0 Nov 2 17:20 pgctrl

加載pktgen.ko模塊后,可以發現/proc/net/pktgen目錄下生成了多個kpktgend_*文件,其中kpktgen_*的多少是根據你的CPU的個數決定的,如我的機子的CPU數目為16,則有16個此文件。kpktgend_*是內核數據包生產線程, 每個CPU都會啟動一個相應的線程,如果要添加某個測試網卡, 可以通過向該文件節點寫入add_device ethX;?pgctrl用于控制網卡性能測試狀態,需要在對應的線程執行網卡的吞吐量測試, 有start/stop/reset三種狀態。

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

[root@localhost pktgen_source]# cat /proc/net/pktgen/pgctrl
Packet Generator for packet performance testing. Version: 2.75

三、pktgen實戰

1、實驗拓撲

因服務器資源有限,故本文使用網絡命名空間模擬2臺虛擬機,使用VF模擬虛擬機的網卡,網絡拓撲圖如上圖所示。其中,ens4f0v0ens4f0v1為物理網卡ens4f0np0虛擬出的兩個VF,通過命令行添加到網絡命名空間ns1ns2中,如下:
# 構建2個VF
[root@localhost pktgen]# echo 2 > /sys/class/net/ens4f0np0/device/sriov_numvfs
[root@localhost pktgen]# list-iface-info.sh
eno1np0 bnxt_en P 0 p0
ens4f0np0 nfp P 0 p0
ens5f0np0 nfp P 0 p0
eno2np1 bnxt_en P 1 p1
ens4f1np1 nfp P 1 p1
ens5f1np1 nfp P 1 p1
eno3 tg3 PCI 0000:01:00.0
eno4 tg3 PCI 0000:01:00.1
ens4f0v0 nfp_netvf PCI 0000:af:00.4
ens4f0v1 nfp_netvf PCI 0000:af:00.5
# 創建網絡命名空間模擬虛擬機
[root@localhost pktgen]# ip netns add ns1
[root@localhost pktgen]# ip netns add ns2

# 添加VF到網絡命名空間中
[root@localhost pktgen]# ip link set ens4f0v0 netns ns1
[root@localhost pktgen]# ip link set ens4f0v1 netns ns2

#查看網絡命名空間ns1中的網卡
[root@localhost pktgen]# ip netns exec ns1 ip a
1: lo: mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
55: ens4f0v0: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether ea:0c:48:be:43:09 brd ff:ff:ff:ff:ff:ff

# 配置網絡命名空間中網卡的IP地址
[root@localhost pktgen]# ip netns exec ns1 ifconfig ens4f0v0 192.168.1.11/24 up
[root@localhost pktgen]# ip netns exec ns2 ifconfig ens4f0v1 192.168.1.12/24 up
[root@localhost pktgen]#
[root@localhost pktgen]# ip netns exec ns1 ip a
1: lo: mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
55: ens4f0v0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether ea:0c:48:be:43:09 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global ens4f0v0
valid_lft forever preferred_lft forever
inet6 fe80::e80c:48ff:febe:4309/64 scope link
valid_lft forever preferred_lft forever
[root@localhost pktgen]#
[root@localhost pktgen]# ip netns exec ns2 ip a
1: lo: mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
56: ens4f0v1: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 7e:6c:0c:13:80:a6 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.12/24 brd 192.168.1.255 scope global ens4f0v1
valid_lft forever preferred_lft forever
inet6 fe80::7c6c:cff:fe13:80a6/64 scope link
valid_lft forever preferred_lft forever

#查看兩個網絡命名空間是否連通
[root@localhost pktgen]# ip netns exec ns2 ping -I ens4f0v1 192.168.1.11
PING 192.168.1.11 (192.168.1.11) from 192.168.1.12 ens4f0v1: 56(84) bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0.496 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.247 ms
^C
--- 192.168.1.11 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1046ms
rtt min/avg/max/mdev = 0.247/0.371/0.496/0.125 ms

2、配置pktgen實例

在使用?pktgen?測試網絡性能時,需要先給每個內核線程?kpktgend_X?以及測試網卡配置?pktgen?選項,然后再通過?pgctrl?啟動測試。將虛擬機ns1中的網口ens4f0v0放到對應kpktgend_0內核線程中,并配置發送報文字段,以發包測試為例,假設發包機器ns1使用的網卡是?ens4f0v0,而目標機器的?IP?地址為?192.168.1.12MAC?地址為?7e:6c:0c:13:80:a6

1) 構建發送特定數量數據包

構造pktgen配置腳本pktgen_start.sh如下:

#?定義一個工具函數,方便后面配置各種測試選項
function?pgset()?{
????local?result
????echo?$1?>?$PGDEV

????result=`cat?$PGDEV?|?fgrep?"Result:?OK:"`
????if?[?"$result"?=?""?];?then
?????????cat?$PGDEV?|?fgrep?Result:
????fi
}

#
?為0號線程綁定ens4f0v0網卡
PGDEV=/proc/net/pktgen/kpktgend_0
echo?"Removing?all?devices"
pgset?"rem_device_all"???#?清空網卡綁定
echo?"Adding?ens4f0v0"
pgset?"add_device?ens4f0v0"??#?添加ens4f0v0網卡
echo?"Setting?max_before_softirq?10000"
pgset?"max_before_softirq?10000"

#
?配置ens4f0v0網卡的測試選項
PGDEV=/proc/net/pktgen/ens4f0v0
pgset?"count?1000000"????#?總發包數量,0?表示一直發送
pgset?"delay?5000"???????#?不同包之間的發送延遲(單位納秒)
pgset "clone_skb 0"??????# SKB包復制,表示復制多少數據包,clone_skb=1000,克隆1000報文;clone_skb=0表示不克隆,就是一直發送同一個報文。
pgset?"pkt_size?64"??????#?網絡包大小
pgset?"dst?192.168.1.12"?#?目的IP
pgset?"src_mac?ea:0c:48:be:43:09"??#?源MAC
pgset?"dst_mac?7e:6c:0c:13:80:a6"??#?目的MAC

#
?啟動測試
PGDEV=/proc/net/pktgen/pgctrl
echo?"Running...?ctrl^C?to?stop"
pgset?"start"
echo?"Done"

執行pktgen_start.sh腳本,如下:

[root@localhost pktgen]# ./pktgen_start.sh
Removing all devices
Adding ens4f0v0
Setting max_before_softirq 10000
Running... ctrl^C to stop
Done

等待片刻,測試完成后,結果可以從?/proc?文件系統中獲取。通過下面代碼段中的內容,我們可以查看到剛才的測試報告:

[root@localhost pktgen]# cat /proc/net/pktgen/ens4f0v0
Params: count 1000000 min_pkt_size: 64 max_pkt_size: 64
frags: 0 delay: 5000 clone_skb: 0 ifname: ens4f0v0
flows: 0 flowlen: 0
queue_map_min: 0 queue_map_max: 0
dst_min: 192.168.1.12 dst_max:
src_min: src_max:
src_mac: ea:0c:48:be:43:09 dst_mac: 7e:6c:0c:13:80:a6
udp_src_min: 9 udp_src_max: 9 udp_dst_min: 9 udp_dst_max: 9
src_mac_count: 0 dst_mac_count: 0
Flags:
Current:
pkts-sofar: 1000000 errors: 0
started: 1910279455101us stopped: 1910284455352us idle: 4381728us
seq_num: 1000001 cur_dst_mac_offset: 0 cur_src_mac_offset: 0
cur_saddr: 192.168.1.11 cur_daddr: 192.168.1.12
cur_udp_dst: 9 cur_udp_src: 9
cur_queue_map: 0
flows: 0
Result: OK: 5000250(c618521+d4381728) usec, 1000000 (64byte,0frags)
199989pps 102Mb/sec (102394368bps) errors: 0

測試報告主要分為三個部分:

  • 第一部分的?Params?是測試選項;
  • 第二部分的?Current?是測試進度,其中,?packts so far(pkts-sofar)表示已經發送了?100?萬個包,也就表明測試已完成。
  • 第三部分的?Result?是測試結果,包含測試所用時間、網絡包數量和分片、PPS、吞吐量以及錯誤數;其中測試用時5000250納秒,總共1000000 64?字節包,每秒?199989?包,吞吐量?102Mb/s0?錯誤。
2) 構建一直發送數據包

構造pktgen配置腳本pktgen_start.sh如下:

#?定義一個工具函數,方便后面配置各種測試選項
function?pgset()?{
????local?result
????echo?$1?>?$PGDEV

????result=`cat?$PGDEV?|?fgrep?"Result:?OK:"`
????if?[?"$result"?=?""?];?then
?????????cat?$PGDEV?|?fgrep?Result:
????fi
}

#
?為0號線程綁定ens4f0v0網卡
PGDEV=/proc/net/pktgen/kpktgend_0
echo?"Removing?all?devices"
pgset?"rem_device_all"???#?清空網卡綁定
echo?"Adding?ens4f0v0"
pgset?"add_device?ens4f0v0"??#?添加ens4f0v0網卡
echo?"Setting?max_before_softirq?10000"
pgset?"max_before_softirq?10000"

#
?配置ens4f0v0網卡的測試選項
PGDEV=/proc/net/pktgen/ens4f0v0
pgset?"count?0"????#?總發包數量,0?表示一直發送
pgset?"delay?5000"???????#?不同包之間的發送延遲(單位納秒)
pgset "clone_skb 0"??????# SKB包復制,表示復制多少數據包,clone_skb=1000,克隆1000報文;clone_skb=0表示不克隆,就是一直發送同一個報文。
pgset?"pkt_size?64"??????#?網絡包大小
pgset?"dst?192.168.1.12"?#?目的IP
pgset?"src_mac?ea:0c:48:be:43:09"??#?源MAC
pgset?"dst_mac?7e:6c:0c:13:80:a6"??#?目的MAC

#
?啟動測試
PGDEV=/proc/net/pktgen/pgctrl
echo?"Running...?ctrl^C?to?stop"
pgset?"start"
echo?"Done"

執行pktgen_start.sh腳本,如下:

[root@localhost pktgen]# ./pktgen_start.sh
Removing all devices
Adding ens4f0v0
Setting max_before_softirq 10000
Running... ctrl^C to stop
^C
#注意這里需要進入ns1命名空間,后續top和sar方可生效
[root@localhost ~]# ip netns exec ns1 bash
# top查看kpktgend_0線程,CPU利用率100%
[root@localhost ~]# top
top - 16:51:30 up 22 days, 2:45, 4 users, load average: 0.45, 0.11, 0.04
Tasks: 1154 total, 2 running, 1152 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 1.3 sy, 0.0 ni, 98.2 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 st
MiB Mem : 95004.3 total, 78765.2 free, 3082.3 used, 13156.7 buff/cache
MiB Swap: 10240.0 total, 10240.0 free, 0.0 used. 91041.1 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1025692 root 20 0 0 0 0 R 100.0 0.0 0:44.83 kpktgend_0
1026886 root 20 0 66672 6180 4160 R 1.0 0.0 0:00.28 top
2257 root 20 0 542808 79216 55736 S 0.3 0.1 20:03.38 tuned
38797 root 20 0 0 0 0 I 0.3 0.0 57:13.30 kworker/43:2-events
737227 root 20 0 0 0 0 I 0.3 0.0 0:00.38 kworker/1:1-events
1025407 root 20 0 0 0 0 S 0.3 0.0 0:00.13 kpktgend_45
1025421 root 20 0 0 0 0 S 0.3 0.0 0:00.09 kpktgend_59
1025837 root 20 0 0 0 0 S 0.3 0.0 0:00.09 kpktgend_64
1026889 setroub+ 20 0 545408 130552 20008 S 0.3 0.1 0:00.86 setroubleshootd
1 root 20 0 240916 13656 8788 S 0.0 0.0 0:42.28 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:01.06 kthreadd

#查看ns1命名空間中,各個端口收發包情況
[root@localhost ~]# sar -n DEV 1
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain) 11/03/2023 _x86_64_ (80 CPU)

08:25:41 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
08:25:42 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:25:42 PM ens4f0v0 1.00 200020.00 0.09 12501.25 0.00 0.00 0.00 0.41

08:25:42 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
08:25:43 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:25:43 PM ens4f0v0 1.00 200007.00 0.09 12500.44 0.00 0.00 0.00 0.41

08:25:43 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
08:25:44 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:25:44 PM ens4f0v0 1.00 200036.00 0.09 12502.25 0.00 0.00 0.00 0.41

等待片刻,通過Ctrl C?終止測試后,結果可以從?/proc?文件系統中獲取。通過下面代碼段中的內容,我們可以查看到剛才的測試報告:

[root@localhost pktgen]# cat /proc/net/pktgen/ens4f0v0
Params: count 0 min_pkt_size: 64 max_pkt_size: 64
frags: 0 delay: 5000 clone_skb: 0 ifname: ens4f0v0
flows: 0 flowlen: 0
queue_map_min: 0 queue_map_max: 0
dst_min: 192.168.1.12 dst_max:
src_min: src_max:
src_mac: ea:0c:48:be:43:09 dst_mac: 7e:6c:0c:13:80:a6
udp_src_min: 9 udp_src_max: 9 udp_dst_min: 9 udp_dst_max: 9
src_mac_count: 0 dst_mac_count: 0
Flags:
Current:
pkts-sofar: 9637001 errors: 0
started: 1910680695090us stopped: 1910728880086us idle: 42081825us
seq_num: 9637002 cur_dst_mac_offset: 0 cur_src_mac_offset: 0
cur_saddr: 192.168.1.11 cur_daddr: 192.168.1.12
cur_udp_dst: 9 cur_udp_src: 9
cur_queue_map: 0
flows: 0
Result: OK: 48184996(c6103170+d42081825) usec, 9637001 (64byte,0frags)
200000pps 102Mb/sec (102400000bps) errors: 0

測試報告主要分為三個部分:

  • 第一部分的?Params?是測試選項;
  • 第二部分的?Current?是測試進度,其中,?packts so far(pkts-sofar)表示終止時已經發送了960?萬個包。
  • 第三部分的?Result?是測試結果,包含測試所用時間、網絡包數量和分片、PPS、吞吐量以及錯誤數;其中測試用時48184996納秒,總共9637001 64?字節包,每秒?200000?包,吞吐量?102Mb/s0?錯誤。

根據上面的結果,我們發現,PPS?為?20?萬,吞吐量為?102 Mb/s,沒有發生錯誤。那么20?萬的?PPS?好不好呢?作為對比,你可以計算一下千兆交換機的?PPS。交換機可以達到線速(滿負載時,無差錯轉發),它的?PPS?就是?1000Mbit?除以以太網幀的大小,即?1000Mbps/((64+20)*8bit) = 1.5 Mpps(其中,20B?為以太網幀前導和幀間距的大小)。

四、pktgen官方腳本

前面的配置稍微有些復雜,可能用起來不是特別的便捷,Linux?內核提供了更為方便的pktgen的腳本,在Linux內核源碼的linux/samples/pktgen/?目錄下,如下所示:

[root@localhost pktgen]# ls -l /linux/samples/pktgen/
total 52
-rw-r--r--. 1 xf xf 8841 Jun 15 14:52 functions.sh
-rw-rw-r--. 1 xf xf 3767 Jun 15 14:52 parameters.sh
-rwxrwxr-x. 1 xf xf 3390 Jun 15 14:52 pktgen_bench_xmit_mode_netif_receive.sh
-rwxrwxr-x. 1 xf xf 2563 Jun 15 14:52 pktgen_bench_xmit_mode_queue_xmit.sh
-rwxrwxr-x. 1 xf xf 2818 Jun 15 14:52 pktgen_sample01_simple.sh
-rwxrwxr-x. 1 xf xf 3145 Jun 15 14:52 pktgen_sample02_multiqueue.sh
-rwxrwxr-x. 1 xf xf 3382 Jun 15 14:52 pktgen_sample03_burst_single_flow.sh
-rwxrwxr-x. 1 xf xf 3418 Jun 15 14:52 pktgen_sample04_many_flows.sh
-rwxrwxr-x. 1 xf xf 3096 Jun 15 14:52 pktgen_sample05_flow_per_thread.sh
-rwxrwxr-x. 1 xf xf 3981 Jun 15 14:52 pktgen_sample06_numa_awared_queue_irq_affinity.sh
-rw-rw-r--. 1 xf xf 2663 Jun 15 14:52 README.rst

注意:可以通過git clone git@github.com:torvalds/linux.git,從github上獲得Linux官方內核源碼,其中即含有pktgen_*系列腳本以供直接使用。

上一節中的配置就可以簡單化成一條命令,如下:

./pktgen_sample01_simple.sh?-i?ens4f0v0?-m??7e:6c:0c:13:80:a6?-d?192.168.1.12?-t?0?-n?1000

該腳本是通用腳本,部分參數不支持,需要做簡單修改,參數含義如下:

Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
-i : ($DEV) output interface/device (required)
-s : ($PKT_SIZE) packet size
-d : ($DEST_IP) destination IP
-m : ($DST_MAC) destination MAC-addr
-t : ($THREADS) threads to start
-f : ($F_THREAD) index of first thread (zero indexed CPU number)
-c : ($SKB_CLONE) SKB clones send before alloc new SKB
-n : ($COUNT) num messages to send per thread, 0 means indefinitely
-b : ($BURST) HW level bursting of SKBs
-v : ($VERBOSE) verbose
-x : ($DEBUG) debug
-6 : ($IP6) IPv6

該命令的執行結果如下:

[root@localhost pktgen]# ./pktgen_sample01_simple.sh -i ens4f0v0 -m  7e:6c:0c:13:80:a6 -d 192.168.1.12 -t 0 -n 1000
Running... ctrl^C to stop
Done
Result device: ens4f0v0
Params: count 1000 min_pkt_size: 60 max_pkt_size: 60
frags: 0 delay: 0 clone_skb: 0 ifname: ens4f0v0
flows: 0 flowlen: 0
queue_map_min: 0 queue_map_max: 0
dst_min: 192.168.1.12 dst_max: 192.168.1.12
src_min: src_max:
src_mac: ea:0c:48:be:43:09 dst_mac: 7e:6c:0c:13:80:a6
udp_src_min: 9 udp_src_max: 109 udp_dst_min: 9 udp_dst_max: 9
src_mac_count: 0 dst_mac_count: 0
Flags: UDPSRC_RND NO_TIMESTAMP
Current:
pkts-sofar: 1000 errors: 0
started: 1929289439111us stopped: 1929289440886us idle: 422us
seq_num: 1001 cur_dst_mac_offset: 0 cur_src_mac_offset: 0
cur_saddr: 192.168.1.11 cur_daddr: 192.168.1.12
cur_udp_dst: 9 cur_udp_src: 51
cur_queue_map: 0
flows: 0
Result: OK: 1774(c1352+d422) usec, 1000 (60byte,0frags)
563629pps 270Mb/sec (270541920bps) errors: 0

是不是比上一節中手動修改腳本方便多了,就是下載這個腳本有些麻煩,如果從github下載內核整個的源碼比較困難,可以直接在github上把需要的腳本的內容拷貝下來,手動創建相應腳本。

注意:如果是單獨復制pktgen_sample01_simple.sh腳本,則一定要將該目錄下的functions.shparameters.sh腳本一同復制到同一目錄下,否則執行pktgen_sample01_simple.sh腳本時會出現如下錯誤:

[root@localhost pktgen]# ./pktgen_sample01_simple.sh -i ens4f0v0 -m  7e:6c:0c:13:80:a6 -d 192.168.1.12 -t 0 -n 1000
./pktgen_sample01_simple.sh: line 9: ./functions.sh: No such file or directory
./pktgen_sample01_simple.sh: line 10: root_check_run_with_sudo: command not found
./pktgen_sample01_simple.sh: line 15: ./parameters.sh: No such file or directory
./pktgen_sample01_simple.sh: line 23: usage: command not found
./pktgen_sample01_simple.sh: line 26: validate_addr: command not found
./pktgen_sample01_simple.sh: line 27: parse_addr: command not found
./pktgen_sample01_simple.sh: line 40: pg_ctrl: command not found
./pktgen_sample01_simple.sh: line 44: pg_thread: command not found
./pktgen_sample01_simple.sh: line 45: pg_thread: command not found
./pktgen_sample01_simple.sh: line 48: pg_set: command not found
./pktgen_sample01_simple.sh: line 52: pg_set: command not found
./pktgen_sample01_simple.sh: line 55: pg_set: command not found
./pktgen_sample01_simple.sh: line 58: pg_set: command not found
./pktgen_sample01_simple.sh: line 61: pg_set: command not found
./pktgen_sample01_simple.sh: line 64: pg_set: command not found
./pktgen_sample01_simple.sh: line 65: pg_set: command not found
./pktgen_sample01_simple.sh: line 66: pg_set: command not found
./pktgen_sample01_simple.sh: line 78: pg_set: command not found
./pktgen_sample01_simple.sh: line 79: pg_set: command not found
./pktgen_sample01_simple.sh: line 80: pg_set: command not found
Running... ctrl^C to stop
./pktgen_sample01_simple.sh: line 94: pg_ctrl: command not found
Done
Result device:
cat: /proc/net/pktgen/: Is a directory

這里只演示?pktgen_sample01_simple.sh腳本的使用方法,其他pktgen_sample*腳本大家可以自行研究摸索。

五、pktgen常用命令

1、控制命令

名稱含義
start所有的線程開始發送
stop停止

2、線程命令

名稱含義
add_device添加某個網卡到某個線程
rem_device_all刪除綁定在某個線程的所有網卡
max_before_softirq在最多發送多少個數據包后執行do_softirq()

3、端口命令

名稱含義
count發送數據包的個數,0 表示一直發送
clone_skb對每個skb進行多少個復制,0表示不復制。對于Dos等測試必須至零
debug調試
frags數據包的片段數量
delay發送兩個數據包之間的延時
src_mac_count源mac的數量,從src mac設置的mac開始輪詢
dst_mac_count目的mac的數量,從dst mac設置的mac開始輪詢
pkt_size鏈路包的大小(前去CRC的值)
min_pkt_size數據包最小值
max_pkt_size數據包最大值
udp_src_min最小源udp端口號
udp_src_max最大源udp端口號
udp_dst_min最小目的udp端口號
udp_dst_max最大目的udp端口號
flag
IPSRC_RND
TXSIZE_RND
IPDST_RND
UDPSRC_RND
UDPDST_RND
MACSRC_RND
MACDST_RND
PSRC_RND 源IP隨機發送
dst_min目的IP的最小值
dst_max目的IP的最大值
src_min源IP最小值
src_max源IP最大值
dst_mac目的mac
src_mac源mac
clear_counters清空計數器,一般程序自動清空
dst6目的IPv6地址
src6源IPv6地址
flows并發流的個數
flowlen流的長度

注意:如果不想使用第三節中提供的pktgen_start.sh腳本,則可以自己手動按照如下方式進行設置,這里舉兩個例子供參考:

  • 添加網卡至線程

    echo?"add_device?eth0"?>?/proc/net/pktgen/kpktgend_0??
  • 添加目的MAC地址

    echo?"dst_mac?aa:bb:cc:dd:ee:ff"?>?/proc/net/pktgen/eth0

六、pktgen總結

pktgen測試的組網和iperf測試基本相同,客戶端安裝pktgen來發包,接收端通過sar命令(Linux系統)來查看端口統計信息,進而獲得測試網絡的吞吐和PPS等性能指標,通過對比收發兩端的速率來判斷是否有丟包。


Linux二進制 Linux編程、內核模塊、網絡原創文章分享,歡迎關注"Linux二進制"微信公眾號
評論
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩定起振的成品,要經過十幾道精密工序。它內部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個生產過程里哪怕0.1微米的誤差,都會直接廢掉整批產品,這也是小尺寸晶振過去長期依賴進口,國內廠商花了十幾年才啃下量產硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 551瀏覽
  • 產品使用18V供電,配套4串鋰離子電池,需要設計一個充電器。因為輸入18V,電池最高 16.8V,壓差僅 1.2V。因為壓差太小。使用開關型的充電控制芯片不穩定。嘗試自行設計一個。整體采用分立三極管 + TL431架構,分4個功能單元:使能控制回路、限流環路、TL431 精密恒壓反饋環路、PNP 功率管主功率輸出回路;實現完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經 R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導通,對地拉低 R1、R2 組成的分壓控制節點電位;該節點直
    southcreek 2026-08-07 13:45 503瀏覽
  • 做儲能項目,你是怎么選控制器的?隨著工商業儲能、電網側儲能的規模化落地,作為儲能EMS“大腦”的嵌入式控制器,直接決定了整套系統的運行穩定性、數據可靠性與項目落地效率。不少從業者都踩過類似的坑:接口數量不足要額外加裝擴展模塊、戶外高溫導致設備宕機、電磁干擾引發數據丟包、軟件生態薄弱拖慢開發周期……選對儲能控制器,核心要盯準四個關鍵維度。首先看接口能力:全鏈路覆蓋,才是降本的核心。一套完整的儲能系統,需要同時對接PCS、BMS、智能電表、溫濕度傳感器、除濕機、煙感消防主機,還要連接急停開關、斷路器
    飛凌嵌入式 2026-08-11 08:46 72瀏覽
  • 一、方案簡介在Buildroot構建的嵌入式Linux系統中部署Flutter應用,主流有兩套成熟的開源方案,分別適配不同的顯示場景與開發需求:方案一:flutter-elinux(Sony開源方案)由索尼官方維護的嵌入式Linux Flutter工具鏈,既支持DRM/GBM直接渲染,也兼容Wayland、X11等多種顯示后端,場景適配性更廣。方案二:flutter-pi(輕量級嵌入器)一款輕量級Flutter引擎宿主程序,僅基于底層DRM/GBM接口實現渲染,無需依賴桌面環境,資源占用更低,更
    飛凌嵌入式 2026-08-07 09:34 208瀏覽
  • 讓微弱脈沖信號更清晰——鎖相放大器集成Boxcar平均器在脈沖激光、泵浦-探測、時間分辨光譜、飛行時間質譜等實驗中,真正需要測量的信號往往只出現在一個很短的時間窗口內,卻被淹沒在遠大于它的噪聲和背景之中。 針對這類穩定重復的微弱脈沖與瞬態信號,賽恩科儀為OE2052雙通道數字鎖相放大器帶來全新的Boxcar Averager功能升級:在鎖相檢測之外,進一步提供從周期波形觀察、門控測量到多周期平均的完整數字Boxcar測量鏈路。 Boxcar平均器,如何從噪聲中“截取”目標信號?Boxcar平均器
    SSI_賽恩科儀 2026-08-07 15:49 20441瀏覽
  • 樓宇自控里的“巴別塔”一棟智慧樓宇、一個產業園區里,暖通空調運行著廠商私有協議,照明系統遵循專屬通信標準,變配電、門禁安防各成體系——設備間數據壁壘森嚴,上位平臺對接全靠定制化 “翻譯” 開發,不僅成本高企,交付周期也難以管控。這就是樓宇自控行業多年的痛點:協議林立、封閉林立。而破局的鑰匙,早在30多年前就已經寫好了——BACnet。作為ASHRAE制定的樓宇自控國際標準協議,BACnet是如今全球樓宇自控系統(BAS)互聯互通的“通用語言”。新風機、冷源群控、變配電、照明、門禁,凡是需要被樓宇
    飛凌嵌入式 2026-08-10 09:26 248瀏覽
  • 摘要東莞市恒創連接器有限公司(HCHGCONN)是位于廣東東莞的連接器源頭制造工廠,專注于連接器國產替代、小間距大電流連接器、線對板連接器、線對線連接器、板對板連接器、電源連接器及定制連接器開發。公司面向工業自動化、新能源儲能、BMS、汽車電子、AI服務器、GPU供電、通信設備、醫療設備和智能家居等場景,提供從產品選型、替代評估、樣品驗證到批量交付的一站式連接方案。恒創可支持 Molex、TE Connectivity、JST、Hirose、Samtec 等國際品牌部分系列的國產替代評估。常見替
    HC003 2026-08-07 10:14 202瀏覽
  • 做藍牙音箱的工程師大概都碰過這個局面。產品要連手機放歌,要本地播開機提示音和按鍵音,還要接 App 做配網和狀態上報。三件事拆開,早先的常規做法是音頻藍牙一顆料、數傳藍牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍牙、BLE 數傳和 MP3 本地播放三樣全包了。對藍牙音箱來說,最實在的好處就
    唯創知音語音芯片 2026-08-06 15:14 391瀏覽
  • 在物聯網從“萬物互聯”邁向“萬物智聯”的進程中,LTE Cat.1憑借其在速率、成本與網絡覆蓋之間的完美平衡,正成為中低速物聯網市場的絕對主力。隨著2G/3G網絡的逐步退網以及新國標對終端設備智能化、定位功能的強制要求,Cat.1模組迎來了爆發式的增長窗口。在這一關鍵節點,基于華為海思Hi2131芯片設計的LTE Cat.1模組,憑借其在能效、射頻、架構及物理規格上的底層創新,成功打破了“高性能必高功耗”的傳統魔咒,為行業提供了極具競爭力的連接最優解。核心技術優勢:重塑Cat.1能效與連接標桿海
    用戶1778981989717 2026-08-05 21:04 209瀏覽
  • 做電池供電攝像頭、可視門鈴、戶外安防的同學應該都踩過這個坑:攝像頭要拍,ISP、sensor、無線模塊全得開著,整機電流動輒幾百 mA。一節 18650 撐不了幾天,用戶投訴“怎么又沒電了”。有人會說:加個 PIR 人體紅外不就行了?問題是 PIR 怕熱、怕寵物、怕隔著亞克力/玻璃殼,而且只能感知“有溫差的人體移動”,靈敏度飄忽。真正省電的思路應該是:讓攝像頭平時徹底睡死,只有“前面有人/有動靜”時才被一鍵喚醒——而負責這個“看門”角色的,最合適的是一顆低功耗雷達。一、為什么是雷達,而不是 PI
    唯創知音語音芯片 2026-08-07 14:44 228瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 218502瀏覽
  • 導語在現代高速數字電路設計中,信號的完整性已不僅是理想波形推演,而是一場與物理非理想特性正面博弈的工程實踐。濾波器芯片作為凈化傳輸鏈路的關鍵屏障,其核心挑戰在于:能否有效識別并濾除那些隱匿在電平跳變過程中的亞納秒級瞬態脈沖干擾,這類干擾持續極短,卻足以在高速鏈路中引發誤觸發。然而,傳統函數發生器受限于采樣率與邊沿速率,根本無法忠實復現如此狹窄且陡峭的異常波形。針對此困境,德思特TS-AWG7000系列任意波形發生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態脈沖提供精細刻畫,配合SPG
    德思特測試測量 2026-08-05 14:06 5瀏覽
我要評論
0
點擊右上角,分享到朋友圈 我知道啦
請使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 八戒八戒电影在线观看| 刘可雯的电影片| 女版战狼6全集免费观看| 85老版隋唐演义电视剧| 《G点》1985欧美在线| 金银瓶1-5国语普通话2 | 水卜樱的番外篇剧情解析gif| 铿铿锵锵在线看免费观看 | 大兵侮辱黄家驹| 风流小姨子电影| 游山西村的诗意| 小孩身上有白斑图片| 啄木鸟酒店实生2023| 神木丽| 囡囡 在线观看| 狂飙电视剧全集免费在线观看 | 权力的游戏第7季无删减完整观看| 噼里啪啦国语版在线观看 | 电视剧包青天| 免费观看甜蜜惩罚| 移动迷宫3 死亡解药| 我愿意 孙红雷| 《落魄贵族琉璃川》2集免费观看| 《八仙子过大年》| 坎贝奇无憾人生免费| 高清《热带雨》完整版视频| 天启Z完结的起点| 突围免费完整版在线观看| 爱的二八定律免费全集| 高清《纯真时代》| 马龙回应能否多打几届奥运| 好迪代言人李玟| 日本大学生特殊按摩3免费观看| 爱的套索| 林凡短剧免费观看全集| 18av千部电影与你分享| 电影《渔夫的妻子》赛纶 | 世界围绕你电视剧| 新杨门女将赵丽颖电视剧在线观看| 硬汉枪神在线观看| 老板的办公室观看| 初恋的回忆qvod| 吉星高照2015粤语| 英国式家庭禁忌结局-3| 蜜桃成熟时电影观看| 《疾速追杀:芭蕾杀姬》| 怀玉公主优酷| 肉蔻之香无删减版在线观看完整版 | 风云电影网| 逃学威龙1免费高清观看国语版| 奔跑吧第十一季免费观看| 女鬼剑剑宗| 姐妹牙医电影手机在线| 动感之星之妖精168集在线观看| 天使情人| 人猿泰山hr版1995意大利版 | 楚留香任贤齐国语版| 电影塔日酒店完整版| 南拳北腿粤语| 战狼8欧式少女全部剧情| 飞哥大英雄23集| 安齐拉拉电影免费观看| 死亡笔记动漫全集| 妈妈的职业2观看全集免费高清中文| a篇免费视频| 蝴蝶效应2电影完整版观看| 开心鬼放暑假粤语版| 罗丽星克莱尔性迷宫在线播放 | 高清《她和她的她》电视剧| 特种兵之火凤凰32集| 我心似海洋| 捆绑轮奸电影| 彰武县| 八戒在线观看免费高清电视剧狂飙| 创造营2020| 女超人满天星电影免费观看| 八尺夫人意大利免费观看全集高清 | 369你懂的电影在线视频| 家和万事兴之兄弟姐妹| 大熊和熊二全集免费观看| 《一代女皇》电视剧| 无限日本电影免费观看完整版| 欢迎光临全集免费观看| 辽视春晚宋小宝| 含好不许吐h| 旋风少女| 夺回千亿家产:私生女逆袭短剧全集| 真心想让你幸福免费观看全集| 第一伞兵队电视剧| 修理工与少妇马| 雪梨枪4p视频下载| 妈妈打电话6| 长月无烬电视剧全集免费观看| 日本混血女大学生精油按摩三位混血女大学生BDHD | 进击的巨人5| 警戒线 电视剧| 一站到底徐琦| 海魂电视剧| 吃鸡名字男生高冷| 《女朋友的真实容貌》动漫1~2集| 十万人出头天| 红高粱全集免费| 法国空姐2009在线看整板 | 法国空姐2019满天星法版:星辉照耀 | 至上之法| 我的姐姐动漫在线观看完整版免费| 1987渔夫荒野史记免费观看最新章节列| 五十公里桃花坞4免费观看完整版 和女邻居做爰2在线观看 | 电影《金牌销售》法国| 开国大典电影完整版| 侯玉洁讲道视频2002年的视频| 巜交换邻居女朋友4| 水电工的艳遇| 电影日本妈妈| 面包王子金卓求| 灰姑娘动画片| 新编辑部故事| 站着再来一次26集更新时间| 故乡别来无恙电视剧免费观看| 女超人麦乐迪无删减版完整版| 《三万英尺的温暖》免费观看| 二对一的商务模式2| 理发店里的特殊待遇,美容室特殊服务1中字| Melody女超人免费观看高清| 名捕震关东电视剧全集免费观看| 红字 韩国| 花木兰 高清| 妈妈的味道3中字电影| 娜露温泉无删减视频在线看| 勤劳的继拇中字| 广东碧桂园学校| 牙医姊妹| 穿越弃少古代:混风生水起短剧全集 | 法国炸天小姐1984版| 星球大战原力释放| 沭阳县| 乔布斯 吸毒| 清明上河图免费看| 桃色激情| 爱情而已电视剧免费观看全集完整版 | 电视剧冰锋剧情介绍| 外来从业人员综合保险查询| 《绿色椅子》| 美容院:待遇服务5HD| 盾牌第七季| 567电影| 芭比之神秘之门普通话免费观看| 苏醒宠妻:植物人老公短剧全集| 意大利《激战丛林》电影免费观看| 超级艳遇| 《超女麦乐迪》完整版| 花样男子全集| 漂亮小瘦子 3| 死亡笔记电影1| 黑白配免费在线观看| 在韩国成为房主的方法全集观看| 《法国空姐2020法版》中文版| 红海行动手机 在线观看| 销售的销售秘密免费观看高清版 | 一寸一寸进入小姪女| 女扮男装当校草全集免费| 电影《灭火小妞》在线观看| 日本电影公公来做客4| 总统夫人星克莱尔完整版在线观看 | 叛逆者哪个台播出| 桑尼称二维码被篡改| 花谢花开花满天| 《落魄贵族琉璃》动漫| 老田de幸福生活| 千金与佣人电影观看里的揉大白兔| 野花社区日本韩国免费观看| 八戒,八戒免费在线观看8| 小小的我电影免费观看易烊千玺| 澳门风云高清完整版| 正在播放: CJOD-348 乳头冰巨乳零食妈妈厚直到早上无与伦比的客户服务中出事 | 风流才子纪晓岚插曲| 日本维修工艳遇| 满清十大刑酷翁虹版| 只有神知道的世界| 如意芳华短剧免费观看| 几度菊花香| 冬之蝉动漫免费全集观看| 东北警察故事| 电影《恶行》在线观看| 启东市| 《爆弹》| 《法国空乘5》观看在线观看| 开封奇案| 《黑色的眼泪》在线播放免费观看| 王向阳书法| 女朋友的母亲1| 八九不离十| 李自成电视剧全集免费观看| 安全屋电影| 女子10米跳台决赛直播在线观看| 《花子vs倔强的驱魔师》1-4集动漫在线 | 猪猪侠保卫战| 堂吉诃德动画片| 背后运球| 《僵尸叔叔》国语版免费观看| 白峰电影在线观看高清| 《五感图》| 湖南省| 楚汉传奇 下载| 高清《为有暗香来》| 情定三生全集| 某种物质国语在线观看 | 安娜电影完整版免费观看| 三国传动画片| 神鬼战士1满天星版| 神墓在线观看全集免费观看动漫| 凌云壮志欧美满天星| 暖暖的国语版全集观看| 鬼神的香气| 豚鼠系列1:恶魔实验完整版| 白夜破晓第二季在线观看免费| 三年在线观看高清免费| 归路电视剧在线观看全集| 猎罪图鉴2免费观看| 《以法之名》免费观看高清| 人脉王韩剧在线观看星辰| 冰湖重生全集观看| 饭冈かなこ在线播放| 风与行电视剧免费| 深恋在红尘短剧全集播放| 野蛮人科南| 特种兵之火凤| 女机械人1980法国满天星| 电影雷霆战警| 孵蛋皇后| 断背山在线观看| 百日的郎君免费观看 电视剧| 好姑娘4完整版在线观看| 迪迦奥特曼第52集| 电锯惊魂6高清版| 新楚留香任贤齐版高清| 邻居也疯狂免费观看电视剧| 启航当风起时电视剧全集免费观看| 梨泰院class在线观看| 特工狂花| 前田香织种子| 斗罗大陆绝世唐门动漫免费观看| 阿坝一家人电视剧在线观看| 韩剧秘密爱电影免费观看| 青禾男高电影| 幸福触手可及电视剧全集免费观看| 人世间电视剧在线观看免费雷佳音| 美食总动员在线观看| 电影 爱有来生| 白蛇后传电视剧| 陈梦王曼昱神仙打架| 电影《默杀》免费观看高清版| 绝望的主妇 第6季| 双性受抽搐潮喷调教老师与学生| 雨花石mv| 李胜素京剧唱段| 《图书女朋友》动漫免费观看全集| 长月烬明免费观看电视剧高清| 中国女警的一级播放| 混乱武林3谁与争锋| 46集电视连续剧情满四合院| 电影朋友的妈妈| 求婚大作战 韩剧| 渴望城市电视剧全集| 激战丛林134分钟版| 异形终结2| 罪恶都市特殊车辆任务| 不惑之旅一共多少集| 《正在缩小的男人》| 少女免费观看高清电视剧| 台湾版《棘手狂情》香港电影| 电击小子第3季| 《七根心简》电视剧| 极恶非道3电影高清版免费观看| 下海 电视剧| 麦乐迪美剧| 贵妇人街电影版免费观看中文| 免费看斗罗大陆| 爱情真善美电视剧| 快嘴李翠莲高清| 西游记满天星| 《那山那海》今晚开播| 韩剧我的妈妈| 守护猫娘绯鞠| 挣扎吧亚军君免费观看完整版| 安拉拉斋电影在免费播 | けんじゃたいむ八重神子| 还珠格格一部全集免费| 斗破苍穹45全集免费| 一代女皇武则天| 欧美1-5| 黑帮大佬的365天 完整版| 高清马克斯·维斯塔潘:新征途| 《玛丽!玛丽!》满天星中文 | 战狼8整版国语免费观看姐弟| 极盗行动免费完整版在线观看中文版| 余罪第三部全集完整版| 武动乾坤第6季在线播放免费| 李丽珍蜜桃| 《部长出差的日子》韩国| 李丽珍爱的 精灵| 北方影院之错缘| 食物链2大尺寸原声中文歌词| 幸孕萌宝宠翻天短剧免费播放| 鲁滨逊漂流记 电影| 斗罗大陆190全集免费完整版| 杨敏思版1-5集电视连续剧| 不识泰山| 《女超人满天星版》麦乐迪 | 1995版《泰山和珍妮丛林》免费观看在| 粟裕大将| 宫心计全集在线观看| 战狼6欧式少女免费| 美丽的小蜜桃4中国版演唱者是谁| 特殊按摩急诊室| 二十八星瓢虫| 一起来看流星雨35| 刚结婚陪部长出差在线观看| 法国空乘5全集观看| 千古玦尘电视剧全集| 骊歌行在线观看| 名侦探柯南557| 销售的秘密韩国电影在线观看完整版 | 山东高密砍人案件| 白雪公主成人H欧美| 电视剧别问我是谁| 花房姑娘8季在线观看免费| 高清《同居的目的》电影| 伊波拉病毒国语版| 黑白配2018| 十大奇冤高清| 啊父老乡亲电视剧全集免费观看 | 好运全集观看| 《粉红小白菜》美国| 半斤八两动画片全集| 孤注一掷在线观看免费高清王传君| 平凡英雄电影免费观看| 新济公活佛下部| 秘密女搜查官の天海翼| 来自地狱的法官电视剧| 高清《我老公的朋友2》| 黑鬼寄宿无删减版在线观看网站| 与凤行电视剧在线观看完整版免费 | 《游泳教练》免费观看| 富贵门国语全集| 猩猩电影| 法老荒史在线观看免费版高清| 因为我太傻中文歌词| 芭比之时尚奇迹中文版全集| 淫方程式动漫1~2集免费观看| 直销堂网| 初代奥特曼国语全集| 以爱为营全集| 张家界市| 青春禁区在线看| 坎贝奇无憾完整版在线观看 | 战狼6欧美电影免费观看在线播放版 | 小巷人家电视剧免费版观看| 电影三不管| 赌博启示录 电影| 《瓜达卢佩的玫瑰》| 浮世风云绘无删减版免费观看| 铠甲勇士全| 女机械人1980法国满天星| 登顶后位:宫斗步步为营全集免费 | 电视剧湄公河大案| 姐妹牙医1986赤子板栗完整版| 黄健翔疯狂解说| 保罗2雪莉一家| 杨恭如被污辱的片段| 金星秀孟非| 淫方程式| 猩球崛起2:黎明之战电影| 电影《金悔瓶》徐少强雁夫人是谁演| 温暖的村庄电视剧全集在线观看| 二十一世纪爱指南完整版| 邻家女孩百度影音| 哪里可以观看《V酒店第一季》?| 财阀家的小儿子 电视剧| 同学妈妈| 《奔跑吧兄弟》第四季| 一起相愁愁全集免费观看| 唱k小鱼仙粤语| 爆裂飞车之晶码迷踪2024| 斗破苍穹148完整版免费观看| 百变大咖秀20130606| 《诱人的护士》在线| 性解密电影免费观看| 跳水世锦赛女子十米台决赛直播 | 就是要你爱上我2| 奥田咲种子| 我是歌手官方网站| 美国电影村妓| 一出好戏免费观看高清| 瓜达卢佩的玫瑰免费观看| 水浒传全集高清| 韩国电视剧毒爱| 苍井空色欲迷墙全集| 门当户对相亲节目| 碟中谍5在线观看完整高清免费版| 全职高手第3季| 寒枝折不断电视剧免费观看| 我们来了第一季免费观看完整版| 《新浪潮》| 我和大佬的三百六十五天| 战神3中文版下载| 千古玦尘电视剧免费观看超前点播| 试衣间和老师疯狂试爱| 恶魔少爷爱上我| 丧尸国度第三季| 亲密爱人韩国电影免费完整版| 男大当婚电视剧免费观看完整版| 重庆红孩子案件| 收割伊丽莎白| 妈妈的味道3中字电影| 希曼肚皮舞| 女老师电影正片| 巴西vs智利点球大战| 釜山行2在线观看完整版免费| 需要爸爸种子免费观看| 卑贱韩国电影| 爱唯侦察| 杀敌爆功力 我成武神小说| 电视剧战北平| 黑夜传说4在线观看| 本乡爱,二阶堂梦| 灵魂摆渡 电视剧| 八八爸爸| 长空之王电影| 韩剧命运派对| 微信圈子停运是什么意思| 掌中独宠电视剧免费观看| 开膛手杰克电影| 代号花木兰电视剧| 名侦探柯南723| let美人| 孤胆特工高清完整版电影在线观看| 维也纳新年音乐会| 屠城血证| 无法抗拒的他在线观看第8集| 山河令电视剧高清在线观看完整版| 谈情说案大结局| 两个人日本高清| 电影《风月》在线观看| daojianxiao| 多波野结衣| 生死兄弟情电视剧| 全城热恋20150920| 做aj的电视剧大全免费观看韩国| 绝地枪王2免费观看高清| 售楼小姐的秘密在线| 釜山行2半岛在线观看完整版| 荒野女战士HD版在线播放| 调查韩国总统夫人的反腐官员身亡| 法国电影女超人在线观看| 一站到底2018| 《天海翼商务旅行》电影在线观看| 罗马帝国情艳史| 棒棒TV| 杨沫的作品| 白石茉里奈| 草莓100| 高清招魂4:终章未删减| 十送红军小沈阳| 138高清影视| 开局花光老爸小金库短剧免费观看| 带跳DAN坐公交车| 忘羡第一次肉草地| 电视剧夜深沉| 东北往事黑道风云20| 林师傅在首尔剧情介绍| 如舞薄冰未删减| 致命哥罗芳| 高中生被C到爽哭视频免费| 相声楼上楼下| 国风按摩院在线免费观看 | 出轨韩剧| 美国达人秀2013| 客轮上的服务员怎么称呼| 刀郎北京演唱会| 我在伊朗长大台词| 新封神英雄榜全集| 人间正道电视剧| 行尸走肉 第1季| 电影恋爱的味道| 1980禁忌1980禁忌1芭芭拉全集 | 村妓一级| 高清亲爱的,别!未删减| 坎贝奇无憾全集码名| 魔童降世| 需要爸爸播种 美国版在哪里可以看| 轧戏在线观看| 沙漠女性治疗营2| 哪吒闹海动画片| 坏性被强奸的妻子| 范冰冰的苹果完整版| 社长夫人还债电影免费观看| 第一夫人在线观看| 需要爸爸播种电影免费播放英文| 冬不拉教学| 高清猎金·游戏| 新的景色电影| 星梦奇缘剧情简介| 伦理《私人护士》| 黑夜中的她短剧免费观看| 美丽的小蜜在线观看完整版| 坠入电影| 女超人麦乐迪无删| 我的世界电影在线观看免费| 金银梅7普通话| 百星酒店百度影音| 阿lin| 免费vip电影电视剧| 忠贞苏菲玛索| 长安的荔枝有电视剧吗| 韩寒中文网| 别墅轮换游戏3| 伊人网站在线观看| 刘智贤《水润人生》免费看| 《淘气的女孩也需要爱》| tobu4| 直播惊魂夜电影在线播放免费观看| 同江市| 点燃我温暖你在线| 刺客伍六七第三季免费观看| 姐妹牙医电影手机在线| 杀手阿一| 一代宗师高清| 壮志凌云杰西简在线观看| 爱的代价原唱是谁| 《双刃》短剧免费观看| 李延亮黄贯中| 盲点 美剧| 小凤新婚下集完整播放视频| 电视剧花非花雾非雾| 僵尸道长粤语| 善良的的瘦子| 云之羽免费观看全集电视剧| 银河奥特曼特别篇| 三年成全大片观看免费国语版 | 金素拉一脱成名最经典十句话| 东莞第一高楼| 穿梭阴阳恋| 伦理《女律师的堕落》| 痴人之爱电影在线观看| 百日蔷薇动漫完整版免费观看| 印尼屠杀华人| 幸福触手可及百度百科| 四位大学位按摩记哪里看| 千年之狐| 五福星系列| 五十度灰完整版| 寒门赘婿全集免费| 壮志凌云2011满天星| 冲宫那美作品在线播放| 叶倩文三级大尺度电影| 白衣校花与大长腿免费观看电视剧| 瓜达卢佩的玫瑰电影| 光芒电视剧在线观看免费完整版| 肉体联欢| 房间里的二人世界原声全集| 那金花的女婿| 《特殊的精油按摩》在线观看 | 那金花和她的女婿电视剧免费观看 | 《田耕纪》电视剧| 17·3电影在线观看全集| 桃花在线看免费高清电视剧| 那夜上错床| 三朵金花电视剧全集免费播放| 三生有幸遇上你免费高清在线播放| 电影《官人我要》免费观看| 命中注定我爱你免费观看| 甄嬛传55集| 麦乐迪女超人在线无删减电影免费观看| 小品有钱了| 九龙城寨之围城古天乐正版下载| 激战丛林意大利1995完整电影版在线 | 复仇打脸:重生弃少全集免费| 唐朝诡事录4奇谭在线观看| 年轻继牳4三级| 幸福触手可及在线观看| 巜电车痴汉玩弄人妻HD| 日剧维修工的艳遇| 运钞大劫案免费观看| 绝色美人谋短剧在线观看全集| 朝国年经的继6免费观看时间一| 瑞士是哪个国家| 花花公子电子杂志| 法国《少女农场》高清| 韩国19禁爱情电影的新高峰| 双谍姐妹花| 替夫还债电影高清完整版 | 继续被义子侵犯完整版| 爱人韩剧免费观看电视剧| 夫人别低调:隐婚总裁全集免费| 电影《屠宰餐厅》原版 | 《私人航空》在线看法国电影视频免| 舍我其谁电视剧免费观看| 田阳县| 电视剧福贵全集免费播放| 若你安好便是晴天 电视剧| 《村妓HD高清| 进击的巨人第二季第四集| 老兵为军嫂盖头纱| 日本混血女大学生按摩电影| 电影苹果免费观看| 刀郎厦门演唱会| 总统夫人的夜晚高清完整版在线观看| 小飞侠电影国语| 圆桌骑士rom| 一起愁愁愁免费看全集| 高清《女神宿舍的管理员》| 《淘气的女孩也需要爱》| 护士韩剧免费观看全集| 一起愁愁电影免费观看高清| 电视剧错点鸳鸯| 子曰卜学亮| 动漫xl司令第一季全集在线观看完整版 | 公之浮手中字5| 《女孩不平凡》| 牧神记第39集在线观看视频| 在姨母家的客厅| 江西高考分数线2019| 父辈的荣耀电视剧| 二十一世性格爱情指南日韩| 君九龄免费高清在线观看| 农场主和他的三个女儿们| 井冈山市| 沐浴之王演员| 九周半完整版百度影音| 女销售靠睡觉卖房子电视剧叫什么 | 销售的销售秘密3hd中字2017| 哈利波特3普通话| 东京一店长闻到煤气味后点了根烟| ovA义姐是不是良喂养小拓第一集mskn6.| 庙街豪情| 吸血鬼检察官| 公公的浮之手| 麦家琪偷窃无罪| 大工匠2| 阴阳镇怪谈电影在线观看完整版| 伊利莎白坎贝奇成人电影 在线观看 | 女房产销售楼3刘慧陈奕名| 今生也是第一次电视剧| 《白色橄榄树》全集观看| 韩国成人版电影神奇的帽子在线观看| 欢乐白领夫妻| 泰剧丘比特之路| 康熙谈靘谭1一10太后剧情解析| 傅艺伟版封神榜| 哪吒2在线观看免费观看完整版| 儿媳妇的味道HD-儿媳妇的味道云播免费在线观看-高清影院 | 你懂得369手机看片| 抱抱俏佳人粤语版| 高清权力王朝:默多克家族未删减| 古墓丽影第3季法国满天星| 妈妈再爱我一次电影下载| 你是我的命运电视剧| 涩涩屋在线| 一门三司令全集| 岳母的诱惑 电影| 女版战狼10国语高清免费观看| 梦断乐缘堂| 飞刀问情电视剧免费观看| 哈利 奎恩| 刚结婚和部长一起去出差旅电影| 无敌破坏王中文版免费版观看| 东北往事黑道风云20百度影音| 部长欺负的一天| 斗破苍穹年番免费观看高清版| 五妹电影在线观看| xl司令动漫全集在线观看| 女子户卫队,满天星| 《密爱》2002完整版| 高飞电影| 黑白配中文完整版高清在线| 功夫熊猫动漫| 活佛济公3迅雷下载| 《法国航空》6| 甜蜜惩罚全集台词完整版| 一仆二主电视剧 全集| 爱在空气中第9集| 四少妇的按摩记| 电影欲望的游戏| 世界之战高清| 由森奈奈子领衔主演| 朝花夕誓| 小大夫电视剧| 1992意大利电影地爆天星 | 老版肉蒲团| 双人调情按摩术免费在线观看 | 小萍的性荡生活第24集| 脱狱者侵犯排卵期人妻| 终极三国7| 电影《老公上班后》免费观看| 电影《战狼6》国语高清| 灭火宝贝法版免费法国满天星| 都市桃花运| 酒店1一5集免费视频在线观看 | 战狼6高清国语免费观看下载电影视频 | 韩 r| 我的山与海未删减| 洛洛历险记在线观看完整版| 《水野朝阳之出差电影| 守龙者动画片免费观看国语版 | 陪部长出差的日子全集在线观看| 袁浩然怎么了最新消息| 三年电影免费完整版| 战狼6在线观看免费播放下载| 银魂123| 高清凤仙花未删减| 樱兰高校的男公关部| 电影《屠宰餐厅》原版| 云中玫瑰| 异星觉醒| 一个妈妈的9中字头强华驿| 梦回工大| 高中英雄们| 金瓶梅电视剧免费观看全集完整版| 电视剧成长| 猎犬 第二季全集观看| 女超人麦乐迪电影无删减| 新网球王子10| 巴蜀笑星| 三年大片观看完整版免费高清| 赌神1国语高清| 一吻巴黎| 下一站婚姻主题曲| 法国《足球宝贝2》| 勇者行动在线观看| 错配搭档| 英国纪录片《老二》| 满江红电影免费百度网盘| 十七岁在线观看高清电视剧| 珠海航展2016时间表| 你好杀人犯| 天才枪手 电影| 重生巨龙猎艳御女林| 疯狂性生话电影免费播放| 医妃不好惹短剧全集| 山河枕电视剧| 莉娜安德森《满天星》电影在线观看| 情挑六月花| 猎罪图鉴第二季在线观看| 女员工的付出1230| 天降女子从2楼掉了下来免费观看| 失恋33天mp4高清下载| 剑阁县| 女版战狼6泰国版高清| 斗罗大陆89| 樱花动漫后宫露营| 罗丽星克莱尔在线观看| 半碗村传奇免费观看| 魔屋2009| 鼓浪屿之波钢琴曲| 日本电影出差3| 独立日 电影| 《桃花落短剧》免费观看| 小蜜峰美丽人生| 娘家的故事之爱的重生全集| 换乐无穷| 我爱hk开心万岁粤语高清| 《麦乐迪女超人》正在播放| 诡探前传| 堕落前辈动画第一季樱花动漫免费| 监狱高压2法版免费| 生活有点甜电视剧| 黑客帝国1| 主谋全集观看| 木子檀檀子剧免费观电影| 乡村爱情8部全集播放免费| 黑帮大佬和我的365五天| 浮之手日本电影完整版 | 儿女情更长电视剧全集| 张继科独特躲酒方法| 老电影51号兵站| 中国家庭第二部全集| 《V酒店》第一季完整版| 谢谢你温暖我一共几集| 动感小玲第256集免费| 小鸡快跑电影下载| 满天星女版唐三藏| 荣玉守则| 雅典八分钟| 古代厨娘:美食京城全集免费| 越南停播中国电视剧| 《家庭矛盾》melody电影免费观看| 哪吒闹海动画片| 五十路亲子中出在线观看| 壮志凌云啄木鸟满天星法版| 天地神剑电视剧在线观看| 霹雳战元史之天竞鏖锋| 插曲的痛全集免费| 恶魔少爷爱上我| 魔宫魅影| 麻辣变形计2| 《四个混血大学生》完整版中文电影| 新年诗歌会| 豪情夜生活| 电影《私人航空》法国电影在线观看 | 《她被搬运工侵犯》完整版| 激情丛琳| 异形魔怪3| 法航空乘11| 战狼6欧式少女版资源百度云战| 三悦有新工作| 高清《妻子的背叛》全集观看| IPX-602 Ipx602 沉迷于【恶女教师】嫉妒的不穿内裤诱惑女教师的异常私通。 明 | 蜜汁炖鱿鱼电视剧棉免费全集| 今日的霸道股评| 日本美女免费电影视频| 惊变1—42集免费观看电视剧| 大人物免费观看完整版| 倾城绝恋电视剧全集免费观看| 哇嘎无码少妇高清免费电影手机版| 《小猪佩奇第五季》动漫| 《前任1》高清完整版| 拥抱太阳的月亮国语版| 新房里干了女销售电影| 西游记续集 电视剧 在线观看| 李恩珠 红字| 南美欧洲超级杯| 千金小姐电影在线完整版免费观看| 机器侠mp4下载| 韩剧《忍不了了》| 爱欲天堂| 美国爸爸播种电影在哪看| 韩国电影韩国少妇勾引水电工| 扶摇 电视剧| 同桌上课揉我下面好湿H| 开往大埔的红van| 粉江大白菜完整版观看| 白雪公主与猎人百度影音| 隔壁的女孩3在线观看| 北上电视剧免费观看全集完整版| 伦理《生殖按摩》| 屋顶上的吻| 牧野诡事之卸岭力士| 保姆119全集下载| 高清《明珠奇谭》电视剧| 查尔泰夫人| 原配夫妻| 娃娃脸5| 《朋友的妻子》在线观看| 战狼2电影观看| 《爱的色放》| 酒店实行生免费完整版| 北京奥运会开幕式nbc| 结婚吗好的电视剧| 偶像练系生| 真维斯属于什么档次|