Network Manager

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:

  1. Te process calls Send() or Reply() and the Kernel copies the data from the process's data space into the virtual circuit buffer associated with the VC specified by Send() or Reply().
  2. The Kernel enqueues to the Network Manager a time-ordered queue entry identifying the sender, the remote receiver, and pointers to the data in the virtual circuit buffer. If the queue was previously empty, the Network Manager's proxy is triggered to let it know new work has arrived.
  3. The Network Manager dequeues the queue entry.
  4. The Network Manager begins transmission on the network media. The manager is reponsible for delivery.

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:

  1. Network data arrives on the media.
  2. The Network Manager copies the message data into the appropriate virtual circuit buffer.
  3. The Network Manager uses a private kernel call to inform the Kernel that the reception is complete.
  4. The Kernel copies the data from the virtual circuit buffer into the process's buffer (assuming it was RECEIVE- or REPLY-blocked on this virtual circuit).

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.

Network drivers

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.