据我所知,Infinibandnetworking的子网pipe理器计算networking上每对节点之间的最佳路由,并在这些节点想要通信时将这些路由提供给节点。 有没有办法让子网pipe理器(特别是OpenSM)以可读的方式打印这些路由表?
目前,这完全是为了我自己的好奇心,但是我可以想象这种情况对于debugging是有用的。
在OpenFabrics中,infiniband-diags软件包带有一个名为“ibroute”的工具,它应该完全按照你的要求来做。 在infiniband-diags中有一个名为“dump_lfts.sh”的脚本,它围绕着ibroute,并将为您的结构中的所有交换机输出路由表。
还有其他的脚本来绕过这些进行进一步的debugging/路由分析,但我会离开这另一个答案。
更新:
一位同事提醒我OpenSM中有一个机制也是这样做的。 我没有亲自使用它,但为了完整起见,下面是OpenSM手册中的相关部分:
还支持转储交换机盖matrix(aka min跳表)到文件并稍后加载这些的能力。
其用法类似于从lfts文件加载的单播转发表(由'file'路由引擎引入),但新的lidmatrix文件名应该由-M或–lid_matrix_file选项指定。 例如:
opensm -R file -M ./opensm-lid-matrix.dump转储文件名为opensm-lid-matrix.dump,当设置了OSM_LOG_ROUTING日志标志时,将在标准opensm转储目录(默认为/ var / log)中生成转储文件。
当路由引擎'文件'被激活时,但是lfts文件没有被指定或者不能被打开,将会使用默认的盖子matrixalgorithm。
还有一个交换机转发表转储器,它生成一个与dump_lfts.sh输出兼容的文件。 这个文件可以用来作为'文件'路由引擎加载转发表的input。 -U和-M两个选项或其中之一可以与-R文件一起指定。
命令
ibdiagnet --routing
将创build文件/var/tmp/ibdiagnet2/ibdiagnet2.fdbs ,其中包含所有交换机的单播路由表和文件/var/tmp/ibdiagnet2/ibdiagnet2.mcfdbs ,其中包含所有交换机的组播路由表。 为了便于解释,应该删除以UNREACHABLE结尾的所有行。