测试环境:

PC1:Windows10 iperf3

PC2:Ubuntu iperf3

都装有千兆网卡,直连的iperf速度是935Mbps。

因为TXRX两个方向的数据是差不多的,下面的测试数据只给出平均值。

1.1      TPLINK 841N

1.1.1    Switch测试

TPLIN841N使用了Marvell的88E6060芯片,使用了dsa技术,在Openwrt下面,所有的包都是软件网桥处理的。

l  内核大量打印到终端

默认在内核里面的网桥代码加入了不少的打印,测试的时候会吐出大量的日志。测试结果是1Mbps

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Mem: 22572K used, 38140K free, 72K shrd, 2612K buff, 6752K cached 
CPU:   0% usr   0% sys   0% nic   7% idle   0% io   0% irq  92% sirq           
Load average: 1.61 0.97 0.95 7/33 1459                                         
^[[7m  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND^[[0m                    
1000     1 root     R     1184   2%  29% /usr/sbin/ntpd -n -S /usr/sbin/ntpd-h 
1422     1 root     R     1636   3%  20% /usr/sbin/hostapd -P /var/run/wifi-ph 
1339     1 root     R     1168   2%   5% /sbin/logd -S 16                     
1173     1 dnsmasq  R     1040   2%   5% /usr/sbin/dnsmasq -C /var/etc/dnsmasq                                                    
1459   513 root     R     1188   2%   5% top -d 1                             
3     2 root     RW       0   0%   0% [ksoftirqd/0]                        
879     1 root     S     1620   3%   0% /sbin/netifd                         
100     2 root     SW       0   0%   0% [kworker/0:1]                        
1     0 root     S     1520   2%   0% /sbin/procd                          
960     1 root     S     1504   2%   0% /usr/sbin/uhttpd -f -h /www -r OpenWr 
844     1 root     S     1432   2%   0% /sbin/rpcd      
893     1 root     S     1272   2%   0% /usr/sbin/odhcpd                     
513     1 root     S     1188   2%   0% /bin/ash --login 
512     1 root     S     1168   2%   0% /cnblogs/tanhangbo     
943     1 root     S     1052   2%   0% /usr/sbin/dropbear -F -P /var/run/dro 
6     2 root     SW       0   0%   0% [kworker/u2:0]                       
8     2 root     SW       0   0%   0% [kworker/u2:1]  
172     2 root     SW       0   0%   0% [spi0]     
99     2 root     SW       0   0%   0% [kswapd0]                            
340     2 root     SW<      0   0%   0% [kworker/0:1H]

可以看到CPU负载很高(Load average),CPU已经没有资源了。主要的消耗在内核的Softirq部分(92%)。

l  关闭内核的打印

使用dmesg -n 1关闭内核的打印,发现速率接近理想状况但不是最完美的。

观察到CPU资源没有被消耗完。

TP=83Mbps

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Mem: 21380K used, 39332K free, 68K shrd, 2612K buff, 6744K cached 
CPU: 21% usr 0% sys 0% nic 8% idle 0% io 0% irq 70% sirq 
Load average: 0.55 0.74 0.91 4/33 1440 
PID PPID USER STAT VSZ %VSZ %CPU COMMAND 
1339 1 root R 1168 2% 38% /sbin/logd -S 16 
1422 1 root R 1636 3% 21% /usr/sbin/hostapd -P /var/run/wifi-ph 
3 2 root RW 0 0% 18% [ksoftirqd/0] 
1440 513 root R 1188 2% 7% top -d 1 
100 2 root SW 0 0% 6% [kworker/0:1] 
879 1 root S 1620 3% 0% /sbin/netifd 
1 0 root S 1520 2% 0% /sbin/procd 
960 1 root S 1504 2% 0% /usr/sbin/uhttpd -f -h /www -r OpenWr 
844 1 root S 1432 2% 0% /sbin/rpcd 
893 1 root S 1272 2% 0% /usr/sbin/odhcpd 
1000 1 root S 1184 2% 0% /usr/sbin/ntpd -n -S /usr/sbin/ntpd-h 
513 1 root S 1184 2% 0% /bin/ash --login 
512 1 root S 1168 2% 0% /sbin/ubusd 
943 1 root S 1052 2% 0% /usr/sbin/dropbear -F -P /var/run/dro 
1173 1 dnsmasq S 1040 2% 0% /usr/sbin/dnsmasq -C /var/etc/dnsmasq 
6 2 root SW 0 0% 0% [kworker/u2:0] 
8 2 root SW 0 0% 0% [kworker/u2:1] 
172 2 root SW 0 0% 0% [spi0] 
99 2 root SW 0 0% 0% [kswapd0] 
340 2 root SW< 0 0% 0% [kworker/0:1H]

l  彻底关闭内核的打印

将代码内核打印的代码去掉,发现CPU空闲的资源变多了。

TP=92Mbps,已经可以满足要求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

Mem: 18376K used, 42336K free, 68K shrd, 1788K buff, 5540K cached 
CPU:   0% usr   0% sys   0% nic  60% idle   0% io   0% irq  37% sirq 
Load average: 0.46 0.38 0.16 1/31 1284 
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND 
1109     1 root     S     1636   3%   1% /usr/sbin/hostapd -P /var/run/wifi-ph 
3     2 root     SW       0   0%   1% [ksoftirqd/0] 
1284   448 root     R     1176   2%   0% top 
1148     1 dnsmasq  S     1040   2%   0% /usr/sbin/dnsmasq -C /var/etc/dnsmasq 
99     2 root     SW       0   0%   0% [kworker/0:1] 
861     1 root     S     1620   3%   0% /sbin/netifd 
1     0 root     S     1516   2%   0% /sbin/procd 
882     1 root     S     1272   2%   0% /usr/sbin/odhcpd 
448     1 root     S     1172   2%   0% /bin/ash --login 
965     1 root     S     1172   2%   0% /usr/sbin/ntpd -n -S /usr/sbin/ntpd-h 
826     1 root     S     1168   2%   0% /sbin/logd -S 16 
447     1 root     S     1168   2%   0% /sbin/ubusd 
920     1 root     S     1052   2%   0% /usr/sbin/dropbear -F -P /var/run/dro 
171     2 root     SW       0   0%   0% [spi0] 
8     2 root     SW       0   0%   0% [kworker/u2:1] 
6     2 root     SW       0   0%   0% [kworker/u2:0] 
98     2 root     SW       0   0%   0% [kswapd0] 
66     2 root     SW<      0   0%   0% [bioset] 
65     2 root     SW<      0   0%   0% [crypto] 
^C339     2 root     SW<      0   0%   0% [kworker/0:1H]

1.1.2    NAT测试

设置方法:PC1固定IP,连接到WAN口,PC2连接到LAN口。然后进路由器的命令行固定WAN口的IP。

测试结果:

LAN-WAN Result = 92Mbps

WAN-LAN Result = 88Mbps

可以看到CPU资源被占用了大部分,但是还是有16%的idle。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Mem: 18656K used, 42056K free, 76K shrd, 1788K buff, 5608K cached 
CPU:   0% usr   0% sys   0% nic  16% idle   0% io   0% irq  82% sirq 
Load average: 0.00 0.03 0.06 2/33 1535 
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND 
1109     1 root     S     1636   3%   5% /usr/sbin/hostapd -P /var/run/wifi-ph 
3     2 root     RW       0   0%   4% [ksoftirqd/0] 
1535   448 root     R     1176   2%   3% top 
99     2 root     SW       0   0%   1% [kworker/0:1] 
861     1 root     S     1688   3%   0% /sbin/netifd 
1     0 root     S     1516   2%   0% /sbin/procd 
882     1 root     S     1272   2%   0% /usr/sbin/odhcpd 
965     1 root     S     1172   2%   0% /usr/sbin/ntpd -n -S /usr/sbin/ntpd-h 
448     1 root     S     1172   2%   0% /bin/ash --login 
1425   861 root     S     1172   2%   0% udhcpc -p /var/run/udhcpc-wan.pid -s 
826     1 root     S     1168   2%   0% /sbin/logd -S 16 
447     1 root     S     1168   2%   0% /sbin/ubusd 
920     1 root     S     1052   2%   0% /usr/sbin/dropbear -F -P /var/run/dro 
1379     1 dnsmasq  S     1040   2%   0% /usr/sbin/dnsmasq -C /var/etc/dnsmasq 
1428   861 root     S      912   1%   0% odhcp6c -s /lib/netifd/dhcpv6.script 
171     2 root     SW       0   0%   0% [spi0] 
8     2 root     SW       0   0%   0% [kworker/u2:1] 
6     2 root     SW       0   0%   0% [kworker/u2:0] 
98     2 root     SW       0   0%   0% [kswapd0] 
^C339     2 root     SW<      0   0%   0% [kworker/0:1H]

1.2      XIAOMI MINI

1.2.1    Switch测试

小米MINI的switch转发路径是在硬件里面的,所以LAN转发的路径对CPU几乎没有占用。

测试结果: 94.7Mbps

可以看到CPU占用几乎没有。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

Mem: 20860K used, 105092K free, 560K shrd, 2060K buff, 7016K cached 
CPU:   0% usr   3% sys   0% nic  94% idle   0% io   0% irq   1% sirq 
Load average: 0.10 0.08 0.05 1/45 1536 
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND 
1164     1 dnsmasq  S     1044   1%   3% /usr/sbin/dnsmasq -C /var/etc/dnsmasq 
1530  1235 root     R     1180   1%   1% top -d 1 
1234  1147 root     S     1124   1%   1% /usr/sbin/dropbear -F -P /var/run/dro 
908     1 root     S     1628   1%   0% /sbin/netifd 
973     1 root     S     1540   1%   0% /usr/sbin/uhttpd -f -h /www -r OpenWr 
1     0 root     S     1536   1%   0% /sbin/procd 
872     1 root     S     1440   1%   0% /sbin/rpcd 
931     1 root     S     1280   1%   0% /usr/sbin/odhcpd 
1235  1234 root     S     1180   1%   0% -ash 
410     1 root     S     1176   1%   0% /sbin/ubusd 
863     1 root     S     1176   1%   0% /sbin/logd -S 16 
1089   908 root     S     1176   1%   0% udhcpc -p /var/run/udhcpc-eth0.2.pid 
1022     1 root     S     1176   1%   0% /usr/sbin/ntpd -n -S /usr/sbin/ntpd-h 
1147     1 root     S     1056   1%   0% /usr/sbin/dropbear -F -P /var/run/dro 
1091   908 root     S      916   1%   0% odhcp6c -s /lib/netifd/dhcpv6.script 
411     1 root     S      892   1%   0% /sbin/askfirst /usr/libexec/login.sh 
118     2 root     SW       0   0%   0% [kworker/0:1] 
175     2 root     SW       0   0%   0% [spi0] 
3     2 root     SW       0   0%   0% [ksoftirqd/0] 
^C  6     2 root     SW       0   0%   0% [kworker/u2:0]

1.2.2    NAT测试

小米使用的硬件平台是MediaTek MT7620A ver:2 eco:6 ,带有NAT硬件加速,简称HNAT。

Openwrt不支持硬件NAT,测试结果如下:

Result= 94.7Mbps

在这个测试中,几乎占用了所有的CPU。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Mem: 23308K used, 102644K free, 560K shrd, 2060K buff, 7024K cached
CPU:   1% usr  14% sys   0% nic   0% idle   0% io   0% irq  83% sirq
Load average: 0.29 0.16 0.08 2/47 1669
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
1089   908 root     R     1176   1%  92% udhcpc -p /var/run/udhcpc-eth0.2.pid
3     2 root     RW       0   0%   3% [ksoftirqd/0]
1164     1 dnsmasq  S     1044   1%   2% /usr/sbin/dnsmasq -C /var/etc/dnsmasq
1669  1659 root     R     1180   1%   1% top
1658  1147 root     S     1124   1%   1% /usr/sbin/dropbear -F -P /var/run/dro
118     2 root     SW       0   0%   1% [kworker/0:1]
908     1 root     S     1628   1%   0% /sbin/netifd
6     2 root     SW       0   0%   0% [kworker/u2:0]
973     1 root     S     1540   1%   0% /usr/sbin/uhttpd -f -h /www -r OpenWr
1     0 root     S     1536   1%   0% /sbin/procd
872     1 root     S     1440   1%   0% /sbin/rpcd
931     1 root     S     1280   1%   0% /usr/sbin/odhcpd
1235  1234 root     S     1180   1%   0% -ash
1659  1658 root     S     1180   1%   0% -ash
410     1 root     S     1176   1%   0% /sbin/ubusd
863     1 root     S     1176   1%   0% /sbin/logd -S 16
1022     1 root     S     1176   1%   0% /usr/sbin/ntpd -n -S /usr/sbin/ntpd-h
1234  1147 root     S     1124   1%   0% /usr/sbin/dropbear -F -P /var/run/dro
1147     1 root     S     1056   1%   0% /usr/sbin/dropbear -F -P /var/run/dro
^C091   908 root     S      916   1%   0% odhcp6c -s /lib/netifd/dhcpv6.script

使用PandoraBox的固件可以挽救这一局面。它集成了私有的HNAT代码。

1

PandoraBox-ralink-mt7620-xiaomi-mini-squashfs-sysupgrade-r1024-20150608.bin

若要打开这个功能,需要在网页中设置,相关的脚本在/etc/init.d/下面,他会加载HNAT的驱动。

测试的结果是94.7Mbps

可以看到几乎没有CPU的占用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

Mem: 48232K used, 78160K free, 0K shrd, 0K buff, 2146650668K cached
CPU:   0% usr   0% sys   0% nic  98% idle   0% io   0% irq   0% sirq
Load average: 0.00 0.09 0.12 1/42 2685
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
2685  2625 root     R     1376   1%   1% top -d 1
2124     1 root     S     2576   2%   0% /usr/sbin/nmbd -D
2117     1 root     S     2496   2%   0% /usr/sbin/smbd -D
2399     1 nobody   S     1936   2%   0% /usr/sbin/dnsmasq -C /var/etc/dnsmasq
1784     1 root     S     1548   1%   0% /usr/sbin/uhttpd -f -h /www -r Pandor
1650     1 root     S     1472   1%   0% /sbin/netifd
1     0 root     S     1404   1%   0% /sbin/procd
1769     1 root     S     1376   1%   0% /usr/sbin/telnetd -F -l /bin/login.sh
2625  1769 root     S     1376   1%   0% -ash
2354     1 root     S     1376   1%   0% /usr/sbin/crond -f -c /etc/crontabs -
1722     1 root     S     1372   1%   0% /usr/sbin/ntpd -n -l -p 0.pool.ntp.or
1851  1650 root     S     1372   1%   0% udhcpc -p /var/run/udhcpc-eth0.2.pid
1685     1 root     S     1160   1%   0% /usr/sbin/odhcpd
2157     1 root     S     1148   1%   0% /usr/sbin/dropbear -F -P /var/run/dro
1614     1 root     S     1040   1%   0% /sbin/logd -S 16
1801     1 root     S      984   1%   0% /usr/sbin/vsftpd
480     1 root     S      884   1%   0% /sbin/ubusd
1864  1650 root     S      828   1%   0% odhcp6c -s /lib/netifd/dhcpv6.script
558     1 root     S      768   1%   0% /sbin/askfirst /bin/login
^C559     1 root     S      768   1%   0% /sbin/askfirst /bin/login

1.3      总结

1. 对于Switch和NAT功能,硬件可以实现offload功能,减轻CPU的负担

2. 对于满速的Throughput测试,CPU基本可以满足需求,但是会吃光CPU的资源。

3. 加入大量的打印会影响性能,如果将打印输出到串口会让性能降到几乎为0

l  打印和速率的关系(打印影响性能)

l  硬件Switch和软件网桥比较

可以看出来,硬件Switch的优势明显。

l  硬件NAT和软件NAT比较

可以看出来,实现硬件NAT会降低很多系统的负担。但是硬件NAT不够灵活,没有集成一些软件可以添加的高级功能。

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/tanhangbo/p/6080973.html

SwitchNAT 测试相关推荐

  1. locust入门:单机使用locust运行压力测试

    locust的官方文档在这里: http://docs.locust.io/en/stable/ 前置:locust的测试脚本使用为python(若未安装python环境,可以搜索安装python) ...

  2. HA: InfinityStones靶机渗透测试

    文章目录 靶机信息 一.信息收集 1.主机发现 2.端口扫描 3.目录扫描 二.漏洞挖掘 1.访问 192.168.1.108 2.访问 /img 目录 3.访问 https 服务(443)端口 4. ...

  3. HA: Forensics靶机渗透测试

    文章目录 靶机说明: 一.信息收集 1.主机发现 2.端口扫描 二.漏洞挖掘 1.访问靶机 web 服务 2.使用 dirb 进行目录扫描 3.使用 exiftool 提取数据 4.使用 dirb 扫 ...

  4. YOLOv4 资源环境配置和测试样例效果

    YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...

  5. 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

    目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...

  6. 2021年大数据ELK(九):使用VSCode测试分词器

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 使用VSCode测试分词器 一.准备VSCode开发环境 1.打开VSCode ...

  7. [FaceBook]测试、发布和分享小游戏

    FaceBook小游戏 测试.发布和分享小游戏 对于小游戏,您现在可以十分轻松地在本地测试开发版本,自动完成发布流程,以及与团队分享编译版本.本文档会详细说明这些步骤. 通过本地服务器测试游戏 小游戏 ...

  8. [JAVAEE] 使用Postman测试接口

    使用Postman测试接口 HelloController.java package com.example.demo.controller;import org.springframework.we ...

  9. Android 弱网测试(小米手机切换3g和2g)

    Android 弱网测试,目前主要的是4g 弱网的话我们可以使用3g和2g 对app 进行测试 现在以小米手机为例 我们测试不同网络下的加载情况 第一步 第二步 第三步: 然后我们就可以根据不同的网络 ...

  10. JAVA课上动手动脑问题以及课后测试1,2总结

    课堂测试1      像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 "软件" 2    (1)题目避免重复 (2)可定制(数量/打印方式) 设计思路 1)产生两 ...

最新文章

  1. 算法—巧排扑克牌(C语言)
  2. 力士乐电源模块故障代码_奥的斯电梯OVF402,OVF404,OVF406驱动器故障代码
  3. CUDA:使用nvprof工具计时
  4. 大厂技术文档:Python 基础+爬虫+数据分析+面试经精选
  5. 解决首次在eclipse中使用maven构建hadoop等项目时报Missing artifact sun.jdk:tools:jar:1.5.0的问题...
  6. 架构实战项目心得(十四):spring-boot结合Swagger2构建RESTful API测试体系
  7. Slider 滑动条效果
  8. 写代码会用到哪些常用的软件
  9. linux检测扩容卡,怎么检测SD卡是否被扩容过?对SD卡进行扩容检测的方法
  10. cmd贪吃蛇(cmd贪吃蛇怎么做)
  11. 可变焦、聚焦摄像头驱动程序-瑞盟 MS41908M
  12. 风口的猪-中国牛市(动态规划)
  13. cad直线和圆弧倒角不相切_cad中绘制圆角倒角有哪些技巧?
  14. Destroying assets is not permitted to avoid data loss.
  15. 金融危机殃及色*情业,女*优转行做黑客?
  16. 海康、大华等网络摄像头RTSP_Onvif网页无插件直播流媒体服务器EasyNVR鉴权出现跨域问题的解决方法
  17. flutter 弹幕插件_Flutter 实现虎牙/斗鱼 弹幕功能
  18. 华为OJ平台题目:(练习用)挑7
  19. 现代循环神经网络 - 序列到序列学习
  20. python OpenCV:绘制一个圆形图片

热门文章

  1. svn 回退到指定版本无法提交_SVN终端演练-版本回退
  2. CAPL学习之路-关键字
  3. 台达触摸屏编程软件(Scredit)官方免费版 v2.00.23
  4. 浅谈设备驱动的作用与本质,有无操作系统Linux设备驱动的区别
  5. Linux卸载Apache服务器
  6. umijs 出错 TypeError: rawData.some is not a function
  7. DB2 SQLCODE常见错误代码
  8. [C++] [FLTK] 很久以前写的FLTK计算器
  9. Mac上搭建IOS自动化测试环境
  10. 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课(炫酷版一)