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

Двухпортовый HCA Mellanox, может пинговать, если подключена пара ib0, но не если подключена только пара ib1

Я установил 2 двухпортовые карты 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, эхо-запрос между подключенной парой портов 2 не работает. Отключение пары port2 и подключение только пары port1, ping работает нормально даже для отключенного port2 IP (?) Что может быть причиной этого и как я могу решить эту проблему. Пожалуйста, укажите, какую дополнительную информацию я должен опубликовать.

Я пытаюсь установить полностью изолированное соединение для каждой пары портов и запустить отдельные процессы openMPI для одновременного тестирования и сравнения пропускной способности для двух кабелей Infiniband. Может ли кто-нибудь посоветовать, как это можно сделать?

Что касается того, что я узнал, я думаю, мне нужно создать разные ключи раздела для каждой пары портов. (в настоящее время они используют 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  

Хорошо, я не совсем знаком с настройкой CentOS, но я думаю, что происходит следующее. Эта одна или обе копии opensm работают по ссылке ib0, но не по другой. ib0 - это значение по умолчанию для OpenSM.

Насколько я понимаю, вам понадобятся две копии openm, работающие в этой конкретной настройке, потому что без коммутатора, связывающего все HCA вместе, это, по сути, две структуры, и вам нужно запустить диспетчер подсети на обеих структурах. Вы правильно выбрали это, но на самом деле не запускаете их правильно (особенно 2-й экземпляр).

Ping работает, когда оба подключены, потому что Linux передает ping на второй интерфейс и отвечает за оба IP-адреса. Все что работает над ib0 (Pair1).

В Ubuntu, с которым я знаком, есть файл конфигурации / etc / default / opensm.

Похоже, что в CentOS все по-другому. Формат этого файла в Ubuntu используется для запуска openm с правильными портами, потому что вам нужен менеджер подсети opensm на каждом порту.

В основном то, что вы хотите сделать, не запускать

opensm -g --daemon

дважды, но вместо этого

/ usr / sbin / ibstat -p

Что даст следующий результат:

0x001a4bffff0c34e5
0x001a4bffff0c34e6

Тогда беги

opensm -g 0x001a4bffff0c34e5 --daemon 
opensm -g 0x001a4bffff0c34e6 --daemon 

В Ubuntu сценарий инициализации фактически автоматизирует этот процесс для ports = ALL (читается из / etc / default / opensm), где ALL - ключевое слово, выбранное сценарием инициализации.

Вероятно, есть сценарий инициализации для opensm под CentOS. Тем временем можно использовать указанные выше команды или написать свой собственный сценарий запуска.


ОБНОВЛЕНИЕ: я не уверен, будет ли это иметь значение или нет, но у меня также загружены следующие два модуля ядра, которых у вас нет.

ib_ipath
ib_qib

Вы также установили последнюю версию прошивки на HCA? На самом деле это очень важно. Не думайте, что у них новинки с завода.

Как я вижу, две разные физические подсети настроены с одним и тем же адресом подсети 192.168.10.0. Я думаю, вам следует назначить разные адреса подсети, чтобы решить эту проблему.