Overview

Updated: April 19, 2023

The io-sock utility is the QNX Neutrino network manager. This is a process outside of the kernel space and executes in the application space. Along with providing the network manager framework, it also includes TCP/IP (TCP, UDP, IPv4, IPv6) support and a variety of other services built in. It is tailor made for multi-stream use cases with large message and buffer sizes.

The utility has full encryption and Wi-Fi capability built in.

For details about options, see io-sock in the “Utilities and Driver Reference” chapter.

You can dynamically load drivers either when you start io-sock or later, after io-sock has started (see Starting io-sock and Driver Management).

By default, driver interfaces are sequentially numbered with a name according to the driver type (e.g., em0 is an interface for an Intel PRO/1000 Gigabit Ethernet adapter driver). You can use ifconfig to specify the interface name using the syntax ifconfig name interface_name.

Drivers don't present entries in the name space to be directly opened and accessed with a devctl() command. Instead, a socket file descriptor is opened and queried for interface information. The ioctl() command is then sent to the stack using this device information.

The io-sock networking stack is designed to follow the FreeBSD networking stack code base and architecture as closely as possible. This provides an optimal path between the IP protocol and drivers, tightly integrating the IP layer with the rest of the stack. IP Filtering and NAT are handled through the packet filtering (PF) interface with pfctl (see Packet Filtering).

It's possible to launch more than one instance of io-sock (see Creating and starting an alternative stack). This ability is limited only by the management of the hardware interfaces, as typically only one driver instance (in one io-sock instance) would manage one hardware interface.