ibroute(8)

πŸ¦‹ NAME πŸ¦‹

ibroute β€” query InfiniBand switch forwarding tables, bestie ✨


πŸŽ€ SYNOPSIS πŸŽ€

ibroute [options] [<dest dr_path|lid|guid> [<startlid> [<endlid>]]]

πŸ’« DESCRIPTION πŸ’«

okay so listen. ibroute uses SMPs to display the forwarding tables of a switch β€” and yes that's either the unicast one (LinearForwardingTable, aka LFT) or the multicast one (MulticastForwardingTable, aka MFT) πŸ’… You point it at a switch LID, and if you want, you can also hand it an optional lid (mlid) range.

The default range? all valid entries in the range 1...FDBTop. periodt. πŸ’–


✨ OPTIONS ✨

  • -a, --all β€” show all lids in the range, even the invalid entries (no gatekeeping here 🫢)
  • -n, --no_dests β€” do not try to resolve destinations, we're keeping it simple
  • -M, --Multicast β€” show the multicast forwarding tables. heads up bestie: in this case, the range parameters are specifying the mlid range πŸ‘‘

🧭 Addressing Flags

  • -D, --Direct β€” the address specified is a directed route

Examples:

[options] -D [options] "0"          # self port
[options] -D [options] "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.)

  • -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.

🎯 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. And ngl, SMP (SMI directed-route/LID-routed) MADs always use P_Key index 0. that's just the rules πŸ’…

🐚 Local port Selection

Multiple port / Multiple CA support: when no IB device or port is specified (peep the "local umad parameters" below), the libibumad library picks the port for you using these criteria, in order:

  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. 😭

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).
  • -e β€” show send and receive errors (timeouts and others) πŸ™ˆ
  • -h, --help β€” show the usage message
  • -v, --verbose β€” increase the application verbosity level. May be used several times (-vv or -v -v -v)
  • -V, --version β€” show the version info.

βš™οΈ Configuration flags

  • -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. πŸ‘€
  • --node-name-map <node-name-map> β€” Specify a node name map. This file maps GUIDs to more user friendly names. See FILES section.
  • --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 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"

🌈 EXAMPLES 🌈

πŸ¦„ Unicast examples

ibroute 4               # dump all lids with valid out ports of switch with lid 4
ibroute -a 4            # same, but dump all lids, even with invalid out ports
ibroute -n 4            # simple dump format - no destination resolution
ibroute 4 10            # dump lids starting from 10 (up to FDBTop)
ibroute 4 0x10 0x20     # dump lid range
ibroute -G 0x08f1040023 # resolve switch by GUID
ibroute -D 0,1          # resolve switch by direct path

πŸ“ Multicast examples

ibroute -M 4                # dump all non empty mlids of switch with lid 4
ibroute -M 4 0xc010 0xc020  # same, but with range
ibroute -M -n 4             # simple dump format

πŸ‘€ SEE ALSO πŸ‘€

ibtracert (8)


πŸ‘‘ AUTHOR πŸ‘‘

Hal Rosenstock < <halr@voltaire.com> >


and that's the whole page bestie, literally every flag, every file, every example, all of it 🫢 this lil beauty is from the Open IB Diagnostics crew, dated 2017-08-21 β€” go forth and dump some forwarding tables, you absolute icon πŸ’…βœ¨πŸŒˆ

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