Thunderbolt allows for peer-to-peer network connections by connecting two computers directly via a thunderbolt cable. Mika from Intel added support for this to the 4.15 kernel. Recently, Thomas Haller from NetworkManager and I worked together to figure out what needs to be done in userspace to make it work. As it turns out, it was not that hard and the pull-request was merged swiftly.
So now if you connect your GNU/Linux box to another machine, NetworkManager will configure the connection to be a Link-Local one.
I have successfully tested Fedora to Fedora, Fedora to macOS and Fedora to Windows 10. The other operating systems also use a Link-Local address by default.
The technical details
When another host is connected via thunderbolt, we get a new device in sysfs that resembles a normal thunderbolt device but is of DEVTYPE
thunderbolt_xdomain
. Like a normal thunderbolt device, it has a unique_id
and a device_name
, but is missing the authorized
and key
attributes. A new udev rule in NetworkManager was added to load the thunderbolt-net
kernel module. As a result, we get a new network device (thunderbolt0
).
Another udev rule will set a new udev property (NM_AUTO_DEFAULT_LINK_LOCAL_ONLY
) to all network devices where the driver is thunderbolt-net
to instruct NetworkManager to use the Link-Local configuration on these interfaces.
The dev snapshot release 1.11.3-dev has the thunderbolt networking support. Grab it, build it, and start playing around with it! Feel free to post your record transfer speeds in the comments ⚡ 🏆.