[comp.sys.ibm.pc] Sliding Window Kermit?

yuan@uhccux.UUCP (04/30/87)

Thanks to all those who have taken the trouble to reply to my recent inquiry
on the subject of SW Kermit.  I have received requests for the informations
that I've gather, but some of my replies got bounced by the mailer.  So I have
decided to post the summary.  

-=-=-=-=-=-=-=-=-=-=-=-=- Valuable Coupon.  Clip & Save -=-=-=-=-=-=-=-=-=-=-
Date: Mon, 27 Apr 1987 22:46-EDT
From: humu!nosc!Ralf.Brown@b.gp.cs.cmu.edu

ProComm 2.4.2 implements Sliding Window Kermit if the other Kermit supports it.
(ProComm also supports windowed Xmodem)

The theory behind sliding windows is that you don't wait for an acknowledgement
on every packet before sending the next, but allow multiple packets to be
outstanding.  ProComm's SWK supports a window size of 31 packets--that means
the other end can fire off 31 packets right away at the beginning, and ProComm
acknowledges each packet as it arrives.  The other end can wait for all 31
acknowledgments (assuming no timeout), and then fire off another 31 packets.
This method results in an effective packet size of about 2700 bytes, while
only requiring retransmission of 90 bytes* if a packet gets corrupted.

*ProComm's SW Kermit limits packet size to 90 bytes.
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+
From: <humu!nosc!sdcsvax!seismo!uwvax!prairie!dan>
Date: 28 Apr 87 09:56:22 CDT (Tue)

   Sliding window Kermit, or "Super-Kermit", is available in the Professional
YAM communications program from Omen Technology.  You can contact them at
503-621-3746 voice, or 503-621-3746 (modem, 300, 1200, 2400 baud).  You
can get a free demo version, very full-featured, over the modem number.

   The basic idea behind any sliding windows protocol is that you don't
have to ACK every packet as you receive it, and before the sender can
send you another.  You specify to the sender a range, or "window" of
packet numbers that you have buffer space to accept, and the sender
keeps sending out packets up the limit of the window size.  As packets 
on the left hand side of the window are acknowledged, the window "slides"
to the right, exposing a new range of packet numbers which may now be sent.

   For a sliding windows protocol to be very useful, the receiver is 
usually allowed to group multiple ACKS in a single transmission, or to
do "implied ACKing", in which if I ACK packet N, it means that I am
also ACKing packets N-1, N-2, and so forth.

   Sliding windows protocols are important when communicating over circuits
with long latencies, such as satellite channels.  If it takes 2 seconds
to get a packet, and two seconds for the ACK to be received at the other
end, the turnaround delays become unacceptable.  This is particularly
awful with Kermit, whose maximum packet size is 94 bytes.

   Pro-YAM is a fabulous program.  It supports many other useful protocols
and has very powerful communications and convenience features.  Check out
the ZMODEM protocol it offers.  ZMODEM has all the nice batch features of
Kermit, but is even faster than Super-Kermit.  The ZMODEM source code is
in the public domain, and may be ported to Unix systems (that's what I
use here).
-- 
UUCP: {ihnp4,seismo,ucbvax,dcdwest}!sdcsvax!nosc!uhccux!yuan
ARPA: uhccux!yuan@nosc.ARPA                       INTERNET: yuan@UHCC.HAWAII.EDU
AT&T: (808) 395-1732        "I'm an Amigoid, she's an Amigoid, they're Amigoids,
- Yuan Chang -                          Wouldn't _y_o_u like to be an Amigoid too?"

yuan@uhccux.UUCP (04/30/87)

Thans to all those who have taken the trouble to reply to my recent inquiry
on the subject of SW Kermit.  I have received requests for the informations
that I've gather, but some of my replies got bounced by the mailer.  So I have
decided to post the summary.  

-=-=-=-=-=-=-=-=-=-=-=-=- Valuable Coupon.  Clip & Save -=-=-=-=-=-=-=-=-=-=-
Date: Mon, 27 Apr 1987 22:46-EDT
From: humu!nosc!Ralf.Brown@b.gp.cs.cmu.edu

