Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
22:30, 09 июля 2010

NAT производительность linux

Решил выяснить сколько трафика сможет занатить один Linux сервер, какая нагрузка будет при этом на CPU.

Выяснилось, что при одном и том, же сетевом трафике, но разном количестве пакетов нагрузка на CPU будет разная, что совершенно логично.

Приведу тестовые данные:

Итак тестовая система:
Однопроцессорный четырехядерный сервер Intel(R) Xeon(R) CPU E5405 2.00GHz
Сетевые адаптеры Broadcom NetXtreme II BCM5708 1000Base-T (B2) PCI-X 64-bit 133MHz
ОС CentOS 5.4

Правила для iptables простые /etc/sysconfig/iptables


*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [0:0]

COMMIT

*nat

-A POSTROUTING -o eth0 -s 172.16.1.0/24 -j SNAT --to 192.168.0.1
-A POSTROUTING -o eth0 -s 172.16.2.0/24 -j SNAT --to 192.168.0.2
-A POSTROUTING -o eth0 -s 172.16.3.0/24 -j SNAT --to 192.168.0.3
--//--
-A POSTROUTING -o eth0 -s 172.16.254.0/24 -j SNAT --to 192.168.0.254

COMMIT

Пропустим через сервер трафик порядка 100 мегабит:

Входящий 90-100 мбит/с
Исходящий 50-60 мбит/с

Посмотрим количество пакетов:

vnstat -tr 15 -i eth0
409452 packets sampled in 15 seconds
Traffic average for eth0

rx 11291.52 kB/s 14072 packets/s
tx 5771.39 kB/s 13223 packets/s

Нагрузка на процессоры:

Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 91.0%id, 0.0%wa, 1.7%hi, 7.3%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 88.3%id, 0.0%wa, 3.7%hi, 8.0%si, 0.0%st

Количество соединений:

sysctl -a | grep ip_conntrack_count
net.ipv4.netfilter.ip_conntrack_count = 65405

Как видим нагрузка на каждый из процессоров всего в районе 7-8 процентов.

Увеличим трафик проходящий через сервер трафик до 200 мбит/с посмотрим как изменится картина

Трафик на обоих сетевых интерфейсах:
Входящий 200-230 мбит/с
Исходящий 130-150 мбит/с


vnstat -tr 15 -i eth0
873819 packets sampled in 15 seconds
Traffic average for eth0

rx 22922.61 kB/s 29719 packets/s
tx 14199.36 kB/s 28535 packets/s

Нагрузка на CPU

Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 68.0%id, 0.0%wa, 2.3%hi, 29.7%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 60.0%id, 0.0%wa, 4.7%hi, 35.0%si, 0.0%st

Увеличим трафик проходящий через сервер трафик до 350 мбит/с посмотрим как изменится картина

Трафик на обоих сетевых интерфейсах:
Входящий 350-370 мбит/с
Исходящий 190-210 мбит/с


vnstat -tr 15 -i eth0
1475987 packets sampled in 15 seconds
Traffic average for eth0

rx 37181.86 kB/s 49891 packets/s
tx 20991.49 kB/s 48507 packets/s

Нагрузка на CPU

Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 37.9%id, 0.0%wa, 1.7%hi, 60.5%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 19.5%id, 0.0%wa, 5.3%hi, 75.2%si, 0.0%st

Количество сетевых соединений

sysctl -a | grep ip_conntrack_count
net.ipv4.netfilter.ip_conntrack_count = 215402

Ну вот в принципе и все, как видим, даже обычный сервер в состоянии «заNATить» порядка 400 мегабит трафика.

0
632
2