[comp.protocols.tcp-ip.ibmpc] NetBIOS Datagrams: Potential Incompatibility

kuan@TWG.COM (Chia-Chee Kuan) (03/17/89)

According to the pseudo code listed in appendix C page C-47 in "Technical
Reference: IBM PC Network", it does seems to me a received datagram completes
all pending RECEIVE DATAGRAM commands which have matching source and 
destination specification.  This brings the two most authoritative
documents, "Technical Reference: IBM PC Network" and RFC1001/1002, together
without conflicting each other.  

The Wollongong RFC1001/1002 implementaion is consistent with Brett Glass's
work and the references that he posted.  I believe there are many NetBIOS
implementations that behave the same.  We would like to see a consensus
among NetBIOS implementors to ensure the RFC1001 standard ( or the other
way around).  

Chia-Chee Kuan
The Wollongong Group
Tel: 415-962-7171

glass@anableps.berkeley.edu (Brett Glass) (03/18/89)

In article <8903161245.aa20821@Obelix.TWG.COM> kuan@TWG.COM (Chia-Chee Kuan) wri
tes:

>According to the pseudo code listed in appendix C page C-47 in "Technical
>Reference: IBM PC Network", it does seems to me a received datagram completes
>all pending RECEIVE DATAGRAM commands which have matching source and
>destination specification.  This brings the two most authoritative
>documents, "Technical Reference: IBM PC Network" and RFC1001/1002, together
>without conflicting each other.

I've examined Appendix C, page C-47 of "Technical Reference: IBM PC
Network," and I see the section you're referring to; indeed,
there isn't a clear indication that the checking process
terminates after the first match is found. [I originally thought
I DID see such an indication, and posted two articles to that
effect to this newsgroup. But I cancelled them after taking
another look at the IBM manual.]

The one thing I can say for certain -- because I've checked it --
is that NO IBM implementation of NetBIOS has actually satisfied
more than one Receive Datagram command with a single datagram.
IBMer Dave Schwaderer's book and third-party NetBIOS
implementations also support this modus operandi. It's possible
that the description in IBM's manual was never checked for
accuracy, or even that it was INTENTIONALLY vague to make
correct implementation more difficult. But the de facto standard
is that only one command is satisfied.

As it turns out, the "Receive Datagram" pseudocode in RFC1002
could be made consistent with "reality" by moving a single line and
deleting one comment:

X Delete               /*
X                       * Replicate received NetBIOS datagram for
X                       * each recipient
X                       */
                       FOR EACH pending NetBIOS user's receive
                            datagram operation
                       BEGIN
                            IF source name of operation
                               matches destination name
                               of packet THEN
                            BEGIN
                               deliver USER_DATA from UDP
                                 packet(s);
                  +--------->
           Move   |         END
                  |    END /* for each */
                  --<< return;
                  END /* good */

I think it might be a good idea to make this change, and to
correct the other parts of the documents accordingly.

--Brett

karl@TRWIND.IND.TRW.COM (Karl Auerbach) (03/18/89)

Once more -- RFC1001/1002 specify only the protocol, not the
service interface.

It is unfortunate that Sytek/IBM and RFC1002's pseudo code tend to
mix the protocol with the service functions.  To that extent RFC1001/2
are misleading.

It would simply have been better if RFC1001/2 had avoided even mentioning
NCB's and the typical operations entirely.  It would have avoided this
discussion about the material in the RFCs which are not part of the
specification but which were included merely to be helpful and assist
understanding.  I am sure this is why OSI doucments are so devoid of
explaination.

In any case Brett's comments are well taken -- the RFC should not be
misleading even in the ancillary material.  And the pseudo code should
be changed to remove references to operation of the service interface.


The only question in my mind is what is the "official" version of the
interface. I may have to grab some Sytek/IBM PC-net boards (the orignal
ones) and run a test.

				--karl--