[comp.protocols.tcp-ip.ibmpc] Bootp and 3C501

xjeldc@GEMINI.LDC.LU.SE (Jan Engvald LDC) (10/10/89)

>I have a BOOTP problem with the Clarkson 3C501 packet driver and
>NCSA TN3270 software. We are using a Gould NP1 to run the BootP
>program and all works well with an IBM with a 3C523 card. But when
>using an IBM Model 30 w/3c501 card, I get a scambled packet with
>the BootP request. The same machine works fine without BootP, that is,
>when I include "myip=a_real_number" instead of "myip=BOOTP"

David,

If your bootp server is fast, you can't use bootp from a 3C501 card. This is
because the 3C501 is a stoneage old Ethernet card, and it is even designed in
violition with the recomendations in the Ethernet specifications. Quoting from
DIX The Ethernet, A Local Area Network, Data Link Layer and Physical Layer
Specification, appendix E: Interframe Recovery, last paragraph: 

  Reception of an incoming frame immediately after transmission of an outgoing
  frame is a very important capability, even for stations which do not tend to
  communicate with several other stations concurrently. All stations, low
  performance to high performance, should allow reception of an incoming
  frame immediately after transmission of an outgoing frame.

Well, the 3C501 can't do that, and it will miss the answer unless you have
a slow server or some communication delay.

I noticed this when installing packet drivers and NCSA Telnet with bootp.
We mostly use WD8003 Ethernet cards, but had a few 3C501. Installation and
first test went well, then I returned to one of the PCs with a 3C501 and
it didn't work any longer. Checked the other PC with 3C501, and that one
was also not working.

The reason for this behaviour was that I updated the bootptab file after
each installation. For the first test bootp didn't have the ethernet address
in RAM memory, so it had to read the updated file (takes a short while).
From then on, all answers for that address was from RAM memory, and thus
were fast and got lost in the 3C501.

In summury: Use a modern Ethernet card (3C503, WD8003, NI5210, or the like).
                                             
Jan Engvald, Lund University Computing Center
________________________________________________________________________
   Address: Box 783                E-mail: xjeldc@ldc.lu.se
            S-220 07 LUND     Earn/Bitnet: xjeldc@seldc52
            SWEDEN           (Span/Hepnet: Sweden::Gemini::xjeldc)
    Office: Soelvegatan 18         VAXPSI: psi%24020031020720::xjeldc
 Telephone: +46 46 107458          (X.400: C=se; A=TeDe; P=Sunet; O=lu;
   Telefax: +46 46 138225                  OU=ldc; S=Engvald; G=Jan)
     Telex: 33533 LUNIVER S

mrm@sceard.Sceard.COM (M.R.Murphy) (10/10/89)

In article <8910092133.AAsunic17654@sunic.sunet.se> xjeldc@GEMINI.LDC.LU.SE (Jan Engvald LDC) writes:
[description of BOOTP problem with 3C501 deleted for brevity, the soul of wit]
>The reason for this behaviour was that I updated the bootptab file after
>each installation. For the first test bootp didn't have the ethernet address
>in RAM memory, so it had to read the updated file (takes a short while).
>From then on, all answers for that address was from RAM memory, and thus
>were fast and got lost in the 3C501.
>
>In summury: Use a modern Ethernet card (3C503, WD8003, NI5210, or the like).
>                                             
Or remove the update of the bootptab file after each installation. Or put a
delay in the server software so that existing hardware will continue to work.
Emphasis on "server" comes to mind:-)
--
Mike Murphy  Sceard Systems, Inc.  544 South Pacific St. San Marcos, CA  92069
mrm@Sceard.COM        {hp-sdd,nosc,ucsd,uunet}!sceard!mrm      +1 619 471 0655

ddp+@ANDREW.CMU.EDU (Drew Daniel Perkins) (10/11/89)

If this is indeed the problem, then there is another fix.  Simply add
another bootp server or two.  That way your pc will be more than one
answer and will have a higher chance of receiving one.

Drew

ssw@cica.cica.indiana.edu (Steve Wallace) (10/11/89)

We (Indiana University) have been having problems using bootp
with the packet driver.  Using our sniffer, we found that some
packets (I think short ones) produced by the 3c501 via the packet
driver we not correctly formed.  They may have show up as
fragments, I don't remember exactly.  I'll take another look and
follow up with more prices information.  Our Sun did not
recognize these packets as being bootp requests.


Steven Wallace
Indiana University
ssw@lavanix.bacs.indiana.edu

ssw@cica.cica.indiana.edu (Steve Wallace) (10/11/89)

