**搭建测试环境**

准备工具

  • 光纤
  • 光纤转换器
  • 光模块
  • 千兆网卡、万兆网卡
  • 至少两台服务器
  • 测试软件tcpdump、tcpreplay、dpdk等

步骤(本文中以千兆网卡为例)

  • 1.首先在两台服务器上分别插上两个千兆网卡;
  • 2.插上对应的光模块;
  • 3.使用光纤通过光纤转换器将光模块连接起来;自环是发送的服务器。


    截屏2020-12-04 下午3.43.41.png
  • 4.测试连接是否正确,检查光纤插入光模块,灯是否亮绿灯,绿灯表示正常接通;若不亮,可换光模块进行测试看看是哪里出问题,即使更换正常的设备和正常的光纤转换器等;
  • 5.软件进行发包、收包测试

安装软件(以tcpreplay为例)

验证

  • 本文中用204发包、238收包
  • 这里要提到tcpreplay这个软件,可以进行发包测试:
    • 安装(本文中以centos7.4为例)
        1. m4下载,解压文件tar xfz m4-1.4.13.tar.gz,进入解压后的文件夹,编译安装./configure --prefix=/root/test/ && make && make install
      • 2.bison下载,步骤同上。解压并进行源码编译安装。
      • 3.flex下载,安装同上。
      • 4.libpcap下载,安装同上,都安装到/root/test/这个目录下,以方便删除。
      • 5.tcpreplay下载下载4.2.6版本,同上。进入test目录下的bin目录,将cp tcpreplay /usr/bin/,就可以运行tcpreplay了。经测试4.2.6版本可以使用。
      • 注意,若第五步运行报错,则进入tcpreplay 4.2.6这个文件夹中,分布操作./configure,make,make install,安装过的文件到/usr/local/bin/目录查找tcpreplay的可执行文件,将其复制到/usr/bin/目录,就可以使用tcpreplay命令了。

~ 如果可以上外网的服务器可以使用yum安装
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum install epel-release
yum install tcpreplay
  • 基本用法
    tcpreplay --intf1=eth0 sample.pcap 等价于
    tcpreplay -i eth0 sample.pcap
    (查看tcpreplay的缩写:tcpreplay -h)
  • 循环发包(--loop参数)
  • 重复一次
    tcpreplay --loop=1 --intf1=eth0 sample.pcap
  • 无限循环,直到ctrl+c结束
    tcpreplay --loop=0 --intf1=eth0 sample.pcap
  • 两个网口之间重放数据包
    1)利用tcpprep将数据包通信双方区分为客户端和服务器端,这样在eth0和eth1之间通信就相当于客户端和服务器
    tcpreplay --cacheile=sample.prep --intf1=eth0 --intf2=eth1 test.pcap
    (备注:cachefile由tcpprep生成)
    2)如果已经将数据包分成两个文件,那么tcpreplay就可以用如下命令在两个网口进行数据的重放
    tcpreplay --dualfile --intf1=eth0 --intf2=eth1 a.pcap b.pcap
  • 以不同的速度回放
  1. 以尽可能大的速度回放
    tcpreplay --topspeed --intf1=eth0 sample.pcap
  2. 以10Mbps速率回放
    tcpreplay --mbps=10.0 --intf1=eth0 sample.pcap
    3)以原速度的7.3倍速率回放
    tcpreplay --multiplier=7.3 --intf1=eth0 sample.pcap
    4)以原速度的7.3倍速率回放
    tcpreplay --multiplier=7.3 --intf1=eth0 sample.pcap
    5)以每秒回放25个包的速率回放
    tcpreplay --pps=25 --intf1=eth0 sample.pcap
    6)以一次一个包的速率发送数据包
    tcpreplay这段摘自——
    作者:Jasmine
    链接:https://www.jianshu.com/p/91db5f2cf410
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 发包服务器也可以使用pfring软件
    • centos7.4没有破解发不出2g的流量
    • 发包需要用centos6.4系统
    • 1.如何加载dna驱动 cd /home/intone/bin/IManager/pfring, igb是千兆网卡目录,ixgb是万兆。
    • 2.根据实际选择千兆还是万兆进到这两个的目录其中之一,然后执行./load_dna_driver.sh 就可以加载dna驱动了
      在centos6.4系统上加载完dna驱动后,用ifconfig可以看到dna0 dna1这样的网口,在centos7.4系统上看不到dna0这样的网口
      然后用ethtool dna0 去查看连接状态
      加载完驱动后,用ifconfig可以看到dna0,dna1这样的网口
      加载完dna驱动后就可以进行发包
      到send_test目录
      ./pfsend -h //查看参数说明
      ./pfsend -i dna1 -l 256 -n 0 -r 2.35 //表示往dna1口发送长度为256字节,速率为2.35Mbps

  • 收包服务器可以使用tcpdump或者wireshark图形界面进行收包验证,企业级的服务器一般没有图形界面,所以可以选择在windows和mac安装app软件来查看。


    QQ20201103-0.png
    • 收包服务器可以使用dpdk-dump进行测试


      QQ20201103-1.png
    • 若启动不了,可以使用tstpmd:
QQ20201103-2.png
  • 然后另开一个窗口,执行dpdk-dump


    QQ20201103-3.png

注意:

  • 1.pcap文件中的数据包就是那样的ip,用tcpreplay发,它是原样的把pcap文件中的包发出去,所以收包那收到的包当然是原来的ip而不是204的ip;
  • 2.tcpdump是捕获网卡的数据包;
  • 3.被驱成dpdk后,tcpdump就抓不到它的包了,因为dpdk不经过内核的协议栈。

成文需要多次测试,多次修改!
Please tell me if you have any questions !

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。