Jump to content

Recommended Posts

Posted (edited)

Добрый день!

В настоящее время используем 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
  • 11 months later...
Posted

Добрый день!

В настоящее время используем 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

  • 2 weeks later...
Posted

 

 

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

 

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 и обратно. применялось давно в качестве заплатки на кривость рук и как следствие кривость маршрутизации :)

Posted

выбор пал на 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. в драйверах сетевухи поправил число прерываний и все..

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.