Плохой IPsec по производительности GRE
Я установил соединение IPsec через GRE с удаленным хостом, оба на основе NetBSD 6.1. "Клиент" подключен к Интернету через оптоволоконный канал 400 Мбит / с. "Сервер" расположен в сети 10 Гбит / с. Обе машины имеют сетевые адаптеры 1 Гбит / с, которые ведут себя отлично, что означает, что они оба достигают предела скорости соединения при передаче данных за пределы туннеля IPsec. При передаче через туннель скорость падает в 5-10 раз:
прямая связь:
/dev/null 27%[====> ] 503.19M 45.3MB/s eta 83s
IPsec соединение:
/dev/null 2%[ ] 47.76M 6.05MB/s eta 5m 3s
Туннель настроен так:
На сервере, который является NetBSD domU и работает на Debian / amd64 dom0:
$ cat /etc/ifconfig.xennet0 # интерфейс сервера вверх инет 192.168.1.2 маска сети 255.255.255.0 inet 172.16.1.1 маска сети 0xfffffffc псевдоним $ cat /etc/ifconfig.gre0 Создайте туннель 172.16.1.1 172.16.1.2 вверх inet 172.16.1.5 172.16.1.6 маска сети 255.255.255.252
Трафик IPsec пересылается с общедоступного IP-адреса dom0 на domU xennet0
interfacethrough iptables
Правила NAT:
-A ПРЕДУПРЕЖДЕНИЕ -i eth0 -p udp -m udp --dport 500 -j DNAT - к месту назначения 192.168.1.2:500 -A PREROUTING -i eth0 -p esp -j DNAT - к месту назначения 192.168.1.2 -A ПРЕДУПРЕЖДЕНИЕ -i eth0 -p ah -j DNAT - к месту назначения 192.168.1.2
На клиенте:
$ cat /etc/ifconfig.vlan8 # открытый интерфейс клиента Создайте vlan 8 vlanif re0!dhcpcd -i $int inet 172.16.1.2 маска сети 0xfffffffc псевдоним $ cat /etc/ifconfig.gre1 Создайте туннель 172.16.1.2 172.16.1.1 вверх inet 172.16.1.6 172.16.1.5 маска сети 255.255.255.252
На racoon
Я пробовал различные комбинации алгоритмов хеширования и шифрования, даже enc_null
, но на самом деле ничего не меняется, передача по-прежнему застряла на максимуме 6 МБ / с.
remote node.public.ip { exchange_mode main; время жизни 28800 секунд; предложение { encryption_algorithm blowfish; hash_algorithm sha1; метод аутентификации pre_shared_key; dh_group 2; } Generate_policy off; } адрес sainfo 172.16.1.1/30 любой адрес 172.16.1.2/30 любой { pfs_group 2; encryption_algorithm blowfish; аутентификационный алгоритм hmac_sha1; алгоритм сжатия_создание; время жизни 3600 секунд; }
На клиенте:
удаленный офис.public.ip { exchange_mode main; время жизни 28800 секунд; предложение { encryption_algorithm blowfish; hash_algorithm sha1; метод аутентификации pre_shared_key; dh_group 2; } Generate_policy off; } адрес sainfo 172.16.1.2/30 любой адрес 172.16.1.1/30 любой { pfs_group 2; encryption_algorithm blowfish; аутентификационный алгоритм hmac_sha1; алгоритм сжатия_создание; время жизни 3600 секунд; }
Туннель устанавливается без проблем, единственная проблема здесь - сброс передачи. Опять же, при передаче с / на сервер с / на клиент без туннеля скорость является оптимальной, падение происходит только через IPsec.
Обе машины - это процессоры на базе Intel, работающие на частоте 2 + ГГц, много памяти и очень мало процессорного времени, потребляемого чем-либо еще, кроме пересылки / NAT.
Кто-нибудь был свидетелем такого поведения? Есть идеи, где искать дальше?
Спасибо,
1 ответ
Если вы не настроили MTU, у вас могут возникнуть проблемы после фрагментации (фрагментация возникает после шифрования), что хорошо объясняется в этой документации: http://www.cisco.com/c/en/us/td/docs/interfaces_modules/services_modules/vspa/configuration/guide/ivmsw_book/ivmvpnb.html
Вы должны попытаться уменьшить MTU внутри туннеля на 82 байта (заголовки GRE + IPSec).