Linux. Настройка сети

    Настройка параметров сети, предотвращает потерю данных и настраивает сетевой стэк на максимальную полосу пропускания.

    Системный буфер

    Параметры размера буфера настраиваются в файле /etc/sysctl.conf Рекомендуется использовать следующие значения для сетевых адаптеров 1G:

    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.udp_mem = 8388608 12582912 16777216
    net.ipv4.tcp_rmem = 4096 87380 8388608
    net.ipv4.tcp_wmem = 4096 65536 8388608
    net.core.wmem_default = 16777216
    net.core.rmem_default = 16777216
    net.ipv4.tcp_tw_recycle = 0
    

    Для 10G сетевых адаптеров:

    net.core.rmem_max = 67108864
    net.core.wmem_max = 67108864
    net.ipv4.udp_mem = 8388608 16777216 33554432
    net.ipv4.tcp_rmem = 4096 87380 33554432
    net.ipv4.tcp_wmem = 4096 65536 33554432
    net.core.wmem_default = 33554432
    net.core.rmem_default = 33554432
    net.ipv4.tcp_congestion_control=htcp
    net.ipv4.tcp_tw_recycle = 0
    

    Для 40G сетевых адаптеров:

    net.core.rmem_max = 134217728
    net.core.wmem_max = 134217728
    net.ipv4.udp_mem = 8388608 33554432 67108864
    net.ipv4.tcp_rmem = 4096 87380 67108864
    net.ipv4.tcp_wmem = 4096 65536 67108864
    net.core.wmem_default = 67108864
    net.core.rmem_default = 67108864
    net.ipv4.tcp_congestion_control=htcp
    net.ipv4.tcp_tw_recycle = 0
    

    Чтобы применить изменения, перезагрузите систему или выполните команду:

    sysctl -p
    

    Вы можете проверить текущие значения с помощью следующей команды:

    sysctl net.core.rmem_default net.core.rmem_max net.core.wmem_default net.core.wmem_max net.ipv4.udp_mem net.ipv4.tcp_wmem
    

    Размер буфера сетевой карты

    [root@astra ~]# ethtool -g eth1
    Ring parameters for eth1:
    Pre-set maximums:
    RX:		4096
    RX Mini:	0
    RX Jumbo:	0
    TX:		4096
    Current hardware settings:
    RX:		4096
    RX Mini:	0
    RX Jumbo:	0
    TX:		256
    

    Здесь мы видим, что rx-буфер увеличен до максимума. Обычно найти верное значение довольно сложно. Наиболее оптимальным является некоторое «среднее» значение. С высокочастотным и многоядерным процессором (> 3GHz) вы можете получить хорошие результаты с максимальным размером буфера. Пример команды для увеличения буфера:

    ethtool -G eth1 rx 2048
    

    Как узнать информацию о потерях

    Ключевые слова: missed, dropped, fifo, error, rx.

    ip -s -s link show eth1
    

    Нужно проверить ошибки RX. Некоторые сетевые карты предоставляют более подробную информацию о потерях:

    ethtool -S eth1
    

    Потери могут быть не только на сетевых картах вашего сервера. Они также могут находиться на порту сетевого оборудования. Вы можете узнать, как это увидеть из документации производителя сетевого оборудования.

    rp_filter

    rp_filter - является технологией обеспечивающей защиту и безопасность сервера при использовании мультикаст - рассылок.

    Если ваш сервер имеет несколько сетевых интерфейсов, рекомендуем прописать маршруты для мультикаст-групп. Если это не возможно, вы должны изменить настройки rp_filter.

    Добавьте в файл /etc/sysctl.conf следующую запись:

    net.ipv4.conf.eth0.rp_filter = 2
    

    Где eth0 - имя интерфейса.

    Чтобы применить изменения, перезапустите систему или выполните команду:

    sysctl -p