【Atheros】Iperf性能测试的问题小结

1. Iperf用文件作为数据源无效的问题

2. 在代码中修改iperf数据,iperf无法收到,但在mac层能拿到数据

3. TCP发不出去包的问题

 

1. Iperf用文件作为数据源无效的问题

Iperf生成的数据包,默认是0-9这10个数字的循环(十六进制的话就是0x30-0x39的循环),我们可能需要去人工指定数据内容,比如全都置成0来方便的查看物理传输过程中的出错情况,于是我造了一个数据文件之后调用:

iperf -F /root/input_data -c 1.1.1.11 ……

我修改了一下顺序,同时修改了部分代码之后(所以其实也可能是代码问题,不一定是顺序的问题)先设定目标ip,然后指定文件:

iperf -c 1.1.1.11 -F /root/input_data……

就可以了。

 

2. 在代码中修改iperf数据,iperf无法收到,但在mac层能拿到数据

如果不使用问题1所述的用源数据文件的方法,而是在发送方的驱动里面强行修改了数据包的内容,会发现在接收方的驱动中是能够收到数据包的,但是iperf却不能正常接收到数据包,原因如下:

Iperf在传输层之后还有一个36字节长的首部,作为iperf应用层的首部,如果修改了数据,将导致传传输层/应用层校验失败(传输层使用UDP协议的话,就应该是应用层校验失败了),因此包会被丢掉,iperf无法统计到。

 

3. TCP发不出去包的问题

使用iperf发udp是没有问题的,但是发tcp就有问题,最后发现是因为我指定了带宽:

iperf -c xxx.xxx.xxx.xxx -i 1 -b 600M ...

设置了这个600M带宽上限之后,iperf就按udp去发了。

你可能感兴趣的:(性能测试)