NAME

Net::Write::Fast - create and inject packets fast

SYNOPSIS

use Net::Write::Fast;

# Sends multiple TCP SYNs to multiple IPv4 targets
my $r = Net::Write::Fast::l4_send_tcp_syn_multi(
   "127.0.0.1",                  # IPv4 source
   [ '127.0.0.2', '127.0.0.3' ], # IPv4 targets
   [ 25, 80, 110 ],              # TCP port targets
   200,                          # Number of packet per second
   3,                            # Number of try
   0,                            # Use IPv6
   0,                            # OPTIONAL: enable warnings flag
);

# Sends multiple TCP SYNs to multiple IPv6 targets
my $r = Net::Write::Fast::l4_send_tcp_syn_multi(
   "::1",            # IPv6 source
   [ '::2', '::3' ], # IPv6 targets
   [ 25, 80, 110 ],  # TCP port targets
   200,              # Number of packet per second
   3,                # Number of try
   1,                # Use IPv6
   0,                # OPTIONAL: enable warnings flag
);

# Handle errors
if ($r == 0) {
   print STDERR "ERROR: ",Net::Write::Fast::nwf_geterror(),"\n";
}

DESCRIPTION

Sends network frames fast to the network.

ENOBUFS ERRORS

If you got some ENOBUFS errors, you will have to tune your Operating System TCP/IP stack. For Linux, you can increase buffer size using the following commands:

# Should be enough to send at 200_000 pps (~ 10 MB of bandwidth)

sysctl -w net.core.wmem_max=109051904 # 100 MB

sysctl -w net.core.wmem_default=109051904 # 100 MB

FUNCTIONS

l4_send_tcp_syn_multi (ip_src, ip_dst arrayref, ip_dst count, ports arrayref, ports count, packets per second, try count, use IPv6 flag)

Sends multiple TCP SYNs at layer 4 to multiple IP targets. Returns 0 in case of failure, and sets error buffer to an error message.

nwf_geterror

Get latest error message.

estimate_runtime { ports => ARRAYREF, targets => ARRAYREF, pps => COUNT, try => COUNT }

Returns a HASHREF with days, hours, minutes and seconds for estimated running time.

runtime_as_string { days => COUNT, hours => COUNT, minutes => COUNT, seconds => COUNT }

Returns as string by takink the HASHREF obtained from estimate_runtime().

AUTHOR

Patrice <GomoR> Auffret

COPYRIGHT AND LICENSE

Copyright (c) 2011-2016, Patrice <GomoR> Auffret

You may distribute this module under the terms of the Artistic license. See LICENSE.Artistic file in the source distribution archive.