ibtracert(8)

πŸ‘‘ ibtracert β€” ok bestie, let's trace an InfiniBand path

no cap, this is ibtracert(8), part of the Open IB Diagnostics crew πŸ’… it's the little tool that walks a whole InfiniBand path hop by hop and shows you every step, like a stalker but for fabric routing 🌸

✨ SYNOPSIS ✨

ibtracert [options] [<lid|guid> [<startlid> [<endlid>]]]

πŸ¦‹ DESCRIPTION πŸ¦‹

so basically ibtracert sends out SMPs to trace the path from a source GID/LID to a destination GID/LID, okay?? every single hop along the way gets printed until you reach the destination or until some hop just... doesn't respond 😭 (rude of it, honestly).

and here's the cute part: if you pass the -m option, you can do multicast path tracing between source and destination nodes instead. it's giving glow-up 🫢

πŸ’– OPTIONS πŸ’–

  • -n, --no_info β€” simple format; don't show additional information. minimalism era, we love to see it ✨
  • -m β€” show the multicast trace of the specified mlid πŸ”₯
  • -f, --force β€” force route to destination port. no negotiation, we're going πŸ’…

πŸŽ€ Addressing Flags πŸŽ€

  • -G, --Guid β€” the address specified is a Port GUID
  • -L, --Lid β€” the address specified is a LID
  • -s, --sm_port <smlid> β€” use smlid as the target lid for SA queries.
  • --ports-file <ports-file> β€” specify a ports file. this file contains multiple source and destination lid or guid pairs. see the FILES section, bestie πŸ‘€

🌈 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. yes, always. periodt πŸ’€

🧚 Local port Selection 🧚

Multiple port / Multiple CA support, angel: when no IB device or port is specified (see the "local umad parameters" below πŸ‘‡), the libibumad library picks the port for you using these 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 tries to fulfill your request, and it will fail if that's not possible. sorry bestie 😭

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.

πŸ’… Debugging flags πŸ’…

  • -d β€” raise the IB debugging level. May be used several times (-ddd or -d -d -d). go feral πŸ”₯
  • -e β€” show send and receive errors (timeouts and others). the tea β˜•
  • -h, --help β€” show the usage message
  • -v, --verbose β€” increase the application verbosity level. May be used several times (-vv or -v -v -v). say it LOUDER πŸ“£
  • -V, --version β€” show the version info.

πŸ“ Configuration flags πŸ“

  • -t, --timeout <timeout_ms> β€” override the default timeout for the solicited mads.
  • --node-name-map <node-name-map> β€” specify a node name map. this file maps GUIDs to more user friendly names. see the FILES section πŸ‘‘
  • -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. spooky interactive moment πŸ™ˆ
  • --config, -z <config_file> β€” specify alternate config file. default: /etc/infiniband-diags/ibdiag.conf

πŸ“ 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 supplied config file for details. yes, one file to rule them all πŸŽ€

πŸ’œ 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. iykyk πŸ”

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"

πŸ¦‹ PORTS FILE FORMAT πŸ¦‹

The ports file can be used to specify multiple source and destination pairs. They can be lids or guids. If guids, use the -G option to indicate that. don't forget it, bestie, or it'll be confused 😀

Generically:

# comment
<src> <dst>

Example:

73 207
203 657
531 101

> OR <

0x0008f104003f125c 0x0008f104003f133d
0x0008f1040011ab07 0x0008f104004265c0
0x0008f104007c5510 0x0008f1040099bb08

πŸ”₯ EXAMPLES πŸ”₯

Unicast examples:

ibtracert 4 16                                  # show path between lids 4 and 16
ibtracert -n 4 16                               # same, but using simple output format
ibtracert -G 0x8f1040396522d 0x002c9000100d051  # use guid addresses

Multicast example:

ibtracert -m 0xc000 4 16    # show multicast path of mlid 0xc000 between lids 4 and 16

πŸ‘‘ SEE ALSO πŸ‘‘

ibroute (8)


🫢 AUTHOR 🫢

Hal Rosenstock <<hal.rosenstock@gmail.com>>

Ira Weiny < <ira.weiny@intel.com> >


and that's the whole vibe check, bestie πŸ’– this page is from Open IB Diagnostics, dated 2018-04-02, and it's ibtracert(8) β€” go trace something iconic 🌟

πŸ“¦ 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