Jump to content
Калькуляторы

pf nat & ipfw kernel nat & ng_nat - что требует меньше ресурсов? сравнение и выбор оптимальной связки

Добрый день!

В настоящее время используем pf NAT.

Интересуют несколько вопросов:

1. Какая технология NAT требует меньше ресурсов системы

a) pf NAT

b) ipfw kernel NAT

c) NG_NAT ?

2. BINAT или NAT - что лучше? Я имею ввиду, что быстрее и требует меньше системных ресурсов? Предполагаю, что BINAT быстрее, т.к. нет необходимости хранить стейты.

3. PF не разбивается на треды. Читал, что IPFW (в FreeBSD 8.0, например) - разбивается. Однако, в своих тестах я этого не увидел. Может нужно пересобирать ядро с какими-то дополнительными опциями? Для теста я пересобирал ядро с такими опциями:

options SMP
# IPFW
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options IPFIREWALL_NAT
options LIBALIAS
options HZ="2000"

4. Не смог найти никакой информации про BINAT в ng_nat. Умеет ли бинатить ng_nat? Может кто-нибудь использовал такую технологию? Или может быть у кого-нибудь есть интересные статьи на эту тему?

 

Для теста использовался следующий комп (border nat):

- dmesg | less:
FreeBSD 8.0-STABLE-201004 #0: Mon Apr 5 15:59:06 UTC 2010
CPU: Intel(R) Pentium(R) 4 CPU 3.20GHz (3200.01-MHz K8-class CPU)
real memory = 536870912 (512 MB)
age0: mem 0xfeac0000-0xfeafffff irq 17 at device 0.0 on pci2
rl0: port 0xe800-0xe8ff mem 0xfebffc00-0xfebffcff irq 19 at device 0.0 on pci4

Тестовая схема:

laptop(192.168.0.188)-->age0(192.168.0.1)-->rl0(10.1.2.142)-->internet

age0 - внутренний интерфейс;

rl0 - внешний интерфейс;

IP-пул для ната: 10.1.6.0/24.

 

Тестировал загрузку и потери следующими утилитами

1. ping -c 500 -f 192.168.1.112

2. iperf -c 192.168.1.112 -n 1M -i 1 -t 180

3. netstat

Ниже выкладываю результаты тестов.

1. pf NAT:

Здесь в конфиге /etc/pf.conf.ports одно правило для ната:

nat pass on $ext_if from to any -> 10.1.6.0/24 source-hash test static-port

a). ping -c 500 -f 192.168.1.112:

PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.
--- 192.168.1.112 ping statistics ---
500 packets transmitted, 398 received, 20% packet loss, time 1658ms
rtt min/avg/max/mdev = 0.239/0.339/5.425/0.262 ms, ipg/ewma 3.323/0.328 ms

b) На сервере 192.168.1.112 запускаю:

iperf -s 80

На ноуте:

iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180

Вывод netstat:

netstat -w1d -I age0:

  input (age0) output
packets     errs     idrops      bytes    packets    errs    bytes    colls
5247          0         0       7332276   1600          0     83700      0
5286          0         0       7331330   1578          0     82296      0
5278          0         0       7339278   1589          0     83754      0
5312          0         0       7380344   1570          0     82728      0
5328          0         0       7337764   1567          0     83160      0

netstat -w1d -I rl0:

  input (rl0) output
packets     errs    idrops       bytes    packets    errs    bytes     colls
1556          0       0            93508    5133        0       7275788   0
1547          0       0            92832    5169        0       7337174   0
1551          0       0            93072    5161        0       7321088   0
1539          0       0            92352    5199        0       7381268   0
1520          0       0            91212    5195        0       7367642   0

top –S:

last pid: 6320; load averages: 0.07, 0.02, 0.00 up 1+18:19:20 10:08:26
70 processes: 3 running, 55 sleeping, 12 waiting
CPU: 0.0% user, 0.0% nice, 1.2% system, 4.7% interrupt, 94.2% idle
Mem: 21M Active, 136M Inact, 89M Wired, 44K Cache, 59M Buf, 237M Free
Swap: 2048M Total, 2048M Free

2. pf BINAT:

В конфиге /etc/pf.conf.ports порядка 1000 "левых" правил вида:

...
binat on $ext_if from 10.10.10.2 to any -> 10.1.6.13
binat on $ext_if from 10.10.10.3 to any -> 10.1.6.14
...

И одно актуальное правило для ноута:

binat on $ext_if from 192.168.0.188 to any -> 10.1.6.188