In article <8910092133.AAsunic17654@sunic.sunet.se>, xjeldc@GEMINI.LDC.LU.SE (Jan Engvald LDC) writes:
> >I have a BOOTP problem with the Clarkson 3C501 packet driver and
> >NCSA TN3270 software. We are using a Gould NP1 to run the BootP
> >program and all works well with an IBM with a 3C523 card. But when
> >using an IBM Model 30 w/3c501 card, I get a scambled packet with
> >the BootP request. The same machine works fine without BootP, that is,
> >when I include "myip=a_real_number" instead of "myip=BOOTP"
> 

Here's what our sniffer reports for bootp packets send from a
3C501 card.


- - - - - - - - - - - - - - - - Frame 1 - - - - - - - - - - - -
-DLC:  ----- DLC Header -----
DLC:  
DLC:  Frame 1 arrived at  07:53:56.1873 ; frame size is 120 (0078
hex) bytes.
DLC:  FRAME ERROR: Bad alignment   
DLC:  Destination: BROADCAST FFFFFFFFFFFF, Broadcast
DLC:  Source     : Station 3Com  418917
DLC:  Ethertype = 0800 (IP)
DLC:  
IP:   ----- IP Header -----
IP:   
IP:   Version = 4, header length = 20 bytes
IP:   Type of service = 00
IP:         000. .... = routine
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:   Total length = 328 bytes
IP:   Identification = 1
IP:   Flags = 0X
IP:   .0.. .... = may fragment
IP:   ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 100
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 55A5 (correct)
IP:   Source address = [0.0.0.0]
IP:   Destination address = [255.255.255.255]
IP:   No options
IP:   
UDP:  ----- UDP Header -----
UDP:  
UDP:  Source port = 68 (Bootp client)
UDP:  Destination port = 67
UDP:  Length = 308 (longer than remaining frame data)
UDP:  Checksum = 57D9, should be 58B7
UDP:  
BOOTP:  ----- BOOTP Header -----
BOOTP:  
BOOTP:  Boot record type        = 1 (Request)
BOOTP:  Hardware address type   = 1 10Mb Ethernet
BOOTP:  Hardware address length = 6 bytes
BOOTP:  
BOOTP:  Hops = 0
BOOTP:  Transaction id = 52473325
BOOTP:  Elapsed boot time = 256 seconds
BOOTP:  
BOOTP:  Client self-assigned IP address   = [0.0.0.0] (Unknown)
BOOTP:  Client hardware address           = 3Com  418917
BOOTP:  
DLC:  --- Frame too short


- - - - - - - - - - - - - - - - Frame 2 - - - - - - - - - - - - -


DLC:  ----- DLC Header -----
DLC:  
DLC:  Frame 2 arrived at  07:54:02.3587 ; frame size is 117 (0075
hex) bytes.
DLC:  FRAME ERROR: Bad alignment   
DLC:  Destination: BROADCAST FFFFFFFFFFFF, Broadcast
DLC:  Source     : Station 3Com  418917
DLC:  Ethertype = 0800 (IP)
DLC:  
IP:   ----- IP Header -----
IP:   
IP:   Version = 4, header length = 20 bytes
IP:   Type of service = 00
IP:         000. .... = routine
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:   Total length = 328 bytes
IP:   Identification = 2
IP:   Flags = 0X
IP:   .0.. .... = may fragment
IP:   ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 100
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 55A4 (correct)
IP:   Source address = [0.0.0.0]
IP:   Destination address = [255.255.255.255]
IP:   No options
IP:   
UDP:  ----- UDP Header -----
UDP:  
UDP:  Source port = 68 (Bootp client)
UDP:  Destination port = 67
UDP:  Length = 308 (longer than remaining frame data)
UDP:  Checksum = 57D9, should be 58BA
UDP:  
BOOTP:  ----- BOOTP Header -----
BOOTP:  
BOOTP:  Boot record type        = 1 (Request)
BOOTP:  Hardware address type   = 1 10Mb Ethernet
BOOTP:  Hardware address length = 6 bytes
BOOTP:  
BOOTP:  Hops = 0
BOOTP:  Transaction id = 52473325
BOOTP:  Elapsed boot time = 256 seconds
BOOTP:  
BOOTP:  Client self-assigned IP address   = [0.0.0.0] (Unknown)
BOOTP:  Client hardware address           = 3Com  418917
BOOTP:  
DLC:  --- Frame too short
- - - - - - - - - - - - - - - - Frame 3 - - - - - - - - - - - - -

