next up previous contents
Next: Message Protocols Up: Data Transfer Protocol Previous: Message Packets

Packet Protocol

At the packet level, a simple throttling protocol is setup to limit the amount of buffering required and to prevent fast senders from affecting the message flow of other processes sharing the channel. This creates process-pair virtual channels. The number of virtual channels mapped onto a single channel is not fixed and can change according to the application's behavior. The communication agents are expected to handle the resulting change in buffering requirement. At startup time, two packet protocol values are negotiated:

IMPI_Pk_ackmark:
The number of packets received by the destination process before a protocol ACK is sent back to the source.

IMPI_Pk_hiwater:
The maximum number of unreceived packets the source can send before requiring a protocol ACK to be send back.

For each process-pair, the source maintains a packets-sent counter and the destination maintains a packets-received counter. The destination process sends a protocol ACK to the source process for every IMPI_Pk_ackmark packets it receives from that source. This decrements the source's counter by IMPI_Pk_ackmark. When the source's counter reaches the IMPI_Pk_hiwater value, it refrains from sending more packets to that destination until an ACK is received from it. The transfer of protocol ACK packets does not modify the value of the counters. The implementation is expected to provide sufficient buffering to receive the protocol ACK packets and to expedite their processing.

Advice to implementors.Depending on the implementation's internal process/agent protocol, packet counters can either be maintained by the processes or by the agent.(End of advice to implementors.)


next up previous contents
Next: Message Protocols Up: Data Transfer Protocol Previous: Message Packets
IMPI Protocol ver 0.0
DRAFT March 22, 1999