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

Производительность L2TP

Добавлено: 14 ноя 2024, 00:39
Chewie
Всем привет! Помогите, пожалуйста, дилетанту разобраться с особенностями L2TP туннелей на оборудовании MikroTik.

Я пытаюсь организовать туннель между 2-мя филиалами на базе MikroTik RB1100AHx4. В качестве туннеля была выбрана технология L2TP.

Цель: туннель с шириной канала в диапазоне 600-700 МБ/с.

Для испытаний возможностей и работоспособности был собран тестовый стенд на коленке с реальными железками: Компьютер_1 <---> MikroTik_RB1100AHx4_1 <---> MikroTik_RB1100AHx4_2 <---> Компьютер_2
Настройка туннеля выполнялась самая базовая (по конфигам видно :-):), чисто чтобы был «коннект»
Коммутация выполнена 4-х парными патч-кордами
На маршрутизаторах нет ни filter rules, ни Nat
Версия routerOS на оборудовании: 6.49.17

Испытания проводились следующим образом: на Компьютер_1 запускалась утилита iperf3 как сервер, а на Компьютер_2 как клиент (специально не стал использовать утилиту Bandwidth Test на самих микротиках, чтобы не грузить процессор)

Конфиг сервера:

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

/ppp profile
add change-tcp-mss=yes local-address=172.16.30.1 name=test remote-address=172.16.30.2 use-compression=no use-encryption=\
    required
/interface l2tp-server server
set authentication=mschap2 default-profile=test enabled=yes ipsec-secret=12345 use-ipsec=required
/ppp secret
add name=user1 password=12345 profile=test service=l2tp
Конфиг клиента:

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

/interface l2tp-client
add allow=mschap2 connect-to=192.168.5.1 ipsec-secret=12345 name=l2tp-ipsec password=12345 use-ipsec=yes user=user1

Результаты оказались следующими:
- L2TP туннель без шифрования: ~910 MB/s
- L2TP туннель c шифрованием (MPPE128 stateless): ~410 MB/s
- L2TP туннель с IPsec (cbc(aes) + hmac(sha1)): ~450 MB/s

При этом загрузка CPU во время тестирования была примерно следующей:
- L2TP туннель без шифрования:

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

1) MikroTik (L2TP Server)
 # CPU                                                                                         LOAD         IRQ        DISK
 0 cpu0                                                                                          0%          0%          0%
 1 cpu1                                                                                         62%         60%          0%
 2 cpu2                                                                                          2%          0%          0%
 3 cpu3                                                                                          1%          0%          0%

2) MikroTik (L2TP Client)
 # CPU                                                                                         LOAD         IRQ        DISK
 0 cpu0                                                                                          1%          0%          0%
 1 cpu1                                                                                         97%         95%          0%
 2 cpu2                                                                                          0%          0%          0%
 3 cpu3                                                                                          0%          0%          0%
- L2TP туннель c шифрованием (MPPE128 stateless):

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

1) MikroTik (L2TP Server)
 # CPU                                                                                         LOAD         IRQ        DISK
 0 cpu0                                                                                          0%          0%          0%
 1 cpu1                                                                                          0%          0%          0%
 2 cpu2                                                                                         63%         63%          0%
 3 cpu3                                                                                          2%          0%          0%

2) MikroTik (L2TP Client)
 # CPU                                                                                         LOAD         IRQ        DISK
 0 cpu0                                                                                          0%          0%          0%
 1 cpu1                                                                                         67%         67%          0%
 2 cpu2                                                                                          1%          0%          0%
 3 cpu3                                                                                          3%          1%          0%
- L2TP туннель с IPsec (cbc(aes) + hmac(sha1)):

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

1) MikroTik (L2TP Server)
 # CPU                                                                                         LOAD         IRQ        DISK
 0 cpu0                                                                                         98%         97%          0%
 1 cpu1                                                                                          0%          0%          0%
 2 cpu2                                                                                          0%          0%          0%
 3 cpu3                                                                                          0%          0%          0

2) MikroTik (L2TP Client)
 # CPU                                                                                         LOAD         IRQ        DISK
 0 cpu0                                                                                         21%         21%          0%
 1 cpu1                                                                                         63%         61%          0%
 2 cpu2                                                                                          1%          1%          0%
 3 cpu3                                                                                          3%          0%          0%

Результаты немного сбили с толку, а именно не совсем понятно:
1) как L2TP туннель с IPsec (cbc(aes) + hmac(sha1)) имеет немного большую пропускную способность чем L2TP туннель c шифрованием (MPPE128 stateless)
2) почему при включении шифрования не используется весь потенциал CPU, т.к. его примерная загрузка не превышает 30% (как правило загружено только одно ядро)

Ожидания были выше, чем получилось на деле и основывались они на приведённых на оф. сайте данных - https://mikrotik.com/product/rb1100ahx4 ... estresults. (понимаю, что результаты приведённые на сайте приблизительные, поэтому рассчитывал хотя бы на 2/3 от заявленного)

