Шифрование и туннелирование трафика влечет за собой накладные расходы. При одном и том же MTU канала связи, в случае использования шифрования размер полезных передаваемых данных меньше, чем без шифрования. Соответственно, в некоторых ситуациях при включении шифрования возможна фрагментация пакетов, которая в свою очередь приводит к снижению производительности и некорректной работе части сервисов.
Самый распространенный способ решения этой проблемы — изменение величины MTU в локальной сети или канале связи. Необходимо уменьшить MTU локальной сети и/или увеличить MTU в канале связи, таким образом, что они отличались как минимум на величину накладных расходов (естественно MTU канала должно быть больше).
Изменение MTU из-за overhead
В некоторых случаях при проектировании VPN сети на накладные расходы с запасом закладывают 100 байт. Но большой запас может обходиться очень дорого — за повышение MTU региональные провайдеры порой просят баснословные деньги, а понижать MTU локальной сети тоже не всегда возможно. Поэтому важно понимать точное значение накладных расходов.
Рассмотрим расчет для продуктов С-Терра с применением ГОСТ-алгоритмов. Часть информации верна и для других продуктов, реализованных на базе IPsec. Но накладные расходы, связанные именно с криптографией отличаются в зависимости от алгоритма и его реализации.
Параметры, влияющие на величину overhead:
Режим работы IPsec (туннельный или транспортный);
На каком уровне требуется шифровать данные (на L2 или L3);
Осуществляется ли трансляция сетевых адресов (NAT);
Набор алгоритмов или преобразований, на основе которых обеспечивается конфиденциальность и целостность.
Рассмотрим следующие случаи:
Туннельный режим с шифрованием на уровне L3 без использования NAT;
Туннельный режим с шифрованием на уровне L3 и с использованием NAT;
Транспортный режим с шифрованием на уровне L2 без использования NAT.
Во всех случаях в качестве набора алгоритмов используется комплексное преобразование, обеспечивающее конфиденциальность и имитозащиту информации на основе ГОСТ28147 (ESP_GOST-4M-IMIT). Для продуктов С-Терра это рекомендованный и наиболее производительный набор преобразований. Подробнее о нем на русскоязычном и англоязычном ресурсах.
Туннельный режим с шифрованием на уровне L3 без использования NAT
Туннельный режим с шифрованием на уровне L3 без использования NAT
Сначала идет официальный заголовок ESP:
SPI (Security Parameters Index) — 4 байта
SN (Sequence Number) — 4 байта
Потом скрытая часть заголовка:
IVRandom — 4 байта
IVCounter — 4 байта
Далее непосредственно зашифрованный исходный пакет.
После этого трейлер — «хвостовик». Выравнивание производится по границе 8 байтов после добавления двух однобайтовых полей — PadLength и NextHeader.
Худший случай — если было 7 байтов, то добавится ещё 2+7.
Лучший случай — если было 6 байтов, то добавится только 2.
Получается от 2 до 9 байтов переменного дополнения.
Потом отдельно добавляется 4 байта ICV (Integrity Check Value).
Итого:
Дополнение 1 фиксированное в начале = 16 байтов.
Дополнение 2 переменное в конце = от 6 до 13 байтов.
При использовании туннельного режима L3 , дополнительно добавляется IP заголовок 20 байт. Суммарный overhead составляет 42-49 байт.
Туннельный режим с шифрованием на уровне L3 и с использованием NAT
Туннельный режим с шифрованием на уровне L3 с использованием NAT
Аналогично первому случаю, но дополнительно добавляется 8 байт UDP заголовка.
Суммарный overhead составляет 50-57 байт.
Транспортный режим с шифрованием на уровне L2 без использования NAT
Реализация шифрования на канальном уровне для продуктов С-Терра основана на предварительном туннелирования в L3 — продукт перехватывает исходный фрейм целиком, добавляет IP и UDP заголовки. Далее трафик шифруется в транспортном режиме.
Транспортный режим с шифрованием на уровне L2 без использования NAT
Обратите внимание, что отсутствует IP заголовок туннельного режима. Но для реализации L2 добавлены UDP заголовок 8 байт и IP 20 байт (именно он будет использоваться далее в канале связи), а также Ethernet исходного фрейма — 14+4 байт. Суммарный overhead составляет 68-75 байт. Если перехватывается тегированный трафик, то в overhead попадет и метка VLAN 4 байта.
ОБНОВЛЕНО: Если в конфигурации С-Терра L2 используется параметр fragment (а он используется практически всегда), то дополнительно добавляется 4 байта. При этом суммарный overhead составляет 72-79 байт. Если перехватывается тегированный трафик, то в overhead попадет и метка VLAN 4 байта.
Возможны комбинации рассмотренных случаев и дополнительные накладные расходы (например, GRE добавляет еще 20 байт). Для других криптоалгоритмов величина ESP Trailer и ESP ICV могут отличаться, длины других заголовков фиксированы.
ОБНОВЛЕНО 18.02.2021: При использовании С-Терра L2 Ethernet FCS (4 байта) не добавляется в overhead