a) ping -c 500 -f 192.168.1.112:

PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.
--- 192.168.1.112 ping statistics ---
500 packets transmitted, 398 received, 20% packet loss, time 1688ms
rtt min/avg/max/mdev = 0.238/0.357/1.006/0.078 ms, ipg/ewma 3.383/0.330 ms

b) На сервере 192.168.1.112:

iperf -s 80

На ноуте:

iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180

Вывод netstat:

netstat -w1d -I age0:

     input (age0) output
packets   errs     idrops        bytes       packets    errs    bytes   colls
5294         0          0         7318272      1585       0      84996     0
0            0          0         7357824       0            0     83862     0
5314         0          0         7367854      1591       0      83268     0
5302         0          0         7290642      1591       0      83646     0
5270         0          0         7332276      1577       0      85914     0

netstat -w1d -I rl0:

 input (rl0) output
packets    errs    idrops      bytes     packets    errs    bytes     colls
1586         0        0         95172       5172       0       7341148    0
1567         0        0         94038       5177       0       7344514    0
1537         0        0         92232       5198       0       7373698    0
1565         0        0         93912       5166       0       7328090    0
1561         0        0         93672       5139        0       7301596   0

top –S:

last pid: 8622; load averages: 0.16, 0.07, 0.01 up 2+13:22:43 05:11:49
61 processes: 3 running, 46 sleeping, 12 waiting
CPU: 0.0% user, 0.0% nice, 4.4% system, 5.1% interrupt, 90.5% idle
Mem: 14M Active, 127M Inact, 89M Wired, 59M Buf, 251M Free
Swap: 2048M Total, 2048M Free

3.IPFW KERNEL NAT:

a). ping -c 500 -f 192.168.1.5:

PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.
--- 192.168.1.112 ping statistics ---
500 packets transmitted, 425 received, 15% packet loss, time 1598ms
rtt min/avg/max/mdev = 0.253/1.081/1.576/0.414 ms, ipg/ewma 3.203/0.895 ms

b) На сервере 192.168.1.112:

iperf -s 80

На ноуте:

iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180

Вывод netstat:

netstat -w1d -I age0:

 input (age0) output
packets    errs     idrops       bytes      packets    errs     bytes     colls
3966        0         0          5501336      1086       0      56646        0
4380        0         0          6140036      1100       0      58266        0
4315        0         0          5654698      1089       0       55424       0
3703        0         0          5291538      990        0       54182       0
3548        0         0          4910778      992        0       52292       0
3894        0         0          5399218      1140       0       60770       0

netstat -w1d -I rl0:

  input (rl0) output
packets     errs   idrops      bytes    packets       errs   bytes     colls
1085         0         0        65112     4004            0    5680576    0
1053         0         0        63296     4432            0    6289586    0
972           0         0        58508     3668            0    5195190    0
944           0         0        56672     3550            0    5033916    0
1109         0         0        66981     3813            0    5408090    0
1099         0         0        65972     3952            0    5604760    0

top –S:

last pid: 2397; load averages: 0.06, 0.05, 0.04 up 0+00:09:13 14:25:50
66 processes: 3 running, 51 sleeping, 12 waiting
CPU: 0.0% user, 0.0% nice, 0.5% system, 3.5% interrupt, 96.1% idle
Mem: 14M Active, 9248K Inact, 55M Wired, 92K Cache, 11M Buf, 403M Free
Swap: 2048M Total, 2048M Free

4.IPFW KERNEL BINAT

a) ping -c 500 -f 192.168.1.112:

PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.
--- 192.168.1.112 ping statistics ---
500 packets transmitted, 398 received, 20% packet loss, time 1968ms
rtt min/avg/max/mdev = 0.284/1.147/1.568/0.406 ms, ipg/ewma 3.944/1.055 ms

b) На сервере 192.168.1.112:

iperf -s 80

На ноуте:

iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180

Вывод netstat:

netstat -w1d -I age0:

 input (age0) output
packets     errs     idrops       bytes     packets   errs    bytes   colls
4138         0        0         4716350     1138       0       47682    0
3458         0        0         5812454      862        0       58374    0
4144         0        0         5768360      1143      0       59670    0
4164         0        0         5540888      1132      0       62640    0
3954         0        0         4803024      1195      0        50598   0

netstat -w1d -I rl0:

     input (rl0) output
