Как да увеличим пройзводителноста на Linux router – 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