---
title: "NAT производительность linux"
description: "Решил выяснить сколько трафика сможет занатить один Linux сервер, какая нагрузка будет при этом на C..."
author: "morkovka"
published: "2010-07-09T22:30:54+00:00"
modified: "2010-07-09T22:30:54+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/nat-proizvoditelnost-linux-57785"
markdown_url: "https://yvision.kz/post/nat-proizvoditelnost-linux-57785/markdown"
site_name: "Yvision.kz"
---

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

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

Решил выяснить сколько трафика сможет занатить один 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 мегабит трафика.

---

Source: [https://yvision.kz/post/nat-proizvoditelnost-linux-57785](https://yvision.kz/post/nat-proizvoditelnost-linux-57785)