DLC:  ----- DLC Header -----
DLC:  
DLC:  Frame 3 arrived at  07:54:03.4018 ; frame size is 119 (0077
hex) bytes.
DLC:  FRAME ERROR: Bad alignment   
DLC:  Destination: BROADCAST FFFFFFFFFFFF, Broadcast
DLC:  Source     : Station 3Com  418917
DLC:  Ethertype = 0800 (IP)
DLC:  
IP:   ----- IP Header -----
IP:   
IP:   Version = 4, header length = 20 bytes
IP:   Type of service = 00
IP:         000. .... = routine
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:   Total length = 328 bytes
IP:   Identification = 3
IP:   Flags = 0X
IP:   .0.. .... = may fragment
IP:   ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 100
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 55A3 (correct)
IP:   Source address = [0.0.0.0]
IP:   Destination address = [255.255.255.255]
IP:   No options
IP:   
UDP:  ----- UDP Header -----
UDP:  
UDP:  Source port = 68 (Bootp client)
UDP:  Destination port = 67
UDP:  Length = 308 (longer than remaining frame data)
UDP:  Checksum = 57D9, should be 58B8
UDP:  
BOOTP:  ----- BOOTP Header -----
BOOTP:  
BOOTP:  Boot record type        = 1 (Request)
BOOTP:  Hardware address type   = 1 10Mb Ethernet
BOOTP:  Hardware address length = 6 bytes
BOOTP:  
BOOTP:  Hops = 0
BOOTP:  Transaction id = 52473325
BOOTP:  Elapsed boot time = 256 seconds
BOOTP:  
BOOTP:  Client self-assigned IP address   = [0.0.0.0] (Unknown)
BOOTP:  Client hardware address           = 3Com  418917
BOOTP:  
DLC:  --- Frame too short


- - - - - - - - - - - - - - - - Frame 4 - - - - - - - - - - - - -

DLC:  ----- DLC Header -----
DLC:  
DLC:  Frame 4 arrived at  07:54:06.3678 ; frame size is 122 (007A
hex) bytes.
DLC:  FRAME ERROR: Bad alignment   
DLC:  Destination: BROADCAST FFFFFFFFFFFF, Broadcast
DLC:  Source     : Station 3Com  418917
DLC:  Ethertype = 0800 (IP)
DLC:  
IP:   ----- IP Header -----
IP:   
IP:   Version = 4, header length = 20 bytes
IP:   Type of service = 00
IP:         000. .... = routine
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:   Total length = 328 bytes
IP:   Identification = 4
IP:   Flags = 0X
IP:   .0.. .... = may fragment
IP:   ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 100
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 55A2 (correct)
IP:   Source address = [0.0.0.0]
IP:   Destination address = [255.255.255.255]
IP:   No options
IP:   
UDP:  ----- UDP Header -----
UDP:  
UDP:  Source port = 68 (Bootp client)
UDP:  Destination port = 67
UDP:  Length = 308 (longer than remaining frame data)
UDP:  Checksum = 57D9, should be 58B5
UDP:  
BOOTP:  ----- BOOTP Header -----
BOOTP:  
BOOTP:  Boot record type        = 1 (Request)
BOOTP:  Hardware address type   = 1 10Mb Ethernet
BOOTP:  Hardware address length = 6 bytes
BOOTP:  
BOOTP:  Hops = 0
BOOTP:  Transaction id = 52473325
BOOTP:  Elapsed boot time = 256 seconds
BOOTP:  
BOOTP:  Client self-assigned IP address   = [0.0.0.0] (Unknown)
BOOTP:  Client hardware address           = 3Com  418917
BOOTP:  
DLC:  --- Frame too short

- - - - - - - - - - - - - - - - Frame 5 - - - - - - - - - - - - -
DLC:  ----- DLC Header -----
DLC:  
DLC:  Frame 5 arrived at  07:54:07.3572 ; frame size is 119 (0077
hex) bytes.
DLC:  FRAME ERROR: Bad alignment   
DLC:  Destination: BROADCAST FFFFFFFFFFFF, Broadcast
DLC:  Source     : Station 3Com  418917
DLC:  Ethertype = 0800 (IP)
DLC:  
IP:   ----- IP Header -----
IP:   
IP:   Version = 4, header length = 20 bytes
IP:   Type of service = 00
IP:         000. .... = routine
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:   Total length = 328 bytes
IP:   Identification = 5
IP:   Flags = 0X
IP:   .0.. .... = may fragment
IP:   ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 100
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 55A1 (correct)
IP:   Source address = [0.0.0.0]
IP:   Destination address = [255.255.255.255]
IP:   No options
IP:   
UDP:  ----- UDP Header -----
UDP:  
UDP:  Source port = 68 (Bootp client)
UDP:  Destination port = 67
UDP:  Length = 308 (longer than remaining frame data)
UDP:  Checksum = 57D9, should be 58B8
UDP:  
BOOTP:  ----- BOOTP Header -----
BOOTP:  
BOOTP:  Boot record type        = 1 (Request)
BOOTP:  Hardware address type   = 1 10Mb Ethernet
BOOTP:  Hardware address length = 6 bytes
BOOTP:  
BOOTP:  Hops = 0
BOOTP:  Transaction id = 52473325
BOOTP:  Elapsed boot time = 256 seconds
BOOTP:  
BOOTP:  Client self-assigned IP address   = [0.0.0.0] (Unknown)
BOOTP:  Client hardware address           = 3Com  418917
BOOTP:  
DLC:  --- Frame too short


