3

5个千兆网口,将有什么样高速网络传输体验?

 1 year ago
source link: https://www.eefocus.com/component/530068
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本篇测评由电子工程世界的优秀测评者“HonestQiao ”提供。此次的板卡测试,是米尔MYD-J1028X开发板的高速网络数据传输测试体验。

本次测试的主角

米尔MYD-J1028X开发板提供了5个超级给力的最高支持千兆网络接口,具体如下:

6376ec97a9826.jpg

通过查看官方的手册,也可以详细了解:

6376ec98d5580.png

今天,我们就借助工具,对网络进行一些实际测试,看看实际效果到底如何。

测试前的准备

首先,说一下我这边的测试环境:

1. 米尔MYD-J1028X开发板

2. MacBookPro笔记本:两个UB3.0千兆有线网卡

3. ThinkPad笔记本:内置Intel千兆网卡

规划连线如下:

6376ec989c76c.png

为了得到最理想的测试速度,笔记本和开发板之间,直接连接,不经过第三方。

测试的计划内容包括:

单网口,http下载速度测试

单网口,多进程nc并发数据传输测试

多网口,多进程nc并发输出传输测试

多网口,多进程http下载速度测试

多机多网口,http下载速度测试

测试前先来做“连连看”

实际连线如下:

6376ec9927165.png

具体的连线关系:

1连接到上级路由器

3连接到7,即MacBookPro的USB千兆网卡1 

4连接到8,即ThinkPad的Intel千兆网卡

5连接到6,即MacBookPro的USB千兆网卡2

9为USB千兆网卡1的USB,连 MacBookPro

10为USB千兆网卡2的USB,连 MacBookPro

米尔MYD-J1028X开发板系统的各网口地址对应的设备和IP地址信息如下:

1-eno0:192.168.1.237,为上级路由器通过DHCP分配的地址

2-eth1:10.10.11.11

3-eth2:10.10.12.12

4-eth3:10.10.13.13

5-eth4:10.10.14.14

设置eth1~4的地址使用如下的命令:

  • sudo ifconfig eth1 10.10.11.11 netmask 255.255.255.0
  • sudo ifconfig eth2 10.10.12.12 netmask 255.255.255.0
  • sudo ifconfig eth3 10.10.13.13 netmask 255.255.255.0
  • sudo ifconfig eth4 10.10.14.14 netmask 255.255.255.0

设置完成后,查看设置情况:

ifconfig | grep -E 'eth[1-4]' -A1

具体结果如下:

6376ec98567e2.png

然后,在MacBook Pro上,设置2块USB千兆网卡对应的IP地址:

6376ec98d8a38.png

以及ThinkPad的Windows系统中Intel千兆网卡的IP地址:

6376ec97a64ef.png

然后,在开发板上,检测能否连通两台笔记本上的IP:

  • ping 10.10.12.102 -c 1
  • ping 10.10.13.103 -c 1
  • ping 10.10.14.104 -c 1

显示如下表示全部连通:

在MacBook Pro和ThinkPad上,也用命令检查一下对应开发板连接网口的IP是否连通正常:

一切连通妥当,就可以开始准备测试了。

安装调试好要用到的测试工具

首先,在开发板上,安装4款软件:

  • sudo apt install nginx
  • sudo apt install bmon
  • sudo apt install axel
  • sudo apt install pv

nginx用于提供web服务

bmon用于提供网络情况监测

axel用于多线程下载

pv实时监控管道数据流量

为了达到最好的性能,我们需要修改一下nginx的配置,关闭日志,并使用/dev/shm内存文件系统提供文件服务。

修改nginx的主配置文件:/etc/nginx/nginx.conf,具体涉及到的设置项如下:

user www-data;

worker_processes auto;

worker_cpu_affinity auto 11;

pid /run/nginx.pid;

