Страница 1 из 1

оптимальный размер пакета mtu для wireguard

Добавлено: 16 ноя 2024, 16:38
ya
для подбора mtu использовать команду:

mts 1472 (1500) - 68 = 1404 ( + 28 )

Код: Выделить всё

ping -c 4 -M do -s 1472 <удаленный_IP_адрес>
опытным путём до сервера, раздающего ваергард, значение mtu составило 1472, вычитаем из этого значения длину всех заголовков 68 для wireguard, таким образом заносим в ваергард значение 1404 (+28) = 1432

beeline 1432 (1460) - 68 = 1364 ( + 28 )

Код: Выделить всё

ping -c 4 -M do -s 1432 <удаленный_IP_адрес>
1364 (+ 28) = 1392

Оптимальный размер MTU для WireGuard обычно составляет 1420–1480 байтов. Более высокое значение может привести к фрагментации пакетов, что негативно скажется на производительности сети.

Re: оптимальный размер пакета mtu для wireguard

Добавлено: 16 ноя 2024, 17:19
ya
Когда данные проходят через туннельный протокол, такой как VPN, WireGuard, GRE и т.д., они инкапсулируются внутри новых пакетов, что приводит к увеличению общего размера пакета. Это увеличение связано с добавлением заголовков туннелирования. Соответственно, чтобы избежать фрагментации пакетов, необходимо уменьшить MTU на клиентской стороне.

Рассмотрим пример с использованием WireGuard:

Исходный MTU: Предположим, что исходный MTU в сети клиента равен 1500 байт.
Добавление заголовков: При инкапсуляции данных в WireGuard добавляется заголовок UDP (8 байт), заголовок IP (20 байт) и заголовок WireGuard (40 байт). Итого дополнительные 68 байт к каждому пакету.
Таким образом, если исходный пакет имеет размер 1500 байт, то после инкапсуляции его размер станет 1568 байт. Это превысит стандартный MTU, что приведет к необходимости фрагментации.

Чтобы избежать фрагментации, MTU должен быть уменьшен на величину добавленных заголовков. В данном случае:

Новый MTU = Исходный MTU - Размер дополнительных заголовков

Новый MTU = 1500 - 68 = 1432 байт

Таким образом, для предотвращения фрагментации MTU следует установить на уровне 1432 байт или меньше.

Общие рекомендации:
Настройка MTU вручную: Если туннелирующий протокол не поддерживает автоматическое уменьшение MTU (так называемый "Path MTU Discovery"), необходимо вручную настроить MTU на стороне клиента.
Использование PMTUD: Некоторые туннельные протоколы, такие как WireGuard, поддерживают механизм Path MTU Discovery (PMTUD), который автоматически регулирует MTU для предотвращения фрагментации. В таких случаях ручная настройка может не требоваться.
Тонкая настройка: Иногда может потребоваться дополнительная тонкая настройка MTU в зависимости от особенностей конкретной сети и используемого оборудования.

Re: оптимальный размер пакета mtu для wireguard

Добавлено: 16 ноя 2024, 18:39
ya
Расчет оптимального значения MTU для протокола L2TP (в частности, при использовании xl2tpd) включает учет различных факторов, связанных с инкапсуляцией и особенностями работы самого протокола. Вот пошаговая инструкция, как опытным путем подобрать оптимальное значение MTU:

Шаг 1: Определение стандартного MTU
Обычно стандартное значение MTU в Ethernet-сетях составляет 1500 байт. Начнем с него.

Шаг 2: Учёт дополнительных заголовков
L2TP добавляет свои заголовки поверх стандартных IP и UDP заголовков. Общая длина этих заголовков составляет около 40 байт (20 байт для IP, 8 байт для UDP, 12 байт для L2TP).

Шаг 3: Расчёт начального значения
Исходя из стандартного значения MTU и длины заголовков, мы можем вычислить приблизительное значение MTU, которое должно использоваться на стороне клиента:

MTU_L2TP = MTU_Ethernet - (IP + UDP + L2TP)

MTU_L2TP = 1500 - 40 = 1460 байт

