Низкая скорость GRE тоннеля IPSec AES CBC

Пару дней назад столкнулся с низкой производительности GRE тоннеля с IPSec шифрованием алгоритмом AES CBC. Данный алгоритм имеет аппаратную поддержку со стороны Mikrotik 1100AHx2, но по какой то причине тоннель работал не так как мне того хотелось. Давайте разбираться.

AES CBC

При использовании режима AES CBC шифрование аппаратно ускоряется, а на оборудовании имеется много ядер, которые могут делать это параллельно. Распределяя запросы на шифрование по ядрам, пакеты получают дополнительное упорядочение в зависимости от данных синхронизации. Конечным результатом является то, что пакеты поступают на сетевой интерфейс в несколько ином порядке, нежели они были отправлены первоначально.

Фактически данные изменения не должны влиять на пропускную способность сети, поскольку спецификации Интернет организованы таким образом, что можно посылать запросы на повторную передачу пакетов на свое усмотрение. Но на практике многие стеки протоколов TCP/IP были сломаны, так как слепо предполагали, что когда пакет не дошел от одного хоста до другого, то он вероятнее всего был отброшен и должны быть отправлен повторно. После чего получатель немедленно отправляем на это запрос. Таким образом, большая часть пропускной способности сети расходуется на повторную отправку пакетов.

Это дефект не маршрутизатора, а скорее конечных хостов. В этом случае проблему можно обойти, выбрав метод шифрования, который не будет аппаратно ускорен, например, AES CTR.

Counter mode AES CTR

Режим счётчика (counter mode, CTR) предполагает возврат на вход соответствующего алгоритма блочного шифрования значения некоторого счётчика, накопленного с момента старта. Режим делает из блочного шифра потоковый, то есть генерирует последовательность, к которой применяется операция XOR с текстом сообщения. Исходный текст и блок зашифрованного текста имеют один и тот же размер блока, как и основной шифр (например, AES).

Можно утверждать, что в RouterOS необходимо добавить некоторую синхронизацию, чтобы гарантировать, что когда используется аппаратное ускорение шифрования в многоядерной архитектуре, пакеты будут поступать на сетевой интерфейс маршрутизатора в нужной последовательности, чтобы в конечной системе не возникало ошибок с некорректной последовательностью пакетов. Конечно, это может снизить общую производительность системы за счет увеличения нагрузки на центральный процессор, особенно в бенчмаркинге. Производителям это не нравится, потому что бенчмаркинг – это то, что делается для сравнения своих маршрутизаторов с другими, для получения выгодных результатов.

Аппаратное ускорение AES CBC

Но одно ядро с аппаратным ускорением быстрее в 10 раз, чем одно ядро без аппаратного ускорения. И один туннель IPSec AES CBC на одном ядре со встроенными инструкциями для ускорения шифрования должен быть быстрее туннеля aes-xxx на множестве числовых ядрах!
К сожалению, команда Mikrotik не может решить эту проблему CCR на протяжении долгого времени.
Возможные причины:
1) у программистов Микротика есть более важные задачи
2) выбор процессора TILERA для RouterBoard был не самым удачным выбором

Читать далее

Низкая скорость GRE IPSec тоннеля AES CBC
Метки:    
Adblock detector