summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1986.txt
blob: 98b281a79b252987626e32de3b9e83e5b37206ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
Network Working Group                                         W. Polites
Request for Comments: 1986                                    W. Wollman
Category: Experimental                                            D. Woo
                                                   The MITRE Corporation
                                                               R. Langan
                                                         U.S. ARMY CECOM
                                                             August 1996


    Experiments with a Simple File Transfer Protocol for Radio Links
         using Enhanced Trivial File Transfer Protocol (ETFTP)


Status of this Memo

   This memo defines an Experimental Protocol for the Internet
   community.  This memo does not specify an Internet standard of any
   kind.  Discussion and suggestions for improvement are requested.
   Distribution of this memo is unlimited.

1. INTRODUCTION SECTION

   This document is a description of the Enhanced Trivial File Transfer
   Protocol (ETFTP). This protocol is an experimental implementation of
   the NETwork BLock Transfer Protocol (NETBLT), RFC 998 [1], as a file
   transfer application program. It uses the User Datagram Protocol
   (UDP), RFC 768 [2], as its transport layer. The two protocols are
   layered to create the ETFTP client server application. The ETFTP
   program is named after Trivial File Transfer Protocol (TFTP), RFC
   1350 [3], because the source code from TFTP is used as the building
   blocks for the ETFTP program. This implementation also builds on but
   differs from the work done by the National Imagery Transmission
   Format Standard [4].

   This document is published for discussion and comment on improving
   the throughput performance of data transfer utilities over Internet
   Protocol (IP) compliant, half duplex, radio networks.

   There are many file transfer programs available for computer
   networks.  Many of these programs are designed for operations through
   high-speed, low bit error rate (BER) cabled networks. In tactical
   radio networks, traditional file transfer protocols, such as File
   Transfer Protocol (FTP) and TFTP, do not always perform well. This is
   primarily because tactical half duplex radio networks typically
   provide slow-speed, long delay, and high BER communication links.
   ETFTP is designed to allow a user to control transmission parameters
   to optimize file transfer rates through half-duplex radio links.




Polites, Wollman & Woo        Experimental                      [Page 1]
^L
RFC 1986                         ETFTP                       August 1996


   The tactical radio network used to test this application was
   developed by the Survivable Adaptive Systems (SAS) Advanced
   Technology Demonstration (ATD). Part of the SAS ATD program was to
   address the problems associated with extending IP networks across
   tactical radios.  Several tactical radios, such as, SINgle Channel
   Ground and Airborne Radio Systems (SINCGARS), Enhanced Position
   Location Reporting Systems (EPLRS), Motorola LST-5C, and High
   Frequency (HF) radios have been interfaced to the system.  This
   document will discuss results obtained from using ETFTP across a
   point-to-point LST-5C tactical SATellite COMmunications (SATCOM)
   link. The network includes a 25 Mhz 486 Personal Computer (PC) called
   the Army Lightweight Computer Unit (LCU), Cisco 2500 routers,
   Gracilis PackeTen Network switches, Motorola Sunburst Cryptographic
   processors, a prototype forward error correction (FEC) device, and
   Motorola LST-5C tactical Ultra High Frequency (UHF) satellite
   communications (SATC!  OM) radio. Table 1, "Network Trans fer Rates,"
   describes the equipment network connections and the bandwidth of the
   physical media interconnecting the devices.

   Table 1: Network Transfer Rates

   +-------------------------------+-------------------------------+
   | Equipment                     | Rate (bits per second)        |
   +-------------------------------+-------------------------------+
   | Host Computer (486 PC)        | 10,000,000 Ethernet           |
   +-------------------------------+-------------------------------+
   | Cisco Router                  | 10,000,000 Ethernet to        |
   |                               | 19,200 Serial Line Internet   |
   |                               | Protocol (SLIP)               |
   +-------------------------------+-------------------------------+
   | Gracilis PackeTen             | 19,200 SLIP to                |
   |                               | 16,000 Amateur Radio (AX.25)  |
   +-------------------------------+-------------------------------+
   | FEC                           | half rate or quarter rate     |
   +-------------------------------+-------------------------------+
   | Sunburst Crypto               | 16,000                        |
   +-------------------------------+-------------------------------+
   | LST-5C Radio                  | 16,000                        |
   +-------------------------------+-------------------------------+

   During 1993, the MITRE team collected data for network configurations
   that were stationary and on-the-move. This network configuration did
   not include any Forward Error Correction (FEC) at the link layer.
   Several commercially available implementations of FTP were used to
   transfer files through a 16 kbps satellite link. FTP relies upon the
   Transmission Control Protocol (TCP) for reliable communications.  For
   a variety of file sizes, throughput measurements ranged between 80
   and 400 bps. At times, TCP connections could be opened, however, data



