OAB in Exchange Server 2013


OAB History

Offline Address Books, fondly referred to as OABs, are a critical component in Exchange infrastructure for a long time now. An OAB is used by Microsoft Outlook clients in Cached Exchange Mode for address book lookups when offline. OABs are also critical in reducing the workload on Exchange servers as cached mode Outlook clients will always query the local OAB first.

The OAB has evolved over Exchange releases. The last major overhaul of OAB architecture was in Exchange Server 2007, where we introduced web-distribution of OAB along with CAS server role taking major responsibility of distributing the OAB. But the OAB generation process itself hasn’t changed much.

Until now.

With the change in the server role architecture introduced in Exchange Server 2013, we have also changed the way OABs are generated and distributed to clients. Let’s explore the new OAB in Exchange 2013 by comparing it to its predecessors.

Changes in OAB generation

Which Server will generate the OAB?

In all previous Exchange releases, OAB generation was bound to a specific Exchange server by the Server property. When you install the first Exchange mailbox server, setup designates it as the OAB generation server. You can create new OABs as needed. When creating a new OAB, the OAB generation server has to be specified.

OAB in Exchange Server 2010:

Get-OfflineAddressBook “Default Offline Address Book” | fl name,server
 
Name : Default Offline Address Book
Server : MBX1

The disadvantage with this approach was that only one server was configured for OAB generation, and it was a single point of failure. If this server was unavailable for a long period, the OAB generation was affected.

In Exchange 2013, the OAB is generated by each Exchange 2013 Mailbox server(s) that hosts a special type of arbitration mailbox, called organization mailbox. OAB generation is not bound by the Server parameter anymore.

OAB in Exchange Server 2013:

Get-OfflineAddressBook “Default Offline Address Book (Ex2012)” | fl name,server
 
Name : Default Offline Address Book (Ex2012)
Server :

The unbinding of OAB from a specific server allows the same OAB to be generated by multiple Mailbox servers. This new architecture provides greater resiliency in OAB generation.

Which component will generate the OAB?

The Microsoft Exchange System Attendant service was the workhorse responsible for OAB generation in previous Exchange versions. The OAB generation was a scheduled process, i.e. OAB generation would start at the scheduled time configured on the OAB property, irrespective of the work load on the server.

In Exchange 2013, the OABGeneratorAssistant, a mailbox assistant running under the Microsoft Exchange Mailbox Assistants service, generates the OAB. Like most other mailbox assitants, the OABGEnerationAssistant is a throttled process – it runs or pauses according to the workload on the server.

Where are the OAB files stored?

In previous Exchange versions, the OAB generated by the Mailbox server was located in the %ExchangeInstallPath%\ExchangeOAB folder. The folder was shared so the CAS could retrieve the OAB files for distribution to Outlook clients.

In Exchange 2013, the OAB files are generated and stored in the Organization Mailbox first and later copied to the %ExchangeInstallPath%\ClientAccess\OAB\ folder.

Changes in OAB distribution

Exchange 2007 and 2010 supported two methods of OAB distribution: web distribution and Public Folder distribution. Exchange 2013 supports only the web distribution method, so let’s explore the changes in web-distribution method.

The Exchange 2007/2010 CAS pulled the OAB files generated on the respective Mailbox server and stored them locally. The Microsoft Exchange File Distribution Service on the CAS role did the task of pulling OAB files.

This was the flow OAB download from client side:

  1. Outlook receives OAB URL from Autodiscover and reaches a CAS server.
  2. The CAS authenticates the user and serves OAB files from local disk.

Couple of disadvantage with this method:

  1. The OAB download fails if the CAS doesn’t have the OAB files locally.
  2. If the File Distribution Service on CAS isn’t working, clients will receive stale OAB files or, in other words will not receive the updates.