packets     errs    idrops      bytes     packets    errs    bytes    colls
1007          0       0        60492       3609        0       5118682   0
950            0       0        57012       3614        0       5126988   0
1146          0       0        68772       4034        0       5723108   0
1121          0       0        67272       4088        0       5801266   0
1048          0       0        62892       3488        0       4946638   0

top –S:

last pid: 4852; load averages: 0.07, 0.03, 0.00 up 0+16:06:15 05:53:04
63 processes: 4 running, 47 sleeping, 12 waiting
CPU: 0.0% user, 0.0% nice, 7.3% system, 6.7% interrupt, 86.0% idle
Mem: 15M Active, 142M Inact, 110M Wired, 100K Cache, 59M Buf, 214M Free
Swap: 2048M Total, 2048M Free

5.NG_NAT:

a) ping -c 500 -f 192.168.1.112:

PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.
--- 192.168.1.112 ping statistics ---
500 packets transmitted, 422 received, 15% packet loss, time 1624ms
rtt min/avg/max/mdev = 0.254/1.038/8.862/0.551 ms, ipg/ewma 3.255/0.961 ms

b) На сервере 192.168.1.112:

iperf -s 80

На ноуте:

iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180

Вывод netstat:

netstat -w1d -I age0:

  input (age0) output
packets    errs    idrops      bytes    packets   errs   bytes   colls
4812          0       0        6634038   1268      0      66474    0
4765          0       0        6702092   1234      0      66150    0
4848          0       0        6616932   1263      0      66636    0
4764          0       0        6582868   1237      0      70686    0
4746          0       0        6494680   1403      0      76032    0

netstat -w1d -I rl0:

  input (rl0) output
packets     errs     idrops       bytes    packets    errs   bytes   colls
1219           0         0         73170     4680       0    6634886    0
1225           0         0         73512     4720       0    6696960    0
1219           0         0         73170     4655       0    6603440    0
1380           0         0         82812     4630       0    6570166    0
1414           0         0         84864     4585       0    6504178    0

Edited by nicol@s

Share this post


Link to post
Share on other sites

Добрый день!

В настоящее время используем pf NAT.

Интересуют несколько вопросов:

<b>1</b>. Какая технология NAT требует меньше ресурсов системы

a) pf NAT

b) ipfw kernel NAT

c) NG_NAT ?

<b>2.</b> BINAT или NAT - что лучше? Я имею ввиду, что быстрее и требует меньше системных ресурсов? Предполагаю, что BINAT быстрее, т.к. нет необходимости хранить стейты.

<b>3.</b> PF не разбивается на треды. Читал, что IPFW (в FreeBSD 8.0, например) - разбивается. Однако, в своих тестах я этого не увидел. Может нужно пересобирать ядро с какими-то дополнительными опциями? Для теста я пересобирал ядро с такими опциями:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->options SMP

# IPFW

options IPFIREWALL

options IPFIREWALL_VERBOSE

options IPFIREWALL_DEFAULT_TO_ACCEPT

options DUMMYNET

options IPFIREWALL_NAT

options LIBALIAS

options HZ="2000"<!--c2--></div><!--ec2-->

<b>4.</b> Не смог найти никакой информации про BINAT в ng_nat. Умеет ли бинатить ng_nat? Может кто-нибудь использовал такую технологию? Или может быть у кого-нибудь есть интересные статьи на эту тему?

 

Для теста использовался следующий комп (border nat):

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->- dmesg | less:

FreeBSD 8.0-STABLE-201004 #0: Mon Apr 5 15:59:06 UTC 2010

CPU: Intel® Pentium® 4 CPU 3.20GHz (3200.01-MHz K8-class CPU)

real memory = 536870912 (512 MB)

age0: mem 0xfeac0000-0xfeafffff irq 17 at device 0.0 on pci2

rl0: port 0xe800-0xe8ff mem 0xfebffc00-0xfebffcff irq 19 at device 0.0 on pci4<!--c2--></div><!--ec2-->

Тестовая схема:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->laptop(192.168.0.188)-->age0(192.168.0.1)-->rl0(10.1.2.142)-->internet<!--c2--></div><!--ec2-->

age0 - внутренний интерфейс;

rl0 - внешний интерфейс;

IP-пул для ната: 10.1.6.0/24.

 

Тестировал загрузку и потери следующими утилитами

1. ping -c 500 -f 192.168.1.112

2. iperf -c 192.168.1.112 -n 1M -i 1 -t 180

3. netstat

Ниже выкладываю результаты тестов.

1. pf NAT:

Здесь в конфиге /etc/pf.conf.ports одно правило для ната:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->nat pass on $ext_if from to any -> 10.1.6.0/24 source-hash test static-port<!--c2--></div><!--ec2-->

