The Network Manager is responsible for propagating the QNX messaging primitives across a local area network. The standard messaging primitives used in local messaging are used unmodified in remote messaging. The Network Manager does not have to be built into the operating system image. It may be started and stopped at any time to provide or remove network messaging capabilities.
When the Network Manager starts, it registers with the Process Manager and Kernel. This activates existing code within the two that interfaces to the Network Manager. The Kernel and Process Manager interface to the Network Manager via a special nonblocking memory queue. This queue is essentially a list of transmissions to be performed by the Network Manager. The entries contain all the information for a particular operation (e.g. Send(), Reply(), VC creation, remote signal propagation, etc.).
In the case of a Send() or Reply() to a remote node, the following events occur:
In the case of a signal propagation or VC creation, the Process Manager rather than the Kernel would enqueue a control packet. Nevertheless, the Network Manager would transmit the packat to its destination.
The following events occur on the node receiving the message:
Any control packets the Network Manager receives are forwarded immediately to the Process Manager via the standard Send() primitive. These control packets are used for signal propagation and VC creation.
Like the Filesystem Manager and the Device Manager, the Network Manager contains no hardware-specific code. This functionality is provided by network card drivers. The Network Manager can support multiple network drivers at one time. Each driver typically supports a single network card. Shared memory queues provide the interface between the Network Manager and drivers. The driver is responsible for packetization, sequencing, and retransmission if reliable guaranteed data transmission to a remote physical node is requested.