In Exchange 2013, OAB files are not stored locally on the CAS. CAS 2013 proxies all OAB download requests to the appropriate Exchange 2013 Mailbox server. With this change in the architecture, the Microsoft Exchange File Distribution Service is removed from the CAS role.

In Exchange 2013, this is the flow of OAB download:

    1. Outlook receives OAB URL from Autodiscover and reaches designated CAS 2013 through OAB URL.

The CAS server performs the following actions:

  1. Performs initial authentication for OAB.
  2. Queries Active Directory and determines the closest Organization Mailbox for the requesting user.
  3. Queries Active Directory again to determine the mailbox database hosting the Organization Mailbox.

  4. Queries the Active Manager to determine the mailbox server where the mailbox database is active (mounted).
  5. Proxies the request to the Mailbox server identified in step 4.
  6. Retrieves OAB files and passes them to the client.

This new workflow overcomes the disadvantages of legacy OAB download workflow.

The Organization Mailbox

The Organization Mailbox is a new type of arbitration mailbox introduced with Exchange 2013. The arbitration mailbox with persisted capability OrganizationCapabilityOABGen is referred to as Organization Mailbox. It plays a crucial role in OAB generation, storage and distribution.

Each Exchange Server 2013 mailbox role hosting an Organization Mailbox will generate all Exchange 2013 OAB’s defined in the environment. The OAB is generated in the Organization Mailbox first and later copied to the disk.

Use the following command to identify the Organization mailbox:

Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like “*oab*”}

Example:

Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like “*oab*”}
 