a). ping -c 500 -f 192.168.1.112:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.

--- 192.168.1.112 ping statistics ---

500 packets transmitted, 398 received, 20% packet loss, time 1658ms

rtt min/avg/max/mdev = 0.239/0.339/5.425/0.262 ms, ipg/ewma 3.323/0.328 ms<!--c2--></div><!--ec2-->

b) На сервере 192.168.1.112 запускаю:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -s 80<!--c2--></div><!--ec2-->

На ноуте:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180<!--c2--></div><!--ec2-->

Вывод netstat:

netstat -w1d -I age0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (age0) output

packets errs idrops bytes packets errs bytes colls

5247 0 0 7332276 1600 0 83700 0

5286 0 0 7331330 1578 0 82296 0

5278 0 0 7339278 1589 0 83754 0

5312 0 0 7380344 1570 0 82728 0

5328 0 0 7337764 1567 0 83160 0<!--c2--></div><!--ec2-->

netstat -w1d -I rl0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (rl0) output

packets errs idrops bytes packets errs bytes colls

1556 0 0 93508 5133 0 7275788 0

1547 0 0 92832 5169 0 7337174 0

1551 0 0 93072 5161 0 7321088 0

1539 0 0 92352 5199 0 7381268 0

1520 0 0 91212 5195 0 7367642 0<!--c2--></div><!--ec2-->

top –S:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->last pid: 6320; load averages: 0.07, 0.02, 0.00 up 1+18:19:20 10:08:26

70 processes: 3 running, 55 sleeping, 12 waiting

CPU: 0.0% user, 0.0% nice, 1.2% system, 4.7% interrupt, 94.2% idle

Mem: 21M Active, 136M Inact, 89M Wired, 44K Cache, 59M Buf, 237M Free

Swap: 2048M Total, 2048M Free<!--c2--></div><!--ec2-->

2. pf BINAT:

В конфиге /etc/pf.conf.ports порядка 1000 "левых" правил вида:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->...

binat on $ext_if from 10.10.10.2 to any -> 10.1.6.13

binat on $ext_if from 10.10.10.3 to any -> 10.1.6.14

...<!--c2--></div><!--ec2-->

И одно актуальное правило для ноута:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->binat on $ext_if from 192.168.0.188 to any -> 10.1.6.188<!--c2--></div><!--ec2-->

a) ping -c 500 -f 192.168.1.112:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.

--- 192.168.1.112 ping statistics ---

500 packets transmitted, 398 received, 20% packet loss, time 1688ms

rtt min/avg/max/mdev = 0.238/0.357/1.006/0.078 ms, ipg/ewma 3.383/0.330 ms<!--c2--></div><!--ec2-->

b) На сервере 192.168.1.112:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -s 80<!--c2--></div><!--ec2-->

На ноуте:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180<!--c2--></div><!--ec2-->

Вывод netstat:

netstat -w1d -I age0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (age0) output

packets errs idrops bytes packets errs bytes colls

5294 0 0 7318272 1585 0 84996 0

0 0 0 7357824 0 0 83862 0

5314 0 0 7367854 1591 0 83268 0

5302 0 0 7290642 1591 0 83646 0

5270 0 0 7332276 1577 0 85914 0<!--c2--></div><!--ec2-->

netstat -w1d -I rl0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (rl0) output

packets errs idrops bytes packets errs bytes colls

1586 0 0 95172 5172 0 7341148 0

1567 0 0 94038 5177 0 7344514 0

1537 0 0 92232 5198 0 7373698 0

1565 0 0 93912 5166 0 7328090 0

1561 0 0 93672 5139 0 7301596 0<!--c2--></div><!--ec2-->

top –S:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->last pid: 8622; load averages: 0.16, 0.07, 0.01 up 2+13:22:43 05:11:49

61 processes: 3 running, 46 sleeping, 12 waiting

CPU: 0.0% user, 0.0% nice, 4.4% system, 5.1% interrupt, 90.5% idle

Mem: 14M Active, 127M Inact, 89M Wired, 59M Buf, 251M Free

Swap: 2048M Total, 2048M Free<!--c2--></div><!--ec2-->

3.IPFW KERNEL NAT:

a). ping -c 500 -f 192.168.1.5:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.

--- 192.168.1.112 ping statistics ---

500 packets transmitted, 425 received, 15% packet loss, time 1598ms

