MSP (Message Stream Protocol)
L. Peterson and B. Davie. Computer Networks: A Systems Approach. Morgan Kaufmann Publishers, San Francisco, CA (1996).
MSP extends SWP to include exlicit connection setup/tear-down and flow control. MSP expects a higher level protocol to buffer incoming messages, and inform MSP as to the amount of available buffer space via the MSP_SETRCVBUFSIZE control op. This is similar to TCP's TCP_SETRCVBUFSPACE control op. The implementation of MSP is directly derived from SWP. Like SWP, MSP is a message-oriented protocol, rather than a byte-oriented protocol like TCP.
Because MSP does not implement congestion control, should the intial advertized flow control window be large enough, it is possible that an MSP source will send a large burst of packets upon startup. This is not unlike TCP's behavior before slow start was implemented. Even if MSP is being run over a single ethernet, is is possible for this initial burst to cause congestion-like losses. This is because when running on top of Unix using SIMETH, the UDP receiver buffer on the receiving host may overflow, analogous to the way router buffers overflow with a non-slow-started TCP. When this happens, the x-kernel prints sim_ether ERROR: Can't get next buffer, dropping incoming packet. MSP is robust, however, so it will eventually recover from these losses. An interesting exercise would be to add slow-start to MSP.
MSP is in the ASYNC realm.
MSP removes a pointer to a long (the MSP port number) from the participant stack. MSP ports must be less than 0x10000. If the local participant is missing, or if the local protocol number is ANY_PORT, MSP will select an unused local port.
name=msp protocols=ip;
Tim Newsham