Пытаясь найти источник проблемы с высокой степенью мягкости в настройке OpenVPN, я запустил две виртуальные машины (A & B) на облачном хосте в одном месте. Я также настроил частную сеть на них обоих. Затем я установил 2 IPIP-туннеля между этими двумя виртуальными машинами, используя как открытый (eth0), так и частный интерфейсы (eth1).
A.A.A.A = A's public IP on eth0
B.B.B.B = B's public IP on eth0
a.a.a.a = A's private IP on eth1 (provided by host for private networking)
b.b.b.b = B's private IP on eth1 (provided by host for private networking)
Туннели были установлены так:
ip tunnel add pub0 mode ipip local A.A.A.A remote B.B.B.B ttl 255
ip addr add 10.0.1.1/30 dev pub0
ip link set pub0 up
ip tunnel add pub0 mode ipip local B.B.B.B remote A.A.A.A ttl 255
ip addr add 10.0.1.2/30 dev pub0
ip link set pub0 up
ip tunnel add pvt0 mode ipip local a.a.a.a remote b.b.b.b ttl 255
ip addr add 10.0.2.1/30 dev pvt0
ip link set pvt0 up
ip tunnel add pvt0 mode ipip local b.b.b.b remote a.a.a.a ttl 255
ip addr add 10.0.2.2/30 dev pvt0
ip link set pvt0 up
A & B связаны 4 способами:
A.A.A.A <=> B.B.B.B (public IPs on eth0)
a.a.a.a <=> b.b.b.b (private IPs on eth1 provided by host)
10.0.1.1 <=> 10.0.1.2 (ipip tunnel via eth0)
10.0.2.1 <=> 10.0.2.2 (ipip tunnel via eth1)
Затем я выполнил тесты iperf3 между ними, удерживая A в качестве сервера и B в качестве клиента, одновременно отслеживая значение si (softirq) сверху A:
A.A.A.A <=> B.B.B.B = normal si between 0-4% @ ~2Gbits/sec throughput
b.b.b.b <=> b.b.b.b = normal si between 0-4% @ ~2Gbits/sec throughput
10.0.1.1 <=> 10.0.1.2 = si shoots to 30-45% @ ~2Gbits/sec throughput
10.0.2.1 <=> 10.0.2.2 = normal si between 0-3% @ ~500Mbits/sec throughput
Я заинтригован 3-м и 4-м тестами. Почему загрузка ЦП достигает такого уровня, когда данные принимаются по pub0 (туннель ipip через eth0), а не по pvt0 (туннель ipip через eth1), и это можно решить? Я не понимаю, почему пропускная способность уменьшилась на 1/4 при выполнении теста на туннеле, установленном через частную сеть (eth1), по сравнению с pub0. Это может быть что-то, что связано с хозяином. Я больше обеспокоен этой высокой проблемой.
Нормально ли это высокое смягчение, когда данные передаются по туннелю вместо общедоступных интерфейсов? И если это так, то почему это не произошло в тесте 10.0.2.1 <=> 10.0.2.2 (pvt0), поскольку это тоже туннель ipip.