vagrant init ubuntu/xenial64 # or use ubuntu/trusty64 for a comparison point
vagrant up
vagrant ssh
Run these inside the vagrant box
sudo su
iptables -S # see it is empty
./list-addrs 251 # see it print addresses, wrapping after 250 in LSB
time (./list-addrs 100 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
iptables -F FORWARD # flush all rules from the FORWARD chain
root@ubuntu-xenial:/home/ubuntu# iptables -F FORWARD
root@ubuntu-xenial:/home/ubuntu# time (./list-addrs 100 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
real 0m0.102s
user 0m0.000s
sys 0m0.012s
root@ubuntu-xenial:/home/ubuntu# iptables -F FORWARD
root@ubuntu-xenial:/home/ubuntu# time (./list-addrs 1000 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
real 0m2.269s
user 0m0.036s
sys 0m0.356s
root@ubuntu-xenial:/home/ubuntu# iptables -F FORWARD
root@ubuntu-xenial:/home/ubuntu# time (./list-addrs 2000 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
real 0m11.709s
user 0m0.572s
sys 0m7.252s
root@ubuntu-xenial:/home/ubuntu# iptables -F FORWARD
root@ubuntu-xenial:/home/ubuntu# time (./list-addrs 3000 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
real 0m33.965s
user 0m1.380s
sys 0m26.804s
root@vagrant-ubuntu-trusty-64:/vagrant# iptables -F FORWARD
root@vagrant-ubuntu-trusty-64:/vagrant# time (./list-addrs 100 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
real 0m0.079s
user 0m0.005s
sys 0m0.072s
root@vagrant-ubuntu-trusty-64:/vagrant# iptables -F FORWARD
root@vagrant-ubuntu-trusty-64:/vagrant# time (./list-addrs 1000 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
real 0m0.815s
user 0m0.061s
sys 0m0.742s
root@vagrant-ubuntu-trusty-64:/vagrant# iptables -F FORWARD
root@vagrant-ubuntu-trusty-64:/vagrant# time (./list-addrs 2000 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
real 0m2.277s
user 0m0.287s
sys 0m1.956s
root@vagrant-ubuntu-trusty-64:/vagrant# iptables -F FORWARD
root@vagrant-ubuntu-trusty-64:/vagrant# time (./list-addrs 3000 | xargs -n1 iptables -A FORWARD -j ACCEPT -s)
real 0m3.975s
user 0m0.504s
sys 0m3.402s
iptables-restore
performs better.