iwpmd(8)
π iwpmd(8) β like, the whole vibe π
okay bestie, gather round, because we're talking about iwpmd, the port mapping services girlie for iWARP. she's a daemon, she's in section 8 of your manual, and she is carrying the whole TCP port situation on her back. no cap. π«Ά
β¨ NAME β¨
iwpmd β port mapping services for iWARP. that's it, that's the name, short and iconic π
π SYNOPSIS π
iwpmd
yep. that's the whole thing. she takes zero arguments and just exists. main character energy fr fr π
πΈ DESCRIPTION πΈ
so, the iWARP Port Mapper Daemon provides a user space service (that's iwpmd, hi bestie π«Ά) for the iWarp drivers, and what she does is claim tcp ports through the standard socket interface. lowkey a whole service.
the kernel space support for the port mapper lives inside the iw_cm module, okay? and the ib_core module includes netlink support, which is what the port mapper clients use to exchange messages with iwpmd. β¨
and here's the part you cannot skip:
Both modulesiw_cmandib_coreneed to be loaded in order for thelibiwpmservice to start successfully. like, both. not one. both. if one's missing she's just not starting, periodt. π
π¦ IWARP PORT MAPPING DETAILS π¦
okay so the iWARP Port Mapper implementation is based on the port mapper specification section in the Sockets Direct Protocol, and the link is right here, take it, it's yours:
http://www.rdmaconsortium.org/home/draft-pinkerton-iwarp-sdp-v1.0.pdf
so the existing iWARP RDMA providers? they use the same IP address as the native TCP/IP stack when they're creating RDMA connections. and because of that, they need a mechanism to claim the TCP ports used for RDMA connections, so we don't get TCP port collisions when other host applications are out here using TCP ports. that's literally what the iWARP Port Mapper is for β it provides a standard mechanism to accomplish this. π
and ngl, without this service it is possible for an RDMA application to bind/listen on the same port which is already being used by a native TCP host application. and if that happens, the incoming TCP connection data can be passed to the RDMA stack with error. so yeah. not great. π
here's the flow, bestie, follow along π§:
- the iWARP Connection Manager (she's the port mapper client) sends the local IP address and TCP port it has received from the RDMA application over to the IWPM service, when starting a connection.
- the IWPM service then performs a socket bind from user space to get an available TCP port β this is called a mapped port β and communicates it back to the client.
- so in that sense, the IWPM service is used to map the TCP port which the RDMA application uses, to any port available from the host TCP port space.
- the mapped ports are used in iWARP RDMA connections to avoid collisions with the native TCP stack, which is aware that these ports are taken. she's keeping everyone in the loop, so thoughtful π
- and when an RDMA connection using a mapped port is terminated, the client notifies the IWPM service, which then releases the TCP port. giving it back. so generous. π
and the message exchange between iwpmd and the iWARP Connection Manager (so, between user space and kernel space) is implemented using netlink sockets. iykyk. β¨
π OPTIONS π
she has one option. one. and she ate with it.
-s,--systemdβ Enable systemd integration. that's the whole thing, bestie, she's systemd-ready π«Ά
π₯ SIGNALS π₯
SIGUSR1will force a dump of the current mappings to the system message log. so if you're nosy (affectionate) and want to see what's mapped, this is your girl πSIGTERM/SIGHUPwill forceiwpmdto exit. yeah, she's done, she's logging off, she said goodbye π
π FILES π
/etc/iwpmd.confβ her config file, her little home π
π SEE ALSO π
rdma_cm(7)β go read that one too, bestie, stay educated π
so that's iwpmd(8) from the iwpmd manual, dated 2016-09-16 β yeah she's a 2016 girlie and she's still serving. if you needed port mapping services for iWARP explained by your favorite unix bestie, you got it. now go load iw_cm and ib_core before you come crying to me. mwah. πβ¨ππ¦πΈ
π¦ where this page comes from
- alpine 3.24: rdma-core-doc 61.0-r0 Β· GPL-2.0-only OR BSD-2-Clause
- 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
- centos-stream 10: iwpmd 62.0-3.el10 Β· GPLv2 or BSD
- centos-stream 9: iwpmd 61.0-3.el9 Β· GPLv2 or BSD
- debian bookworm: rdma-core 44.0-2 Β· BSD-MIT OR GPL-2.0-only
- debian trixie: rdma-core 56.1-1 Β· BSD-MIT OR GPL-2.0-only
- fedora 43: iwpmd 58.0-4.fc43 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: iwpmd 61.0-2.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: iwpmd 61.1^20260812git975bdaf-1.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- opensuse-leap 16.0: iwpmd 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: iwpmd 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: iwpmd 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: iwpmd 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- ubuntu jammy: rdma-core 39.0-1 Β· BSD-MIT OR GPL-2.0-only
- ubuntu noble: rdma-core 50.0-2build2 Β· BSD-MIT OR GPL-2.0-only
- ubuntu noble: rdma-core 50.0-2ubuntu0.2 Β· BSD-MIT OR GPL-2.0-only
- ubuntu questing: rdma-core 56.1-1ubuntu1
- ubuntu resolute: rdma-core 61.0-2ubuntu3 Β· BSD-MIT OR GPL-2.0-only
- ubuntu stonking: rdma-core 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