Polites, Wollman & Woo        Experimental                      [Page 2]
^L
RFC 1986                         ETFTP                       August 1996


   transfers would be unsuccessful. This was most likely due to the
   smaller TCP connection synchronization packets, as compared to the
   TCP data packets.  Because of the high bit error rate of the link,
   the smaller packets were much more likely to be received without
   error. In most cases, satellite channel utilization was less than 20
   percent.  Very often a file transfer would fail because FTP
   implementations would curtail the transfer due t!  o the poor
   conditions of the commu nication link.

   The current focus is to increase the throughput and channel
   utilization over a point to point, half duplex link. Follow on
   experiments will evaluate ETFTP's ability to work with multiple hosts
   in a multicast scenario. Evaluation of the data collected helped to
   determine that several factors limited data throughput. A brief
   description of those limiting factors, as well as, solutions that can
   reduce these networking limitations is provided below.

Link Quality

   The channel quality of a typical narrow-band UHF satellite link does
   not sufficiently support data communications without the addition of
   a forward error correction (FEC) capability.  From the data
   collected, it was determined that the UHF satellite link supports, on
   average, a 10e-3 bit error rate.

   Solution: A narrow-band UHF satellite radio FEC prototype was
   developed that improves data reliability, without excessively
   increasing synchronization requirements. The prototype FEC increased
   synchronization requirements by less than 50 milliseconds (ms). The
   FEC implementation will improve an average 10e-3 BER channel to an
   average 10e-5 BER channel.

Delays

   Including satellite propagation delays, the tactical satellite radios
   require approximately 1.25 seconds for radio synchronization prior to
   transmitting any data across the communication channel.  Therefore,
   limiting the number of channel accesses required will permit data
   throughput to increase. This can be achieved by minimizing the number
   of acknowledgments required during the file transfer.  FTP generates
   many acknowledgments which decreases throughput by increasing the
   number of satellite channel accesses required.

   To clarify, when a FTP connection request is generated, it is sent
   via Ethernet to the router and then forwarded to the radio network
   controller (RNC).  The elapsed time is less than 30 ms. The RNC keys
   the crypto unit and 950 ms later modem/crypto synchronization occurs.
   After synchronization is achieved, the FTP connection request is



Polites, Wollman & Woo        Experimental                      [Page 3]
^L
RFC 1986                         ETFTP                       August 1996


   transmitted. The transmitting terminal then drops the channel and the
   modem/crypto synchronization is lost. Assuming that the request was
   received successfully, the receiving host processes the request and
   sends an acknowledgment. Again the modem/crypto have to synchronize
   prior to transmitting the acknowledgment. Propagation delays over a
   UHF satellite also adds roughly 500 ms to the total round trip delay.

   Solution: When compared to FTP, NETBLT significantly reduces the
   number of acknowledgments required to complete a file transfer.
   Therefore, leveraging the features available within an implementation
   of NETBLT will significantly improve throughput across the narrow-
   band UHF satellite communication link.

   To reduce the number of channel accesses required, a number of AX.25
   parameters were modified.  These included the value of p for use
   within the p-persistence link layer protocol, the slot time, the
   transmit tail time, and the transmit delay time.  The p-persistence
   is a random number threshold between 0 and 255.  The slot time is the
   time to wait prior to attempting to access the channel.  The transmit
   tail increases the amount of time the radio carrier is held on, prior
   to dropping the channel. Transmit delay is normally equal to the
   value of the radio synchronization time.  By adjusting these
   parameters to adapt to the tactical satellite environment, improved
   communication performance can be achieved.

   First, in ETFTP, several packets within a buffer are transmitted
   within one burst. If the buffer is partitioned into ten packets, each
   of 1024 bytes, then 10,240 bytes of data is transmitted with each
   channel access. It is possible to configure ETFTP's burstsize to
   equal the number of packets per buffer. Second, the transmit tail
   time was increased to hold the key down on the transmitter long
   enough to insure all of the packets within the buffer are sent in a
   single channel access. These two features, together, allow the system
   to transmit an entire file (example, 100,000 bytes) with only a
   single channel access by adjusting buffer size. Thirdly, the ETFTP
   protocol only acknowledges each buffer, not each packet. Thus, a
   single acknowledgment is sent from the receiving terminal containing
   a request for the missing packets within each buffer, reducing the
   number of acknowledgment packets sent. Which in turn, reduced the
   number of times the channel has to be turned around.

   To reduce channel access time, p-persistence was set to the maximum
   value and slot time to a minimum value. These settings support
   operations for a point-to-point communication link between two users.
   This value of p would not be used if more users were sharing the
   satellite channel.





Polites, Wollman & Woo        Experimental                      [Page 4]
^L
RFC 1986                         ETFTP                       August 1996


Backoffs

   TCP's slow start and backoff algorithms implemented in most TCP
   packages assume that packet loss is due to network congestion.  When
   operating across a tactical half duplex communication channel
   dedicated to two users, packet loss is primarily due to poor channel
   quality, not network congestion. A linear backoff at the transport
   layer is recommended. In a tactical radio network there are numerous
   cases where a single host is connected to multiple radios. In a
   tactical radio network, layer two will handle channel access.
   Channel access will be adjusted through parameters like p-persistence
   and slot time. The aggregate effect of the exponential backoff from
   the transport layer added to the random backoff of the data link
   layer, will in most cases, cause the radio network to miss many
   network access opportunities. A linear backoff will reduce the number
   missed data link network access opportunities

   Solution: Tunable parameters and timers have been modified to
   resemble those suggested by NETBLT.