Notice that the UDP length and checksum are wrong for each frame.
It's as if the packet driver was not padding the frames
correctly.


Here's what a good and working bootp frame looks like (from 3C523
cards).


- - - - - - - - - - - - - - - - Frame 1 - - - - - - - - - - - - -

DLC:  ----- DLC Header -----
DLC:  
DLC:  Frame 1 arrived at  08:12:13.7023 ; frame size is 342 (0156
hex) bytes.
DLC:  Destination: BROADCAST FFFFFFFFFFFF, Broadcast
DLC:  Source     : Station 3Com  756558, test bootp
DLC:  Ethertype = 0800 (IP)
DLC:  
IP:   ----- IP Header -----
IP:   
IP:   Version = 4, header length = 20 bytes
IP:   Type of service = 00
IP:         000. .... = routine
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:   Total length = 328 bytes
IP:   Identification = 1
IP:   Flags = 0X
IP:   .0.. .... = may fragment
IP:   ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 100
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 55A5 (correct)
IP:   Source address = [0.0.0.0]
IP:   Destination address = [255.255.255.255]
IP:   No options
IP:   
UDP:  ----- UDP Header -----
UDP:  
UDP:  Source port = 68 (Bootp client)
UDP:  Destination port = 67
UDP:  Length = 308
UDP:  Checksum = 8660 (correct)
UDP:  
BOOTP:  ----- BOOTP Header -----
BOOTP:  
BOOTP:  Boot record type        = 1 (Request)
BOOTP:  Hardware address type   = 1 10Mb Ethernet
BOOTP:  Hardware address length = 6 bytes
BOOTP:  
BOOTP:  Hops = 0
BOOTP:  Transaction id = 474B3325
BOOTP:  Elapsed boot time = 256 seconds
BOOTP:  
BOOTP:  Client self-assigned IP address   = [0.0.0.0] (Unknown)
BOOTP:  Client hardware address           = 3Com  756558, test
bootp
BOOTP:  
BOOTP:  Host name      = ""
BOOTP:  Boot file name = ""
BOOTP:  
BOOTP:  [Vendor specific information]
BOOTP:  


Anyone know of a fix for this?  Is it a bug in the packet driver?

thanks

Steven Wallace
Indiana University
ssw@lavanix.bacs.indana.edu

ddp+@ANDREW.CMU.EDU (Drew Daniel Perkins) (10/12/89)

> Excerpts from internet.pcip: 11-Oct-89 Re: Bootp and 3C501 Steve
> Wallace@apple.com (10653)

> Anyone know of a fix for this?  Is it a bug in the packet driver?


As I said in a previous note, it's a bug in the packet driver which is
caused by the incredible stupidity of the 3c501.  It's interesting to
see a real Sniffer trace of the problem after all these years. 

Drew

nelson@sun.soe.clarkson.edu (Russ Nelson) (10/12/89)

In article <sZB4cku00UoJI0cJJ6@andrew.cmu.edu> ddp+@ANDREW.CMU.EDU (Drew Daniel Perkins) writes:

   > Excerpts from internet.pcip: 11-Oct-89 Re: Bootp and 3C501 Steve
   > Wallace@apple.com (10653)

   > Anyone know of a fix for this?  Is it a bug in the packet driver?

   As I said in a previous note, it's a bug in the packet driver which is
   caused by the incredible stupidity of the 3c501.  It's interesting to
   see a real Sniffer trace of the problem after all these years. 

That's interesting, because I use the exact algorithm used by Phil Karn in
his TCP/IP code (that's why the packet driver's copyright is attributed to
him--give credit where credit is due).  So if there's a bug, it's also in
Karn's code (give blame where blame is due.  :-)).  I'll tell him about
it.
--
--russ (nelson@clutx [.bitnet | .clarkson.edu])
Live up to the light thou hast, and more will be granted thee.
A recession now appears more than 2 years away -- John D. Mathon, 4 Oct 1989.

tdavis@unocss.UUCP (Thomas Davis) (10/12/89)

    Interesting..  I've also seen the same problem with the 3c501
cards, with the packet drivers.  We are running bootp on a VMS machine
under Wollogong TCP/IP.  Now, without the packet drivers, it works.  
So it _is_ the packet driver.  Unfortunely, we don't have a sniffer
here at UNO (and we don't know anybody with one).  Oh, I also remember
now that when I was playing with it, (packet drivers and bootp), our
bootp daemon would see the packets, reply to them, but the packet drivers
would ignore them.

           Tom Davis,
           EET TA, University Of Nebraska Lincoln @ Omaha Campus