[comp.protocols.tcp-ip.ibmpc] Sunday Afternoon Observations

BRACKENRIDGE@C.ISI.EDU (Billy) (11/09/87)

I have wanted to respond to several subjects, but have been busy.  I
just finished a major piece of software this afternoon. So with the
help of a bottle of Joseph Phelps 1981 Zinfandel, I have time to drop
a few pearls of wisdom on the net.

BOF AT TCP/IP INTEROPERABILITY CONFERENCE:

John Romkey will be leading a BOF on PCs and Macs at the Washington
DC TCP/IP interoperability conference the first week of December. I
guess this covers PC/IP and all the other variations. I am sure Phil
Karn will be there as will be many from that and other camps. It
should be an exciting meeting. As many of us found last year, the
sessions are interesting but the real business takes place in the
halls. Dan Lynch, who runs this conference, knows his technology and
combines that with a great sense of showmanship. His conferences
are a lot of fun.  John's address is: ROMKEY@XX.LCS.MIT.EDU
(617)868-4878 in case you are new to this list. 

If you are a player in TCP/IP networking you should be at this
conference. I don't have the mailing address and phone but contact
LYNCH@ISI.EDU if you need registration information.

[Dan Lynch would shamelessly bribe me to plug his conference, but
didn't have to. -wab]

STANDARD LOW LEVEL INTERFACE:

I favor a standard hardware interface. I am working for a company
called IPT. (Until this month Lutsky Baird). One of our unannounced
products is an Ethernet card for the AT style bus. It is based on the
AMD 7990 chip set.  This is the same chip set used in the SUN 4. I have
looked at all the Ethernet chips and think this looks the best on
paper. As this chip set allows multiple ethernet addresses per board, a
driver could easily multiplex between several client processes
running the same protocol family.

My first task is to write drivers and give them away to anybody
who wants them. I will start with the university distributed
PC/IP products and spread to any commercial products that will take
my free code.

This task would be much easier if there were a standard interface. If
we can just get the Phil Karn and the university supported TCP/IP
products to adopt a common standard, industry will have to recognize
this as a significant installed base. We shouldn't give up on this
idea until we have at least tried to reach a consensus at the
December conference. 

Granted 3Comm, Novell, and Microsoft will ignore us as but they are
devoted to policies of proprietary networking anyway. They are not
going to participate in a standard "socket interface" any more than
they will participate in any other standards. It is a false argument
to say that because commercial companies won't accept a low level
standard we should give up the effort and standardize at the sockets
level.

I don't think many commercial companies are interested in providing
telnet, nfs, ftp, and utility level products. There just isn't much
perceived added value. Commercial companies that use IP/TCP use it in
things like CAD/CAM or office automation. The networking is hidden.
A company can't make a living distributing utilities when the amateur
radio and university communities are distributing the same code for
free. Of course IBM can always sell anything, and they remain the
exception. They can sell code everybody else is giving away for free
and make the buyer believe he is one step ahead of his competition.

Have I missed something? I want a standard "Raw Packet" interface to
the net or the illusion of a "Raw Packet" interface. I want to be
able to run IP packets while some other vendor is running some other
protocol suite.  Sometimes I am not too sure what people are talking
about as this discussion rolls past my screen.


STANDARD "SOCKETS" IS A MYTH:

This Holy Grail is like "Standard Unix" or "Standard C". These are
wonderful things to strive for. These are IDEALS. It is very important
to have ideals, but some of us have to make systems work today or next
week.

I have looked at BSD Unix, FTP Software Inc., and Network Research
sockets interfaces. They are pretty close and conversion between all
of them is not outside the possibility of an experienced C
programmer. The semantics of all these interfaces are subtly and
maddeningly different but the syntax is close enough to keep a
standards committee busy spinning wheels as long as the funding holds
out.

Both FTP and Network Research provide substantial manuals for their
sockets interface. Both begin their manuals with a suggestion that
the reader should have a complete set of Berkeley Unix documentation
and that these manuals should be considered a supplement to that
documentation. If there were a standard sockets interface, they
wouldn't have to write manuals.

I just finished converting an application from Network Research's
sockets style interface to FTP Software's Version 2.0 interface. I
have FTP's sockets interface, but it was easier to convert to their
standard DOS interface than to a sockets interface. Their DOS
interface is much better thought out than the Berkeley sockets
interface. 

Frequently I think of Unix as the "Programmers Continued Employment
Act". It seems to me that the purpose of Berkeley Unix is to make
sure Berkeley graduates (and drop outs) have regular employment. It
is a lot like letting lawyers into legislatures. They just write laws
designed to make work for more lawyers.

How many of you have actually made a "select" call to a sockets
package? It doesn't count if you just copied some application written
for Berkeley Unix. I mean: Have you designed a package from scratch
and put a select call in your main loop?  Did you just look at the
manual and say "What an elegant design?" Did you get that same sense of
awe at the nature of the universe when you first began to understand
quantum electrodynamics? Did it match the thrill in high school of
writing Feyneman diagrams in the girls locker room?  If you liked
select you will love ioctl!

The Berkeley sockets interface is to computer networking as the
phlogistin theory is to thermodynamics, or Ptolemy's mechanics was to
astrophysics. The phlogistin theory works (almost) and the Greeks
were able to predict tides based on Ptolemy's model of celestial
mechanics. Similarly we are able to do networking using the Berkeley
sockets interface, but that doesn't mean we should forever enshrine
it as the only way to do networking.

The sockets interface is a grubby, inconsistent, inelegant way of
doing networking. If we are going to agree on a higher level standard
we can do better than the sockets interface.


Billy Brackenridge
IPT Inc.
23801 Calabasas Road, Suite 2011
Calabasas, CA 91302
(818)347-7791
-------

dzoey@TERMINUS.UMD.EDU (11/09/87)

Billy, 

I agree with you about the socket interface not being the catchall networking.
However, it does have the advantage that it is a pseudo-standard and that 
applications written to BSD sockets should port fairly quickly to other 
socket interfaces.  Plus, there's already a large software base of 
applications written to the socket interface.  Like most standards, 
it's not the best, but it is (or should be) consistant. I would like 
to see some comment from the net on which socket options the PC socket 
standard should support.  This seems to be an area of some 
inconsistancy among socket interfaces.

The largest problem I've had with sockets has been in dealing with
protocol specific information.  For instance, I find the socket interface 
awfully clunky when dealing with IP options and urgent TCP data 
could be handled a little more gracefully.  But, for no nonsense data
transfers, send and recv work fine.

I am curious as to what other "standard" networking interfaces look like.
How does Sys5 handle the network with their streams concept?  What other
networking interfaces are around?  

What do people want in a network interface?

                        Curiously
                        Joe Herman
                        Univ. of Md. PC/IP

P.S.  I have written applications from scratch (copying from BSD is a no-no) 
      using select().  It's something you get used to fairly quickly.

geoff@eagle_snax.UUCP ( R.H. coast near the top) (11/10/87)

In article <8711082123.aa13795@Louie.UDEL.EDU>, BRACKENRIDGE@C.ISI.EDU (Billy) writes:
> 
> STANDARD "SOCKETS" IS A MYTH:
> 
This is like saying "standard SNA is a myth". Standard SNA is whatever
IBM says it is. To date, standard sockets are whatever Berkeley says
they are.
> 
> Both FTP and Network Research provide substantial manuals for their
> sockets interface. Both begin their manuals with a suggestion that
> the reader should have a complete set of Berkeley Unix documentation
> and that these manuals should be considered a supplement to that
> documentation. If there were a standard sockets interface, they
> wouldn't have to write manuals.

That is, if there were any decent books generally available on how to
program network applications with sockets. The whole subject gets 42 pages
in the current SunOS docubox, which is scarcely adequate (I don't
count the "man" pages). For the PC-NFS Toolkit we came up with a book
which not only DOESN'T suggest you read the Berkeley Unix documentation but
has become a popular reference for some of the Unix hackers in-house.

In large measure this whole problem has arisen because IBM/Microsoft
spurned the whole notion of standard language bindings for DOS.  Since
none of us enjoy tweaking segregs in indosx calls (I hope!), we went
ahead and imported what was most familiar. Guess what: it isn't a perfect
fit. This shouldn't be a surprise. Had there been a standardized C language
binding to NETBIOS, we'd probably have chosen to build on that, extending
it as little as possible to provide adequate access to the Internet suite..

If you really don't like sockets, the answer may be to skip DOS and move
straight on to OS/2..... |-)
-- 
Geoff Arnold, Sun Microsystems     | "What is appropriate for the master is not
SPD at ECD (home of PC-NFS)        | appropriate for the novice. You must
UUCP:{ihnp4,decwrl...}!sun!garnold | understand Tao before transcending struc-
ARPA:garnold@sun.com               | ture."      [The Tao of Programming, p.39]