I couldn't find anything quick and easy that would do it. Here's a tool that does it. You'll need Perl and Time-HiRes to use it.
#!/usr/bin/perl -w ## Mark R. Lindsey, lindsey@acm.org ## Flood a destination with fixed-sized UDP packets. use Time::HiRes qw( usleep ualarm gettimeofday tv_interval ); use IO::Socket; $number_of_args = $#ARGV + 1; if ($number_of_args < 3) { print "Usage: flood_udp.pl target_ip target_udp_port packets_per_second\n" ; die "Not enough arguments" } $target = $ARGV[0]; $target_port = $ARGV[1]; $packets_per_second = $ARGV[2]; $interpacket_delay_microseconds = 1 / $packets_per_second * 1000000; socket(BLAST, PF_INET, SOCK_DGRAM, getprotobyname("udp")); ## This assumes a 1500-byte path MTU. The idea is to make a maximum-sized packet without fragmentation. ## But if there's some fragmentation, that's not all so terrible. my $payload_size = 1472; my $ip_packet_size = $payload_size + 8; ## assuming Ethernet $msg = "u" x $payload_size; my $bytes_per_second = $ip_packet_size * $packets_per_second; my $bits_per_second = $bytes_per_second * 8; print "$bits_per_second bits/second, $bytes_per_second bytes/second\n"; print "Sending to $target at UDP port $target_port\n"; ## Send the UDP packet $ipaddr = inet_aton($target); $sendto = sockaddr_in($target_port,$ipaddr); while (1) { send(BLAST, $msg, 0, $sendto) ; usleep ($interpacket_delay_microseconds); }