Packet Size

   In a tactical environment, channel conditions change rapidly.
   Continuously transmitting large packets under 10e-3 BER conditions
   reduces effective throughput.

   Solution: Packet sizes are dynamically adjusted based upon the
   success of the buffer transfers. If 99 percent of all packets within
   a buffer are received successfully, packet size can be increased to a
   negotiated value.  If 50 percent or more of all packets within a
   buffer are not successfully delivered, the packet size can be
   decreased to a negotiated value.

2. PROTOCOL DESCRIPTION

   Throughout this document the term packet is used to describe a
   datagram that includes all network overhead. A block is used to
   describe information, without any network encapsulation.

   The original source files for TFTP, as downloaded from ftp.uu.net,
   were modified to implement the ETFTP/NETBLT protocol. These same
   files are listed in "UNIX Network Programming" [5].

   ETFTP was implemented for operations under the Santa Cruz Operations
   (SCO) UNIX. In the service file, "/etc/services", an addition was
   made to support "etftp" at a temporary well known port of "1818"
   using "UDP" protocol. The file, "/etc/inetd.conf", was modified so
   the "inetd" program could autostart the "etftpd" server when a



Polites, Wollman & Woo        Experimental                      [Page 5]
^L
RFC 1986                         ETFTP                       August 1996


   connection request came in on the well known port.

   As stated earlier, the transport layer for ETFTP is UDP, which will
   not be discussed further here. This client server application layer
   protocol is NETBLT, with four notable differences.

   The first change is that this NETBLT protocol is implemented on top
   of the UDP layer. This allowed the NETBLT concepts to be tested
   without modifying the operating system's transport or network layers.
   Table 2, "Four Layer Protocol Model," shows the protocol stack for
   FTP, TFTP and ETFTP.

   Table 2: Four Layer Protocol Model

   +---------------------------------------------------------------+
   |                         PROTOCOL STACK                        |
   +---------------+---------------+---------------+---------------+
   |APPLICATION    |FTP            |TFTP           |ETFTP/NETBLT   |
   +---------------+---------------+---------------+---------------+
   |TRANSPORT      |TCP            |UDP            |UDP            |
   +---------------+---------------+---------------+---------------+
   |NETWORK        |IP                                             |
   +---------------+---------------+---------------+---------------+
   |LINK           |Ethernet, SLIP, AX.25                          |
   +---------------+---------------+---------------+---------------+

   The second change is a carryover from TFTP, which allows files to be
   transferred in netascii or binary modes. A new T bit flag is assigned
   to the reserved field of the OPEN message type.

   The third change is to re-negotiate the DATA packet size. This change
   affects the OPEN, NULL-ACK, and CONTROL_OK message types.  A new R
   bit is assigned to the reserved field of the OPEN message type.

   The fourth change is the addition of two new fields to the OPEN
   message type. The one field is a two byte integer for radio delay in
   seconds, and the next field is two bytes of padding.

   The ETFTP data encapsulation is shown in Table 3, "ETFTP Data
   Encapsulation,". The Ethernet, SLIP, and AX.25 headers are mutually
   exclusive. They are stripped off and added by the appropriate
   hardware layer.









Polites, Wollman & Woo        Experimental                      [Page 6]
^L
RFC 1986                         ETFTP                       August 1996


   Table 3: ETFTP Data Encapsulation

   +------------+------------+------------+------------+-----------+
   |Ethernet(14)|            |            |ETFTP/      |           |
   |SLIP(2)     |IP(20)      |UDP(8)      |NETBLT(24)  |DATA(1448) |
   |AX.25(20)   |            |            |            |           |
   +------------+------------+------------+------------+-----------+

2.1     MESSAGE TYPES AND FORMATS

   Here are the ETFTP/NETBLT message types and formats.

   MESSAGES        VALUES
   OPEN    0  Client request to open a new connection
   RESPONSE        1  Server positive acknowledgment for OPEN
   KEEPALIVE       2  Reset the timer
   QUIT    3  Sender normal Close request
   QUITACK 4  Receiver acknowledgment of QUIT
   ABORT   5  Abnormal close
   DATA    6  Sender packet containing data
   LDATA   7  Sender last data block of a buffer
   NULL-ACK        8  Sender confirmation of CONTROL_OK changes
   CONTROL 9  Receiver request to
           GO      0 Start transmit of next buffer
           OK      1 Acknowledge complete buffer
           RESEND  2 Retransmit request
   REFUSED 10 Server negative acknowledgment of OPEN
   DONE    11 Receiver acknowledgment of QUIT.

   Packets are "longword-aligned", at four byte word boundaries.
   Variable length strings are NULL terminated, and padded to the four
   byte boundary. Fields are listed in network byte order. All the
   message types share a common 12 byte header. The common fields are:

   Checksum        IP compliant checksum
   Version Current version ID
   Type    NETBLT message type
   Length  Total byte length of packet
   Local Port      My port ID
   Foreign Port    Remote port ID
   Padding Pad as necessary to 4 byte boundary

   The OPEN and RESPONSE messages are similar and shown in Table 4,
   "OPEN and RESPONSE Message Types,". The client string field is used
   to carry the filename to be transferred.