rtt min/avg/max/mdev = 0.253/1.081/1.576/0.414 ms, ipg/ewma 3.203/0.895 ms<!--c2--></div><!--ec2-->

b) На сервере 192.168.1.112:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -s 80<!--c2--></div><!--ec2-->

На ноуте:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180<!--c2--></div><!--ec2-->

Вывод netstat:

netstat -w1d -I age0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (age0) output

packets errs idrops bytes packets errs bytes colls

3966 0 0 5501336 1086 0 56646 0

4380 0 0 6140036 1100 0 58266 0

4315 0 0 5654698 1089 0 55424 0

3703 0 0 5291538 990 0 54182 0

3548 0 0 4910778 992 0 52292 0

3894 0 0 5399218 1140 0 60770 0<!--c2--></div><!--ec2-->

netstat -w1d -I rl0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (rl0) output

packets errs idrops bytes packets errs bytes colls

1085 0 0 65112 4004 0 5680576 0

1053 0 0 63296 4432 0 6289586 0

972 0 0 58508 3668 0 5195190 0

944 0 0 56672 3550 0 5033916 0

1109 0 0 66981 3813 0 5408090 0

1099 0 0 65972 3952 0 5604760 0<!--c2--></div><!--ec2-->

top –S:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->last pid: 2397; load averages: 0.06, 0.05, 0.04 up 0+00:09:13 14:25:50

66 processes: 3 running, 51 sleeping, 12 waiting

CPU: 0.0% user, 0.0% nice, 0.5% system, 3.5% interrupt, 96.1% idle

Mem: 14M Active, 9248K Inact, 55M Wired, 92K Cache, 11M Buf, 403M Free

Swap: 2048M Total, 2048M Free<!--c2--></div><!--ec2-->

4.IPFW KERNEL BINAT

a) ping -c 500 -f 192.168.1.112:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.

--- 192.168.1.112 ping statistics ---

500 packets transmitted, 398 received, 20% packet loss, time 1968ms

rtt min/avg/max/mdev = 0.284/1.147/1.568/0.406 ms, ipg/ewma 3.944/1.055 ms<!--c2--></div><!--ec2-->

b) На сервере 192.168.1.112:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -s 80<!--c2--></div><!--ec2-->

На ноуте:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180<!--c2--></div><!--ec2-->

Вывод netstat:

netstat -w1d -I age0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (age0) output

packets errs idrops bytes packets errs bytes colls

4138 0 0 4716350 1138 0 47682 0

3458 0 0 5812454 862 0 58374 0

4144 0 0 5768360 1143 0 59670 0

4164 0 0 5540888 1132 0 62640 0

3954 0 0 4803024 1195 0 50598 0<!--c2--></div><!--ec2-->

netstat -w1d -I rl0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (rl0) output

packets errs idrops bytes packets errs bytes colls

1007 0 0 60492 3609 0 5118682 0

950 0 0 57012 3614 0 5126988 0

1146 0 0 68772 4034 0 5723108 0

1121 0 0 67272 4088 0 5801266 0

1048 0 0 62892 3488 0 4946638 0<!--c2--></div><!--ec2-->

top –S:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->last pid: 4852; load averages: 0.07, 0.03, 0.00 up 0+16:06:15 05:53:04

63 processes: 4 running, 47 sleeping, 12 waiting

CPU: 0.0% user, 0.0% nice, 7.3% system, 6.7% interrupt, 86.0% idle

Mem: 15M Active, 142M Inact, 110M Wired, 100K Cache, 59M Buf, 214M Free

Swap: 2048M Total, 2048M Free<!--c2--></div><!--ec2-->

5.NG_NAT:

a) ping -c 500 -f 192.168.1.112:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->PING 192.168.1.112 (192.168.1.112) 56(84) bytes of data.

--- 192.168.1.112 ping statistics ---

500 packets transmitted, 422 received, 15% packet loss, time 1624ms

rtt min/avg/max/mdev = 0.254/1.038/8.862/0.551 ms, ipg/ewma 3.255/0.961 ms<!--c2--></div><!--ec2-->

b) На сервере 192.168.1.112:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -s 80<!--c2--></div><!--ec2-->

На ноуте:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->iperf -c 192.168.1.112 -p 80 -n 1M -i 1 -t 180<!--c2--></div><!--ec2-->

Вывод netstat:

netstat -w1d -I age0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (age0) output

packets errs idrops bytes packets errs bytes colls

4812 0 0 6634038 1268 0 66474 0

4765 0 0 6702092 1234 0 66150 0

4848 0 0 6616932 1263 0 66636 0

