Назад | Перейти на главную страницу

Использование openvswitch с mpls и tcp

Я занимаюсь исследованиями и разработками в SDN. В этом случае мы используем маркировку MPLS и Open vSwitch в качестве программных переключателей. Мы используем 2 серверных узла с ovs 2.6.0 с загруженными модулями ядра и 2 хоста.

Они напрямую подключаются через соединения 1 Gigabit Ethernet, время rtt составляет около 1 мс, а в случае первого пакета - менее 3 мс (с использованием утилиты ping). Я использую Iperf3 для проведения тестов. Первый тест - это производительность, достигнутая без использования маркировки mpls, а второй тест - использование маркировки mpls. MTU настроен на отсутствие фрагментации, поэтому проблема не в этом. Я попытался настроить окно перегрузки и другие параметры, такие как используемый алгоритм TCP.

mar jul  4 12:21:09 CEST 2017
Connecting to host 192.168.20.2, port 5201
[  4] local 192.168.20.1 port 43526 connected to 192.168.20.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   112 MBytes   943 Mbits/sec    0    450 KBytes
[  4]   1.00-2.00   sec   112 MBytes   937 Mbits/sec    0    516 KBytes
[  4]   2.00-3.00   sec   112 MBytes   938 Mbits/sec    0    571 KBytes
[  4]   3.00-4.00   sec   112 MBytes   937 Mbits/sec    0    625 KBytes
[  4]   4.00-5.00   sec   112 MBytes   943 Mbits/sec    0    633 KBytes
[  4]   5.00-6.00   sec   111 MBytes   933 Mbits/sec    0    633 KBytes
[  4]   6.00-7.00   sec   111 MBytes   933 Mbits/sec    0    664 KBytes
[  4]   7.00-8.00   sec   112 MBytes   944 Mbits/sec    0    664 KBytes
[  4]   8.00-9.00   sec   111 MBytes   933 Mbits/sec    0    697 KBytes
[  4]   9.00-9.16   sec  18.8 MBytes   977 Mbits/sec    0    697 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-9.16   sec  1.00 GBytes   939 Mbits/sec    0             sender
[  4]   0.00-9.16   sec  1022 MBytes   935 Mbits/sec                  receiver

iperf Done.
<----------->
mar jul  4 12:40:10 CEST 2017
Connecting to host 192.168.20.2, port 5201
[  4] local 192.168.20.1 port 43530 connected to 192.168.20.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   203 KBytes  1.66 Mbits/sec   57   2.82 KBytes
[  4]   1.00-2.00   sec   398 KBytes  3.26 Mbits/sec  124   2.82 KBytes
[  4]   2.00-3.00   sec   400 KBytes  3.28 Mbits/sec  124   2.82 KBytes
[  4]   3.00-4.00   sec   319 KBytes  2.61 Mbits/sec  124   2.82 KBytes
[  4]   4.00-5.00   sec   398 KBytes  3.26 Mbits/sec  126   2.82 KBytes
[  4]   5.00-6.00   sec   395 KBytes  3.24 Mbits/sec  124   2.82 KBytes
[  4]   6.00-7.00   sec   398 KBytes  3.26 Mbits/sec  126   2.82 KBytes
[  4]   7.00-8.00   sec   324 KBytes  2.66 Mbits/sec  124   2.82 KBytes
[  4]   8.00-9.00   sec   398 KBytes  3.26 Mbits/sec  124   2.82 KBytes
[  4]   9.00-10.00  sec   400 KBytes  3.28 Mbits/sec  126   2.82 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  3.55 MBytes  2.98 Mbits/sec  1179             sender
[  4]   0.00-10.00  sec  3.42 MBytes  2.87 Mbits/sec                  receiver

Я знаю, что при использовании MPLS и ovs есть проблемы, но есть некоторые странные факты в этом случае:

Есть ли кто-нибудь, кто знает, как решить эту проблему?

ПД: Извините за возможные опечатки в английском.

Проведя небольшое исследование, мне удалось выделить проблему и решить ее. На сетевом адаптере были активированы некоторые параметры контрольной суммы и разгрузки, что заставляло пакет перемещаться в пользовательское пространство, я предполагаю, что проблема заключалась в инкапсуляции.

С помощью ethtool Утилита мы можем отключить эту разгрузку. В этом случае я использовал (как root):

ethtool -K <iface> gso off && ethtool -K <iface> tso off && ethtool -K <iface> gro off

Отключить разгрузку сегментации TCP (TSO), разгрузку общей сегментации (GSO) и разгрузку общего приема (GRO). Также отключены контрольные суммы rx и tx.

источники: Источник 1 Источник 2

Надеюсь, это кому-то поможет, когда придет время.