基于RaspberryPi的网络损伤仿真仪设计
2021-07-26张潇男张轩
张潇男 张轩
关键词:树莓派;便携;廉价;网络模拟;性能
0 引言
网络损伤仪可模拟高延时、丢包、乱序及重包等异常网络场景,在网络工程中使用颇为广泛。目前业界比较知名的网络损伤仪仿真设备主要有福禄克的HoloWAN 和思博伦的Attero-x 等设备,此类设备价格较为昂贵并且体积较大,不便于携带。Raspberry Pi 开发板具有体积小、价格低等优点,在工程中较为实用,但因为它价格低、体积小也注定了硬件性能是绝不能与昂贵的高端网絡损伤仿真仪相提并论。通过阐述Raspberry Pi 网络损伤仪的制作过程并对其吞吐量、时延、抖动和丢包率的准确度进行测试分析,从而了解其实际性能,为其在网络试验中的应用提供参考依据。
1基于树莓派的网络损伤仪
1.1 Raspberry Pi
Raspberry Pi 是一款基于ARM 平台的单板计算机,兼容Linux发行版操作系统。Linux内存开销低,可在没有内置永久存储的Raspberry Pi上运行功能齐全的OS,而且Linux 通常是免费的。Raspberry Pi硬件主体类似笔记本电脑中的主板,没有外壳且体积要比常见的各种主板小的多,只有信用卡大小。但Raspberry Pi作为可编程的小型计算机,可以将其制作成网络损伤仪。
1.2 TC&netem
Netem 是Linux2.6 及以上内核版本提供的网络模拟功能模块,可以模拟复杂的网络情况,例如丢包、延时、乱序和重包。而TC(Traffic Control)是Linux系统中用来控制Netem 的工具,所以想要完成网络环境模拟二者缺一不可。
1.3 Aspberry Pi的主要硬件配置
截止目前树莓派已经发展了4代产品,本文使用树莓派第3代设备进行设计与测试。第3代设备分为2种型号:A型和B型,它们唯一的区别是在B 型上增加了以太网端口和额外的USB端口。本次选择的设备为第3 代树莓派的3 ModelB+(Raspberry Pi 3 B+型),详细配置如表1所示。
1.4 Aspberry Pi的软件配置
本次模拟器采用树莓派自制系统Raspbian 10 buster(Raspbian OS),Raspbian OS 基于Debain 开发,Linux Kernel 版本为Armv7l Linux 4.19.75-v7+,系统版本直接包含TC&netem模块。若不采用Raspbian OS系统,也可在树莓派官网下载适用于Raspberry Pi 的Debain、ubantu 等基于Linux 内核开发的系统进行使用,若内核版本在2.6 以下,也可手动安装TC&netem软件。
2 网络损伤仿真仪
2.1网络损伤仿真仪的组成
网络损伤仿真仪主要由Aspberry Pi 主机、TF 存储卡(烧录系统使用)、显示屏与USB外置网卡组成。网络损伤仿真仪至少需要2个网络端口来完成2 个设备间的连接,类似于一条隧道的入口两端,网络仿真仪连接示意图如图1所示。
由于Aspberry Pi 仅带一个RJ45 网口,所以需要增配一个外置USB 网卡作为补充。本次增加百兆TP-LINK UG310免驱外置USB3.0 网卡作为另一个RJ45 网口,设备组成如图2 所示。
2.2 配置操作
在树莓派官方网站中下载Aspberry Pi 的Raspbian OS 系统,并使用Win32 Disk Imager 软件将系统烧录在TF 存储卡中,完成烧录后此存储卡就成为树莓派的外存储器,类似PC的硬盘。
要使网络损伤仿真仪串接测试网元不更改测试网元的任何配置,就需要让组成图中的ETH0 与ETH1 口完成二层数据转发。在Raspbian OS操作系统中,网络接口卡是三层转发,若要实现树莓派实现二层数据转发就需要使用虚拟网桥的方式来完成。
装网桥扩展包:
apt-get install bridge-utils
安装完成后创建虚拟网桥“bridge _L2”:
sudo brctl addbr bridge _L2
在bridge _L2中加入eth0 eth1端口:
sudo brctl addif bridge _L2 eth0
sudo brctl addif bridge _L2 eth1
启动网桥“bridge _L2”:
ifconfig bridge _L2 up
虚拟网桥配置确认:
sudo brctl show
出现“bridge _L2”后表示桥接成功。网络损伤仿真仪配置完成。
3性能测试
3.1 测试环境
性能测试使用SPIRENT SPT N4U(4.58.7606)测试仪对Aspberry Pi进行包括吞吐量、时延、抖动和丢包率的测试,测试连接方式如图3 所示。
3.2 性能测试
吞吐量测试时分别设置测试仪器采用64 Byte,128 Byte,256 Byte,512 Byte,1 024 Byte,1 518 Byte大小的数据报文进行双向吞吐量测试,测试结果如表2所示。
延时测试时测试仪器采用任意字节数据包,双向2 Mbit测试,Raspbian设置
sudo tc qdisc add dev eth0 root netem delay 100 ms
sudo tc qdisc add dev eth0 root netem delay 100 ms
命令将ETH0 与ETH1 网卡分别设置100 ms模拟双向时延,无抖动,如表3 所示。
抖动测试时测试仪器采用任意字节数据包,双向2 Mbit进行测试,Raspbian设置
sudo tc qdisc add dev eth0 root netem delay 100 ms 10ms
sudo tc qdisc add dev eth0 root netem delay 100 ms 10ms
命令将ETH0 与ETH1 网卡分别设置100 ms模拟双向时延10 ms抖动,无抖动,如表4 所示。
丢包率测试时测试仪器采用任意字节数据包,双向2 Mbit进行测试,Raspbian设置
sudo tc qdisc add dev eth0 root netem loss 10%
sudo tc qdisc add dev eth1 root netem loss 10%
命令将ETH0 网卡设置丢包率10%,模拟丢包,丢包率测试记录如表5所示。
3.3测试结论
通过测试结果可知,基于Aspberry Pi的网络损伤仿真仪器的转发性能受硬件限制,传输大包最高只能达到90 Mbit/s,在模拟延时与抖动的精度方面可很好地控制在微秒量级,丢包率测试的精度也可控制在5‰以内。对于仿真一些低带宽、高延时有丢包的网络环境时,可精确模拟出理想的网络状态。
4 结束语
通过设计并测试基于Aspberry Pi 的网络损伤仿真仪,可了解到这个既便宜又便捷的小开发板中蕴含着巨大的能力。从功能性能上看此网络损伤仿真仪完全可仿真诸如卫通、E1线路等低带宽环境下的延时与抖动、丢包。工程人员可随身携带该设备,进行一些简单的语音、视频等实时业务的测试。