ГОСТ VPN Overhead - Блог Александра Веселова

ГОСТ VPN Overhead

Откуда накладные расходы?

Накладные расходы (overhead) в VPN можно условно разделить на две части:

  • Туннелирование трафика – добавление дополнительных заголовков к пакету, необходимое для сокрытия адресации защищаемых объектов и «проброса» других протоколов,
  • Шифрование – информация, необходимая для криптографических преобразований.

Величина накладных расходов очень важна, так как увеличение размера пакетов может привести к фрагментации трафика во внешней сети. Фрагментация снижает производительность, а для некоторых сервисов — недопустима в принципе.

Зная overhead заранее, можно уменьшить MTU в локальной сети или, наоборот, увеличить в канале связи. Это позволит избежать проблем с фрагментацией.

Рассмотрим величину накладных расходов на примере продуктов С-Терра, Континент, ViPNet.

С-Терра

В продуктах С-Терра используется стандартный IPSec, но с ГОСТ алгоритмами. Расчет overhead не сложный, можно воспользоваться зарубежными ресурсами (например, у Cisco есть калькулятор), но сделать поправку на российские криптоалгоритмы.

Подробная заметка про overhead в С-Терра уже есть в блоге. В ней рассматривался только ГОСТ28147 (ESP_GOST-4M-IMIT). Постепенный переход на ГОСТ Р 34.12/13-2015 вносит небольшие коррективы:

Криптографическое преобразованиеHeaderTrailerICVESP
Итого
ГОСТ28147 (IMIT)162-9422-29
ГОСТ Р 34.12/13-2015 Кузнечик MGM162-171230-45
ГОСТ Р 34.12/13-2015 Магма MGM162-9826-33

Также стоит отметить, что есть возможность дополнительной инкапсуляции в http. Применяется в основном для С-Терра Клиент, чтобы обойти запрет пропуска ESP и UDP500/4500 на промежуточном оборудовании. Дополнительно +135 байт.

Наиболее популярные случаи:

  • L3 VPN через интернет (туннельный режим, ГОСТ28147 IMIT, NAT) — 50-57 байт.
  • L2 VPN 10G через выделенный канал (туннельный режим, ГОСТ Р 34.12/13-2015 Кузнечик MGM, без NAT) — 86-101 байт.

Континент

Информация про overhead в документации Континента весьма скудная, декларируются следующие цифры:

  • L3 52 байта,
  • L2 56 байт.

Сначала подумал, что это ошибка — разница минимальная, всего 4 байта. Но есть запись вебинара, в котором информация подтверждается и раскрыты подробности по размеру конкретных заголовков.

РежимЗаголовок IPЗаголовок UDPКриптозаголовокДанные
L320824Шифрованный пакет
L220828Шифрованный фрейм

На сетевом уровне действительно получается 52 байта.

А вот с канальным есть нюансы. Обратите внимание, что в поле данных находится не пакет, а фрейм целиком. Соответственно, для пользователя дополнительные накладные расходы составят как минимум 14 байт исходного ethernet заголовка. К другим «допам» еще вернемся в конце заметки.

Итого для L2 получается 70 байт.

Континент АП (клиент для пользовательских устройств) — отдельная история, используется инкапсуляция в TCP (порт 443), overhead составляет до 49 байт. 

ViPNet

Подробности по работе протокола IPlir нужно собирать по крупицам: что-то есть в документации, что-то в статьях на сайте. После стандартизации в ТК26 описание протокола в виде рекомендаций по стандартизации доступно публично — Р 1323565.1.034-2020 «Информационная технология. Криптографическая защита информации. Протокол безопасности сетевого уровня», но насколько оно соблюдается в продуктах ViPNet — известно только производителю.

Для туннелирования используется протокол IP/241. Такая инкапсуляция применяется, если устройства находятся в одном широковещательном домене, например, два VPN-клиента в рамках одной подсети. Если же между узлами ViPNet есть устройства сетевого уровня, то происходит инкапсуляция в IP и дополнительно в UDP (по умолчанию порт 55777). Если по UDP установить связь не удаётся, то вместо него используется TCP (по умолчанию порт 80), обычно это актуально для ViPNet Client.

Протокол IPlir может работать в трех режимах – туннельный, транспортный и легкий туннель.

  • Туннельный – шифрование исходного IP-пакета целиком,
  • Транспортный – добавление заголовка IPlir после заголовка IP исходного пакета,
  • Легкий туннель – аналог транспортного, но с небольшими изменениями внутри протокола IPlir , касающихся поддерживаемой версионности.

Возможности настройки у пользователя нет, фактически всегда используется туннельный.

Размер заголовка IPlir составляет максимум 57 байт.

Дополнительные накладные расходы режима L2VPN (вендорское название — L2overIP) составляют 36 байт. Из них 22 байт — инкапсуляция фреймов в EtherIP. А вот куда делись остальные, мне выяснить не удалось (если знаете — напишите в комментариях). Так как фрейм перехватывается целиком, то традиционно добавляем в overhead исходный ethernet заголовок +14 байт.

Наиболее распространённые случаи:

  • L3 VPN через интернет (UDP не запрещен) — 65 байт.
  • L2 VPN через выделенный канал — 93 байт.

L2VPN

Обратите внимание, что в L2 режиме фреймы перехватываются целиком независимо от вендора. Поэтому в overhead включен исходный ethernet заголовок без FCS. Если используются дополнительные протоколы, то overhead увеличивается на соответствующий размер заголовка, например:

  • VLAN +4 байта,
  • MPLS +4 байта.

Важно не забывать об этом при расчете общего overhead.

Калькулятор

В ближайшее время планирую переложить информацию из статьи в калькулятор на сайте, с помощью которого можно легко посчитать overhead в различных ситуациях.

Поделиться:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *