[Openstack] UDP issues?

Rick Jones rick.jones2 at hpe.com
Mon Jul 18 22:30:36 UTC 2016


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 at lists.openstack.org
> Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack





More information about the Openstack mailing list