Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - Additional interface with QNET: (5 Items)
   
Additional interface with QNET  
I would like to add a second interface to qnet based on a different technology but preserving the Ethernet connectivity 
with the goal of extending transparent networking to nodes connected in different ways.

As example:

NodeA1 --|-- NodeB ----- NodeC
NodeA2 --|                               

RapidIO is between NodeA1, NodeA2 and NodeB. Gigabit Ethernet is between NodeB and NodeC.

To have a connection between NodeA1 and NodeC, NodeB must act as a gateway using two different technologies. QNET must 
handle within NodeB two different connection types.

Is it possible to add a L3 module ? 
Or maybe is there a more effective way to do the job ?
Re: Additional interface with QNET  
One idea might be to run Qnet over IP and implement a driver for IP over 
RapidIO...
Another might be to bridge ethernet over RapidIO...
/P

Enrico Bendinelli wrote:
> I would like to add a second interface to qnet based on a different technology but preserving the Ethernet 
connectivity with the goal of extending transparent networking to nodes connected in different ways.
>
> As example:
>
> NodeA1 --|-- NodeB ----- NodeC
> NodeA2 --|                               
>
> RapidIO is between NodeA1, NodeA2 and NodeB. Gigabit Ethernet is between NodeB and NodeC.
>
> To have a connection between NodeA1 and NodeC, NodeB must act as a gateway using two different technologies. QNET must
 handle within NodeB two different connection types.
>
> Is it possible to add a L3 module ? 
> Or maybe is there a more effective way to do the job ?
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post44088
>
>   
Re: Additional interface with QNET  
I seem to remember that there was a rapidio implementation developed for some Freescale parts (never officially release)
 that included a pseudo-ethernet over RapidIO driver.  It might be worthwhile talking to your sales rep. to see if you 
can get the source.  

    R.
RE: Additional interface with QNET  
> run Qnet over IP

Right.

Most people use Qnet in a local, direct-connected
fashion.  This works well for most applications 
because of the thousands of small messages that
they send.  For decent performance, you need a small
RTT.

Anyways, the key to making your topology work is
if your driver emulates ethernet, complete with
the hoary old 14 byte MAC header of two addresses
with a protocol type.

See, if your driver looks just like an ethernet
device to the higher-level protocols - ie the
protocol transmits and receives stock ethernet
packets - then all sorts of stuff starts to work,
like Qnet over IP.  See the bind option.

Qnet over IP encapsulates the qnet packet in an
IP packet and thus allows it to be routed.  Of
course, there is a performance hit to this - see
RTT mumblings above - but you don't get something
for nothing.

--
aboyd


Re: Additional interface with QNET  
RapidIO was just an example to have a suggestion about the architecture, however our real need is different.

We developed an hypervisor within qnx to run multiple independence instances of the OS in a multicore board by 
partitioning the available cpu cores. In this way we can split the management of the network interface between the 
available OS instances.

We added in startup-bios the ability to:

- split the memory between the cores
- manage the interrupt via Apic/Lapic and msi (some code was available already in the trunk of svn)
- manage the tick of the peripheral OS via the Lapic

We created an utility to let the first OS owning the disk and the console, to load and start the other OS instances.

At the moment the cores interwork via Ethernet, now we start playing with QNET to make the cores communicate each other 
by means of a shared memory segment.  By the way we need to have this function running in parallel with Ethernet to 
allow routing of the packet from any core to the external hosts as well.

What is the best approach for modifying QNET ?