include /etc/nginx/modules-enabled/*.conf;

events {

worker_connections 1024;

# multi_accept on;

http {

keepalive_requests 100000;

access_log off;

#access_log /var/log/nginx/access.log;

#error_log /var/log/nginx/error.log;

error_log /dev/null;

修改nginx默认站点/etc/nginx/sites-enabled/default 配置:

#root /var/www/html;

root /dev/shm;

修改完成后,就可以启动nginx了:

再写入基本测试内容到/dev/shm/index.html:

  • echo hello > /dev/shm/index.html
  • curl http://10.10.12.12/
  • # 应返回 hello

单网口,http下载速度测试

现在,我们就可以做一个基本的文件下载测试了:

在macOS上,使用dd指令,生一个512M的数据文件test.dat,并使用php提供随手web服务

在开发板上,使用axel,下载macOS上面的数据文件,保存到/dev/shm内存文件系统

在macOS上,使用axl下载开发板上的test.dat文件

从上述结果可以看到,macOS上php提供的随手web服务,不支持多线程下载,但单线程下载速度,能达到89.1MB/s

而在开发板上,nginx提供的web服务,支持多线程下载,3个线程,下载速度可以达到91.9MB/s

下载都正常后,现在试用bmon指令,监控实时网络速度:

具体指令如下:

开发板:bmon -bp eth2

macOS:axel -a -n 10 http://10.10.12.12/test.dat

经过多次下载,最高带宽可以达到975.65MBits/s,速度相当可以。

单网口,多进程nc并发数据传输测试

上面测试的相互下载的速度,下面再测试一下,通过nc命令,往开发板上传送数据的情况。

  • # macOS执行:分别在三个窗口执行
  • pv /dev/random | nc -l 10.10.12.102 2345
  • pv /dev/random | nc -l 10.10.12.102 2346
  • pv /dev/random | nc -l 10.10.12.102 2347
  • # 开发板执行:分别在三个终端执行
  • sudo nc 10.10.12.102 2345 > /dev/null
  • sudo nc 10.10.12.102 2346 > /dev/null
  • sudo nc 10.10.12.102 2347 > /dev/null

上述命令,表示从macOS上的/dev/random生成随机数据,然后使用nc,通过网络,发送到开发板的/dev/null空设备中去。

这样做的好处是,不操作io设备,性能不受其他原因影响,而且数据随机,写入到/dev/null也永远写不满,不占用实际磁盘空间。

你甚至可以让它自己跑三天三夜,看看网络是否稳定。

下面是实际测试的结果:

我用了三个nc通道,并行进行数据的传输。最高传输带宽,可以达到940.62MBits/s,速度还是非常理想的。

多网口,多进程nc并发输出传输测试

之前测试的是针对一个网口的测试,现在测试同时对eth2、eth4进行数据传输测试:

先启动四个nc数据传输进程:

针对eth2、eth4的连接,各起两个,注意要确保对应关系。

然后,通过bmon查看当前网络带宽情况:

6376ec98a145f.png

合并起来的最高带宽,为870MBits/s。

再看一下开发板的负载情况和macOS的负载情况:

可以看到,开发板上跑了4个接收进程,CPU并未占满。

而macOS上跑了4个发送进程,结果把CPU都拉得满满的。

多网口,多进程http下载速度测试

上面是使用nc进行数据传输,下面我们再使用axel通过nginx下载数据,看看带宽使用情况如何。

上面的过程,是现在开发板上,使用dd生成一个728M大小的测试文件。

然后在macOS上面,针对不同网口的ip,进行http下载测试。

测试过程中,再次通过bmon查看当前网络带宽情况:

这次的网络带宽使用更加充分,合并计算,可以达到1000MBits/s了。 

在测试过程中,我们也在看一下系统负载情况:

开发板上的nginx跑满了一个cpu,而macOS上的cpu则都跑满了。

多机多网口,http下载速度测试

现在要试一下,同时在macOS和Windows下载情况如何。
先到ThinkPad的windows系统,使用curl命令,开两个进程下载测试,结果如下:

合并的结果,能达到90MB/s。

然后,在macOS上面,分别使用cur从连接的两个网卡的ip下载数据,在windows上面,同样开两个curl进程下载:

  • # macOS执行:开两个命令行执行
  • curl -o test1.dat http://10.10.12.12/test.dat
  • curl -o test2.dat http://10.10.14.14/test.dat
  • # windows执行:开两个命令行执行
  • curl -o test3.dat http://10.10.13.13/test.dat
  • curl -o test4.dat http://10.10.13.13/test.dat

测试过程中, 可以看到,多个网口同时使用,带宽的使用,将更加的充分。

总的来说,米尔MYD-J1028X开发板的千兆网络接口,非常的给力,在高速网络通信中,是强有力的保证。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK