On 07/18/2016 02:43 PM, Ken D'Ambrosio wrote:
Hey, all.  We're trying to track down some UDP fragmentation issues, and
I'm trying to fully grasp exactly what goes on.  The tool I'm using is
"iperf."  My first confusion is that when I point iperf (client) to a
host behind a floating IP, that simply doesn't work.  Any ideas what the
issue is, and how to get around it?

What exactly do you mean by "simply doesn't work?"

Have you opened-up the security group rules to allow the port(s) that iperf will want to use through to the instance from the outside world?


Next up is this that when I have to VMs talk to each other -- on the
same subnet, using "iperf -c 172.23.244.169 -u -b 100m" -- I wind up
with this:
[  3] Sent 85471 datagrams
[  3] WARNING: did not receive ack of last datagram after 10 tries.

When I go from physical machine to physical machine, it works great,
even though a few datagrams are received out-of-order.  But a flat-out
missing packet does sound a bit like the issue I'm having.

-----------------------

Additionally, I'd really like a tool that would allow me to set packet
size for UDP tests; I've poked around, but haven't really found
anything.  If anyone has a suggestion, I'm all ears.

Much as I like to promote netperf :) I believe there must be a way to set the UDP datagram size in iperf. Perhaps its "-l" option.

When I get ready to run netperf tests, I tend to operate in environments where I can enjoy the luxury of:

neutron security-group-rule-create --protocol icmp default
neutron security-group-rule-create --protocol tcp --port-range-min 1 --port-range-max 65535 default neutron security-group-rule-create --protocol udp --port-range-min 1 --port-range-max 65535 default

And open all the ports from anywhere. Netperf doesn't have an explicit equivalent to iperf's bandwidth setting. Ignoring that for the moment, the not-equivalent netperf command, with message size setting would be:

netperf -H 172.23.244.169 -t UDP_STREAM -- -m 1234

where the "test-specific" (after the "--" on the command line) -m option sets the size of the buffer pass-in on the "send" calls (bytes). In a UDP_STREAM test that will control the number of payload bytes in the UDP datagrams being sent.

Netperf does have ways to limit bandwidth, but it is based on specifying a burst size (number of sends of whatever the size) and an inter-burst interval.

At the very least, netperf will need two ports open in the security group rules. Port 12865 for the control connection, and then a port for the data connection. Normally that is left to the stack to decide, but you can specify it explicitly with another test-specific option:

netperf -H 172.23.244.169 -t UDP_STREAM -- -m 1234 -P ,12867

will cause the remote netserver to bind its data socket to port 12867. Omit the comma and both netperf and netserver will bind their data sockets to that value.

happy benchmarking,

rick jones


Thanks!

-Ken

_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to     : openstack@lists.openstack.org
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack


_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to     : openstack@lists.openstack.org
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack

Reply via email to