TCP/IP stack impl. in QNX RTP

Hi,
I would like to know how TCP/IP stack is in-built into the Operating
System in QNX Real time platform (QNX Neutrino Microkernel). I can see
the usage of npi-ttcpip.so library, io-net resource manager and
dev-n*.so libraries. But where exactly does the TCP/IP stack reside? How
does it communicate with the microkernel ?

Also If I want to implement a stack of my own, how do I attach it
to the operating systems.

Thanks in advance,
Vijay

Vijay <svijayab@in.ibm.com> wrote:
: Hi,
: I would like to know how TCP/IP stack is in-built into the Operating
: System in QNX Real time platform (QNX Neutrino Microkernel). I can see
: the usage of npi-ttcpip.so library, io-net resource manager and
: dev-n*.so libraries. But where exactly does the TCP/IP stack reside? How
: does it communicate with the microkernel ?

: Also If I want to implement a stack of my own, how do I attach it
: to the operating systems.

: Thanks in advance,
: Vijay

The npi-* implies an earlier version. With the RTP, scheduled to be
released in “late summer”, we will make available a network SDK. It’s
currently geared towards writing drivers but there’s little difference
between a driver and a stack from io-net’s point of view. ie there’s
no reason you couldn’t replace our stack / add a stack of you own.

-seanb

Vijay <svijayab@in.ibm.com> wrote:

Hi,
I would like to know how TCP/IP stack is in-built into the Operating
System in QNX Real time platform (QNX Neutrino Microkernel). I can see
the usage of npi-ttcpip.so library, io-net resource manager and
dev-n*.so libraries. But where exactly does the TCP/IP stack reside? How
does it communicate with the microkernel ?

The “exactly TCPIP stack” (the one handles ip/udp/tcp) is npm-ttcpip.so.
devn-*.so are “drivers” who hit hardware, tx/rx datas. They are all loads
into io-net, io-net act as a “packet bus”, which passing packet from
…so to .so

There is no “communicate” with microkernel. You must understand everything
is out of “kernel”.

Why do you need anything from “kernel”, if devn-* can passing data to
npm-ttcpip.so, and npm-ttcpip.so could send data (packet) out though devn-* ?

You may want to ask how an applicaton who is doing “socket()/connect()/send()”
can talk to stack. The library is build so that these calles “direct”
to the npm-ttcpip.so. So the application send their request direct to
stack (this time, they using microkernel’s message passing function),
and get answers from tcpip stack.

This give you an idea how tcpip is working under QNX. In fact, everything
under QNX is working like this. (Devb-eide control the harddisk, file
system will talk to devb-eide to read/write from harddisk, user application
will talk to filesystem to open/close file…, all those parts triditionally
in “kernel”, is an out standing appilcation, so you could simply stop/restart
it, or replace it if you want. Also, they are out standing application, so
each one is memory protected, one crash will not effect others. That means you can
crash devb-eide, lost your filesystem, but your network stuff should still
work.)

Also If I want to implement a stack of my own, how do I attach it
to the operating systems.

Basically you have to know 2 things, (assume you have enough knowlodge
about tcpip stack)

  1. How you connect your xxx.so into io-net, so io-net know where to deliever
    your packet, and what kind of packet to give to you. There is a network
    development kit (sth like that) is going to be release. (Not sure it will
    release when QRP relase).

  2. You also need to know how to service applications when they talk to you.
    This thing in Neutrino called “resource manager”, there is lot of manuals,
    books talking about this issue.

-xiaodan