Re: IPX broadcast forwarding in 2.4.1 kernels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 28 Feb 01 at 12:27, Arnaldo Carvalho de Melo wrote:

> humm, just read the doc and the code, I have to disagree, lets see:
> 
> when we get into the '/* That aren't in the list */' we know that the
> current network has not seen this packet, otherwise we would already have
> the packet droped in '/* Dump packet if already seen this net */', oh, yes,
> we delay putting the if_netnum in the packet, but when it hits ipxitf_send
> we do it, before sending it to the wire, so when we get this packet again our
> netnum is in the packet and get discarded by /* Dump packet if already seen
> this net */, do you see any flaw in this explanation?

But code in ac4 puts there (in ipxitf_send) number of sending interface,
not receiving.

When NetBIOS propagation packet is first sent to network, it does not
contain any travelled numbers. 
When frame is received by router, it verifies that network number on 
which received this packet is not in the list already - if all 
implementations are correct, this is never true. Maybe we could even 
print 'node .... does not follow IPX netbios routing rules correctly'. 
Of course only few times...

Then network number on which packet was received is put into packet.

Then for all connected interfaces verify that their numbers are not already
in packet - if it is, frame already visited that network. If it is not,
send it here.


Your code does two last steps in reverse order, and puts sending, not
receiving frame number, into packet...

> > Either store intrfc->if_netnum into packet before loop with '/* That aren't 
> > in the list */', or do explicit check for ifcs != intrfc. But storing number 
> > before looks better - code in ipxrtr_route_skb() does not know receiving 
> > interface anyway, and you want same number in all copies.
> > 
> > I hope that I missed something obvious. If not, then peoples in larger
> > networks should add some '&& 0' into pprop code to disable it.
> 
> Humm, maybe this should be a compile time option? From what I've seen this
> code is even still listed as non supported in include/net/ipx.h, look:

sysctl. I'd like to have two options: disable routing at all, and disable
pprop routing. 
 
> #define IPX_TYPE_PPROP          0x14    /* complicated flood fill brdcast
> [Not supported] */

It is supported, unfortunately using 'old' netbios packet propagation
logic. There is also 'new' logic (but probably not available as 
specification), which uses cache for last few netbios packets, and if
same packet was already seen, it ignores it. 'old' logic has bad 
(x^3, where x is number of such routers) behavior when more than one 
netbios aware router exist between two networks (this is case when more 
than one frame is bound on each box).

> that it reflects the algorithm in the IPX Router specification more
> clearly. And I'll set up a Netware 3.12 server in my home lab, I think and
> old 386 with 10 MB and 80 MB of disk space is enough. Hey, my home lab is
> getting bigger and bigger 8)

Get VMware ;-) You won't notice couple of 8MB NW3.11 on dual PIII/800 with 
256MB of RAM...
                                                    Petr Vandrovec
                                                    vandrove@vc.cvut.cz
                                                    
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux