\subsection{MSP}
\index{swp}

\topic{NAME}
MSP (Message Stream Protocol)

\topic{SPECIFICATION}

\noindent
L. Peterson and B. Davie. {\it Computer Networks: A Systems Approach}.
Morgan Kaufmann Publishers, San Francisco, CA (1996).

\topic{SYNOPSIS}

\noindent
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.

\medskip
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 {\xk} prints
{\var 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.

\topic{REALM}

\noindent 
MSP is in the ASYNC realm.

\topic{PARTICIPANTS}

\noindent 
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.

\topic{CONTROL OPERATIONS}

\begin{description}

\item[{\tt MSP\_SETRCVBUFSIZE:}]
Sets the receiver's buffer size to the specified number of bytes.
This effectively opens the flow control window to this size.
\begin{description}
\item[{\rm Input:}] {\tt int bufsize}
\item[{\rm Output:}] none
\end{description}

\end{description}

\topic{CONFIGURATION}

\noindent {\tt name=msp protocols=ip;}

\topic{AUTHOR}

\noindent
Tim Newsham





