Как да увеличим пройзводителноста на Linux router – linux advanced routing

Как да увеличим пройзводителноста на Linux router – linux advanced routing

linux advanced routing

Има един момент в Линукс рутера когато на пръв поглед мощна конфигурация започва да се държи зле, неестестенно вдигане на latensy в ping, лаг или дори загуба на пакети. Ясно е че, всичко това може да се породи от две неща. Много правила в iptables и tc или много пакети в секунда. И двата проблема се решават с едно и също решение. Тунинговане на параметрите в Линукс кернела. Звучи сложно но не е защото цялата процедура в опсиване на 50-тина реда, аз го правя в /etc/rc.local

linux advanced routing – Модули към ядрото:
Като начало едно от най важните неша е нашият Линукс рутер да подържа следните протоколи.

modprobe nf_conntrack
modprobe nf_conntrack_ftp
modprobe nf_conntrack_tftp
modprobe nf_nat
modprobe nf_nat_ftp
modprobe nf_nat_tftp
modprobe nf_nat_proto_gre
modprobe nf_nat_sip
modprobe nf_nat_h323
modprobe nf_nat_pptp
modprobe 8021q

linux advanced routing – Управления на прекъсванията:
Тук имаме 3 мрежови интерфейса. преглед се прави с командата “cat /proc/interrupts”

echo f > /proc/irq/92/smp_affinity
echo f  > /proc/irq/93/smp_affinity
echo f  > /proc/irq/94/smp_affinity
echo f  > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo f  > /sys/class/net/eth1/queues/rx-0/rps_cpus
echo f  > /sys/class/net/eth2/queues/rx-0/rps_cpus

linux advanced routing – “Тунинг” на ядрото:
Това е най тънката част и най трудно смилаемата. С тази конфигурация стигам почти Gigabit като трафик на 300 000 pps quad 9550 на Intel.

echo 1  > /proc/sys/net/ipv4/ip_forward
echo 1  > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1  > /proc/sys/net/ipv4/icmp_errors_use_inbound_ifaddr
echo 2  > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1  > /proc/sys/net/ipv4/conf/default/arp_filter
echo 1  > /proc/sys/net/ipv4/conf/all/promote_secondaries
echo 0  > /proc/sys/net/ipv4/conf/default/accept_source_route
echo 1  > /proc/sys/kernel/sysrq
echo 0  > /proc/sys/kernel/core_uses_pid
echo 2097152  > /proc/sys/net/core/rmem_max
echo 163840  > /proc/sys/net/core/wmem_max
echo 1024 65535  > /proc/sys/net/ipv4/ip_local_port_range
echo 32768  > /sys/module/nf_conntrack/parameters/hashsize
echo 262144  > /proc/sys/net/nf_conntrack_max
echo 2048  > /proc/sys/net/netfilter/nf_conntrack_expect_max
echo 1  > /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal
echo 5  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent
echo 5  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent2
echo 5  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_recv
echo 9000  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
echo 10  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait
echo 10  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close_wait
echo 10  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close
echo 10  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_last_ack
echo 10  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait
echo 10  > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout
echo 180  > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout_stream
echo 10  > /proc/sys/net/ipv4/netfilter/ip_conntrack_icmp_timeout
echo 600  > /proc/sys/net/ipv4/netfilter/ip_conntrack_generic_timeout

Как да увеличим пройзводителноста на Linux router – linux advanced routing

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.