%
% $Log: simeth.tex,v $
% Revision 1.2  1997/06/04 22:37:00  llp
% cleanup for Jun97 release
%
% Revision 1.1  1996/02/02  00:03:23  slm
% Initial revision
%
% Revision 1.1  1995/07/28  21:20:22  slm
% Initial revision
%
% Revision 1.1.1.3.1.1  1994/10/21  00:00:25  hkaram
% New branch
%
% Revision 1.1.1.3  1994/08/02  23:55:43  davidm
% Sectioning commands now use \protspec and \topic so latex2html has
% an easier time.
%
% Revision 1.1.1.2  1994/07/05  00:42:34  ho
% Indexed.
%
% Revision 1.1.1.1  1994/03/14  18:51:51  umass
% SIMETH runs on both sunos and irix platforms
%

\subsection{SIMETH}

\index{simeth}

\topic{NAME}
SIMETH (Simulated Ethernet Driver (SunOS, Solaris, OSF/1, Linux, and IRIX platforms))

\topic{SPECIFICATION}

\noindent
SIMETH simulates an {\xk} ethernet driver by sending and receiving
messages using Unix UDP sockets.

\topic{SYNOPSIS}

\noindent 
Each instantiation of SIMETH is associated with a specific Unix UDP
port and simulates an ethernet driver for a single interface.  SIMETH
transmits outgoing messages by sending to other UDP ports and presents
UDP messages received on its port as incoming ethernet packets.  Note
that since messages sent from one simulated {\xk} to another are
encapsulated within Unix UDP packets, it is only possible to
communicate with another peer running the {\xk} with this same driver.
Communication with ``native'' peers is not possible with this driver.

The mapping between Unix UDP ports and SIMETH ethernet addresses is
very simple.  The six bytes of SIMETH ethernet address are formed by
the concatenation of the four byte IP host number for the Unix host on
which the simulator is running and the two-byte UDP port used by the
SIMETH instantiation.  Note that this is the {\em real} IP host
number, not the {\em simulated} IP host number.  See the CONFIGURATION
section below.

Note that an {\xk} may be configured with multiple instantiations of
SIMETH, each with its own UDP port, to simulate a multihomed host.

SIMETH can awkwardly simulate ethernet broadcast messages.  When an
outgoing broadcast message is sent to SIMETH, SIMETH asks its
corresponding ARP protocol for a dump of all hosts in its table.
SIMETH then sends the message to each of these hosts in a
point-to-point fashion.  Note that for a reasonable simulation of
ethernet broadcast, all {\xk}s in communication should have the same
ARP table (see the ARP.)

\topic{REALM}

\noindent
SIMETH is in the ANCHOR realm, supporting the ethernet driver interface
described in ETH.

\topic{PARTICIPANTS}

\noindent
SIMETH supports the ethernet driver interface rather than a standard
xkernel UPI interface and thus makes no use of participant stacks.

\topic{CONTROL OPERATIONS}

\begin{description}

\item[{\tt ETH\_REGISTER\_ARP:}]
Used by an ARP instantiation to register itself with its corresponding
SIMETH driver.  This is used to simulate ethernet broadcasts as
described above.  If no ARP protocol registers with a SIMETH
instantiation, broadcasts on that instantiation will not be
possible. 
\begin{description}
\item[{\rm Input:}] {\tt XObj /* ARP protocol object */ }
\item[{\rm Output:}] none
\end{description}

\end{description}

\topic{EXTERNAL INTERFACE}

\noindent
SIMETH adheres to the external interface defined by ETH.

\topic{CONFIGURATION}

\noindent
SIMETH requires no lower protocol.  It can be configured in either the
driver section or the protocol section of graph.comp.

\medskip
\noindent
SIMETH recognizes the following ROM options:

\smallskip
{\tt simeth nnnn}:
This instantiation of simeth should use UDP port nnnn.  There must be
such a line for each instantiation of SIMETH in the \xk{}.

\topic{AUTHORS}

\noindent Larry Peterson and Norm Hutchinson (sunos platform), Erich
Nahum, David Yates, and Jim Doyle (irix platform).
