Mellanox двухпортовый HCA, может пропинговать, если подключена пара ib0, но не если подключена только пара ib1
Я установил две двухпортовые карты ConnectX-3 HCA mellanox FDR (CX354A), каждая на отдельную машину. Машины подключены напрямую друг к другу (конфигурация без переключателей). Оба порта на картах подключены таким образом, что порт1 находится на порт1, а порт2 на порт2. Каждый порт настроен следующим образом:
HCA1 port1: ib0 inet addr:192.168.10.13 Bcast:192.168.10.255 Mask:255.255.255.0
port2: ib1 inet addr:192.168.10.15 Bcast:192.168.10.255 Mask:255.255.255.0
HCA2 port1: ib0 inet addr:192.168.10.24 Bcast:192.168.10.255 Mask:255.255.255.0
port2: ib1 inet addr:192.168.10.26 Bcast:192.168.10.255 Mask:255.255.255.0
Выполнение 2 команд opensm на HCA1, как показано ниже, и ibstat показывает, что все 4 порта работают и активны.
root@HCA1# opensm -g <ib0 GUID> --daemon
root@HCA1# opensm -g <ib1 GUID> --daemon
С вышеупомянутым настроенным я могу пропинговать с любого IP к любому другому из вышеупомянутого.
ОДНАКО, когда я отсоединил кабели для порта 1, ping не работает между подключенной парой port2. Отключая пару порт2 и подключая только пару порт1, ping работает нормально даже для отключенного IP порта2 (?). Что может быть причиной этого и как я могу решить проблему. Пожалуйста, укажите, какую дополнительную информацию я должен опубликовать.
Я пытаюсь добиться полностью изолированного соединения для каждой пары портов и запуска отдельных процессов openMPI для тестирования и сравнения пропускной способности для двух бесконечных кабелей одновременно. Кто-нибудь может посоветовать, как это можно сделать?
Что касается того, что я узнал, я думаю, что мне нужно создать разные ключи раздела для каждой пары портов. (в настоящее время они используют pkey по умолчанию 0xffff) Однако этот pkey по умолчанию не может быть изменен после настройки infiniband во время загрузки. Любое предложение или совет?
Обе машины работают под управлением CentOS 6.4, и я установил Mellanox OFED 1.5.3.
Это выходные данные ibstat на обеих машинах:
[root@HCA1 Desktop]# ifconfig ib0
ib0 Link encap:InfiniBand HWaddr 80:00:00:48:FE:81:00:00:00:00:00:00:00:00:00:00:00:00:00:00
inet addr:192.168.10.13 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::202:c903:21:8f11/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:65520 Metric:1
RX packets:4144160 errors:0 dropped:0 overruns:0 frame:0
TX packets:4141376 errors:0 dropped:2 overruns:0 carrier:0
collisions:0 txqueuelen:1024
RX bytes:702746349 (670.1 MiB) TX bytes:719570861 (686.2 MiB)
[root@HCA1 Desktop]# ifconfig ib1
ib1 Link encap:InfiniBand HWaddr 80:00:00:49:FE:82:00:00:00:00:00:00:00:00:00:00:00:00:00:00
inet addr:192.168.10.15 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::202:c903:21:8f12/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:65520 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1024
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@HCA2 Desktop]# ifconfig ib0
ib0 Link encap:InfiniBand HWaddr 80:00:00:48:FE:81:00:00:00:00:00:00:00:00:00:00:00:00:00:00
inet addr:192.168.10.24 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::202:c903:21:8f51/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:65520 Metric:1
RX packets:4141382 errors:0 dropped:0 overruns:0 frame:0
TX packets:4144161 errors:0 dropped:2 overruns:0 carrier:0
collisions:0 txqueuelen:1024
RX bytes:703005597 (670.4 MiB) TX bytes:719323129 (685.9 MiB)
[root@HCA2 Desktop]# ifconfig ib1
ib1 Link encap:InfiniBand HWaddr 80:00:00:49:FE:82:00:00:00:00:00:00:00:00:00:00:00:00:00:00
inet addr:192.168.10.26 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::202:c903:21:8f52/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:65520 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1024
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Загруженные модули, как показано ниже:
[root@HCA1 Desktop]# /etc/init.d/openibd status
HCA driver loaded
Configured IPoIB devices:
ib0 ib1
Currently active IPoIB devices:
ib0
ib1
The following OFED modules are loaded:
rdma_ucm
rdma_cm
ib_addr
ib_ipoib
mlx4_core
mlx4_ib
mlx4_en
ib_mthca
ib_uverbs
ib_umad
ib_ucm
ib_sa
ib_cm
ib_mad
ib_core
iw_cxgb3
iw_nes
2 ответа
Хорошо, я не совсем знаком с настройкой CentOS, но я думаю, что это происходит следующим образом. Эта одна или обе копии opensm работают по ссылке ib0, но не по другой. ib0 по умолчанию для OpenSM.
Насколько я понимаю, вам понадобятся две копии opensm, работающие на этой конкретной установке, потому что без коммутатора, связывающего все HCA вместе, это по сути две матрицы, и вам нужно запустить диспетчер подсетей на обеих фабриках. Вы правильно подобрали это, но на самом деле не запустили их правильно (особенно 2-й экземпляр).
Пинг работает, когда оба подключены, потому что Linux передает пинг на второй интерфейс и отвечает на оба IP-адреса. Все это работает над ib0 (Pair1).
В Ubuntu, с которым я знаком, есть файл конфигурации /etc/default/opensm.
Похоже, это отличается от CentOS. Формат этого файла в Ubuntu используется для запуска opensm с нужными портами, потому что вам нужен менеджер подсети opensm на каждом порту.
В основном то, что вы хотите сделать, это не бежать
opensm -g --daemon
дважды, но вместо
/usr/sbin/ibstat -p
Который даст вывод как:
0x001a4bffff0c34e5
0x001a4bffff0c34e6
Тогда беги
opensm -g 0x001a4bffff0c34e5 --daemon
opensm -g 0x001a4bffff0c34e6 --daemon
В Ubuntu сценарий init фактически автоматизирует этот процесс для портов =ALL (чтение из /etc/default/opensm), где ALL - это ключевое слово, взятое сценарием init.
Вероятно, есть сценарий инициализации для opensm под CentOS. В то же время можно использовать вышеперечисленные команды или написать собственный скрипт запуска.
ОБНОВЛЕНИЕ: я не уверен, будет ли это иметь значение или нет, но у меня также есть следующие два загруженных модуля ядра, которых у вас нет.
ib_ipath
ib_qib
Вы также прошивали свои HCA последней прошивкой? Это на самом деле очень важно. Не предполагайте, что у них есть последние из фабрики.
Как я вижу, две разные физические подсети настроены с одним и тем же адресом подсети 192.168.10.0. Я думаю, что вы должны назначить разные адреса подсети для решения этой проблемы.