Polites, Wollman & Woo        Experimental                      [Page 7]
^L
RFC 1986                         ETFTP                       August 1996


   Table 4: OPEN and RESPONSE Message Types

                      1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Checksum                       |Version        |Type           |
   +---------------+---------------+---------------+---------------+
   |Length                         |Local Port                     |
   +---------------+---------------+---------------+---------------+
   |Foreign Port                   |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+
   |Connection ID                                                  |
   +---------------+---------------+---------------+---------------+
   |Buffer size                                                     |
   +---------------+---------------+---------------+---------------+
   |Transfer size                                                   |
   +---------------+---------------+---------------+---------------+
   |DATA Packet size                |Burstsize                      |
   +---------------+---------------+---------------+---------------+
   |Burstrate                      |Death Timer Value              |
   +---------------+---------------+---------------+---------------+
   |Reserved(MBZ)          |R|T|C|M|Maximum # Outstanding Buffers  |
   +---------------+---------------+---------------+---------------+
   |*Radio Delay                   |*Padding                       |
   +---------------+---------------+---------------+---------------+
   |Client String . . .            |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+

   Connection ID   The unique connection number
   Buffer size     Bytes per buffer
   Transfer size   The length of the file in bytes
   DATA Packet size        Bytes per ETFTP block
   Burstsize       Concatenated packets per burst
   Burstrate       Milliseconds per burst
   Death Timer     Seconds before closing idle links
   Reserved        M bit is mode: 0=read/put, 1=write/get
           C bit is checksum: 0=header, 1=all
           *T bit is transfer: 0=netascii, 1=binary
           *R bit is re-negotiate: 0=off, 1=on
   Max # Out Buffs Maximum allowed un-acknowledged buffers
   Radio Delay     *Seconds of delay from send to receive
   Padding *Unused
   Client String   Filename.

   The KEEPALIVE, QUITACK, and DONE messages are identical to the common
   header, except for the message type values. See Table 5, "KEEPALIVE,
   QUITACK, and DONE Message Types,".




Polites, Wollman & Woo        Experimental                      [Page 8]
^L
RFC 1986                         ETFTP                       August 1996


   Table 5: KEEPALIVE, QUITACK, and DONE Message Types

                      1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Checksum                       |Version        |Type           |
   +---------------+---------------+---------------+---------------+
   |Length                         |Local Port                     |
   +---------------+---------------+---------------+---------------+
   |Foreign Port                   |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+


   The QUIT, ABORT, and REFUSED messages allow a string field to carry
   the reason for the message. See Table 6, "QUIT, ABORT, and REFUSED
   Message Types,".

   Table 6: QUIT, ABORT, and REFUSED Message Types

                      1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Checksum                       |Version        |Type           |
   +---------------+---------------+---------------+---------------+
   |Length                         |Local Port                     |
   +---------------+---------------+---------------+---------------+
   |Foreign Port                   |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+
   |Reason for QUIT/ABORT/REFUSED . . .                            |
   +---------------+---------------+---------------+---------------+
   |. . .                          |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+

   The DATA and LDATA messages make up the bulk of the messages
   transferred. The last packet of each buffer is flagged as an LDATA
   message. Each and every packet of the last buffer has the reserved L
   bit set. The highest consecutive sequence number is used for the
   acknowledgment of CONTROL messages. It should contain the ID number
   of the current CONTROL message being processed. Table 7, "DATA and
   LDATA Message Types,", shows the DATA and LDATA formats.











Polites, Wollman & Woo        Experimental                      [Page 9]
^L
RFC 1986                         ETFTP                       August 1996


   Table 7: DATA and LDATA Message Types

                      1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Checksum                       |Version        |Type           |
   +---------------+---------------+---------------+---------------+
   |Length                         |Local Port                     |
   +---------------+---------------+---------------+---------------+
   |Foreign Port                   |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+
   |Buffer Number                                                  |
   +---------------+---------------+---------------+---------------+
   |High Consecutive Seq Num Rcvd  |Packet Number                  |
   +---------------+---------------+---------------+---------------+
   |Data Area Checksum Value       |Reserved (MBZ)               |L|
   +---------------+---------------+---------------+---------------+

   Buffer Number   The first buffer number starts at 0
   Hi Con Seq Num  The acknowledgment for CONTROL messages
   Packet Number   The first packet number starts at 0
   Data Checksum   Checksum for data area only
   Reserved        L: the last buffer bit: 0=false, 1=true

   The NULL-ACK message type is sent as a response to a CONTROL_OK
   message that modifies the current packet size, burstsize, or
   burstrate. In acknowledging the CONTROL_OK message, the sender is
   confirming the change request to the new packet size, burstsize, or
   burstrate. If no modifications are requested, a NULL-ACK message is
   unnecessary. See Table 8, "NULL-ACK Message Type," for further
   details.

   Table 8: NULL-ACK Message Type

                      1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Checksum                       |Version        |Type           |
   +---------------+---------------+---------------+---------------+
   |Length                         |Local Port                     |
   +---------------+---------------+---------------+---------------+
   |Foreign Port                   |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+
   |High Consecutive Seq Num Rcvd  |New Burstsize                  |
   +---------------+---------------+---------------+---------------+
   |New Burstrate                  |*New DATA Packet size           |
   +---------------+---------------+---------------+---------------+




