IBLINKINFO(8)

okay bestie, so <rainbow>iblinkinfo</rainbow> is an OpenIB Diagnostics girlie, and she lives in section 8 of the manual (system admin tools, yk what it is). Her whole thing? She reports link info for every port in an IB fabric, node by node. And if u don't wanna scan the whole entire world? She'll do partial scans and limit her output to just the parts of a fabric u actually care about. lowkey iconic of her.


✨ NAME ✨

IBLINKINFO β€” report link info for all links in the fabric πŸ¦‹


🌸 SYNOPSIS 🌸

iblinkinfo <options>

πŸ’… DESCRIPTION πŸ’…

iblinkinfo reports link info for each port in an IB fabric, node by node. Optionally, iblinkinfo can do partial scans and limit its output to parts of a fabric. that's it that's the girl. πŸ’œ


πŸ‘‘ OPTIONS πŸ‘‘

  • --down, -d β€” only prints nodes that have a port chillin' in the "Down" state. sad girl hours only 😭
  • --line, -l β€” prints all the info for each link on one single line. the default behavior is to print a header with the node info and then a list for each port (which is honestly super useful for grep'ing output, iykyk). 🧚
  • --additional, -p β€” prints additional port settings: <LifeTime>,<HoqLife>,<VLStallCount>. extra details, bc we love a thorough queen. ✨
  • --switches-only β€” show only switches in the output, no gatekeeping.
  • --cas-only β€” show only CAs in the output. periodt.

🌈 Partial Scan flags

if u wanna start a partial scan somewhere specific, u specify the node with one of these addresses, bestie.

  • --port-guid, -G <port_guid> β€” specify a port_guid πŸ’«
  • -D, --Direct <dr_path> β€” the address specified is a directed route.

examples, fr fr:

-D "0"          # self port
-D "0,1,2,1,4"  # out via port 1, then 2, ...
(Note the second number in the path specified must match the port being used. This can be specified using the port selection flag '-P' or the port found through the automatic selection process.)
  • --switch, -S <port_guid> β€” same as "-G". (provided only for backward compatibility, so like… vintage. πŸ™ˆ)
Note: For switches, results are printed for all ports, not just switch port 0. she does not do half-measures. πŸ’…

how much of the scan actually gets printed can be controlled with these next ones:

  • --all, -a β€” print all nodes found in a partial fabric scan. normally a partial fabric scan will return only the node specified. this option will print the other nodes found as well. surprise bonus content πŸŽ€
  • --hops, -n <hops> β€” specify the number of hops away from a specified node to scan. this is useful to expand a partial fabric scan beyond the node specified. go explore, main character energy 🌸

πŸŽ€ Cache File flags

  • --load-cache <filename> β€” load and use the cached ibnetdiscover data stored in the specified filename. may be useful for outputting and learning about other fabrics or a previous state of a fabric. time travel but make it networking ⭐
  • --diff <filename> β€” load cached ibnetdiscover data and do a diff comparison to the current network or another cache. a special diff output for ibnetdiscover output will be displayed showing differences between the old and current fabric. by default, the following are compared for differences: switches, channel adapters, routers, and port connections. the glow-up comparison πŸ¦‹
  • --diffcheck <key(s)> β€” specify what diff checks should be done in the --diff option above. comma separate multiple diff check key(s). the available diff checks are:
    • port = port connections
    • state = port state
    • lid = lids
    • nodedesc = node descriptions

note that port, lid, and nodedesc are checked only for the node types that are specified (e.g. switches-only, cas-only). if port is specified alongside lid or nodedesc, remote port lids and node descriptions will also be compared. ok so that's a lot of rules but we respect them πŸ’œ

  • --filterdownports <filename> β€” filter downports indicated in a ibnetdiscover cache. if a port was previously indicated as down in the specified cache, and is still down, do not output it in the resulting output. this option may be particularly useful for environments where switches are not fully populated, thus much of the default iblinkinfo info is considered useless. see ibnetdiscover for information on caching ibnetdiscover output. bye to the useless info, no cap 🫢

πŸ’– Port Selection flags

  • -C, --Ca <ca_name> β€” use the specified ca_name.
  • -P, --Port <ca_port> β€” use the specified ca_port.
  • -Y, --pkey-idx <idx> β€” P_Key table index (0-65535, default 0) used for the outgoing SA/GMP MADs. SMP (SMI directed-route/LID-routed) MADs always use P_Key index 0. like, always bestie, no exceptions. πŸ”₯

πŸ¦‹ Local port Selection

Multiple port / Multiple CA support: when no IB device or port is specified (see the "local umad parameters" below), the libibumad library selects the port to use by the following criteria:

  1. the first port that is ACTIVE.
  2. if not found, the first port that is UP (physical link up).

if a port and/or CA name is specified, the libibumad library attempts to fulfill the user request, and will fail if it is not possible. (she's not gonna guess for u, she's gonna be honest πŸ™ˆ)

for example:

ibaddr                 # use the first port (criteria #1 above)
ibaddr -C mthca1       # pick the best port from "mthca1" only.
ibaddr -P 2            # use the second (active/up) port from the first available IB device.
ibaddr -C mthca0 -P 2  # use the specified port only.

✨ Configuration flags

  • --config, -z <config_file> β€” specify alternate config file. Default: /etc/infiniband-diags/ibdiag.conf
  • --outstanding_smps, -o <val> β€” specify the number of outstanding SMP's which should be issued during the scan. Default: 2
  • --node-name-map <node-name-map> β€” specify a node name map. this file maps GUIDs to more user friendly names. see FILES section. (glow-up for ur GUIDs πŸ’…)
  • -t, --timeout <timeout_ms> β€” override the default timeout for the solicited mads.
  • -y, --m_key <key> β€” use the specified M_key for requests. if a non-numeric value (like 'x') is specified, then a value will be prompted for.

🫢 Debugging flags

  • -e β€” show send and receive errors (timeouts and others). spill the tea, errors πŸ“
  • -h, --help β€” show the usage message.
  • -v, --verbose β€” increase the application verbosity level. may be used several times (-vv or -v -v -v). talk more bestie, we're listening.
  • -V, --version β€” show the version info.

πŸ’€ EXIT STATUS πŸ’€

  • 0 on success πŸŽ‰
  • -1 on failure to scan the fabric 😭
  • 1 if check mode is used and inconsistencies are found πŸ‘€

🌸 FILES 🌸

CONFIG FILE

/etc/infiniband-diags/ibdiag.conf

a global config file is provided to set some of the common options for all tools. see the supplied config file for details. πŸ’œ

NODE NAME MAP FILE FORMAT

the node name map is used to specify user friendly names for nodes in the output. GUIDs are used to perform the lookup.

this functionality is provided by the opensm-libs package. see opensm(8) for the file location for your installation.

generically:

# comment
<guid> "<name>"

example:

# IB1
# Line cards
0x0008f104003f125c "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
0x0008f104003f125d "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
0x0008f104003f10d2 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
0x0008f104003f10d3 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
0x0008f104003f10bf "IB1 (Rack 11 slot 12  ) ISR9288/ISR9096 Voltaire sLB-24D"

# Spines
0x0008f10400400e2d "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
0x0008f10400400e2e "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
0x0008f10400400e2f "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
0x0008f10400400e31 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
0x0008f10400400e32 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"

# GUID   Node Name
0x0008f10400411a08 "SW1  (Rack  3) ISR9024 Voltaire 9024D"
0x0008f10400411a28 "SW2  (Rack  3) ISR9024 Voltaire 9024D"
0x0008f10400411a34 "SW3  (Rack  3) ISR9024 Voltaire 9024D"
0x0008f104004119d0 "SW4  (Rack  3) ISR9024 Voltaire 9024D"

πŸŽ€ AUTHOR πŸŽ€

Ira Weiny < ira.weiny@intel.com > β€” shoutout to the literal legend who wrote this 🫢


and that's the whole page bestie!! this was IBLINKINFO(8) from the OpenIB Diagnostics collection, dated 2018-07-09. study it, love it, run it responsibly. mwah πŸ’–βœ¨πŸŽ€πŸ¦‹πŸ’…

πŸ“¦ where this page comes from
  • arch rolling: rdma-core 65.0-1 Β· GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-MIT AND GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-FreeBSD AND GPL-2.0-or-later OR LicenseRef-Intel-BSD-3-Clause AND GPL-2.0-or-later OR LicenseRef-PathScale-BSD-Patent-License AND CC0-1.0 AND MIT AND BSD-2-Clause AND CPL-1.0 OR BSD-2-Clause OR GPL-2.0-or-later
  • ubuntu stonking: infiniband-diags 64.0-1ubuntu1 Β· BSD-MIT OR GPL-2.0-only
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms