Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - routing qnet packets: (6 Items)
   
routing qnet packets  
I'm wondering what support qnet might have for routing packets (in the io-pkt world, of course).

Specifically, if I have a network diagram (as in the one attached), how do i make sure that qnet packets get routed from
 one node to the other?

I've tried starting qnet as follows:

mount -T io-pkt -o bind=ip,bind=mos0 /proc/boot/lsm-qnet.so

but the packets still don't get routed.
Attachment: Image uControl_Network.png 30.26 KB
RE: routing qnet packets  
Hi Gary:
	As I'm assuming you know, QNET Ethernet packets aren't routed so
you have to use bind=ip (for anyone who may not know).  I'm a bit
confused about the second bind=mos0 option.  This suggests that you're
trying to bind to both Ethernet and IP at the same time (which should
work, but seems a bit peculiar).  The other thing you'll want to do is
add a "resolv=dns" option to allow name resolution to go through the DNS
server.  This should really happen by default when using IP, but it
doesn't.

Once the options are correct, what happens now is standard IP routing.
I'm assuming that the two nodes are on different subnets (otherwise the
routers don't make sense).  To route packets from one node to the other,
each node needs to have a default route set to that of their respective
routers.  Each router also needs to have a route set to point the subnet
of the other node at the other nodes router (confusing enough)?  

If the routers are acting as DHCP servers and the nodes are receiving
their addresses via DHCP, then the default routes are set up by DHCP.
If not, you need to add them by hand (route add default x.x.x.x).

If the nodes can ping each other, then this should be all that you need
to do to get qnet working over IP.

If you want to have names for the qnet nodes instead of IP addresses and
the nodes aren't in a DNS server somewhere then you need to set up your
resolv.conf to use /etc/hosts for name resolution instead of trying to
reach a DNS server. You just have to add a "lookup file" option to
/etc/resolv.conf to make this work.  You can also adjust the _CS_RESOLVE
configuration string (e.g. setconf _CS_RESOLVE lookup_file ). 

	Hope this helps...
		Robert

-----Original Message-----
From: Gary Faulkner [mailto:gary.faulkner@ucontrol.com] 
Sent: Tuesday, July 15, 2008 2:47 PM
To: general-networking
Subject: routing qnet packets

I'm wondering what support qnet might have for routing packets (in the
io-pkt world, of course).

Specifically, if I have a network diagram (as in the one attached), how
do i make sure that qnet packets get routed from one node to the other?

I've tried starting qnet as follows:

mount -T io-pkt -o bind=ip,bind=mos0 /proc/boot/lsm-qnet.so

but the packets still don't get routed.


_______________________________________________
General
http://community.qnx.com/sf/go/post10558
Re: RE: routing qnet packets  
Thanks Robert!!

First, i *was* using bind=mos0 because when qnet started up, it complained that it was going to ignore that interface if
 I only gave it the bind=ip.

I now see what you're talking about though.

However, I guess this leads to another question for me:

I startup qnet as follows (now):

mount -T io-pkt -o bind=ip,resolve=dns /proc/boot/lsm-qnet.so

and it seems to start just fine, and I get the /net directory created.

However, a simple test of 

ls /net/127.0.0.1/ returns

ls: No such process (/net/127.0.0.1/)

and in sloginfo:

qnet(QOS): nd_change_notify(): Node Down: nd 3 127.0.0.1

I also tried it's non-localhost ip address (in my case, 192.168.12.100):

ls /net/192.168.12.100/
ls: Host is down (/net/192.168.12.100/)
# sloginfo -c
Time             Sev Major Minor Args
Jul 15 16:18:30    7    15     0 qnet(L4): l4_resolve_node_up_ip_ionet(): nd 5 L4 0 has IP address 640CA8C0 in ndb

Jul 15 16:18:30    7    15     0 qnet(QOS): nd_change_notify(): Node Up:   nd 5 192.168.12.100

