Overview
The io-sock utility is the QNX OS 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.
- Included services: UDP, TCP, BPF, TUN, TAP, IPSec, PF (packet filtering)
For details about options, see the io-sock entry in the Utilities Reference.
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.