Polites, Wollman & Woo        Experimental                     [Page 10]
^L
RFC 1986                         ETFTP                       August 1996


   The CONTROL messages have three subtypes: GO, OK, and RESEND as shown
   in Tables 9-12. The CONTROL message common header may be followed by
   any number of longword aligned subtype messages.

   Table 9: CONTROL Message Common Header

                      1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Checksum                       |Version        |Type           |
   +---------------+---------------+---------------+---------------+
   |Length                         |Local Port                     |
   +---------------+---------------+---------------+---------------+
   |Foreign Port                   |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+

   Table 10: CONTROL_GO Message Subtype

                      1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Subtype        |Padding        |Sequence Number                |
   +---------------+---------------+---------------+---------------+
   |Buffer Number                                                  |
   +---------------+---------------+---------------+---------------+

   Table 11: CONTROL_OK Message Subtype

                     1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Subtype        |Padding        |Sequence Number                |
   +---------------+---------------+---------------+---------------+
   |Buffer Number                                                  |
   +---------------+---------------+---------------+---------------+
   |New Offered Burstsize          |New Offered Burstrate          |
   +---------------+---------------+---------------+---------------+
   |Current Control Timer Value    |*New DATA Packet size           |
   +---------------+---------------+---------------+---------------+












Polites, Wollman & Woo        Experimental                     [Page 11]
^L
RFC 1986                         ETFTP                       August 1996


   Table 12: CONTROL_RESEND Message Subtype

                      1                   2                   3
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
   +---------------+---------------+---------------+---------------+
   |Subtype        |Padding        |Sequence Number                |
   +---------------+---------------+---------------+---------------+
   |Buffer Number                                                  |
   +---------------+---------------+---------------+---------------+
   |Number of Missing Packets      |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+
   |Packet Number (2 bytes)        |. . .                          |
   +---------------+---------------+---------------+---------------+
   |. . .                          |Longword Alignment Padding     |
   +---------------+---------------+---------------+---------------+

2.2 ETFTP COMMAND SET

   Being built from TFTP source code, ETFTP shares a significant portion
   of TFTP's design. Like TFTP, ETFTP does NOT support user password
   validation. The program does not support changing directories (i.e.
   cd), neither can it list directories, (i.e. ls). All filenames must
   be given in full paths, as relative paths are not supported. The
   internal finite state machine was modified to support NETBLT message
   types.

   The NETBLT protocol is implemented as closely as possible to what is
   described in RFC 998, with a few exceptions. The client string field
   in the OPEN message type is used to carry the filename of the file to
   be transferred. Netascii or binary transfers are both supported. If
   enabled, new packet sizes, burstsizes, and burstrates are re-
   negotiated downwards when half or more of the blocks in a buffer
   require retransmission. If 99% of the packets in a buffer is
   successfully transferred without any retransmissions, packet size is
   re-negotiated upwards.

   The interactive commands supported by the client process are similar
   to TFTP. Here is the ETFTP command set. Optional parameters are in
   square brackets. Presets are in parentheses.

   ?       help, displays command list
   ascii   mode ascii, appends CR-LF per line
   autoadapt       toggles backoff function (on)
   baudrate baud   baud rate (16000 bits/sec)
   binary  mode binary, image transfer
   blocksize bytes packet size in bytes (512 bytes/block)
   bufferblock blks        buffer size in blocks (128 blocks/buff)
   burstsize packets       burst size in packets (8 blocks/burst)



Polites, Wollman & Woo        Experimental                     [Page 12]
^L
RFC 1986                         ETFTP                       August 1996


   connect host [p]        establish connection with host at port p
   exit    ends program
   get rfile lfile copy remote file to local file
   help    same as ?
   mode choice     set transfer mode (binary)
   multibuff num   number of buffers (2 buffers)
   put lfile rfile copy local file to remote file
   quit    same as exit
   radiodelay sec  transmission delay in seconds (2 sec)
   status  display network parameters
   trace   toggles debug display (off).

2.3 DATA TRANSFER AND FLOW CONTROL

   This is the scenario between client and server transfers:

   Client sends OPEN for connection, blocksize, buffersize, burstsize,
   burstrate, transfer mode, and get or put. See M bit of reserved
   field.

   Server sends a RESPONSE with the agreed parameters.

   Receiver sends a CONTROL_GO request sending of first buffer.

   Sender starts transfer by reading the file into multiple memory
   buffers. See Figure 1, "File Segmentation,". Each buffer is divided
   according to the number of bytes/block. Each block becomes a DATA
   packet, which is concatenated according to the blocks/burst.  Bursts
   are transmitted according to the burstrate. Last data block is
   flagged as LDATA type.

   +---+     +---+      +---+ +---+ +---+      +---+ +---+ +---+
   |   |     | 0 |      | L | | 4 | | 3 | ---- | 2 | | 1 | | 0 |
   |   |     | +---+    +---+ +---+ +---+      +---+ +---+ +---+
   |   |     +-|   | -->      +---+ +---+      +---+ +---+ +---+
   |   | -->   | 1 |          | L | | 3 | ---- | 2 | | 1 | | 0 |
   +---+       +---+          +---+ +---+      +---+ +---+ +---+
   File   Multi Buffers  Blocks per Burst

   Figure 1. File Segmentation

   Receiver acknowledges buffer as CONTROL_OK or CONTROL_RESEND.

   If blocks are missing, a CONTROL_RESEND packet is transmitted. If
   half or more of the blocks in a buffer are missing, an adaptive
   algorithm is used for the next buffer transfer. If no blocks are
   missing, a CONTROL_OK packet is transmitted.