Jul 15 16:18:30    7    15     0 qnet(QOS): tx_xmit_init_conn_pkt(): ndb_query_nd() failed for src nd 0

Jul 15 16:18:30    7    15     0 qnet(QOS): tx_complete(): callback for nd 5 to layer 0 with errno 264

Jul 15 16:18:30    7    15     0 qnet(kif): kif_server_outbound_failed(): NTONET_CONNECT server busy 19b1d0

Jul 15 16:18:30    7    15     0 qnet(QOS): nd_change_notify(): Node Down: nd 5 192.168.12.100

so... I'm just wondering what I'm missing here.  I'm sure it's something simple.

RE: RE: routing qnet packets  
From: Gary Faulkner [mailto:gary.faulkner@ucontrol.com] 

> First, i *was* using bind=mos0 because when qnet started up, 
> it complained that it was going to ignore that interface if 
> I only gave it the bind=ip.

Assuming that mos0 is your (single?) ethernet interface,
Specifying both bind=ip and bind=mos0 should start two
L4's and allow you to talk to both routed machines
and also machines only on your local network.

> mount -T io-pkt -o bind=ip,resolve=dns /proc/boot/lsm-qnet.so

looks ok

> ls /net/127.0.0.1/ 

that can never work, sorry - you need a different hostname,
not localhost.

It looks like a resolver problem.  Assuming you are on
"host1", do the following:

# ping host2

If that works, then "ls /net/host2" should work.

--
aboyd
Re: RE: RE: routing qnet packets  
Comments inline...

> From: Gary Faulkner [mailto:gary.faulkner@ucontrol.com] 
> 
> > First, i *was* using bind=mos0 because when qnet started up, 
> > it complained that it was going to ignore that interface if 
> > I only gave it the bind=ip.
> 
> Assuming that mos0 is your (single?) ethernet interface,
> Specifying both bind=ip and bind=mos0 should start two
> L4's and allow you to talk to both routed machines
> and also machines only on your local network.

yes, this is correct; realistically, i'll never have hosts on my local network... so I can drop the bind=mos0.

> that can never work, sorry - you need a different hostname,
> not localhost.

So, if my actual ip address of the local node is 192.168.12.100, then a ls /net/192.168.12.100 would never work?

> It looks like a resolver problem.  Assuming you are on
> "host1", do the following:
> 
> # ping host2
> 
> If that works, then "ls /net/host2" should work.
> 
> --
> aboyd

So... give the network diagram that I have above, i have two hosts.  Router 1 NATs host1, and router 2 NATs host2.  
Internally, they both have the same actual IP address (192.168.12.100).  But, they're external IP addresses are (of 
course) different... one is at 192.168.99.166, and the other is at 192.168.99.232.

I can ping between them just fine.

However, I cannot get qnet to work between them.

Is there a specific port that qnet needs to have forwarded??
RE: RE: RE: routing qnet packets  
From: Gary Faulkner [mailto:gary.faulkner@ucontrol.com] 

> i'll never have hosts on my local network... so I can 
> drop the bind=mos0.

ok

> if my actual ip address of the local node is 192.168.12.100, 
> then a ls /net/192.168.12.100 would never work?

right.

Try adding host1/192.168.99.166 and host2/192.168.99.232 
to your /etc/hosts file on both machines.  Make sure you 
specify the domain there as well, and make sure that

# getconf _CS_DOMAIN

And

# hostname

returns what you think it should on both machines.

Then restart io-pkt (qnet) on both sides and try it
again.

--
aboyd


So... give the network diagram that I have above, i have two hosts.
Router 1 NATs host1, and router 2 NATs host2.  Internally, they both
have the same actual IP address (192.168.12.100).  But, they're external
IP addresses are (of course) different... one is at 192.168.99.166, and
the other is at 192.168.99.232.

I can ping between them just fine.

However, I cannot get qnet to work between them.

Is there a specific port that qnet needs to have forwarded??


_______________________________________________
General
http://community.qnx.com/sf/go/post10606