Windows 7 / Getting Started

MAPI

MAPI is the native protocol used by Exchange Server to exchange information between Mailbox servers, Hub Transport servers, Client Access servers, and client applications (such as Outlook). MAPI is also encapsulated within SSL to support Outlook Anywhere (which was originally called RPC/HTTP). MAPI is based on remote procedure calls (RPCs), as are many of Microsoft's server protocols. RPC is the foundation of the Distributed Component Object Model (DCOM) on which Microsoft interserver communication is based.

That's a lot of alphabet soup. If you are trying to get certified with Microsoft in enterprise messaging, you'll need to know all that (and much more). For right now, remember these things:

  • MAPI is an RPC-based protocol.
  • Because MAPI is RPC based, MAPI must be encapsulated to use it on the Internet; this encapsulation is known as Outlook Anywhere.
  • MAPI and SMTP are the two primary messaging protocols used by Exchange, regardless of the Exchange role.

The Microsoft Exchange RPC Client Access service, whose short name is MSExchangeRPC, is the endpoint for MAPI RPCs. MAPI requests are handled by MSExchangeRPC using this general process:

  1. Receive a MAPI request.
  2. Decode the request into an XSO request.
  3. Hand the request off to a database server.
  4. Receive the result from the database server.
  5. Encode the response from XSO to MAPI.
  6. Return the MAPI result.

This can be complicated when the result of a database operation cannot be returned within a single MAPI result packet and instead the results must be paged. However, the general process remains the same. As you can imagine, the RPC-encode and RPC-decode process itself can put a significant processor load onto an Exchange server. The length of time taken from the receipt of a MAPI request until the result is returned is known as the RPC latency (end-to-end). The RPC latency is affected by many things, including processor utilization of the server, how long a database request takes, whether a database execution thread is available, whether memory is available to create a response packet, and many other things. Significantly, by default MSExchangeRPC will attempt to process only 100 RPCs at a time. The service is also aware of where packets originate and how many packets have originated from specific sources; it will prioritize packets in order to ensure that a single requestor does not unfairly consume the resources of the Mailbox servers.

An Exchange System Object (XSO) is the internal format of requests that Exchange Server roles use to communicate with each other. Unlike MAPI, XSO is compatible with managed-code interfaces. Beyond that, little is known about XSO; it is an Exchange-internal proprietary format.
A Client Access server is the endpoint for MAPI communications, except for public folders. Public folder MAPI is processed by the MSExchangeRPC service on a Mailbox server hosting public folders.

The MSExchange RpcClientAccess\RPC Averaged Latency counter measures the average amount of time consumed by the last 1,024 RPC requests, and the value is expressed in milliseconds. This counter should not exceed 50 ms. If the counter begins to increase, this indicates one (or more) of the following:

  • Additional load is being put on the server.
  • There is a network problem.
  • There is a performance problem.

This particular counter will likely be the ''first indicator'' of a performance problem and is worthy of continuous monitoring and tracking.

The MSExchange RpcClientAccess\RPC Requests counter measures the total number of RPC requests that the Client Access server is currently servicing. It should stay under 30. As described earlier, without specific configuration changes, the limit of this counter is 100. However, if the counter averages over 30, the Exchange administrator should investigate (using many of the other counters already discussed) whether there is a performance requirement spike or if there are growing performance issues in the Exchange environment.

[Previous] [Contents] [Next]