Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

 

Introduction

 

 

RSSI is a simple packet based transport protocol. RSSI is based on RFC-908RFC-1151draft-ietf-sigtran-reliable-udp-00 Reliable Data Protocols and modified internal simplifications and improvements. The communication interface is SSI (AXI-Stream based SLAC Streaming protocol). RSSI can be layered on the UDP/IP Protocols or attached to other custom AXI-Stream communication layer. It provides reliable in-order delivery (up to a maximum number of retransmissions) for virtual connections.

...

Note: Spare bits are added for two reasons hardware implementation simplification (64-bit word HW processing) and possible future format extension. 

Figure 1: General header structure

...

Figure 2: SYN header structure

 

Sequence Number

The sequence number field contains the initial sequence number selected for this connection.

...

When the connection is established the data can flow in full duplex mode between the Client and the Server. Some of the examples of data flow follow. 

Half-duplex example

 

The data is flowing in only one direction from Peer 1 to Peer 2. In A) the Transmitter 1 sent four DATA segments with SEQ numbers from 203 to 206. The transmission is halted because no ACK has been received and the Transmitter buffer is full. Note that all the DATA segments contain the ACK number of 100. The Receiver 2 received the four DATA segments and, after one of the ACK conditions are met, sends back the ACK segment with the ACK number of the last segment received in order 206. Note that the ACK segment contains a SEQ number of 101 (indicating next data segment in the opposite direction).

 

In the Half-duplex case the adjustment of ACK conditions can change the amount of bandwidth or is used for flow control. In A) the Maximum Number of Cumulative Acknowledgments parameter is four or more and the Cumulative Acknowledgment Timeout is longer or equal to the reception time of four segments. This results in some dead time between the Transmitter buffer is full and getting the ACK. The ACK has to come before the Retransmission Timeout of Transmitter 1 (otherwise the segments would be transmitted).  In B) the ACK conditions are adjusted as such that the ACK is sent immediately after receiving the data segment and the data flow is thus continuous.

...

The data flows in both directions. Both Peer 1 and Peer 2 are sending the data segments with incrementing SEQ numbers. The received data segment already contains the ACK number (of the last segment received in order) within its header and in this example no standalone ACK segments are necessary. 

Re-transmission

Re-transmission occurs if no ACK is received from the peer and the Re-transmission Timeout is reached. In the example below the DATA segment 203 was lost/corrupted. And the Peer 2 only received the next three segments 204 -205. Because the segment 203 has not been received no new ACK is send back. And the other out of order segments are dropped. After the Re-transmission Timeout the Transmitter 1 re-sends all the unacknowledged segments from its buffer. The Receiver 2 then accepts the re-transmitted segments and finally acknowledges the segments.

...