Это начальная точка для экспериментов.

Шаг 4: Проверка с помощью ping
Теперь проведем тестирование с использованием команды ping с опциями, которые запретят фрагментацию пакетов:

Код: Выделить всё

ping -c 4 -M do -s 1452 <удаленный_IP_адрес>
Здесь:

-c 4: отправляем 4 пакета;
-M do: запрещаем фрагментацию пакетов;
-s 1452: устанавливаем размер полезной нагрузки ICMP-пакета в 1452 байта (чтобы общий размер пакета составлял 1460 байт вместе с заголовками IP и ICMP).
Шаг 5: Постепенное увеличение размера полезной нагрузки
Если ping проходит успешно, постепенно увеличивайте размер полезной нагрузки, пока не получите сообщение об ошибке "Packet needs to be fragmented but DF set". Это будет означать, что текущий размер пакета слишком велик для данного маршрута.

Re: оптимальный размер пакета mtu для wireguard

Добавлено: 16 ноя 2024, 19:37
ya
OpenConnect — это клиентское программное обеспечение для подключения к VPN-сервисам, использующим протокол Cisco AnyConnect SSL VPN. Оптимизация MTU для OpenConnect важна для повышения эффективности передачи данных и снижения вероятности фрагментации пакетов.

Шаг 1: Понимание стандартной структуры пакетов
При подключении через OpenConnect используются стандартные IP-заголовки, а также дополнительные заголовки DTLS (Datagram Transport Layer Security) и ESP (Encapsulating Security Payload) для шифрования трафика. Эти заголовки добавляют дополнительный объем к каждому пакету.

Шаг 2: Рассчитываем базовое значение MTU
Стандартное значение MTU в Ethernet-сети составляет 1500 байт. К этому значению прибавляются размеры заголовков:

Заголовок IP: 20 байт
Заголовок UDP: 8 байт
Заголовок DTLS: ~24 байта
Заголовок ESP: ~36 байт
Итого дополнительные заголовки составляют приблизительно 88 байт.

Шаг 3: Подбор оптимального значения MTU
Для того чтобы избежать фрагментации, нам нужно уменьшить MTU на величину дополнительных заголовков. Таким образом, начальное значение MTU будет равно:

MTU_OpenConnect = MTU_Ethernet - (IP + UDP + DTLS + ESP)

MTU_OpenConnect = 1500 - 88 = 1412 байт

Шаг 4: Тестирование с помощью ping
Для проверки правильности выбранного значения MTU можно воспользоваться командой ping с опцией запрета фрагментации:

Код: Выделить всё

ping -c 4 -M do -s 1384 <удаленный_IP_адрес>
Здесь:

-c 4: отправляем 4 пакета;
-M do: запрещаем фрагментацию пакетов;
-s 1384: устанавливаем размер полезной нагрузки ICMP-пакета в 1384 байта (чтобы общий размер пакета составлял 1412 байт вместе с заголовками IP и ICMP).
Шаг 5: Корректировка значения MTU
Если ping проходит успешно, попробуйте увеличить размер полезной нагрузки, пока не получите сообщение об ошибке "Packet needs to be fragmented but DF set". Это будет означать, что текущий размер пакета слишком велик для данного маршрута.

Заключение
Оптимальное значение MTU для OpenConnect обычно находится в диапазоне 1400–1420 байт. Конкретное значение зависит от особенностей вашей сети и параметров подключения. Опытным путем можно точно подобрать значение, обеспечивающее максимальную эффективность передачи данных без фрагментации пакетов.

Re: оптимальный размер пакета mtu для wireguard

Добавлено: 16 ноя 2024, 20:01
ya
Стандартный размер заголовка
Стандартный размер TCP-заголовка без опций составляет 20 байт. Это минимальное значение, когда поле "Смещение данных" указывает на отсутствие опций.

Максимальный размер заголовка
Максимальный размер TCP-заголовка с учетом всех возможных опций достигает 60 байт. Поле "Опции" может занимать до 40 байт.

Re: оптимальный размер пакета mtu для wireguard

Добавлено: 29 ноя 2024, 03:31
ya