Polites, Wollman & Woo        Experimental                     [Page 13]
^L
RFC 1986                         ETFTP                       August 1996


   Sender re-transmits blocks until receipt of a CONTROL_OK. If the
   adaptive algorithm is set, then new parameters are offered, in the
   CONTROL_OK message. The priority of the adaptive algorithm is:

   -       Reduce packetsize by half (MIN = 16 bytes/packet)
   -       Reduce burstsize by one (MIN = 1 packet/burst)
   -       Reduce burstrate to actual tighttimer rate

   If new parameters are valid, the sender transmits a NULL-ACK packet,
   to confirm the changes.

   Receiver sends a CONTROL_GO to request sending next buffer.

   At end of transfer, sender sends a QUIT to close the connection.

   Receiver acknowledges the close request with a DONE packet.

2.4 TUNABLE PARAMETERS

   These parameters directly affect the throughput rate of ETFTP.

   Packetsize      The packetsize is the number of 8 bit bytes per
   packet. This number refers to the user data bytes in a block, (frame),
   exclusive of any network overhead. The packet size has a valid range
   from 16 to 1,448 bytes. The Maximum Transfer Unit (MTU) implemented in
   most commercial network devices is 1,500 bytes. The de-facto industry
   standard is 576 byte packets.

   Bufferblock     The bufferblock is the number of blocks per buffer.
   Each implementation may have restrictions on available memory, so the
   buffersize is calculated by multiplying the packetsize times the
   bufferblocks.

   Baudrate        The baudrate is the bits per second transfer rate of
   the slowest link (i.e., the radios). The baudrate sets the speed of
   the sending process. The sending process cannot detect the actual
   speed of the network, so the user must set the correct baudrate.

   Burstsize       The burstsize in packets per burst sets how many
   packets are concatenated and burst for transmission efficiency. The
   burstsize times the packetsize must not exceed the available memory of
   any intervening network devices. On the Ethernet portion of the
   network, all the packets are sent almost instantaneously. It is
   necessary to wait for the network to drain down its memory buffers,
   before the next burst is sent. The sending process needs to regulate
   the rate used to place packets into the network.





Polites, Wollman & Woo        Experimental                     [Page 14]
^L
RFC 1986                         ETFTP                       August 1996


   Radiodelay      The radiodelay is the time in seconds per burst it
   takes to synchronize with the radio controllers. Any additional
   hardware delays should be set here. It is the aggregate delay of the
   link layer, such as transmitter key-up, FEC, crypto synchronization,
   and propagation delays.

   These parameters above are used to calculate a burstrate, which is the
   length of time it takes to transmit one burst. The ov is the overhead
   of 72 bytes per packet of network encapsulation. A byte is defined as
   8 bits. The burstrate value is:

     burstrate = (packetsize+ov)*burstsize*8/baudrate

   In a effort to calculate the round trip time, when data is flowing in
   one direction for most of the transfer, the OPEN and RESPONSE message
   types are timed, and the tactical radio delays are estimated. Using
   only one packet in each direction to estimate the rate of the link is
   statistically inaccurate. It was decided that the radio delay should
   be a constant provided by the user interface.  However, a default
   value of 2 seconds is used. The granularity of this value is in
   seconds because of two reasons. The first reason is that the UNIX
   supports a sleep function in seconds only. The second reason is that
   in certain applications, such as deep space probes, a 16-bit integer
   maximum of 32,767 seconds would suffice.

2.5 DELAYS AND TIMERS

   From these parameters, several timers are derived. The control timer
   is responsible for measuring the per buffer rate of transfer. The
   SENDER copy is nicknamed the loosetimer.

     loosetimer = (burstrate+radiodelay)*bufferblock/burstsize

   The RECEIVER copy of the timer is nicknamed the tighttimer, which
   measures the elapsed time between CONTROL_GO and CONTROL_OK packets.
   The tighttimer is returned to the SENDER to allow the protocol to
   adjust for the speed of the network.

   The retransmit timer is responsible for measuring the network receive
   data function. It is used to set an alarm signal (SIGALRM) to
   interrupt the network read. The retransmit timer (wait) is initially
   set to be the greater of twice the round trip or 4 times the
   radiodelay, plus a constant 5 seconds.