Собственно, зачем вся эта простыня - помогите понять, это я допустил где-то ошибку (в недостаточных настройках / способе измерения / или ещё что-то не учёл) или это реальный предел для данной модели маршрутизатора?

Re: Производительность L2TP

Добавлено: 14 ноя 2024, 07:26
gmx
Постараюсь ответить, хотя бы частично:
Ответ на вопрос 1:
Это все зависит, скорее, не от типов и сложности шифрования, а от реализации в самой ROS, надо помнить, что микротик - это софтовый роутер.
Ответ на вопрос 2:
Все вытекает из ответа на вопрос 1. Микротик не многозадачная система. Нагрузку по ядрам распределить невозможно. Это все зашито производителем. Они так решили и выше этого не прыгнешь.

Ещё раз, микротик - это ПО. И все, что он делает обрабатывается процессором. Да, есть некоторые возможности задействовать аппаратные возможности коммутации, но грань (или граница) перехода с аппаратной на софтовую коммутацию пакетов очень зыбкая. Можно очень долго и упорно создавать эффективный конфиг с аппаратной коммутацией, а затем добавить очередное правило фаерволла и всё, аппаратная коммутация отличится и все опять польется через процессор. Можно даже и не осознавать, что именно это правило привело к отключению железной коммутации. Отсюда вывод: всегда считайте микротик софтовым роутером, чтобы задействовать все его возможности, но и понимать его ограничения.

Далее: в целом ваши цифры офигительные. И то, что вы получили в тестах - это очень хорошо. И в реальной эксплуатации будет ещё ниже. Добавятся дополнительные настройки, каналы провайдера и так далее...
Добавятся проблемы с MTU и MSS, читай фрагментация пакетов, что также приведет к снижению производительности канала.


Что делать:
1. Нужно более производительное железо: ваш выбор x86 и ROS CHR.
2. Другой тип туннеля: попробуйте туннели IP-IP/GRE. Но надо помнить, что в реальной эксплуатации вам потребуются фиксированные ip с обеих сторон туннеля.
2а. Обновите ROS до версии 7. Там есть wireguard. Он очень быстрый, он работает на уровне ядра системы и фиксированный ip нужен только один. На сеголня, на микротик, это, наверное, наилучший выбор.

И последнее. Если вам действительно нужно шифрование данных в туннеле и данные секретны, то нужно с обеих сторон ставить криптошлюзы.

Re: Производительность L2TP

Добавлено: 28 ноя 2024, 11:37
Chewie
gmx писал(а): 14 ноя 2024, 07:26 Постараюсь ответить, хотя бы частично:
Ответ на вопрос 1:
Это все зависит, скорее, не от типов и сложности шифрования, а от реализации в самой ROS, надо помнить, что микротик - это софтовый роутер.
Ответ на вопрос 2:
Все вытекает из ответа на вопрос 1. Микротик не многозадачная система. Нагрузку по ядрам распределить невозможно. Это все зашито производителем. Они так решили и выше этого не прыгнешь.

Ещё раз, микротик - это ПО. И все, что он делает обрабатывается процессором. Да, есть некоторые возможности задействовать аппаратные возможности коммутации, но грань (или граница) перехода с аппаратной на софтовую коммутацию пакетов очень зыбкая. Можно очень долго и упорно создавать эффективный конфиг с аппаратной коммутацией, а затем добавить очередное правило фаерволла и всё, аппаратная коммутация отличится и все опять польется через процессор. Можно даже и не осознавать, что именно это правило привело к отключению железной коммутации. Отсюда вывод: всегда считайте микротик софтовым роутером, чтобы задействовать все его возможности, но и понимать его ограничения.

Далее: в целом ваши цифры офигительные. И то, что вы получили в тестах - это очень хорошо. И в реальной эксплуатации будет ещё ниже. Добавятся дополнительные настройки, каналы провайдера и так далее...
Добавятся проблемы с MTU и MSS, читай фрагментация пакетов, что также приведет к снижению производительности канала.


Что делать:
1. Нужно более производительное железо: ваш выбор x86 и ROS CHR.
2. Другой тип туннеля: попробуйте туннели IP-IP/GRE. Но надо помнить, что в реальной эксплуатации вам потребуются фиксированные ip с обеих сторон туннеля.
2а. Обновите ROS до версии 7. Там есть wireguard. Он очень быстрый, он работает на уровне ядра системы и фиксированный ip нужен только один. На сеголня, на микротик, это, наверное, наилучший выбор.

И последнее. Если вам действительно нужно шифрование данных в туннеле и данные секретны, то нужно с обеих сторон ставить криптошлюзы.
Большое спасибо за развёрнутый ответ. Было принято решение обновиться до routerOS 7 и попробовать WireGuard, слишком много про него хороших отзывов :-):