ARDP Frequently Asked Questions

How does ARDP compare to existing transport protocols?

What is ARDP's acknowledgment policy and mechanism?

ARDP uses both implicit and explicit acknowledgments. Clients and servers use the received through field (octets 7 and 9 in V0, and 8 and 9 in V1) to piggyback acknowledgments in data packets. The received through value indicates the sequence number through which all packets have been received by the sender of the packet.

Servers and clients also send explicit acknowledgments to each other. For instance, the server sends an ACK back to the client when the server receives a multi-packet request from the client. This is done through the ardp_acknowledge() call (ardp_accept() calls ardp_acknowledge()).

Note that the server only ACKs the first packet of a multi-packet request if it receives a duplicate of it. If the client times out (default timeout period is set to 4 seconds), the client will retransmit the request's first packet. If the server receives this retransmitted first packet, the server will then detect that it is a duplicate packet of an outstanding request, and will only then ACK it.

The server can explicitly request an ACK from the client by setting bit 7 of octet 11 (option flags) in V0 and bit 0 of octet 1 in V1. This is the case when the server sends the last packet of a window, or if the server sends the last packet of a reply and the client hasn't acknowledged the reduction of a previously requested wait (see ardp_respond()).

What is ARDP's timeout and retransmission policy?

A client checking for replies retransmits unacknowledged packets. In ardp_pr_actv() it checks whether the peer's received through is smaller than the total number of packets already sent. In that case, it schedules the retransmission for after it detects the receipt of an unsequenced control packet.

What are ARDP's flow control mechanisms?

The client and the server maintain both receive and transmit windows. The default client and server transmit window is 16 packets.

The client can advertise its receive window to the server. The server will then use this value as its transmit window. The client can also reset its receive window size to the server, who will go back using its default transmit window size.

What queues does the ISI ARDP implementation manage?

ARDP clients and servers maintain several queues. The server maintains the following request queues: On the client side, the following queues are maintained:

The queues are also discussed in the ARDP API

What functions can an ARDP server application use to check for requests?

The server checks for new requests and/or replies to its own requests using ardp_get_nxt(), ardp_get_nxt_nonblocking(), and ardp_get_nxt_all().

These functions are further described in the ARDP API.