Architecture

Updated: April 19, 2023

The Networking Middleware package provides network and Wi-Fi management in embedded systems. These capabilities are made available to applications through a client library. This library interacts with the Networking Middleware services, which use the QNX Neutrino RTOS to send and receive data over wireless networks.

Note: This wireless and networking functionality is now provided in a package that you install onto a QNX SDP development host. The functionality is no longer provided in a separate product like it was with the QNX Wireless Framework.

The services in this package are intended for all types of connected, embedded devices, from small, headless monitoring units (e.g., home energy meters) to complex systems with multimedia UIs and third-party application support (e.g., infotainment).

The figure below illustrates the Networking Middleware architecture:


Figure 1. Networking Middleware Architecture

QNX SDP Networking Middleware services

The Network Manager and Wi-Fi Manager components in the libqwf_interface library provide an elaborate C API that's hardware-independent. This API lets clients manage network connections, perform station mode and access point Wi-Fi operations, retrieve configurations and state information, and register event handlers. Client applications must link against this library, and the library talks through PPS to the net_pps and wpa_pps services. These services use the QNX networking stack (io-pkt-*) and the WPA Supplicant to carry out requests, and publish the results.

Note: The Networking Middleware package also contains the Tether Manager service (tetherman), but this is configured through a startup module and not the C API, as explained in the Networking Middleware Services Reference.
The general functions supported are:
Networking (net_pps)
  • Data-plane handling of Network interfaces including handling of sockets for Wi-Fi connections
  • Routing and interface prioritization, resolver (DNS), VPN clients for a secure connection over a public network
Wi-Fi adapter handling (wpa_pps)
  • Setup and control of Wi-Fi modes (Access Point, Station mode)
  • Configure Wi-Fi Protected Access (WPA) connections
  • Retrieve status and state information for Wi-Fi connections

QNX Neutrino RTOS services

The QNX Neutrino components used directly by the Networking Middleware services include the io-pkt-* stack service and WPA supplicant. There are other OS services needed to perform supporting tasks, such as IP address management, authentication, and packet filtering. These are described in the “Deployment Model” chapter.

io-pkt

To configure wireless connections and communicate over them, the Network Manager and Wi-Fi Manager services use one or both of io-pkt-v4-hc and io-pkt-v6-hc (depending on whether IPv4 or IPv6 is used). Each version of this service implements the TCP/IP stack and runs device drivers that manage the physical transport of data.

WPA supplicant

The Wi-Fi Protected Access (WPA) supplicant handles authentication and communication with wireless device drivers. This service:
  • Provides a consistent interface for configuring all authentication and encryption mechanisms (unsecure, WEP, WPA, WPA2)
  • Supports configuration of ad hoc and infrastructure modes of operation
  • Maintains the network configuration information in a file (by default, /etc/wpa_supplicant.conf)
  • Provides auto-connectivity, allowing a client to connect into a WPA without user intervention
The wireless device drivers offer these capabilities:
  • Split data plane and control plane handling
  • Logical data channels, IP packet handling, flow control
  • Logical channel multiplexing (data, control, diagnostic)
  • Physical interface management (USB, HSI, HSIC, LLI)