rfc1986.txt
来自「中、英文RFC文档大全打包下载完全版 .」· 文本 代码 · 共 1,180 行 · 第 1/4 页
TXT
1,180 行
+---------------+---------------+---------------+---------------+ 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]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]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]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]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]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
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?