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