Adaptive data link protocol
First Claim
1. A method of adaptively controlling a data link to compensate for variation in error in a transmission of data from a first terminal to a second terminal, the method comprising:
- storing data at the first terminal in a transmit memory as an array of data frames arranged in a window of the transmit memory;
dividing the window into sub-windows each having less frames than said window;
transmitting data from successive ones of said frames in a sequence of packets wherein data in a packet is obtained from one frame;
embedding control signals in each of said packets, said control signals identifying packets by sequence number;
receiving said packets at said terminals;
checking said packets by tests for sequence number and bit error for detection of a transmission fault;
storing data of only those packets which pass said tests in a receive memory at said second terminal,packets which fail at least one of said tests being rejected packets;
retransmitting rejected packets from said first terminal to said second terminal;
counting the number of rejected packets occurring during a transmission of a window of data to obtain a packet error rate; and
altering the sizes of said sub-windows in accordance with the packet error rate to minimize the delay of re-transmission and increase the utilization of the link.
1 Assignment
0 Petitions
Accused Products
Abstract
A communication system provides high speed transmission of data over a link, such as a fiber optic link, between a first terminal and a second terminal. The architecture and protocol permits the use of dedicated hardware such as state machines constructed of programmable array logic units, to synchronize the transmission and reception of data packets and the retransmission of designated ones of these packets in the event of a faulty transmission. Packets to be transmitted and received are stored in an array of frames in sub-windows of a memory storage window in each of the termianls, the frame number being equal to the sequence number of the data packet. By embedding sequence and status bits in each packet within control words and bits appended to each packet, the state machine in each terminal can readily track the progress of each packet so as to request acknowledgement of error-free receipt, to send an acknowledgement, to request a retransmission of a packet designated by its serial number and to distinguish a retransmitted packet from an original packet transmitted with error.
-
Citations
17 Claims
-
1. A method of adaptively controlling a data link to compensate for variation in error in a transmission of data from a first terminal to a second terminal, the method comprising:
-
storing data at the first terminal in a transmit memory as an array of data frames arranged in a window of the transmit memory; dividing the window into sub-windows each having less frames than said window; transmitting data from successive ones of said frames in a sequence of packets wherein data in a packet is obtained from one frame; embedding control signals in each of said packets, said control signals identifying packets by sequence number; receiving said packets at said terminals; checking said packets by tests for sequence number and bit error for detection of a transmission fault; storing data of only those packets which pass said tests in a receive memory at said second terminal, packets which fail at least one of said tests being rejected packets; retransmitting rejected packets from said first terminal to said second terminal; counting the number of rejected packets occurring during a transmission of a window of data to obtain a packet error rate; and altering the sizes of said sub-windows in accordance with the packet error rate to minimize the delay of re-transmission and increase the utilization of the link. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of adaptively controlling a data link to compensate for variation in error in a transmission of data from a first terminal to a second terminal, the method comprising:
-
storing data at the first terminal in a transmit memory as an array of data frames arranged in a window of the transmit memory; dividing the window into sub-windows each having less frames than said window; transmitting data from successive ones of said frames in a sequence of packets wherein data in a packet is obtained from one frame; embedding control signals in each of said packets, said control signals identifying packets by sequence number; receiving said packets at said terminals; checking said packets by tests for sequence number and bit error for detection of a transmission fault; storing data of only those packets which pass said tests in a receive memory at said second terminal, packets which fail at least one of said tests being rejected packets; retransmitting rejected packets from said first terminal to said second terminal; counting the number of rejected packets occurring during a transmission of a window of data to obtain a packet error rate; altering the sizes of said sub-windows in accordance with the packet error rate to maximize a speed of data transmission along said data link; reporting back to said first terminal from said second terminal an error signal designating the sequence number of a rejected packet; wherein, during said step of retransmitting, there is a retransmission of packets which were transmitted subsequent to said rejected packets in accordance with a GO-BACK algorithm; during said step of retransmitting, there is a step of embedding in each packet of said rejected and said subsequent packets a control signal identifying each packet as a retransmitted packet; the sequence number is equal to the number of the frame in said window containing data of the packet bearing said sequence number; and
data of said receive memory is stored in an array of frames in a window of said received memory identical to the array of frames in the window of said transmit memory. - View Dependent Claims (13)
-
-
14. A method of adaptively controlling a data link to compensate for variation in error in a transmission of data from a first terminal to a second terminal, the method comprising:
-
storing data at the first terminal in a transmit memory as an array of data frames arranged in a window of the transmit memory; dividing the window into sub-windows each having less frames than said windows; transmitting data from successive ones of said frames in a sequence of packets wherein data in a packet is obtained from one frame; embedding control signals in each of said packets, said control signals identifying packets by sequence number; receiving said packets at said terminals; checking said packets by tests for sequence number and bit error for detection of a transmission fault; storing data of only those packets which pass said tests in a receive memory at said second terminal, packets which fail at least one of said tests being rejected packets; retransmitting rejected packets from said first terminal to said second terminal; reporting back to said first terminal from said second terminal an error signal designating the sequence number of a rejected packet; counting the number of error signals occurring during the transmission of a window of data to obtain a packet error rate; wherein the sequence number is equal to the number of the frame in said window containing data of the packet bearing said sequence number; data of said receive memory is stored in an array of frames in a window of said received memory identical to the array of frames in the window of said transmit memory; subsequent to the completion of transmission of all frames of a sub-window, there is a step of sending from said first terminal to said second terminal a request signal for acknowledgement, said request signal being embedded as a part of said control signal in a subsequently transmitted packet; said method further comprising reporting back to said first terminal from said second terminal an acknowledgement signal acknowledging that packets previously received at said second terminal have passed said tests; and wherein an error signal is produced by comparing sequence numbers of stored data in said receive memory with frame numbers of frames storing data;
said methodfurther comprising a step of altering a repetition frequency of the acknowledgement - request signals in accordance with the packet error rate to maximize a speed of data transmission along said data link.
-
-
15. A method of adaptively controlling a data link to compensate for variation in error in a transmission of data from a first terminal to a second terminal, the method comprising:
-
transmitting a sequence of data packets from said first terminal to said second terminal to be received at said second terminal; sending a request signal from said first terminal for acknowledgement of receipt of the data packets by said second terminal, said sending being done periodically after a predetermined number of data packets; reporting back to said first terminal from said second terminal, in response to said acknowledgement - request signal, a response signal acknowledging receipt of error - free packets, said response signal being an error signal in the case of receipt of a packet with error; retransmitting packets which were received with error in accordance with a GO-BACK algorithm; formulating a packet error rate by comparing the number of error signals with the number of packets transmitted; and altering a repetition frequency of said acknowledgement - request signals in accordance with said packet - error rate, an increase in error rate producing an increase in said repetition frequency so as to increase the transmission speed of a sequence of data packets. - View Dependent Claims (16)
-
-
17. A method of adaptively controlling a data link to compensate for variation in error in a transmission of data from a first terminal to a second terminal, the method comprising:
-
storing data at the first terminal in a transmit memory as an array of data frames arranged in a window of the transmit memory; dividing the window into sub-windows each having less frames than said window; transmitting data from successive ones of said frames in a sequence of packets wherein data in a packet is obtained from one frame; embedding control signals in each of said packets, said control signals identifying packets by sequence number; receiving said packets at said terminals; checking said packets by testing for a transmission fault; storing data of only those packets which pass said testing in a receive memory at said second terminal, packets which fail said testing being rejected packets; retransmitting rejected packets from said first terminal to said second terminal; obtaining a packet error rate by monitoring rejected packets occurring during a transmission of a window of data; and altering the sizes of said sub-windows in accordance with the packet error rate to maximize a speed of data transmission along said data link.
-
Specification