)
Функционал RoCEv2 в коммутаторах QTECH уровня ЦОД серий QSW-6900 и QSW-6700
Цель тестирования — проверить прохождение RoCEv2-трафика и оценить влияние настроек QoS на пропускную способность и задержки. Для RoCEv2 используются два класса трафика: DSCP 34 для Data RoCEv2 и DSCP 35 для Control Plane RoCEv2.
На серверах с сетевыми картами Mellanox включается доверие к DSCP, выполняется маппинг DSCP в priority 5/6 и включается PFC на priority 5/6. На коммутаторе DSCP 34 и DSCP 35 должны попадать во внутренние приоритеты 5 и 6, которые обслуживаются отдельными очередями.
1. Настройка серверов
На обоих серверах выполняется одинаковая логика настройки NIC.
mlnx_qos -i enp23s0f0np0 --trust=dscp
mlnx_qos -i enp23s0f0np0 --dscp2prio=set,34,5
mlnx_qos -i enp23s0f0np0 --dscp2prio=set,35,6
mlnx_qos -i enp23s0f0np0 --pfc=0,0,0,0,0,1,1,0
mlnx_qos -i enp23s0f0np02. Выбор GID для RoCEv2
Для perftest требуется явно указать GID index, соответствующий RoCEv2 IPv4 на VLAN101. В тестах использованы следующие индексы:
Узел | RDMA device | GID index | GID/IP | Режим |
r1 / server | mlx5_0 | 5 | ::ffff:192.168.101.101 | RoCE v2 / vlan101 |
left / client | mlx5_1 | 3 | ::ffff:192.168.101.1 | RoCE v2 / vlan101 |
Проверка доступности RDMA:
# r1
ibv_rc_pingpong -d mlx5_0 -g 5
# left
ibv_rc_pingpong -d mlx5_1 -g 3 192.168.101.1013. Фоновая нагрузка
Для проверки поведения QoS под нагрузкой с третьего сервера запускался постоянный UDP-поток в сторону принимающего сервера 192.168.101.101. Фактическая нагрузка составляла около 6 Gbit/s.
Пример команды:
iperf3 -c 192.168.101.101 -u -b 6G -P 4 -t 3600Важно: фоновый поток должен приходить в тот же egress-порт к серверу, что и RoCEv2-трафик. Иначе он не создаёт конкуренцию за egress queue и не показывает влияние QoS.
4. Настройки QoS на коммутаторе
Ниже приведён используемый профиль. Описание не привязано к конкретному синтаксису версии ПО, а объясняет назначение ключевых строк.
Команда/блок | Назначение |
mtu 10000 | Увеличение MTU для прохождения jumbo/RDMA-трафика. |
mls qos queue depth | Минимальная гарантированная глубина очереди/буфера для QoS-профиля. |
mls qos map dscp-intp 34 to 5 | Маппинг DSCP 34 во внутренний priority 5. |
mls qos map dscp-intp 35 to 6 | Маппинг DSCP 35 во внутренний priority 6. |
tail-drop-profile queue 5/6 minlimitbuff | Увеличенная гарантированная глубина буфера для lossless/RoCE-классов. |
tail-drop-profile queue 5/6 ecn enable | Включение ECN marking для очередей 5 и 6 при достижении порога. |
priority-flow-control dot1p 5/6 headroom | Резерв headroom под PFC для priority 5 и 6. |
priority-flow-control no-drop dot1p 5/6 | Включение no - drop поведения для выбранных PFC priorities . |
set-queue 5 wrr1 weight 10 | set-queue 5 wrr1 weight 10 — перевод очереди 5 в WRR1 с весом 10 для приоритетного обслуживания Data RoCEv2 относительно обычного WRR0-трафика. |
Конфигурация на коммутаторе QSW-6700 :
mtu 10000
!
mls qos queue depth 3000
mls qos map dscp-intp 34 to 5
mls qos map dscp-intp 35 to 6
!
class-map dscp34
match ip dscp 34
!
class-map dscp35
match ip dscp 35
!
policy-map IN
class dscp34
set internal-priority 5
accounting
exit
class dscp35
set internal-priority 6
accounting
exit
!
scheduling-profile 1
set-queue 5 wrr1 weight 10
!
tail-drop-wred-profile 1 queue 5 dp0 threshold 25000 probability25
tail-drop-wred-profile 1 queue 6 dp0 threshold 30000 probability25
tail-drop-profile 1 queue 5 ecn enable
tail-drop-profile 1 queue 5 ecn offset 10000
tail-drop-profile 1 queue 6 ecn enable
tail-drop-profile 1 queue 6 ecn offset 10000
!
priority-flow-control dot1p 5 headroom 70000
priority-flow-control dot1p 6 headroom 70000
!
Interface Ethernet1/0/48
description // from 3 server 6gbits to 1/0/53
switchport mode trunk
switchport trunk allowed vlan 101
!
Interface Ethernet1/0/51
description // client
mls qos trust dscp
apply tail-drop-profile 1
service-policy input IN
switchport mode trunk
switchport trunk allowed vlan 101
priority-flow-control enable
priority-flow-control dot1p 5 static-threshold 58982
priority-flow-control no-drop dot1p 5
priority-flow-control dot1p 6 static-threshold 19660
priority-flow-control no-drop dot1p 6
!
Interface Ethernet1/0/53
description // server
mls qos trust dscp
mls qos queue apply scheduling-profile 1
apply tail-drop-profile 1
switchport mode trunk
switchport trunk allowed vlan 101
!5. Команды запуска perftest
Тест
r1 / server
left / client
send latency
ib_send_lat -R -d mlx5_0 -x 5 -F -n 10000
ib_send_lat -R -d mlx5_1 -x 3 -F -n 10000 --tos 136 192.168.101.101
send bandwidth
ib_send_bw -R -d mlx5_0 -x 5 -F -D 60 -s 65536 --report_gbits
ib_send_bw -R -d mlx5_1 -x 3 -F -D 60 -s 65536 --report_gbits --tos 136 192.168.101.101
write latency
ib_write_lat -R -d mlx5_0 -x 5 -F -n 10000
ib_write_lat -R -d mlx5_1 -x 3 -F -n 10000 --tos 136 192.168.101.101
write bandwidth
ib_write_bw -R -d mlx5_0 -x 5 -F -D 60 -s 65536 --report_gbits
ib_write_bw -R -d mlx5_1 -x 3 -F -D 60 -s 65536 --report_gbits --tos 136 192.168.101.101
read latency
ib_read_lat -R -d mlx5_0 -x 5 -F -n 10000
ib_read_lat -R -d mlx5_1 -x 3 -F -n 10000 --tos 136 192.168.101.101
read bandwidth
ib_read_bw -R -d mlx5_0 -x 5 -F -D 60 -s 65536 --report_gbits
ib_read_bw -R -d mlx5_1 -x 3 -F -D 60 -s 65536 --report_gbits --tos 136 192.168.101.101
atomic latency
ib_atomic_lat -R -d mlx5_0 -x 5 -F -n 10000
ib_atomic_lat -R -d mlx5_1 -x 3 -F -n 10000 --tos 136 192.168.101.101
atomic bandwidth
ib_atomic_bw -R -d mlx5_0 -x 5 -F -D 60 --report_gbits
ib_atomic_bw -R -d mlx5_1 -x 3 -F -D 60 --report_gbits --tos 136 192.168.101.101
Тест | r1 / server | left / client |
send latency | ib_send_lat -R -d mlx5_0 -x 5 -F -n 10000 | ib_send_lat -R -d mlx5_1 -x 3 -F -n 10000 --tos 136 192.168.101.101 |
send bandwidth | ib_send_bw -R -d mlx5_0 -x 5 -F -D 60 -s 65536 --report_gbits | ib_send_bw -R -d mlx5_1 -x 3 -F -D 60 -s 65536 --report_gbits --tos 136 192.168.101.101 |
write latency | ib_write_lat -R -d mlx5_0 -x 5 -F -n 10000 | ib_write_lat -R -d mlx5_1 -x 3 -F -n 10000 --tos 136 192.168.101.101 |
write bandwidth | ib_write_bw -R -d mlx5_0 -x 5 -F -D 60 -s 65536 --report_gbits | ib_write_bw -R -d mlx5_1 -x 3 -F -D 60 -s 65536 --report_gbits --tos 136 192.168.101.101 |
read latency | ib_read_lat -R -d mlx5_0 -x 5 -F -n 10000 | ib_read_lat -R -d mlx5_1 -x 3 -F -n 10000 --tos 136 192.168.101.101 |
read bandwidth | ib_read_bw -R -d mlx5_0 -x 5 -F -D 60 -s 65536 --report_gbits | ib_read_bw -R -d mlx5_1 -x 3 -F -D 60 -s 65536 --report_gbits --tos 136 192.168.101.101 |
atomic latency | ib_atomic_lat -R -d mlx5_0 -x 5 -F -n 10000 | ib_atomic_lat -R -d mlx5_1 -x 3 -F -n 10000 --tos 136 192.168.101.101 |
atomic bandwidth | ib_atomic_bw -R -d mlx5_0 -x 5 -F -D 60 --report_gbits | ib_atomic_bw -R -d mlx5_1 -x 3 -F -D 60 --report_gbits --tos 136 192.168.101.101 |
Для проверки конкретных DSCP к командам добавляется параметр --tos: DSCP 34 соответствует TOS 136, DSCP 35 соответствует TOS 140.
6. Результаты тестирования
Сравнение выполнено для двух коммутаторов: QSW-6900 и QSW-6700. Таблицы ниже показывают результаты без QoS и с включёнными QoS настройками.
Свитч | Тест | Без QoS, Gbit/s | С QoS, Gbit/s | Изменение, Gbit/s | Изменение, % | Без QoS MsgRate, Mpps | С QoS MsgRate, Mpps |
QSW-6900 | ib_send_bw | 91.41 | 96.30 | +4.89 | +5.3% | 0.174353 | 0.183685 |
QSW-6900 | ib_write_bw | 91.36 | 96.28 | +4.92 | +5.4% | 0.174260 | 0.183647 |
QSW-6900 | ib_read_bw | 97.91 | 97.91 | 0.00 | 0% | 0.186749 | 0.186742 |
QSW-6900 | ib_atomic_bw | 0.14 | 0.14 | 0.00 | 0% | 2.129306 | 2.126522 |
QSW-6700 | ib_send_bw | 63.41 | 97.95 | +34.54 | +54.5% | 0.120954 | 0.186818 |
QSW-6700 | ib_write_bw | 58.53 | 97.92 | +39.39 | +67.3% | 0.111640 | 0.186773 |
QSW-6700 | ib_read_bw | 97.91 | 97.91 | 0.00 | 0% | 0.186756 | 0.186744 |
QSW-6700 | ib_atomic_bw | 0.14 | 0.14 | 0.00 | 0% | 2.126958 | 2.123588 |
Графическое сравнение пропускной способности:


