[fa.info-kermit] Info-Kermit Digest V3 #8

info-kermit@ucbvax.ARPA (07/24/85)

From: Frank da Cruz <SY.FDC@CU20B.ARPA>

Info-Kermit Digest         Tue, 23 Jul 1985       Volume 3 : Number  8

Departments:

  PROPOSAL FEEDBACK -
	Sliding Window Proposal, Cont'd
	Sliding Window Proposal Q & A

  MISCELLANY -
	Conversion Tables, Liberalized Requirements
	More about IBM Professional Graphics Controller (several msgs)
	Using Kermit with Ungermann-Bass Net One?

----------------------------------------------------------------------


Date: Tue 23 Jul 85 13:12:23-EDT
From: Frank da Cruz <SY.FDC@CU20B>
Subject: Sliding Window Proposal, Cont'd

The proposal in Info-Kermit V3 #7 should have been dated July 19, not June
12, and the formatting of the state table at the end appears to have been
messed up -- apologies.

The next message (about 10K long) gives some informal information about
the proposal in the form of questions and answers.  Comments, reactions,
suggestions on both the long-packets and the windowing proposals encouraged.

------------------------------

Date: Mon 22 Jul 85 09:30:00-EDT
From: Leslie Spira <OC.SOURCE@CU20B>
Subject: Sliding Window Proposal Q & A


                           KERMIT WINDOWING PROTOCOL

                 DRAFT PROPOSED DEFINITION DATED JULY 19, 1985

                             QUESTIONS AND ANSWERS

                    John Mulligan, The SOURCE Telecomputing

                                 July 19, 1985

Q.  What is the purpose of the "windowing" extension?

A.  The object is to speed up file transfers using KERMIT.  The increase
    will be especially noticeable over the data networks (such as Telenet
    and Tymnet) and over connections using satellite links.  This is
    because there are long communications delays over these connections.


Q.  How does it work?

A.  Basically, it allows you to send several packets out in a row before
    getting the first acknowledgment back.  The number of packets that can
    be sent out is set by the "window size", hence the name windowing.


Q.  Could you explain in more detail?

A.  Right now, a system sending a file transmits one packet of data, then
    does nothing more until it gets back an acknowledgment that the packet
    has been received.  Once it gets an acknowledgment, it sends the next
    packet of data.  Over standard direct-dial land-based phone lines, the
    transmission delays are relatively small.  However, the public data
    networks or satellite links can introduce delays of up to several
    seconds round trip.  As a result, the sending system ends up spending
    much more time waiting than actually sending data.

    With the new windowing enhancement, the sending system will be able to
    keep sending data continuously, getting the acknowledgments back
    later.  It only has to stop sending data if it reaches the end of the
    current "window" without getting an acknowledgment for the first
    packet in the current "window".


Q.  What size is the "window"?

A.  The window size can vary depending on what the two ends of the
    connection agree on.  The suggested standard window size will be 8
    packets.  The maximum is 31 packets.

    The KERMIT sequence numbering is modulo 64 (it "wraps" back to the 1st
    sequence number after the 64th sequence number).  It is helpful to
    limit the maximum window size to 31 to avoid problems (ambiguous
    sequence numbers) under certain error conditions.


Q.  Is windowing in effect throughout a KERMIT session?

A.  No, it is only in effect during the actual data transfer (data
    packets) portion of a file transfer.  Windowing begins with the first
    data packet (D packet type), and stops when you get an End-of-File
    packet (Z packet type).


Q.  Why does it stop when you get to the End-of-File packet?

A.  This is done primarily to avoid having more than one file open at
    once.


Q.  Why will windowing be especially helpful at higher baud rates over
    communications paths that have delays?

A.  As you increase the baud rate, the transmission speed of the data
    increases, but you do not change the delay caused by the
    communications path.  As a result, the delay becomes more and more
    significant.

    Assume, for example, that your communications path introduces a delay
    of 1 second each way for packets, for a total delay of 2 seconds round
    trip.  Assume also that your packets have 900 bits in them so it takes
    you 3 seconds to send a packet at 300 baud (this is roughly equivalent
    to a typical KERMIT packet).

    WITHOUT windowing, here is what happens:

    If at 300 baud you transmitted data for 3 seconds (sending 900 bits),
    then waited 2 seconds for each acknowledgment, your throughput would
    be roughly 180 baud.  (Total time for each transmission = 5 seconds. 
    900/5 = 180).

    Howver, if you went to 2400 baud, you would transmit data for 3/8
    second, then wait 2 seconds for an acknowledgment.  (Total time for
    each transmission = 2 and 3/8 seconds).  The throughput would increase
    only to about 378 baud. (900 / 2.375 = 378).

    The delay becomes the limiting factor; in this case, with this packet
    size, the delay sets an outside limit of 450 baud (900 / 2 second
    delay = 450), no matter how fast the modem speed.

    WITH windowing, the throughput should be close to the actual
    transmission speed.  It should be possible to send data nearly
    continuously.  The exact speed will depend on the window size, length
    of transmission delays, and error rate.


