У каждого есть только одна истинная ответственность: найти себя. Затем придерживайтесь этого в своем сердце до конца своей жизни, всем сердцем и никогда не останавливайтесь. Все остальные дороги непроходимы, человеческие побеги, трусливое возвращение к народным идеалам, дрейф, внутренние страхи - Герман Гессе, "Демиан"
Linux Оптимизация сети — это большая концепция. Здесь обсуждается главным образом оптимизация. транспортный уровень
исетевой уровень
изоптимизация.
Linux
и В других основных операционных системахизсетьпоток
одеялоабстрактный(протоколслоистыйиOSIЭталонная модель)для Одна серия Списокизаппаратное обеспечениеиуровень программного обеспечения Второсортный
。существоватькаждыйслоистыйначальство,отправлятьконецдобавить Информация об упаковке заголовка проходит через маршрутизатор, а принимающая сторона отделяет заголовок и восстанавливает данные. когдаран маршрутизаториз прохождения также включает в себя сеть уровеньиканальный Добавьте часть своего уровня в.
слоистый | описывать |
---|---|
Прикладной уровень | Прикладной Уровень включает в себя множество протоколов: TELNET, SSH, HTTP, SMTP, POP, SSL/TLS, FTP, MIME, HTML, SNMP, MIB... и в основном отвечает за объявление целевого адреса (заголовок запроса) и запись контента (запрос сообщение) |
уровень представления | уровень Представление отвечает за преобразование формата данных, специфичного для машины, в стандартный формат передачи и его отправку. |
сеансовый уровень | сеансовый уровень Какой метод подключения вы решили использовать? При этом пакеты данных маркируются в порядке отправки. |
транспортный уровень | транспортный Уровень устанавливает или отключает соединение. Создает логическое коммуникационное соединение между двумя хостами, чтобы убедиться, что данные прибыли, или повторно отправить, если они не прибыли, чтобы гарантировать надежность данных. TCP,UDP,DCDC |
сетевой уровень | сетевой уровень отправляет данные с хоста-отправителя на хост-получатель. Использование протоколов, включая ARP, IPv4, IPv6, ICMP (ping), IPsec и т. д. |
канальный уровень | Включая Ethernet, беспроводную локальную сеть, PPP, канал передачи данных. уровень отвечает за реализацию связи в пределах каждого интервала. Коммуникация фактически осуществляется в физическом виде из среды передачи данных, в канале данных. уровеньсуществовать Взаимосвязь сред передачи из оборудования обработки данных. |
физический уровень | Аппаратный уровень, физический уровень преобразует данные из01 в напряжение и импульсный свет и передает их в физическую среду передачи, напрямую соединяя оборудование друг с другом, выполняя MAC (Media Access Контроль, контроль доступа к среде передачи) для достижения передачи. физический уровень добавляет информацию о MAC-адресе из заголовка на сервер из сети уровень пересылает данные, отправляя их в сеть. |
Общий поток данных — это процесс извлечения и выталкивания данных из стека с использованием Прикладной. уровень запускается, упаковывает данные, разбивает их на нули, передает по сегментам, а затем в физический уровеньдля передачи сигналов,Это нажатие в стек,Достичь целевого IP,существоватьпроходитьобласть кэша фрагмента
нольдлявсе,Достигнуто из стека Прикладной уровень。
Передача данных (исходящая) :
первый,приложениепроходить Операционная система обеспечиваетAPI сетевых сокетов (интерфейс программирования)
Записать данные вsocket
документописыватьсимвол, То есть данные записываются в socket
документ,ЗатемвставитьКэш передачи
середина,Общие протоколы включают TCP (протокол управления передачей) и UDP (протокол пользовательской датаграммы).
Пришло время работать с операционной системойЯдро
отКэш передачи
серединаИзвлечение данных
,в соответствии ссет Спецификация протокола (TCP/UDP) Инкапсулировать данные водинPDU (блок данных протокола, сегмент TCP/датаграмма UDP)
,сетевой уровеньвстречадобавить в IP голова, форма IP датаграмма
。
будет содержать блок данных PDU
из IP датаграмма
вставить очередь передачи устройства
,ждатьотправлять,драйвер сетевого устройства
Регулярный осмотрКоманда передачи
,ПодождиотправлятьизPDU
。Водитель будетданные PDU
отЯдрокосмос
скопировать всетевая картаоборудование(NIC)
избуфер памяти
один разPDU
одеялоскопировать всетевая картаоборудованиеизбуфер памяти
,сетевая карта Устройство начинает отправлять данные. Процесс отправки данных может включать физическое операции уровня, такие как преобразование данных в электрические сигналы и отправка их на физическую среду (например, Ethernet). существуют Во время передачи данных Устройство с сетевой картой может вызвать сбой,Уведомляет операционную систему о том, что передача данных завершена или требует дальнейшей обработки.
Надо пройти здесь адресация маршрутизации,Адресная переадресация
,Достичь целевого IPХозяин,достичь цели IP После этого произойдет операция push
Принять данные (входящие) :
когдафрейм данных
приезжатьсетевая время карты,сетевая карта
встречаиспользовать Буфер DMA
Воляфрейм данныхкопироватьприезжатьбуфер приема
。буфер приема
дасуществоватьоперационная система Ядросерединадля Распространяется путем приема пакетовизобласть памяти,один разфрейм данныходеялокопироватьприезжатьбуфер приема
,сетевая картавстреча КХозяининициироватьЖесткое прерывание
Сигнал,Уведомить операционную системуиметьНовое из пакета данных
приезжать。
операционная система Ядро
перениматьприезжатьЖесткое прерывание
Сигналназад,Прервет выполнение задачи раньше, когда,и введитеЖесткое прерывание
обработчик,существовать Жесткое обработчик прерываниясередина,Операционная системаЯдро
встреча Планированиемягкое прерывание
(мягкое прерываниедазадержкаиметь дело смеханизм,Это позволяет отложить обработку пакета до подходящего времени.,Для повышения производительности системы) для обработки полученных пакетов. .
мягкое прерывание
обработчиквстречаотбуфер приема
серединаЧтение пакета
,и выполнить необходимыеизиметь дело с。Это включает в себя анализ пакетовиз Все уровнипротоколголова(НапримерEthernet-заголовок
、IP-заголовок
ждать),Воляданныепакет переданIP-уровень
продолжать дальшеизиметь дело с。
Если пакет больше MTU (Максимальная единица передачи)
,Требуется сегментированный перенос,Нужно использовать здесь буфер фрагментации
Соберите исходную датограмму.
Ядро Инкапсулировать данные вБлок данных протокола (PDU)
,Передача данных между узлами,физический уровень
из PDU даКусочек(bit)
,данныеканальный уровень
из PDU дафрейм данных(frame)
,сетевой уровень
из PDU даупаковка
,Высший уровеньиз PDU дадатаграмма (сообщение)
. один PDU включатьДанные верхнего уровня
Добавить этот слойизИнформация заголовка данных
。
Приведем краткий обзор вышеизложенного, вы сможете понять сетькэш
включатьЯдрокэш
,каждыйsocketкэш
,буфер фрагментации
а такжесетевая картаизБуфер DMA
。
RH442
Вы можете настроить параметры в различных областях, указанных выше, для достижения оптимизации. Конкретную конфигурацию параметров настройки можно объединить с приведенным выше рисунком.
net.ipv4.tcp_mem, net.ipv4.udp_mem (одиночный Кусочек
Page страница памяти,4K)
Представлено соответственноTCPиUDPиз Ограничение памяти на системном уровнеиззначение
,т.е. сетевое соединение из выделения памяти,включатьтри Список:min,pressure,max
, net.ipv4.tcp_mem
То есть мы часто говорим из TCP Размер окна получения
min
: TCP/UDP Если значение use меньше этого значения, Ядро не будет освобождать этот кэш.pressure
:когда TCP/UDP Когда кэш превышает это значение, Ядро начинает освобождать кэш, уменьшая количество используемого кэша до тех пор, пока оно не станет ниже. min ценить.max
:Местоиметь TCP/UDP из sockets Можно использоватьиз максимальной памяти кэшценить.Уведомление
:net.ipv4.tcp_memиnet.ipv4.udp_mem
да pages это единица измерения, а не байтовая единица, вы можете использовать getconf PAGESIZE Проверять page Размер из стоимости (обычно 4096 Байты = 4 КБ)
Проверить Размер страницы памяти
┌──[root@liruilongs.github.io]-[~]
└─$getconf PAGESIZE
4096
Расположение параметров ядра:
┌──[root@liruilongs.github.io]-[~]
└─$cat /proc/sys/net/ipv4/tcp_mem
472977 630639 945954
┌──[root@liruilongs.github.io]-[~]
└─$cat /proc/sys/net/ipv4/udp_mem
945957 1261278 1891914
┌──[root@liruilongs.github.io]-[~]
└─$
По этим двум параметрам из тюнинга существуетиспользовать. sar
Приходить Проверятьуровень связиизсетьпроизводительностьданные
например sar -n EDEV 1 1
,Отображает отправку и получение сообщений об ошибках для каждого устройства.
┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$sar -n EDEV 1 1
Linux 3.10.0-693.el7.x86_64 (vms81.liruilongs.github.io) 14 мая 2022 г. _x86_64_ (2 CPU)
22:53:07 IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
22:53:08 ens32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 cali86e7ca9e9c2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 cali13a4549bf1e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 cali5a282a7bbb0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 cali12cf25006b5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 cali45e02b0b21e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 calicb34164ec79 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22:53:08 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
Среднее время: ens32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: cali86e7ca9e9c2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: cali13a4549bf1e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: cali5a282a7bbb0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: cali12cf25006b5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: cali45e02b0b21e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: calicb34164ec79 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Среднее время: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$
Список | иллюстрировать |
---|---|
rxerr/s | Получить коэффициент ошибок |
txerr/s | Частота ошибок отправки |
co11/s | Частота конфликтов Ethernet при отправке |
rxdrop/s | из Частота потери кадров из-за недостаточного буфера в LinuxЯдро |
txdrop/s | из-за потери кадров при отправке из-за недостаточного буфера Linux |
txcarr/s | из Частота потери кадров при передаче из-за ошибки несущей |
rxfram/s | из Частота потери кадров из-за ошибки выравнивания кадров |
rxfifo/s | из Прием частоты кадров из-за ошибки FIFO |
txfifo/s | из Частота потери кадров при передаче из-за ошибки FIFO |
когда rxdrop/s
и txdrop/s
житьсуществоватьданныечас,можно адаптироватькогданастраиватьвсеначальстволапшаизБуфер ядра Параметр ядра
нуждаться Уведомлениеиздавычислитьразмеризчасждать,нуждатьсяиспользовать когда размер лицевой стороны, умноженный на количество страниц, получите KB существовать разделить на 1024 получать MB。
┌──[root@liruilongs.github.io]-[~]
└─$bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
42012 * 4
168048
(interrupt) Exiting bc.
┌──[root@liruilongs.github.io]-[~]
└─$bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
168048/1024
164
^C
(interrupt) Exiting bc.
net.core.rmem_max,net.core.wmem_max
socketпринимать
иотправлять
данныеизкэшизмаксимальное значение
,один Кусочекдля bytes`` байт,такжежитьсуществовать
net.core.rmem_defaultи
net.core.rmem_min`
┌──[root@liruilongs.github.io]-[~]
└─$cat /proc/sys/net/core/{rmem_max,wmem_max}
212992 #208K
212992
┌──[root@liruilongs.github.io]-[~]
└─$
net.core.rmem_max
:Этот параметр определяет сокетбуфер приема
измаксимумразмер。использовать Вжитьмагазинданные полученные из сети
,Подождите, пока приложение прочитает.Большеизбуфер приема МожетПовышение пропускной способности
иприложениеизпроизводительность,специально дляВысокоскоростная сеть или передача больших данных
изсцена。
net.core.wmem_max
:Этот параметр определяет сокетотправлятьбуфер
измаксимумразмер。использовать Вжитьмагазинприложениехотетьотправлятьприезжатьсетьизданные,ждатьотправлятьприезжатьсеть。Большеизотправлятьбуфер Можетобеспечить лучшееизсетьотправлятьпроизводительность
,особенносуществоватьВысокая нагрузка или задержка
среда。
Этот набор изоптимизации параметров Ядро часто сочетается с BDP
Приходитьнастраиватьвсе,Равен или превышает значение BDP
,о БДП, об этом мы поговорим ниже.
существовать проходить ifconfig
Базовая статистика всех устройств в системе.
┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$ifconfig ens32
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.26.81 netmask 255.255.255.0 broadcast 192.168.26.255
inet6 fe80::20c:29ff:fead:e393 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ad:e3:93 txqueuelen 1000 (Ethernet)
RX packets 507331 bytes 69923393 (66.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 556567 bytes 308574743 (294.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
О некоторых параметрах изиллюстрировать
Список | иллюстрировать |
---|---|
RX packets | Количество пакетов данных, полученных устройством |
TX packets | оборудование Отправилизданные Сумкачисло |
errors | отправлятьили получитьчасиз Количество ошибок |
dropped | отправлятьили получитьчасвыброситьизданные Сумкачисло |
overruns | сетьоборудованиебезиметьдостаточноизбуфер Приходитьотправлятьили получитьодинданные Сумкаиз Второсортныйчисло |
frame | Количество базовых ошибок кадров Ethernet |
carrier | Количество пакетов, отброшенных из-за сбоя среды связи (например, неисправного кабеля) |
если overruns
житьсуществоватьценить,Возможно, потребуется отрегулировать вышеуказанные параметры.,Подходит для увеличения размера.
net.ipv4.tcp_rmem,net.ipv4.tcp_wmem
net.ipv4.tcp_rmem
и net.ipv4.tcp_wmem
для конфигурации TCP розеткаизбуфер приемаиотправлятьбуфер
изразмер
。
┌──[root@liruilongs.github.io]-[~]
└─$cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 6291456 # 4K 85K 6144K
┌──[root@liruilongs.github.io]-[~]
└─$cat /proc/sys/net/ipv4/tcp_wmem
4096 16384 4194304
net.ipv4.tcp_rmem
:Конфигурация TCP Размер буфера приема сокета. Содержит таблицу из трех целых чисел из Список, представляющих Минимум, значение по умолчанию и максимум (в байтах для одного Кусочка)
。TCP буфер приемаиспользовать Вжитьмагазинданные полученные из сети
,Подождите, пока приложение прочитает.
net.ipv4.tcp_wmem
:Конфигурация TCP розеткаотправлятьбуферизразмер。такой же,Это также таблица, содержащая три целых числа из Список,выражать Минимум, значение по умолчанию и максимум (в байтах для одного Кусочка). TCP отправлятьбуфериспользовать Вжитьмагазинприложениехотетьотправлятьприезжатьсетьизданные
,ждатьотправлятьприезжатьсеть。
включатьодинsokcet
,Ядровстречасуществовать min(Первый Список)
и max(третий Список)
автоматически междунастраиватьодин значение по умолчанию (второй Список)
TCP-буфер
изразмеротвечатьв соответствии ссистемаисетьиз需求进行настраиватьвсе。Увеличение размера буфера может повысить производительность сети.
,особенныйдасуществоватьВысокая нагрузка или высокая задержка
изсетьсредасередина。нода,Слишком большойизбуфервозможныйвстречапривести кПовышенное использование памяти или задержки
вопрос。
Для настройки этих двух параметров также обратитесь к настройке «BDP».
BDP
Можетпроверятькэшразмер
да Это уместно?,Как посчитать, сколько кэша Шерстяная Ткань потребуется для максимальной пропускной способности?
время туда и обратно (время задержки туда и обратно rtt)
местныйотправлятьданные Сумкаприезжатьудаленный,иотудаленный返разизчаспрерывистый звонок RTT
!
использовать команду ping можно Проверять среднее время задержки туда и обратно
Linux
┌──[root@liruilongs.github.io]-[~]
└─$ ping -c 4 www.baidu.com
PING www.baidu.com (220.181.38.149) 56(84) bytes of data.
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=128 time=14.5 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=128 time=15.0 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=3 ttl=128 time=14.3 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=4 ttl=128 time=14.1 ms
--- www.baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 4044ms
rtt min/avg/max/mdev = 14.190/14.522/15.002/0.344 ms
┌──[root@liruilongs.github.io]-[~]
└─$
Как видите в последней строке есть ссылка на Baidu. 14 ms
из RTT
время, информацию о результате можно увидеть в конечном выходном результате, при условии, что полоса пропускания Гигабитная пропускная способность, 1000 Мбит/с.
,Прямо сейчас 1Gb/s
,Предположим, мыиспользоватьизда Гигабитная сетевая карта
rtt min/avg/max/mdev = 14.190/14.522/15.002/0.344 ms
1Gb/s * 14.522ms
:пропускная способность
умножить наВремя в пути туда и обратно (RTT)
Можетиспользовать Приходить估算сеть Передача с задержкой туда и обратно
(Round-Trip Time Delay)。
Воляскоростьодин Кусочек Конвертироватьдлябит в секунду
(b/s):1 Gb/s = 1,000,000,000 b/s
Волячасмеждуодин Кусочек КонвертироватьдляВторой
:14.522 ms = 14.522 * 0.001 s = 0.014522 s。
。
сейчассуществовать,нас Можетвычислить表达式:1,000,000,000 b/s * 0.014522 s = 14,522,000 b
ВоляБит в байт
:14,522,000 bit = 14,522,000 bit / 8 byte = 1,815,250 byte。(1 Байты равны 8 Кусочек (немного), будет 14,52 2,000 битыразделить на 8 чтобы получить количество байтов. Таким образом, результат 1,815,250 байт.
ВоляКонвертация байтов в KiB (двоичный формат из килобайта)
,нуждатьсяразделить на 1024:
1 815 250 байт / 1024 = 1 772,705 килобайт (Ки Б) / 1024 = 1,731 мегабайт (Ми Б) = 1 733,0625 мегабайт / 1024 = 0,00169 гигабайт (Ги Б)
Такотправлятьодинданные Сумкаждатьразотвечатьизчасмеждуда 0.014522 s
Секунды, вообще-то без этой задержки, этот период времени можно отправить 1.731 MiB
изданные,эта концепцияодеялосказатьдлячаспродлеватьпропускная способностьпродукт(Bandwidth Delay Product,BDP)
Интернет из rtt
Значение обычно больше, rtt ценить,Прямо сейчасЧем меньше задержка туда и обратно, тем ниже значение BDP.
。
если BDP(часпродлеватьпропускная способностьпродукт)больше, чем64 Ки Б (64 килобайта)
,носуществовать TCP соединятьсередина建议启использоватьМасштабирование TCP-окна
。TCP масштаб окнада一种механизм,использовать ВрасширятьTCPсоединятьсерединаизтрансферное окноразмер
,подходитьотвечатьвысокийпропускная способность
ивысокая задержка
изсетьсреда。
настраивать tcp_window_scaling изценитьдля 1
┌──[root@liruilongs.github.io]-[~]
└─$cat /proc/sys/net/ipv4/tcp_window_scaling
1
┌──[root@liruilongs.github.io]-[~]
└─$
еслиодинсистемануждатьсяОбработка нескольких одновременных подключений
,нокаждыйsocket кэш(rmem、wmemждать)
изразмер只хотеть Можетиметь дело содна розетка
изПроизводительность БПР
Прямо сейчас Может。
Однако чем больше, тем лучше.,излишнийизПакет кэшданных
привело кЗадержка пакета
,Джиттер задержки
иуменьшать
ПонятносетьизобщийизПропускная способность
изсейчасслон
За один очень быстрый исход,если Конфигурация: одна большая область хранения,Это также может привести к ухудшению работы приложений службы обмена мгновенными сообщениями.
существовать Вставьте картинку сюдаописывать
Нижедлясуществовать window на машине ping Google DNS , ты можешь видеть иметь 169 ms
из RTT
PS W:\Downloads> ping 8.8.8.8
толькосуществовать Ping 8.8.8.8 Инструментиметь 32 Байты данных:
от 8.8.8.8 из ответил: Байты=32 время=168мс TTL=109
от 8.8.8.8 из ответил: Байты=32 время=169мс TTL=109
от 8.8.8.8 из ответил: Байты=32 время=169мс TTL=109
от 8.8.8.8 из ответил: Байты=32 время=169мс TTL=109
8.8.8.8 из Ping Статистика:
Пакет данных: Отправил = 4. Получено = 4. Проиграл = 0 (0% потерянный),
Примерное время прохождения туда и обратно (в миллисекундах):
самый короткий = 168 мс, самый длинный = 169 мс, среднее = 168ms
PS W:\Downloads>
Предполагая, что для пропускной способности 100 Мбит/с, вычислите BDP :100 Megabits/s * 0.169 s * 1/8 Byte/bits = =100,000,000 bits/s * 0.169 s * 0.125 Byte/bit = 2,112,500 Bytes
добавить в TCP изRead кэш, связанную с конфигурацией параметров Yadro
Резервное копирование при прежних параметрах Ядро
┌──[root@liruilongs.github.io]-[~]
└─$sysctl -a | grep rmem
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.udp_rmem_min = 4096
┌──[root@liruilongs.github.io]-[~]
└─$sysctl -a | grep rmem >> /etc/sysctl.conf
┌──[root@liruilongs.github.io]-[~]
└─$cat /etc/sysctl.conf
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.udp_rmem_min = 4096
┌──[root@liruilongs.github.io]-[~]
└─$cp /etc/sysctl.conf /root/
Настройте параметры после настройки
Исправлятьнастраивать(socket maxмаксимальное значениеждать В刚才вычислитьизBDPизценить,по умолчаниюценитьнастраиватьдлямаксимальное значениеизполовина:
┌──[root@liruilongs.github.io]-[~]
└─$vim /etc/sysctl.conf
┌──[root@liruilongs.github.io]-[~]
└─$sysctl -p
net.core.rmem_max = 2112500
net.ipv4.tcp_rmem = 4096 1056250 2112500
┌──[root@liruilongs.github.io]-[~]
└─$
область кэша фрагмента
Связанный Ядроженьшеньчислосуществовать НекоторыйПотеря пакетов при фрагментации и повторной сборке
изсценануждатьсяоптимизация
При предсистемных параметрах по умолчанию
┌──[root@vms100.liruilongs.github.io]-[~]
└─$sysctl -a | grep ipfrag
net.ipv4.ipfrag_high_thresh = 4194304
net.ipv4.ipfrag_low_thresh = 3145728
net.ipv4.ipfrag_max_dist = 64
net.ipv4.ipfrag_secret_interval = 0
net.ipv4.ipfrag_time = 30
┌──[root@vms100.liruilongs.github.io]-[~]
└─$
net.ipv4.ipfrag_high_thresh
настраивать Понятнобуфер фрагментацииизвысокая вода Кусочек Проволокадля 4194304 Байты (4 MB)。когдабуфер Когда скорость фрагментацииизиспользовать превысит этот порог, Ядро начнет отбрасывать вновь поступившие из фрагментов.
net.ipv4.ipfrag_low_thresh
настраивать Понятнобуфер фрагментацииизнизкая вода Кусочек Проволокадля 3145728 Байты (3 MB)。когдабуфер Когда скорость фрагментацииизиспользовать упадет ниже этого порога, Ядро перестанет отбрасывать вновь поступившие из фрагментов.
net.ipv4.ipfrag_max_dist
Да, один параметр из Ядро используется для ограничения повторной сборки фрагментации пакетов. Он определяет смещение фрагмента (fragment offset)междуизмаксимум允许между隔。когда Шардингмеждуизсмещение превышает этот порогценитьчас,Ядро сбросит осколки и предотвратит реорганизацию,Для предотвращения возможных атак и истощения ресурсов.
net.ipv4.ipfrag_secret_interval
настраивать Понятнобуфер фрагментациииз Интервал обновления ключадля 0, что указывает на отсутствие обновления ключа.
net.ipv4.ipfrag_time
настройки фрагментированного существования буфера, удерживаемого во времени для 30 Второй。превосходить эточасмеждуизфрагменты Воляодеяловыбросить。
существоватьсеть Во время общения имеющий601 фрагмент был отброшен после существованиятайм-аута
netstat -s|grep timeout
601 fragments dropped after timeout
Обычно случается, что в процессе реорганизации фрагмента время прибытия определенного фрагмента превышает определенный лимит времени (обычно в соответствии с net.ipv4.ipfrag_time
Параметр настройки) и если он не доставлен полностью, Ядро отбросит этот фрагмент, чтобы избежать бесконечного ожидания.
Решение: отрегулируйте время тайм-аута.
net.ipv4.ipfrag_time = 30
sysctl -w net.ipv4.ipfrag_time=60
netstat -s|grep reassembles
8094 packet reassembles failed
есть 8094 пакета из-за того, что пересборка не удалась. Обычно это происходит при фрагментации (фрагментации) и повторной сборке (пересборке) пакетов.
Увеличиватьбуфер фрагментации
изразмер Может Предложите большеизпространство приходиткэши Реорганизация осколков。проходитьнастраиватьвсе net.ipv4.ipfrag_high_thresh
и net.ipv4.ipfrag_low_thresh
женьшеньчислоизценить Приходить Увеличиватьбуферизразмер。
Обычно используется Другие параметры ядра, связанные с сетью(нуждаться Исправлять):
┌──[root@liruilongs.github.io]-[~]
└─$ cat /proc/sys/net/ipv4/tcp_syn_retries # При установке TCP-соединения Ядро пытается установить максимальное количество синхроподключений. Рекомендуется изменить его на для. 3 раза
6
┌──[root@liruilongs.github.io]-[~]
└─$ cat /proc/sys/net/ipv4/tcp_synack_retries # При установке TCP-соединения Ядро пытается установить максимальное количество Synack-соединений. Рекомендуется изменить его на для. 3 Второсортный
5
┌──[root@liruilongs.github.io]-[~]
└─$ cat /proc/sys/net/ipv4/tcp_tw_reuse # (Позволяет освободить TIME-WAIT и повторно использовать его для новых TCP-соединений. Значение по умолчанию закрыто)
2
┌──[root@liruilongs.github.io]-[~]
└─$ cat /proc/sys/net/ipv4/tcp_keepalive_time # Последний Второсортныйпередача инфекцииданныеназад多久,Компьютер отправляет пакет обнаружения активности.,максимум Держатьсоединять Второйчисло
7200
┌──[root@liruilongs.github.io]-[~]
└─$ cat /proc/sys/net/ipv4/tcp_fin_timeout # Когда TCP-соединение закрыто, дождитесь пакета FIN в течение тайм-аута, при настройке в течение 60 секунд, и ожидание-2 соединения может быть быстро прекращено после изменения.
60
┌──[root@liruilongs.github.io]-[~]
└─$ cat /proc/sys/net/ipv4/tcp_syncookies # Включить ли TCP SYN Файлы cookie, если они ранее были настроеныдля1 (включены), предотвращают DoS-атаки.
1
┌──[root@liruilongs.github.io]-[~]
└─$ cat /proc/sys/net/ipv4/tcp_window_scaling # Включить ли TCPмасштаб окна,когда прежняя настройкадля1 (включена) (опция расширения окна увеличивает определение TCP из окна с 16Кусочек до 32Кусочек,Больше размера окна,Параметр value является логическим значением.,0выключено или1открыть)TCPОкно в основном используется для контроля скорости потока.
1
┌──[root@liruilongs.github.io]-[~]
└─$ cat /proc/sys/net/ipv4/ip_local_port_range # TCP или UDP могут выбрать локальный порт, подключить удаленный порт через целевой порт, при настройке для 32768 - 60999.
32768 60999
Все вышеперечисленные изменения конфигурации являются временными операциями, и параметры Ядро должны быть изменены навсегда. Записать существующий файл конфигурации /etc/sysctl.conf
Пакеты данных, передаваемые по сети, обычно содержат: заголовок и полезную нагрузку, один типичный из TCP/IP Заголовок пакета данных будет содержать информацию заголовка Ethernet, IP Информация в заголовке TCP информация заголовка.
Иметь Эти заголовки содержатся в существующемсетьиспользуиз Максимальный размер передачи (MTU).,одининдивидуальныйданные Сумкаизмаксимумразмер。
Например,использовать TCP соединятьиспользовать 52 Байты заголовка протокола. по умолчанию MTU для 1500 байт, что почти полностью компенсирует потерю общей емкости 3.5%。
иметь Один из способов — изменить протокол связи, например TCP изменятьдля UDP, информация заголовка будет взята из 52 Байты становятся 28 Байты (для 1500 в пакетном режиме, 1,9% издержек), но UDP Не обязательно подходит для всех предприятий. Другой способ — увеличить MTU из размера, будет MTU Изменить для выхода за рамки стандартного 1500 Байты, называемые Jumbo Рамки). Для изменения больших кадров необходимо, чтобы все аппаратные устройства поддерживали эту функцию.
Мы можем использовать nmcli Исправлятьсетевая картаиз MTU размер (пример ниже будет ens33 сетевая картаиз MTU Изменитьдля 9000)
nmcli con modify ens33 802-3-ethernet.mtu 9000
если требуется модификация MTU размера, вам необходимо сначала подтвердить, поддерживают ли следующие устройства большие кадры (но не только эти устройства):
Как правило, официальная рекомендация — определять MTU гигантского кадра в 9000 байт (байт), однако устройство поддерживает и данные большего кадра.
увеличить рамкуразмеризвыгодасуществовать В,Уменьшено количество пакетов данных в сети.,Снижены дополнительные накладные расходы на обработку заголовков сетевых устройств (может значительно повысить производительность).
Но недостаток в том,,Джамбо-кадры еще не стандартизированы.,еслииспользоватьдругойиз MTU Может привести к несовместимости некоторых устройств с традиционным Ethernet. MTU Все устройства с ним совместимы.
© Авторские права на содержание ссылочной ссылки в этой статье принадлежат оригинальному автору. Если есть какие-либо нарушения, пожалуйста, сообщите нам. :)
<Rh442 Конспекты лекций>
https://zhuanlan.zhihu.com/p/502027581?utm_id=0
© liruilonger@gmail.com, 2018–2023. Все права сохранены. Attribution-NonCommercial-ShareAlike (CC BY-NC-SA 4.0).