
         Microsoft Corporation
         10700 Northup Way
         Bellevue, Washington  98004

         March 20, 1984


         Colleagues :

         We at Corvus Systems have reviewed the Microsoft Network
         specifications.  We like the fact that they do not define the
         internal structure of the transport and lower layers.
         Although we like your general approach we find the
         specifications vague and even confusing in several critical
         areas.  For example, in the file sharing document, you side
         stepped the file locking and sharing issue.  In the transport
         document, the space allocated for addressing is more than
         adequate.  However, Microsoft must define how network
         addresses map into objects in the MSDOS world.  We realize
         this is a difficult issue but a network independent facility
         such as a message exchange could be defined.

         Specifically with the transport document, the definition of a
         fixed format TCB is excellent.  Within the TCB, the TCB_TD
         definition is confusing.  We view it as a connection id.
         Consequently, the ACB_TD should be defined as the connection
         id for the operation complete indication.  Also, one byte may
         be too small.  A word with 1 byte as the index and another as
         a random number may be more useful.

         To simplify the calling interface we suggest the interrupt
         routine should not return error codes.  If an operation fails
         the caller should be informed via the ANR.  This allows the
         caller to localize the error processing within the ANR.

         The specification's definition and requirement of a logical
         packet stream for the connection mode is both inconsistent
         and unacceptable.  Standard transport layer implementations
         usually provide a byte stream.  If an application protocol
         requires a record stream, such as a parameter block, the
         presentation layer can provide them.

         For the commands, timeouts are either not used or not
         defined.  The defined send timeout, TCB_STO, is not used.  No
         receive timeout is defined.  No timeout for listen is
         defined. However, TCB_CTO could be used.

         Since multiple commands are allowable on a connection
         the cancel command must allow the caller to
         specify transport command as well as connection id.

         The status command only provides the status of the whole
         network interface.  A status command based on connection is
         also required.

         Call should be a super set of listen.  Therefore, if two
         session entities call each other the transport layer should
         make a connection.

         Broadcast is selected by network address.  Seperate send and
         receive commands are unnecessary.  Addressing independence
         can be achieved with a system call to the net interface which
         returns the broadcast address.  Another useful function would
         allow the caller to enable and disable the reception of
         broadcast messages.

         In the core file sharing protocol document a reference is
         made to the core VC definitions document.  We do not have
         this document and would appreciate seeing it.

         Thank you for allowing us to review and comment on your
         preliminary MSNET documentation.  We would be glad to meet
         with you and discuss any points we have brought up as well as
         any ideas we have on this topic.


         Sincerely



         Phil Belanger
         Keith Ball