Q.  Are there any new packet types introduced by this extension?

A.  No, the only change is to the contents of the Send-Init packet, to
    arrange for windowing if both sides can do it.  If either side cannot,
    KERMIT will work as it does now.  Adding an extension such as this was
    provided for in the original KERMIT definition.  See section 3 of the
    windowing definition for details.


Q:  On the receive side, in section 4.2, why does the definition say that
    writing to disk is done when the Receive-Table becomes full rather
    than as soon as you get a good packet?

A:  The definition was phrased this way because it makes the logic of the
    receive side clearer and simpler to implement.

    Actually, you could also write a packet to disk when it is a good
    packet and it is the earliest entry in the receive table.  This
    approach has the disadvantage that you don't know at this point that
    the sender has received your ACK, so you have to be prepared to handle
    the same packet later on if the sender never gets the ACK, times out,
    and sends the same packet again.  Thus you have to be prepared to deal
    with packets previous to the current window; you will have to ACK such
    a packet if it has been received properly before.

    By writing packets to disk only when the receive table becomes full,
    (the oldest packet) you know that the sender has received your ACK
    (otherwise the sender could not have rotated the window to the n+1
    position to send the current packet, where n is the window size). 
    This makes it very easy to stay in synch with the sender.  The
    disadvantage of this approach is that when you receive the End-of-File
    packet, you have to take the time to write all the remaining packets
    in the Receive-Table to disk.


Q.  Could you briefly explain what happens if a single packet gets
    corrupted?

A.  In essence, the receiver will ignore the bad packet.  When it gets the
    next good packet, it will realize (because packets are numbered) that
    one or more packets were lost, and NAK those packets.  The receiver
    continues to accept good data.

    As long as the sender's window does not become "blocked", the only
    loss of throughput will be the time it takes to transmit the NAKed
    packets.

    For a full description, see section 4.2 of the windowing definition.


Q.  There are currently two proposals for KERMIT extensions: the Windowing
    extension and a proposal for extended packet lengths.  What are the
    relative advantages and disadvantages of sliding windows and extended
    packet lengths?

A.  What is best depends on the exact conditions and systems involved in a
    particular file transfer.  There are some general rules however.

    Windowing helps more and more as the communications path delays get
    longer.

    Windowing is also more and more helpful as the baud rate goes up.

    Increased packet length is most helpful on circuits with low error
    rates.  If the error rate is high, it is difficult for a long packet
    to get through uncorrupted.  Also, it then takes longer to re-transmit
    the corrupted packet.

    On some machines, the CPU time to process a packet is relatively
    constant no matter what the packet length, so longer packets can
    reduce CPU time.


Q.  Are extended packet lengths and sliding windows mutually exlusive?