ProComm 2.4.2 implements Sliding Window Kermit if the other Kermit supports it.
(ProComm also supports windowed Xmodem)

The theory behind sliding windows is that you don't wait for an acknowledgement
on every packet before sending the next, but allow multiple packets to be
outstanding.  ProComm's SWK supports a window size of 31 packets--that means
the other end can xfire off 31 packets right away at the beginning, and ProComm
acknowledges each packet as it arrives.  The other end can wait for all 31
acknowledgments (assuming no timeout), and then fire off another 31 packets.
This method results in an ffective packet size of about 2700 bytes, while
only requiring retransmission of 90 bytes* if a packet gets corrupted.

*ProComm's SW Kermit limits packet size to 90 bytes.
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+
From: <humu!nosc!sdcsvax!seismo!uwvax!prairie!dan>
Date: 28 Apr 87 09:56:22 CDT (Tue)

   Sliding window Kermit, or "Super-Kermit", is available in the Professional
YAM communications program from Omen Technology.  You can contact them at
503-621-3746 voice, or 503-621-3746 (modem, 300, 1200, 2400 baud).  You
can get a free demo version, very full-featured, over the modem number.

   The basic idea behind any sliding windows protocol is that you don't
have to ACK every packet as you receive it, and before the sender can
send xyou another.  You specify to the sender a range, or "window" of
packet numbers that you have buffer space to accept, and the sender
keeps sending out packets up the limit of the window size.  As packets 
on the left hand side of the windoware acknowledged, the window "slides"
to the right, exposing a new range of packet numbers which may now be sent.

   For a sliding windows protocol to be very useful, the receiver is 
usually allowed to group multiple ACKS in a single transmission, or to
do "implied ACKing", in which if I ACK packet N, it means that I am
also ACKing packets N-1, N-2, and so forth.

   Sliding windows protocols are important when communicating over circuits
with long latencies, such as satellite channels.  If it takes 2 seconds
to get a packet, and two seconds for the ACK to be received at the other
end, the turnaround delays become unacceptable.  This is particularly
awful with Kermit, whose maximum packet size is 94 bytes.

   Pro-YAM is a fabulous program.  It supports many other useful and has very powerful communications and convenience features.  Check out
the ZMODEM protocol it offers.  ZMODEM has all the nice batch features of
Kermit, but is even faster than Super-Kermit.  The ZMODEM source code is
in the pblic domain, and may be ported to Unix systems (that's what I
use here).
-- 
UUCP: {ihnp4,seismo,ucbvax,dcdwest}!sdcsvax!nosc!uhccux!yuan
ARPA: uhccux!yuan@nosc.ARPA                       INTERNET: yuan@UHCC.HAWAII.EDU
AT&T: (808) 395-1732        "I'm an Amigoid, she's an Amigoid, they're Amigoids,
- Yuan Chang -                          Wouldn't _y_o_u like to be an Amigoid too?"

daniels@cae780.UUCP (04/30/87)

In article <454@uhccux.UUCP> yuan@uhccux.UUCP (Yuan Chang) summarizes:
>From: humu!nosc!Ralf.Brown@b.gp.cs.cmu.edu
>...advantage of Sliding Window is a large effective transmission block, 
>but a small retransmission required on corruption.
>From: <humu!nosc!sdcsvax!seismo!uwvax!prairie!dan>
>...to be very useful, the receiver is usually allowed to group multiple ACKS 

Another advantage of such protocols is that they allow a "reasonable use" of 
a carrier such as a sequence of "store-and-forward" style machines.  When 
sending a huge file on such a medium without a "Sliding Window", the two 
strategies that are normally used are: 
    1) dribble (send,wait for ack,loop).  This can be orders of magnitude slower
      than required for data transmission, tunring a large file transfer into
      an overnight event.
or
    2) Balloon: (dump everything into the network and then wait for an ack)
      This can use up all of the storage on a network very quickly (imagine 
	  the receiving end is processing input very slowly).  In the extreme
	  version of this technique, the network becomes a storage device.

SW allows a sort of "load balancing" by limiting the total amount of data 
in the network at any one time, but allowing continuous transmission if the 
recieving end is keeping up with the transmitter (and the number of packets
in the window is large enough).