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. Я думаю, что вы должны назначить разные адреса подсети для решения этой проблемы.

Другие вопросы по тегам