The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.