QNX Technical Articles
QNX® SDP 7.1 High-Performance Networking Stack (io-sock): Release Notes
Date of this edition: September 13, 2022
![]() |
Changes to these notes since September 1, 2022 are highlighted below with this icon:
![]() |
QNX SDP 7.1 High-Performance Networking Stack provides a networking stack and manager (io-sock) built on a FreeBSD code base and is tailor made for multi-stream use cases with large message and buffer sizes. It is provided in addition to the networking stack and manager currently included in SDP 7.1 (io-pkt). Customers should utilize only one of the QNX SDP 7.1 networking stack and manager options.
Target OS: This release is compatible with targets that are running QNX® Neutrino® that's based on QNX Software Development Platform 7.1.
Host OS: To install this release, you must have installed the QNX Software Development Platform 7.1 on one of the following development hosts:
- Microsoft Windows 10 Pro 64-bit, or Windows 8.1 Pro 64-bit
- macOS version 10.14, or 10.15
- Linux Red Hat Enterprise Linux 7 64-bit, or Ubuntu Desktop 18.04 or 20.04 LTS 64-bit, on x86_64 processors (QNX SDP isn't supported on Linux on ARM processors)
![]() |
|
Contents
What's in this release?
The Networking > SDP 7.1 Networking Group (io-sock) (with Debug Symbols) package (found under Available -> QNX Software Development Platform) installs the following packages:
Name | Package | Package Internal Version | Build ID |
---|---|---|---|
Networking > QNX SDP 7.1 Networking - io-sock devs DDK (with Debug Symbols) | com.qnx.qnx710.target.net.devsddk | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - io-sock FDT Drivers (with Debug Symbols) | com.qnx.qnx710.target.net.devsfdt | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - io-sock PCI Drivers (with Debug Symbols) | com.qnx.qnx710.target.net.devspci | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - io-sock PHY Drivers (with Debug Symbols) | com.qnx.qnx710.target.net.devsphy | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - io-sock USB Drivers (with Debug Symbols) | com.qnx.qnx710.target.net.devsusb | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - io-sock (with Debug Symbols) | com.qnx.qnx710.target.net.iosock | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - autoipd (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockautoipd | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - BIND (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockbind | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - curl (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockcurl | 0.0.6.01541T202207251825L | 1541 |
Networking > QNX SDP 7.1 Networking - io-sock DHCP (with Debug Symbols) | com.qnx.qnx710.target.net.iosockdhcp | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - ftp (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockftp | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - ftpd (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockftpd | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking Group (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockgroup | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - io-sock inetd (with Debug Symbols) | com.qnx.qnx710.target.net.iosockinetd | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - iperf2 (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockiperf2 | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - ipsec (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockipsec | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - Network File System (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosocknfs | 0.0.6.01541T202207251825L | 1541 |
Networking > QNX SDP 7.1 Networking - NTP (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockntp | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - io-sock OpenSSH (with Debug Symbols) | com.qnx.qnx710.target.net.iosockopenSSH | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - io-sock Pcap (with Debug Symbols) | com.qnx.qnx710.target.net.iosockpcap | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - PTP (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockptp | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - syslogd (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosocksyslogd | 0.0.4.01121T202108111432L | 1121 |
Networking > QNX SDP 7.1 Networking - telnet (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosocktelnet | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - telnetd (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosocktelnetd | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - tftp (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosocktftp | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - tftpd (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosocktftpd | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - Utilities (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.net.iosockutils | 0.0.6.01485T202205311830L | 1485 |
Networking > QNX SDP 7.1 Networking - WPA/WPA2/IEEE 802.1X Supplicant for use with io-sock (with Debug Symbols) | com.qnx.qnx710.target.net.wpa_supplicant.iosock | 0.0.6.01227T202110181824L | 1227 |
OS Security > QNX SDP 7.1 Security - Crypto - io-sock OpenSSL Library (with Debug Symbols) | com.qnx.qnx710.target.security.crypto.iosock.openssl | 0.0.6.01485T202205311830L | 1485 |
OS Services > QNX SDP 7.1 OS Services - XML Document Support (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.base.iosocklibxml2 | 0.0.4.01121T202108111432L | 1121 |
OS Utilities > QNX SDP 7.1 Utilities - E (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.utils.base.iosocke | 0.0.4.01121T202108111432L | 1121 |
OS Utilities > QNX SDP 7.1 Utilities - Debugging Tools (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.utils.iosockdebugtools | 0.0.4.01121T202108111432L | 1121 |
OS Utilities > QNX SDP 7.1 Utilities - GNU Awk (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.utils.iosockgawk | 0.0.4.01121T202108111432L | 1121 |
OS Utilities > QNX SDP 7.1 Utilities - dumpifs Utility (QNX Neutrino RTOS) (with Debug Symbols) | com.qnx.qnx710.target.utils.system.dumpifs | 0.0.4.01121T202108111432L | 1121 |
To see a list of the contents of a package, right-click it in the QNX Software Center, choose Properties, and then click Package Contents.
BSPs
To use this release, you need a BSP that supports io-sock. Currently, the following BSPs that support io-sock are provided, under Available -> QNX Software Development Platform -> Board Support Packages. To view and install them, enable Install experimental packages in the QNX Software Center installation properties:
Name | Package | Package Internal Version | Build ID |
---|---|---|---|
QNX SDP 7.1 BSP for NXP S32G274A EVB io-sock | com.qnx.qnx710.bsp.nxp_s32g_evb_iosock | 0.0.6.00926T202208101406L | 926 |
QNX SDP 7.1 BSP for Generic x86_64 io-sock (64-bit) | com.qnx.qnx710.bsp.x86_64_iosock | 0.0.6.00926T202208101405L | 926 |
For guidance on modifying an existing BSP to support io-sock, see the High-Performance Networking Stack (io-sock) User's Guide (see Getting started with the documentation).
Optional packages
The following package contains optional content and is not automatically installed when you install the io-sock group package. It is found under Available -> QNX Software Development Platform -> Device Drivers:
Name | Package | Package Internal Version | Build ID |
---|---|---|---|
QNX SDP 7.1 Wireless Driver for Cypress DHD PCIe Based Chips (io-sock) (with Debug Symbols) | com.qnx.qnx710.target.driver.iosockcypress_dhd_pcie | 0.0.6.00183T202110211455L | 183 |
Known issues
- ICMP packets are not discarded when you use arp -s hostname ether_addr blackhole to specify that traffic to the host should be discarded. (Ref# J2889259)
- ICMP packets are not rejected when you use arp -s hostname ether_addr reject to specify that traffic to the host should be rejected. (Ref# J2889256)
- Running the command netstat -i -s shows only IPv6 statistics per interface instead of both IPv4 and IPv6 statistics. (Ref# J2890856)
- On Windows OS development hosts, the io-sock BSP fails to build IFS images because the buildfile uses incompatible path field separators. (Ref# J2898091)
Workaround: In the buildfile, change all the path field separators in the search argument from a colon (:) to a semicolon (;). For example, change the following line:
[search=../../install/${PROCESSOR}:../../install/${PROCESSOR}/io-sock:../../install:${QNX_TARGET}/${PROCESSOR}/io-sock:${QNX_TARGET}/io-sock:${QNX_TARGET}/${PROCESSOR}:${QNX_TARGET}]
to:[search=../../install/${PROCESSOR};../../install/${PROCESSOR}/io-sock;../../install;${QNX_TARGET}/${PROCESSOR}/io-sock;${QNX_TARGET}/io-sock;${QNX_TARGET}/${PROCESSOR};${QNX_TARGET}]
- On AArch64 targets, when running multiple ingress UDP streams (e.g., 8 streams at 16 Mbps), socket buffers may be exhausted, which causes packet loss. (Ref# J2906715)
Workaround: Use the following io-sock configuration changes to increase buffer sizes, which improves throughput quality and reduces packet loss:
- Use the sysctl utility to increase the buffer size on the target from the default (2097152 bytes) to 16777216 bytes:
# sysctl -w kern.ipc.maxsockbuf=16777216 kern.ipc.maxsockbuf: 2097152 -> 16777216
- Provide a socket receive buffer of at least 3.6 MB.
To test this adjustment, measure UDP ingress multiple stream performance, using a time duration of at least 600s. For example, use iperf2 in UDP server mode to measure ingress throughput with a 3.6 MB receive buffer:
# iperf2 -u -s -w3.6m
The following command measures client-side performance, using a time duration of 600s with 8 UDP streams at 16 Mbps rate per stream:$ iperf -u -c 192.168.33.111 -P8 -b 16m -t 600
- Use the sysctl utility to increase the buffer size on the target from the default (2097152 bytes) to 16777216 bytes:
- Linksys USB3GIG (cdce) drops fragments on large packets. (Ref# J2906702)
- Missing usb.h/usbdi.h header files from the io-sock 7.1 SDP. (Ref# J2909293)
- The io-sock stack crashes if iflib bounce buffers are used. (Ref# J2920266)
- The io-sock stack crashes when it receives a SIGTERM signal and is restarted repeatedly, and is also responding to resource manager clients. (Ref# J2919436)
- In some cases, a race condition is created between ifwatchd startup and interface creation. (Ref# J2918865)
- The c_caddr_t type is missing. (Ref# J2917375)
Workaround: Use the following code to add c_caddr_t to types_fbsd.h.
typedef const char * c_caddr_t;
- In some cases, attaching USB network interfaces creates a race condition that may cause io-sock to crash on startup. (Ref# J2910614)
- In server (master) mode, ptpd2 sends out Sync messages at 1 message per second (i.e., with a log Sync interval of 0). It should instead conform to the default value specified by IEEE 802.1AS-2011, which is 8 Sync messages per second (interval is -3). (Ref# J2908176)
- There is a 128 KB limit on the data passed to and from io-sock in an ioctl() call. This limitation can be seen when you try to show the contents of the TCP connection state table (using pfctl -s states) and it has more than 300 entries. (Ref# J2919335)
The QNX Momentics IDE's help system does not include the High-Performance Networking Stack (io-sock) User's Guide. (Ref# J2922291)
Workaround: Use the HTML or PDF version of the guide provided on the QNX website. See
Getting Started with the documentation.
Getting started with the documentation
For information about using the io-sock networking manager and adapting your QNX applications to work with io-sock, see the High-Performance Networking Stack (io-sock) User's Guide. Use one of the following methods to access it:
- Access the HTML version using the QNX Product Documentation page.
- For the PDF version, log in to the QNX website with your myQNX account, and then go to the QNX Software Development Platform 7.1 Documentation page.
Technical support
To obtain technical support for any QNX product, visit the Support area on our website (https://blackberry.qnx.com/en/support). You'll find a wide range of support options, including community forums.