4764 0 0 6582868 1237 0 70686 0

4746 0 0 6494680 1403 0 76032 0<!--c2--></div><!--ec2-->

netstat -w1d -I rl0:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--> input (rl0) output

packets errs idrops bytes packets errs bytes colls

1219 0 0 73170 4680 0 6634886 0

1225 0 0 73512 4720 0 6696960 0

1219 0 0 73170 4655 0 6603440 0

1380 0 0 82812 4630 0 6570166 0

1414 0 0 84864 4585 0 6504178 0<!--c2--></div><!--ec2-->

 

 

Мой рейтинг идет следующим образом.

 

ipfw nat (kernel)

ng nat

natd

 

 

Меньше всего грузит систему именно ipfw nat

Share this post


Link to post
Share on other sites

 

 

Мой рейтинг идет следующим образом.

 

ipfw nat (kernel)

ng nat

natd

 

 

Меньше всего грузит систему именно ipfw nat

 

 

ИМХО

 

1.PF NAT + agressive

2.ipfw NAT

3.NG NAT

4.NATD

 

первый не сказать что в разы, но быстрее. Натит до 800мб\сек на 32 адреса в каждый ИП по /24 сетка завернута

оперирует всем 8.2 фряX64 с 2xXeon E5460, он же маршрутизит на 7 интерфейсов в т.ч. инет через lagg о ~800mbps в час пик.

 

binat - это трансляция сети в сеть, т.е. (если мне память не изменяет) тупо меняет скажем 192.168.0.0/24 в 62.15.16.0/24 и обратно. применялось давно в качестве заплатки на кривость рук и как следствие кривость маршрутизации :)

Share this post


Link to post
Share on other sites

выбор пал на pf, пока доволен

nat_10G# pfctl -si
No ALTQ support in kernel
ALTQ related functions disabled
Status: Enabled for 2 days 22:43:50           Debug: Urgent

State Table                          Total             Rate
 current entries                   511399
 searches                     66242645155       260152.6/s
 inserts                       1073620385         4216.4/s
 removals                      1073108986         4214.4/s
Counters
 match                         4123564220        16194.3/s
 bad-offset                             0            0.0/s
 fragment                           20071            0.1/s
 short                            3424288           13.4/s
 normalize                              0            0.0/s
 memory                                 0            0.0/s
 bad-timestamp                          0            0.0/s
 congestion                             0            0.0/s
 ip-option                              1            0.0/s
 proto-cksum                       854072            3.4/s
 state-mismatch                   2175192            8.5/s
 state-insert                           0            0.0/s
 state-limit                            0            0.0/s
 src-limit                              0            0.0/s
 synproxy                               0            0.0/s

nat_10G# netstat -w1
           input        (Total)           output
  packets  errs idrops      bytes    packets  errs      bytes colls
   507927     0     0  417395353     496043     0  417415206     0
   504416     0     0  417048566     492349     0  416103187     0
   512486     0     0  423252236     500738     0  422240643     0
   509881     0     0  420324841     497159     0  418901467     0
   509690     0     0  419741694     498244     0  418474526     0
   504826     0     0  416572384     492656     0  415470689     0
   503184     0     0  417901110     491040     0  416839754     0
   513832     0     0  426541917     501968     0  425087011     0
   511124     0     0  423056683     498789     0  421899454     0
   494034     0     0  406351183     481640     0  406272692     0
   493205     0     0  404245612     481932     0  402998981     0
   495217     0     0  404396253     483272     0  403166908     0
   508016     0     0  411733578     495702     0  410017315     0

 

nat_10G# ifstat -b
      ix0                 ix1                 em0
Kbps in  Kbps out   Kbps in  Kbps out   Kbps in  Kbps out
1.04e+06  2.25e+06  2.26e+06  1.05e+06      0.00      0.00
1.01e+06  2.09e+06  2.09e+06  1.01e+06      0.00      0.00
992835.3  2.08e+06  2.09e+06  994844.6      0.00      0.00
985792.9  2.22e+06  2.23e+06  983862.9      0.00      0.00
1.03e+06  2.19e+06  2.20e+06  1.03e+06      0.00      0.00
1.07e+06  2.20e+06  2.21e+06  1.07e+06      0.00      0.33
1.02e+06  2.26e+06  2.27e+06  1.02e+06      0.00      0.00

 

загрузка cpu - 50%

при этом почти никакого тюнинга в loader.conf и sysctl. в драйверах сетевухи поправил число прерываний и все..

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this