Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® SDP 7.1 High-Performance Networking Stack (io-sock): Release Notes

Date of this edition: September 13, 2022


Note: Changes to these notes since September 1, 2022 are highlighted below with this icon: New:

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)

Note:
  • Install this release on a QNX Software Development Platform 7.1 installation that doesn't include previous experimental releases.
  • Some product packages contain experimental files. To access status information, do one of the following:
    • In the QNX Software Center, right-click a package, choose Properties, then click Package Contents. The status of each file in the package is displayed.
    • Sign in to www.qnx.com. On the right side of the web page, under Product Registration, click QNX Software Center Portal. Use the portal to search using the Build ID that use -i displays. The binary information that is displayed includes the state.
    • Generate a manifest report. For more information, see the Manifest Reports & File Lookup chapter of the myQNX License Manager and QNX Software Center User's Guide.

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:

    1. 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
    2. 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
  • 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)
  • New: 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:

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.