Infiniband 介面不路由 IPoIB 流量
我有我正在
Puppet
以完全相同的方式配置的主機塊,它們具有相同的硬體(相同的刀片機箱),並且肯定以所有相同的方式連接,其中一些介面與其他介面的工作方式不同。這些都是 Infiniband 介面,因此我可以使用 和 之類的命令對其進行測試ibping
,ibsysstat
這表明它們具有有效的 UVERBS/RDMA 連接。例如:master# ibsysstat 29 sysstat ping succeeded
具有該 LID 的節點不能正常工作的地方有:
node10# ibstat CA 'mlx4_0' CA type: MT4099 Number of ports: 1 Firmware version: 2.11.1250 Hardware version: 1 Node GUID: 0x... System image GUID: 0x... Port 1: State: Active Physical state: LinkUp Rate: 40 Base lid: 29 LMC: 0 SM lid: 26 Capability mask: 0x02594868 Port GUID: 0x... Link layer: InfiniBand
但是,當我對 IPoIB IP 地址做一個簡單的操作時
ping
,它就坐在那裡無法連接。其他命令ibping
也肯定會傳遞流量,並且在添加-d
顯示調試輸出時會顯示數據。當我使用 觀看界面時,我可以看到 ping 信號消失tcpdump
,但沒有任何信號進入。同時,它旁邊是一個主機,它的一切都執行良好。路由表也都適合我,並且匹配有效的主機。在不工作的主機上:default via 10.10.0.1 dev em1 proto dhcp metric 100 10.10.0.0/24 dev em1 proto kernel scope link src 10.10.0.110 metric 100 10.11.0.0/24 dev ib0 proto kernel scope link src 10.11.0.110 169.254.0.0/16 dev ib0 scope link metric 1005
還有一個:
default via 10.10.0.1 dev em1 proto dhcp metric 100 10.10.0.0/24 dev em1 proto kernel scope link src 10.10.0.108 metric 100 10.11.0.0/24 dev ib0 proto kernel scope link src 10.11.0.108 169.254.0.0/16 dev ib0 scope link metric 1004
唯一不同的是最後一條路線中的指標,但這無關緊要。另外值得注意的是,這些主機在重新配置之前工作。所以我幾乎可以肯定它不是硬體。
我現在有點茫然,任何想法都將不勝感激。
編輯:使用 dmesg 錯誤更新
我在有
dmesg
問題的介面的輸出中發現了一些只存在於不工作的主機上的東西。錯誤ib0: failed to modify QP to RTR: -22
不幸的是,這不是很有幫助,並且在搜尋中沒有太多相關的內容。
或許還值得注意的是,有問題的主機可以 ping 交換機 IP 地址,而交換機可以 ping 其關聯 IP 上的主機。
這是核心 3.10.0-862.11.1 到 3.10.0-862.11.6 中的一個已知問題(參見此處和此處)。
本質上,如果您將核心更新到 862.11.1-862.11.6,drivers/infiniband/core/verbs.c 中的一個錯誤會導致所有可靠連接 (rc) 消息失敗,而數據報消息不可靠將工作。您可以修補此驅動程序,或從較早的核心啟動以解決此問題,直到更新的核心解決此問題。