7. Задержки
Свитч
Режим
Тест
typical, µs
avg, µs
99%, µs
99.9%, µs
max, µs
QSW-6900
QoS OFF
ib_send_lat
2.05
2.06
2.17
3.59
6.41
QSW-6900
QoS OFF
ib_write_lat
2.05
2.05
2.13
2.90
4.13
QSW-6900
QoS OFF
ib_read_lat
3.90
3.91
4.11
5.62
7.64
QSW-6900
QoS OFF
ib_atomic_lat
3.88
3.90
4.14
5.37
7.53
QSW-6900
QoS ON
ib_send_lat
2.04
2.05
2.14
3.54
5.03
QSW-6900
QoS ON
ib_write_lat
2.05
2.06
2.15
2.86
3.97
QSW-6900
QoS ON
ib_read_lat
3.94
3.96
4.23
5.62
7.84
QSW-6900
QoS ON
ib_atomic_lat
3.87
3.90
4.16
5.46
7.96
QSW-6700
QoS OFF
ib_send_lat
2.45
2.48
2.72
3.96
5.41
QSW-6700
QoS OFF
ib_write_lat
2.43
2.45
2.68
3.39
4.42
QSW-6700
QoS OFF
ib_read_lat
4.70
4.73
5.23
6.37
8.82
QSW-6700
QoS OFF
ib_atomic_lat
4.67
4.59
4.89
5.42
6.36
QSW-6700
QoS ON
ib_send_lat
2.47
2.50
2.73
3.96
6.37
QSW-6700
QoS ON
ib_write_lat
2.33
2.34
2.53
3.12
4.04
QSW-6700
QoS ON
ib_read_lat
4.65
4.62
4.97
5.58
7.16
QSW-6700
QoS ON
ib_atomic_lat
4.70
4.71
5.22
6.47
10.00
Свитч | Режим | Тест | typical, µs | avg, µs | 99%, µs | 99.9%, µs | max, µs |
QSW-6900 | QoS OFF | ib_send_lat | 2.05 | 2.06 | 2.17 | 3.59 | 6.41 |
QSW-6900 | QoS OFF | ib_write_lat | 2.05 | 2.05 | 2.13 | 2.90 | 4.13 |
QSW-6900 | QoS OFF | ib_read_lat | 3.90 | 3.91 | 4.11 | 5.62 | 7.64 |
QSW-6900 | QoS OFF | ib_atomic_lat | 3.88 | 3.90 | 4.14 | 5.37 | 7.53 |
QSW-6900 | QoS ON | ib_send_lat | 2.04 | 2.05 | 2.14 | 3.54 | 5.03 |
QSW-6900 | QoS ON | ib_write_lat | 2.05 | 2.06 | 2.15 | 2.86 | 3.97 |
QSW-6900 | QoS ON | ib_read_lat | 3.94 | 3.96 | 4.23 | 5.62 | 7.84 |
QSW-6900 | QoS ON | ib_atomic_lat | 3.87 | 3.90 | 4.16 | 5.46 | 7.96 |
QSW-6700 | QoS OFF | ib_send_lat | 2.45 | 2.48 | 2.72 | 3.96 | 5.41 |
QSW-6700 | QoS OFF | ib_write_lat | 2.43 | 2.45 | 2.68 | 3.39 | 4.42 |
QSW-6700 | QoS OFF | ib_read_lat | 4.70 | 4.73 | 5.23 | 6.37 | 8.82 |
QSW-6700 | QoS OFF | ib_atomic_lat | 4.67 | 4.59 | 4.89 | 5.42 | 6.36 |
QSW-6700 | QoS ON | ib_send_lat | 2.47 | 2.50 | 2.73 | 3.96 | 6.37 |
QSW-6700 | QoS ON | ib_write_lat | 2.33 | 2.34 | 2.53 | 3.12 | 4.04 |
QSW-6700 | QoS ON | ib_read_lat | 4.65 | 4.62 | 4.97 | 5.58 | 7.16 |
QSW-6700 | QoS ON | ib_atomic_lat | 4.70 | 4.71 | 5.22 | 6.47 | 10.00 |
8. Итоговый вывод
По результатам проверки оба коммутатора корректно обрабатывают RoCEv2-трафик с включённым QoS-профилем. На QSW-6900 показатели send/write/read остаются на стабильном уровне и находятся близко к пропускной способности 100G.
На QSW-6700 применение QoS-профиля дало наиболее заметный результат: send/write bandwidth достигли значений, близких к предельной пропускной способности100 G -интерфейса: ib_send_bw до 97.95 Gbit/s, ib_write_bw до 97.92 Gbit/s. Read и atomic-тесты также остались стабильными.
В сравнении с QSW-6900, коммутатор QSW-6700 показал лучший эффект от применения QoS-профиля именно под конкурентной нагрузкой. Настройка приоритетной очереди для RoCEv2 позволила эффективно вытеснить фоновый трафик и обеспечить почти полную полосу 100G для send/write-сценариев.
К списку