Polites, Wollman & Woo        Experimental                     [Page 15]
^L
RFC 1986                         ETFTP                       August 1996


      wait = MAX ( 2*roundtriptime,  4*radiodelay ) + 5 seconds

   and

      alarm timeout = wait.

   Each time the same read times out, a five second backoff is added to
   the next wait. The backoff is necessary because the initial user
   supplied radiodelay, or the initial measured round trip time may be
   incorrect.

   The retransmit timer is set differently for the RECEIVER during a
   buffer transfer. Before the arrival of the first DATA packet, the
   original alarm time out is used. Once the DATA packets start
   arriving, and for the duration of each buffer transfer, the RECEIVER
   alarm time out is reset to the expected arrival time of the last DATA
   packet (blockstogo) plus the delay (wait). As each DATA packet is
   received, the alarm is decremented by one packet interval. This same
   algorithm is used for receiving missing packets, during a RESEND.

     alarmtimeout = blockstogo*burstrate/burstsize + wait

   The death timer is responsible for measuring the idle time of a
   connection. In the ETFTP program, the death timer is set to be equal
   to the accumulated time of ten re-transmissions plus their associated
   backoffs. As such, the death timer value in the OPEN and RESPONSE
   message types is un-necessary. In the ETFTP program, this field could
   be used to transfer the radio delay value instead of creating the two
   new fields.

   The keepalive timer is responsible for resetting the death timer.
   This timer will trigger the sending of a KEEPALIVE packet to prevent
   the remote host from closing a connection due to the expiration of
   its death timer. Due to the nature of the ETFTP server process, a
   keepalive timer was not necessary, although it is implemented.

2.6 TEST RESULTS

   The NETBLT protocol has been tested on other high speed networks
   before, see RFC 1030 [6]. These test results in Tables 13 and 14,
   "ETFTP Performance," were gathered from files transferred across the
   network and LST-5C TACSAT radios.  The radios were connected together
   via a coaxial cable to provide a "clean" link. A clean link is
   defined to a BER of 10e-5. The throughput rates are defined to be the
   file size divided by the elapsed time resulting in bits per second
   (bps).  The elapsed time is measured from the time of the "get" or
   "put" command to the completion of the transfer. This is an all
   inclusive time measurement based on user perspective. It includes the



Polites, Wollman & Woo        Experimental                     [Page 16]
^L
RFC 1986                         ETFTP                       August 1996


   connection time, transfer time, error recovery time, and disconnect
   time. The user concept of elapsed time is the length of time it takes
   to copy a file from disk to disk. These results show only the average
   performances, including the occasional packet re-transmissions. The
   network configuration was set as:

   ETFTP Parameters:

   Filesize                101,306 bytes
   Radiodelay      2 seconds
   Buffersize      16,384-131,072 bytes
   Packetsize      512-2048 bytes
   Burstsize               8-16 packets/burst

   Gracilis PackeTen Parameters:

   0 TX Delay      400 milliseconds
   1 P Persist     255 [range 1-255]
   2 Slot Time     30 milliseconds
   3 TX Tail               300 milliseconds
   4 Rcv Buffers   8 2048 bytes/buffer
   5 Idle Code     Flag

   Radio Parameters:

   Baudrate                16,000 bps
   Encryption      on


   Table 13: ETFTP Performance at 8 Packets/Burst in Bits/Second

   +-----------+-----------+-----------+-----------+-----------+
   |buffersize |packetsize |packetsize |packetsize |packetsize |
   |(bytes)    |2,048 bytes|1,448 bytes|1,024 bytes|512 bytes  |
   +-----------+-----------+-----------+-----------+-----------+
   |    16,384 |     7,153 |     6,952 |     6,648 |     5,248 |
   +-----------+-----------+-----------+-----------+-----------+
   |    32,768 |     7,652 |     7,438 |     7,152 |     4,926 |
   +-----------+-----------+-----------+-----------+-----------+
   |    65,536 |     8,072 |     8,752 |     8,416 |     5,368 |
   +-----------+-----------+-----------+-----------+-----------+
   |   131,072 |     8,828 |     9,112 |     7,888 |     5,728 |
   +-----------+-----------+-----------+-----------+-----------+








Polites, Wollman & Woo        Experimental                     [Page 17]
^L
RFC 1986                         ETFTP                       August 1996


   Table 14: ETFTP Performance at 16 Packets/Burst in Bits/Second

   +-----------+-----------+-----------+-----------+-----------+
   |buffersize |packetsize |packetsize |packetsize |packetsize |
   |(bytes)    |2,048 bytes|1,448 bytes|1,024 bytes|512 bytes  |
   +-----------+-----------+-----------+-----------+-----------+
   |    16,384 |     5,544 |     5,045 |     4,801 |     4,570 |
   +-----------+-----------+-----------+-----------+-----------+
   |    32,768 |     8,861 |     8,230 |     8,016 |     7,645 |
   +-----------+-----------+-----------+-----------+-----------+
   |    65,536 |     9,672 |     9,424 |     9,376 |     8,920 |
   +-----------+-----------+-----------+-----------+-----------+
   |   131,072 |    10,432 |    10,168 |     9,578 |     9,124 |
   +-----------+-----------+-----------+-----------+-----------+

