cd /usr/src
git clone git://github.com/netsniff-ng/netsniff-ng.git
cd netsniff-ng
apt-get install -y libcli-dev libnet1-dev libnacl-dev libpcap-dev liburcu-dev ccache libgeoip-dev libnetfilter-conntrack-dev libncurses5-dev libnl-3-dev flex bison libnl-genl-3-dev libnl-3-dev libnl1 zlib1g-dev libnl-route-3-dev
./configure --prefix=/opt/netsniff-ng
make
make install
Потом берем шаблон флуда: https://raw.githubusercontent.com/netoptimizer/network-testing/master/trafgen/udp_example01.trafgen
Кроме этого обязательно нужно обновить ядро до версии 4.4 и выше из пакета hardware support! Ибо используются модные AF_PACKET и чем новее ядро - тем будет быстрее.
Потом открываем файл udp_example01.trafgen и корректируем там MAC адрес целевой машины. А также программируем порты и прочее.
После этого запускаем:
Итого, на Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz удалось выжать 3.5 MPPS ценой полной загрузки всех ядер машины:
git clone git://github.com/netsniff-ng/netsniff-ng.git
cd netsniff-ng
apt-get install -y libcli-dev libnet1-dev libnacl-dev libpcap-dev liburcu-dev ccache libgeoip-dev libnetfilter-conntrack-dev libncurses5-dev libnl-3-dev flex bison libnl-genl-3-dev libnl-3-dev libnl1 zlib1g-dev libnl-route-3-dev
./configure --prefix=/opt/netsniff-ng
make
make install
Потом берем шаблон флуда: https://raw.githubusercontent.com/netoptimizer/network-testing/master/trafgen/udp_example01.trafgen
Кроме этого обязательно нужно обновить ядро до версии 4.4 и выше из пакета hardware support! Ибо используются модные AF_PACKET и чем новее ядро - тем будет быстрее.
Потом открываем файл udp_example01.trafgen и корректируем там MAC адрес целевой машины. А также программируем порты и прочее.
После этого запускаем:
/opt/netsniff-ng/sbin/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size 500KiB --cpu 8В случае ошибки "Cannot allocate TX_RING" рекомендую убрать --ring-size вовсе.
Итого, на Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz удалось выжать 3.5 MPPS ценой полной загрузки всех ядер машины:
1 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%] 5 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
2 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%] 6 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
3 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%] 7 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
4 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%] 8 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
Mem[||| 190/48400MB] Tasks: 32, 65 thr; 9 running
Swp[| 3/8190MB] Load average: 0.64 1.37 4.28
Uptime: 01:23:24
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
3728 root 20 0 13616 1760 1364 R 100. 0.0 0:09.22 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
3732 root 20 0 13616 1780 1384 R 100. 0.0 0:09.22 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
3721 root 20 0 13620 1780 1384 R 100. 0.0 0:09.22 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
3722 root 20 0 13616 1764 1368 R 99.0 0.0 0:09.20 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
3724 root 20 0 13616 1780 1384 R 99.0 0.0 0:09.21 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
3723 root 20 0 13616 1768 1372 R 99.0 0.0 0:09.21 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
3725 root 20 0 13616 1780 1384 R 99.0 0.0 0:09.20 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
3730 root 20 0 13616 1768 1372 R 98.0 0.0 0:09.12 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size