A.  No, there is no real reason that they would have to be.  As a
    practical matter, it is slightly easier to implement windowing if you
    know the maximum packet size ahead of time, since you can then just
    use an array to store your data.  In standard KERMIT, you know
    automactically that your maximum packet length is 94, so you can just
    go ahead and dimension an array at 94 by Window-size.

    If you are going to use both extended packet length and windowing, you
    need to select the maximum packet length and window-size so that the
    combination does not exceed the available memory for each side of the
    transfer.

    In addition, it is possible to see the desired relationship between
    packet size and windowing for various baud rates and communications
    delays.  For the common case of an error corrected by one
    retransmission of the corrupted packet, the minimum window size needed
    for continuous throughput (the window never gets "blocked") can be
    calculated by:

                    4 x delay x baud rate
      WS  >   1 +  ------------------------
                       packet-size x 10           ;(this is the # of bits)


    Windowing always helps (the minimal continuous throughput window size
    is always greater than 1).

    In the above equation, the "4" derives from the fact that a corrupted
    packet has 4 transit times involved:

         Original (bad checksum) packet
         NAK for the packet
         Retransmission of packet
         ACK for retransmission.

    All of this must happen before the window becomes blocked.

    The "delay" is the effective maximum one-way communications path
    delay, which includes any CPU delays.

    Strictly speaking, the "packet-size" should have the length of the ACK
    packets added to it.

    As an example, if you assume a 2-second (one-way) delay, at 1200 baud,
    with a packet size of 94, the minimum window size for continuous
    throughput would be:

              4 x 2 x 1200
       WS  >  ------------    =   10.2
                94 x 10

    Under these circumstances, a window size of at least 11 should be
    chosen, if possible.


------------------------------

Date: Sat, 20 Jul 85 10:47:19 PDT
From: VSS7853@UCLAVM
Subject: Conversion Tables, Liberalized Requirements

Regarding the message I sent the other day with the programs for
constructing and analyzing ATOE and ETOA tables, I think I could have
expressed my thesis a bit more clearly.

Kermit-TSO and Kermit-CMS require that the TCAM (or whatever) tables
be, loosely speaking, inverses of one another.  I claim that this
requirement is too restrictive and prevents Kermit from working on
systems where it otherwise might.

On Ebcdic machines, Kermit performs the following four translations:

1. (e to a) predict the Ascii form of an outgoing message so that a packet
            can be constructed in Ascii.
2. (a to e) map the packet back to Ebcdic for outputting and final
            reconversion by TCAM.
3. (e to a) reconstruct the Ascii form of an incoming packet already 
            converted by TCAM, so that the packet can be analyzed in Ascii.
4. (a to e) map the incoming message back into its final Ebcdic form.

Presently these four internal transformations are done with only two tables,
each identical to the corresponding TCAM table.  Whence the requirement that
the two TCAM tables be inverses of one another.

I claim that by constructing four tables, one for each of the above numbered
functions, two benefits would accrue:

1. The requirements on the TCAM tables would be weakened.  Each table would
   have to be invertable separately, but they would no longer have to be
   inverses of each other.

2. Kermit could guarantee a standard correspondance between the two character
   codes for messages transmitted from Ascii machines to Ebcdic and vice
   versa, instead of accepting the correspondance imposed by the local TCAM
   tables.

In the other message I attempted to give precise weakened mathematical
requirements for the TCAM tables so that this method would work.

Also tools would have to be developed to construct the necessary translation
tables to be used by Kermit.  These tools ought to be included in the
distribution.

What do you think?

Glenn Thobe
EE dept., UCLA
818-888-8434

p. s. Please address replies to both IVA3GET@UCLAMVS and VSS7853@UCLAVM
(BITNET).

------------------------------

Date: Mon 22 Jul 85 16:55:26-EDT
From: Charlie C Kim <US.CCK@CU20B>
Subject: IBM Professional Graphics Controller

It's called a Professional Graphics Controller (not Adapter).  Waiting for
the vertical retrace on the EGA isn't a bad thing to do--it's just
unnecessary in the enhanced mode.  It isn't so clear that it's the wrong
thing to do when it is emulating the CGA.

The problem with losing characters above 1200 baud on the PGC is well known.
The following message from the IBM-PC bulletin board should clarify the
issue:

  Date:  Thu, 4 Jul 85 13:54 EDT
  From:  "Roger C. King" <RCKing@MIT-MULTICS.ARPA>
  Subject:  Professional Graphics Controller Fix

We have had IBM replace more than a dozen Professional Graphics controllers
with corrected units which work correctly with previous communications
packages at 9600 baud. The old unit did not work correctly at all, but sort
of worked on an AT at 2400 baud (sort of means some dropped characters) and
sort of worked on an XT at 1200 baud. It takes an individual, case by case,
interface with IBM to get this resolved, but it is possible for a field
office to get someone at Boca to send out corrected boards for a swap. A
good controller can be recognized as follows:

    Looking at a controller with the output on the right, the top left
    corner of the board has a 'REV' number, probably 6323698, whited out
    with white paint or something similar. A bad board(s), does not have
    this number modified. 

As an aside, we have found the Professional Graphics Controller to be an
almost perfect emulator of the old Color Graphics controller. Even
low-res software seems to work correctly.

Roger King

------------------------------

From: Herm Fischer <hermix!fischer@RAND-UNIX>
Subject: Professional Graphics Controller
Date: Mon Jul 22 16:02:42 1985

Carl Houseman reports problems over 1200 baud with this display.  He should
be aware that the async ports dont work over 1200 at all unless he gets
replacement PGA cards from IBM.  The original cards had hardware/firmware
problems which interfered with comm activity; IBM has "recalled" those
cards.

I am using the EGA on Xenix and on MSDOS with kermit.  So far no problems,
but have not tried EGA with MSDOS above 1200...

------------------------------

Date: 23 July 1985 1350-PDT (Tuesday)
From: germar@nprdc.arpa (Marcelo Germar)
Subject: Using Kermit with Ungermann-Bass Net One?

Does anybody have experience using ibm pc kermit with ungermann-bass net one
to transfer files between a vax with 4.2bsd unix and an ibm pc?

What should be the configuration of the ungermann-bass hardware/software
to enable a successful file transfer?

All your help will be sincerely much appreciated.

thanks,
marcelo

------------------------------

End of Info-Kermit Digest
*************************
-------