2.7 PERFORMANCE CONSIDERATIONS

   These tests were performed across a tactical radio link with a
   maximum data rate of 16000 bps. In testing ETFTP, it was found that
   the delay associated with the half duplex channel turnaround time was
   the biggest factor in throughput performance. Therefore, every
   attempt was made to minimize the number of times the channel needed
   to be turned around. Obviously, the easiest thing to do is to use as
   big a buffer as necessary to read in a file, as acknowledgments
   occurred only at the buffer boundaries. This is not always feasible,
   as available storage on disk could easily exceed available memory.
   However, the current ETFTP buffersize is set at a maximum of 524,288
   bytes.

   The larger packetsizes also improved performance. The limit on
   packetsize is based on the 1500 byte MTU of network store and forward
   devices. In a high BER environment, a large packetsize could be
   detrimental to success. By reducing the packetsize, even though it
   negatively impacts performance, reliability is sustained. When used
   in conjunction with FEC, both performance and reliability can be
   maintained at an acceptable level.

   The burstsize translates into how long the radio transmitters are
   keyed to transmit. In ETFTP, the ideal situation is to have the first
   packet of a burst arrive in the radio transmit buffer, as the last
   packet of the previous burst is just finished being sent. In this
   way, the radio transmitter would never be dropped for the duration of
   one buffer. In a multi-user radio network, a full buffer transmission
   would be inconsiderate, as the transmit cycle could last for several
   minutes, instead of seconds. In measuring voice communications,
   typical transmit durations are on the order of five to twenty
   seconds.  This means that the buffersize and burstsize could be
   adjusted to have similar transmission durations.



Polites, Wollman & Woo        Experimental                     [Page 18]
^L
RFC 1986                         ETFTP                       August 1996


3.  REFERENCE SECTION

   [1] Clark, D., Lambert, M., and L. Zhang,
       "NETBLT: A Bulk Data Transfer Protocol", RFC 998, MIT,
       March 1987.

   [2] Postel, J., "User Datagram Protocol" STD 6, RFC 768,
       USC/Information Sciences Institute, August 1980.

   [3] Sollins, K., "Trivial File Transfer Protocol", STD 33,
       RFC 1350, MIT, July 1992.

   [4] MIL-STD-2045-44500, 18 June 1993, "Military Standard Tactical
       Communications Protocol 2 (TACO 2) fot the National Imagery
       Transmission Format Standard", Ft. Monmouth, New Jersey.

   [5] Stevens, W. Richard, 1990, "UNIX Network Programming",
       Prentice-Hall Inc., Englewood, New Jersey, Chapter 12.

   [6] Lambert, M., "On Testing the NETBLT Protocol over
       Divers Networks", RFC 1030, MIT, November 1987.

4.  SECURITY CONSIDERATIONS

   The ETFTP program is a security loophole in any UNIX environment.
   There is no user/password validation. All the problems associated to
   TFTP are repeated in ETFTP. The server program must be owned by root
   and setuid to root in order to work. As an experimental prototype
   program, the security issue was overlooked. Since this protocol has
   proven too be a viable solution in tactical radio networks, the
   security issues will have to be addressed, and corrected.




















Polites, Wollman & Woo        Experimental                     [Page 19]
^L
RFC 1986                         ETFTP                       August 1996


5.  AUTHORS' ADDRESSES

   William J. Polites
   The Mitre Corporation
   145 Wyckoff Rd.
   Eatontown, NJ 07724

   Phone: (908) 544-1414
   EMail:wpolites@mitre.org


   William Wollman
   The Mitre Corporation
   145 Wyckoff Rd.
   Eatontown, NJ 07724

   Phone: (908) 544-1414
   EMail:wwollman@mitre.org


   David Woo
   The Mitre Corporation
   145 Wyckoff Rd.
   Eatontown, NJ 07724

   Phone: (908) 544-1414
   EMail: dwoo@mitre.org


   Russ Langan
   U.S. Army Communications Electronics Command (CECOM)
   AMSEL-RD-ST-SP
   ATTN: Russell Langan
   Fort Monmouth, NJ 07703

   Phone: (908) 427-2064
   Fax: (908) 427-2822
   EMail: langanr@doim6.monmouth.army.mil













Polites, Wollman & Woo        Experimental                     [Page 20]
^L
RFC 1986                         ETFTP                       August 1996


6.  GLOSSARY

   ATD             Advanced Technology Demonstration
   AX.25           Amateur Radio X.25 Protocol
   BER             Bit Error Rate
   EPLRS           Enhanced Position Location Reporting Systems
   ETFTP           Enhanced Trivial File Transfer Protocol
   FEC             Forward Error Correction
   FTP             File Transfer Protocol
   HF              High Frequency
   LCU             Lightweight Computer Unit
   ms              milliseconds
   MTU             Maximum Transfer Unit
   NETBLT  NETwork Block Transfer protocol
   NITFS           National Imagery Transmission Format Standard
   PC              Personal Computer
   RNC             Radio Network Controller
   SAS             Survivable Adaptive Systems
   SATCOM  SATellite COMmunications
   SCO             Santa Cruz Operations
   SINCGARS        SINgle Channel Ground and Airborne Radio Systems
   SLIP            Serial Line Internet Protocol
   TACO2           Tactical Communications Protocol 2
   TCP             Transmission Control Protocol
   TFTP            Trivial File Transfer Protocol
   UDP             User Datagram Protocol
   UHF             Ultra High Frequency

   * Modification from NETBLT RFC 998.
   * The new packet size is a modification to the NETBLT RFC 998.
   * The new packet size is a modification to the NETBLT RFC 998.




















Polites, Wollman & Woo        Experimental                     [Page 21]
^L