Name Alias ServerName ProhibitSendQuota
—- —– ———- —————–
SystemMailbox{bb558c35… SystemMailbox{bb5… mbx1 Unlimited

Storing the OAB files in the Organization Mailbox makes the OAB files more resilient.

Putting it together: A real-life scenario:

The following scenario puts together the critical points we learned so far:

  1. MBX1 and MBX2 are Exchange 2013 Mailbox servers and member of a DAG. CAS1 is an Exchange 2013 CAS.
  2. The organization mailbox is present on mailbox database DB1. DB1 has copies on MBX1 and MBX2.
  3. DB1 is currently active on MBX1.
  4. The Microsoft Exchange Mailbox Assistants service on MBX1 will generate the OAB.
  5. The OAB will be first generated in the organization mailbox and later copied to disk of MBX1. At this point, MBX2 is not playing any role in OAB generation.
  6. An Outlook client tries to download OAB, and reaches CAS1 through OAB URL.
  7. CAS1 queries Active Manager and finds out database hosting organization mailbox (DB1) is active on MBX1.
  8. CAS1 proxies the OAB download request to MBX1 and serves the files back to the client.
  9. At this point, MBX1 goes down due to power failure and DB1 is activated on the server MBX2.
  10. CAS1 receives another request for OAB download, queries the Active Manager again and this time proxies the request to MBX2, as DB1 is now active on MBX2.
  11. MBX2 extracts OAB files present in the organization mailbox to the disk, to ensure latest files are served to the client.
  12. MBX1 comes back online, but DB1 remains active on MBX2.
  13. At next OAB generation work cycle, the Microsoft Exchange Mailbox Assistants service on MBX2 will generate the OAB.

The next article in this series will talk about how to manage the new OAB in Exchange 2013.

Bhalchandra Atre

Comments (22)
  1. Cool Feature !!

    Great  !!

  2. rodrigo says:

    Reading this:

    In Exchange 2013, the OAB files are generated and stored in the Organization Mailbox first and later copied to the %ExchangeInstallPath%ClientAccessOAB folder.

    I'm not sure if directory above is on CAS/Front-End servers or Back-End servers… presuming BE?

    Also, when CAS/FE proxy client request to Mailbox/BE server, OAB is retrieved from local disk or from the organization mailbox? Thanks.

  3. Rodrigo, the OAB files are stored only on Exchange 2013 Mailbox role. The Exchange 2013 CAS role does not hold OAB files, it proxies client request to appropriate Mailbox role server.

  4. sivaram says:

    Very well written and explained !!!

  5. Charles Derber says:

    Bhalchandra – Glad to see your article on OAB(Exchange 2013). Something new online till date which I haven't seen on anyone's blog yet.

    Looking forward for this extension – to understand more why there was architectural change required towards client/server query response(for OAB) and removal of service(FDS).

    One thing clarify – what if the none of the mailbox server is available, since the CAS proxies OAB request to MBX the OAB download status in outlook will fail correct me if am wrong…which was not in the case of 2010…?

  6. Charles,

    If none of the MBX (BE) servers are available your DAG would not be mounted and the PAM cannot send you on to the correct server to download the OAB. Hence, if none of the servers are available you have bigger issues :)

    Bhalchandra may correct me if my logic is flawed :)

  7. Charles Derber says:

    Marc – Logic seems to me right as well and was aware of the fact too.

    The idea behind that qtn was as CAS is middle tier for any request and now 2013 is somewhat sharing the tasks to response the client as an example here of OAB.

    I just had a point to know whether the client download status for OAB will fail as there is no cache available on CAS server locally.(considering i haven't tested until this article was published)

  8. Rodrigo, I don't believe the other part of your question was answered.

    The CAS proxies the OAB download request to the MBX role. The MBX serves the file (not the information from the Organization Mailbox) from its local disk back to the client.

    Bhalchandra – please comment if there are any exceptions.

  9. Charles Derber says:

    As per bb232155 what I understand & FYI –

    Microsoft Exchange generates the new OAB files, compresses the files, and then places the files on a local share. (On MBX)

    If a client initiates the OAB distribution request, the request will come through a Client Access server. The Client Access server then routes the request to the Mailbox server which is hosting the OAB files. The OAB files are distributed directly from the Mailbox server to the client.

    Anyway Bhalchandra is the right person to comment on more.

  10. Small typo: Step 5 references itself.  It should reference the server found in step 4.

    Also, step 2 says, CAS "determines the closest Organization Mailbox for the requesting user".  How many Organization Mailboxes are there?  I assumed there's only one per organization.

  11. Raghunadh P says:

    Good Blog and nicely explained…..

  12. #Jeff Guillet, thanks for spotting the typo in sequence, will be updating this soon. About organization mailbox, yes we can have more than one organization mailbox with OAB generation capability. My next article in this series will have more details on managing OAB & Organization Mailboxes.

    #Charles, CAS 2013 is a statless role, it just has to proxy request to correct server, the OAB files are not copied to CAS any more hence the File Distribution Service is removed.

  13. Weiyu Mao says:

    If we have two organization mailboxes, how to make sure the OAB files generated by the two mailboxes are same? If not, client in different database may get different OAB files, right?

  14. Very well explained !

  15. Gengaiyan says:

    Its really good improments in OAB.

    Thanks Microsoft Exchange group.

  16. BBWI says:

    What about speeding up the process for Outlook to get the new OAB? By default it's once every 24 (up to 48 hrs) hours for Outlook in Cached mode to download the OAB. Any chance we'll see that cut down significantly any time soon?

  17. @ExchangeITPro says:

    Very nice article but I have a question

    Can you talk more about Throttling, under what workload does it pause and the run again?

  18. @ExchangeITPro # The OAB Generation is throttled by WLM with default workload classification of "InternalMaintenance", which can be changed if needed.

    Please check below article on more details about WLM

    technet.microsoft.com/…/jj150503(EXCHG.150).aspx

    Weiyu Mao   # Your question may be answered in next blog post.

  19. manu says:

    Lot of changes happened in OAB generation and distribution, which in-effect solves many issues.

  20. Vikram Nagaraj says:

    Nice Job Bhala

  21. Sunil Bansal says:

    Nice blog..

  22. Sunder Rajan says:

    Very Well Explained.

Comments are closed.