I'm looking into direct communication between a Mac and a Linux machine connected over Thunderbolt.
Thunderbolt networking works fine, but I'd like to explore whether it's possible to transfer data using native Thunderbolt DMA, without going through the TCP/IP stack. I've looked through the IOKit and DriverKit documentation, but most of what I've found relates to drivers for PCIe devices connected over Thunderbolt rather than communication between two hosts.
A couple of questions:
-
Is there a supported API for discovering Thunderbolt XDomain services and establishing native DMA-backed send/receive paths between hosts?
-
Can this be done from userspace or DriverKit, or would it require a kernel extension?
Ideally, I'd also like to keep the existing Thunderbolt networking interface working alongside it. Any pointers to relevant APIs or documentation would be appreciated.
Thanks!
There are two well-trodden paths for custom communication over Thunderbolt:
- TCP/IP
- RDMA, as described in TN3205 Low-latency communication with RDMA over Thunderbolt
It sounds like you want to dig into the second one (-:
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"