Microsoft Office Communications Server 2007 R2 Technical Reference Published: July 2009 Updated: October 2009 Updated: April 2010 For the most up-to-date version of the Technical Reference documentation and the complete set of the Microsoft® Office Communications Server 2007 R2 online documentation, see the Office Communications Server TechNet Library at http://go.microsoft.com/fwlink/?LinkID=132106. Note: In order to find topics that are referenced by this document but not contained within it, search for the topic title in the TechNet library at http://go.microsoft.com/fwlink/?LinkID=132106. 1 This document is provided “as-is”. Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it. Some examples depicted herein are provided for illustration only and are fictitious. No real association or connection is intended or should be inferred. This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes. Copyright © 2010 Microsoft Corporation. All rights reserved. Microsoft, Active Directory, Outlook, SQL Server, Visio, Visual C++, Windows, Windows Media, Windows PowerShell, Windows Server, and Windows Vista are trademarks of the Microsoft group of companies. All other trademarks are property of their respective owners. 2 Contents Office Communications Server 2007 R2 Technical Reference Guide ............................................ 1 Office Communications Server 2007 R2 Architecture ..................................................................... 1 Topology and Component Architecture ....................................................................................... 2 Standard Edition (Single Server Installation) ............................................................................ 2 Enterprise Edition...................................................................................................................... 3 Consolidated Configuration ...................................................................................................... 3 Expanded Configuration ........................................................................................................... 3 Pool Components for Office Communications Server 2007 R2 ................................................... 4 Overview of Pool Components ................................................................................................. 4 Common Infrastructure Components........................................................................................ 6 RTCSrv .................................................................................................................................. 7 Office Communications Server Application Programming Interface (API) .......................... 10 RTCHost .............................................................................................................................. 12 Back-End Database............................................................................................................. 13 Presence Components ........................................................................................................ 13 Web Components Services for Office Communications Server 2007 R2 ........................... 14 Archiving and Monitoring for Office Communications Server 2007 R2 ............................... 14 Unified Communications Application Services (UCAS) Infrastructure ................................ 15 Conferencing Components ..................................................................................................... 16 Conferencing Infrastructure Components ........................................................................... 16 Conferencing Servers for Office Communications Server 2007 R2 .................................... 19 Voice Components.................................................................................................................. 21 RTCHost Voice Components .............................................................................................. 21 Unified Communications Application Services (UCAS) Voice Applications ........................ 23 Communication Protocols for Office Communication Server 2007 R2 ...................................... 25 Protocols Overview ................................................................................................................. 25 Conferencing Protocols .......................................................................................................... 26 Centralized Conferencing Control Protocol (C3P) .............................................................. 29 PSOM .................................................................................................................................. 30 RTP/RTCP........................................................................................................................... 30 SIP/SDP .............................................................................................................................. 30 Signaling and Control Protocol ............................................................................................ 30 Media Protocols ................................................................................................................... 31 Scenarios for Office Communications Server 2007 R2 ................................................................. 31 Conferencing Scenario for Office Communications Server 2007 R2 ......................................... 31 Core (Focus, Focus Factory, and Conferencing Server Factory) ........................................... 32 Conferencing Lifecycle ........................................................................................................ 32 Conferencing Data Flow ...................................................................................................... 32 Conference Creation and Activation.................................................................................... 34 Joining a Conference .......................................................................................................... 39 3 Adding Participants to the Conference ................................................................................ 43 Notification Document ......................................................................................................... 46 Conference Deactivation ..................................................................................................... 48 Conference Expiration ......................................................................................................... 48 Web Conferencing Server for Office Communications Server 2007 R2 ................................ 48 Web Conferencing Architecture .......................................................................................... 49 File Structure ....................................................................................................................... 50 Metadata Folder .................................................................................................................. 51 Organizer Folder.................................................................................................................. 52 Conference Folder ............................................................................................................... 52 Types of Slides .................................................................................................................... 54 Content Upload and Download over PSOM ........................................................................ 55 Content Upload over PSOM and Download over HTTPS ................................................... 56 Slide Set Files ...................................................................................................................... 58 Handouts (File Transfers) .................................................................................................... 65 PersistData Folder (Shared Notes) ..................................................................................... 66 Content Folder ..................................................................................................................... 67 Conference Content Folder ................................................................................................. 68 File Size Restrictions ........................................................................................................... 70 Compliance .......................................................................................................................... 70 Conferencing Scenario Call Flows in Office Communications Server 2007 R2 ..................... 73 Lock or Unlock a Conference .............................................................................................. 73 Dial In to a PSTN Conference Using SIP C3P (Telephony Conferencing Server) ............. 73 Dial Out to Device Using addUser (Audio Conferencing Provider) ..................................... 74 Remove a Participant .......................................................................................................... 74 Mute or Unmute ................................................................................................................... 75 Make Presenter ................................................................................................................... 76 Dial-In Conferencing Scenario ................................................................................................... 77 Server-Based Dial-In Conferencing Components .................................................................. 79 Active Directory–Based Configuration Data ........................................................................ 79 Office Communications Server Front End Server Components ......................................... 82 Client-Based Dial-in Conferencing Components .................................................................... 87 Conferencing Add-in for Microsoft Office Outlook ............................................................... 88 Live Meeting Client .............................................................................................................. 88 Office Communicator ........................................................................................................... 89 Call Flows ............................................................................................................................... 89 Meeting Set-up .................................................................................................................... 89 To create an Anonymous-Allowed Live Meeting with Dial-In Conferencing support .......... 89 Connecting to the Meeting .................................................................................................. 90 Desktop Sharing Scenario ......................................................................................................... 95 Office Communications Server 2007 R2 Desktop Sharing Architecture ................................ 96 Architectural Overview ........................................................................................................ 96 Protocols Used By Desktop Sharing ................................................................................... 97 Desktop Sharing Components ............................................................................................ 99 Desktop Sharing Call Flows .................................................................................................. 104 Creating a Desktop Sharing Conference........................................................................... 104 4 Adding a User to a Desktop Sharing Conference ............................................................. 105 Desktop Sharing Session Control ..................................................................................... 108 Communicator Web Access Scenario...................................................................................... 110 Functionality Overview .......................................................................................................... 110 New Communicator Web Access Features ...................................................................... 111 Office Communicator and Web Access Feature Comparison .......................................... 112 Communicator Web Access Core Architecture .................................................................... 114 UCMA Layer Functions ..................................................................................................... 116 Application Logic Layer Functions ..................................................................................... 116 Client Functions ................................................................................................................. 117 Communicator Web Access Audio ....................................................................................... 119 Communicator Web Access Audio Scenarios ................................................................... 120 Call Deflection Session Initiation Protocol (SIP) Tracing .................................................. 123 Add Audio Session Initiation Protocol (SIP) Tracing ......................................................... 129 Outside Voice Control Scenario ............................................................................................... 144 Outside Voice Control Architecture ....................................................................................... 146 Architectural Overview .......................................................................................................... 148 Protocols Used By Outside Voice Control ......................................................................... 149 Call Flows ............................................................................................................................. 149 Outbound Call.................................................................................................................... 149 Inbound Call ...................................................................................................................... 152 Group Chat Feature Scenario .................................................................................................. 154 Group Chat Services ............................................................................................................ 154 Channel Service ................................................................................................................ 154 Lookup Service .................................................................................................................. 155 Web Service ...................................................................................................................... 156 Compliance Service........................................................................................................... 156 Key Protocols and Windows Services Used by Group Chat ................................................ 157 Session Initiation Protocol (SIP) ........................................................................................ 157 Windows Communication Foundation (WCF) ................................................................... 157 HTTPS ............................................................................................................................... 157 Message Queuing ............................................................................................................. 158 Group Chat Call Flows .......................................................................................................... 158 Group Chat Client Sign In ................................................................................................. 158 Subscribing to a Chat Room and Posting a Message....................................................... 161 Technical Drilldowns .................................................................................................................... 163 SIP Processing Drilldown ......................................................................................................... 163 SIP Processing and GRUU ................................................................................................... 163 GRUU Creation ..................................................................................................................... 164 How GRUU Is Used by Office Communications Server ....................................................... 164 User Replicator Drilldown ......................................................................................................... 165 Archiving and Monitoring Drilldown .......................................................................................... 167 Archiving and Monitoring Servers ............................................................................................ 167 Archiving Server ................................................................................................................ 167 Monitoring Server .............................................................................................................. 167 5 Archiving Database Schema ................................................................................................ 168 List of Tables ..................................................................................................................... 168 Supporting Tables ............................................................................................................. 168 Tables for Messages in IM Conferences ........................................................................... 168 Tables for Peer-to-Peer IM Archiving ................................................................................ 169 Tables for Internal Use by Office Communications Server ............................................... 169 Table Details ...................................................................................................................... 169 ClientVersions Table ......................................................................................................... 169 Computers Table ............................................................................................................... 170 ContentTypes Table .......................................................................................................... 170 Dialogs Table..................................................................................................................... 170 Pools Table ........................................................................................................................ 171 Users Table ....................................................................................................................... 171 Conferences Table ............................................................................................................ 172 ConferenceMessageRecipientList Table .......................................................................... 173 ConferenceMessages Table ............................................................................................. 173 SessionDetails Table ......................................................................................................... 174 Messages Table ................................................................................................................ 176 CDR Database Schema ....................................................................................................... 177 List of Tables ..................................................................................................................... 177 Static Tables ...................................................................................................................... 177 Supporting Tables ............................................................................................................. 178 Tables Specific to Conference CDR Records ................................................................... 178 Tables for Messages in IM Conferences ........................................................................... 179 Tables for Peer-to-Peer Sessions ..................................................................................... 179 Table for VoIP Call Details ................................................................................................ 179 Tables for Troubleshooting ................................................................................................ 180 Tables for Internal Use by Office Communications Server ............................................... 180 Table Details ...................................................................................................................... 180 MediaList Table ................................................................................................................. 181 Roles Table ....................................................................................................................... 181 UserAuthTypes Table ........................................................................................................ 181 ClientVersions Table ......................................................................................................... 182 Computers Table ............................................................................................................... 182 Pools Table ........................................................................................................................ 183 Dialogs Table..................................................................................................................... 183 Gateways Table................................................................................................................. 183 Mcus Table ........................................................................................................................ 184 Users Table ....................................................................................................................... 184 Phones Table .................................................................................................................... 185 Conferences Table ............................................................................................................ 185 FocusJoinsAndLeaves Table ............................................................................................ 186 McuJoinsAndLeaves Table ............................................................................................... 187 ConferenceMessageCount Table...................................................................................... 188 SessionDetails Table ......................................................................................................... 189 FileTransfers Table............................................................................................................ 191 6 Media Table ....................................................................................................................... 193 VoipDetails Table .............................................................................................................. 193 Application Table ............................................................................................................... 194 ErrorDef Table ................................................................................................................... 195 ErrorReport Table .............................................................................................................. 195 ProgressReport Table ....................................................................................................... 196 Sample Database Queries ................................................................................................ 197 QoE Database Schema ........................................................................................................ 198 List of Tables ..................................................................................................................... 198 Table Details ...................................................................................................................... 199 Sample Database Queries ................................................................................................ 222 Message Queuing Architecture and Configuration for Archiving .......................................... 224 Message Stamping ............................................................................................................... 225 Creating a Third-Party QoE Solution .................................................................................... 225 Infrastructure Requirements and Prerequisites of Monitoring Server ............................... 226 Deploying a Custom QoE Solution .................................................................................... 229 WMI Reference for QoE Solutions .................................................................................... 229 Enabling or Disabling an HTTP Proxy for QoE Solutions ................................................. 232 Edge Servers Drilldown ............................................................................................................ 232 Response Group Client Web Service Drilldown ...................................................................... 232 Service Descriptions ............................................................................................................. 233 Client DNS Queries Drilldown .................................................................................................. 233 Application Server Drilldown .................................................................................................... 234 Characteristics of the Office Communications Server 2007 R2 Application Server ............. 235 Architecture ....................................................................................................................... 235 Other Key Application Server Characteristics ................................................................... 236 Application Server Configuration .......................................................................................... 237 Application Server Application Configuration ....................................................................... 237 Global Settings .................................................................................................................. 237 Pool Settings ..................................................................................................................... 238 SIP Trunking Drilldown ............................................................................................................. 238 SIP Trunking Drilldown: Supported Scenarios ..................................................................... 238 SIP Trunking Drilldown: Supported Topologies .................................................................... 239 SIP Trunking Drilldown: Security Considerations ................................................................. 240 SIP Trunking Drilldown: Bandwidth Considerations ............................................................. 241 SIP Trunking Drilldown: Protocol Flow and Details .............................................................. 242 SIP Call Flow and State Machine ...................................................................................... 242 Call Hold ............................................................................................................................ 243 Dual-tone multifrequency (DTMF) ..................................................................................... 243 Early Media ........................................................................................................................ 243 Uniform Resource Identifier (URI) Formatting ................................................................... 243 Codec Support................................................................................................................... 244 SIP Trunking Drilldown: High Availability .............................................................................. 244 Address Book Server Drilldown ............................................................................................... 245 Address Book Server Introduction ........................................................................................ 246 Introduction ........................................................................................................................ 246 7 Address Book Server: File and Database Generation .......................................................... 247 Address Book Server Data Flow ....................................................................................... 247 Address Book Server Process .......................................................................................... 248 Address Book Server: Address Book File Download Service .............................................. 251 File Generation .................................................................................................................. 251 Organizational Unit and Address Book File Generation.................................................... 253 Client and Address Book Server Communication ............................................................. 253 Address Book and Office Communicator .......................................................................... 254 Client Download Process .................................................................................................. 255 Internet Explorer Dependencies ........................................................................................ 256 File Store Recommendations and File Size Guidelines .................................................... 257 Office Communicator Local Address Book Database Files .............................................. 257 Address Book and Office Communicator Phone Edition ................................................... 257 Address Book Web Query Service .................................................................................... 258 Address Book Server: Address Book Web Query Service ................................................... 258 Office Communicator Address Book Queries ................................................................... 260 Queries on Display Name ................................................................................................. 262 Queries on Phone Numbers .............................................................................................. 263 Sorting Query Results ....................................................................................................... 264 Predictive Text Queries ..................................................................................................... 264 Address Book Web Query Database ................................................................................ 264 Address Book Web Query Database Language Support ................................................. 265 Address Book Web Query Server Performance ............................................................... 265 Address Book Server: Advanced Address Book Features ................................................... 266 Management of Office Communications Server 2007 R2 ........................................................... 271 Administrative Tools Overview ................................................................................................. 272 Administrative Tools.............................................................................................................. 272 Permissions .......................................................................................................................... 276 Installation and Use of Administrative Tools ............................................................................ 276 Version Restrictions .............................................................................................................. 277 Remote Administration Requirements .................................................................................. 277 Installing Administrative Tools .............................................................................................. 277 Troubleshooting for Office Communications Server 2007 R2 ................................................. 279 Load Balancers for Office Communications Server 2007 R2 .................................................. 280 Prerequisites for a Load Balancer Connecting to a Pool ...................................................... 280 Load Balancer Requirements ............................................................................................... 280 Supported Load Balancer Configurations ............................................................................. 282 Media Ports .............................................................................................................................. 283 Mediation Server for Office Communications Server 2007 R2 ............................................. 283 Media Gateway.................................................................................................................. 284 Media Port Range for Office Communications Server 2007 R2 ........................................... 284 Minimum Number of Ports ................................................................................................. 284 Server Port Allocation ........................................................................................................ 292 Voice Quality of Service (QoS) ................................................................................................ 292 QoS with Office Communications Server 2007 R2 ............................................................... 292 8 Enabling DSCP Marking ....................................................................................................... 294 Enabling QoS .................................................................................................................... 294 Installing the QoS Packet Scheduler on Computers ......................................................... 297 Verifying Group Policy Settings on Computers ................................................................. 298 WMI Settings for Office Communications Server 2007 R2 ...................................................... 299 Client Registry Keys/GPO for Office Communications Server 2007 R2 .................................. 299 In-Band Provisioning over SIP ................................................................................................. 300 Why Use In-Band Provisioning? ........................................................................................ 301 Office Communicator 2007 R2 Group Policy Precedence ................................................ 302 Policy transport .................................................................................................................. 302 Provisioning Groups .......................................................................................................... 306 9 Office Communications Server 2007 R2 Technical Reference Guide This document provides detailed technical reference information for administrators who are deploying, have deployed, or are administering Microsoft Office Communications Server 2007 R2. This information is not necessary for day-to-day management of your Office Communications Server deployment, but it can be useful if you are troubleshooting an issue, or if you are implementing a solution or developing an application that requires more technical detail than the basic documentation provides. The information in this document supplements and should be used in conjunction with the rest of the Office Communications Server 2007 R2 documentation set. Additional resources for technical questions that are not covered here are as follows: The Technical Overview in the Getting Started documentation. The Microsoft TechNet portal for Office Communications Server at http://go.microsoft.com/fwlink/?LinkID=144770, which includes technical forums where you can ask specific questions. If you have specific questions, comments, or suggestions for this Technical Reference, please contact us at ocsdoc@microsoft.com. We are always glad to hear from you. Note: You can download the Office Communications Server 2007 R2 Technical Reference Guide as a Word file from the Microsoft Download Center at http://go.microsoft.com/fwlink/?LinkID=159649. In This Document Office Communications Server 2007 R2 Architecture Scenarios for Office Communications Server 2007 R2 Technical Drilldowns Management of Office Communications Server 2007 R2 Office Communications Server 2007 R2 Architecture After providing a brief overview of the Office Communications Server 2007 R2 topology and component architecture, this section describes the architecture of the pool components in detail and the protocols that the components use to interact with each other. In This Section This section includes the following topics: 1 Topology and Component Architecture Pool Components for Office Communications Server 2007 R2 Communication Protocols for Office Communication Server 2007 R2 Topology and Component Architecture The following figure shows a sample Office Communications Server 2007 R2 topology and the protocol flow in that topology. Office Communications Server can be installed in several configurations, starting with a single Standard Edition server for simple/common installations to multiple Enterprise Edition servers where high availability at scale is a requirement. Standard Edition (Single Server Installation) Office Communications Server 2007 R2, Standard Edition contains the same server components as Enterprise Edition. However, in this configuration all the server components required to provide presence, instant messaging (IM), multiparty Web conferencing and desktop sharing, and audio/video (A/V) conferencing are installed on a single computer. All voice components and applications are also installed on the same computer. In a Standard Edition configuration, the 2 Back-End Database Server also runs on the single physical server. Thus, all elements share the same server resources. This configuration is designed to support a small number of users and concurrent meetings and is not designed to scale to larger deployments. Ease of installation and server management are the primary goals for this type of server installation. Enterprise Edition An Enterprise Edition server can provide an organization with scaling and high availability. Enterprise Edition servers are deployed in a pool regardless of whether there is one server or multiple servers. An organization can deploy Enterprise Edition configuration by using a single Enterprise Edition server, with or without a hardware load balancer, or multiple Enterprise Edition servers behind a hardware load balancer. Multiple servers provide high availability such that, if one Front End Server fails, clients can detect the failure and automatically reconnect to one of the other Front End Servers. Consolidated Configuration Consolidated configuration is the recommended topology for most organizations, both in terms of scaling and simplified administration. In Office Communications Server, each Front End Server in an Enterprise Edition consolidated configuration includes registration, presence, routing, conferencing, and enterprise telephony functionality. Each Front End Server runs an instance of the Focus, Focus Factory, Conferencing Server Factory, and all conferencing servers. Each Front End Server also runs an instance of all voice applications (for example, Voice Inbound and Outbound Routing, Outside Voice Control, Response Group Service, Communicator 2007 R2 Attendant, and Conferencing Announcement Service). The most important aspect of this architecture is that all Front End Servers are equivalent in functionality. The same software components (that is, Focus, Focus Factory, Conferencing Server Factory, conferencing servers, and voice applications) are installed on all the Front End Servers. A consolidated configuration helps simplify setup and management, while still providing high scalability, availability, and failure recovery. Expanded Configuration Expanded configuration was introduced in Office Communications Server 2007. The primary advantage of the expanded configuration in Office Communications Server 2007 was its ability to scale in very large deployments. However, the scalability limitations of consolidated configuration, which is simpler to deploy, have been removed in Office Communications Server 2007 R2, and consolidated configuration is now the preferred topology for most organizations. In an Enterprise Edition expanded configuration, the A/V Conferencing Server and Web Conferencing Server server roles are distributed and run on separate servers. Expanded configuration is no longer a recommended scenario and requires command-line installation and configuration in Office Communications Server 2007 R2. 3 Pool Components for Office Communications Server 2007 R2 In This Section This section includes the following topics: Overview of Pool Components Common Infrastructure Components Conferencing Components Voice Components Overview of Pool Components Office Communications Server supports the following three scenarios or workloads: instant messaging (IM) and presence, conferencing (including Web conferencing, desktop sharing, audio/video conferencing), and Enterprise Voice, which encompasses telephony. This section describes all of the architectural components of an Office Communications Server 2007 R2 Standard Edition server or Enterprise pool. Collectively, these components support all three workloads. This section focuses on the services that run on the core Office Communications Server roles, the components within those services, and relationships between them. This section does not cover network architecture or deployment architecture, which complement component architecture. For details about those aspects of architecture, see the Planning And Architecture documentation. While this section describes components in the context of an Enterprise pool, it also applies to most aspects of a Standard Edition server. All server components (that is, services, database, and so on) described in this section run together on a single instance of a Standard Edition server. This is a typical configuration for simple or relatively small deployments (that is, up to a few thousand users) where high availability is not a requirement. Conceptually, a pool consists of one or more Front End Servers and one or more databases on the Back-End Database Server with a single SQL Server. In a pool, all persistent states are stored in the database on the Back-End Database Server, so that when a Front End Server component fails, failover can be quick. Figure 1 shows a sample Enterprise pool. 4 Figure 1. Sample Enterprise pool Figure 1 illustrates the components of Front End Servers and the Back-End Database Server. There is a hardware load balancer for the Front End Servers, which are required for an Enterprise pool that has more than one Enterprise Edition server. (If your pool consists of only one Front End Server, which is connected to a separate Back-End Database Server running SQL Server, a load balancer is not required.) All Front End Servers in a consolidated configuration pool are homogeneous and identical to each other. Therefore, all relevant Office Communications Server services and applications are installed on all Front End Servers in this type of a pool. On each Office Communications Server 2007 R2 Front End Server, the main components can be classified as follows: Common infrastructure components. These components are required for the operation of any Office Communications Server workload, and provide a foundation for conferencing and voice components. The common infrastructure components include: RTCSrv. This is the main Office Communications Server service that runs the Office Communications Server Session Initiation Protocol (SIP) stack, performs presence 5 functions, performs directory replication functions and interfaces with the database, hosts application interfaces, and has modules to capture archiving and call detail recording (CDR) data. Back-end database. This is a SQL persistent store with information on user identities and capabilities that are replicated from Active Directory, user contact lists, and dynamic presence and conferencing data. RTCHost. This process hosts several Office Communications Server applications for presence, conferencing, and Enterprise Voice that are required for core functioning of these scenarios. OCS Application interfaces. These interfaces enable the applications on RTCHost (as well as third-party applications built on the same API) to interface with the main server process RTCSrv (for example, to inspect the SIP stream). Web Components infrastructure. This infrastructure, which is built on Microsoft Internet Information Server (IIS), hosts various HTTP components required for presence, conferencing, and Enterprise Voice functions. UCAS infrastructure. The Unified Communications Application Services (UCAS) infrastructure enables Office Communications Server to host robust, scalable, middle-tier server endpoint applications. Several UCAS applications for Enterprise Voice are hosted by this infrastructure. Conferencing components. These components include various conferencing-specific components hosted by the common infrastructure discussed previously (for example, an RTCHost application, several web components), as well as a set of conferencing servers which perform mixing functions for IM conferencing, Web conferencing, desktop sharing conferencing, and audio/video conferencing. Voice components. These are the additional Office Communications Server components required for enterprise telephony functions. These components include RTCHost applications for inbound telephony routing, outbound telephony routing, and phone number normalization, as well as UCAS applications for dial-in conferencing, response groups (that is, similar to Automatic Call Distribution for Voice), and Outside Voice Control (which extends enterprise telephony functionality to cellular phones). Each of these classes of components is described in the topics that follow. Common Infrastructure Components The common infrastructure components are required for the operation of any Office Communications Server workload, and provide a foundation for conferencing and voice components. The common infrastructure components include RTCSrv, Office Communications Server application interfaces, RTCHost, the back-end database, presence components, Web components, archiving and monitoring components, and Unified Communications Application Services (UCAS) infrastructure. In This Section This section contains the following topics: 6 RTCSrv Office Communications Server Application Programming Interface (API) RTCHost Back-End Database Presence Components Web Components Services for Office Communications Server 2007 R2 Archiving and Monitoring for Office Communications Server 2007 R2 Unified Communications Application Services (UCAS) Infrastructure RTCSrv The RTCSrv.exe process is the core Office Communications Server 2007 R2 process. RTCSrv runs on every Standard Edition server and Front End instance of Office Communications Server 2007 R2. RTCSrv.exe hosts the User Services module, the server application programming interface (API), archiving and call detail recording (CDR), Quality of Experience (QoE), and the Session Initiation Protocol (SIP) Proxy. The User Services module, the server API, archiving and CDR, and QoE sit on top of the SIP Proxy. A message dispatcher mediates by sending messages between these components and the SIP Proxy. The following figure shows the RTCSrv.exe process. 7 Figure 1. The RTCSrv.exe process SIP Proxy The SIP Proxy is the core protocol platform on which all other Office Communications Server 2007 R2 services are built. The SIP Proxy provides the basic structure for networking and security, and performs connection management, message header parsing, routing, authentication, and state management. The SIP Proxy, also known as the SIP stack, forms the basis for all other Office Communications Server 2007 R2 services. Signaling connections, authentication, message routing, and state management all rely on the SIP Proxy. User Services User Services enables the instant messaging (IM), presence, and conferencing features of Office Communications Server 2007 R2. For details about the presence components of User Services, see Presence Components. User Services includes the Focus and Focus Factory, which are explained in more detail in Conferencing Components. The following table describes the functionality provided for User Services. 8 Table 1. User Services Component Function User Replicator User Replicator is the component of Office Communications Server 2007 R2 that is responsible for keeping the presence store in the SQL database synchronized with user and contact objects in Active Directory Domain Services (AD DS). User Replicator monitors the data in AD DS and then sends the data through RTCSrv.exe to the SQL database on the BackEnd Database Server for storage. User Replicator also monitors user, contact, and group objects to provide content for the Address Book Server files. RPC between Front End Servers The User Services module on each Front End Server communicates with the same process running on other Front End Servers by using Remote Procedure Call (RPC). ODBC-based Database Access Layer The User Services module sends presence, registration, and conferencing data to the SQL Server running on the Back-End Database Server through a database queuing layer that uses the Microsoft Open Database Connectivity interface (ODBC). ODBC provides a standard API that Office Communications Server 2007 R2 uses to run SQL queries against the SQL Server back-end database. Archiving, CDR, and QoE The archiving and CDR components, are installed on every Front End Server when you deploy Office Communications Server 2007 R2 Standard Edition server or Enterprise Edition server. Similarly, QoE is installed on every Front End Server. Archiving and CDR, and QoE connect to the Archiving Server and the Monitoring Server (that is, running in one of several possible physical topologies) using Message Queuing (previously known as MSMQ) technology. The Archiving Server receives instant messages from the archiving and CDR agent and stores the information in a SQL database. The Monitoring Server receives call data from the archiving and CDR agent, and QoE data from the QoE agent. For details about archiving and monitoring, see Archiving and Monitoring Drilldown. 9 Office Communications Server Application Programming Interface (API) The Office Communications Server 2007 R2 application programming interface (API) is built on the Session Initiation Protocol (SIP) proxy platform and implemented using the following: Server API module (Apiem.dll). An extension that provides the basic scripting capability for creating custom message filters and routing applications. The scripts can either run in process with Office Communications Server 2007 R2 (Rtcsrv.exe) or can be incorporated in a managed server application that is running in a separate process. Managed server API platform (ServerAgent.dll). A platform that you use to implement both Microsoft and non-Microsoft managed server applications. Managed server applications that are written by using the managed server API run as separate processes. Local shared-memory IPC (Queue.dll). The interface between the server API module and managed applications. Internal COM API. An API used to communicate with the SIP proxy platform. The following figure shows how the API architecture is implemented for Front End Servers. Figure 1. API architecture for Front End Servers SIP-aware managed server applications that are developed by using the managed server API platform extend the core services available in Office Communications Server2007 R2. Managed server applications include both of the following: 10 Office Communications Server 2007 R2 applications implemented by using RTCHost.exe. This includes the following filtering applications: Voice over Internet Protocol (VoIP) applications, conferencing server Factory, Real-time Communications (RTC) Aggregate application, and other applications (that is, non-Microsoft applications). For details about the managed server applications implemented with RTCHost.exe, see RTCHost. Non-Microsoft applications developed in-house, by vendors, or by using other resources. The managed server API for implementing these applications functions as follows: Exposed through the Microsoft.Rtc.Sip namespace. Uses the server API to perform specific SIP message processing tasks. Implemented by using the managed server application platform (that is, ServerAgent.dll assembly). Each managed application loads the ServerAgent.dll and executes in its own process space. Managed applications are isolated from each other in a way that prevents a faulty application from affecting other applications. Following are the two major components of the server API module (Apiem.dll) that support implementation of managed server applications: Application manifest. A script that is written by using Microsoft SIP Processing Language (MSPL) and describes an application to the server. When a managed server application registers with the server using the ServerAgent class, it provides this script to the server. The application manifest serves the following purposes: Provides details about the application type and the state that the server needs to maintain for the application to run, so the server can optimize processing for the application. Contains a message filter script to communicate detailed information about which messages (that is, requests and responses) the application needs to see. To filter messages, the application manifest has a set of built-in actions that it can invoke. For any other actions required by a specific message (that is, those actions that cannot be handled by the built-in actions), the application manifest can invoke managed code in a separate application process by passing all or parts of the message to the code in the application process. Using the built-in actions helps you avoid cross-process calls for simple processing (for example, basic if, then, and else functions). Enables the application developer to specify moderate amount of logic to be executed by an interpreter inside the server API module. If the functionality of the interpreter is not sufficient, a cross-process call is made as a single call containing only the portions of the message that are appropriate to the message filtering used. Uses an application Uniform Resource Identifier (URI) to uniquely identify the application to the server. The application URI is expected to be an HTTP URL, but no validation is performed. Microsoft.Rtc.Sip class library. Contains the following classes: SIP message and transaction processing classes. ServerAgent class. This class implements most of the logic needed to manage sessions with the server. It is the entry point for the managed server API. Each application initiates 11 an instance of ServerAgent.dll and supplies an application manifest instance to it. The ServerAgent.dll assembly manages the session with the server, including compiling the application manifest and registering with the server. If the registration succeeds, the ServerAgent class sets up the environment necessary to receive and process SIP messages from the server. The ServerAgent.dll assembly invokes application-specific event handlers for specific events (for example, message events and transaction events). For each instance of the application, a single ServerAgent.dll object manages the applications session with the server. To exit, the application releases the ServerAgent.dll object, which causes the session with the server to end. You can use the Office Communications Server 2007 R2 Software Development Kit (SDK) to develop applications by using the Microsoft.Rtc.Sip class library. You can download the SDK at http://go.microsoft.com/fwlink/?LinkId=144480. For details about using the SDK, see “Communications Server 2007 R2 Server SDK Documentation” at http://go.microsoft.com/fwlink/?LinkId=144482. RTCHost RTCHost.exe runs on each Front End server and can be accessed through the Managed Server application programming interface (API) library. The following applications run inside the RTCHost.exe process: The Client Version Filter enables the server to deny client connections based on a client’s version number. The Client Version Filter compares a client’s version number with the version settings specified by the administrator by reading the clients Session Initiation Protocol (SIP) User-Agent header. You can configure the Client Version Filter by using the Office Communications Server Management Microsoft Management Console (MMC).snap-in. The RTC Aggregate application manages the multiple points of presence (MPOP) feature for Office Communications Server 2007 R2 by aggregating the presence information published by multiple client endpoints into one presence status that best represents the user's current availability. For details about the RTC Aggregate application, see Presence Components. The Intelligent IM Filter helps prevent unsolicited marketing that targets instant messaging (IM) programs. The Intelligent IM Filter uses settings configured by the administrator to filter incoming instant messages received by the server from outside the organization’s firewall. You can configure the Intelligent IM Filter by using the Office Communications Server Management snap-in. The Conferencing Server Factory is required for conferencing. For details, see Conferencing Components. The User Pin Service authorizes dial-in conferencing participants that enter in a conference personal identification number (PIN) when joining a conference by using the public switched telephone network (PSTN). The VoIP applications that run inside RTCHost.exe are the Inbound Routing application, Translation Service, and Outbound Routing application. Together, these applications enable the server to route VoIP calls. For details, see Voice Components. 12 The Exchange UM Routing component handles redirection of missed calls to Exchange Unified Messaging. For details, see Voice Components. Back-End Database In Office Communications Server 2007 R2, the back-end database stores configuration information, contact lists and presence information for users, and any state information required to resume a conference. Presence data and conferencing data are stored in different tables of the same physical database. In a Standard Edition configuration, all server components are installed on the same computer, including the back-end database. The back-end database on a Standard Edition server uses Microsoft SQL Server 2005 Express Edition with Service Pack 2 (SP2) or later. In an Enterprise Edition configuration, the back-end database must be configured as a separate dedicated computer. In an Enterprise pool, all servers in the pool share a central Microsoft SQL Server database. This database runs on Microsoft SQL Server 2008 (32-bit or 64-bit) or SQL Server 2005 with Service Pack 2 (SP2) or later (32-bit or 64-bit), and you can cluster it in an active-passive configuration for higher availability. Presence Components This section describes the presence components and the relationship between these components. It also shows the process boundaries for the various components. The primary presence components of Office Communications Server 2007 R2 are the User Services module that runs inside the RTCSrv.exe process and the RTC Aggregate application that runs inside the RTCHost.exe process. The User Services module processes registration requests received by a Front End Server and sends presence, registration, and conferencing data to the Back-End Database Server to keep the presence store in the SQL database synchronized with user and contact objects in Active Directory. The RTC Aggregate application aggregates presence information from multiple client endpoints into one presence document. The following figure shows the presence components. 13 Figure 1. Presence components Web Components Services for Office Communications Server 2007 R2 The Web Components Services run on Microsoft Internet Information Server (IIS), and enable Office Communications Server clients to perform the following functions: Download Address Book Server files to provide Office Communicator with global address list (GAL) information. Expand membership in distribution groups and other data that is used by the Web Conferencing Server. Access meeting presentations and other content from Web conferences. Host software packages for device updates. Host administration for Response Group Service. Archiving and Monitoring for Office Communications Server 2007 R2 Office Communications Server 2007 R2 includes Archiving and Monitoring functionality as follows: Archiving. Designed for enterprise compliance needs, enables the capture and storage of instant messaging (IM) content. Monitoring. Designed for enterprise operational needs and enables the following: The capture of call detail recordings (CDRs) that include IM, conferencing, and voice and video calls. CDRs include usage information related to voice calls, audio/video (A/V) conversations, application sharing, remote assistance, and Web conferences. 14 The capture and viewing of detailed Quality of Experience (QoE) metrics to monitor voice and video quality. QoE data includes statistics about voice and video quality, both for individual calls and aggregate reports. The following figure shows the archiving and monitoring architecture in Office Communications Server 2007 R2. Figure 1. Archiving and monitoring architecture in Office Communications Server 2007 R2 The Front-End server hosts an archiving and CDR agent, which is part of the RTCSrv process, to capture archiving and CDR data which is transferred over Message Queuing (also known as MSMQ) to the Archiving Server and Monitoring Server respectively. The Archiving Server and Monitoring Server are separate Office Communications Server roles. Similarly, the Front End contains a QoE agent, which is part of the RTCQMS process, to capture QoE data. The QoE data is transferred over Message Queuing to the Monitoring Server. In Office Communications Server 2007 R2, the CDR function moves to the Monitoring Server from the Archiving Server with which it was a co-located in Office Communications Server 2007. CDR data accumulation and reporting requirements have characteristics more in common with QoE data than Archiving data, which drove the evolution in architecture. Unified Communications Application Services (UCAS) Infrastructure Unified Communications Application Server (UCAS) is a platform introduced in Office Communications Server 2007 R2 that makes it easier to build server-side applications that run on Standard Edition servers or Enterprise pool servers. Each Front-End Server in a pool runs an instance of an Application Server host. Applications developed by using the Unified Communication Managed APIs (UCMA) 2.0 can use the UCAS platform as a common framework that leverages Office Communications Server capabilities such as deployment, trust, administration, load balancing and routing, monitoring, and so on. UCAS is designed to host server applications that act as Session Initiation Protocol (SIP) endpoints. Similar to Office Communications Server conferencing servers, UCAS is another server role. When you deploy UCAS on an Enterprise Edition server consolidated pool topology, each UCAS application runs on all servers in the pool and together they share the overall workload of the application. UCAS consists of a single Windows service, called Application Host 15 (OCSAppServerMaster.exe), and one or more instances of another Windows service called OCSAppServerHost.exe. Each instance of OCSAppServerHost.exe on a server hosts a UCAS application unique to that server. Several new features in Office Communications Server 2007 R2 are implemented as UCAS applications, including dial-in conferencing, Response Group Service, and Outside Voice Control. For details, see Voice Components. For details about Application Server architecture, see Application Server Drilldown. Conferencing Components Conferencing functionality in Office Communications Server 2007 R2, which includes instant messaging (IM) conferencing, Web conferencing, audio/video conferencing, desktop sharing, and control of third-party audio conferencing services, is supported by the following: Conferencing infrastructure components. Includes conference control entities such as the Focus, Focus Factory, and so on. Conferencing servers. Handle media, including mixing functions for media. Together, these two components support conferences over across a broad range of modalities. In This Section This section contains the following topics: Conferencing Infrastructure Components Conferencing Servers for Office Communications Server 2007 R2 Conferencing Infrastructure Components The main conferencing infrastructure components of Office Communications Server 2007 R2 are the Focus instances, Focus Factory, Conferencing Server Factory and conferencing servers for each media type. SQL Server databases are used for storing the persistent state. The following figure shows the conferencing component interrelationships. 16 Figure 1. Conferencing component interrelationships The Focus Factory and Focus components run in the main conferencing process, which is also the Session Initiation Protocol (SIP) Proxy process (RTCSrv). The Conferencing Server Factory is a fairly lightweight component (hosted by the RTCHost process) that is accessed by the Focus once for each media type when that media needs to be activated for the conference. The Conferencing Server Factory is an application running on each Front End Server and uses an HTTP interface. Communication between the Focus and conferencing servers, and between the Conferencing Server Factory and conferencing servers is HTTP-based. Focus The Focus is the central policy and state manager for a conference and acts as the coordinator for all aspects of the conference. The Focus is responsible for enforcing the conference control policy, managing the overall security for a conference, managing conference participant roles and 17 privileges, sending conference state notifications to clients and providing a conduit for control commands to flow between clients and conferencing servers. When a new media type must be activated for a conference, the Focus also instantiates the conference on the appropriate conferencing server, communicates with the conferencing server about adding a new user, obtains the authorization credentials so the client can connect to that conference, and then sends the media information to the client. The same sequence is repeated for all clients who want to add this media. When a new media type is added to the conference, the sequence is repeated with the new conferencing server for that media type. By centralizing the security enforcement and roster management, the Focus relieves each of the conferencing servers of this duty. Focus Factory The Focus Factory is a SIP entity that creates, deletes, and modifies meetings in the conferencing database. The Focus Factory manipulates meetings in the conferencing database according to Centralized Conferencing Control Protocol (C3P) commands that are issued by clients. Conferencing Server Factory The Conferencing Server Factory is responsible for provisioning a conference for a particular media type on a conferencing server. The Conferencing Server Factory can also take into account the current load on the conferencing servers before assigning a conferencing server to a conference. There is one Conferencing Server Factory instance on each Front End Server, which handles all media types. Conferencing Database A Focus holds important information for the entire conference, including all conference participants. If a Focus instance fails, it must be possible to restart the conference. To support this, any state information that is needed to resume the conference persists in a conferencing database, which runs on the SQL Server back-end database. In Office Communications Server 2007 R2, presence and registrar information, and conferencing information are stored in different tables of the same physical database. The important metadata associated with a conference in the conferencing database includes the following: Conference ID. PSTN Meeting ID. Expiration date and time of the conference. List of meeting participant roles and the privileges associated with those roles. Conference key for participants without an identity in Active Directory. Supported media types. Authorization types (for example, closed, open, and anonymous). The conferencing database contains the metadata for a conference but does not contain calendar information. Conference calendar information (for example, meeting start and end times), the 18 recurrence schedule, and exceptions to recurrence are all important for a prescheduled conference, but that information is maintained outside of the conferencing database. Instead, conference calendar information is maintained by scheduling clients, as appropriate, typically as an Exchange Server calendar item. The Focus stores all conference state information on the Back-End Database Server to ensure that state information is accessible to all Front End Servers. With this model, if a client loses connectivity to the conferencing server, the client can reconnect, and its request can be handled by any Front End Server. This provides a natural failover model for front-end failures, as well as temporary loss of network connectivity from client to server. Similarly, information about conferencing server load persists on the Back-End Database Server, so that it is available to a Conferencing Server Factory instance running on any Front End Server. This data is written by a Conferencing Server Factory to the database, but any conferencing server for a particular media type under the control of the Conferencing Server Factory can read the database. Conferencing Servers for Office Communications Server 2007 R2 A conferencing server is responsible for mixing and managing one or more media types. The following types of conferencing servers are included in Office Communications Server 2007 R2: Web Conferencing Server for data collaboration. A/V Conferencing Server for audio and video. Instant messaging (IM) Conferencing Server for multiparty IM. Telephony Conferencing Server for interfacing with audio conferencing providers. Application Sharing Server for multiparty or Communicator Web Access-based application sharing. The architecture allows the addition of other conferencing servers as needed in the future. The IM Conferencing Server, Application Sharing Server, and Telephony Conferencing Server can only be installed as part of a Front End Server, but you can install A/V Conferencing Servers and Web Conferencing Servers independently of other components. Web Conferencing Servers, A/V Conferencing Servers, and IM Conferencing Servers each have two logical components: a media controller and a media processor. MC (Media Controller) The media controller on a conferencing server is responsible for managing the control commands between a Focus and a conferencing server. MP (Media Processor) The media processor is responsible for media management (for example, mixing, relaying, and transcoding). In a Web Conferencing Server, the media processor is a software component that is responsible for managing data collaboration for Office Communications Server. In an A/V Conferencing Server, the media processor mixes audio streams, switches video streams, and converts the media for clients who are on slow links. Of all the conferencing components, the media processor can be the most CPU and network intensive component. In our architecture, a 19 media controller and media processor are collocated on the same computer to simplify deployment. A/V Conferencing Server The A/V Conferencing Server enables multiparty audio and video mixing and relaying capabilities. It is built on industry standard real-time transport protocol (RTP) and real-time transport control protocol (RTCP). The A/V Conferencing Server also incorporates elements of the Internet Engineering Task Force (IETF) drafts for Interactive Connectivity Establishment (ICE) as a means to enable the exchange of media between two or more clients that are using Network Address Translators (NATs). ICE is an extension to Session Description Protocol (SDP) that enables media streams to traverse NATs by including in the SDP multiple IP address and port combinations for a particular transport protocol, known as candidate transport addresses, that the client can use to communicate with other clients. In an Office Communications Server environment, a client uses Session Traversal Utilities for NAT (STUN) and Traversal Using Relay NAT (TURN) protocols to obtain its candidate transport addresses from the Office Communications Server A/V Conferencing Edge Server. During negotiation, clients on either end exchange SDPs and then test candidate addresses for peer-to-peer connectivity. After the connectivity checks, clients renegotiate by including only the candidate transport address that succeeded in the SDP for a SIP re-INVITE request and response. For details about IETF drafts for ICE, see “Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols” at http://go.microsoft.com/fwlink/?LinkId=144408. Web Conferencing Server The Web Conferencing Server adds data collaboration functionality to Office Communications Server. The Web Conferencing Server is built on the same Persistent Shared Object Model (PSOM) technology that is used by the Live Meeting service. Both signaling and media are sent to and from a Web Conferencing Server using the PSOM protocol. The Web Conferencing Server supports Live Meeting features, such as Microsoft Office PowerPoint presentations, document presentations, chat, voting, white boarding, and application sharing. The Web Conferencing Server uses shared folders on a file system to store conference state and conference contents. Universal Naming Convention (UNC) paths are configured on the Web Conferencing Server to refer to the shared folders, which are created by an administrator during Office Communications Server deployment. These folders for conference metadata and conference content can be located on the same computer as the Web Conferencing Server or, preferably, on a dedicated computer. For information about the way that a Web Conferencing Server works, see Web Conferencing Server for Office Communications Server 2007 R2. 20 IM Conferencing Server The IM Conferencing Server is installed automatically on the Front End Server. The IM Conferencing Server enables multiparty instant messaging (IM). The IM Conferencing Server uses SIP for signaling and media. Telephony Conferencing Server The Telephony Conferencing Server is installed automatically on the Front End Server. The Telephony Conferencing Server enables Office Communications Server to communicate with audio conferencing providers. Application Sharing Server The Application Sharing Server is a new conferencing server role introduced in Office Communications Server 2007 R2, and is used specifically for multiparty desktop sharing from the Office Communicator client and desktop sharing from the Communicator Web Access client. The Application Sharing Server uses the Remote Desktop Protocol (RDP), with RTP as the transport for remote access scenarios. Although the Web Conferencing Server also supports Application Sharing (that is, by using the PSOM protocol and the Live Meeting client), the Application Sharing Server provides desktop sharing functionality that users can access directly in Office Communicator and Communicator Web Access, instead of requiring users to start the Live Meeting client separately. Voice Components Office Communications Server 2007 R2 provides a rich set of Enterprise Voice features suitable for global voice (that is, telephony) deployments. This section describes the voice components and the relationship between these components. It also describes the process boundaries for the various components. Other topics in the Technical Reference describe common infrastructure and conferencing infrastructure that enable certain key functions for Enterprise Voice. For example, Session Initiation Protocol (SIP) registration, performed by RTCSrv.exe and the User Services module, enables the fundamental call switching aspect of Enterprise Voice. The key additional components specific to enabling Enterprise Voice are either hosted on RTCHost.exe (that is, Inbound Routing, Translation Service, Outbound Routing, Exchange UM) or hosted as Unified Communications Application Services (UCAS) applications (that is, Conferencing Attendant, Conferencing Announcement Service, Response Group Service, and Outside Voice Control). In This Section This section contains the following topics: RTCHost Voice Components Unified Communications Application Services (UCAS) Voice Applications RTCHost Voice Components The core voice components of Office Communications Server 2007 R2 are the Inbound Routing application, the Translation Service, and the Outbound Routing application that run inside the 21 RTCHost.exe process on each Front End Server. The Inbound Routing application determines how incoming calls to the server should be routed, based on settings configured on the client. The Translation Service uses administrator-specified phone number normalization rules to translate a dialed number into an E.164 format that can be consumed by other components in the system, such as the private branch exchange (PBX) or public switched telephone network (PSTN) gateway. The Outbound Routing application uses call authorization rules to route each call to the appropriate media gateway. The following figure shows the architecture of the core components: Translation Service, Inbound Routing, and Outbound Routing. Figure 1. Core component architecture Inbound Routing The Inbound Routing application determines how incoming calls to the server should be routed. If an Enterprise Voice client specifies settings for handling missed calls, the Inbound Routing application acts accordingly. For example, if a client is configured for call forwarding, the Inbound Routing application can forward incoming calls either to a specified number or to an Exchange Server 2007 Unified Messaging server that can answer the call. 22 Translation Service The Translation Service applies administrator-specified phone number normalization rules to translate a dialed number into an E.164 format that can be more easily consumed by a PBX or PSTN gateway. Enterprise Voice in Office Communications Server 2007 R2 employs the Translation Service to normalize phone numbers into a single format. Normalized phone numbers assist the server with reverse number lookup, outbound call routing, and call authorization rules. Reverse number lookup is a process whereby a user's phone number is mapped to the appropriate SIP Uniform Resource Identifier (URI). By performing reverse number lookup, the server can route calls to all endpoints associated with a particular user’s SIP URI. Reverse number lookup also enables advanced call handling features, such as call forwarding. After a dialed number is normalized by the Translation Service, the Outbound Routing application can apply call authorization rules to route the call. Outbound Routing The Outbound Routing application uses call authorization rules configured by the administrator to route each call to the appropriate media gateway. Call authorization rules in Office Communications Server 2007 R2 are similar to traditional telephony "class of service" options. If the Outbound Routing application determines that a caller is not authorized to dial a particular number (for example, numbers outside the organization or international numbers), the Outbound Routing application can inform the caller that the call cannot be completed. Unified Communications Application Services (UCAS) Voice Applications Unified Communications Application Services (UCAS) Enterprise Voice applications were added in the Office Communications Server 2007 R2 release to provide key Enterprise Voice features, such as dial-in conferencing (Conferencing Attendant and Conferencing Announcement Service), basic Automatic Call Distribution (that is, Response Group Service), and Office Communications Server server-side functions to extend Enterprise Voice to cellular telephones (that is, Outside Voice Control). Dial-in conferencing allows callers to use standard public switched telephone network (PSTN) telephones to dial in to audio conferences hosted on Office Communications Server. (In Office Communications Server 2007, only Office Communications Server enterprise-enabled users who connect over Internet Protocol (IP) audio could join audio conferences hosted on Office Communications Server.) Dial-in conferencing is enabled by the Conferencing Attendant and Conferencing Announcement Service UCAS applications. For details, see Dial-In Conferencing Scenario. Conferencing Attendant The Conferencing Attendant is an auto-attendant service (that is, a bot) that authenticates and joins dial-in participants to audio conferences. Office Communications Server 2007 R2 Conferencing Attendant supports 14 different languages. The Conferencing Attendant prompts the caller for conference IDs and passcode (that is, if the caller is calling in as an anonymous participant) or extension number and personal identification number (PIN) (that is, if the caller is joining as a Enterprise User), plays on-hold music when enterprise users have not yet joined the 23 meeting, requests authentication from a front-end service, and joins authenticated callers to the Focus and A/V Conferencing Server for the requested conference ID. The Conferencing Attendant Service on each Front End Server listens on Transmission Control Protocol (TCP) port 5072 for incoming calls. These requests normally come from a Mediation Server and are proxied by the Mediation Server’s next hop pool. Conferencing Announcement Service The Conference Announcement Service is another trusted bot that participates in all dial-in enabled audio conferences. It monitors the conference roster and plays entry and exit tones to all dial-in attendees when other dial-in attendees join or leave, and also tells attendees when their microphone has been muted or unmuted in the language that they chose when they connected to the Conferencing Attendant. No configuration is required for this service. The Conference Announcement Service on each Front End Server listens on TCP port 5073 for requests from a Focus that is running on one of the Front End Servers in the pool. Response Group Service The Office Communications Server 2007 R2 Response Group Service enables administrators to create and configure one or more response groups for the purpose of routing and queuing incoming phone calls to one or more designated agents. These response groups can be deployed in departmental or workgroup environments and in entirely new telephony installations. Typical usage scenarios include an internal helpdesk, a customer service desk, or a general external call handler. Response Group Service can increase response group usage and reduce the associated overhead by pushing the tasks of response group maintenance down to the users who directly benefit from them. The Response Group Service functionality is enabled by the Response Group Service application, which is a UCAS application that implements standard response group call-routing algorithms (that is, including serial, longest-idle, parallel, and round robin), interactive voice response (IVR), call queuing, on-hold music, presence-based routing, and so on. Outside Voice Control The Office Communications Server 2007 R2 Outside Voice Control feature enables users to use their enterprise telephone number for inbound and outbound calls on their personal mobile phone. To use this feature, the user must have Office Communicator Mobile (2007 R2 release) installed on a Windows Mobile phone and must be able to use data packet communication between the mobile phone and the mobile phone provider (for example, General Packet Radio Source (GPRS)) that allows SIP messages to be transmitted. The user must also be enabled for Enterprise Voice. For inbound calls, Office Communications Server 2007 R2 sends a SIP Invite to all registered SIP endpoints of the user including the user’s Communicator Mobile (2007 R2 release) client running on the phone, over the data channel. Office Communications Server 2007 R2 subsequently initiates an outbound PSTN/mobile network call through Office Communications Server 2007 R2 Mediation Server to the user’s mobile phone number. 24 For an outbound call from a mobile phone, the user has the option to enter the phone number to be dialed into Communicator Mobile (2007 R2 release) or to initiate a call to a SIP contact using Communicator Mobile (2007 R2 release). The user receives an incoming mobile phone call from Office Communications Server using the mobile phone provider’s cellular network. After the user accepts the call from Office Communications Server, Office Communications Server sets up a second call leg to the designated called party and then join the two connections. The called party receives a call from the user’s company using the user’s office phone number despite the fact that the user is actually on a mobile phone. The Outside Voice Control application on each Front End Server listens on TCP port 5074. Communication Protocols for Office Communication Server 2007 R2 In This Section This section includes the following topics: Protocols Overview Conferencing Protocols Protocols Overview While Session Initiation Protocol (SIP) is still the primary control protocol used by Office Communications Server 2007 R2, Web Conferencing Server, A/V Conferencing Server, and their subcomponents, they also employ other protocols to set up and modify conferences and to set up and break down media streams between different elements in the Office Communications Server2007 R2 network. The following protocols are employed by Office Communications Server 2007 R2: Session Initiation Protocol (SIP). The industry standard protocol described in IETF RFC 3261 that defines a standard for session setup, termination, and media negotiation between two parties. It is widely used for Voice over IP (VoIP) call signaling. Asynchronous JavaScript And XML (AJAX). Used in Communicator Web Access to ensure efficient client-server interaction, while keeping the Web user interface (UI) responsive. Centralized Conferencing Control Protocol (C3P). Used to encode Conferencing Control commands in Office Communications Server. HTTPS. The set of rules for exchanging files (that is, text, graphic images, sound, video, and other multimedia files) on the World Wide Web. Relative to the Transmission Control Protocol (TCP)/Internet Protocol (IP) suite of protocols, the basis for information exchange on the Internet, HTTP is an application-layer protocol. HTTPS is the HTTP protocol over Secure Sockets Layer (SSL)/Transport Layer Security (TLS). Interactive Connectivity Establishment (ICE). Used to provide media connectivity across firewalls and Network Address Translation (NAT) devices, thereby enabling audio/video anywhere. 25 Persistent Shared Object Model (PSOM). A proprietary protocol for the transport of realtime data, including audio and video. PSOM uses TCP or TLS as the underlying transport. Remote Desktop Protocol (RDP). The Microsoft protocol that is used in Office Communications Server 2007 R2 for desktop sharing. This is the protocol that is used for Microsoft Remote Desktop Services. Real-time transport protocol/real-time control protocol (RTP/RTCP). The industry standard protocol for the transport of real-time data, including audio and video. Session Description Protocol (SDP). Used to negotiate capabilities between SIP endpoints during call initiation. Secure real-time transport protocol/secure real-time control protocol (SRTP/SRTCP). Encrypted versions of RTP/RTCP. Scale secure real-time transport protocol (SSRTP). Scale secure RTP/RTCP, used for efficient media sessions for multi-point audio/video conferences. Simple Traversal of UDP through NAT (STUN). Used by endpoints to determine the public IP addresses allocated to them by the NAT (if applicable). Transport Layer Security (TLS). Used to encrypt SIP or HTTP trafficin addition to server authentication. Third Party Control Protocol (TPCP). Used for Outside Voice Control. Traversal Using Relay NAT (TURN). A protocol for allocating a public IP address and port on a globally reachable server for the purpose of relaying media from one endpoint to another. For detailed specifications for Office Communications Server protocols, including several of those listed in this topic, see “Microsoft Office Protocol Documents” at http://go.microsoft.com/fwlink/?LinkId=158438. Conferencing Protocols The following table shows the protocols that are used between conferencing components. Table 1. Conferencing Protocols Client Client X Focus Session Initiation Protocol (SIP), Centralized Conferencing Control Protocol (C3P) Focus Conferencing Conferencing Factory Server Factory server SIP, C3P X SIP, real-time transport protocol (RTP), Persistent Shared Object Model (PSOM) and so on 26 Client Focus Focus Conferencing Conferencing Factory Server Factory server Focus SIP, C3P X X HTTPS, C3P HTTPS, C3P Focus Factory SIP, C3P X X X X Conferencing Server Factory X HTTPS, C3P X X HTTPS, C3P Conferencing Server SIP, RTP, PSOM and so on HTTPS, C3P X HTTPS, C3P X The following figure provides an overview of the protocols and the components that use them to communicate. 27 Figure 1. Office Communication Server 2007 R2 conferencing protocols and component relationships Interfaces in the diagram identify a specific link, based on the transport and purpose, between two logical elements. The same protocol can be used in different ways over the various interfaces. For example, SIP/3CP is used to communicate C3P commands over SIP INFO messages and conference event package notifications over SIP SUBSCRIBE and NOTIFY messages. 28 Centralized Conferencing Control Protocol (C3P) C3P is a conference manipulation protocol used by the Office Communications Server 2007 conferencing servers. C3P is used to modify the conference state. The channels over which C3P can be used in an Office Communications Server 2007 deployment are shown in Figure 1. C3P has request/pending response/final response semantics similar to SIP. The following table lists C3P commands. Table 2. C3P Commands Conference Level addConference deleteConference modifyConference getConference getMCU modifyConferenceLock modifyUsersMediaFilters User Level addUser deleteUser modifyUser modifyUserRoles setUserAccess Scheduling getAvailableMcuTypes getConferencingCapabilities getEncryptionKey getConferences 29 Endpoint Level modifyEndpointRole Endpoint Media Level addEndpointMedia deleteEndpointMedia modifyEndpointMedia High Availability (HA)/Load Balancing ping getConference PSOM PSOM is the media protocol for data collaboration. PSOM uses Transport Layer Security (TLS) as the underlying transport. Conferencing clients can use PSOM to establish media channels with the Web Conferencing Server to negotiate or transfer media. RTP/RTCP RTP/RTCP is the standard protocol for the transport of real-time data, including audio and video. SIP/SDP Session Initiation Protocol (SIP) is the industry standard protocol described in IETF RFC 3261 that defines a standard way for session setup, termination, and media negotiation between two parties. It is widely used for Voice over IP (VoIP) call signaling. Session Description Protocol (SDP) is the industry standard protocol described in IETF RFC 4566 that defines a standard way to convey media details, transport addresses, and other session description metadata to the participants when initiating multimedia teleconferences, Voice over IP calls, streaming video, or other sessions. Signaling and Control Protocol This section describes the protocols supported by the various server components and the functionality supported by each of those protocols. Clients and servers use signaling and control protocols for session setup and conference management. For each media in a conference or an audio/video call, different media protocols are used. 30 SIP, as specified in RFC 3261, is used for session setup and termination in Office Communications Server 2007. SIP messages use Transmission Control Protocol (TCP) or TLS as the underlying transport layer for client-to-server communications and mutual TLS (MTLS) for server-to-server communications. Conferences and call control are established within the context of existing SIP sessions using C3P protocol. C3P commands are sent using SIP INFO messages. A separate SUBSCRIBE/NOTIFY dialog is used to subscribe to conference packages, state change notifications, and the conference participant list. Media Protocols The Web Conferencing Server uses PSOM as the media protocol for data collaboration. PSOM uses TLS as the underlying transport. As the client for the Web Conferencing Server, Live Meeting functionality also relies on PSOM. RTP and RTCP are used to transport audio/video and desktop sharing data. By default, Office Communications Server 2007 uses secure real-time transport protocol (SRTP) and secure realtime transport control protocol (SRTCP) to secure and encrypt both media types. RTP/RTCP can use either TCP or User Datagram Protocol (UDP) as the underlying transport for audio/video, but will use only TCP for desktop sharing. Scenarios for Office Communications Server 2007 R2 This part of the Technical Reference provides details about architecture and call flows that enable specific end-user scenarios. In This Section This section includes the following topics: Conferencing Scenario for Office Communications Server 2007 R2 Dial-In Conferencing Scenario Desktop Sharing Scenario Communicator Web Access Scenario Outside Voice Control Scenario Group Chat Feature Scenario Conferencing Scenario for Office Communications Server 2007 R2 This section describes how conferencing works. It contains a detailed discussion about how conferencing components interact and includes call flows for various conferencing scenarios. Together with the Focus and the Focus Factory, the Web Conferencing Server, A/V Conferencing Server, and Application Sharing Service (ASMCU) provide conferencing functionality 31 In This Section This section includes the following topics: Core (Focus, Focus Factory, and Conferencing Server Factory) Web Conferencing Server for Office Communications Server 2007 R2 Conferencing Scenario Call Flows in Office Communications Server 2007 R2 Core (Focus, Focus Factory, and Conferencing Server Factory) Every Office Communications Server 2007 R2 conference has a similar lifecycle, which is described at a high level in this section. In This Section This section includes the following topics: Conferencing Lifecycle Conferencing Data Flow Conference Creation and Activation Joining a Conference Adding Participants to the Conference Notification Document Conference Deactivation Conference Expiration Conferencing Lifecycle A meeting begins when the first participant of any type joins the conference. A participant can join a conference when the conference is not locked and when the participant can be authenticated, based on the participants Active Directory identity or supplied meeting key. A meeting ends when all participants leave, when a presenter terminates the conference, or when ten minutes have lapsed since the last authenticated participant left the conference. When a conference ends, the conference is deactivated, which means that any remaining participants are ejected and that realtime media stops streaming in the meeting. Then, the meeting state and meeting content are purged at the time the conference expires, as defined when the meeting was scheduled. If a meeting is a recurring meeting, the meeting can be reactivated after the previous instance has been deactivated, if it has not already expired. Any content that was uploaded previously is available when the recurrent meeting starts again. Conferencing Data Flow This figure shows the data flow between participating components when an intranet client creates and joins a conference. 32 This is a description of the data flow between conferencing components when an intranet client creates and joins a conference: Step 1. The scheduling client communicates with the Focus Factory using Domain Name System (DNS) lookup or the manually configured server address. The scheduling client sends information required for creating a meeting, such as the conference ID, participant list, user role information, and expiration date in a SERVICE request. Step 2. The Focus Factory creates a conference record in the conferencing database on the Back-End Database Server. The Focus Factory also creates and returns a SIP URI that represents the conference to the client. Step 3. The conferencing client connects to the Focus and establishes two dialogs with it, an INVITE dialog to join a conference and carry additional command traffic from the client to the Focus and a SUBSCRIBE/NOTIFY dialog to get conference state change notifications. Step 4. The Focus connects to the Back-End Database Server to retrieve the conference record and to query the conferencing database to verify that the client joining the meeting is valid. Policy checks are also performed at this time. Step 5. The Focus requests information from the Conferencing Server Factory about how to contact a conferencing server. Step 6. The Conferencing Server Factory finds the conferencing server of the type requested by the Focus and then tries to provision a conference on that conferencing server, in order to allocate resources for the conference. If provisioning succeeds, the Conferencing Server Factory returns to the Focus an HTTP URL that allows the Focus to establish a control link with the conferencing server. Step 7. The Focus communicates with the conferencing server to issue commands that begin or end the conference, change the participant list, or otherwise change the conference state. Step 8. The conferencing client communicates with the conferencing server. If the server is an A/V Conferencing Server, the signaling protocol is SIP and the media is transported over RTP/RTCP. If the server is a Web Conferencing Server, both signaling and media are sent using the PSOM protocol. If the server is an Application Sharing Server, the signaling protocol is SIP and the media is transported over RDP encapsulated within RTP. 33 Conference Creation and Activation The scheduling client communicates with the Focus Factory to create a new conference. To create a conference, the Focus Factory on the server creates and configures a conference record. The Focus Factory then sends the URI for the Focus instance to the client. The conference URI includes the organizer of the conference and a unique conference identifier. The syntax is as follows: sip:<organizer>@<domain.com>;gruu;opaque=app:conf:focus:id: <unique ID>. For instance: sip:Ted@contoso.com;gruu;opaque=app:conf:focus:id:3ICYEOLHDKOE3ZP5K9QO56XN70D8X CDW. There is however a unique conference identifier that is especially reserved for reservationless meetings. The unique id is 3814A82809A34ED0958CFDB60957BDF. This meeting never expires. When a client creates a conference using the SIP SERVICE mechanism, the client first makes a SERVICE request, which requests a summary of conferencing capabilities supported in the server, and then passes all the information that it needs regarding the conference, media types, privileges, and participants as part of a second SERVICE request to the Focus Factory. The Focus Factory creates the conference record and then sends the connection information to the client in the 200 OK response to the SERVICE request. This figure shows the message flow between conferencing components when a client creates a conference using the SIP SERVICE mechanism. The following is a description of the message flow between conferencing components when a client creates a conference using the SIP SERVICE mechanism: Step 1. The client sends a SERVICE request to the Focus Factory with information requesting conferencing capabilities. These capabilities include a list of media capabilities, PSTN support 34 and important policy information a client should know before scheduling a conference. For example: SERVICE sip:Ted@contoso.com;gruu;opaque=app:conf:focusfactory To: sip:Ted@contoso.com;gruu;opaque=app:conf:focusfactory From: sip:client1@contoso.com;tag=f7588dc66124429ab736 Call-ID: 3412asdsss CSeq: 1 SERVICE Content-Type: application/cccp+xml SIP headers... <XML body> Step 2. After the getConferencingCapabilities SERVICE request has been sent and the response parsed by the client so that it can be aware of the capabilities available, the client sends a SERVICE request to the Focus Factory to have the conference created. Step 3. The Focus Factory parses the create conference information in the SERVICE request and writes it to the conferencing database in the Database. Step 2.2. After the Focus Factory writes to the conferencing database on the Back-End Database Server, the Focus Factory sends a 200 OK response to the client with the conference information. The following figure shows the message flow between conferencing components when a client joins a conference. The following is a description of the message flow between conferencing components when a client joins a conference: Step 1. The client sends an INVITE request to the Conference URI to join the conference. The purpose of the INVITE dialog is two-fold. The INVITE dialog indicates that the client wishes to join the conference. The INVITE dialog is also used by the client to send an INFO request in the context of the dialog, in order to set up control of the conference, as follows: 35 INVITE sip:Ted@contoso.com;gruu;opaque=app:conf:focus:id:1234 To: sip:Ted@contoso.com;gruu;opaque=app:conf:focus:id:1234 From: sip:joe@contoso.com;tag=f7588dc66124429ab736 Call-ID: adfsfasdfasdfds CSeq: 1 INVITE Content-Type: application/cccp+xml SIP headers... <addUser C3P request> The C3P addUser request in the body of the INVITE can be used to specify specific client attributes, such as its Display Name. Step 2. The client will use the SUBSCRIBE/NOTIFY dialog for watching the conference state, as follows: SUBSCRIBE sip:Ted@contoso.com;gruu;opaque=app:conf:focus:id:1234 To: sip:Ted@contoso.com;gruu;opaque=app:conf:focus:id:1234 From: sip:joe@contoso.com;tag=f7588dc66124429ab736 Call-ID: adfsfasdfasdfds CSeq: 1 SUBSCRIBE Event: conference Accept: application/conference-info+xml Content-Length: 0SIP headers... The Focus processes and accepts the subscription and notifies subscribers of any conference state changes. The conference state includes the state maintained by the Focus itself, the conference policy, and the media policy/information. Step 2.1. The initial conference state document can be included in the 200 OK of the SUBSCRIBE, if the client expresses support for this extension, as follows: SIP/2.0 200 OK To: sip:Ted@contoso.com;gruu;opaque=app:conf:focus:id:1234 From: sip:joe@contoso.com;tag=f7588dc66124429ab736 Call-ID: adfsfasdfasdfds CSeq: 1 SUBSCRIBE Event: conference Accept: application/conference-info+xml Content-Type: application/conference-info+xml SIP headers... <conference-state version="0" state="full" 36 entity="sip:confuri"> <conference-info> <conf-uris> <entry> <uri>sip:Ted@contoso.com;gruu;opaque=app:conf:audiovideo:id:1234</uri> <display-text>audio-video</display-text> <purpose>audio-video</purpose> </entry> <entry> <uri>sip:Ted@contoso.com;gruu;opaque=app:conf:meeting:id:1234</ uri> <display-text>meeting</display-text> <purpose>meeting</purpose> </entry> <entry> <uri>sip:Ted@contoso.com;gruu;opaque=app:conf:chat:id:1234</uri > <display-text>chat</display-text> <purpose>chat</purpose> </entry> <entry> <uri>sip:Ted@contoso.com;gruu;opaque=app:conf:phoneconf:id:1234</uri> <display-text>phone-conf</display-text> <purpose> phone-conf</purpose> </entry> </conf-uris> </conference-info> <....Other conf Info...> </conference-state> The following figure shows the message flow between conferencing components when the Focus bootstraps the Web Conferencing Server. 37 The following is a description of the message flow between conferencing components when the Focus bootstraps the conferencing server: Step 1. The client joins the conference, as described previously. Step 2. The MCU Factory is selected based on the MCU Type and Vendor configured at scheduling time. The Focus then makes a getMcu call to the MCU Factory. Step 2.1. If the MCU Factory finds a suitable MCU, then it responds to the Focus with a success getMcu response. Step 3. When the MCU Server URL has been obtained by the Focus, it then makes an addConference call to the MCU. The MCU can choose to accept or reject the request. However, when failing the call the MCU must place a reason element inside the addConference response element that contains an indicator of why the request was failed. This reason is an enumeration defined in the C3P schema. If the conference exists already, the MCU must respond with conferenceExistsAlready. The Conf-Uris section lists the MCU Conference URI for this conference. The MCU needs to use this information to correlate incoming media-INVITE requests to the conference. The Service-Uris section contains two URIs – one is an HTTPS URL that gives the Focus Pool URL for use in sending C3P notifications. This URL is indicated by the ms-notification purpose parameter. The second URL is a SIP URL that specifies the outbound-proxy for use by the MCU when it sends a SIP request. This outbound-proxy is usually the Focus itself but it may be different. We use the purpose value of ms-sip-outbound-proxy to indicate this. Conference attributes (for example, organizer, user count, admission policy, and expiration time) are communicated in the addConference call. Entity-Policy information applicable to the MCU is also conveyed in the addConference call (this is discussed in a previous section). Step 3.1. If the MCU accepts the addConference request, it then responds to the addConference call with a success parameter. It can optionally request Focus to send conference notifications by setting the notification parameter appropriately. 38 Joining a Conference After a client joins the conference and the conference is created, the client must establish a media session with a conferencing server responsible for that media type. For each conferencing server that is involved in a conference, the Focus assigns a virtual SIP URI that is routable to the Focus itself. The initial notification from the Focus to the client contains the URIs for all conferencing servers in the conference. A client can join itself to the conference in one of the following two ways: To join to an IM Conferencing Server or an A/V Conferencing Server (Conferencing Servers that communicate using SIP), a client issues a direct media INVITE to the conferencing server URI. To join to a Web Conferencing Server (which does not use SIP), a client issues an addUser C3P dial-in command targeted at the conferencing server URI. (All C3P commands are carried inside a SIP INFO.) A presenter client will typically invite another participant into a conference by first sending an appINVITE directly to the other participant. (An appINVITE is an INVITE between client endpoints in which the body of the request contains the Focus URI for the conference.) If that participant client supports C3P, it will join itself to the conference using one of the preceding methods. If the participant is a client with aversion of Office Communications Server prior to 2007, the presenter client will receive a 415 error that will cause the presenters client to issue an addUser C3P dial-out command to the conferencing server URI, to have the conferencing server directly connect to the legacy client. In This Section This section includes the following topics: Direct Media INVITE Conference Join Method for Office Communications Server 2007 R2 C3P addUser dial-in Conference Join Method Direct Media INVITE Conference Join Method for Office Communications Server 2007 R2 Clients can join a conference by sending a direct media INVITE. This method can only be used with conferencing servers that use SIP to establish sessions, such as the A/V Conferencing Server and the IM Conferencing Server. A media INVITE is an INVITE where the To: line contains the conferencing server URI. Clients can join a conference by sending a direct media INVITE. This method can only be used with conferencing servers that use SIP to establish sessions, such as the A/V Conferencing Server and the IM Conferencing Server. A media INVITE is an INVITE where the To: line contains the conferencing server URI. A client can send the media session INVITE to the conferencing server URI directly, without any prior addUser call. The INVITE is routed to the Focus. The Focus checks if the connection information is a routable SIP address and forwards the INVITE directly to the conferencing server. The Focus also sends the addUser command to the conferencing server on the client's behalf. The conferencing server authorizes the request and responds with the connection information. 39 The following figure shows the message flow between conferencing components when a client joins a conference by sending a direct media INVITE. Client sending the media session INVITE to the conferencing server directly * The BENOTIFY is sent to all clients subscribed to the conference state. The following is a description of the message flow between conferencing components when a client joins a conference by sending the media session INVITE to the conferencing server URI directly: Step 1. The client sends an INVITE to the focus/conference URI it received in the notification document. This INVITE is routed to the focus. The client might have included a session description for media negotiation. Since the focus recognizes that the INVITE was addressed to a particular conferencing server, it safely ignores any session description in the body of the INVITE. Step 2. The Focus then sends an HTTP request to the conferencing server assigned by the Conferencing Server Factory to this conference asking it to expect a new participant (addUser). Any bootstrapping requests that the Focus sends to initialize the conference on the conferencing server are not included in the call flow diagram. Step 2.1. The conferencing server sends a successful response for the addUser call. The response includes the actual URL that it wants the participant to use to communicate with the conferencing server. If the server sending the response is an A/V Conferencing Server, the URL indicates that the participant can communicate with the conferencing server using SIP. Step 1.1. After the Focus receives the successful response for the addUser request, the Focus forwards the INVITE to the A/V Conferencing Server. 40 Step 1.2. The conferencing server sends a successful response to the client. Step 1.3. The client sends an ACK to the conferencing server to complete the INVITE dialog. The same INVITE dialog is also used for media negotiation with the conferencing server. Note: Although the client establishes the INVITE dialog directly with the conferencing server, the SIP requests traverse the Focus. Step 3. After the client successfully joins the conferencing server, it sends a participant joined event to the Focus. Step 4. The Focus sends a participant joined conferencing server state change notification to all clients subscribed to the conference state. Step 5. Direct media negotiation occurs between the client and the conferencing server. With an A/V Conferencing Server, the media are RTP/RTCP streams. C3P addUser dial-in Conference Join Method A client can connect to a non-SIP based conferencing server, such as a Web Conferencing Server, by issuing an addUser C3P dial-in command. When a client issues an addUser dial-in C3P command, the Focus forwards the command to the Web Conferencing Server. The Web Conferencing Server authorizes the command and returns the appropriate connection information. The client then establishes a direct media session with the conferencing server. The Following figure shows the message flow between conferencing components when a client joins a conference by issuing an addUser C3P dial-in command. Client joining media with a Web Conferencing Server using addUser dial-in 41 The following is a description of the message flow between conferencing components when a client joins a conference by sending an addUser C3P command to the Web Conferencing Server: Step 1. The client sends an INFO request with an addUser dial-in command to the Focus. The client uses the focus/conference URI it received in the notification document. Step 2. The Focus determines if a conferencing server has been assigned to support this particular media type for this conference. If a conferencing server has not been assigned, the Focus sends an HTTP request to the Conferencing Server Factory asking it to allocate a conferencing server for this conference. In the diagram, it is assumed that the conferencing server has been assigned to the conference. The Focus then sends an HTTP request to the designated conferencing server asking it to expect a new participant (addUser). Any bootstrapping requests that the Focus sends to initialize the conference on the conferencing server are not included in the call flow diagram. Step 2.1. The conferencing server sends a successful response for the addUser request. The response contains the actual URL it wants the conference participant to use to talk to the conferencing server. If the client is joining a Web Conferencing Server, the URL is a PSOM URL. Authorization information, if any, is also included in the response. Step 3. The Focus sends the PSOM connection information to the client. Step 4. The client directly establishes a PSOM channel with the Web Conferencing Server. Step 5. After the client successfully joins the Web Conferencing Server, it sends a participant joined event to the Focus. Step 6. The Focus sends a participant joined conferencing server state change notification to all clients subscribed to the conference state. BENOTIFY sip:client1@contoso.com SIP/2.0 SIP headers... <conference-state version="1" state="partial" entity="sip:Ted@contoso.com;gruu;opaque=app:conf:focus:id:1234" > <user entity="bob@contoso.com" state="full"> <display-text>Bob Kelly</display-text> <endpoint entity="addf"> <state>connected</state> <!-MEDIA --> <media entity="2" state="full"> <display-text>data collab</display-text> <proto>dataCollab</proto> 42 </media> </endpoint> </user> <....Other conf Info...> </conference-state> Adding Participants to the Conference This section describes the different ways that participants can be added to a conference. In This Section This section includes the following topics: Adding Participants Using an AppINVITE C3P addUser dial-out Conference Join Method Adding Participants Using an AppINVITE This method of adding participants to a conference is used by clients that support C3P and can therefore join both the Media and the media conferencing server. After a client has joined a conference successfully, the client can send an app INVITE to another participant. The app INVITE displays as a message prompt in the user's client and contains a conferencing URL and meeting key. After the participant accepts (clicks) the message prompt, it will launch the conferencing client, which then dials the participant in to the conference. The following figure shows the message flow between conferencing components when a client adds a participant to a conference using an appINVITE. Ad hoc invitation to another participant 43 The following is a description of the message flow between conferencing components when a client adds a participant to the conference using an appINVITE: Step 1. The client sends an app INVITE to another participant. The invitation contains information the participant needs in order to dial in to the conference, including authorization information, if any exists. After the participant accepts the invitation, the conferencing client is launched, which enables the client to dial in to the conference. Step 2. After the client successfully dials in to the conference, the Focus sends a participant list update notification to all clients subscribed to the conference state. C3P addUser dial-out Conference Join Method The primary way that legacy clients, such as Office Communicator (2005 release), are invited to join conferences is through a C3P addUser dial-out command. When the presenter client issues an addUser dial-out C3P command, the Focus forwards the command to the conferencing server. The conferencing server authorizes the command, dials out to the legacy client specified in the addUser command, and then establishes a direct media session with the legacy client. This appINVITE mechanism can be used with new clients that support the app INVITE and the new C3P protocol. However, legacy clients can also be invited to conferences. To invite a legacy client to a conference, the client sends an addUser dial-out to another client. The following figure shows the message flow between conferencing components when a client adds a participant to a conference using a C3P addUser dial-out command. 44 Client joining media with A/V Conferencing Server using addUser dial-out The following is a description of the message flow between conferencing components when a client adds a participant to the conference using an addUser dial-out command: Step 1. The client sends an INFO request addUser dial-out command to the Focus. The client uses the focus/conference URI it received in the notification document. Step 2. The Focus determines if a conferencing server has been assigned to support this particular media type for this conference. If a conferencing server has not been assigned, the Focus sends an HTTP request to the Conferencing Server Factory asking it to allocate a conferencing server for this conference. In the diagram, it is assumed that the conferencing server has been assigned to the conference. The Focus then sends an HTTP request to the designated conferencing server asking it to dial out to the user. Any bootstrapping requests that the Focus sends to initialize the conference on the conferencing server are not included in the call flow diagram. Step 3. The conferencing server dials out an INVITE to the client using an outbound SIP proxy, which is usually running on the same server as the Focus. Step 4. The client directly establishes a RTP media channel with the conferencing server. Step 5. After the client successfully joins the conferencing server, it sends a participant joined event to the Focus. 45 Step 6. The Focus sends a participant joined conferencing server state change notification to all clients subscribed to the conference state. Notification Document For each media type used in the conference, the Focus assigns a virtual SIP URI that routes to the Focus. The initial notification from the Focus to the client contains the list of SIP URIs for all the conferencing servers in the conference. The client uses the conference URI to identify the conferencing server it into which it wants to dial or to which it wants to issue a control command. The conference state package data model has the following elements: Conference description. Conference title and description. Conference View. Conference-specific information for each entity involved in the conference (for example, the Focus, A/V Conferencing Server, and IM Conferencing Server). This information includes capabilities, current state, settings, and policy information. Users. Roster of the conferences, the users, corresponding endpoints, and the media sessions to which they are connected. The following is an example of a conference state notification document with two conferencing servers: <conference-info > <conference-description> <msci:conference-view ci:state="full"> <msci:entity-view entity="avMcuConfUri" ci:state="full"> <!—MCU specific data, media-specific states go here --> </msci:entity-view> <msci:entity-view entity="dataMcuConfUri" ci:state="full"> <!—MCU specific data, media-specific states go here --> </msci:entity-view> <msci:entity-view entity="acpMcuConfUri" ci:state="full"> <!—MCU specific data, media-specific states go here --> </msci:entity-view> </msci:conference-view> <users> <user entity="sip:user1@contoso.com" state="full" > <endpoint entity="sip:user1@contoso.com" > <status>on-hold</status> </endpoint> </user> <user entity="sip:user2@contoso.com" state="full" > 46 <endpoint entity="sip:user2@contoso.com" > <status>on-hold</status> </endpoint> </user> <user entity="sip:user3@conf.fabrikam.com" state="full" > <roles><entry>presenter</entry> </roles> <endpoint entity="sip:user1@conf.fabrikam.com" > <status>connected</status> </endpoint> <endpoint entity="{guid}" session-type="audio-video" > <status >connected</status> </endpoint> </user> <user entity="sip:user4@conf.fabrikam.com" state="full" > <roles><entry>participant</entry> </roles> <endpoint entity="sip:user2@conf.fabrikam.com" > <status>connected</status> </endpoint> </user> </users> <display-text>brownbag </display-text> <conf-uris> <entry> <uri>sip:organizer@contoso.com;ms-app=conf/meeting;ms-conf-id=cd</uri> <display-text>Data MCU</display-text> <purpose>meeting</purpose> </entry> <entry> <uri>sip:organizer@contoso.com;ms-app=conf/audio-video;ms-confid=cd/uri> <display-text>AV MCU</display-text> <purpose>audio-video</purpose> 47 </entry> </conf-uris> </conference-description> <conference-info> Conference Deactivation A presenter can terminate a conference that is in progress at any point. When a presenter terminates a conference, the client sends a SIP INFO request with a C3P deleteConference command to the Focus, which includes the conference URI. The Focus performs authorization to verify that the user is a presenter with privileges to end the conference. The Focus then generates an update to the participant list by sending a SIP NOTIFY message to all users with an active INVITE dialog associated with the conference. The conferencing server sends a SIP BYE to each client that has an active media dialog. At this point, the conference has effectively ended. A conference is deactivated in the following scenarios: When no new participant has joined a conference (meaning the conference is idle) in 24 hours. 10 minutes after all authenticated participants have left the conference. Conference Expiration When a conference is created, an expiration date is typically passed to the server for the conference. When the expiration date arrives, the Focus is responsible for deleting all information about the conference from the conferencing database and the Web Conferencing Server is responsible for deleting the conference content. Web Conferencing Server for Office Communications Server 2007 R2 A discussion of the Web Conferencing Server must necessarily include a discussion of the interactions between the components: conferencing client, Focus, Focus Factory, Conferencing Server, and Conferencing Server Factory. Definitions of the conferencing components are as follows: Conferencing Client. A SIP endpoint capable of joining and participating in a conference. Scheduling Client. A SIP endpoint that is responsible for scheduling the conference. For example, the Conferencing Add-in for Microsoft Office Outlook messaging and collaboration client is a scheduling client for scheduled conferences and Office Communicator can be a scheduling client for ad-hoc conferences. Focus. A Focus is a SIP endpoint that represents a conference. It is responsible for managing the state of the conference, enforcing security, managing roles and privileges and providing conference state updates to the clients. A Focus instance runs on a Front End Server. 48 Focus Factory. An entity that creates, modifies, or deletes a conference in the conferencing database. Clients use SIP SERVICE messages to send C3P commands to and receive C3P commands from the Focus Factory. Conferencing Server. An entity responsible for a specific media types. This can also be referred to as an MCU. Examples include: Audio/Video, Web Conferencing (data collaboration), IM Conferencing Server, and Telephony Conferencing Server. The Web Conferencing Server enables data collaboration among multiple participants. Conferencing data collaboration features can include application sharing, white boarding, chat, polling, question and answer, Web sharing, multimedia content, file transfer, and PowerPoint support. Conferencing Server Factory. An entity responsible for allocating a conferencing server to a conference for a specific media type. In the Office Communications Server architecture, all conference control commands are sent by clients to the focus, which then relays these commands to the appropriate conferencing servers after verifying that the client that sent the request has the privileges to perform that operation. Media is then exchanged directly between a client and the conferencing servers. In This Section This section includes the following topics: Web Conferencing Architecture File Structure Metadata Folder Organizer Folder Conference Folder Types of Slides Content Upload and Download over PSOM Content Upload over PSOM and Download over HTTPS Slide Set Files Handouts (File Transfers) PersistData Folder (Shared Notes) Content Folder Conference Content Folder File Size Restrictions Compliance Web Conferencing Architecture Office Communications Server Web conferencing requires that Live Meeting clients can connect to a Standard Edition server or an Enterprise pool, a Web Conferencing Server, and a Web Components Server (IIS). Furthermore, the Web Conferencing Server and Web Components Server must have access to the shared folders that the administrator created during deployment, in order to store meeting information (metadata) and meeting content. The Web Conferencing 49 Server must have read/write access to the metadata folder and write access to the content folder. The Web Components Server must have read access to the content folder. The following figure shows the required topology for Web conferencing with Office Communications Server. You can install and run these servers on the same physical computer or on different computers. However, it is recommended that a dedicated file server hosts the conferencing metadata and content folders. File Structure At a minimum, the Web Conferencing Server is configured with two UNC paths that indicate where the server stores conference state (that is, metadata) and conference content. The first UNC path is where the server stores the conference metadata files. The second UNC path is where the server stores conference content. These folders are also referred to as the metadata folder and the content folder. The following paths can be configured using either the MMC or the Windows Management Instrumentation (WMI) MSFT_SIPDataMCUCapabilitySettings class: MeetingMetadataLocation property for metadata file location. MeetingPresentationContentLocation property for content location. In addition to these folders, the Web Conferencing Server can also be configured with a third UNC path for a compliance folder. Regulatory compliance is not enabled by default, but if your 50 organization needs to retain data exchanged in Web conferences to satisfy regulatory compliance requirements, you can configure a UNC path to the compliance folder using either the MMC or the WMI MSFT_SIPDataComplianceSettingClass class. These UNC paths can point to a file system running on the same computer or, preferably, on a dedicated file server. The administrator manually creates these folders when deploying Office Communications Server. Metadata Folder The metadata folder stores the conference metadata (for example, the number of slides, the slide names, and the slide types) that is shared by the Web Conferencing Server with clients over Persistent Shared Object Model (PSOM). Under the metadata folder root, the Web Conferencing Server creates the following structure of subfolders: For each conference organizer, the Web Conferencing Server creates a separate folder below the metadata folder root. The organizer folder name is a hash value computed using the organizer URI. For each conference, the Web Conferencing Server creates a separate folder below the organizer subfolder. The conference folder name is the same as the conference ID. Metadata files for a conference are stored in the conference folder. The following figure shows the structure of metadata folders for m organizers and n conferences for the first organizer. The Web Conferencing Server creates these folders and subfolders when it receives a C3P addConference request from the Focus. If a folder for an organizer does not exist, the Web Conferencing Server creates a new organizer folder. If a folder for an organizer already exists, the Web Conferencing Server creates the conference subfolder below the existing organizer 51 folder. If a folder for a conference does not exist, the Web Conferencing Server creates a new conference folder. If a conference folder already exists, the Web Conferencing Server saves the metadata files in the existing conference folder. Sensitive information about conferences, including each conferences encryption key, is stored in the metadata folder. As a result, it is recommended that, during deployment, the administrator grants Read/Write permissions for the metadata folder only to the user group that will administer the Web Conferencing Server. Contentmgr.xml File In the metadata folder root, the Web Conferencing Server creates an XML file (Contentmgr.xml) that is used to coordinate the mechanism that cleans up the expired content. For example, if your organization deployed multiple instances of the Web Conferencing Server and all instances share the same metadata and content folders, the Contentmgr.xml file is used to monitor and determine which Web Conferencing Server is responsible for running the clean-up mechanism. In the Contentmgr.xml file, you can find the fully qualified domain name (FQDN) of the Web Conferencing Server responsible for removing expired content from the folders. The Web Conferencing Server responsible for removing expired content periodically updates the Contentmgr.xml file with its own FQDN and a time stamp indicating the last time it updated the file. Meanwhile, other Web Conferencing Servers in the topology periodically read the file and verify the time stamp. If more than 10 minutes have passed since the last update, another Web Conferencing Server attempts to lock the file and write its own FQDN in the file to become the new owner of the clean-up process. Organizer Folder When a Web Conferencing Server needs to create a metadata folder for a conference, it extracts the organizer URI from the addConference XML. The URI is passed as input for a hash function. The result of this call is used to search through the subfolders of the metadata root folder to determine whether there is already an existing organizer subfolder. If no organizer subfolder exists, the Web Conferencing Server creates a new one. Having a separate folder for each organizer allows the administrator to easily move the conferences owned by a particular user. The resource kit has a tool, DMHash.exe, which allows an administrator to input an URI and obtain the hash. For example, if you need to change the URI for a user and continue to have the content available, you need to: Run DMHash.exe with the old URI and get the name for the organizer folder. Run DMHash.exe with the new URI and get the name for the new organizer folder. Rename the old folder using the new hash value. Conference Folder When a Web Conferencing Server needs to create a metadata folder for a conference, after the server has created or identified the appropriate organizer folder, the server extracts the conference ID from the XML in the C3P addConference request, and then searches the subfolders below the organizer folder for a folder with the same name as the conference ID. If a 52 matching folder does not exist, the Web Conferencing Server creates a new folder below the organizer folder. The conference folder contains all the information that is used by Web Conferencing Server to recreate the content of a conference. The following figure shows the structure of the files that are stored in a conference folder. 53 The conference folder has one subfolder named for presentations. In this subfolder, the Web Conferencing Server creates all the conference files. Conference.xml File For each conference, a conference.xml file is created. The conference.xml file contains the following information about the conference: Conference ID. The same as the conference folder name. Organizer URI. The same URI used to build the organizer hash. Conference expiration time. The time and date used by the clean-up mechanism to determine when the content should be removed. Encryption key. The master encryption key. The Web Conferencing Server randomly generates an encryption key using Advanced Encryption Standard (AES) as the encryption algorithm. This key is used to encrypt the metadata XML files for the slide sets in the conference. This encryption is an additional layer of protection on top of the access permissions on the root metadata folder. SSMaxId Each slide set has a unique identifier. In the preceding illustration, the identifiers start with aaa and end with zzz. The SSMaxId file stores the latest allocated ID for saved slide sets. The file is updated by the Web Conferencing Server when a new slide set is created. The file is read by the Web Conferencing Server when the content of the conference needs to be recovered. Types of Slides The Web Conferencing Server enables conference participants to share content that has been uploaded to the conference. If Persistent Shared Object Model (PSOM) was used to upload all content to the conference, content can be downloaded from the Web Conferencing Server to a participant's Live Meeting client using either PSOM or HTTPS. If content is uploaded using HTTPS, then the download is performed by the IIS server instead of the Web Conferencing Server. The following table describes the protocols that can be used to upload and download each type of slide that a Live Meeting presenter can create. Slide Type Upload over PSOM Download over PSOM Download over HTTPS Whiteboard Yes - Yes Snapshot Yes - Yes Poll Yes Yes - Text Yes Yes - Web Yes Yes - Application sharing Yes Yes 54 Slide Type Upload over PSOM Download over PSOM Download over HTTPS PowerPoint Yes - Yes Microsoft Office Word documents Yes - Yes Handouts (file transfer) Yes - Yes Content Upload and Download over PSOM Persistent Shared Object Model (PSOM) offers the most basic mechanism for uploading and downloading content to a conference. Uploading and downloading over PSOM involves only the Live Meeting clients, the Web Conferencing Server, and the file server where the Web conferencing metadata and content folders reside. Using PSOM, the presenters Live Meeting client uploads a slide and its content. The Web Conferencing Server checks the presenter's permissions and then creates the state for the new slide. The Web Conferencing Server saves the state on the file server and then shares the new slide state with all clients in the conference. The following figure shows the upload and download process for conference content. For all slide types except poll slides, the content is sent with the first PSOM message. For poll slides, the content (that is, questions and choices) is sent after an initial create slide has been sent. 55 Content Upload over PSOM and Download over HTTPS When the actual content for a slide is uploaded to the Web Conferencing Server, the client uses a stream to send the data from the local computer to the Web Conferencing Server. The stream mechanism is built on top of Persistent Shared Object Model (PSOM) to send, in real-time, a large amount of data. (PSOM is typically used to send only small pieces of data, such as integers and short strings.) When the content of slides uploaded to the server over PSOM must be accessed by conference participants, HTTPS is used to download the content. For example, PowerPoint slides, Word documents, and handout slides (that is, file transfers) all require participants to transfer from the Web Conferencing Server a significant amount of data, including images and original documents. For these types of slides, the data is transferred to clients using the Web Components Server. First, the Web Conferencing Server writes the content to the shared folder for conferencing content. (The folders where the content is saved are encrypted.) Then, the Web Conferencing Server sends clients in the conference the URL and the encryption key for the content files. Each participant uses this URL to download the content from the Web Components Server. Using the encryption key, each participant decrypts the content and displays it in the Live Meeting window. The following figure shows the data flow when clients download conference content over HTTPS. 56 The upload process is similar to the one whereby the content is downloaded over PSOM. The difference is that the Live Meeting client always sends content to the Web Conferencing Server in a separate step, as a stream over PSOM. After the Web Conferencing Server receives the content stream from the presenter, the Web Conferencing Server generates a random encryption key and file name for the content and saves the content into the content folder on the shared file system. After the content is saved to the file server, the Web Conferencing Server sends the encryption key and file name to the client. The client sends a GET request to the Web Components Server. Since the Web Components Server is configured to use the same content folder, Internet Information Services (IIS) is able to resolve the request and send the client the encrypted content. The Live Meeting client then decrypts the content and displays it. 57 Slide Set Files For each slide set created, the Web Conferencing Server saves two encrypted XML files. The encryption algorithm is AES and the encryption key is the master key stored in the conference.xml file. Because the files are encrypted, their file names use an .exml file name extension. Each slide set has a unique identifier. The slide set file names are created using the following patterns: set-<unique_identifier>.exml and set-s-<unique_identifier>.exml For example, for a slide set with the unique identifier abc, the file names are set-abc.exml and set-s-abc.exml. The content of the two files is the same. The second file is provided for backup purposes. When the Web Conferencing Server needs to save new changes in the slide set with the unique identifier aaa, the server opens the first file—set-aaa.exml—and attempts to save the changes to that file. If the original write operation succeeds, the Web Conferencing Server creates a copy of set-aaa.exml and renames the copy slide-s-aaa.exml. If the write operation fails, the Web Conferencing Server deletes set-aaa.exml, creates a copy of set-s-aaa.exml, and renames the copy set-aaa.exml. The following figure shows the logical flow of the update operation. 58 The update procedure for slide sets is called every five minutes. This value is hard coded and cannot be changed. If an update operation fails, the changes made to a slide set in the past five minutes are not saved. If the Web Conferencing Server stops running during this period, changes to the slides can be lost. However, the Web Conferencing Server continually tries to update the files every five minutes. As a result, if one attempt fails, the Web Conferencing Server can attempt to save the content later. Each slide set file contains the XML serialization of the data required to recreate the slide set content. The generic layout for this XML is as follows: A root node that contains information about the slide set (for example, the name, creator, and time when the slide set was created). A child node for each slide in the slide set. This node contains the information about the slide (for example, the name, creator, time when the slide was created, type of slide, a link to the original document, and a link to the images representing the slide). Based on the type of slide, there can be child nodes. For example, there can be a child node for the annotations in a PowerPoint slide or a child node for the question and answer choices in a poll slide. 59 The file is a snapshot of the current content for a given slide set. The file does not store historical information such as deleted slides or the values for attributes before they have been updated. There are two types of slides: Slides for which all the slide content is shared between Web Conferencing Server and meeting clients using only the PSOM channel. The following table lists the slide types for which all content is shared over PSOM. Slide Type Slide Content Shared over PSOM Web slide Name, URL Poll Slide Name, question, answer choices Text Slide Name, content Application Sharing Slide Name, type of sharing (that is, Desktop or Application), color depth, process ID Slides for which some part of the content is shared between the Web Conferencing Server and meeting clients over PSOM and some other part of the content is shared between the Web Components Server and meeting clients over HTTPS. The following table lists the slide types for which content is partially shared over PSOM and partially shared over HTTPS. Slide Type Slide Content Shared over Slide Content Shared over PSOM HTTPS Whiteboard Name, annotations Background image (white rectangle) Snapshot Name, annotations Background image (the desktop screen capture from the conference presenter) PowerPoint Name, annotations PNG files for the large slide image and for the slide thumbnail; original PPT document Word Document Name, annotations PNG files for the big image and for thumbnail; original MDI document Multimedia Name Original multimedia file; the chunk files For slides for which some content is shared over PSOM and some is shared over HTTPS, the content that is shared over HTTPS is stored in the conference content folders. The conference 60 metadata file for the slide set stores only the link to the conference content file and the encryption key. For example, if you have a slide generated from a PowerPoint slide, under the XML node for that slide you find the: Randomly generated name for the original uploaded PPT file. Encryption key for the PPT file. Randomly generated name for the large image of the slide in PNG format. Encryption key for the PNG file. Randomly generated name for the thumbnail image of the slide in PNG format. Encryption key for the PNG file. You can use the names of these PPT and PNG files to search for the slide content in the conference content folders. Metadata File for Poll Slide The following is an example of the XML content for a Poll slide. <poll-slide name="[ Poll 1 ]" recording-id="" createdby="sip:vw01@rtcdev.nttest.contoso.com [vw01]"> <question>What day is today?</question> <choice>MON</choice> <choice>TUE</choice> <choice>WED</choice> <choice>THU</choice> <choice>FRI</choice> <choice>SAT</choice> <choice>SUN</choice> </poll-slide> Metadata file for Text Slide The following is an example of the XML content for a Text slide. <text-slide name="[ Text Slide 1 ]" recording-id="" createdby="sip:vw01@rtcdev.nttest.contoso.com [vw01]" > <current-text> 61 This is the content of a text slide I've just typed </current-text> </text-slide> Metadata File for Web Slide The following is an example of the XML content for a Web slide. <web-slide name="[ Web Slide 1 ]" recording-id="" createdby="sip:vw01@rtcdev.nttest.contoso.com [vw01]" url="http://microsoft.com"> </web-slide> Metadata File for Whiteboard Slide The following is an example of the XML content for a Whiteboard slide. <image-slide name="[ White Board 1 ]" recording-id="" createdby="sip:vw01@rtcdev.nttest.contoso.com [vw01]" image-width-attr="704" image-height-attr="528" page-number="-1" rich-slide-type="Whiteboard" thumbnail-aspect="1.33333337"> <ann COLOR="0" AUTHOR="vw01" TYPE="1" recording-id=""> 01000000000a0075007a00af007100cc009c00c000ba009d00b0009b009d00f40084011 400980116009901160099 </ann> <ann COLOR="0" AUTHOR="vw01" 62 TYPE="23" recording-id=""> 17000000009700fa01090144 </ann> </image-slide> Metadata File for Snapshot Slide The following is an example of the XML content for a Snapshot slide. <image-slide name="[ Snapshot 1 ]" recording-id="" createdby="sip:vw01@rtcdev.nttest.contoso.com [vw01]" image="x8d51284585d1.epng" key="a51fe0f3e26813761e12435a9c2c5d89" image-filesize-attr="52865" image-width-attr="388" image-height-attr="369" page-number="-1" rich-slide-type="Image" thumbnail-image="xe31d11b0506d.epng" thumbnail-key="a51fe0f3e26813761e12435a9c2c5d89" thumbnail-aspect="1.0" compliance-image="xcb4de1d7b784-aae.png"> <ann COLOR="0" AUTHOR="vw01" TYPE="1" recording-id=""> 01000000000a0075007a00af007100cc009c00c000ba009d00b0009b009d00f40084011 400980116009901160099 </ann> <ann COLOR="0" AUTHOR="vw01" 63 TYPE="23" recording-id=""> 17000000009700fa01090144 </ann> </image-slide> Metadata File for Word Document Slide The following is an example of the XML content for a Word document slide. <image-slide name="Page 1" slideset-name="test.txt" recording-id="" createdby="sip:vw01@rtcdev.nttest.contoso.com [vw01]" image="xebc7f400248d.epng" key="ce3de85a37a8a6fc6b3b702b70a1a925" image-filesize-attr="6778" image-width-attr="816" image-height-attr="1056" document="x9838edc7b0d2.emdi" document-key="8ca685d4bcfb9afe94cc27ea4bd0a2e1" document-filesize-attr="1537" rich-slide-type="Modi" thumbnail-image="x908006115ceb.epng" thumbnail-key="40d224ca035ee8f77ba9c7342da17b1b" thumbnail-aspect="0.772727251" thumbnail-filesize-attr="748" compliance-image="xf3ae96bf86cd-aag-pngimage0.png" compliance-document="xbe356497761b-aag-x.mdi"> </image-slide> Metadata File for Application Sharing Slide The following is an example of the XML content for an Application Sharing slide. <demo-slide name="Command Prompt - vw01" recording-id="" createdby=sip:vw01@rtcdev.nttest.microsoft.com [vw01] 64 shareProcInfo=sip:vw01@rtcdev.nttest.contoso.com - 01C7E74B9137AC70 shareHwnd="262300" shareSpeed="1" sharePid="4592" slideHotKey="19" slideColor="24" shareTitle="Command Prompt" slideCtrl="1" shareType="1"> </demo-slide> Handouts (File Transfers) You can think of file transfers, also known as handouts, as another type of slide set. Handouts can be considered slide sets that contain only one slide of a single type: a transferred file. The Web Conferencing Server follows the same process to save and update handout slides that it uses for other slide sets. First, the server saves two encrypted XML files for each handout. The content of the two files is the same. The second file is provided for backup purposes. The update procedure for a handout is called every five minutes. If an update operation fails, the changes made to a handout in the past five minutes are not saved. If the Web Conferencing Server stops running during this period, changes to the handout can be lost. However, the Web Conferencing Server continually tries to update the XML files every five minutes. As a result, if one attempt fails, the Web Conferencing Server can attempt to save the content later. The only differences in the save and update process for handouts are the location where the files are saved and updated, the naming convention used to name the files, and the file that keeps track of the IDs for the slide set for handouts. The files are saved under a separate subfolder (named ft) in the conference folder for the organizer. The FTMaxID files contain the last used ID. The names of the files in which the slide set information is saved take the following form: fileset-<id>.exml. The files are encrypted using the master encryption key. The file content represents the XML serialization of handout information. Because handout slides are shared over HTTPS in the XML, there is an encryption key and the randomly generated name for the file that is saved in the content folder. Metadata File for a Handout (File Transfer) The following is an example of the XML content for a handout (file transfer). <fileset name="a8f5689f4866.blb" size="37" key="48d9dd6ebe2ca367478da698493edc21" 65 UploadedOnDate="8/25/2007 12:20 PM" UploadedOn="1188069617459" UploadedBy="sip:vw01@rtcdev.contoso.microsoft.com" file_deleted="false" original_filename="test.txt" creation_date="128325431784134388" CreatedOnDate="1/18/8441 5:22 PM" modification_date="128325431917125620" ModifiedOnDate="1/20/8441 6:18 AM"> </fileset> PersistData Folder (Shared Notes) In the PersistData folder, the Web Conferencing Server stores only one file. The file contains the XML serialization of the shared notes information. The file is encrypted using the conference master encryption key. The file contains the XML serialization for rich text. Metadata File for Shared Notes The following is an example of the XML content for shared notes. <PersistentData> <ScopeManager /> <SharedNotes> <RichString> <PlainText>This is the content of the shared notes pane I've just edited </PlainText> <StyleData> <Character> <FormatTable> <Format fontface="Arial" fontsize="9.0" bold="false" italic="false" underline="false" /><Format fontface="" fontsize="9.0" bold="false" italic="false" underline="false" /> </FormatTable> <FormatRunTable> <FormatRun format="0" length="62" /> </FormatRunTable> </Character> 66 <Paragraph> <FormatTable> <Format bullets="0" numbering="0" /><Format bullets="1" numbering="0" /> <Format bullets="0" numbering="1" /> </FormatTable> <ParaFormats> <Paragraph format="0" /> </ParaFormats> </Paragraph> </StyleData> </RichString> </SharedNotes> </PersistentData> Content Folder The content folder stores the content that is shared between the Web Conferencing Server and clients using the Web Components Server. The content folders structure is similar to other subfolders. The content folder contains the following: A separate subfolder for each organizer; the folder name is a hash based on the organizer URI. Under the organizer subfolder, there is a separate folder for each conference; the folder name is the same as the conference ID. The following figure shows the structure of the content folder. 67 Conference Content Folder The conference content folder stores all the conference content that is shared between the Web Conferencing Server and meeting clients. The following figure shows the structure of the files that are stored in a conference folder. Slidefiles Folder The Slidefiles folder stores all the slide content that is shared over HTTPS. All files are encrypted using AES and a randomly generated key. A new encryption key is used for each content file. The key is stored in the metadata file (set-xxx.exml) for the slide set that includes the slide with the content that will be shared over HTTPs. The names of the files are randomly generated and stored in the same metadata file as the encryption key. The following table describes file name extensions for the types of slides that the Slidefiles folder contains. Extension Description EPNG An encrypted PNG image; for example, this can be the larger image in a PowerPoint slide or the slide thumbnail image. EPPT An encrypted original PPT document. 68 Extension Description EMDI An encrypted MDI document – the console converts the Word document into a MDI before it is sent to the Web Conferencing Server. WAV An encrypted WAV document. The following table lists the types of slides that the Slidefiles folder contains and the content each slide type contains. Slide Content Snapshot EPNG for the larger image. EPNG for the thumbnail. PowerPoint slide EPNG for the larger image. EPNG for the thumbnail. EPPT for the original PPT. (There is one copy of this file. For example, if you have a PPT with two slides, you only see a single EPPT file.) Word Document Slide EPNG for the larger image. EPNG for the thumbnail. EMID for the original MDI file. WAV WAV for the original WAV file. Chunks generated by the presenter client from original WAV file. Files Transferred Folder (ft) The ft folder stores all the handouts (transferred files) that are shared over HTTPS. All files are encrypted using AES and a randomly generated key. A new encryption key is used for each content file. The key is stored in the metadata file (fileset-xxx.exml) created for the transferred file that will be shared over HTTPS. The names of the files are randomly generated and stored in the same metadata file as the encryption key. The following table describes the file name extension for the handout slides contained in the ft folder. Extension Description BLB The encrypted transferred file 69 File Size Restrictions Size restrictions are enforced by the Web Conferencing Server for certain documents uploaded to the Web Conferencing Server, such as PowerPoint documents, Word documents, multimedia, snapshot slides, and handout slides. The following table describes the values that the Web Conferencing Server enforces. Value Description PowerPoint Documents, Handout Slides Word Documents, Multimedia, or Snapshot Slides File size The size of a file must not exceed this value. 50 MB 25 MB Total size The total size of all files in a conference must not exceed this value. 100 MB 100 MB Number of files The total number of files in a conference must not exceed this value. 8052 30000 The values for the total size and number of files refer to the files in a conference. It is recommended that you reserve 100 MB for each conference created on the Web Conferencing Server. The file restriction values can be configured using the WMI MSFT_SIPDataMCUCapabilitySetting class. File size policies are enforced each time a new slide or file is added to a conference or an existing slide or file is removed. If the presenter is trying to upload or transfer a new file that results in a violation of file size restrictions, the operation fails. The Web Conferencing Server also provides performance counters that indicate each time an upload or transfer exceeds one of these limits. Compliance If meeting compliance is enabled, compliance folders are created on the file server. The compliance folder stores the content that is shared between the Web Conferencing Server and meeting clients through the Web Components Server in a clear unencrypted format. The compliance folder structure is similar to the structure of subfolders in the metadata and content folders. The compliance folder contains the following: A subfolder for each organizer. The folder name is a hash value computed using the organizer URI. A subfolder for each conference under each organizer subfolder. The folder name is the conference ID. 70 The following figure shows the structure of the compliance folder. Ensure that only authorized users have read or write permissions and that the Web Conferencing Server has write permissions to the compliance folder. Compliance Folder The compliance folder stores unencrypted metadata and content files. The following table lists the compliance subfolders and the types of files stored in those subfolders. Subfolder Description Content Stores the copies of metadata files. Content-upload Stores the copies of content files. Chat Stores the logs for Chat sessions. Poll Stores the logs with the votes for Poll slides. Qna Stores the logs for Question and Answer sessions. Unlike the metadata and content folders, the compliance folder also stores all deleted slides. The metadata and content folders only store the most recent conference content. The following figure shows the structure of compliance subfolders. 71 72 Conferencing Scenario Call Flows in Office Communications Server 2007 R2 This section describes the logical sequence of events and call flow for various conferencing scenarios. Lock or Unlock a Conference A presenter can lock a conference at any point to prevent new users from joining or being added to the conference. When a presenter locks a conference, the client sends a SIP INFO request with a C3P modifyConferenceLock command to the Focus that includes the conference URI. The Focus performs authorization to verify that the user has privileges to lock the conference. The Focus then relays the modifyConferenceLock command to all conferencing servers. The focus then sends a C3P response to the client indicating success. The following figure shows the message flow between conferencing components when a client locks or unlocks a conference. The call flow when a presenter unlocks the conference is similar, except the locked value in the command body is set to false. Dial In to a PSTN Conference Using SIP C3P (Telephony Conferencing Server) Office Communications Server 2007 R2 enables PSTN (that is, telephone) conferences to provide the audio portion of a Web conference. Any user with a valid PIN can join a PSTN conference by dialing the audio conferencing provider. (An audio conferencing provider is a conferencing bridge offered by a telephone carrier with whom your organization has contracted.) The audio conferencing provider authorizes the PIN and sends a SIP NOTIFY to the Telephony Conferencing Server indicating that a new user is joining the conference. This NOTIFY is sent to the Focus, which then proxies the NOTIFY to all other users in the conference. 73 Note that this scenario is distinct from the new Dial-In Conferencing functionality introduced in Office Communications Server 2007 R2, where the conference resides on an Office Communications Server, as opposed to a conferencing bridge offered by a telephone carrier. When using the Office Communications Server 2007 R2 PSTN capabilities (where the conference resides on an Office Communications Server), the client simply needs to dial the PSTN access number. The Communicator 2007 R2 Attendant handles authentication and joins the PSTN user into the audio conferencing server. In order for clients to join using PSTN, the organizer client must have requested PSTN capabilities when creating a conference. The following figure shows the message flow between conferencing components when a client dials in to a PSTN conference hosted on a conferencing bridge offered by a telephone carrier. Dial Out to Device Using addUser (Audio Conferencing Provider) For a presenter to invite his own phone or another participant's phone into the conference, the presenter's client sends a SIP INFO request to the Focus with a SIP C3P addUser command. The Focus verifies that the client sending the request is a presenter, and then relays the addUser command to the conferencing server with information about the endpoint to call. (Participants cannot dial out to other users.) The conferencing server forwards the INFO message to the audio conferencing provider. The ACP responds to the conferencing server. The conferencing server forwards the response from the ACP to the Focus. The ACP calls out to the user's phone and sends a SIP NOTIFY to the conferencing server. The conferencing server sends a NOTIFY to the Focus indicating that the user has connected. The Focus then sends an updated participant list to all clients in the conference. Remove a Participant Participants can choose to leave a conference or presenters can choose to remove or eject other participants. When a participant leaves a conference, the participant's client sends a SIP INFO request to the Focus with a C3P deleteUser command indicating which participant to remove. The Focus validates the request and then sends a SIP BYE in the join dialog. The join dialog is terminated. The subscription dialog is also terminated after the join dialog is terminated. The Focus relays the deleteUser command to all conferencing servers in the conference. Each conferencing server sends a media BYE to the participant to terminate media streams to the 74 participant. The Focus sends a SIP NOTIFY with an updated participant list to all participants with an active INVITE dialog in the conference. The conferencing server sends a SIP BYE to the participant who is leaving the conference. If a presenter has removed multiple participants from the conference, the conferencing server sends a SIP BYE to all ejected participants. If a participant is joined to a conference using multiple endpoints, the conferencing server deletes each endpoint. The following figure shows the message flow between conferencing components when a participant is removed from a conference. Mute or Unmute At any time during a conference, a participant can mute or un-mute his media stream and presenters can do the same for other participants. When a participant wants to mute or unmute his audio, the participant's client sends a SIP INFO request with a C3P modifyEndpointMedia command to the Focus. The INFO request indicates the client to mute or unmute. The Focus validates the command and sends it to the conferencing server responsible for the media type that the client wants to mute or unmute. The Focus performs authorization to verify the type of participant. (Only conference presenters have the authority to submit a request to mute or unmute another participant.) If the participant is authorized to perform the mute or un-mute operation she requested, the Focus sends a 202 Accepted response. The Focus then sends a SIP INFO request with the C3P response to the client. The conferencing server sends a C3P NOTIFY to the Focus. When the Focus receives the C3P NOTIFY from the conferencing server, the Focus updates the conference participant list and sends the updated list to all participants with an active INVITE dialog in a SIP NOTIFY message. 75 If a participant connected to an Audio/Video conferencing server is muted, the Audio/Video Conferencing Server renegotiates audio media with the client so as to stop receiving audio from that client. This is done as an optimization to prevent the client from unnecessarily sending audio media that would have been dropped by the conferencing server in any case when the participant is muted. Similarly when a user is unmuted, the Audio/Video conferencing server renegotiates the audio media to now start receiving audio from that client. The following figure shows the message flow between conferencing components when a participant mutes or unmutes his media stream. Make Presenter A presenter can choose to promote any attendee to the presenter role. This is a privilege available to presenters only and is implemented using the modifyUserRoles C3P command. When a presenter promotes an attendee, the presenter's client sends a SIP INFO request to the Focus with a C3P modifyUserRoles command. The Focus validates that the participant making the request is a presenter, and then sends a 202 Accepted. The Focus relays the modifyUserRoles command to all conferencing servers to inform the conferencing servers of the change in participant role. The Focus sends a SIP INFO with the C3P response to the client that made the request. The Focus sends a SIP NOTIFY request with an updated participant list to all participants with an active INVITE dialog. The following figure shows the message flow between conferencing components when a presenter promotes another participant to the presenter role. 76 Dial-In Conferencing Scenario The following figure shows the relationships among the components that are required to support dial-in conferencing. The figure shows a single Front End Server and a single Mediation Server. In practice, there will probably be multiple load-balanced Front End Servers, each of which will be running all the shaded components, for each Enterprise Edition pool. There will also probably be multiple Mediation Servers. 77 In This Section The following topics describe these components and relationships in detail: Server-Based Dial-In Conferencing Components Client-Based Dial-in Conferencing Components 78 Call Flows Server-Based Dial-In Conferencing Components Dial-in conferencing is supported by Office Communications Server 2007 R2 Standard and Enterprise Editions, and the functionality is identical on both editions. For organizations that deploy Enterprise Edition for its greater scalability and availability, the consolidated topology is now recommended for most installations of Office Communications Server 2007 R2. For detailed information about the consolidated topology, see the Enterprise Edition Consolidated Topology section of the Microsoft Office Communications Server 2007 R2 Supported Topologies and Infrastructure Requirements guide. In a consolidated Enterprise Edition topology, each member of a pool of Front End Servers runs a set of components: the SIP Proxy/Registrar, the Focus Factory, the Conferencing Factory, all of the conferencing servers (that is, IM, Web Conferencing, A/V, and Application Sharing), and hosts two applications on the Unified Communications Application Server (Application Server) platform that are required for dial-in conferencing: the Conferencing Attendant service and the Conferencing Announcement service. Note: Conferencing Servers were formerly known as multipoint control units (MCUs): The Conferencing Server Factory is also known as the MCU Factory, the A/V Conferencing Server is the same as the AV MCU, and so on. Conferencing servers are actually services of the Microsoft Windows operating system that run as independent processes separate from the Rtcsrv.exe front-end service. In addition to the Office Communications Server 2007 R2 Front End Servers, dial-in conferencing requires at least one Mediation Server integrated with a media gateway and/or a PBX, as well as Communicator Web Access (2007 R2 release). (Communicator Web Access is required for dial-in conferencing even if you are not providing your users with a browser-based client.) Active Directory–Based Configuration Data Because nearly all of the settings that are used by dial-in conferencing apply to the entire organization, Office Communications Server 2007 R2 stores them with other global configuration data in Active Directory Domain Services (AD DS). The Active Directory schema for Office Communications Server 2007 R2 adds new Contact objects that are specific to dial-in conferencing, as well as location profile–access number contact object mappings, additional global meeting policy attributes, new Trusted Service objects for the Conferencing Attendant service and the Conferencing Announcement service, and URLs for internal and external access to the Communicator Web Access server or server farm. Contact Objects Office Communications Server 2007 R2 adds a new msRTCSIP-ApplicationContacts container class to the configuration container under the RTC Service object. Like the Subscriber Access and Auto Attendant Contact objects that are used by the Microsoft Exchange Server 2007 Unified Messaging service, these instances have an objectClass of top; person; organizationalPerson; 79 contact. Unlike the Exchange Contact objects, dial-in conferencing Contact objects are stored in the Configuration container rather than in a Domain container, and dial-in conferencing Contact objects do not appear in the Active Directory Users and Computers snap-in. Unlike users, Contact objects do not have their own authentication credentials. Services running under the identity of a Contact object must either be flagged in AD DS as trusted or else impersonate the identity of the user who called the service. There will be multiple Contact objects in this container that are related to dial-in conferencing: one for each dial-in number, plus one for the Conferencing Attendant service (CAAPrivateContactObject) and one for the Conference Announcement service of each pool. Each contact is a SIP User Agent that acts as a robotic endpoint for processing and routing dial-in conference callers and for playing conference announcements. Administrators manage dial-in contact objects using the Conferencing Attendant Properties tab of the Forest Properties dialog box in the Office Communications Server management snap-in. For each Conferencing Attendant phone number added, an Application Contact object is created that contains the phone number, the pool name affiliated with the number, a SIP URI (for example, sip:Microsoft.RTC.Applications.CAA-<GUID>@contoso.com), the primary spoken language that is played to the caller by the Conferencing Attendant service, and a list of up to four secondary languages that will be presented as alternates to users who dial into the Communicator 2007 R2 Attendant. However, the Conference Announcement Service and CAAPrivateContactObject objects are configured during product activation, and neither is exposed through the snap-in. If you change the name of your organization’s main SIP domain after you install Office Communications Server 2007 R2, you need to change the msRTCSIP-PrimaryUserAddress attribute for both objects to reflect your new primary SIP domain. (Both use the form sip:RtcApplication-<GUID>@<SIP Domain>.) You can edit this attribute by using ADSIEdit, or you can use the WBEMTest utility to edit the PrimaryURI attribute of the corresponding Windows Management Instrumentation (WMI) Conference Announcement Service and CAAPrivateContactObject instances, which are located in the MSFT_SIPApplicationContactSetting top-level class. Dial-in Contact objects cannot be shared across pools; each must be bound to an Enterprise pool or one Standard Edition server. Location Profile to Access Number Mappings Another new AD DS schema change in Office Communications Server 2007 R2 is the Location Contact Mappings container. This container contains instances of the msRTCSIPLocationContactMapping class, and each instance binds a dial-in contact to a location profile. Just as each user who is enabled for Enterprise Voice is assigned a corresponding location profile, either explicitly or by default, each Conferencing Attendant dial-in contact also must be assigned a location profile. The Regions tab of the Conferencing Attendant Properties dialog box of the Office Communications Server management snap-in is used to manage these assignments. A region is a group of dial-in access numbers that belong to single Office Communications Server Enterprise Voice location profile. Users assign a region to the dial-in meetings and conferences they create, 80 thereby setting the dial-in numbers that are used by the conference. Users who are enabled for Enterprise Voice are assigned a default region. They can, however, manually override this default, for example, if dial-in attendees would be better served by access numbers in another geographic region. Global Meeting Policy Authorizing users to create dial-in conferences is managed through the global Meeting Policy tab. This tab is not new, but in Office Communications Server 2007 R2 the schema is extended with two more settings, Enable PSTN conference dial-in and PSTN conference dial-in requires passcode. Either a single meeting policy can be assigned to all users in the organization, or different policies can be assigned to individual user accounts. These meeting policies are stored in Active Directory Domain Services as instances in the Configuration Container under Services, RTC Service, and then Policies. Each instance has an msRTSIP-PolicyContent attribute that contains flags for EnablePSTNConferencing and TrustedConferencingPinRequired. Trusted Services In addition to the Contact objects described previously, both the Conference Announcement Service and Conferencing Attendant Service are represented by multiple objects (class type = msRTCSIP-TrustedService) in the Configuration Container under Services, RTC Service, and then Trusted Services container of Active Directory Domain Services (AD DS). For each pool supporting Dial-in Conferencing services, there must be one instance of each type for each pool name (msRTCSIP-TrustedServerFQDN = <pool name FQDN>), plus instances for each server in those pools (msRTCSIP-TrustedServerFQDN = <server FQDN>). For Standard Edition servers, there are only two objects, since the pool name and server name are the same. These trusted service instances will have an RTCSIP-TrustedServiceType attribute of either Microsoft.RTC.Applications.CAA or Microsoft.RTC.Applications.CAS. Communicator Web Access URLs Communicator Web Access serves an auxiliary role for Dial-in Conferencing unrelated to its primary role as a Web server for hosting browser-based Communicator clients—to serve Web pages that are linked to by Office Communicator 2007 R2 client, the Communicator 2007 R2 Attendant, the Conferencing Add-In for Office Outlook, and the Live Meeting client. These Web pages allow users to view dial-in numbers for various locations and to provide them with an interface to reset their dial-in corporate PIN numbers and personal conference IDs. One Communicator Web Access server or server farm normally serves the Dial-in Conferencing Settings Web pages for all users across all pools, as shown in the following figure. 81 To launch this page, Office Communicator, Communicator Attendant, the Conferencing Add-In for Office Outlook, and the Live Meeting client obtain the internal and external URLs of the Communicator Web Access server from the Office Communications Server Front End Server through in-band provisioning when a user signs in. Because the Communicator Web Access path is a global rather than pool-specific setting by default, the Front End Server obtains these values from Active Directory Domain Services (AD DS) through a WMI call to MSFT_SIPGlobalCWAServerConfigSetting for the InternalURL, ExternalURL, PhoneConfURLSuffix, and WebJoinURLSuffix attributes. (In Active Directory Domain Services, these values are stored in the RTC Services, Global Settings container object as msRTCSIPDefaultCWAInternalURL, msRTCSIP-DefaultCWAExternalURL, and msRTCSIPGlobalSettingsData.) If an administrator needs to change either of the Communicator Web Access paths, he can use the Communicator Web Access administrative snap-in to republish a new path. You can also configure the Communicator Web Access URL at a pool level and this value overrides the global value. The pool level WMI property is MSFT_SIPCWAServerConfigSetting. To publish this value you need to do it manually using WBEMTest.exe and assign a GUID and back-end database path to it. Office Communications Server Front End Server Components To support conferences with dial-in users, each Office Communications Server 2007 R2 Enterprise Edition server in a consolidated front end topology runs the following required 82 components: SIP Proxy, Conferencing Attendant, Conference Announcement Service, Focus Factory, Conferencing Server Factory, and the Audio/Video Conferencing Server. A Standard Edition server runs the same components, but it uses a local SQL Server Express Edition database rather than a remote SQL Server database. The Focus Factory is responsible for handling conference creation and deletion, and stores this information in the back-end database. After a conference is activated, it is hosted by a Focus instance, which manages conference state, user roles, and privileges; enforces security; and provides conference state to participating clients. The Conferencing Server Factory provisions conferencing servers (that is, MCUs) as requested by the Focus and manages their state during the duration of the conference. Even though each pool server in a consolidated topology runs all of these components, many operate in their own process space. Although the Focus will always be running on the same server as the Conferencing Server Factory that is managing the conferencing servers for the meeting, the Conferencing Attendant, Conference Announcement Service, and A/V Conferencing Server can be running on other Front End Servers in the pool. This architecture allows individual server roles and unified communications applications to be load-balanced independently of one another. For example, in a load balanced pool consisting of five servers, a dial-in caller coming into the system from a Mediation Server could be routed by the SIP Proxy service on Server1 to the Conferencing Attendant running on Server2, which then hands off the caller to the meeting’s Focus running on Server3, which in turn connects the caller’s audio to an A/V Conferencing Server running on Server4, which is being monitored and announced by a Conference Announcement Service running on Server5. In fact, the Conferencing Attendant Service that answers a dial-in attendee might be running in a pool separate from the one that hosts the meeting. If one of these services became unavailable, the load balancer would detect the failure and redirect new service requests to one of the other pool servers. If one of those servers fails or is taken offline during a conference already in progress, Office Communications Server can detect the failure and regenerate the terminated component (in the case of the Focus) or assign the conference to another conferencing server in the pool and reconnect participants. The sections that follow describe in more detail the role each application or server role plays in supporting Dial-in Conferencing. Conferencing Attendant The Communicator 2007 R2 Attendant is an auto-attendant service (a bot) that authenticates and joins dial-in participants to audio conferences. Communicator 2007 R2 Attendant supports 14 different languages. The Conferencing Attendant prompts the caller for Conference IDs and passcodes (if calling in as an anonymous participant) or extension number and PIN (if joining as a Enterprise User), plays on-hold music when enterprise users have not yet joined the meeting, requests authentication from a front-end service, and joins authenticated callers to the Focus and A/V Conferencing Server for the requested Conference ID. The Conferencing Attendant Service on each Front End Server listens on TCP port 5072 for incoming calls. These requests normally come from a Mediation Server and are proxied by the 83 Mediation Server’s next hop pool. If a load balancer is used, it listens on TCP port 5072 as well and redirects requests to a Conferencing Attendant service running on one of the pool servers. There are only a few pool-level settings stored in the back-end SQL Server database. The Office Communications Server administrative snap-in exposes the settings for minimum PIN length, retry lockout count, and PIN aging policy settings through the PSTN Conferencing tab in the Front End Properties dialog box of the selected pool. These settings can also be accessed through the MSFT_SIPPSTNConferencingSetting WMI object, in addition to the PINExpiration, PINLength, and PINRetries property values. Note: The pool-level MSFT_SIPPSTNConferencingSetting WMI object also contains values for InternalURL and ExternalURL properties. These last two settings are left-over artifacts of an earlier development build and can be disregarded. They refer to a Web component named PhoneConferencing that was used during development and did not get removed from the final release of Office Communications Server 2007 R2 product. This component is visible from the Internet Information Services (IIS) Manager connected to Front End servers, but it is superfluous. Conferencing Announcement Service The Conference Announcement Service is another trusted bot that participates in all dial-in enabled audio conferences. It monitors the conference roster and plays entry and exit tones to all dial-in attendees when other dial-in attendees join or leave, and also tells attendees when their microphone has been muted or unmuted in the language that they chose when they connected to Communicator 2007 R2 Attendant. No configuration is required for this service. The Conference Announcement Service on each Front End Server listens on TCP port 5073 for requests from a Focus that is running on one of the Front End Servers in the pool. If a load balancer is used, it also listens on TCP port 5063 and redirects requests to the Conferencing Attendant service on one of the pool servers. Focus Factory The Focus Factory is responsible for scheduling meetings and writing them to the back-end database. When a user creates a new meeting, the meeting client sends a SIP SERVICE message to a Focus Factory, which creates a new instance of the meeting in the database and returns information about the newly created meeting to the client. The Focus Factory functionality has been enhanced in Office Communications Server 2007 R2 to support dial-in conferences. When a client (which could be Office Communicator, the Conferencing Add-in for Outlook, or the Live Meeting client) creates a scheduled or unscheduled meeting, if the meeting creator requests and is permitted to include dial-in participants, the Front End Server communicates with a Focus Factory to generate a dial-in Conference ID. Conference IDs are short numeric conference identifiers that are entered by dial-in attendees (by using the phone keypad) to indicate the meeting that they want to join. Conference IDs consist of a non-unique pool ID concatenated with a unique portion generated by the hosting pool when the 84 meeting is created. The pool portion of the Conference ID routes the dial-in caller to the specific pool where the meeting is hosted. Although Meeting IDs (16 to 32 character hexadecimal identifiers used in the Conference URI to uniquely identify meetings), the short Conference IDs of expired conferences can be reused and are unique only within the scope of a single Office Communications Server organization. The mappings between the Conference IDs and Meeting IDs are stored in the RTC database. Users do not normally need to enter Meeting IDs manually, but dial-in users manually enter Conference IDs using their keypads to tell the Conferencing Attendant Service which meeting they want to join. The overall length of Conference IDs not fixed and will expand as needed to support the number of pools in the organization and the number of unexpired meetings in the pool, and the pool portion (that is, the pool ID) will be at least two digits. As a minimum security consideration to minimize effortless guessing of consecutive Conference IDs, after the complete conference ID is generated, it is obfuscated by Office Communications Server (that is, the number the user sees cannot be parsed into a pool portion and a meeting portion). The Conference ID is generated at the home pool of the user who schedules it, and it designates the pool that will host the meeting. However, since the conference creator’s pool always hosts the conference, this means that conference IDs must be released and reissued whenever a conference’s creator has been moved to another pool. This action is automatically taken by Office Communications Server. Unlike Meeting IDs, Conference IDs may be reused after the conference mapped to has been deleted or moved. The Front End Server passes the Conference ID back to the conference client, where it is conveyed to dial-in participants through some other means, such as in an e-mail message. Focus An instance of the Focus for each active meeting exists on one of the servers in the pool that is hosting the meeting, and it maintains the conference state and can be monitored by other components. For example, the Conference Announcement Service monitors the Focus to determine when users arrive or leave the meeting and when users have been muted or unmuted. The Focus publishes the meeting roster, which has been updated in Office Communications Server 2007 R2 to include dial-in callers. If the caller has an Active Directory Domain Services account and has provided his or her extension number and corporate PIN, he or she will be listed in the roster lists of Live Meeting clients under the display name assigned to their user account. However, if the caller has provided only the Conference ID (and passcode if required), he or she will be listed in the roster by Caller ID (if the number is passed to the Mediation Server by the PBX or gateway). If not, such callers will be listed as Unidentified Participant 1, Unidentified Participant 2, and so forth. From the roster list in the Live Meeting client, presenters can forcibly mute, unmute, and eject dial-in participants just as if they were Live Meeting client users. 85 Conferencing Server Factory Although the Conferencing Server Factory is essential to support dial-in conferencing by provisioning the A/V Conferencing Server that is needed for the meeting, it does not exhibit any special behavior when dial-in conferencing attendees are involved. Audio/Video Conferencing Server An A/V Conferencing Server acts as a relay hub for audio and video used by the meetings assigned to it. Dial-in callers appear to the A/V Conferencing Server as just another audio endpoint. After a dial-in caller has been authenticated, the Conferencing Attendant signals the A/V Conferencing Server in the pool hosting the meeting to establish an audio leg with the Mediation server handling the dial-in participant. When a dial-in user is connected to the A/V Conferencing Server, it in turn invites a Conference Announcement Service in its pool to the meeting (unless one is already running), which in turn joins the Focus as a trusted participant. The Conference Announcement Service monitors the Focus, and announces certain state change events to all dial-in participants, such as when a participant enters or leaves the meeting, or to individual dial-in participants, such as when his or her microphone has been muted. Mediation Servers In order for the Dial-in Conferencing feature to service PSTN callers, the organization must have either one or more Mediation Servers connected to the PSTN using a Media Gateway connected to the PSTN or to a PBX, or Direct SIP Integration with a PBX or external SIP Trunking service provider. As with Enterprise Voice user Direct Inward Dialing (DID) numbers and Exchange Auto Attendant and Subscriber Access numbers, calls from the PSTN to the published dial-in access numbers must also be routed to a Mediation Server. Inbound routing normalizes the called-party number according to the default location profile rules on the Mediation Server and routes calls to the address of the next-hop pool. No special Mediation Server configuration is required to support dial-in conferencing, but the normalization rules for the Mediation Server’s default location profile must normalize the dialed number to a form (typically E.164) matching the Line URI of a Conferencing Attendant contact object. Routing of Conferencing Attendant contact numbers to a Mediation Server may also require additional routing rules on the PBX and/or Media Gateway if the phone number patterns differ from those of Enterprise Voice users (or if Enterprise Voice has not been deployed). When planning for dial-in conferencing, keep in mind that each dial-in user will consume a channel on a trunk connecting the PBX and/or Media Gateway to the PSTN. For organizations who size their number of PSTN trunks and Mediation servers to accommodate normal levels of inbound and outbound call volumes, this means they may not be able to support large numbers of dial-in users; however, for such meetings they could still use an audio conferencing provider (ACP) or the Web-hosted Live Meeting Service. In Office Communications Server 2007 R2, it is not possible to link an ACP conferencing bridge to an Office Communications Server A/V Conferencing Server. 86 Communicator Web Access Server As noted earlier, the 2007 R2 release of Communicator Web Access serves a role in dial-in conferencing that is unrelated to its primary role of hosting a browser-based client for Office Communications Server. Using the InternalURL and ExternalURL attributes of the MSFT_SIPGlobalCWAServerConfigSetting object, which are provisioned to the client during sign-in, the Office Communicator, Outlook Conferencing Add-In, and Live Meeting clients expose links to new Communicator Web Access Web pages that display dial-in access numbers for various locations and languages and that give users an interface to reset their personal dial-in conference codes and PIN numbers. Piggy-backing this functionality on Communicator Web Access spares Office Communications Server customers from dedicating a separate server to this role and—because the function is used very lightly—it does not significantly degrade overall Communicator Web Access performance. This approach also makes it easier for organizations to provide Internet-based access to these Web pages, because most organizations that deploy Communicator Web Access also publish the service to the Internet. The Dial-in Conferencing Settings Web site is accessed by appending /dialin to the internal or external Communicator Web Access URLs. The site consists of two separate pages: Publish Dial-in Conference Numbers. The home page of the Dial-in Conferencing Settings Web site. This page does not require authentication and is read-only. It publishes the Conferencing Attendant access numbers for various languages and regions, and the page itself is available in 14 languages. (Support for non-English versions of the page requires installation of the Communicator Web Access Multilanguage Pack.) Change per-user dial-in settings. From the Dial-in Conferencing Settings home page, a user can click a sign-in link that brings up a site that enables him or her to reset dial-in conference PIN numbers and personal conference IDs. This page is available in the same languages as the home page. Communicator Web Access does not store data locally. All dial-in conferencing data is extracted from the pool that is assigned to the logged-on user, which retrieves data from the pool’s database and from Active Directory Domain Services (AD DS). Note: Communicator Web Access support for dial-in conferencing is also unrelated to the new PSTN dial-out feature, which allows Communicator Web Access users to participate in voice calls by calling them back on a PSTN phone or PBX extension. Client-Based Dial-in Conferencing Components To create a dial-in–enabled meeting, the user must be authorized and be using the 2007 R2 release of the Microsoft Conferencing Add-in for Microsoft Office Outlook, or the Live Meeting client. 87 Conferencing Add-in for Microsoft Office Outlook The 2007 R2 release of the Conferencing Add-in for Microsoft Office Outlook has some new functionality for scheduling dial-in conferences. Users can connect directly from Outlook to the Dial-In Conferencing Settings Web page on the Communicator Web Access server. Meeting creators can enable dial-in conferencing as an audio option. When Outlook starts, the internal and external URLs of the Communicator Web Access server are provisioned to Outlook from the pool by using the connection information that is configured in the Live Meeting client. When the Outlook user selects Dial-In Conferencing Settings from the Conferencing menu, Outlook first tries to open the \dialin site on the external URL of the Communicator Web Access server. If this fails, then it retries on the internal URL. To enable dial-in conferencing for users, the meeting creator must enable dial-in conferencing for the meeting using the Conferencing Add-in Audio options menu. When an Outlook user clicks Schedule a Live Meeting, the client makes a SIP request to the user’s pool stipulating that it wants to schedule a dial-in enabled meeting and generates a 32character hexadecimal Meeting ID. The pool checks that it has the capability to support a dial-in meeting and obtains from the Focus Factory the dial-in numbers that are assigned to the user’s pool, a Conference ID, and sends it back to the client. The Add-in inserts this information into the meeting invitation. If the meeting is set to allow anonymous participants and if meeting policy mandates use of passcodes or if the meeting creator chooses to use one, the client will also generate a random passcode and send it (encrypted) to the Focus Factory. This passcode is also included in the meeting invitation. If the Outlook clicks Schedules a Conference Call (instead of a Live Meeting) and the invitation’s audio option is set to Use my assigned conference ID for each conference, the same process occurs, except that the conference ID and passcode (if mandated by meeting policy) are the ones that were previously generated by the Dial-In Conferencing Settings Web site. The result will be an audio-only meeting, to which non-phone participants access using Office Communicator instead of Live Meeting. If the audio option is Use a new conference ID for each conference, the Focus Factory will assigna new Conference ID. Live Meeting Client The Meet Now feature of the Live Meeting 2007 client enables users to create unscheduled conferences that support dial-in users. If dial-in conferencing is enabled, the Focus Factory assigns the meeting a Conference ID and the client generates a random passcode (if forced by meeting policy or if the meeting creator chooses to use one). This information, and the dial-in numbers, is displayed in the client when the meeting organizer clicks View Call-In Details on the Meeting list or on the Options menu of the Voice & Video list. However, unlike the Conferencing Add-In for Outlook, the Live Meeting client does not automatically distribute this information to participants. Even if the meeting organizer 88 uses the By E-mail menu option in the client (under the Attendees menu, under Invite) to create an e-mail invitation, the organizer must manually insert the meeting’s dial-in information into the body of the message. Office Communicator Although Office Communicator 2007 R2 does not provide a means for users to create scheduled meetings, it does enable users to create unscheduled audio/video meetings. However, Office Communicator does not contain provisions for inviting dial-in attendees to these meetings. (Office Communicator-based participants can use the client’s dial-out feature to add phone users to these meetings.) Nevertheless, Office Communicator users can click a menu option that links them to the Communicator Web Access server to view and modify their dial-in conferencing settings. Office Communicator obtains the internal and external Communicator Web Access URLs using in-band provisioning upon sign-in and uses these to open the Dial-In Conferencing Settings Web page in a separate browser window. Call Flows There are two separate flows to dial-in conferencing: creating a dial-in conferencing–enabled meeting and joining the meeting as a dial-in participant. Meeting Set-up Office Communications Server 2007 R2 introduces a new Centralized Conference Control Protocol (C3P) command: getConferencingCapabilities. The client sends a SIP SERVICE request containing a getConferencingCapabilities request to the Focus Factory to discover capabilities of the hosting pool. The Focus Factory returns information that the client uses to form AddConference and ModifyConference requests. For dial-in conferencing to be offered to the person scheduling the meeting, the Pstn-bridging Enabled value must be set to True. The client will use this information when it issues subsequent AddConference and ModifyConference SERVICE requests. To create an Anonymous-Allowed Live Meeting with Dial-In Conferencing support 1. The client (that is, either the Conferencing Add-In for Outlook for scheduled meetings or the LiveMeeting client for unscheduled meetings) sends a SIP SERVICE request containing a GetConferencingCapabilities request that gets proxied to a Focus Factory globally-routable User Agent URI (GRUU) in the pool where the user is homed. 2. The Focus Factory extracts meeting capability information from its database and returns the information to the client. This information includes all of the dial-in conferencing dial-in access numbers categorized by region. The user’s location profile region determines the access numbers for the conference. 89 3. The client sends a SIP SERVICE request containing an AddConference request to the Focus Factory with an msci:pstn-access attribute tag. If the user’s Meeting Policy requires that anonymous meetings have passcodes, the client generates a passcode, encrypts it, and sends it as part of the request. 4. The Focus Factory creates a meeting instance in the pool database, assigns it a Conference ID, and then returns this information to the client. A SIP SERVICE GetConference request to the Focus Factory is required to complete the meeting creation process. 5. If the meeting is scheduled from the Conferencing Add-in for Outlook, the user sends a meeting invitation that contains the dial-in information to the other attendees. If the meeting is created by using the Meet Now button in the Live Meeting client, the meeting creator has to copy the dial-in information and send it to other attendees by using an instant message or an e-mail message. The following figure shows the sequence of data exchanges between the components involved. Connecting to the Meeting Authenticated Office Communicator and Live Meeting users (including federated users) who have a computer with audio capability can connect to the conference as they did in Office Communications Server 2007. Assuming dial-in attendees call in from the PSTN on an ISDN-PRI trunk that is connected to the hosting organization’s PBX and a media gateway is employed in the solution, the call flow for joining the meeting is as follows: 1. The first Office Communicator or Live Meeting–based attendee joins the meeting, which activates the meeting and causes RTCSrv.exe to instantiate a meeting Focus on a Front End Server in the pool that is hosting the meeting. The Focus, in turn, requests the Conferencing Server Factory on that server to assign an A/V Conferencing Server to the meeting (and other Conferencing Servers). 2. A dial-in attendee dials the conference access number listed in his or her e-mail invitation, and the PSTN routes the call to the organization’s PBX. 90 3. The PBX uses the called-party number to route the call to the media gateway. The media gateway then transforms the call from ISDN-PRI to SIP/RTP and routes the call to an Office Communications Server Mediation Server. (The media gateway may not be required if the organization has an IP-PBX that can transform the call from ISDN-PRI to SIP/RTP and route the call directly to the Mediation Server.) 4. If the number passed to the Mediation Server is not in E.164 format, the configured next-hop Office Communications Server Front End (that is, SIP proxy) server performs inbound normalization by using the Mediation Server’s default location profile. It performs a reverse number lookup against the user database on the normalized called number and finds a match with the Conferencing Attendant contact object’s msRTCSIP Line URI. 5. The Front End Server routes the call to the Conferencing Attendant Service on the pool bound to the Conferencing Attendant Contact object. 6. The Conferencing Attendant Service on that pool automatically answers the call, and a Secure Real-time Transport Protocol (SRTP) media connection is established between the Mediation Server and the Conferencing Attendant Service. 7. The Conferencing Attendant Service prompts anonymous users for their conference IDs and passcodes (if assigned), or if the user is an enterprise user (that is, has an identity in the Active Directory Domain Services) the user’s extension number and PIN. The following flow chart illustrates the prompt sequence that the Conferencing Attendant service follows. Callers enter responses from their phone keypad. 91 8. The Conferencing Attendant Service passes the Conference ID back to the Front End Server in a SIP SERVICE request. The Front End Server looks up the conference ID from the database and responds back to the Conferencing Attendant Service with the conference URI of the Focus, the meeting ID, and the organizer’s SIP address. 9. The Conferencing Attendant requests and encryption key from the Focus. If the caller is an Enterprise User, the Conferencing Attendant encrypts the caller’s internal phone extension and PIN and sends it in a request to the Front End Server to validate the caller’s identity. If the caller is an anonymous user and a passcode is required, the Conferencing Attendant sends the passcode (encrypted) to the Front End Server for validation. 10. If an enterprise user has not yet entered the meeting and the caller is joining the meeting as an anonymous attendee, the Conferencing Attendant Service plays its on-hold music to the caller until an enterprise user joins the conference. 92 11. When user authentication is complete, the Conferencing Attendant adds the user to the Focus (which adds the user in the meeting rosters of on-line participants), and the Focus adds the user to the A/V Conferencing Server. The A/V Conferencing Server invites the Mediation Server and establishes an audio connection with it, and tells the Mediation Server to drop its connection with the Conferencing Attendant. 12. When the first dial-in user joins the meeting, the A/V Conferencing Server invites a Conferencing Announcement Service in its pool and a media connection is established between it and the A/V Conferencing Server. (This step is done only once for any particular meeting.) The Conferencing Announcement Service is trusted by the Focus and by the A/V Conferencing Server, so additional authentication is not required. The Conferencing Announcement Server joins the Focus and listens for state changes. It plays an entry tone for other dial-in participants to announce that a participant has just joined or left the meeting, and it plays a spoken announcement message for each dial-in participant when that participant’s line has been muted or unmuted. The following diagram shows a simplified call flow on an anonymous user dialing into a meeting that requires a passcode. In this example, the Conferencing Attendant is in the same pool as the meeting Focus. 93 If the appropriate normalization and routing rules are in place in Office Communications Server, the PBX, and media gateway, then PBX phones can also be used to access dial-in conferences in the same manner. Office Communicator Phone Edition device users can also be used to dial into meetings, and since they have already authenticated, they only need enter the Conference ID and they are never placed on hold. 94 Desktop Sharing Scenario Microsoft Office Communications Server 2007 R2 includes a new feature, desktop sharing, which allows others to view a user’s entire desktop remotely and, with the user’s permission, to take control of the user’s mouse and keyboard. The inclusion of this feature may seem puzzling to those familiar with the history of the product, because the on-premises Live Meeting feature introduced in Office Communications Server 2007 already includes this capability and much more, and this functionality remains available with Office Communications Server 2007 R2. There are several reasons for adding a new separate desktop sharing feature: Microsoft already has a very mature and efficient technology in which it continues to invest and develop, the Remote Desktop Protocol (RDP), already at the core of the Remote Assistance, Remote Desktop, and Terminal Services features of the Microsoft Windows operating system. However, the Live Meeting technology used in Office Communications Server uses a legacy application sharing protocol rather than RDP. In Office Communications Server 2007 R2, Microsoft has begun a transition toward adopting RDP as the universal protocol for application sharing (of which desktop sharing is a subset) for Office Communications Server. To use the Live Meeting application sharing feature, users had to install the full Live Meeting client. Even though it is available from Microsoft as a free download, in many cases— particularly for external participants who were not employees of the organization—installing this client by end users could be problematic and time consuming, and without prior familiarity it sometimes confused users. Furthermore, since the Live Meeting client ran only on Windows, Apple Macintosh and Linux users were unable to participate in these meetings. If the Live Meeting session was between only two participants, application sharing traffic was still relayed by a Web Conferencing Server (formerly known as a multipoint control unit or MCU). Additionally, if both users were connecting from the Internet, each packet of desktop sharing data had to traverse the Web Conferencing Edge Server twice. This architecture imposed unnecessary workloads on these servers when the viewing/sharing traffic need only communicate directly between the two endpoints. Users often want to add desktop sharing to an existing Office Communicator-based voice call or multiparty meeting, but because the Share Information Using Live Meeting menu option in Office Communicator launched a new client, it often created confusion as to which of the two clients was controlling the audio/video. The approach taken in Office Communications Server 2007 R2 was to leave the on-premises Live Meeting capability as it was in the 2007 release but to add a new entirely separate desktop sharing feature that gives users an easier and more efficient way to share their entire desktop remotely with others. Office Communications Server 2007 R2 also adds Web browser–based desktop sharing support for users who do not have any Office Communications Server client, even anonymous (unauthenticated) users connecting from the Internet. This section of the Office Communications Server 2007 R2 Technical Reference explores in detail the architecture and protocol flows of the desktop sharing feature. The following information can be useful in troubleshooting and correcting problems: 95 Note: Documentation for end users of desktop sharing is available at http://go.microsoft.com/fwlink/?linkid=145800. By default, the Office Communications Server 2007 R2 documentation installer file (UCDocumentation.msi) installs this document to the %ProgramFiles%\Microsoft Office Communications Server 2007 R2\Documentation\Dial-in Conferencing folder on the user’s computer. In This Section This section includes the following topics: Office Communications Server 2007 R2 Desktop Sharing Architecture Desktop Sharing Call Flows Office Communications Server 2007 R2 Desktop Sharing Architecture To support desktop sharing, Office Communications Server 2007 R2 introduces several new or enhanced architectural components: Application Sharing Conferencing Server. The Application Sharing Conferencing Server runs as a service on each Front End Server in a consolidated front-end topology and acts as a relay hub for desktop sharing sessions involving more than two participants or Communicator Web Access clients. Furthermore, the Conferencing Server Factory and Focus have been enhanced to communicate with and manage the Application Sharing Conferencing Server. Enhanced Office Communicator client. Office Communicator 2007 R2 includes RDP client and server support and adds user interface elements for launching, viewing, and taking control of desktop sharing sessions. Enhanced Communicator Web Access Server. With Communicator Web Access (2007 R2 release), anyone with a supported browser can join a desktop sharing session. Communicator Web Access now supports anonymous users, which allows them to send and receive instant messages and view the meeting roster in addition to viewing the shared desktop. Add-On for Communicator Web Access. New add-ons for the Internet Explorer and Firefox (for Windows) browsers gives users without the desktop Office Communicator client the ability to share their desktop with others. These components are discussed in detail in the sections that follow. Architectural Overview The following figure shows how the components that support desktop sharing communicate with each other. 96 Protocols Used By Desktop Sharing Similar to how Office Communications Server handles audio and video, desktop sharing uses SIP for session control, but it uses a different protocol to carry the media—in this case, display data and keyboard and mouse inputs. 97 HTTPS/C3P In the same way as with other types of meetings, inter-server control communications between the Focus, the Application Sharing Conferencing Server, and the Conferencing Server Factory occur over HTTPS/C3P over TCP Port 444. SIP/SDP and SIP/C3P The Office Communicator client and the Communicator Web Access server use SDP and C3P commands embedded in SIP messages in order to initiate and respond to desktop sharing requests. If the session is between only two parties and both are using Office Communicator, one or more SIP proxies relay the control traffic to the other client. As with IM or audio/video, if three or more participants are in the meeting, it becomes a conference, and the Focus Factory generates a Focus for the meeting and assigns it a conference URI. The Focus is instantiated as a SIP User Agent on one of the Front End Servers of the pool assigned to the person who initiated the meeting. When a user initiates a multiparty meeting flagged for desktop sharing or when a user in a multiparty IM session escalates it to include desktop sharing, the Focus uses HTTP/C3P to request an Application Sharing Conferencing Server for the meeting from the Conferencing Server Factory, after which desktop sharing sessions between all participating clients and the Application Sharing Conferencing Server can be established. Note: If one or both of the participants in a two-party desktop sharing session are using Communicator Web Access as a client, the call is treated as a conference and incorporates a Focus and an Application Sharing Conferencing Server. RDP After the control information for the desktop sharing session has been exchanged and sharing has been initiated, the Remote Desktop Protocol (RDP) carries the stream of bitmaps (or JPEG images, in the case of Communicator Web Access communicating with the Application Sharing Conferencing Server) from the sharer’s desktop to the other meeting participants. If another participant takes control, RDP carries the controller’s keyboard and mouse inputs back to the sharer’s desktop. SRTP/SRTCP Because desktop sharing was designed to support peer-to-peer sharing when the session is between only two parties, it faces the same challenges as audio/video media with network address translation (NAT) devices and communication between endpoints on the internal network and others on the Internet. To address this issue, Microsoft decided to use the same Office Communications Server infrastructure to handle both audio/video data and desktop sharing data. This infrastructure includes the Interactive Connectivity Establishment (ICE) support built into the Office Communicator clients and the Office Communications Server Edge Server, and the use of Secure Real-time Protocol (SRTP) and Secure Real-time Control Protocol (SRTCP) for carrying the data, which in the desktop sharing case is RDP data instead of RTAudio or RTVideo media. 98 Encapsulating RDP in SRTP packets means that desktop sharing can reuse a great deal of existing functionality and security already implemented in Office Communications Server and Office Communicator to support audio and video, and it means that Edge Servers require no additional functionality to support desktop sharing with remote and federated users. However, RDP-over-SRTP differs from RTAudio/RTVideo-over-RTP in that the underlying transport protocol for SRTP is always TCP rather than the UDP normally used for audio and video streams. This choice also means that much of the packet overhead imposed by SRTP/SRTCP provides little or no benefit to the RDP data that is carried over it. For example, SRTP/SRTCP provides sequence numbering and delivery monitoring, which duplicates a process already handled by the TCP transport, and RTP/RTCP time stamping function (to allow synchronization and jitter calculation) is unnecessary because desktop sharing can tolerate much more latency and dropped packets than voice/video and still remain intelligible. Note: If the Security Settings under the Pool Properties:Media menu for pools are set to Do not support encryption, both A/V and desktop sharing data to and from users and Conferencing Servers in that pool will tunnel through RTP/RTCP rather than SRTP/SRTCP. Although RTP/RTCP provides all the same functions as SRTP/SRTCP sans encryption, this means that desktop sharing data carried over RTP/RTCP is no longer inherently secure from eavesdropping. Even though RDP offers native encryption (enabled by default on Windows server and client operating systems), RDP encryption is turned off in Office Communications Server 2007 R2 and Office Communicator 2007 R2 to eliminate the overhead of needless double-encryption. HTTPS/AJAX DHTML Because desktop sharing is designed to support browser-based clients on a variety of operating systems, Communicator Web Access renders desktop sharing data into AJAX-based Dynamic HTML so that it can be displayed on a variety of browsers and operating system platforms without requiring special add-ins. Users can even send keyboard and mouse movements back to the Communicator Web Access server over DHTML, thereby enabling them to remotely control sharer’s desktops without needing an RDP client. However, to share display data from a browser connected to Communicator Web Access, the browser must be running a special add-on that provides the required RDP-over-RTP and ICE support. At present this add-on is available only for Internet Explorer and Firefox for Windows. Desktop Sharing Components The following section discusses the key components of Desktop Sharing in more depth. Application Sharing Conferencing Server As with the other Office Communications Server Conferencing Servers (for example, IM, Web Conferencing, A/V, and Telephony Conferencing), the Application Sharing Conferencing Server (Asmcusvc.exe) is a Windows service that runs on each front end server in a consolidated topology independently of the Front End Service (RTCSRV.EXE) that hosts the SIP Proxy, 99 Registrar, Focus Factory, and Focus instances. In an Enterprise pool, the hardware load balancer distributes requests for an Application Sharing Conferencing Server, which listens on TCP port 5065, among the pool servers. An Application Sharing Conferencing Server is used only when the application sharing session contains three or more participants or whenever one of the participants is using Communicator Web Access. An Application Sharing Conferencing Server communicates with clients, whether Office Communicator or Communicator Web Access, using SIP/SDP and SIP/C3P for signaling and RDP-over-SRTP for the display and remote control data. The SIP communications are secured by MTLS, and they use the same SSL server certificate that is assigned to the Front End Server. As with A/V traffic, the RDP/SRTP traffic does not use a certificate and instead uses Advanced Encryption Standard (AES) and a shared key, which is negotiated and exchanged securely over the signaling channel, to encrypt and decrypt the RDP traffic that it transports. The Application Sharing Conferencing Server also communicates with the Focus and Conferencing Server Factory over HTTPS/C3P using the same SSL certificate that is assigned to the other Office Communications Server services on the Front End Server. The Application Sharing Conferencing Server retrieves its configuration data by using Windows Management Instrumentation (WMI), but the only configurable settings for the service are the listening port and IP address, the range of media ports that RTP/SRTP can use, the maximum number of users across all meetings, the maximum number of meetings, and the maximum meeting size. Focus and Conferencing Server Factory The Office Communications Server 2007 R2 Focus and Conferencing Server Factory have been updated to be aware of the Application Sharing Conferencing Server and to communicate with it in the same manner as the other conferencing servers, primarily over HTTPS/C3P. Office Communicator Office Communicator 2007 R2 has been extended to support desktop sharing so that users can participate in desktop sharing sessions without installing the Live Meeting client or any special plug-ins, and if the user has been assigned a global meeting policy that includes the Enable Program and Desktop Sharing option, there is nothing more for the user or the administrator to do. Because Office Communicator 2007 R2 is an ICE-enabled client, it can find the most efficient way to establish peer-to-peer desktop sharing sessions with other Office Communicator 2007 R2 clients. The new version of Office Communicator also adds RDP support needed for desktop sharing. (This RDP support is completely independent of the RDP support in Windows.) The user interface for invoking and responding to desktop sharing is described in the Office Communicator Help and in the Office Communicator 2007 R2 Technical Reference. 100 Communicator Web Access Microsoft has extensively enhanced the 2007 R2 release of Communicator Web Access in order to provide support for participants who do not have access to a computer with either the Office Communicator or Live Meeting client. The addition of dial-in and dial-out conferencing allows users with access to a phone to participate in the audio portion of Office Communicator-based meetings, and new anonymous sign-in support in Communicator Web Access desktop sharing allows even an anonymous user with access to a browser to participate in online meetings that involve desktop sharing (if permitted by Office Communications Server global Meeting policy). In order to support Macintosh and Linux users, Communicator Web Access displays the sharer’s desktop in the user’s browser window using AJAX Dynamic HTML (DHTML) over HTTPS. The Communicator Web Access server gets the sharer’s RDP stream from the Application Sharing Conferencing Server, which knows it is communicating with a Communicator Web Access Server and converts the bitmaps normally used for Office Communicator viewing into JPEG format before streaming them to the Communicator Web Access server over RDP/SRTP (there is only one stream no matter how many users viewing the particular desktop sharing session are connected to that Communicator Web Access server). The Communicator Web Access server translates this stream into AJAX DHTML and sends it over HTTPS to each participating browser, thereby enabling many non-Windows systems to display it properly. (The JPEG conversion that occurs on the Application Sharing Conferencing Server is the reason why two-party calls involving a Communicator Web Access client do not route desktop viewing and control data directly to the other client.) In addition to viewing shared desktops, users connecting from any supported browser can also take control of the sharer’s desktop (that is, if permission has been granted by the sharer) without requiring any special browser add-ins or controls. In order to view desktop sharing sessions from Internet Explorer or Firefox, the client computer needs to resolve two DNS CNAMES, as.<CWAserverFQDN> and download.<CWAserverFQDN>. This requirement exists because these browsers will open no more than two connections per URL (for example, https://cwa.contoso.com); however, for optimum performance, desktop viewing requires additional open connections. The two CNAME records allow the browsers to open four more connections. If Communicator Web Access is published to the Internet, the external DNS must be able to resolve these CNAME records to the IP address of the reverse proxy relaying external traffic to the Communicator Web Access server. Furthermore, because the connections to the Communicator Web Access server or its associated reverse proxy are over HTTPS, the certificates on both servers must include the two CNAMES in its Subject Alternate Name (SAN) field. To allow users without Active Directory credentials to join the meeting, Communicator Web Access was also enhanced in Office Communications Server 2007 R2 to support anonymous sign-in upon receipt of a meeting invitation, and these participants get the same access to the roster, IM, and desktop sharing capabilities as do authenticated users. If the organization has 101 published Communicator Web Access to the Internet, then users with any of the supported Web browsers can view desktop sharing sessions over the Internet. Add-On for Internet Explorer and Firefox for Windows If a meeting participant who is using Communicator Web Access wants to share his or her desktop, he or she must be using Windows XP SP2 or Vista and either Internet Explorer 6 SP2, Internet Explorer 7, or Firefox 3.0.x with the CWAPlugin.exe add-on installed on it. This add-on provides the required support for ICE, SRTP/SRTCP, and RDP. If the user’s computer does not already have this add-on, upon the user’s first attempt to share their desktop the browser will prompt him or her to download it from the Communicator Web Access server as shown in the following: The user interface of the add-on setup program is available in 15 different languages. By default, the browser’s current language setting will determine the language that the user sees. Users do not need to have administrative privileges to install the add-in, but on Vista systems, the user must have User Account Control enabled. After CWAPlugin.exe is downloaded, it installs and registers a set of files into the user’s Windows profile. CWAPlugin.exe registers the AppSharingHostClass and AsVersionQueryClass ActiveX controls in Internet Explorer or the npCwaAppSh.dll plug-in in Firefox. Note: The add-on is not supported on 64-bit versions of Internet Explorer; users of 64-bit Windows must launch the 32-bit version of Internet Explorer in order to install and use the add-in. The add-on does not install on Windows Server 2008. Following are the browser management dialog boxes that indicate (in highlight) successful installation (the one on the left is for Internet Explorer and the right for Firefox). 102 The add-in files get installed into the user’s Windows profile as shown in the following (the installation folder for Internet Explorer is shown in the top screen shot and the Firefox install folder in the bottom screen shot). 103 From Office Communicator, if you have multiple monitors you can choose to share just one monitor. However, when using the Communicator Web Access with the browser add-in on a computer with multiple monitors, you have to share your entire desktop across all monitors. Desktop Sharing Call Flows The following topics describe how the signaling and media flows are established in several basic desktop sharing examples. Creating a Desktop Sharing Conference As noted earlier, a desktop sharing session between two Office Communicator clients is a peerto-peer session from the point of view of the RTP remote display and keyboard/mouse data; however, SIP control data still is proxied by each user’s Front End Server. The following figure shows a call flow between two Office Communicator clients. Both clients in the example are on the internal network, and both belong to the same Office Communications Server pool. The clients have already established an IM session with each other, and then User1 clicks the Share Desktop control. This action causes User1’s Office Communicator client to send a SIP INVITE message containing the following Session Description Protocol (SDP) data, including a list of ICE candidates, to User2’s Office Communicator client to indicate that User1 wants to share his or her desktop with User2: 104 v=0 o=- 0 0 IN IP4 192.168.100.20 s=session c=IN IP4 192.168.100.20 b=CT:99980 t=0 0 m=applicationsharing 4636 TCP/RTP/AVP 127 a=ice-ufrag:Ze3C a=ice-pwd:s0a6z9xeF6+wQvu6lCDen9oG a=candidate:1 1 TCP-PASS 2120613887 192.168.100.20 18608 typ host a=candidate:1 2 TCP-PASS 2120613374 192.168.100.20 18608 typ host a=candidate:2 1 TCP-ACT 2121006591 192.168.100.20 4636 typ host a=candidate:2 2 TCP-ACT 2121006078 192.168.100.20 4636 typ host a=cryptoscale:1 client AES_CM_128_HMAC_SHA1_80 inline:7Qze/34RrnOBYwHVlcXWGdmlBYX7yvehzzoV4k3p|2^31|1:1 a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:3t/fXZ5Fjho3/lkMea1c2xNhTfJxYGAM2KU/VGdu|2^31|1:1 a=setup:active a=connection:new a=rtcp:4636 a=mid:1 a=rtpmap:127 x-data/90000 a=x-applicationsharing-session-id:1 a=x-applicationsharing-role:sharer a=x-applicationsharing-media-type:rdp If User2 accepts the invite, his or her Office Communicator client sends back an OK with a list of ICE candidates. Both clients evaluate the ICE candidate pairs. User1 then sends a new SIP INVITE message containing the winning IP address for his or her computer, and User2 returns a 200 OK message with the winning IP address for his or her computer. By using this information, the two Office Communicator clients establish an SRTP session over TCP between the two negotiated endpoints, and User1 sends an RDP stream that mirrors his or her desktop to User2 over the SRTP channel. Adding a User to a Desktop Sharing Conference Continuing on with this same example, User1 needs to add a third participant, User3, to the existing desktop sharing meeting with User2. (In this example, User3 is also in the same pool as User1 and User2.) User1 clicks the Invite button, clicks Invite a Contact, and then clicks User3. 105 At this point, the meeting must transition from a peer-to-peer session to a multiparty conference, with IM traffic routed through an IM Conferencing Server and the desktop sharing traffic through an Application Sharing Conferencing Server. This transition starts when User1’s client sends a SIP SERVICE message to its Front End service specifying a new conference ID and a request for a Focus and conferencing servers for the possible meeting modalities (IM, Web conferencing, A/V conferencing, and application sharing). The Focus Factory provisions a meeting Focus and writes it to the back-end database. User1 then sends a SIP INVITE to the Focus. The Front End Server instantiates the Focus on one of the Front End Servers in its pool, which in turn communicates with an Conferencing Server Factory in that pool to have specific conferencing servers assigned to it. In this example, only the IM Conferencing Server and the Application Sharing Conferencing Server are required. The Focus communicates with both, adds a conference to each, and then registers a channel in each for User1. Meanwhile, User1’s client sends a SIP SUBSCRIBE message to the Focus, which returns the details of the conference. Subsequent SIP INFO messages sent to the Focus return additional provisioning data to User1’s client. At this point User1’s client send a SIP INVITE message to the IM Conferencing Server, thereby establishing a session with it, and it also sends a SIP INVITE to the Application Sharing Conferencing Server containing an SDP message with its ICE candidates. As described earlier for the peer-to-peer session, User1’s client and the Application Sharing Conferencing Server evaluate the candidates, after which User1’s client sends a new SIP INVITE message containing its winning candidate and the Application Sharing Conferencing Server then replies with its winning candidate. The SRTP session is then established over TCP between the two negotiated endpoints. Next, User1’s client sends a new SIP INVITE message, which contains the URI of the meeting Focus, to User2’s client. User 1’s client also exchanges SIP BYE messages with Client2, causing it to drop the earlier TCP/SRTP/RDP session. Now User2’s client sends a SIP INVITE to the Focus, obtains the conference information, and requests that the Focus add User2 to the IM Conferencing Server and the Application Sharing Conferencing Server. User2’s client sends a SIP SUBSCRIBE request to the Focus and then invites the IM Conferencing Server and the Application Sharing Conferencing Server in the same manner as User1’s client. In the last stage of the process, User1’s client sends a SIP INVITE message, which contains the URI of the meeting Focus to User3’s client, and then ends the session with a SIP BYE. User3’s client uses the obtained URI to send a SIP INVITE message to the Focus and joins the meeting and conferencing servers in exactly the same way as User2’s client did. As this point, all three users are connected to the Focus, the IM Conferencing Server, and the Application Sharing Conferencing Server. User1 is sharing his or her desktop, which is sent over the TCP/SRTP channel to the Application Sharing Conferencing Server, where it is repeated back to the clients of User2 and User3. The Focus publishes the meeting roster to the clients, which now shows User1 currently sharing his or her desktop. 106 Note: In the following diagrams, the SIP ACKs and some other traffic have been skipped for readability. 107 Desktop Sharing Session Control The user who initiates desktop sharing has full control over his or her computer, and by default the other participants can only view the shared desktop or selected monitor. If the sharer wants to give another participant control, he or she can give that individual control, while other participants can only view the desktop. The user who initiates sharing can also choose to share control with all participants, but there is no way to allow a subset of participants to have control; it is granted either to one participant at a time or to all participants. If the sharer clicks Share Control with All Participants, it requires communication and cooperation between the participants, because any attendee can seize control at any time. The sharer, however, can rescind shared control at any time, which again gives him or her sole control of the desktop. The following flow chart shows how control of sharing works. 108 Office Communications Server 2007 R2 permits only one participant’s desktop to be shared at a time. If another participant shares his or her desktop, the original sharer’s desktop session is closed and replaced by a view of the new sharer’s desktop. This is not something the meeting leader can control. All meeting participants whose meeting policy settings include Enable program and desktop sharing can cause an existing sharing session to terminate and be replaced with their own shared desktop or monitor. 109 Note: Communicator Web Access users have a similar sharing and remote control experience, except that users with multiple monitors cannot select a single monitor; they can share their entire desktop only. Also, the sharer’s assigned meeting policy determines whether anonymous users can take control of his or her desktop. Communicator Web Access Scenario Communicator Web Access (2007 R2 release) is a browser-based application that provides access to the instant messaging (IM), audio, and desktop sharing capabilities of Office Communications Server 2007 R2. Using only an Internet connection and a Web browser, Communicator Web Access enables you to take advantage of Office Communications Server 2007 R2 features even when you are away from your personal computer. Communicator Web Access is similar to Office Communicator 2007 R2, making it easy to switch between the two applications. Both applications provide you access to the same contact list and similar IM, call management, and desktop sharing capabilities. Audio functions in Communicator Web Access (2007 R2 release) enable you to place voice calls to both yourself and a remote contact by using the Office Communications Server 2007 R2 to create an audio channel for conferencing. In This Section This section contains the following topics: Functionality Overview Communicator Web Access Core Architecture Communicator Web Access Audio Note: Communicator Web Access (2007 R2 release) includes desktop sharing. Communicator Web Access users can share their main monitor with other Communicator Web Access users or with Office Communicator 2007 R2 users. For details about desktop sharing, including the Communicator Web Access (2007 R2 release) desktop sharing scenario, see Desktop Sharing Scenario. Functionality Overview Communicator Web Access (2007 R2 release) improves communication for branch office employees, or business travelers and telecommuters who work at Internet kiosks, which effectively reduces geographic barriers that can hinder productivity. Communicator Web Access provides instant messaging (IM), presence, audio dial out, and desktop sharing capability for users when they are away from the office. The experience of using the browser-based Communicator Web Access is similar to using the desktop-based Office Communicator 2007 R2. The functionality of the Communicator Web Access (2007 R2 release) focuses on presence information, IM, desktop sharing, and dial-out experience to ensure usability across as many platforms and browsers as possible. Users can still use tools such as corporate directory integration, support for distribution groups, and the ability to manage contact lists. 110 The desktop sharing capability gives users the ability to share their desktop on a Windows-based computer. Anyone who is a part of the desktop sharing sessions can be given access to view and control the desktop, which means that the flexibility to work as a team is not hindered by distance. Resizing and panning controls enable participants to view the conversation in comfort and audio dialogue can be added to the sharing sessions. Communicator Web Access can also place the call for the user. The Communicator Web Access servers are deployed within the corporate network and form part of the Office Communications Server 2007 R2 deployment. No Active Directory schema extensions are required when you deploy Communicator Web Access. In This Section New Communicator Web Access Features Office Communicator and Web Access Feature Comparison New Communicator Web Access Features Communicator Web Access (2007 R2 release) and Office Communicator 2007 R2 provide the following new features: Collaborate with external organizations. Communicator Web Access (2007 R2 release) provides customers and business partners outside of your organization the ability to join conferencing and collaboration sessions easily and inexpensively. Invite anyone with a Web browser to join a conversation that you are hosting, share your desktop with a vendor to discuss a project, or start a conference call with a stakeholder and route the call to your mobile device. Desktop sharing. Users can see everything happening on someone else’s computer, and can even be given the right to control that computer. People running Microsoft Windows and a supported Web browser can share their desktops with others. Anyone running a supported Web browser (including people using Macintosh or Linux computers) can view and control a shared desktop. Dial-out conference audio. You can add audio conferencing (that is, using standard telephones, including cell phones) to any existing instant messaging (IM) or desktop sharing session. You supply the names of each person to take part in the audio conference, and Communicator Web Access calls each person, and sets up and manages the conference call. Support for distribution groups. Users can add distribution groups to their contact list and exchange instant messages with all (or some) of the members of those groups. Customize the login screen and links. Your IT department has the ability to customize login screen and links. Support for browsers other than Internet Explorer. While not strictly a new feature, the list of alternate browsers is expanded in Communicator Web Access (2007 R2 release). The following table outlines the supported browsers. 111 Table 1. Supported Browsers Operating system Browser Microsoft Windows 2000 with Service Pack 4 (SP4) Internet Explorer 6.0 with SP1 Windows XP with SP2 Internet Explorer 6.0 with SP2 Internet Explorer 7.0 Firefox 3.0.X Internet Explorer 7.0 Firefox 3.0.X Safari 1.3.X Firefox 3.0.X Safari 1.3.X Firefox 3.0.X Red Hat Linux 2.16 Firefox 3.0.X HP UX Firefox 3.0.X IBM AIX Firefox 3.0.X Sun Solaris Firefox 3.0.X Windows Vista Macintosh OS 10.3.9 Macintosh OS 10.5.4 Office Communicator and Web Access Feature Comparison Office Communicator Web Access (2007 R2 release) and the Office Communicator 2007 R2 client have many of the same features. However, the feature set is not an exact duplication. By familiarizing yourself with the differences between them, you can troubleshoot more effectively, and provide better user support and training. Feature Comparison Feature Office Communicator 2007 R2 Communicator Web Access (2007 R2 release) Rich presence Yes Yes Call forwarding Yes Yes Instant messaging Yes Yes Click-to-call audio Yes No 112 Feature Office Communicator 2007 R2 Communicator Web Access (2007 R2 release) Audio conferencing Yes Yes Anonymous join Yes Yes Attendant console support Yes Yes Admin support Yes No Response group support Yes No Team Call Yes Yes Video Yes No Live Meeting Yes No Distribution groups Yes Yes Extensible tabs Yes Yes Custom logon screen and menus No Yes Custom authentication No Yes Zero download No Yes Non-Windows/across platforms no Yes Call deflection Yes Yes Location Yes No Custom states Yes Yes Personal note Yes Yes Contact card Yes Yes Public instant messaging (IM) connectivity Yes Yes Federation Yes Yes Suggestive search Yes No Outlook contact search Yes No Global address list (GAL) contact search Yes, using Address Book Server Yes, using Active Directory Desktop sharing Yes Yes 113 Communicator Web Access Core Architecture Communicator Web Access (2007 R2 release) is comprised of three main components: the zero download browser-based client, the application logic layer, and the Unified Communications Managed Application Interface (UCMA) layer. The application logic layer and the UCMA layer are hosted on the Communicator Web Access (2007 R2 release) server and form a web site that is hosted by Internet Information Server (IIS) 6.0 or 7.0. The Communicator Web Access (2007 R2 release) server is a middle tier between the browser client and the Office Communications Server 2007 R2 pool. The Communicator Web Access server does not provide any functionality without the pool. Users with accounts homed on an Office Communications Server 2007 pool are not supported. However, you can configure the Communicator Web Access (2007 R2 release) server to redirect users who are homed on an Office Communications Server 2007 pool to a Communicator Web Access (2007 release) server. IIS provides the authentication services for Communicator Web Access (2007 R2 release). IIS provides this service either through integrated authentication in the case of a domain-joined workstation or through forms-based authentication in the case of an external user, or Safari or Firefox users. Communicator Web Access (2007 R2 release) server does not provide authentication services. After the authentication token is passed from IIS to the Communicator Web Access (2007 R2 release) server, the server does not attempt or perform any further authentication. When the client browser contacts the Communicator Web Access (2007 R2 release) Web site, a compressed JavaScript client is downloaded from the Communicator Web Access (2007 R2 release) server (that is, by using IIS) to the client browser. In the case of a domain-joined workstation that uses Internet Explorer, integrated authentication occurs. In the case of a nondomain joined Windows-based workstation that uses Internet Explorer, Safari, or Firefox, the client displays a forms-based authentication screen where the user enters a valid Session Initiation Protocol (SIP) address and password. The client browser must accept pop-up windows from the Communicator Web Access (2007 R2 release) server. As can be seen in the following figure, the Communicator Web Access (2007 R2 release) server is a virtual Web site that is hosted by an IIS server. The browser-based client communicates with IIS through the HTTPS protocol. The IIS passes the data packets to the client communication component which translates the incoming XML packet and sends the packet to the application logic layer. The application logic layer performs actions based on the XML header and, through the UCMA, passes those results to the Office Communications Server 2007 R2 pool through SIP. The path from the pool server to the client is the reverse as follows: pool to UCMA, UCMA to the application logic layer, application logic layer to the client communication component, and finally through HTTPS to the browser-based client. 114 Figure 1. Communicator Web Access (2007 R2 release) server architecture The Communicator Web Access (2007 R2 release) server components are nearly stateless. The application logic layer maintains persistent states for the HTTPS to client link and the (that is, through the UCMA) registered user endpoints. The client posts a Get request after each receive packet to establish the ability for the server to send more data without a specific client request. The Get request is necessary so that the server can send the browser client data, such as conversation requests or contact list presence changes. The open Get request cycle is controlled by the Communicator Web Access (2007 R2 release) server load control function which can request that clients delay posting the next open Get request. 115 UCMA Layer Functions The UCMA layer of the Communicator Web Access (2007 R2 release) server uses the UCMA application programming interface (API) to do the following: Create and manage all of the communications between the Communicator Web Access (2007 R2 release) server and the Office Communications Server 2007 R2 pool. Create and manage a UserEndpoint, registered with the Office Communications Server 2007 R2 pool, for each user of the Communicator Web Access (2007 R2 release) server. Create and manage all sessions, such as IM sessions, between the users of the Communicator Web Access (2007 R2 release) server and the Office Communications Server 2007 R2 pool. Subscribe to presence information about the user (that is, self information) and the user’s contacts. Publish presence information on behalf of the users of the Communicator Web Access (2007 R2 release) server. Application Logic Layer Functions The application logic layer is a translator between the pool and the Asynchronous JavaScript And XML (AJAX) and facilitates communication with the JavaScript client. The application logic layer provides the following basic functions: Registers user endpoint. Logically, the Office Communications Server 2007 R2 pool sees the application logic layer user endpoint as the client, not the actual client on the browser. Manages proxy client communications to and from the pool. The client browser is never in direct contact with the Office Communications Server 2007 R2 pool. Maintains the registered user endpoint for each user connected to Communicator Web Access 2007 R2. The UserEndpoint is the object that the Communicator Web Access (2007 R2 release) server uses to support all the operations between the client running in the user’s browser and the Office Communications Server 2007 R2 pool. The UserEndpoint is used to do the following: Subscribe to the self-presence information for the registered user, including: List of contacts Published phone numbers Call handling settings (that is, forwarding, simultaneous ring, and so on) Publish presence information for the user. Register for incoming session requests from the Office Communications Server 2007 R2 server. Create outgoing sessions requested by the client using their browser. The Communicator Web Access (2007 R2 release) server attempts to minimize the amount of state that it maintains for each registered user. As requests and data are received by the application layer from the Office Communications Server 2007 R2 pool, they are forwarded to the 116 user’s browser session. As requests and data are received from the user’s browser session, they are forwarded to the Office Communications Server 2007 R2 pool. Client Functions The client functionality for Communicator Web Access (2007 R2 release) is implemented by a set of JavaScript libraries that are downloaded to the browser when the user’s session with the Communicator Web Access (2007 R2 release) server starts. These code libraries are sent from the Communicator Web Access (2007 R2 release) server in a compressed form to the browser and provide the communications functions and logic of the Communicator Web Access (2007 R2 release) client. The libraries also provide the user interface (UI) of the Communicator Web Access (2007 R2 release) client along with the DHTML in the Web pages. The following figure shows the architecture of the browser-based client. All communication with the Communicator Web Access (2007 R2 release) server is by HTTPS. The data packets are XML. The overall layout has three layers: the proxy layer, the data and logic layer, and the UI layer. The UI layer consists of the visual components that are presented to the user in the form of browser windows. The sole exception to this paradigm is the system alert which appears in the form of a small pane sliding open from the system tray. 117 Figure 2. Communicator Web Access (2007 R2 release) client architecture The proxy Layer is the only component of the client to communicate with the server. It is responsible for sending HTTP requests and receiving HTTP responses from the server. The data and logic layer is responsible for managing data and logic for the user endpoint. The UI layer provides all user input and screen that the user sees. The client provides all user interface functions. After the user logs on, the client performs the following actions automatically with requiring user input: The client uses the registered user endpoint to publish a set of endpoint capabilities with the Office Communications Server 2007 R2 pool. The client requests self data from the pool. Self data includes contacts, end points, client configuration, and calendar data. 118 The data and logic layer consists of the user session, the presence manager, the contact list manager, the options manager, the conversation manager, the system alert manager, the search manager, and the component store. In the UI layer, there is a one-to-one relationship between the UI component and the manager in the data and logic layer. For Example, the system alert manager controls the UI system alerts and included functions, and the conversation manager affects the UI conversation window. A use case example of an IM conversation would use the server communicator (proxy layer), the user session, the presence manager (that is, to report to the pool that the user state has changed), and then the component store invokes the conversation manager, which opens a conversation window. During the course of the conversation, if the user receives a data packet that needs open a system alert to notify the user of an audio call, the component store will invoke the system alert manager which then opens a system alert. In each case where you use the component store to control the UI experience, the headers in the data packet contain information from Office Communications Server 2007 R2 that determine which function is being called, while the data and logic layer determines how to respond to the XML packet header. The previous conversation example is duplicated for each component manager. The XML packet is received, the XML header indicates the action(s) to be taken, and the component store either triggers a new conversation instance or adds components to the existing conversation windows. Communicator Web Access Audio There are two basic audio scenarios for Communicator Web Access (2007 R2 release). Both of the following scenarios enable Communicator Web Access (2007 R2 release) to control audio calls, although Communicator Web Access (2007 R2 release) clients do not have audio capability: Scenario 1: Enterprise Voice-enabled Communicator Web Access (2007 R2 release) user has an incoming voice call.Office Communications Server 2007 R2 forks the call to all registered endpoints. The Communicator Web Access (2007 R2 release) endpoint that is maintained in the Communicator Web Access (2007 R2 release) data logic layer is a valid registered endpoint, but the Communicator Web Access (2007 R2 release) client cannot perform audio function. Therefore, when the data logic layer in Communicator Web Access (2007 R2 release) receives the call notification, the data logic layer shows the user a system alert with call deflection options that are obtained from self-data and the data logic layer enables the user to input a custom number. The path through the client is proxy layer, user session, component store, system alert manager, and finally the system alert. The data logic layer receives the response from the client and passes this data back to Office Communications Server 2007 R2, which takes the action dictated by the user. The calling party is placed on hold for the amount of time that it takes to respond to the system alert. After the data packet from the client is returned to the data logic layer, the data logic layer passes the data back to the Office Communications Server 2007 R2 pool for action. Scenario 2: Communicator Web Access (2007 R2 release) user with an open instant messaging (IM) conference wants to add audio.From an existing IM conference, the 119 Communicator Web Access (2007 R2 release) user adds audio. The user selects a number from the displayed self-data or the user enters a custom number. The client sends this information along with the request to add audio to the Communicator Web Access (2007 R2 release) data logic layer. The data logic layer signals to the other conference users that audio is being added and it takes one of the following actions: If the called party is Enterprise Voice, the connection is made to a valid registered endpoint or to an Office Communicator instance. If the called party is a Communicator Web Access (2007 R2 release) user, the Communicator Web Access (2007 R2 release) server invokes the call deflection scenario. Office Communications Server 2007 R2 can call any global or local number that is allowed by the Communicator Web Access (2007 R2 release) user’s location profile. For example, if the Communicator Web Access (2007 R2 release) user inputs a telephone number that is not reachable by Office Communications Server 2007 R2 because of routing restrictions or phone usages, the call fails. In This Section This section contains the following topics: Communicator Web Access Audio Scenarios Call Deflection Session Initiation Protocol (SIP) Tracing Add Audio Session Initiation Protocol (SIP) Tracing Communicator Web Access Audio Scenarios Communicator Web Access (2007 R2 release) does not support the initiation of a direct audio call from the contact list or any direct audio device. Communicator Web Access (2007 R2 release) supports the following two-party and multiparty audio scenarios. Each scenario is accomplished with either call deflection or adding audio to an existing conversation. Several scenarios are outlined to show that Communicator Web Access (2007 R2 release) participates in the scenarios even though there is no action taken by the Communicator Web Access (2007 R2 release) user. Communicator Web Access (2007 R2 release) can also add instant messaging (IM) or desktop sharing to existing audio. However, this action results in two completely different sessions: one for the original audio and one for the new IM or desktop sharing session. Each scenario is illustrated as a conversation between an Office Communicator 2007 R2 client (or clients) and a Communicator Web Access (2007 R2 release) session. Two-Party Audio Scenario Receive new two-party audio only call (call deflection): If Office Communicator 2007 R2 calls a Communicator Web Access (2007 R2 release) user, the Communicator Web Access (2007 R2 release) user sees the audio system alert and can select to redirect the call to a phone device. The redirected call is sent to the phone device and has no association with Communicator Web Access (2007 R2 release) after the redirection. The redirection selection list comes from the Office Communications Server 2007 R2 user self-information data. The user may also enter a 120 custom number. In either case, Office Communications Server 2007 R2 must be able to place calls to the redirection number. If the user enters a phone number that is not allowed due to location profile, phone usages, or route settings, the call fails. Receive request to add audio conversation to an existing IM-only conversation (call deflection): Communicator Web Access (2007 R2 release) is in an existing IM conversation with Office Communicator 2007 R2. Office Communicator 2007 R2 adds audio. Communicator Web Access (2007 R2 release) receives an audio system alert. Communicator Web Access (2007 R2 release) user can choose to redirect the audio call to a phone device. The redirected call is not associated with Communicator Web Access 2007 R2 after deflection. The Communicator Web Access (2007 R2 release) presence does not change to In a Call. In existing two-party audio conversation and the other user adds IM: Communicator Web Access (2007 R2 release) is in an existing audio conversation where the Communicator Web Access (2007 R2 release) user is on cell phone (that is, with no associated conversation window) with an Office Communicator 2007 R2 user. The Office Communicator 2007 R2 user sees the Communicator Web Access (2007 R2 release) user in his roster and chooses to add IM. Communicator Web Access (2007 R2 release) user sees a system alert and a conversation window opens with the instant message. The audio conversation window and the Communicator Web Access (2007 R2 release) IM conversation are not associated. There is no connection in Communicator Web Access between the original audio conversation and the new IM window. Communicator Web Access (2007 R2 release) user is in an existing two-party audio conversation and sends IM to the other user: A Communicator Web Access (2007 R2 release) user is in an existing two-party audio conversation with Office Communicator 2007 R2. The Communicator Web Access (2007 R2 release) user now wants to communicate with the same Office Communicator 2007 R2 user by using IM. The Communicator Web Access (2007 R2 release) finds the Office Communicator 2007 R2 user in the contact list and clicks to start IM. The Office Communicator 2007 R2 user sees a new window open for the new IM invitation. The Office Communicator 2007 R2 user has two windows open with the Communicator Web Access (2007 R2 release) user. There is no connection in Communicator Web Access between the original audio conversation and the new IM window. Conference (Multiparty) Audio Scenario Initiate three or more party audio-only conference from the contact list (add audio): A Communicator Web Access (2007 R2 release) user can initiate an audio conference from the contact list by multi-selecting two or more contacts in the contact list. After choosing the conference members, the Communicator Web Access (2007 R2 release) user can select the phone icon, and direct Office Communications Server 2007 R2 to call the selected phone number to initiate the audio portion of the conference. After the audio call is placed to the Communicator Web Access (2007 R2 release) user, the other participants are invited to join the audio conference. Add audio to existing IM-only conference (add audio): A Communicator Web Access (2007 R2 release) user is in a conference with other users where IM is the only modality. The Communicator Web Access (2007 R2 release) user wants to add audio to the conference. The Communicator Web Access (2007 R2 release) user clicks the phone icon to add audio. An audio 121 setup pane appears where the Communicator Web Access (2007 R2 release) user selects the self-information phone number he wants to use. The Office Communicator Server 2007 R2 A/V conferencing server initiates the audio call to the Communicator Web Access user and sends audio invitations to the other participants. Receive new audio-only conference invitation (call deflection): Communicator Web Access (2007 R2 release) user can receive and join an audio-only conference. The Communicator Web Access (2007 R2 release) user can select which phone number she wants to use for the conference by selecting the number from the conference system alert. A conversation window appears with all of the conference participants in the roster. The Communicator Web Access (2007 R2 release) user’s phone rings and the user can communicate by using audio with all of the conference participants. Receive request to add audio to existing IM-only conference (call deflection): A Communicator Web Access (2007 R2 release) user is in an existing IM-only conference and a participant in the conference adds audio. The Communicator Web Access (2007 R2 release) user receives an audio system alert. The Communicator Web Access (2007 R2 release) user accepts the call by specifying a self-information phone number to receive the call. There is no connection between the original IM conversation and the new audio call. Receive new audio and IM conference invitation (call deflection): The Communicator Web Access (2007 R2 release) user receives an invitation to join a conference with IM and audio. The system alert is a conference system alert that enables the Communicator Web Access (2007 R2 release) user to join the conference. In the conference window, under join audio conference, the Communicator Web Access (2007 R2 release) user selects one of the self-information phone numbers from which he wants to redirect the audio call. IM is also enabled. Receive new audio, IM, and application sharing conference invitation (call deflection): Other than the addition of the desktop sharing feature, this scenario is identical in function to the previous scenario. Escalation In an existing two-party audio conversation and the Office Communicator 2007 R2 user adds another participant: A Communicator Web Access (2007 R2 release) user is in an existing two-party audio conversation with an Office Communicator 2007 R2 user. The Office Communicator 2007 R2 user is using the rich client Voice over Internet Protocol (VoIP) functions and the Communicator Web Access (2007 R2 release) user is on a phone device (that is, there is no Communicator Web Access (2007 R2 release) UI associated with the call). The Office Communicator 2007 R2 user sees the Communicator Web Access (2007 R2 release) user in her roster as joined to the audio conversation. The Office Communicator 2007 R2 user chooses to add another participant to the audio conversation. The other participant is successfully added and joined to the audio conversation. All three participants appear in the Office Communicator 2007 R2 user’s roster and they can all hear each other. In this scenario, the Communicator Web Access (2007 R2 release) user takes no action and the Office Communications Server 2007 R2 A/V conferencing server is controlling the audio bridge that allows the audio conference to reach all participants. 122 In existing two-party audio conversation and Office Communicator 2007 R2 user adds desktop sharing: The Communicator Web Access (2007 R2 release) user is in existing twoparty audio conversation with an Office Communicator 2007 R2 user. The Communicator Web Access (2007 R2 release) user is on a phone device and the Office Communicator 2007 R2 user is terminating audio through Office Communicator 2007 R2. The Office Communicator 2007 R2 user sees the Communicator Web Access (2007 R2 release) user in the roster. The Office Communicator 2007 R2 user chooses to add desktop sharing to the conversation. The Communicator Web Access (2007 R2 release) user sees a system alert for desktop sharing and clicks the system alert to accept the invitation. The Communicator Web Access (2007 R2 release) user sees a browser open with the Office Communicator 2007 R2 user and himself listed in the roster. The audio call is still active and there is no connection between the audio call and the desktop sharing session. The Office Communicator 2007 R2 user now adds another participant: The Communicator Web Access (2007 R2 release) user is using a phone device for an audio conversation with the Office Communicator 2007 R2 user and has a browser window open for desktop sharing with the same Office Communicator 2007 R2 user. Now a third person is invited to the application sharing session. The third person is joined to the audio conversation and desktop sharing session. All three users can speak with each other. As noted previously, the Communicator Web Access (2007 R2 release) user takes no action and the audio conversation and the desktop sharing session have no connection. The Communicator Web Access (2007 R2 release) user adds another participant: The Communicator Web Access (2007 R2 release) user adds another participant to the audio conversation and desktop sharing session. The Focus Factory knows that audio and desktop sharing are enabled, so the Focus Factory sends the appropriate invitations to the new participant. The new participant is joined to the audio conversation and desktop sharing session. Communicator Web Access (2007 R2 release) still does not connect the audio conversation and the desktop sharing session. Call Deflection Session Initiation Protocol (SIP) Tracing The following Session Initiation Protocol (SIP) packets illustrate the pertinent data between an Office Communications Server 2007 R2 pool Front End Server and a Communicator Web Access (2007 R2 release) server for the call deflection scenario. The Communicator Web Access (2007 R2 release) user deflects the incoming call to voice mail. All incoming calls to Communicator Web Access (2007 R2 release) sessions meet this scenario. An audio call is forked to all valid endpoints. Regardless of the source of the call, if the incoming call is directed at the Communicator Web Access (2007 R2 release) session, the deflection scenario is valid. Call Deflection SIP Tracing Scenario In this scenario, a Communicator Web Access (2007 R2 release) session exists. User1 is on Communicator Web Access (2007 R2 release) and User2 is on Office Communicator 2007 R2. User2 on Office Communicator 2007 R2 initiates an audio call to a phone number. An invitation from Office Communicator 2007 R2 is sent to the pool Front End Server. 123 TL_INFO(TF_PROTOffice Communicator 2007 R2 OL) [1]0A2C.0A9C::06/22/2009-17:58:48.922.0009935d (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018A2F9 Direction: incoming Peer: 192.0.2.143:1331 Message-Type: request Start-Line: INVITE sip:+12065550101@litwareinc.com;user=phone SIP/2.0 From: <sip:User2@litwareinc.com>;tag=ea1b3cab6b;epid=213be0ea4a To: <sip:+12065550101@litwareinc.com;user=phone> CSeq: 1 INVITE Call-ID: a9c2eb61a37944979e6ba90adbf869ce Via: SIP/2.0/TLS 192.0.2.143:1331 Max-Forwards: 70 Contact: <sip:User2@litwareinc.com;opaque=user:epid:Ub31lldjtFyGH5ijiRSAgAA;gruu> User-Agent: UCCAPI/3.5.6907.9 Office Communicator 2007 R2 /3.5.6907.34 (Microsoft Office Communicator 2007 R2) Ms-Conversation-ID: AcnzYxWcvyhU/nzkQQK09Es13ht5ug== Supported: timer Supported: histinfo Supported: ms-safe-transfer Supported: ms-sender Supported: ms-early-media Supported: Replaces Supported: 100rel ms-keep-alive: UAC;hop-hop=yes Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE, REfront end R, NOTIFY, BENOTIFY, OPTIONS P-Preferred-Identity: <sip:User2@litwareinc.com>, <tel:+14255550190> Supported: ms-conf-invite Proxy-Authorization: Kerberos qop="auth", realm="SIP Communications Service", opaque="24C84179", targetname="sip/ocs.litwareinc.com", crand="2137c1d9", cnum="73", 124 response="602306092a864886f71201020201011100ffffffff1e132d0f694dca10627 59f1ba2b2538c" Content-Type: multipart/alternative;boundary="---=_NextPart_000_0A41_01C9F328.696A8600" Content-Length: 4786 Message-Body: ------=_NextPart_000_0A41_01C9F328.696A8600 Content-Type: application/sdp $$end_record The pool server determines that the phone number is a contact, and that the only registered endpoint is Communicator Web Access (2007 R2 release). The pool Front End Server sends the invitation to Communicator Web Access (2007 R2 release). In a situation where there is more than one registered endpoint, the Front End Server forks the call to all valid endpoints. In this case, Communicator Web Access (2007 R2 release) is the only endpoint. TL_INFO(TF_PROTOffice Communicator 2007 R2 OL) [1]0A2C.0A9C::06/22/2009-17:58:48.953.0009939f (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018A302 Direction: outgoing Peer: cwa.litwareinc.com:5061 Message-Type: request Start-Line: INVITE sip:cwa.litwareinc.com:5061;transport=Tls;msopaque=303a446bf296e5e2 SIP/2.0 From: "User2"<sip:User2@litwareinc.com>;tag=ea1b3cab6b;epid=213be0ea4a To: <sip:+12065550101@litwareinc.com;user=phone>;epid=454BF77D78 CSeq: 1 INVITE Call-ID: a9c2eb61a37944979e6ba90adbf869ce ms-user-data: ms-publiccloud=true;ms-federation=true Record-Route: <sip:ocs.litwareinc.com:5061;transport=tls;opaque=state:T:F;lr>;tag=04E 32C63BB6B7CF14891AD3423F629A0 Via: SIP/2.0/TLS 192.168.5.28:2507;branch=z9hG4bK41780D13.6D1B53BD01D5FDC8;branched=TRUE Max-Forwards: 69 ms-application-via: backend_token;ms-server=ocs.litwareinc.com;mspool=ocs.litwareinc.com;ms-application=AB072FF0-C918-424c-AC127C100E91front end 3E 125 Content-Length: 4786 Via: SIP/2.0/TLS 192.0.2.143:1331;ms-received-port=1331;ms-receivedcid=58200 P-Asserted-Identity: "User2"<sip:User2@litwareinc.com>,<tel:+14255550190> Contact: <sip:User2@litwareinc.com;opaque=user:epid:Ub31lldjtFyGH5ijiRSAgAA;gruu> User-Agent: UCCAPI/3.5.6907.9 Office Communicator 2007 R2 /3.5.6907.34 (Microsoft Office Communicator 2007 R2) Ms-Conversation-ID: AcnzYxWcvyhU/nzkQQK09Es13ht5ug== Supported: timer Supported: histinfo Supported: ms-safe-transfer Supported: ms-sender Supported: ms-early-media Supported: Replaces Supported: 100rel ms-keep-alive: UAC;hop-hop=yes Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE, REfront end R, NOTIFY, BENOTIFY, OPTIONS Supported: ms-conf-invite Content-Type: multipart/alternative;boundary="---=_NextPart_000_0A41_01C9F328.696A8600" History-Info: <sip:User1@litwareinc.com>;index=1 Message-Body: ------=_NextPart_000_0A41_01C9F328.696A8600 Content-Type: application/sdp $$end_record The Front End Server sends 101 Progress Report to the caller (that is, on Office Communicator 2007 R2). TL_INFO(TF_PROTOffice Communicator 2007 R2 OL) [0]0A2C.0E7C::06/22/2009-17:58:48.953.000993fb (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018A306 Direction: outgoing;source="local" Peer: 192.0.2.143:1331 126 Message-Type: response Start-Line: SIP/2.0 101 Progress Report From: "User2"<sip:User2@litwareinc.com>;tag=ea1b3cab6b;epid=213be0ea4a To: <sip:+12065550101@litwareinc.com;user=phone> CSeq: 1 INVITE Call-ID: a9c2eb61a37944979e6ba90adbf869ce Proxy-Authentication-Info: Kerberos rspauth="602306092A864886F71201020201011100FFFFFFFF356BB0D9D7DF7A14FB5F 5B03B945C688", srand="ED8D8237", snum="118", opaque="24C84179", qop="auth", targetname="sip/ocs.litwareinc.com", realm="SIP Communications Service" Content-Length: 0 Via: SIP/2.0/TLS 192.0.2.143:1331;ms-received-port=1331;ms-receivedcid=58200 ms-diagnostics: 13004;reason="Request was proxied to one or more registered endpoints";source="ocs.litwareinc.com";appName="InboundRouting" Server: InboundRouting/3.5.0.0 Message-Body: – $$end_record The Front End Server receives 303 Proxy Should Redirect message from the Communicator Web Access (2007 R2 release) server. This is the result of the Communicator Web Access (2007 R2 release) user selecting the redirect to voice mail option in the system alert. TL_INFO(TF_PROTOffice Communicator 2007 R2 OL) [1]0A2C.059C::06/22/2009-17:59:01.766.0009a336 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018A485 Direction: incoming Peer: cwa.litwareinc.com:5061 Message-Type: response Start-Line: SIP/2.0 303 Proxy Should Redirect From: "User2"<sip:User2@litwareinc.com>;tag=ea1b3cab6b;epid=213be0ea4a To: "User1"<sip:+12065550101@litwareinc.com;user=phone>;tag=ba51cb6d68;epid =454BF77D78 CSeq: 1 INVITE 127 Call-ID: a9c2eb61a37944979e6ba90adbf869ce VIA: SIP/2.0/TLS 192.168.5.28:2507;branch=z9hG4bK41780D13.6D1B53BD01D5FDC8;branched=TRUE ,SIP/2.0/TLS 192.0.2.143:1331;ms-received-port=1331;ms-receivedcid=58200 CONTACT: <sip:User1@litwareinc.com;opaque=app:voicemail> CONTENT-LENGTH: 0 SERVER: RTCC/3.5.0.0 CWA/3.5.0.0 Message-Body: – $$end_record The Front End Server sends ACK for the 303 message to Communicator Web Access (2007 R2 release) to notify the Communicator Web Access (2007 R2 release) user that the call was actually redirected to voice mail by the Front End Server. TL_INFO(TF_PROTOffice Communicator 2007 R2 OL) [1]0A2C.059C::06/22/2009-17:59:01.766.0009a34d (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018A486 Direction: outgoing;source="local" Peer: cwa.litwareinc.com:5061 Message-Type: request Start-Line: ACK sip:cwa.litwareinc.com:5061;transport=Tls;msopaque=303a446bf296e5e2 SIP/2.0 From: "User2"<sip:User2@litwareinc.com>;tag=ea1b3cab6b;epid=213be0ea4a To: "User1"<sip:+12065550101@litwareinc.com;user=phone>;tag=ba51cb6d68;epid =454BF77D78 CSeq: 1 ACK Call-ID: a9c2eb61a37944979e6ba90adbf869ce Via: SIP/2.0/TLS 192.168.5.28:2507;branch=z9hG4bK41780D13.6D1B53BD01D5FDC8;branched=FALS E Max-Forwards: 70 Content-Length: 0 Message-Body: – $$end_record 128 Add Audio Session Initiation Protocol (SIP) Tracing The following Session Initiation Protocol (SIP) trace packets illustrate the call flows to accomplish the Communicator Web Access (2007 R2 release) Add Audio scenario. The initial state is that User1 and User2 are in an instant messaging (IM) session and User1 asks to add audio to the session. User1 is using Communicator Web Access (2007 R2 release) and User2 is using Office Communicator 2007 R2. Note: Example packets have been redacted to increase clarity. Communicator Web Access (2007 R2 release) User1 sends a SERVICE packet to ask for the conferencing capabilities of the Office Communications Server 2007 R2. TL_INFO(TF_PROTOCOL) [1]0A2C.059C::06/22/2009-18:18:42.695.0009ef1d (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Peer: cwa.litwareinc.com:3380 Instance-Id: 0018CF11 Direction: incoming Message-Type: request Start-Line: SERVICE sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory SIP/2.0 From: <sip:User1@litwareinc.com>;epid=B90980A18B;tag=7fc74f8252 To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory> CSeq: 1500 SERVICE Call-ID: 5e652d08e0da4327b873797f1e15ab7d MAX-FORWARDS: 70 VIA: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bKd8b3b93f CONTENT-LENGTH: 395 USER-AGENT: RTCC/3.5.0.0 CWA/3.5.0.0 CONTENT-TYPE: application/cccp+xml Message-Body: <?xml version="1.0" encoding="utf-8"?><request requestId="1" from="sip:User1@litwareinc.com" to="sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory" C3PVersion="1" xmlns:msci="http://schemas.microsoft.com/rtc/2005/08/confinfoextensions " xmlns:mscp="http://schemas.microsoft.com/rtc/2005/08/cccpextensions" xmlns="urn:ietf:params:xml:ns:cccp"><getConferencingCapabilities /></request> $$end_record 129 The pool server responds with the capability set. TL_INFO(TF_PROTOCOL) [1]0A2C.0F78::06/22/2009-18:18:42.695.0009ef2c (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018CF12 Direction: outgoing;source="local" Peer: cwa.litwareinc.com:3380 Message-Type: response Start-Line: SIP/2.0 200 OK From: "User1<sip:User1@litwareinc.com>;epid=B90980A18B;tag=7fc74f8252 To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory>;tag=04E32C 63BB6B7CF14891AD3423F629A0 CSeq: 1500 SERVICE Call-ID: 5e652d08e0da4327b873797f1e15ab7d Content-Length: 2089 Via: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bKd8b3b93f;ms-receivedport=3380;ms-received-cid=136F00 Content-Type: application/cccp+xml $$end_record Communicator Web Access (2007 R2 release) sends a SERVICE request to get the conference key. TL_INFO(TF_PROTOCOL) [1]0A2C.059C::06/22/2009-18:18:43.335.0009f028 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018CF6B Direction: incoming Peer: cwa.litwareinc.com:3380 Message-Type: request Start-Line: SERVICE sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory SIP/2.0 130 From: <sip:User1@litwareinc.com>;epid=B90980A18B;tag=44f970267e To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory> CSeq: 1501 SERVICE Call-ID: a44fe317039844478b3879e2dfeb66f2 MAX-FORWARDS: 70 VIA: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bK5fb7f10 CONTENT-LENGTH: 384 USER-AGENT: RTCC/3.5.0.0 CWA/3.5.0.0 CONTENT-TYPE: application/cccp+xml Message-Body: <?xml version="1.0" encoding="utf-8"?><request requestId="2" from="sip:User1@litwareinc.com" to="sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory" C3PVersion="1" xmlns:msci="http://schemas.microsoft.com/rtc/2005/08/confinfoextensions " xmlns:mscp="http://schemas.microsoft.com/rtc/2005/08/cccpextensions" xmlns="urn:ietf:params:xml:ns:cccp"><getEncryptionKey /></request> $$end_record The pool server (that is, the conf:focusfactory) responds with the key. TL_INFO(TF_PROTOCOL) [1]0A2C.059C::06/22/2009-18:18:43.335.0009f037 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018CF6C Direction: outgoing;source="local" Peer: cwa.litwareinc.com:3380 Message-Type: response Start-Line: SIP/2.0 200 OK From: "User1<sip:User1@litwareinc.com>;epid=B90980A18B;tag=44f970267e To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory>;tag=04E32C 63BB6B7CF14891AD3423F629A0 CSeq: 1501 SERVICE Call-ID: a44fe317039844478b3879e2dfeb66f2 Content-Length: 1893 131 Via: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bK5fb7f10;ms-receivedport=3380;ms-received-cid=136F00 Content-Type: application/cccp+xml $$end_record Communicator Web Access (2007 R2 release) requests that a conference be created. TL_INFO(TF_PROTOCOL) [1]0A2C.059C::06/22/2009-18:18:43.663.0009f07b (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018CF87 Direction: incoming Peer: cwa.litwareinc.com:3380 Message-Type: request Start-Line: SERVICE sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory SIP/2.0 From: <sip:User1@litwareinc.com>;epid=B90980A18B;tag=435df06b43 To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory> CSeq: 1502 SERVICE Call-ID: 0c7c4e19ed654a39843622a26395cdc2 MAX-FORWARDS: 70 VIA: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bKa9722575 CONTENT-LENGTH: 1708 USER-AGENT: RTCC/3.5.0.0 CWA/3.5.0.0 CONTENT-TYPE: application/cccp+xml $$end_record The server (that is, the conf:focusfactory) responds with the conference Uniform Resource Identifier (URI). TL_INFO(TF_PROTOCOL) [1]0A2C.0F78::06/22/2009-18:18:43.663.0009f08a (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018CF88 Direction: outgoing;source="local" Peer: cwa.litwareinc.com:3380 Message-Type: response Start-Line: SIP/2.0 200 OK 132 From: "User1<sip:User1@litwareinc.com>;epid=B90980A18B;tag=435df06b43 To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory>;tag=04E32C 63BB6B7CF14891AD3423F629A0 CSeq: 1502 SERVICE Call-ID: 0c7c4e19ed654a39843622a26395cdc2 Content-Length: 1262 Via: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bKa9722575;ms-receivedport=3380;ms-received-cid=136F00 Content-Type: application/cccp+xml Message-Body: <response xmlns="urn:ietf:params:xml:ns:cccp" <addConference> <conference-info xmlns="urn:ietf:params:xml:ns:conference-info" entity="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQ XXSHEUZ2M0KVHY1C006F0T5D" state="partial" version="1"/> </addConference> </response> $$end_record Communicator Web Access (2007 R2 release) sends a SERVICE to request information for conferences that are owned by User1 (with key). TL_INFO(TF_PROTOCOL) [1]0A2C.059C::06/22/2009-18:18:43.976.0009f09b (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018CF91 Direction: incoming Peer: cwa.litwareinc.com:3380 Message-Type: request Start-Line: SERVICE sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory SIP/2.0 From: <sip:User1@litwareinc.com>;epid=B90980A18B;tag=3b9871199e To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory> CSeq: 1503 SERVICE Call-ID: a24d629e06d24842a91fbafb752fc8c6 MAX-FORWARDS: 70 VIA: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bK9ac7efa1 CONTENT-LENGTH: 1329 133 USER-AGENT: RTCC/3.5.0.0 CWA/3.5.0.0 CONTENT-TYPE: application/cccp+xml $$end_record The pool server (that is, the conf:focusfactory) responds with encrypted information. TL_INFO(TF_PROTOCOL) [1]0A2C.0F78::06/22/2009-18:18:43.976.0009f0aa (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018CF92 Direction: outgoing;source="local" Peer: cwa.litwareinc.com:3380 Message-Type: response Start-Line: SIP/2.0 200 OK From: "User1<sip:User1@litwareinc.com>;epid=B90980A18B;tag=3b9871199e To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory>;tag=04E32C 63BB6B7CF14891AD3423F629A0 CSeq: 1503 SERVICE Call-ID: a24d629e06d24842a91fbafb752fc8c6 Content-Length: 4916 Via: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bK9ac7efa1;ms-receivedport=3380;ms-received-cid=136F00 Content-Type: application/cccp+xml Message-Body: <response xmlns="urn:ietf:params:xml:ns:cccp" from="sip:User1@litwareinc.com;gruu;opaque=app:conf:focusfactory" to="sip:User1@litwareinc.com" code="success"> <getConference> <conference-info xmlns="urn:ietf:params:xml:ns:conference-info" entity="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQ XXSHEUZ2M0KVHY1C006F0T5D" state="full" version="1"> <conference-description> <conf-uris> <entry> <uri>http://schemas.microsoft.com/2008/05/confxmlenc#content</uri> <purpose>web-internal</purpose> </encrypted-uri> </entry> 134 </conf-uris> <conference-id xmlns="http://schemas.microsoft.com/rtc/2005/08/confinfoextensions">W52 Q3KCQXXSHEUZ2M0KVHY1C006F0T5D</conference-id> $$end_record Communicator Web Access (2007 R2 release) sends an INVITE to cause the Focus Factory to join User1 to the conference by calling her. TL_INFO(TF_PROTOCOL) [1]0A2C.059C::06/22/2009-18:18:44.413.0009f0d0 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018CFA6 Direction: incoming Peer: cwa.litwareinc.com:3380 Message-Type: request Start-Line: INVITE sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ2 M0KVHY1C006F0T5D SIP/2.0 From: "User1<sip:User1@litwareinc.com>;epid=B90980A18B;tag=44aeda4dc To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ 2M0KVHY1C006F0T5D> CSeq: 1504 INVITE Call-ID: 6d078771-8bad-41e9-a085-22323848d0c7 MAX-FORWARDS: 70 VIA: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bK5cace8f5 CONTACT: <sip:User1@litwareinc.com;opaque=user:epid:5C9sAvigE1KvpTRTqTSSgAA;gruu>;text;audio;video;applicationsharing CONTENT-LENGTH: 947 SUPPORTED: ms-dialog-route-set-update SUPPORTED: gruu-10 SUPPORTED: timer SUPPORTED: 100rel USER-AGENT: RTCC/3.5.0.0 CWA/3.5.0.0 CONTENT-TYPE: application/cccp+xml ALLOW: UPDATE Session-Expires: 1800 135 Min-SE: 90 ALLOW: Ack, Cancel, Bye,Invite,Message,Info,Service,Options,BeNotify Message-Body: <request requestId="5" from="sip:User1@litwareinc.com" to="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSH EUZ2M0KVHY1C006F0T5D" C3PVersion="1" xmlns:msci="http://schemas.microsoft.com/rtc/2005/08/confinfoextensions " xmlns="urn:ietf:params:xml:ns:cccp"> <addUser> <conferenceKeys confEntity="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q 3KCQXXSHEUZ2M0KVHY1C006F0T5D" /> <user entity="sip:User1@litwareinc.com" xmlns="urn:ietf:params:xml:ns:conference-info"> <display-text>User1)</display-text> <roles> <entry>attendee</entry> </roles> <endpoint entity="{0ef76ba1-7890-44b3-aeaa-3a26e3e0e29e}" msci:endpointuri="sip:User1@litwareinc.com;opaque=user:epid:5C9sAvigE1KvpTRTqTSSgAA;gruu"> <joining-method>dialed-in</joining-method> </endpoint> </user> </addUser> </request> $$end_record After User1 is in the conference, Communicator Web Access (2007 R2 release) invites User2 to the conference. 136 TL_INFO(TF_PROTOCOL) [1]0A2C.059C::06/22/2009-18:18:46.414.0009f842 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018D038 Direction: incoming Peer: cwa.litwareinc.com:3380 Message-Type: request Start-Line: INVITE sip:User2@litwareinc.com;opaque=user:epid:Ub31lldjtFyGH5-ijiRSAgAA;gruu SIP/2.0 From: "User1<sip:User1@litwareinc.com>;epid=B90980A18B;tag=29ff66d021 To: <sip:User2@litwareinc.com;opaque=user:epid:Ub31lldjtFyGH5ijiRSAgAA;gruu> CSeq: 1513 INVITE Call-ID: 784928e7-ab13-4853-a0f0-ba1cf93192b3 MAX-FORWARDS: 70 VIA: SIP/2.0/TLS 192.0.2.17:3380;branch=z9hG4bK7bfeabdf CONTACT: <sip:User1@litwareinc.com;opaque=user:epid:5C9sAvigE1KvpTRTqTSSgAA;gruu>;text;audio;video;applicationsharing CONTENT-LENGTH: 247 SUPPORTED: ms-dialog-route-set-update SUPPORTED: gruu-10 SUPPORTED: 100rel USER-AGENT: RTCC/3.5.0.0 CWA/3.5.0.0 CONTENT-TYPE: application/ms-conf-invite+xml ALLOW: UPDATE Ms-Conversation-ID: b45631df64ae40b880183043ca424cef ALLOW: Ack, Cancel, Bye,Invite Message-Body: <Conferencing version="2.0"> <focusuri>sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSH EUZ2M0KVHY1C006F0T5D</focus-uri> <subject /> <im available="true" additional="false"> <first-im /> 137 </im> </Conferencing> $$end_record User2 sends the INVITE to the Focus requesting to join the conference. TL_INFO(TF_PROTOCOL) [1]0A2C.0A9C::06/22/2009-18:18:46.429.0009f8d1 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018D048 Direction: incoming Peer: 192.0.2.143:1331 Message-Type: request Start-Line: INVITE sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ2 M0KVHY1C006F0T5D SIP/2.0 From: <sip:User2@litwareinc.com>;tag=9dde023949;epid=213be0ea4a To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ 2M0KVHY1C006F0T5D> CSeq: 1 INVITE Call-ID: b4a3fe5a51c84d8e960874dbc88d3a68 Via: SIP/2.0/TLS 192.0.2.143:1331 Max-Forwards: 70 Contact: <sip:User2@litwareinc.com;opaque=user:epid:Ub31lldjtFyGH5ijiRSAgAA;gruu> User-Agent: UCCAPI/3.5.6907.9 OC/3.5.6907.34 (Microsoft Office Communicator 2007 R2) Supported: timer Supported: histinfo Supported: ms-safe-transfer Supported: ms-sender Supported: ms-early-media ms-keep-alive: UAC;hop-hop=yes Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE, REFER, NOTIFY, BENOTIFY, OPTIONS Proxy-Authorization: Kerberos qop="auth", realm="SIP Communications Service", opaque="24C84179", targetname="sip/u2r2ocs.litwareinc.com", 138 crand="20d8c1a6", cnum="210", response="602306092a864886f71201020201011100ffffffffe5ad48b79ad8d562fa8 656e4d7e23dd3" Content-Type: application/cccp+xml Content-Length: 736 Message-Body: <?xml version="1.0"?> <request xmlns="urn:ietf:params:xml:ns:cccp" xmlns:mscp="http://schemas.microsoft.com/rtc/2005/08/cccpextensions" C3PVersion="1" to="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSH EUZ2M0KVHY1C006F0T5D" from="sip:User2@litwareinc.com" requestId="0"><addUser><conferenceKeys confEntity="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q 3KCQXXSHEUZ2M0KVHY1C006F0T5D"/><ci:user xmlns:ci="urn:ietf:params:xml:ns:conference-info" entity="sip:User2@litwareinc.com"><ci:roles><ci:entry>attendee</ci:entr y></ci:roles><ci:endpoint entity="{AB2AAE94-59A9-494C-9537948C1182F595}" xmlns:msci="http://schemas.microsoft.com/rtc/2005/08/confinfoextensions "/></ci:user></addUser></request> $$end_record Session progress 200 OK and an invitation dialog box is created. TL_INFO(TF_PROTOCOL) [0]0A2C.059C::06/22/2009-18:18:46.429.0009f96d (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018D052 Direction: outgoing;source="local" Peer: 192.0.2.143:1331 Message-Type: response Start-Line: SIP/2.0 200 Invite dialog created From: "User2"<sip:User2@litwareinc.com>;tag=9dde023949;epid=213be0ea4a To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ 2M0KVHY1C006F0T5D>;tag=4C0E0080 CSeq: 1 INVITE Call-ID: b4a3fe5a51c84d8e960874dbc88d3a68 139 ms-keep-alive: UAS; tcp=no; hop-hop=yes; end-end=no; timeout=300 Record-Route: <sip:u2r2ocs.litwareinc.com:5061;transport=tls;opaque=state:F:T:Ci.R582 00;lr;ms-route-sig=he2YH1WGjERb6-ZiSxIlSV7l4oPU-dL1uKOYGPpwAA> Proxy-Authentication-Info: Kerberos rspauth="602306092A864886F71201020201011100FFFFFFFFE6E06C49850126316052 75E9A1B82B0B", srand="71F9906F", snum="285", opaque="24C84179", qop="auth", targetname="sip/u2r2ocs.litwareinc.com", realm="SIP Communications Service" Content-Length: 1322 Via: SIP/2.0/TLS 192.0.2.143:1331;ms-received-port=1331;ms-receivedcid=58200 Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE Contact: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ 2M0KVHY1C006F0T5D>;isfocus Content-Type: application/cccp+xml Session-Expires: 7200;refresher=uac Require: timer Supported: timer Message-Body: <response xmlns="urn:ietf:params:xml:ns:cccp" xmlns:msacp="http://schemas.microsoft.com/rtc/2005/08/acpconfinfoextens ions" xmlns:msas="http://schemas.microsoft.com/rtc/2005/08/asconfinfoextensio ns" xmlns:tns="http://schemas.microsoft.com/rtc/2005/08/avconfinfoextension s" xmlns:mscp="http://schemas.microsoft.com/rtc/2005/08/cccpextensions" xmlns:msci="http://schemas.microsoft.com/rtc/2005/08/confinfoextensions " xmlns:msdata="http://schemas.microsoft.com/rtc/2005/08/dataconfinfoexte nsions" xmlns:msim="http://schemas.microsoft.com/rtc/2005/08/imconfinfoextensio ns" xmlns:msci2="http://schemas.microsoft.com/rtc/2008/12/confinfoextension s" xmlns:msendpt="http://schemas.microsoft.com/rtc/2008/12/endpointinfoext ensions" xmlns:ci="urn:ietf:params:xml:ns:conference-info" xmlns:cis="urn:ietf:params:xml:ns:conference-info-separator" xmlns:msls="urn:ietf:params:xml:ns:msls" requestId="0" C3PVersion="1" 140 from="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXX SHEUZ2M0KVHY1C006F0T5D" to="sip:User2@litwareinc.com" code="success"> <addUser> <conferenceKeys confEntity="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q 3KCQXXSHEUZ2M0KVHY1C006F0T5D"/> <ci:user entity="sip:User2@litwareinc.com"> <ci:roles> <ci:entry>attendee</ci:entry> </ci:roles> </ci:user> </addUser> </response> $$end_record INFO from User2 to the Focus with key. TL_INFO(TF_PROTOCOL) [1]0A2C.0A9C::06/22/2009-18:18:46.460.0009f9a3 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018D05B Direction: incoming Peer: 192.0.2.143:1331 Message-Type: request Start-Line: INFO sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ2 M0KVHY1C006F0T5D SIP/2.0 From: <sip:User2@litwareinc.com>;tag=9dde023949;epid=213be0ea4a To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ 2M0KVHY1C006F0T5D>;tag=4C0E0080 CSeq: 2 INFO Call-ID: b4a3fe5a51c84d8e960874dbc88d3a68 Via: SIP/2.0/TLS 192.0.2.143:1331 Max-Forwards: 70 Route: <sip:u2r2ocs.litwareinc.com:5061;transport=tls;opaque=state:F:T:Ci.R582 00;lr;ms-route-sig=he2YH1WGjERb6-ZiSxIlSV7l4oPU-dL1uKOYGPpwAA> 141 User-Agent: UCCAPI/3.5.6907.9 OC/3.5.6907.34 (Microsoft Office Communicator 2007 R2) Supported: ms-dialog-route-set-update Supported: timer Proxy-Authorization: Kerberos qop="auth", realm="SIP Communications Service", opaque="24C84179", targetname="sip/u2r2ocs.litwareinc.com", crand="ad9e7d8b", cnum="215", response="602306092a864886f71201020201011100ffffffff981e07e5ea0f130ba57 cc2ed92da58b2" Content-Type: application/cccp+xml Content-Length: 1285 Message-Body: <?xml version="1.0"?> $$end_record 202 accepted from User2 to conf:focus. TL_INFO(TF_PROTOCOL) [1]0A2C.0F80::06/22/2009-18:18:46.460.0009f9b1 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018D05C Direction: outgoing;source="local" Peer: 192.0.2.143:1331 Message-Type: response Start-Line: SIP/2.0 202 Accepted From: <sip:User2@litwareinc.com>;tag=9dde023949;epid=213be0ea4a To: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ 2M0KVHY1C006F0T5D>;tag=4C0E0080 CSeq: 2 INFO Call-ID: b4a3fe5a51c84d8e960874dbc88d3a68 Proxy-Authentication-Info: Kerberos rspauth="602306092A864886F71201020201011100FFFFFFFFE0E9F269C783FF8AECB6 BF67028DDC0F", srand="89D8A03F", snum="287", opaque="24C84179", qop="auth", targetname="sip/u2r2ocs.litwareinc.com", realm="SIP Communications Service" Via: SIP/2.0/TLS 192.0.2.143:1331;ms-received-port=1331;ms-receivedcid=58200 Content-Length: 0 142 Message-Body: – $$end_record The pool server (that is, conf:focus) sends out INFO with details of the conference and the participants. TL_INFO(TF_PROTOCOL) [1]0A2C.0F80::06/22/2009-18:18:46.460.0009f9f5 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(122))$$begin _record Instance-Id: 0018D065 Direction: outgoing;source="local" Peer: 192.0.2.143:1331 Message-Type: request Start-Line: INFO sip:192.0.2.143:1331;transport=tls;msopaque=6fe2ccfaed;ms-received-cid=58200;grid SIP/2.0 From: <sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXXSHEUZ 2M0KVHY1C006F0T5D>;tag=4C0E0080 To: <sip:User2@litwareinc.com>;tag=9dde023949;epid=213be0ea4a CSeq: 8 INFO Call-ID: b4a3fe5a51c84d8e960874dbc88d3a68 Via: SIP/2.0/TLS 192.168.5.28:5061;branch=z9hG4bK2CBE513C.E418D77A2630C466;branched=FALS E Proxy-Authentication-Info: Kerberos rspauth="602306092A864886F71201020201011100FFFFFFFF01B326A85CB03EB72670 27B3BCF95F4F", srand="BFC9387F", snum="289", opaque="24C84179", qop="auth", targetname="sip/u2r2ocs.litwareinc.com", realm="SIP Communications Service" Max-Forwards: 70 Content-Length: 7893 Supported: ms-dialog-route-set-update Content-Type: application/cccp+xml Message-Body: <response xmlns="urn:ietf:params:xml:ns:cccp" from="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQXX SHEUZ2M0KVHY1C006F0T5D" to="sip:User2@litwareinc.com" code="success"> <getConference> 143 <ci:conference-info entity="sip:User1@litwareinc.com;gruu;opaque=app:conf:focus:id:W52Q3KCQ XXSHEUZ2M0KVHY1C006F0T5D" </msci:cms-data> </msci:conference-key> <msci:admission-policy>anonymous</msci:admission-policy> <msci:notification-data/> </ci:conference-description> <ci:users state="full"> <ci:user entity="sip:User1@litwareinc.com" state="full"> <ci:display-text>User1</ci:display-text> <ci:roles> <ci:entry>presenter</ci:entry> </ci:roles> <ci:endpoint entity="{0ef76ba1-7890-44b3-aeaa-3a26e3e0e29e}" msci:session-type="focus" </ci:endpoint> </ci:user> <ci:user entity="sip:User2@litwareinc.com" state="full"> <ci:display-text>User2</ci:display-text> <ci:roles> <ci:entry>attendee</ci:entry> </ci:roles> $$end_record Outside Voice Control Scenario Mobile phones are a key facet of information worker communications. Accordingly, incorporating mobility into a unified communications plan is essential for true unification of communications. Although the e-mail, instant messaging (IM), and federated telephony worlds are already becoming unified by having a single Session Initiation Protocol (SIP) address (which is typically the e-mail address) be the single point of contact for a person, this unification has not yet extended to the mobile phone space. Information workers still end up exchanging mobile phone numbers in addition to their work phone numbers as part of their contact information. This has led to a suboptimal user experience. For example, a caller from the public switched telephone network (PSTN) tries to reach a certain user by dialing the user’s office phone number. If she cannot reach the user at his office phone, she bypasses the corporate voice mail system by disconnecting the original call and dialing the user’s mobile phone number. If the caller cannot 144 reach the user on his mobile phone, the caller leaves a message on the user’s voice mail box in the mobile phone network. As a result, the recipient ends up checking his Outlook inbox for emails, corporate voice mail system for some voice mails, and his mobile phone provider’s voice mailbox for other voice mails. A unified communications solution needs to provide means for the user to control any communication stream in a unified fashion at all times. By giving out a mobile phone number, a secondary access channel to the user has been opened that currently bypasses the user’s unified communications solution in the company. With Office Communications Server 2007 R2 a new feature has been introduced, called Outside Voice Control, that enables users to hide their mobile phone number for inbound and outbound calls. This feature is sometimes referred to as outside voice. To use this feature, a user needs to install Office Communicator Mobile (2007 R2 release) on a Windows Mobile phone, and a data service such as General Packet Radio Service (GPRS) to provide IP data communication between the mobile phone and the Internet. This network carries SIP messages (that is, but not audio media) between the Office Communications Server 2007 R2 system (that is, by using the organization’s Edge Server) and the Communicator Mobile client. The user also needs to be enabled for Enterprise Voice. If the user receives an incoming call on his SIP Uniform Resource Identifier (URI), either from the PSTN or from other Office Communications Server 2007 R2 users or from a federated contact, Office Communications Server 2007 R2 sends a SIP INVITE to all of the user’s registered SIP endpoints (for example, Office Communicator 2007 R2, Office Communicator Phone Edition) as well as to the user’s Communicator Mobile client running on the Windows Mobile device. After this SIP INVITE message reaches the Communicator Mobile client using the data channel of the mobile phone, Communicator Mobile automatically accepts the incoming call and changes the user’s presence to In a Call. Next, Office Communications Server 2007 R2 initiates an outbound call to user’s mobile phone number by using an Office Communications Server 2007 R2 Mediation Server and PSTN access point (that is, by using a gateway, PBX, or SIP Trunk service provider). The user receives a second incoming call through the mobile phone provider’s cellular network and is able to accept the call. Note that the actual mobile phone call is not a Voice over IP (VoIP) call where audio has been transmitted by using the mobile phone provider’s data packet network to Communicator Mobile. Instead, it is a normal mobile phone call that uses the mobile phone provider’s cellular network. For an outbound call from her mobile phone, the user has the option to enter the phone number to be dialed in Communicator Mobile or to initiate a call to a SIP contact using Communicator Mobile. If the user chooses the Call menu option in Communicator Mobile, the call is placed by the mobile phone by using the mobile phone network. However, if the user chooses the Call via work option in Communicator Mobile, the phone first sends a SIP INVITE to Office Communications Server 2007 R2. Office Communications Server 2007 R2 establishes a call to the user’s mobile phone number over the PSTN. The user receives an incoming mobile phone call from his company by using the mobile phone provider’s cellular network. Finally, after the user accepts the call from his company, Office Communications Server 2007 R2 sets up a second call leg to the designated called party and joins the two connections. (Note that if the Called Party is on the PSTN, the two call legs can be over separate Mediation Servers that have 145 completely different PSTN break-out locations.) The called party receives a call from the user’s company by using the user’s office phone number as the Calling Party number despite the fact that the user is actually on her mobile phone. Following are some of the benefits for the company and the user associated with this scenario: The user’s office phone number can become the only phone number that is published on business cards and other business materials. The mobile phone number can be shared with selected people. Activities on the user’s mobile phone (for example, when participating in a mobile phone call) can be aggregated to the user’s overall presence state. If the user is enabled for Enterprise Voice and Exchange 2007 SP1 Unified Messaging, the user can disable his mobile phone voice mail box and use Exchange 2007 SP1 Unified Messaging as his only voice mail repository. This has all the advantages of using an Outlook Inbox for all communications (for example, e-mail, missed call notifications, voice mail, team call pick-up notifications, and so on). By setting up an outbound mobile phone call through Office Communications Server 2007 R2 by using the Outside Voice Control functionality, call charge reductions may occur. For example, if the user wants to call an international phone number from his mobile phone for a longer conference call, call charges can be lowered significantly by placing the call from the company to the international number through the PSTN, bypassing the mobile phone network (despite another call leg being established from the company to the user’s mobile phone number). Office Communications Server 2007 R2 Least-Cost Routing functionality helps save additional costs in these situations. Even more obvious are the savings what occur when the user calls a federated contact who has a phone number based in another country. Instead of calling the international number directly from the user’s mobile phone, Office Communications Server 2007 R2 can use an Office Communications Server Edge Server to connect this federated call leg with the call leg to the user’s mobile phone. All calls initiated through Office Communications Server 2007 R2 are captured for Call Detail Recording (CDR) and Quality-of-Experience (QoE) as part of the Office Communications Server 2007 R2 Monitoring Server. However, the QoE data is only on the VoIP legs of the call and does not reflect the quality of the PSTN or mobile provider network. Outside Voice Control Architecture To enable the Outside Voice Control scenario, the following prerequisites are required: As part of the Office Communications Server 2007 R2 installation, all applications are installed by default. During the deployment, the Outside Voice Control application needs to be activated as part of the Office Communications Server 2007 R2 installation. The unified communications Application Server needs to run on every Office Communications Server 2007 R2 Standard Edition server or Enterprise pool Front End Server. You need to start the Outside Voice Control application by using the Office Communications Server 2007 R2 snap-in. 146 One or more Office Communications Server 2007 R2 Mediation Servers with connected PSTN Gateways, IP PBXs, or SIP Carrier trunks need to be deployed for PSTN access. Users who want to benefit from this scenario need to be enabled for Enterprise Voice. To benefit from the single voice mail box functionality, which can only be provided by Exchange 2007 Unified Messaging, users need to be enabled for Exchange 2007 Unified Messaging. Users need to have a Communicator Mobile (2007 R2 release) client installed on their Windows Mobile 6 or Windows Mobile 6.1 smartphone or Pocket PC phone device. Additionally, it is highly recommended that you have an unlimited data usage plan with the mobile phone provider. The user’s mobile phone needs to be enabled for data packet communication through GPRS, EDGE, CDMA, or other 3G connection, and a screen resolution of 240 x 320 pixels is required. An Office Communications Server 2007 R2 Access Edge server needs to be deployed to allow Communicator Mobile to exchange SIP messages with the corporate Office Communications Server 2007 R2 pool. You need to configure a location profile for each pool or user where Outside Voice Control is installed. To enable this scenario, you need to open the following ports: 147 Table 1. Required and Optional Ports Application Port Number Protocol Place to open Usage ports Communicator Mobile (2007 R2 release) 5060 SIP Transmission Control Protocol (TCP) Load balancer in front of home server (optional) Port range used by Communicator Mobile for SIP communications internally Communicator Mobile (2007 R2 release) 5061 SIP TLS Internal firewall and load balancer in front of home server (required) Port range used by Communicator Mobile for SIP over Transport Layer Security (TLS) communications internally Communicator Mobile (2007 R2 release) 443 TLS/HTTPS External firewall and load balancer in front of external edge of Access Edge Server Used by Communicator Mobile for connecting from outside the intranet for SIP communications Outside Voice Control 5074 TCP Load balancer in front of home server where Outside Voice Control is installed Used by Outside Voice Control for internal communications Architectural Overview The following figure shows the architecture required for the Outside Voice Control scenario. 148 Figure 1. Outside Voice Control architecture Protocols Used By Outside Voice Control Outside Voice Control uses the following protocols: Session Initiation Protocol (SIP). Communicator Mobile exchanges SIP messages through the Office Communications Server 2007 R2, Access Edge Server with the Office Communications Server 2007 R2 pool. Third Party Control Protocol (TPCP). This protocol is transported by SIP messages between the Communicator Mobile client and the Office Communications Server 2007 R2 Standard Edition server or Enterprise pool and is used to send call commands between the phone and the user’s Front End Server. Call Flows The following sections contain sample call flows for an outbound call and an inbound call (from the perspective of the Windows Mobile phone user) by using the Enterprise Cellular Voice scenario with a Communicator Mobile (2007 R2 release) client. Outbound Call The following steps occur when User A, who is running Communicator Mobile, establishes an outbound call to User B, who is using Office Communicator, from a mobile telephone by using Communicator Mobile in conjunction with the Outside Voice Control application. User B has multiple endpoints: Office Communicator 2007 R2 and Communicator Mobile (2007 R2 release). 1. On his Communicator Mobile client, User A selects a contact from his contact list, and then selects Call via Work from the calling options. 2. Communicator Mobile uses a data channel to inform Outside Voice Control of the outbound call. This information is transmitted to Outside Voice Control by using SIP/TPCP. The 149 message is passed though the mobile provider’s data packet network through the Internet to their organization’s Office Communications Server 2007 R2 Access Edge server, and from there to their assigned Standard Edition server or Enterprise pool. 3. Outside Voice Control establishes a call to User A’s mobile phone by initiating a request through a Mediation Server to the mobile phone provider’s cellular voice network. 4. User A receives an incoming call on her mobile phone. 5. User A answers the call and the first call leg between the Office Communications Server 2007 R2 environment and User A’s mobile phone has been established. Media is inactive. 6. Outside Voice Control now establishes a second call leg with the home pool of User B, where Office Communicator 2007 or Communicator 2007 R2 has been registered, by sending a SIP INVITE message. 7. A Front End Server in User B’s home pool looks up the User B’s registered endpoints and then forks the SIP INVITE message to all of them. 8. User B gets an incoming call notification. 9. As soon as User B answers the call on one of her registered devices, the second call leg has been established. 10. Outside Voice Control provides call management to bridge the two call legs between the mobile client (that is, User A) and the enterprise Office Communicator user (that is, User B). Media flows between User A’s mobile phone through the mobile phone provider’s cellular network, to the PSTN, then through the Mediation Server (that was selected by Outbound Routing) to Office Communicator 2007 or Communicator 2007 R2 client. 150 Figure 2. Outbound call flow If call forwarding on the mobile telephone has been enabled, outbound calls on Communicator Mobile are not supported. For the normalization of telephone numbers dialed by Communicator Mobile, the user’s userspecific location profile is applied on non RFC3966 compliant called party numbers. 151 Inbound Call To continue with the example above but in the opposite direction, User B (that is, the Office Communicator 2007 or Communicator 2007 R2 user) in the enterprise calls User A. User A has Communicator Mobile installed on her mobile device. In this section, the call flow of this scenario is outlined below. 1. User B initiates a call to User A by clicking on a contact in Office Communicator 2007 or Office Communicator 2007 R2. 2. User A’s Front End Server in the recipient’s home pool looks up User A’s registered endpoints, and then forks the call to all registered endpoints, including User A’s Communicator Mobile client. 3. When the request to establish a signaling channel reaches Communicator Mobile, Communicator Mobile determines that the incoming session is an audio call. Note: Communicator Mobile intercepts the incoming voice call only if the Calling Party number of the voice call matches the Calling Party number that is communicated through the data channel that gets established before the voice call. Otherwise, the incoming voice call is treated as a regular mobile telephone call and Communicator Mobile does not respond. 4. Communicator Mobile automatically accepts the call by using a data signaling channel in the data packet network of the mobile phone provider to pass this message to Outside Voice Control through the Internet and Office Communications Server 2007 R2. 5. Outside Voice Control initiates a call to User A’s mobile phone number. Outbound Routing selects a Mediation Server/gateway to send the call to the PSTN, which ultimately routes to the mobile phone provider’s cellular network. 6. When the user answers the incoming mobile phone call on his mobile phone, Outside Voice Control and Office Communications Server 2007 R2 connect the Office Communications Server 2007 R2 Mediation Server call leg with the originating call leg. Media flows directly between Office Communications Server 2007 R2, Mediation Server and the caller. 7. Outside Voice Control remains in the signaling path to provide call management until the call is terminated. 152 Figure 3. Inbound call flow To redirect the incoming INVITE, Communicator Mobile redirects the INVITE with a 303 SIP response and introduces a new header called CancelForking. This header can have two possible values: Yes or No. The absence of the header, which is consistent with Communicator Mobile (2007 release), means that forks will be cancelled. Therefore, the absence of the header is equal to CancelForking:Yes. 153 Group Chat Feature Scenario The Office Communications Server 2007 R2 Group Chat Server is built on top of the Office Communications Server infrastructure. This infrastructure handles user authentication, presence, security, and routing. Any supported Office Communications Server topology also supports Group Chat functionality, even if users are connecting from the Internet or belong to federated organizations. After you have deployed the Group Chat clients and Group Chat Servers, only the Group Chat Servers require additional configuration before the Group Chat feature is fully operational. You can deploy a Group Chat Server on a single computer or on an array of servers to provide greater scalability and availability. You can also deploy Group Chat Servers at multiple locations if you have a multi-pool Office Communications Server topology. The Group Chat client integrates with the Office Communicator 2007 R2 client and is another Session Initiation Protocol (SIP) endpoint that registers with a Standard Edition server or a Front End Server of an Enterprise pool. The Group Chat Server uses the Unified Communications Managed API (UCMA) 2.0 to communicate with the pool that you select when you install the Group Chat Server. This section of the Office Communication Server 2007 R2 Technical Reference is intended to help Unified Communications administrators and specialists gain a deeper understanding of the Group Chat architecture, protocols, and communication flows, which can be valuable for system design and troubleshooting. In This Section This section contains the following topics: Group Chat Services Key Protocols and Windows Services Used by Group Chat Group Chat Call Flows Group Chat Services Group Chat Server consists of the following: the Channel service, the Lookup service, the Web service, and a dedicated back-end database, which must reside on a separate computer. If you choose to use Compliance service, which is optional, you must install it on a separate computer. The Compliance service requires its own back-end SQL Server database, which can reside on the same computer as the Compliance service or on a separate computer. If it is on a separate computer from the Compliance service, the back-end database can be collocated with the main Group Chat SQL Server database or be placed on a separate database server. The back-end database stores configuration data for the Group Chat Servers and stores the chat message history for each chat room. Channel Service Most of the workload of a Group Chat Server is performed by the Channel service. The Channel service accepts incoming messages, registers and lists the online participants within a channel 154 (known as a Chat Room in the user interface), and retransmits messages to the other channel subscribers. The Channel service also implements logic for channel management, chat room invitations, search, and new content notifications. When the Group Chat feature is provided by an array of Group Chat Servers joined to the same pool, each Channel service communicates with the others to relay new messages to the clients connected to each member of the array, and each ascertains the operational health of the other Group Chat Servers. Because each Channel service gets its configuration information from a common back-end database, all are configured identically. The Channel service registers as a trusted service in the Active Directory Domain Services (AD DS) when the Group Chat Server is activated. When a deployment includes multiple Group Chat Servers, each instance of the Channel service is assigned a unique Session Initiation Protocol (SIP) Uniform Resource Identifier (URI), which is the Globally Routable User Agent URI (GRUU) setting of the corresponding trusted service. These GRUUs allow the Lookup service to assign users to specific Channel service servers. Lookup Service The Lookup service connects clients to a Channel service. If there is more than one Group Chat Server in the deployment, the Lookup service also functions as a load balancer. The Lookup service is represented by a URI that is provisioned to the Group Chat clients before their users sign in. This URI can be the default value (OCSChat@<user’s SIP domain>), it can be supplied to the Group Chat clients by Group Policy, or it can be configured manually. After a user of a Group Chat client successfully signs in to a Front End Server, the Front End Server uses this URI to initiate a session with a Lookup service on behalf of the client. When a deployment includes multiple Group Chat Servers, the servers’ Lookup services can share the same SIP URI. When a Group Chat client initiates a connection, the Lookup services act as multiple points of presence (MPOP) for that SIP address, and the last Lookup service to connect with the client is the one that assigns a Channel service to the client. If a Lookup service instance fails, the Front End Server automatically routes subsequent connection requests to another Lookup service. Even if one server is slower than the others and it is consistently the last one to respond (and thereby gets all of the Lookup service requests), it is of little concern from a scalability standpoint because the process of assigning Channel service URIs to clients is fairly lightweight. The Lookup service assigns Channel service instances so that the workload among all instances is balanced. Every 10 seconds, each Channel service instance communicates its current user load to all Lookup service instances. The Lookup services route new sessions to the least loaded Channel service at the time. If a Channel service fails, existing sessions are cancelled, and the clients contact the Lookup service to receive the URI of a new Channel service. After they reconnect, the new Channel service automatically pushes any missed messages to the clients. When a Channel service resumes operation, the Lookup services do not redistribute existing Group Chat sessions, but the resumed Channel service instance reports itself as available and 155 will get all subsequent new client connections until its workload is balanced with those of the other Channel service instances. Web Service Because files attached to chat messages must be available to multiple users within a channel and from the chat history, peer-to-peer (P2P) file transfer is not sufficient. The Web service provides a mechanism for file exchange within the context of channels. Group Chat clients must provide specific tokens to upload or download files. These tokens are provided in-band by the Channel service to authorized subscribers. When a deployment includes multiple Group Chat Servers, all servers use a Universal Naming Convention (UNC) path that points to a common Windows share where the actual files reside. End users are not permitted direct access to this share. They must go through the Web service. Although Group Chat clients never communicate directly with a Lookup service or Channel service (that is, they are always proxied through one or more Front End Servers), clients connect directly to a Web service instance when they upload and download files to and from a chat room. For the file transfer function to be available to remote users without using a virtual private network (VPN) or to federated users, the Web service URIs must be resolvable and routable from the Internet. Compliance Service The Compliance service uses Microsoft Message Queuing (also known as MSMQ) to collect Group Chat messages and events from Channel service instances and uploaded files from Web service instances. The Compliance service archives these messages as files formatted according to the type of Compliance adapter you selected during installation. The Compliance service comes with a customizable XSLT transform that generates XML files for pickup and further analysis by a custom program. Compliance adapters are also available from Akonix, Assentor, and Facetime that enable the Compliance service to generate output file formats compatible with archiving solutions from those vendors. Before archival, messages are staged in a SQL Server database separate from the one used by the Group Chat Server. The two databases can coexist on the same computer, but if the workloads are high enough to degrade performance they should be located on separate SQL Server instances. Unlike the back-end database for the Office Communications Server 2007 R2 Archiving Server, this database stores the messages for the duration of the archive retention period, the back-end database for the Compliance service stores records only temporarily. The data is extracted according to the Compliance server’s Conversation interval in minutes setting, is written to a file, and then placed in a shared directory, where it can be picked up by the third-party or custom compliance system. After the compliance system has picked up the data, the XML output files and uploaded files can be deleted to prevent loss of available disk space. You can also use the Compliance service to archive uploaded files. 156 The Compliance Server does not archive instant messages, even if the instant messaging (IM) session was launched from the Group Chat client. If your organization wants to archive IM sessions, you must deploy the Archiving Server role on a separate server. Key Protocols and Windows Services Used by Group Chat The Group Chat feature relies on several protocols: Session Initiation Protocol (SIP)/Transport Layer Security (TLS), Windows Communication Foundation (WCF), HTTPS, and Message Queuing (also known as MSMQ). Session Initiation Protocol (SIP) By using SIP over TLS as its key client-server communications protocol, the Group Chat feature harnesses the core real-time communications (RTC) capabilities of Office Communication Server 2007 R2, including the client-side and server side application programming interfaces (APIs), authentication, encryption, registration, presence, and routing. Furthermore, because SIP is a general-purpose signaling protocol that can transport payloads that contain other protocols (for example, Session Description Protocol (SDP) or Centralized Conferencing Control Protocol (C3P)), most of the Group Chat client-server traffic consists of SIP INFO messages containing an XML-based protocol, XCCOS. XCCOS is a proprietary format for transmitting data between Front End Servers and Group Chat clients. In addition to transporting the chat messages, it provides support for federated Group Chat, channel invitations, activity notifications, and posting of files. The Group Chat Lookup and Channel services register as SIP endpoints with an Office Communications Server Front End pool. Clients communicate with them by using SIP INFO messages that contain XCCOS commands and responses. Windows Communication Foundation (WCF) When a deployment includes multiple Group Chat Servers, the Lookup service uses WCF over TLS on each Group Chat Server to monitor the load on each server and determine which Channel service instances should receive new client connections. The Channel services also use WCF to relay messages with each other. Clients are balanced across the available Channel service instance. As a result, when a new message comes in to a Chat Room (channel) on one Channel service instance, in addition to rebroadcasting the message to the other active participants subscribed to that Chat Room over SIP, the Channel service forwards the message over WCF to the other Channel service instances in the array, which in turn forwards the messages to the Chat Room subscribers actively connected to those other instances. HTTPS Uploading and downloading files to and from Group Chat clients and the Web service occurs over HTTPS. This traffic is the only Group Chat client-server communication that does not occur over SIP. 157 Message Queuing For deployments that include the optional Compliance service, each Channel service uses Message Queuing to publish the following events to the Compliance service: New chat messages A user entering or exiting a chat room File uploads and downloads Queries and searches against the chat history The Compliance service temporarily stores the events and chat messages in its back-end database. In addition to extracting the events and chat messages from the database and writing them to files in a shared directory, the Compliance service also obtains copies of all uploaded files and writes them to an Attachment subdirectory in the shared directory for pickup for pickup by your archiving solution. Group Chat Call Flows This topic describes the call flows of a user signing in from a Group Chat client, subscribing to a chat room, and then posting a message to it. In these examples, the architecture consists of a single consolidated Group Chat Server that is in the same pool as the user. Group Chat Client Sign In Before users can participate in a group chat, they must sign in with the Group Chat client to a Front End Server, be authenticated by the server, and then connect to the Chat Rooms to which they have subscribed. In this example, the Lookup service and the Channel service are already running and registered with the Front End Server. The sequence of steps is as follows: 1. The Group Chat client uses the same techniques as the Office Communicator 2007 R2 client to locate its pool server (that is, Domain Name System (DNS) SRV records in most cases and a Director referral, if used). The client uses either the user’s Windows logon credentials or manually-entered alternate credentials, and then sends a set of SIP REGISTER messages to a Front End Server. If the user’s credentials are valid and the user is authorized to use Group Chat, he or she is authenticated. 2. The Group Chat client sends one or more SIP SUBSCRIBE messages to the Front End Server and then retrieves the user’s contact list. 3. The Group Chat client sends a SIP SERVICE message to the Front End Server to provide information about its endpoint capabilities. From this point onward (that is, in the context of Group Chat), the only function of the Front End Server is to proxy messages between the Group Chat client and one or more Group Chat Servers. 4. The Group Chat client sends a SIP INVITE message to the Uniform Resource Identifier (URI) of the Lookup service. If the client is set to use automatic configuration, this URI defaults to the name OCSChat@<user’s SIP domain>. If the organization has implemented Group Policy Object (GPO)-based configuration of the Group Chat client, it will use the URI that is 158 provided by the Specify lookup server URI GPO policy setting. (Users can also manually supply the URI of the Lookup service.) The Front End Server looks in its registration database and proxies the INVITE message to all Lookup service instances that are registered with it. In this example, there is only one. The INVITE sequence is followed up by the 200 OK and ACK, and the Group Chat client has now opened a SIP session with a Lookup service endpoint. 5. The Group Chat client sends a SIP INFO message containing the XCCOS requri (that is, request URI) command to the Lookup service, which queries the back-end database and returns the URI of the Channel service with the lowest current workload. When the client receives the URI, it sends a SIP BYE message and closes the session with the Lookup service. 6. The Group Chat client sends a SIP INVITE message to the URI of the Channel service that it obtained in the previous step. The INVITE sequence is followed by 200 OK and ACK, and the Group Chat client has now opened a SIP session with a Channel service endpoint. From this point forward, the client communicates with the Channel service by sending SIP INFO messages that contain either chat messages or commands requesting the server to take an action. All of these messages are acknowledged with either 200 OK or 503 Service Unavailable (that is, in the event of heavy server load). If the client receives a 503 response, it will retry the message. (This example does not include a 503 response.) If the server accepts the message or command and sends 200 OK, it will provide a response to the client in the form of a separate SIP INFO message. This response includes a reference to the originating command. 7. The Group Chat client sends a SIP INFO message containing the XCCOS getserverinfo command. The Channel service replies with a new SIP INFO message containing information about the Channel service configuration. 8. The Group Chat client sends a SIP INFO message containing a set of XCCOS getpref (that is, get preferences) commands. The client stores its state on the server in a set of compressed XML documents called preferences. The getpref command is a request from the client to the server for the latest copy of that data. If the client has a local copy of the preferences, it sends the version ID of the local copy in the command. The server responds to this command in a separate SIP INFO message with the requested data. 9. The Group Chat client sends a SIP INFO message containing a XCCOS bjoin (that is, batch join) command that contains a list of chat rooms that the user has previously joined. This list is obtained from the preferences document. The Channel service queries the back-end database, and then returns a separate SIP INFO message containing the user’s channel provisioning data and the contextual message history for those chat rooms. 10. The Group Chat client sends a SIP INFO message containing a XCCOS getinv (that is, get invitation) command to request any open channel invitations. In a separate SIP INFO message, the Channel service returns a list of those channels. The following ladder diagram shows this call flow. 159 Figure 1. Group Chat client sign in call flow 160 Note: Messages from the Group Chat Server to the client are often batched. A single SIP INFO message can contain one or more messages. For example, in the case of a batch join (that is, bjoin) command, the server sends bjoin replies and contextual message history for each chat room that is being joined. But these messages may be delivered to the client as a single SIP INFO message or as multiple SIP INFO messages. After the user of a Group Chat client is signed in and connected to a Channel service, his or her client lists the message history of all currently subscribed chat rooms. If the user’s Office Communications Server account was homed in pool different from that of the Group Chat Server pool, a Front End Server in the user’s home pool would proxy the messages to and from a Front End Server in the pool with which the Channel service is homed. Subscribing to a Chat Room and Posting a Message In this example, two users, User1 and User2, are signed in to a Channel service. User1 wants to subscribe to a new Chat Room, to which User2 is already connected, and then participates by posting a message with a file attachment. The sequence of steps is as follows: 1. From the Group Chat client, User1 clicks Join a Chat Room, clicks Search, and then enters some search criteria. The client sends the Channel service a SIP INFO message containing the XCCOS chansrch (that is, channel search) command, along with the search criteria. The Channel service queries the back-end database and replies in a new SIP INFO message that contains a list of available channels (chat rooms) that meet the search criteria. 2. User1 selects the chat room he or she wishes to join and then clicks Join. The client sends the Channel service a SIP INFO message containing the XCCOS join command and the channel ID of the chat room the user selected. The Channel service replies with a SIP INFO message that contains the provisioning data. 3. The Group Chat client sends the Channel service a SIP INFO message that contains the XCCOS bccontext (that is, backchat context) command. The Channel service retrieves the chat history and returns it to the client in a separate SIP INFO message. At this point, the user enters the chat room and is ready to participate. 4. User1 enters a new message containing a file attachment reference and then clicks Send. The Group Chat client sends the Channel service a SIP INFO message containing the XCCOS getfutok (that is, get file upload token) command. The Channel service inserts a token into the back-end database and issues the token with the URI of the Web service instance to the client in a new SIP INFO message. This token is then used by the Group Chat client to upload the file to the URI of the Web service instance, which validates the token against the back-end database before allowing the upload to proceed. User1’s client simultaneously posts the message with the file attachment link to the chat room in a SIP INFO XCCOS grpchat command. The Channel service stores a copy of this new message in the SQL Server database. 161 5. The Channel service sends a separate copy of the SIP INFO XCCOS grpchat message to User2, who has already entered the chat room. The following ladder diagram below shows the call flow. Figure 2. Group Chat subscription and message posting call flow 162 Technical Drilldowns This section provides deeper drilldowns into specific technical aspects of Microsoft Office Communications Server 2007 R2. In This Section SIP Processing Drilldown User Replicator Drilldown Archiving and Monitoring Drilldown Edge Servers Drilldown Response Group Client Web Service Drilldown Client DNS Queries Drilldown Application Server Drilldown SIP Trunking Drilldown Address Book Server Drilldown SIP Processing Drilldown In versions of Office Communications Server prior to Office Communications Server 2007, the server used a proprietary extension called End-point Identifier (EPID) to address a specific User Agent. Starting with Office Communications Server 2007, Globally Routable User Agent URI (GRUU) replaces EPID where possible. Office Communications Server 2007 R2 supports backwards compatibility with EPID, but to the degree possible, all new applications and clients use GRUU instead. SIP Processing and GRUU GRUU is an extension of Session Initiation Protocol (SIP) that is currently defined in an Internet draft at http://go.microsoft.com/fwlink/?LinkId=144418. GRUU is specifically designed to implement reliable routing to a specific device for an end user. While a plain SIP URI (for example, janedoe@contoso.com), is a URI that refers to a user, GRUU is an URI that refers to a specific device. GRUU can be used within multiple separate SIP dialogs to reach the same device. This works not just for client applications but also server applications (for example, the Mediation Server). The Office Communicator client running on each computer has its own GRUU that allows other applications to route messages specifically to that device. GRUU is widely applied across the server to solve a variety of problems, including, but not limited to, Enterprise Voice call transfer or conference escalation scenarios, which require the ability to establish a new dialog with a specific endpoint in an existing dialog. GRUU is also used to address scenarios where one endpoint in a dialog is server based and, therefore, the To/From header in the dialog cannot be resolved to a specific endpoint. In the original SIP standard, it was 163 not possible to construct an URI which could be routed to from anywhere (including the Internet) and reach a specific device or User Agent. GRUU is a SIP URI that generally follows the form: sip:<user>@<domain or FQDN>;opaque=<private>;grid=<optional cookie>;gruu For example: sip:janedoe@contoso.com;opaque=user:epid:qIIWS2j5AVeD_HxnQdxmlwAA;gruu The opaque parameter, in combination with the address of record (AOR), makes this URI unique even though the prefix of the URI is still the standard user address. The gruu parameter specifies that this URI has all the properties of a GRUU and can be used within multiple separate SIP dialogs to reach the same user agent (device). The grid parameter is optional and is inserted by a user agent instance when the user agent uses the GRUU to route to itself. If the grid is included in a request, it helps the user agent instance determine the context of the request. GRUU Creation The server is responsible for creating a GRUU and returning it to the client through the SIP registration mechanism, if the client requests one at registration time. The GRUU returned to the client during the registration process is not managed or exposed to the administrator in any way. This process is handled entirely by the User Services module and can be inspected only by examining the registration database itself. The GRUU can be used anywhere you would typically use a URI. How GRUU Is Used by Office Communications Server GRUU is used by Office Communications Server in the following ways: Office Communicator 2007 R2 clients request and receive a GRUU at registration time, which they will use in their Contact header for all subsequent SIP dialogs, such as Enterprise Voice calls, conferencing, and so on. The Microsoft Office Live Meeting client uses one aspect of GRUU known as the "sip.instance" to create a unique identifier for each meeting client in a conference. This is necessary since the meeting client does not actually register with the server and therefore cannot obtain a genuine GRUU from the server for use in its SIP Contact header. The client uses the GRUU of the Media Relay Authentication Server (MRAS) application (collocated with the A/V Conferencing Server) to send requests to the MRAS server, without necessarily having to know the FQDN of the server or be able to directly connect to the MRAS server. The client learns the MRAS applications GRUU through in-band provisioning. (The A/V Conferencing Server will use the MRAS application GRUU that is configured in WMI.) Enterprise Voice endpoints send their Quality of Service (QoS) metric reports to a GRUU, which identifies the metrics collection point. (The Mediation Server and A/V Conferencing Server will use the collection point GRUU configured in WMI.) 164 The voicemail server (generally Exchange Unified Messaging) for a given user will be identified by a GRUU. The client will learn this GRUU through in-band provisioning (for itself) and through presence (for someone else). An application running on the server, ExUM Routing, resolves the GRUU to a specific Exchange Unified Messaging server that handles user voice mailboxes. An application can be written that will resolve the GRUU for nonExchange voice mail systems. Pools use GRUU to address other pools for batched subscriptions. The Mediation Server uses GRUU to identify different outbound gateways that are connected to the Mediation Server. This allows Office Communications Server to send messages to a single FQDN/port on the Mediation Server and have the messages routed correctly to the proper outbound IP-PSTN gateway. (This GRUU is not exposed in any way to the client; it is used only for server-to-server communications.) During conference creation, the client addresses the Focus Factory by using a GRUU that is composed in part by the meeting organizers SIP URI. This Focus Factory GRUU is sent to the client through in-band provisioning. User Replicator Drilldown User Replicator uses the Lightweight Directory Access Protocol (LDAP) application programming interface (API) to get information from Active Directory. User Replicator performs searches for user data in Active Directory by using Active Directory directory synchronization (DirSync) control, an LDAP server extension that enables User Replicator to track changes to user, contact, and group objects in Active Directory as the changes are made. User Replicator is a read-only component. It does not write data to Active Directory. There can only be one instance of User Replicator running in an Enterprise pool at any given time. Any errors that User Replicator encounters are logged as events on the Front End Server that is running User Replicator at the time the error occurs. In the event that the Front End Server on which User Replicator is running becomes unavailable, SQL Server dynamically assigns the task of running User Replicator to the next available Front End Server. To keep the presence store synchronized with user, contact, and group objects in Active Directory, User Replicator gives Active Directory a list of attributes about which it wants to be notified. The first time that User Replicator requests attribute changes from Active Directory, User Replicator performs an "initial cycle" during which time it synchronizes all user, contact, and group objects. Subsequently, after the initial cycle is complete, User Replicator requests only new changes from Active Directory every one minute. After User Replicator obtains attribute values that have changed from Active Directory, it sends those values to the SQL database for storage. The DirSync API gives User Replicator a cookie which identifies a point in Active Directory's change list. When User Replicator gives a cookie to DirSync, it gets every change after the point identified by the cookie. Therefore, the only state that User Replicator stores across synchronization is the cookie. The following lists include attributes that User Replicator monitors for change in Active Directory. (User Replicator also monitors all Address Book Server attributes in Active Directory.) When there is a change in the attribute, User Replicator acts accordingly. Some of the attribute values 165 are copied from Active Directory to the SQL store without modification. Other attribute values are processed by User Replicator and then copied to the SQL store. Office Communications Server specific attributes that User Replicator monitors include the following: msRTCSIP-PrimaryUserAddress msRTCSIP-PrimaryHomeServer msRTCSIP-UserEnabled msRTCSIP-OriginatorSid msRTCSIP-FederationEnabled msRTCSIP-InternetAccessEnabled msRTCSIP-ArchivingEnabled msRTCSIP-OptionFlags msRTCSIP-Line msRTCSIP-LineServer msRTCSIP-UserLocationProfile msRTCSIP-UserPolicy msRTCSIP-ApplicationDestination msRTCSIP-SourceObjectType msDS-SourceObjectDN Attributes that are not specific to Office Communications Server that User Replicator monitors include the following: objectClass objectSid isDeleted displayName mail telephoneNumber proxyAddresses otherIpPhone facsimileTelephoneNumber streetAddress l st c postalCode wWWHomePage 166 Archiving and Monitoring Drilldown This section gives a detailed description of archiving and monitoring in Office Communications Server 2007 R2. In This Section Archiving and Monitoring Servers Archiving Database Schema CDR Database Schema QoE Database Schema Message Queuing Architecture and Configuration for Archiving Message Stamping Creating a Third-Party QoE Solution Archiving and Monitoring Servers Office Communications Server 2007 R2 separates the Archiving and Monitoring roles. Archiving Server The Archiving Server can archive all instant messaging (IM) conversations for all users or for individual users that you specify. Messages from each Office Communications Server configured for archiving are sent over the Windows Server Message Queuing (also known as MSMQ) service to the Archiving Server, which uses a Microsoft SQL Server database to store archived information. Although the archiving and call detail recording (CDR) agent is automatically installed on Front End Servers as part of the core Office Communications Server process, to archive IM traffic and call data you must configure the archiving and CDR agent and install the Archiving Server, to which the archiving and CDR agent connects. The Archiving Server consists of the following three components: Destination queue, which is managed by Message Queuing. Archiving Service component. Archiving back-end database. The Archiving Service component can reside on the same computer as the archiving database or it can connect to a database on a different computer. Monitoring Server The Monitoring Server consists of the following three components: Destination queue, which is managed by Message Queuing. CDR and Quality of Experience (QoE) service components. 167 The back-end databases, which consist of separate CDR and QoE databases that run in the same SQL Server instance. Additionally, you can install SQL Server Reporting Services and the Monitoring Server Report Pack to view the reports that are included with Monitoring Server. And if you use System Center Operations Manager, you can configure alerts based on Monitoring Server data, to employ near real-time monitoring of media quality health state for network locations, Mediation Servers, and conferencing servers. Archiving Database Schema This section describes the Archiving Server database schema for Office Communications Server 2007 R2. The schema is subject to change in future releases. List of Tables The database schema consists of the following tables. Supporting Tables Table Description ClientVersions Stores the clients (both client type and version number) of each client involved in a call with information captured in this database. Computers Stores the name of each computer that hosts a Front End Server. ContentTypes Stores the IM content types used in sessions captured in this database. Dialogs Stores information about the DialogID for each peer-to-peer session in the database. Pools Stores the names of pool on which IM messages are captured. Users Stores the user URIs of users who have participated in sessions recorded or archived in this database. Tables for Messages in IM Conferences Table Description Conferences Stores information about all conferences that 168 Table Description were archived or whose details were recorded, including ConferenceURI, and start and end time. ConferenceMessageRecipientList For each message sent in a conference, stores a list of recipients. ConferenceMessages Archives the content of all the messages sent in a conference. Tables for Peer-to-Peer IM Archiving Table Description SessionDetails Stores information about every peer-to-peer session, including start and end time, user ID, response code, and message count for each user. Messages Archives the content of all the messages sent in one-on-one IM sessions. The tables in the following list are used internally by Office Communications Server (their details are not described in this document). Tables for Internal Use by Office Communications Server Table Description DbConfigDateTime For internal use only. DbConfigInt For internal use only. DbErrorMessage For internal use only. Table Details This section details the columns in each of the Archiving database schema tables. ClientVersions Table The ClientVersions table is a supporting table that stores a list of the various client types and versions that have participated in sessions recorded in the database. Each record in the table represents one client version. 169 Column Data Type Key/Index Details VersionId int Primary Unique number identifying this client type and version. Version nvarchar(256) Version name. Computers Table The Computers table is a supporting table that stores information about the various Front End Servers. Each record in the table represents one Front End Server Column Data Type Key/Index Details ComputerId int Primary Unique number identifying this Front End Server. Computer nvarchar(16) Front End Server host name. ContentTypes Table The ContentTypes table is a supporting table that stores information about the various types of IM content. Column Data Type Key/Index Details ContentTypeId int Primary Unique number identifying this IM content type. ContentType nvarchar(256) Content type name (for example, text/plain, text/rtf) or a MIME type. Dialogs Table The Dialogs table is a supporting table that stores the information about DialogIds for peer-topeer sessions. 170 Column Data Type Key/Index Details DialogId int Primary Unique number identifying this SIP dialog instance. ExternalChecksum Int Checksum of the ExternalId. This field is used to increase the speed of database searches. ExternalId varbinary(775) SIP dialog Id, stored as a binary. The format of the binary is: dialog;from-tag;to-tag This data can be converted to text format by using: cast(cast(ExternalId as varbinary(max)) as varchar(max)) Pools Table The Pools table is a supporting table that stores information about the various Pools. Each record in the table represents one Pool. Column Data Type Key/Index Details PoolId int Primary Unique number identifying this Pool. PoolFQDN nvarchar(256) Pool FQDN Users Table The Users table is a supporting table; each record in the table stores information about one user involved in calls or sessions that have records in the database. Column Data Type Key/Index Details UserId int Primary Unique number identifying this user. UserUri nvarchar(450) 171 Conferences Table Each record in this table contains call details about one conference. Column Data Type Key/Index Details ConferenceUri nvarchar(450) Checksum Int Checksum of ConferenceUri; used to increases the speed of database searches. ConfInstance Int Useful for recurring conferences; each instance of a recurring conference has the same ConferenceUri, but will have a different ConfInstance. SessionIdTime datetime Primary Time that the conference request was captured by the Archiving agent. Used only as a primary key to uniquely identify a session. SessionIdSeq int Primary ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. * ConferenceStartTime datetime ConferenceEndTime datetime PoolId int Foreign Unique number indentifying the pool on which the message is captured, reference to Pools table * For most sessions, SessionIdSeq will have the value of 1. If two sessions start at exactly the same time, the SessionIdSeq for one will be 1, and for the other will be 2, and so on. 172 ConferenceMessageRecipientList Table Each record in this table represents one combination of IM conference message and recipient. A message that is sent to multiple recipients generates one record for each recipient. Column Data Type Key/Index Details MessageId int Primary Unique number identifying this message in an IM conference. SessionIdTime datetime Primary, Foreign Time that the conference request was captured by the Archiving agent. SessionIdSeq int Primary, Foreign ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. UserId Int Primary, Foreign Unique number identifying this user, referenced from the Users table. Date datetime Message captured time. ConferenceMessages Table This table archives all messages sent in IM Conferences. Each record represents one message. Column Data Type Key/Index Details MessageId uniqueidentifier Primary GUID identifying this message. SessionIdTime datetime Primary, Foreign Time of session request; used in conjunction with SessionIDSeq to uniquely identify a session. Referenced from the Conferences table. SessionIdSeq int Primary, Foreign ID number to identify 173 Column Data Type Key/Index Details the session. Used in conjunction with SessionIDTime to uniquely identify a session. Referenced from the Conferences table. Date datetime FromId int Foreign UserId of the message sender, referenced from the Users table. ContentTypeId Int Foreign IM content type of this message. Referenced from the ContentTypes table. ComputerId int Foreign Id of the Front End Server used for this message. Referenced from the Computers table. Body ntext Content of the message body. Reserved1 tinyint Reserved for Microsoft use. Reserved2 tinyint Reserved for Microsoft use. SessionDetails Table Each record represents one peer-to-peer session, which could be a VoIP-VoIP phone call, 2party IM session, or other type of session. To find the modalities used during a session, you must do a table join with the Media table. Session type is not stored in the SessionDetails table. Column Data Type Key/Index Details SessionIdTime datetime Primary Time of session request; used in conjunction with SessionIDSeq to 174 Column Data Type Key/Index Details uniquely identify a session. SessionIdSeq int Primary ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. DialogId Int Foreign SIP dialog ID, referenced from the Dialogs table. User1Id Int Foreign Id of one user in the session, referenced from the Users table. User2Id int Foreign Id of the other user in the session, referenced from the Users table. SessionStartedById int Foreign Id of the user who started the session, referenced from the Users table. ComputerId Int Foreign Id of the Front End Server used for this session. PoolId Int Foreign Id of the Pool in which the session was captured. User1ClientVerId Int Foreign Client version used by User1, referenced from the ClientVersions table. User2ClientVerId int Foreign Client version used by User2, referenced from the ClientVersions table. InviteTime datetime ResponseTime datetime ResponseCode Int SIP response code to 175 Column Data Type Key/Index Details the session invitation. SessionEndTime datetime * For most sessions, SessionIdSeq will have the value of 1. If multiple sessions start at exactly the same time, the SessionIdSeq for one will be 1, for another will be 2, and so on. Messages Table This table archives all messages sent during one-to-one IM sessions. Each record represents one message. Column Data Type Key/Index Details MessageIdTime datetime Primary Time the message was sent. MessageIdSeq int Primary ID number to identify the message. Used in conjunction with MessageIdTime to uniquely identify a message. * SessionIdTime datetime Primary, Foreign Time of session request; used in conjunction with SessionIDSeq to uniquely identify a session. SessionIdSeq int Primary, Foreign ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. FromId int Foreign UserId of the user sending the message, referenced from the Users table. Told int Foreign UserId of the user receiving the message, referenced from the Users table. 176 Column Data Type Key/Index Details ContentTypeId int Foreign Unique number identifying this IM content type, referenced from the ContentTypes table. ComputerId int Foreign Id of the Front End Server used for this message, referenced from the Computers table. Body ntext Content of the message body. Toast bit TRUE is this message was a toast message. ContextNote Bit TRUE is this message was a context note. Reserved1 tinyint Reserved for Microsoft use. Reserved2 tinyint Reserved for Microsoft use. * For most sessions, MessageIdSeq will have the value of 1. If multiple messages are sent at exactly the same time, the MessageIdSeq for one will be 1, for another will be 2, and so on. CDR Database Schema This section outlines the schema for the CDR database. List of Tables The database schema consists of the following tables. Static Tables Table Description MediaList Stores the list of media types that can generate entries in the database (for example, IM, audio, video, and file transfer). Roles Stores the list of possible conference roles (for 177 Table Description example, attendee and presenter). UserAuthTypes Stores the list of possible user authentication type (for example, enterprise, federated, PIC and anonymous). Supporting Tables Table Description ClientVersions Stores the clients (both client type and version number) of each client involved in a call with information captured in this database. Computers Stores the name of each computer that hosts a Front End Server. Dialogs Stores information about the DialogID for each peer-to-peer session in the database. Gateways Stores a list of Mediation Servers that are used for VoIP calls. Pools Stores the names of pool on which IM messages are captured. Phones Stores all the phone numbers used in VoIP calls that were archived or whose call details were recorded. Mcus Stores information about the various conferencing servers and their URIs. Users Stores the user URIs of users who have participated in sessions recorded or archived in this database. Tables Specific to Conference CDR Records Table Description Conferences Stores information about all conferences that were archived or whose details were recorded, including ConferenceURI, and start and end 178 Table Description time. FocusJoinsAndLeaves Stores information about conference joins and leaves, including users’ role and client version. McuJoinsAndLeaves Stores information about conferencing servers that are involved in a conference, and the user join and leave times. Tables for Messages in IM Conferences Table Description ConferenceMessageCount For each IM conference, stores the number of messages that were sent by each user. Tables for Peer-to-Peer Sessions Table Description SessionDetails Stores information about every peer-to-peer session, including start and end time, user ID, response code, and message count for each user. FileTransfers Stores information about file transfer sessions, including file name and result (accepted, rejected, or cancelled). Media Stores information about the different media types involved in peer-to-peer sessions. Table for VoIP Call Details Table Description VoIPDetails For each two-party VoIP/PSTN call, stores information about the call (for example, the phone ID of VoIP phone, gateway used, and which party disconnected). Refers to the SessionDetails table for call start/end times and 179 Table Description response code. Note: If one party on a call is a VoIP user or if a Mediation Server was involved in the call, a record will be created in this table. Information about VoIP/VoIP calls not involving a PSTN phone is captured in the SessionDetails table. Tables for Troubleshooting Table Description Application Stores information about various processes within Office Communications Server that are involved in routing and connections. ErrorDef Stores information about types of errors and their definitions. ErrorReport Stores information about errors that have occurred. ProgressReport Stores information about the progress reports of various steps involved in Office Communications Server processes. The tables in the following list are used internally by Office Communications Server; their details are not described in this document. Tables for Internal Use by Office Communications Server Table Description DbConfigDateTime For internal use only. DbConfigInt For internal use only. DbErrorMessage For internal use only. Table Details This section details the columns in each of the CDR database schema tables. 180 MediaList Table The MediaList table is a static table that stores the list of various media types. Column MediaId Media Data Type tinyint nvarchar(256) Key/Index Primary Static Values 1 IM 2 File Transfer 3 Remote Assistance 4 Application Sharing 5 Audio 6 Video 7 App Invite 8 Meeting 9 Phone Roles Table The Roles table is a static table that stores the list of possible conference roles, such as attendee and presenter. Column RoleId Role Data Type tinyint nvarchar(256) Key/Index Primary Static Values 0 Unknown 1 Presenter 2 Attendee UserAuthTypes Table The UserAuthTypes table is a static table that stores the list of possible user authentication types, such as enterprise, federated, Public IM Connectivity (PIC), and anonymous. 181 Column AuthTypeId AuthType Data Type int nvarchar(256) Key/Index Primary Static Values 0 Unknown 1 Enterprise 2 Federated 3 Anonymous 4 Public IM Connectivity ClientVersions Table The ClientVersions table is a supporting table that stores a list of the various client types and versions that have participated in sessions recorded in the database. Each record in the table represents one client version. Column Data Type Key/Index Details VersionId int Primary Unique number identifying this client type and version. Version nvarchar(256) Version name. Computers Table The Computers table is a supporting table that stores information about the various Front End Servers. Each record in the table represents one Front End Server. Column Data Type Key/Index Details ComputerId int Primary Unique number identifying this Front End Server. Computer nvarchar(16) Front End Server host name. 182 Pools Table The Pools table is a supporting table that stores information about the various Pools. Each record in the table represents one Pool Column Data Type Key/Index Details PoolId int Primary Unique number identifying this Pool. PoolFQDN nvarchar(256) Pool FQDN. Dialogs Table The Dialogs table is a supporting table that stores the information about DialogIds for peer-topeer sessions. Column Data Type Key/Index Details DialogId int Primary Unique number identifying this SIP dialog instance. ExternalChecksum Int Checksum of the ExternalId. This field is used to increase the speed of database searches. ExternalId varbinary(775) SIP dialog Id, stored as a binary. The format of the binary is: dialog;from-tag;to-tag This data can be converted to text format by using: cast(cast(ExternalId as varbinary(max)) as varchar(max)) Gateways Table The Gateways table is a supporting table. Each record stores information about one Mediation Server that is involved in calls that have records in the database. Column Data Type Key/Index Details GatewayId int Primary Unique number identifying this 183 Column Data Type Key/Index Details Mediation Server. Gateway nvarchar(256) Mediation Server name. Mcus Table The Mcus table is a supporting table; each record stores the information about one conferencing server. These can include the IM Conferencing Server and the Telephony Conferencing Server (which run as processes on Front End Servers), and the Web Conferencing Server and A/V Conferencing Server. Column Data Type Key/Index Details McuId int Primary Unique number identifying this MCU server. McuUri nvarchar(450) McuType nvarchar(256) MCU type (for example, chat (for IMs) or audio-video). Users Table The Users table is a supporting table; each record in the table stores information about one user involved in calls or sessions that have records in the database. Column Data Type Key/Index Details UserId int Primary Unique number identifying this user. UserUri nvarchar(450) AuthTypeId Int Foreign Unique number identifying this user’s authentication type. Reference to UserAuthTypes table. 184 Phones Table The Phones table is a supporting table; each record in the table stores information about one phone number involved in VoIP calls that have records in the database. Column Data Type Key/Index Details PhoneId int Primary Unique number identifying this phone. PhoneUri nvarchar(450) Conferences Table Each record in this table contains call details about one conference. Column Data Type Key/Index Details ConferenceUri nvarchar(450) Checksum Int Checksum of ConferenceURi; used to increases the speed of database searches. ConfInstance Int Useful for recurring conferences; each instance of a recurring conference has the same ConferenceUri, but will have a different ConfInstance. SessionIdTime datetime Primary Time that the conference request was captured by the CDR agent. Used only as a primary key to uniquely identify a session. SessionIdSeq int Primary ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. * 185 Column Data Type Key/Index Details ConferenceStartTime datetime ConferenceEndTime datetime PoolId Int Foreign ID number to identify the pool in which the conference was captured. Reference to Pools table. OrganizerId Int Foreign ID number to identify the organizer URI of this conference. Reference to Users table. * For most sessions, SessionIdSeq will have the value of 1. If two sessions start at exactly the same time, the SessionIdSeq for one will be 1, and for the other will be 2, and so on. FocusJoinsAndLeaves Table Each record in this table contains the CDR information about one user’s join and leave information for one conference. Each conference is represented in this table by one record for each time a user joins and leaves the conference. Column Data Type Key/Index Details UserId int Primary, Foreign Unique number identifying this user, referenced from the Users table. UserInstance Int Primary If a user is logged on at multiple computers or devices at once, UserInstance is used to uniquely identify the user/device combination. IsUserInternal Bit Whether the user logged on from internal or not. UserRole Int This user’s role in the conference. SessionIdTime datetime Primary, Foreign Time of session request; 186 Column Data Type Key/Index Details used in conjunction with SessionIDSeq to uniquely identify a session. Referenced from the Conferences table. SessionIdSeq int UserJoinTime datetime UserLeaveTime datetime ClientVerId int Primary, Foreign ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. Referenced from the Conferences table. Foreign Version of the user’s client software, referenced from the ClientVersions table. McuJoinsAndLeaves Table Each record in this table contains call details about one combination of a user join or leave and MCU device. For example, if a user joins a conference that includes Web conferencing and audio/video elements, one record would be created for that user’s Web conferencing join, and another record would be created for the user’s audio/video join. Column Data Type Key/Index Details UserId int Primary, Foreign Unique number identifying this user, referenced from the Users table. UserInstance Int Primary If a user is logged on at multiple computers or devices at once, UserInstance uniquely identifies the user/device 187 Column Data Type Key/Index Details combination. IsFromPstn Bit Whether the user is joining from PSTN or not. McuId Int Primary, Foreign Unique number identifying this MCU device, referenced from the Mcus table. SessionIdTime datetime Primary, Foreign Time of session request; used in conjunction with SessionIDSeq to uniquely identify a session. Referenced from the Conferences table. SessionIdSeq int Primary, Foreign ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. Referenced from the Conferences table. UserJoinTime datetime UserLeaveTime datetime ConferenceMessageCount Table Each record in this table represents one user in one IM conference and includes the number of messages sent by that user. Each conference is represented by multiple records in this table; one record for each user. Column Data Type Key/Index Details SessionIdTime datetime Primary, Foreign Time of session request; used in conjunction with SessionIDSeq to uniquely identify a session. Referenced 188 Column Data Type Key/Index Details from the Conferences table. SessionIdSeq int Primary, Foreign ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. Referenced from the Conferences table. UserId int Primary, Foreign Unique number identifying this user, referenced from the Users table. MessageCount smallint The number of messages sent by this user during this conference. SessionDetails Table Each record represents one peer-to-peer session, which could be a VoIP-VoIP phone call, 2party IM session, or other type of session. To find the modalities used during a session, you must do a table join with the Media table. Session type is not stored in the SessionDetails table. Column Data Type Key/Index Details SessionIdTime datetime Primary Time of session request; used in conjunction with SessionIDSeq to uniquely identify a session. SessionIdSeq int Primary ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. * 189 Column Data Type Key/Index Details DialogId Int Foreign SIP dialog ID, referenced from the Dialogs table. CorrelationId uniqueidentifier ReplaceDialogId Int Foreign ID number to identify the dialog which was replaced by current session. Reference to Dialogs table User1Id Int Foreign Id of one user in the session, referenced from the Users table. User2Id int Foreign Id of the other user in the session, referenced from the Users table. TargetUserId Int SessionStartedById int OnBehalfOfId Int ReferredById Int Foreign Id of the user by who the call is referred. ComputerId Int Foreign Id of the Front End Server used for this session. Foreign Id of the Pool in which the session was captured. PoolId A GUID to correlate multiple sessions. The original To user URI in SIP request. Reference to Users table. Foreign Id of the user who started the session, referenced from the Users table. Indicate the Id of the user of who the caller is on behalf. Reference Users table. 190 Column Data Type Key/Index Details User1ClientVerId Int Foreign Client version used by User1, referenced from the ClientVersions table. User2ClientVerId int Foreign Client version used by User2, referenced from the ClientVersions table. IsUser1Internal Bit Whether user1 is logged on from internal or not. IsUser2Internal Bit Whether user2 is logged on from internal or not. InviteTime datetime ResponseTime datetime ResponseCode Int SIP response code to the session invitation. DianosticId Int Diagnostic Id captured from SIP header. User1MessageCount Int Number of messages sent by User1 during the session. User2MessageCount Int Number of messages sent by User2 during the session. SessionEndTime datetime * For most sessions, SessionIdSeq will have the value of 1. If multiple sessions start at exactly the same time, the SessionIdSeq for one will be 1, for another will be 2, and so on. FileTransfers Table Each record represents one file transfer session. 191 Column Data Type Key/Index Details SessionIdTime datetime Primary, Foreign Time of session request; used in conjunction with SessionIDSeq to uniquely identify a session. SessionIdSeq int Primary, Foreign ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. FileName nvarchar(256) Cookie int Primary Random number between 1 and 4,294,967,295 (2^32 1)). Used to identify every follow-up message as being associated with this one. Accept bit Can be TRUE or NULL. If TRUE, then Reject and Cancel will be NULL. Reject bit Can be TRUE or NULL. If TRUE, then Accept and Cancel will be NULL. Cancel bit Can be TRUE or NULL. If TRUE, then Accept and Reject will be NULL. bit 192 Media Table Each record represents one media type used in a peer-to-peer session. One session would be represented by multiple records in the table, if more than one media type is used. Column Data Type Key/Index Details SessionIdTime datetime Primary, Foreign Time of session request; used in conjunction with SessionIDSeq to uniquely identify a session. SessionIdSeq int Primary, Foreign ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a session. MediaId tinyint Primary, Foreign Unique number identifying this media type, referenced from the MediaList table. StartTime datetime Primary EndTime datetime VoipDetails Table Each record represents one two-party call in which at least one user is a VoIP user. Column Data Type Key/Index Details SessionIdTime datetime Primary, Foreign Time of session request; used in conjunction with SessionIDSeq to uniquely identify a session. SessionIdSeq int Primary, Foreign ID number to identify the session. Used in conjunction with SessionIDTime to uniquely identify a 193 Column Data Type Key/Index Details session. FromNumberId int Foreign PhoneId of the caller, referenced from the Phones table. If NULL, the caller was a PSTN user. ConnectedNumberId int Foreign PhoneId of the call receiver, referenced from the Phones table. If NULL, the receiver was a PSTN user. FromGatewayId int Foreign Mediation Server the call is coming from, referenced from the Gateways table. ToGatewayId Int Foreign Mediation Server called is going to, reference to Gateways table. DisconnectedbyURIId int Foreign URI of the user who disconnected the call, if the user has a URI. Referenced from the Users table. DisconnectedbyPhoneId int Foreign ID of the phone that disconnected the call if the call was disconnected from a phone. Referenced from the Phones table. Application Table This table stores information about the various processes within Office Communications Server involved in routing and connections. Column Data Type Key/Index Details ApplicationId int Primary Unique number identifying this 194 Column Data Type Key/Index Details application. Name nvarchar(257) ErrorDef Table This table stores information about each type of error that may occur. Each record is one type of error. ErrorDef Table Column Data Type Key/Index Details ErrorId int Primary Unique ID number identifying this type of error. ResponseCode int Standard SIP response code associated with this error. MsDiagId int Microsoft Diagnostic ID. RequestType varbinary(33) Type of request that failed. This data can be converted to text format by using: cast(cast(RequestType as varbinary(max)) as varchar(max)) ContentType varbinary(257) Content type of the request that failed. This data can be converted to text format using: cast(cast(ContentType as varbinary(max)) as varchar(max)) ErrorReport Table This table stores information about errors that have occurred. Each record is one error occurrence. Column Data Type Key/Index Details ErrorTime datetime Primary Date and time the error occurred. 195 Column Data Type Key/Index Details ErrorId int Primary, Foreign Unique ID of the error type, referenced from the ErrorDef table. FromUserId int Foreign User who originated the request that caused the error. Referenced from the Users table. ToUserId int Foreign Destination user for the request that caused the error. Referenced from the Users table. DialogId int Foreign Referenced from the Dialogs table. MsDiagHeader image More information about the error. This data can be converted to text format using: cast(cast(Detail as varbinary(max)) as varchar(max)) ProgressReport Table Progress reports are based on data uploaded by the client to the database after a call or session is completed. Progress reports will be written only for calls and sessions that Office Communications Server determines might be useful for diagnostic purposes. The ErrorTime and ErrorId fields do not necessarily refer to errors but to messages that indicate the status of calls or messages. Column Data Type Key/Index Details ErrorTime datetime Primary, Foreign Date and time of the progress report. ErrorId int Primary, Foreign Unique ID of the error type, referenced from the ErrorDef table. ProgressReportSeq int Primary ID number to identify the progress report. Used in 196 Column Data Type Key/Index Details conjunction with ErrorTime to uniquely identify a session. ApplicationId int Detail image Foreign The Office Communications Server process that the report is about. Referenced from the Application table. Progress report details, stored in binary format to save space. This data can be converted to text format using: cast(cast(Detail as varbinary(max)) as varchar(max)) bit Sample Database Queries This section contains sample queries for the CDR database. The CDR Reporter tool in the Office Communications Server 2007 Resource Kit has more. To find the total number of PSTN to UC Calls: Select Count(*) as 'Number Of PSTN to UC Calls' From VoipDetails as voipd Join SessionDetails as sd on (voipd.SessionIdTime = sd.SessionIdTime and voipd.SessionIdSeq = sd.SessionIdSeq and sd.User1Id is null) and FromNumberId in (SELECT PhoneId from Phones) and GatewayId is not null To find the total numbers of conferences that used Meeting Console: SELECT count(distinct(c.ConferenceUri)) as DataMCU Conferences from mj inner join as m on (m.McuId = mj.McuId) inner join as as c on (c.SessionIdTime = mj.SessionIdTime and c.SessionIdSeq = mj.SessionIdSeq) where m.McuType=meeting RequestType = PKCS10 To find the total number of redirected calls: SELECT count(*) as Number of Redirected Calls from VoipDetails where ReferredById is not null 197 QoE Database Schema This documents the schema of the QoE database in Office Communications Server 2007 R2. In This Section List of Tables Table Details Sample Database Queries List of Tables The database schema consists of the following tables. Supporting Tables Table Description UserAgent Table Stores SIP User Agent (UA) strings and UA types used in audio and video sessions. User Table Stores user, conference, and phone URIs used in audio and video sessions. Endpoint Table Stores FQDN computer names of endpoints participating in audio and video sessions. Pool Table Stores the names of pools to which metrics data belongs. Device Table Stores capture devices and render devices which are used in an audio/video calls. Conference Table Stores Conference URIs for conference scenarios, or DialogID for other scenarios. SessionCorrelation Table Stores CorrelationID for PSTN calls. Tables for metrics data Table Description Session Table Stores overall information about an audio or audio/video session. A session is defined as an audio or video SIP dialog between two endpoints. MediaLine Table Stores information about each media line in a session. A media line is a collection of one or more audio and video streams. Typically, a 198 Table Description single media line will have two streams, either audio or video. AudioStream Table Stores audio media quality metrics for each audio stream in the media line. VideoStream Table Stores video media quality metrics for each audio stream in the media line. Tables for Internal Use by Monitoring Server Table Description DbConfigDateTime For internal use only. DbConfigInt For internal use only. DbErrorMessage For internal use only. MSFT_SIPQMSDBConfigSetting For internal use only. MSFT_SIPQMSDynamicSubnet For internal use only. MSFT_SIPQMSMonitoredAVMCU For internal use only. MSFT_SIPQMSMonitoredMediationServer For internal use only. MSFT_SIPQMSSingleMaskSubnet For internal use only. MSFT_SIPQMSStaticLocation For internal use only. MSFT_SIPQMSStaticSubnet For internal use only. Table Details These sections detail the columns in each of the QoE database schema tables. UserAgent Table User Table Endpoint Table Pool Table Device Table Conference Table SessionCorrelation Table Session Table MediaLine Table 199 AudioStream Table VideoStream Table UserAgent Table The UserAgent table is a supporting table that stores a list of the various User Agents that have participated in sessions recorded in the database. Each record in the table represents one User Agent Column Data Type Key/Index Details UserAgentKey int Primary Unique number identifying this user agent. UserAgent nvarchar(256) Unique User Agent string. UAType smallint 1 is Mediation Server. 2 is A/V Conferencing Server. 4 is Office Communicator. 8 is IP Phone. 16 is Live Meeting Console. 32 is Deployment Validation Tool (DVT). 64 is Office Communicator on Macintosh computers. 128 is Office Communications Server R2 Attendant. 256 is Conferencing Announcement Service. 512 is Conferencing Auto Attendant. 1024 is Response Group Service. 2048 is Outside Voice Control. NextUpdateTS Datetime For internal use only. 200 User Table The User table is a supporting table that stores a list of the various users who have participated in sessions recorded in the database. Each record in the table represents one user. Column Data Type Key/Index Details UserKey int Primary Unique number identifying this user. URI nvarchar(450) Unique URI string URIType int 1 is unknown URI type, 2 is user URI, 4 is conference URI, and 8 is phone URI. NextUpdateTS Datetime For internal use only. Endpoint Table The Endpoint table is a supporting table that stores information about the endpoints that have participated in sessions recorded in the database. Each record in the table represents one endpoint Column Data Type Key/Index Details EndpointKey int Primary Unique number identifying this endpoint. Name nvarchar(256) Unique Endpoint name. NextUpdateTS Datetime For internal use only. Pool Table The Pool table is a supporting table that stores information about the various Enterprise pools. Each record in the table represents one pool Column Data Type Key/Index Details PoolKey int Primary Unique number identifying this pool. PoolName nvarchar(256) Pool FQDN NextUpdateTS datetime For internal use only. 201 Device Table The Device table is a supporting table that stores information about the various capture or render devices. Each record in the table represents one device. Column Data Type Key/Index Details DeviceKey Int Primary Unique number identifying this device DeviceName nvarchar(256) DeviceName + DeviceType is unique Device name. DeviceType Bit DeviceName + DeviceType is unique DeviceType, 1 is a capture device, 0 is a render device. NextUpdateTS Datetime For internal use only. Conference Table The Conference table is a supporting table. Each record represents one conference or peer-topeer session. Column Data Type Key/Index Details ConferenceKey Int Primary Unique number identifying this Conference record. ConfURI nvarchar(450) unique Conference URI is this is a conference, or DialogID if this is a peer-to-peer session. NextUpdateTS Datetime For internal use only. SessionCorrelation Table The SessionCorrelation table is a supporting table; each record represents one CorrelationID which is used to correlate multiple sessions. Column Data Type Key/Index Details CorrelationKey int Primary Unique number identifying this conferencing server. CorrelationID nvarchar(256) unique Sessions that are 202 Column Data Type Key/Index Details correlated will have the same CorrelationID. NextUpdateTS Datetime For internal use only. Session Table Each record represents one session which involves audio or audio/video; it contains overall information about the session. A session is defined as an audio or video SIP dialog between two endpoints. Column Data Type Key/Index Details ConferenceDateTime Datetime Primary Time when the QoE agent receives the first report from either caller or callee; used in conjunction with SessionSeq to uniquely identify a session. SessionSeq Int Primary Sequence number to differentiate sessions when they have the same ConferenceDateTime. SessionID varchar(256) Checksum Int Index Checksum of SessionID, for internal use only. ConferenceKey Int Foreign Conference key, referenced from the Conference Table. CorrelationKey Int Foreign Correlation key, referenced from the SessionCorrelation Table. DialogCategory bit Dialog category; 0 is OCS to Mediation Server Leg, 1 is Mediation Server to PSTN gateway leg. StartTime Datetime Call start time. EndTime datetime Call end time. CallerPool Int DialogID which is globally unique. Foreign The pool of the caller, 203 Column Data Type Key/Index Details referenced from the Pool Table. CalleePool Int Foreign The pool of the call receiver, referenced from the Pool Table. CallerPAI Int Foreign SIP URI in the SIP passerted identity (PAI) from the calling endpoint, referenced from the User Table. CalleePAI int Foreign SIP URI in the SIP passerted identity (PAI) of the receiving endpoint, referenced from the User Table. CallerURI Int Foreign Caller’s URI, referenced from the User Table. CalleeURI int Foreign Call receiver’s URI, referenced from the User Table. CallerEndpoint Int Foreign Caller’s endpoint, referenced from the Endpoint Table. CalleeEndpoint int Foreign Call receiver’s endpoint, referenced from the Endpoint Table. CallerUserAgent Bit Foreign Caller’s user agent, referenced from the UserAgent Table. CalleeUserAgent Bit Foreign Call receiver’s user agent, referenced from the UserAgent Table. MediaLine Table Each record represents one media line. (One audio session usually contains one audio media line. One audio/video session usually contains one audio media line and one video media line, 204 although the session might contains two video media lines if the Microsoft RoundTable conferencing device is used) Column Data Type Key/Index Details ConferenceDateTime Datetime Primary Referenced from Session Table. SessionSeq Int Primary Referenced from Session Table. MediaLineLabel tinyint Primary 0 is main audio, 1 is main video, and 2 is panoramic video. This label must be unique within a single session. ConnectivityIce tinyint Information about media path, such as direct or relayed. 1 is DIRECT 2 is RELAY 4 is HTTP 8 is FAILED CallerIceWarningFlags Int Information about ICE process described in bits flags. For more details, refer to the Quality of Experience Monitoring Server Protocol Specification, available for download. CalleeIceWarningFlags int Same as CallerIceWarningFlags, but on Callee side. For more details, refer to the Quality of Experience Monitoring Server Protocol Specification, available for download. Offerer bit Not used. Answerer bit Not used. 205 Column Data Type Key/Index Details Security Tinyint The security profile in use. 0 os NONE, 1 is SRTP, 2 is V1. Transport Tinyint 0 is UDP, 1 is TCP. CallerIPAddr Int IP Address of the caller. CallerPort Int Port used by the caller. CallerSubnetMask int The subnet mask of the caller. CallerInside bit 1 means caller is inside the enterprise network, 0 means the caller is outside the network. CallerRelayIPAddr int IP Address of the A/V Edge service used by the caller. CallerRelayPort Int Port used on the A/V Edge service by the caller. CallerRelaySubnetMask Int Subnet Mask of the A/V Edge service used by the caller. CallerRelayInside bit Not used. CallerCaptureDev int foreign Capture device used by the caller, referenced from the Device Table CallerRenderDev Int foreign Render device used by caller, referenced from Device table. CallerCaptureDevDriver varchar(256) Driver for the caller’s capture device. CallerRenderDevDriver varchar(256) Driver for the caller’s render device . CallerNetworkConnectionType tinyint The caller's network connection type; 0 is Wired, 1 is wireless. 206 Column Data Type Key/Index Details CallerVPN bit The Caller's link; 1 is virtual private network (VPN), 0 is non-VPN. CallerLinkSpeed decimal(18,0) The network link speed in bps for the caller's endpoint. CalleeIPAddr bit IP Address of the call receiver. CalleePort Bit Port used by the call receiver. CalleeSubnetMask bit Subnet Mask of the A/V Edge service used by the call receiver. CalleeInside Bit 1 means call receiver is inside the enterprise network, 0 means the call receiver is outside the network. CalleeRelayIPAddr Int IP Address of the A/V Edge service used by the call receiver. CalleeRelayPort Int Port used on the A/V Edge Service by the call receiver. CalleeRelaySubnetMask Int Subnet mask of the A/V Edge service used by the call receiver. CalleeRelayInside Bit Not used, CalleeCaptureDev Int foreign Capture device used by the call receiver, referenced from the Device Table. CalleeRenderDev Int foreign Render device used by the call receiver, referenced from the Device Table. 207 Column Data Type Key/Index Details CalleeCaptureDevDriver varchar(256) Driver for the the call receiver’s capture device. CalleeRenderDevDriver varchar(256) Driver for the the call receiver’s render device. CalleeNetworkConnectionType tinyint The call receiver's network connection type; 0 is Wired, 1 is wireless. CalleeVPN bit The call receiver’s link; 1 is virtual private network (VPN), 0 is non-VPN. CalleeLinkSpeed decimal(18,0) The network link speed in bps for the call receiver’s endpoint. ConversationalMOS decimal(3,2) Narrowband Conversational MOS of the audio sessions (based on both audio streams). ConversationalMOSAlg varchar(256) Not used. Caller Bit Indicate whether metrics from the caller were received; 1 is yes, 0 is no. Callee bit Indicate whether metrics from the call receiver were received; 1 is yes, 0 is no. AudioStream Table Each record represents one audio stream. One audio media line usually contains two audio streams. Column Data Type Key/Index Details ConferenceDateTime Datetime primary Referenced from the MediaLine Table. SessionSeq Int primary Referenced from the MediaLine Table. 208 Column Data Type Key/Index Details MediaLineLabel tinyint primary Referenced from the MediaLine Table. StreamID int primary Unique ID within a media line. JitterInterArrival Int Average Network jitter from Real Time Control Protocol (RTCP) statistics. JitterInterArrivalMax Int Maximum Network Jitter during the call. PacketLossRate decimal(5,4) Average packet loss rate during the call. PacketLossRateMax decimal(5,4) Maximum packet loss observed during the call. BurstDensity decimal(9,4) Average density of packet Loss during bursts of losses during the call. BurstDuration Int Average duration of packet loss during bursts of losses during the call. BurstGapDensity decimal(9,4) Average density of packet loss during gaps between bursts of packet loss. BurstGapDuration Int Average duration of gaps between bursts of packet loss. PacketUtilization Int Packet count for the audio stream. BandwidthEst Int Bandwidth estimates for the audio stream. DegradationAvg decimal(3,2) Network MOS Degradation for the 209 Column Data Type Key/Index Details whole call. Range is 0.0 to 5.0. This metric shows the amount the Network MOS was reduced because of jitter and packet loss. For acceptable quality it should less than 0.5. DegradationMax decimal(3,2) Maximum Network MOS degradation during the call. DegradationJitterAvg decimal(3,2) Network MOS degradation caused by Jitter. DegradationPacketLossAvg decimal(3,2) Network MOS degradation caused by packet loss. AudioPayloadDescription varchar(256) The audio codec used for the call. AudioPayloadType int Not used. AudioSampleRate int Sampling rate for the audio stream. InboundAudioSignalLevel * int Represents the PostAnalog Gain Control audio signal level. The unit for this metric is dBmo. For acceptable quality it should be at least 30 dBmo. This metric is not reported by the A/V Conferencing Server or IP phones. This is reported by the Mediation Server on approximately 2% of the calls on the Mediation Server to 210 Column Data Type Key/Index Details gateway leg. InboundAudioNoiseLevel * int Represents the PostAnalog Gain Control audio noise level. The unit for this metric is dBmo. For acceptable quality it should be less than 35 dBmo. This metric is not reported by the A/V Conferencing Server or IP phones. This is reported by the Mediation Server on approximately 2% of the calls on the Mediation Server to gateway leg. InboundAudioSignalEchoReturn* int Echo Return Loss Enhancement metric. The unit for this metric is dB. Lower values represent less echo. This metric is not reported by the A/V Conferencing Server or IP phones. This is reported by the Mediation Server on approximately 2% of the calls on the Mediation Server to gateway leg. OutboundAudioSignalLevel* int Represents the Post Analog Gain Control audio Signal level. The unit for this metric is dBmo. For acceptable quality it should be at least dBmo. This metric is not reported 211 Column Data Type Key/Index Details by the A/V Conferencing Server or IP phones. This is reported by the Mediation Server on approximately 2% of the calls on the Mediation Server to gateway leg. OutboundAudioNoiseLevel* int Represent the Post Analog Gain control audio noise level. The unit for this metric is dBmo. For acceptable quality it should be less than 35 dBmo. This metric is not reported by the A/V Conferencing Server or IP phones. This is reported by the Mediation Server on approximately 2% of the calls on the Mediation Server to gateway leg. OutboundAudioSignalEchoReturn* int Echo Return Loss Enhancement metric. The unit for this metric is dB. Lower values represent less echo. This metric is not reported by the A/V Conferencing Server or IP phones. This is reported by the Mediation Server on approximately 2% of the calls on the Mediation Server to gateway leg. 212 Column Data Type Key/Index Details AudioSpeakerFeedbackMicIn* int This is the microphone input level from the loudspeaker signal which comes from the far end. The unit is dBoV. For acceptable quality this value should be less than 20 dBoV. If this number is too high, it means that the near end microphone is getting too much feedback from the near end loudspeaker. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioSpeechLevelMicIn* int This is the speech level into the microphone at the near end. The unit is dBoV. For acceptable quality it should be between -18 dBoV and -35 dBoV, if greater than -18 dBoV, then signal clipping or echo is occurring when both parties talk. If it is less than -35 dBoV, then speech might be distorted. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioSpeechLevelPostProcess* int Overall average speech level sent to the far end (after signal processing) from the near end. The unit for 213 Column Data Type Key/Index Details this metric is dBoV. For acceptable quality it should be within [-30 to -18] dBoV. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioSignalLevelLoudSpeaker* int Speaker/Headphone input level (at the near end). The unit for this metric is dBoV. For acceptable quality it should range between [-35 to -15] dBoV. If too high there may be clipping. If too low then there might be low volume issues. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioBackGroundNoiseMicIn* int Background Noise Input to the microphone at the near end. The unit for this metric is dBoV. For acceptable quality the range should be less than -35 dBoV. If noise is too high, this indicates a bad device or bad device setup which is degrading audio quality. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. 214 Column Data Type Key/Index Details AudioBackGroundNoiseSent* int Background noise left over after noise suppression. This is the noise sent to the far end. The unit for this is dBoV. For acceptable call quality this should be less than -45 dBoV. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioLocalSpeechToEcho* int This the ratio of speech to echo. The unit for this is dB. For acceptable quality it should be greater than 10 dB. If less than 10dB then speech level is too low compared to echo level, and distorted speech might occur. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioSpeakerGlitchRate int Average glitches per 5 minutes for the loudspeaker rendering. For good quality, this should be less than 1 per 5 minutes. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioMicGlitchRate int Average glitches per 5 minutes for the microphone capture. 215 Column Data Type Key/Index Details For good quality this should be less than 1 per 5 minutes. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioSpeakerClipRate int Clipping occurrences per 5 minutes for loudspeaker rendering. For good quality, this should be less than 1 per 5 minutes. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioMicClipRate int Clipping per 5 minutes for microphone capture. For good quality this should be less than 1 per 5 minutes. Not reported by A/V Conferencing Servers, Mediation Servers, or IP phones. AudioRxAGCSignalLevel* int Received signal level on the Mediation Server from the gateway; this applies only to the Mediation Server. The unit of this metric is dBoV. For good quality, the acceptable range should be [-30 to -18] dBoV. AudioRxAGCNoiseLevel* int Received Received signal level on the Mediation Server from 216 Column Data Type Key/Index Details the gateway; this applies only to the Mediation Server. The unit of this metric is dBoV. For good quality, the acceptable range should be less than -50 dBoV. RoundTrip int Round trip time from RTCP statistics. For acceptable quality this should be less than 100ms. RoundTripMax int Maximum round trip time for the audio stream. OverallAvgNetworkMOS decimal(3,2) Average wideband Network MOS for the call. This metric depends on the packet loss, jitter and codec used. Range is [1.0 to 5.0] OverallMinNetworkMOS decimal(3,2) The minimum wideband Network MOS for the call. SendListenMOS decimal(3,2) The average predicted wideband Listening MOS score for audio sent, including speech level, noise level and capture device characteristics. SendListenMOSMin decimal(3,2) The minimum SendListenMOS for the call. RecvListenMOS decimal(3,2) The average predicted wideband Listening MOS score for audio 217 Column Data Type Key/Index Details received from the network including speech level, noise level, codec, network conditions and capture device characteristics. RecvListenMOSMin decimal(3,2) The minimum RecvListenMOS for the call. Inbound bit Stream data on receiver side is received. Outbound bit Stream data on sender side is received. SenderIsCallerPAI bit 1 means the stream direction is from Caller to Callee. 0 means the stream direction is from Callee to Caller. Note: * means, the metric is scaled by *-100 when stored in QoE DB. Dividing the number by -100 will give the ranges listed in this table. VideoStream Table Each record represents one video stream. One video media line usually contains two video streams. Column Data Type Key/Index Details ConferenceDateTime Datetime primary Referenced from the MediaLine Table. SessionSeq Int primary R Referenced from the MediaLine Table. MediaLineLabel tinyint primary Referenced from the MediaLine Table. 218 Column Data Type Key/Index Details StreamID int primary Unique ID within a media line. JitterInterArrival Int Average network jitter from Real Time Control Protocol (RTCP) statistics. JitterInterArrivalMax Int Maximum network jitter during the video session. RoundTrip int Round trip time from RTCP statistics. RoundTripMax int Maximum round trip time for the video stream. PacketLossRate decimal(5,4) Average packet loss rate during the call. PacketLossRateMax decimal(5,4) Maximum packet loss observed during the call. BurstDensity decimal(9,4) Not available. BurstDuration Int Not available. BurstGapDensity decimal(9,4) Not available. BurstGapDuration Int Not available. PacketUtilization Int Packet count for the video stream (Real Time Transport Protocol, RTP). BandwidthEst Int Bandwidth estimates for the video stream. VideoPayloadDescription varchar(256) Video codec used. 219 Column Data Type Key/Index Details VideoPayloadType int Not used. VideoResolution char(9) Resolution of the video in pixels width multiplied by pixels height. Reported as a string. VideoBitRateAvg int Average bit rate of the video stream. InboundVideoFrameRateAvg decimal(9,4) The video frame rate received. OutboundVideoFrameRateAvg decimal(9,4) The video frame rate sent. VideoBitRateMax int The maximum video bit rate during the video session. VideoPacketLossRate decimal(5,4) The average fraction of video packets lost as specified in RFC 3550, computed over the duration of the session. VideoFrameLossRate decimal(9,4) The percentage of total video frames that are lost. VideoFrameEncodingTime decimal(9,2) Average encoding time for video frames during the video session. VideoFrameDecodingTime decimal(9,2) Average decoding time for video frames during the video session. VideoFEC bit Not available. 220 Column Data Type Key/Index Details FrozenVideoFreq decimal(9,4) Frequency of frozen video occurring (occurrences per second). FrozenPeriodPercentAvg decimal(7, 4) A measure of the percentage of the duration of the video call in which frozen video was experienced. For good quality, this should be less than 10%. ConsecutivePacketLossAvg decimal(20,2) Average number of consecutive video packets lost during the call. For good quality this should be less than 3.0 for a video call. RateMatchLevel decimal(4,2) Represents the average level of rate matching applied by the Audio/Video Conferencing Server on the send channel. 0 is no frame removal, 1 is B frame removal, 2 is B and P frame removal, and 3 is B,P,SP removal. For acceptable temporal video quality, this should be 1 or less. An average rate matching level of 1 221 Column Data Type Key/Index Details represents about 7.5 fps for CIF sized video and 12.5 fps for VGA/HD video. Inbound bit Stream data on receiver side is received. Outbound bit Stream data on sender side is received. SenderIsCallerPAI bit 1 means the stream direction is from Caller to Callee. 0 means the stream direction is from Callee to Caller. Sample Database Queries This section contains sample queries for the QoE database. To get jitter and packet loss average for all audio stream select avg(cast(JitterInterArrival as bigint)) as JitterAvg, avg(PacketLossRate) as PacketLossRateAvg from AudioStream To find the total numbers of conferences that used Meeting Console select avg(ConversationalMOS) from Session s inner join MediaLine m on s.ConferenceDateTime = m.ConferenceDateTime and s.SessionSeq = m.SessionSeq and m.MediaLineLabel = 0 -- audio media line inner join UserAgent uaCaller on s.CallerUserAgent = uaCaller.UserAgentKey and uaCaller.UAType = 4 – communicator 222 inner join UserAgent uaCallee on s.CalleeUserAgent = uaCallee.UserAgentKey and uaCallee.UAType = 4 -- communicator To get ConversstionalMOS, SendingMOS and ListendingMOS per capture device select t.DeviceName as Device, count(*) as SampleNum, avg(ConversationalMOS) as ConversationalMOS, avg(SendListenMOS) SendingMOS, avg(RecvListenMOS) as ListendingMOS from ( select d.DeviceName, m.ConferenceDateTime, m.SessionSeq, a.StreamID, m.ConversationalMOS,a.SendListenMOS, a.RecvListenMOS from MediaLine m inner join AudioStream a on m.ConferenceDateTime = a.ConferenceDateTime and m.SessionSeq = a.SessionSeq and m.MediaLineLabel = 0 inner join Device d on m.CallerCaptureDev = d.DeviceKey and d.DeviceType = 1 union select d.DeviceName, m.ConferenceDateTime, m.SessionSeq, a.StreamID, m.ConversationalMOS,a.SendListenMOS, a.RecvListenMOS from MediaLine m inner join AudioStream a on m.ConferenceDateTime = a.ConferenceDateTime and m.SessionSeq = a.SessionSeq and m.MediaLineLabel = 0 inner join Device d on m.CalleeCaptureDev = d.DeviceKey and d.DeviceType = 1 )as t group by t.DeviceName order by SampleNum desc 223 Message Queuing Architecture and Configuration for Archiving The archiving and CDR agent uses Message Queuing to receive notifications from the Archiving and CDR Server destination queue. (Message Queuing also serves as a local temporary transmission queue if the Archiving Server is unavailable.) Message Queuing must be installed on all computers that participate in archiving, such as the following: An Office Communications Server with an archiving and CDR agent that connects to the Archiving Server. The Office Communications Server that is running the Archiving Server. You must install Message Queuing on each server that you want to associate with the Archiving Server. If you want to archive an Enterprise pool, you must install Message Queuing on each server in the pool. Because Message Queuing relies on the Active Directory Domain Services for encryption to the destination queue, Message Queuing must be installed with the Active Directory integration component, which is the default configuration during Message Queuing installation. Note: In a two-tier topology where the Archiving service component and the message queue are on a separate computer from the archiving database, automatic setup of encryption is not supported for the messages that are sent by the Archiving service component to the archiving database. Instead, encryption of the link between the Archiving service component and the archiving database must be configured manually by using SQL Server SSL encryption. For details about configuring SQL Server SSL encryption, see the Microsoft Knowledge Base article 276553, How to enable SSL encryption for SQL Server 2000 if you have a valid Certificate Server, at http://go.microsoft.com/fwlink/?LinkId=144421. For information about configuring the registry to establish and help enforce SQL encryption, see the Microsoft Knowledge Base article 841695, How to establish and enforce encrypted multiprotocol connections in SQL Server 2000, at http://go.microsoft.com/fwlink/?LinkId=144422. Do not set the destination queue (that is, the private queue) privacy level to None on the server that is running the Archiving Server. The privacy level must be set to either Body or Optional. The default setting is Optional. Do not set the privacy level to Body when the Archiving Server and the Front End Server are installed on the same computer. When the Archiving Server and the Front End Server are installed on the same computer and the privacy level on the destination queue is set to Body, messages are not archived and the server stops running if archiving is running as a critical service. The Enterprise pool, Standard Edition server or the Proxy Server, if configured for archiving, activates the archiving agent. The archiving agent then checks all outgoing SIP messages on the Office Communications Server to determine whether it should be archived and in what form. This requires the archiving agent to look up the archiving settings for the sender and receiver of the 224 message (set per user). Based on these archiving settings, the archiving agent takes one of the following actions: Do not archive. Send message for archiving. When messages are sent for archiving, the archiving agent queues the message to the configured MSMQ. The Archiving service is listening to the destination message of the MSMQ and on receiving this message, it writes it to the designated SQL Server. Note that in Office Communications Server 2007 R2, the Archiving and CDR agent will not archive a message if it does not receive a SIP response from another client. For example, if client 1 sends a message to client 2, and if the SIP response from client 2 fails to reach client 1 due to a network glitch or a machine shut down, that message will not be archived. Message Stamping The Archiving and CDR agent contains message-stamping capabilities to provide administrators control over whether messages are archived multiple times if they pass through multiple pools or Front End servers in their path. In such a situation, administrators can effectively control the number of times a message is archived. To enable this control, the Archiving and CDR agent stamps every message that it archives. The value of the stamp is specified in the following WMI property: WMI Class: MSFTSIPLogoptions WMI Property: ArchivingBEToken Value: backend_token In an example where two archiving agents are involved, the first archiving agent stamps the message with the value as backend_token and archives it. Subsequently, the second archiving agent looks at the stamp and compares it to the value of the WMI property ArchivingBEToken. If the administrator intends to have the second archiving agent archive the message, the administrator needs to change the value of the WMI property to a value distinct from backend_token (the value of that property for the first archiving agent). If the value is identical for the second archiving agent, it will not archive that message. Creating a Third-Party QoE Solution You can use the data that Monitoring Server collects to build your own custom solution, such as custom reports, integrating with other monitoring and management systems, or troubleshooting and diagnostic tools. The topics in this section present the information you will need to collect and process the audio and video metrics for your custom solution. For information on the QoE Database Schema, see QoE Database Schema. In This Section Infrastructure Requirements and Prerequisites of Monitoring Server 225 Deploying a Custom QoE Solution WMI Reference for QoE Solutions Enabling or Disabling an HTTP Proxy for QoE Solutions Infrastructure Requirements and Prerequisites of Monitoring Server In Office Communications Server 2007 R2, QoE components reside in two primary areas, the QoE Agent and the QoE service and database. The QoE Agent is automatically installed on Front End Servers and Standard Edition servers. The QoE service and database are part of Monitoring Server, which must be installed separately. Before you begin developing your custom solution, ensure that you have deployed a Monitoring Server and that it is operational. For deployment details, see the Deploying Monitoring Server documentation. At the end of each call, the unified communications (UC) endpoints send an A/V (audio/video) metric report to the QoE Agent. If QoE is enabled on the pool and the QoE Agent is properly configured, it will, in turn, transmit the report to your custom solution (metric report consumer) by using HTTP POST. For each QoE Agent in your organization, you can configure only one metric report consumer. You need to do this QoE Agent configuration work on each Front End Server. For more details about requirements, see these sections: Certificate Requirements for Your QoE Solution Protocol Considerations for Your QoE Solution Certificate Requirements for Your QoE Solution When you deploy your custom solution, we recommend that the HTTPS protocol be used in order to improve the security of your data and privacy of your users. By default, HTTPS will allow only the client to authenticate the server; however, mutual certificate authentication will allow both the client to authenticate the server and the server to authenticate the client. If HTTPS is used, you will need to take the following certificate considerations into account: The Front End Server or Standard Edition server running the QoE Agent must trust the root CA that issued the certificate that is used by the Web server. The subject name of the server certificate must match the FQDN of the report consumer URL that is configured in the ConsumerURL property in WMI. For details, see WMI Reference for QoE Solutions. If you want to use mutual certificate authentication, a client certificate must be configured on the Front End Server or Standard Edition server running the QoE Agent. For the client certificate, you must ensure the following: The certificate is stored in the local computer store so that the QoE Monitoring Server can locate the certificate. The certificate has the enhanced key usage (EKU) extension for client authentication. The metric report consumer server is configured to trust the root certification authority (CA) that issued the client certificate. The root CA needs to be stored in the "Trusted Root Certification Authorization" folder under the local computer store. 226 Appropriate permissions are granted to the RTCComponentUniversalServices domain group for the certificate to be read. The certificate is configured in Microsoft Windows® Management Instrumentation (WMI) on the Front End Server or Standard Edition server running the QoE Agent. For details, see WMI Reference for QoE Solutions. Note: On a heterogeneous Windows environment that uses Windows Certificate Services, trust is usually implicit, but it may require some extra configuration if a non-Windows Web server is used for the metric report consumer. For details about Certificate Services, see "Certificate Services" at the Microsoft Web site: http://go.microsoft.com/fwlink/?LinkId=150367. For details about programming with Certificate Services, see "Programming Certificate Services" at http://go.microsoft.com/fwlink/?LinkId=150368. Protocol Considerations for Your QoE Solution There are a few protocol considerations that you should be aware of before you develop your custom solution. In order to support persistent connections, the metric report consumer must be a server that is compliant with HTTP 1.1. Note: To improve the security of your data and the privacy of your users, we recommend that HTTPS with mutual certificate authorization be configured. This sample call flow illustrates how the metric report consumer accepts an A/V metric report for a single session. You will be responsible for the protocol implementation between the Monitoring Agent and the metrics report consumer. Figure 1. Metric Report Consumer Acceptance of an A/V Metric Report 227 Protocol Requirements The following protocol requirements should be taken into consideration when you develop your custom solution: The metric report consumer must be able to handle multiple incoming HTTP connections and to simultaneously process requests that come in on these different connections. This will enable a single metric report consumer to communicate with multiple Monitoring Agents. Multiple A/V metrics reports may exist in a single POST body, up to the maximum configured value for the WMI setting MaxPostBatchSize. The A/V metrics reports will be sent in XML, UTF-8 encoded. The XML payload will have a root element of VQReportEventList. The ID attribute of VQReportEventList will be set to a unique value for the set of A/V metrics reports that it contains. If a transient network error or server error occurs or if the Monitoring Agent does not receive an HTTP response from your application, then the agent will repost the entire VQReportEventList document with the original ID. You can disable reposting when a transient network error or server error occurs by setting ErrorRetryEnabled to false in WMI. The QoE Agent performs only a basic level of validation against the A/V metrics report before it posts the report to the metric report consumer. None of the QoE Monitoring Server report aggregation logic is applied to the reports prior to the post. The QoE Agent will not throttle requests; the metric report consumer is expected to keep up with the normal volume of A/V metric reports. In order to handle A/V metric report bursts, such as might occur at the end of a large conference, the QoE Monitoring Server buffers A/V metrics reports, as needed, on behalf of the consumer. The buffer size itself is a configurable number of kilobytes. After the report bursts exceed the buffer size, the QoE Monitoring Server will drop the oldest reports. If the QoE Monitoring Server service or the computer is restarted, the contents of the buffer will not be retained. Upon receiving metrics reports, the report consumer should return the HTTP response immediately. Performing any additional synchronous processing on the reports before returning will cause a drop in the report throughput rate to the report consumer. HTTP Status Codes Table 1 defines the status codes that are used in the HTTP protocol between the QoE Monitoring Server and the metric report consumer. Note: Only HTTP 2xx and 400 status codes are expected from the metric report consumer. All other status codes will be treated as a transient network error or server error and will cause the QoE Monitoring Server to retry the POST request. Table 1. Supported HTTP status codes HTTP Status Code Metric Consumer Usage QoE Monitoring Server Action 2xx Metric consumer is expected to The post transaction will be 228 HTTP Status Code Metric Consumer Usage QoE Monitoring Server Action promptly return 202 Accepted to valid metric CDR post requests. marked as complete. 400 Bad Request Metric consumer should return 400 Bad Request whenever basic validation of the A/V metric report post request fails. The post transaction will be abandoned and not retried. All other status codes No other status codes are expected from the metric consumer. The QoE Monitoring Server will treat all other status codes as transient errors and will retry the post request. Deploying a Custom QoE Solution Deploying your custom solution requires only a few steps. To deploy your solution 1. Install an HTTP 1.1 compliant Web server, such as Internet Information Services. 2. Install your application. 3. If HTTPS will be used (recommended), install the appropriate certificate on the consumer and, as needed, on the Front End Servers that run the QoE Agent. 4. Configure external consumer settings on the QoE Monitoring Server by using WMI. For details about WMI settings, see WMI Reference for QoE Solutions. 5. By default, the QoE Monitoring Server will not use any HTTP proxy. For details about configuring the QoE Monitoring Server to use the configured HTTP proxy, see Enabling or Disabling an HTTP Proxy for QoE Solutions. WMI Reference for QoE Solutions The following table lists the various configuration settings that can be set through WMI for the \\cimv2\MSFT_SIPQMSExternalConsumer singleton class. This class already exists, so you will not need to create it. Table 2. WMI Settings for Class MSFT_ SIPQMSExternalConsumer Property Name Description Type Default Range Access Type InstanceID Class identifier GUID 530943174455-44ed- Up to 1024 Read Only 229 Property Name Description Type Default Range Access Type ConsumerURL The URL that A/V Metric String Reports will be posted too. B8D5A716972B334 4 character s NULL Valid HTTPS or HTTP URL Note: Read/Writ e The host name in the URL must be identical to Subject field of the server certificate. For instance, if the server certificate is configured as contoso.voipclient1.com, the consumer URL must be https://contoso.voi p-client1.com. ConsumerName A display name for the consumer. String NULL Up to 256 Read/Writ character e s ClientCertIssuer A binary array in raw data format that represents the certification authority that issued the certificate. This data is in ASN.1 byte array format. uint8 NULL N/A Read/Writ e uint8 NULL N/A Read/Writ e This setting is used only if ConsumerURL is an HTTPS URL. This setting should be NULL if the client will not use a certificate. ClientCertSN A binary array in raw data format that represents the serial number of the client 230 Property Name Description Type Default Range Access Type certificate. This setting is used only if ConsumerURL is an HTTPS URL. This setting should be NULL if the client will not use a certificate. Enabled If True, the QoE Monitoring Server will send A/V Metric Reports to the configured consumer. Boolea n ErrorRetryEnable d If True, the QoE Boolea Monitoring Server will retry n when transient errors occur. False N/A Read/Writ e True N/A Read/Writ e Read/Writ e MaxPostBatchSiz Maximum number of e reports to send in one transaction. uint32 50 5-100 MaxQueueSize uint32 50,000 0Read/Writ MAX_INT e The maximum amount of memory (in KB) that is used to cache metric reports on behalf of the consumer. If the queue limit is exceeded, the QoE Monitoring Server will discard the oldest reports first. If MaxQueueSize is set to 0, the buffer size has no upper limit. Because individual reports may range from 2 KB to 8 KB, we recommend against setting MaxQueueSize to less than 10. 231 Enabling or Disabling an HTTP Proxy for QoE Solutions Both the Monitoring Server and the metric report consumer server will usually be located within your organization’s internal network, so you will not need an HTTP proxy. By default, Monitoring Server will not use any HTTP proxy, and it will send the reports directly to the FQDN of the metric report consumer. You can, however, configure Monitoring Server to use the existing proxy settings that are configured for the Monitoring Server by either local machine or Group Policy settings. To enable or disable an HTTP proxy 1. Log on to the Monitoring Server as a member of the Administrators group. 2. Start the Registry Editor: Click Start, and then click Run. In the Open box, type regedit, and then click OK. 3. In the console tree, right-click HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RealTime Communications\{B956FCFA-77F2-4ECA-A3EE-F864B8209C0D}. Create this registry key it is doesn’t exist. 4. Point to New, and then click DWORD Value. 5. In the details pane, in the Name column, type EnableProxyForMetricsConsumer for the new value, and then press ENTER. 6. In the details pane, right-click EnableProxyForMetricsConsumer, and then click Modify. 7. In the Edit DWORD Value dialog box, in the Value data box, do one of the following: To use the Internet Explorer HTTP proxy settings, type 1, and then click OK. To no longer use the Internet Explorer HTTP proxy settings, type 0, and then click OK. 8. Restart the QoE Monitoring service for the changes to take effect. Edge Servers Drilldown For details about Edge Servers, see the Microsoft Office Communications Server 2007 R2 the Edge Server Deployment Guidelines in the Planning and Architecture documentation. Response Group Client Web Service Drilldown The Response Group Service has a Client Web Service, which can be used by 3rd party applications to retrieve information about the Agents, their Agent Group memberships, and signin status. The following operations are supported through the client web service: GetAgent GetGroups 232 IsAgent SignIn SignInMultiple SignOut SignOutMultiple Service Descriptions The following list the service descriptions of the operations within the Client Web Service GetAgent: Returns information about the currently authenticated agent. GetGroups: Returns information about the groups the currently authenticated agent is a member of. For each group, the following information is available: IsAgent: Returns true if the currently authenticated user is an agent. SignIn: Signs the current agent into the given group and returns true when the operation has successfully completed. SignInMultiple: Signs the current agent in to the given groups and returns true when the operation has successfully completed. SignOut: Signs the current agent out of the given group and returns true when the operation has successfully completed. SignOutMultiple: Signs the current agent out of the given groups and returns true when the operation has successfully completed. Client DNS Queries Drilldown This topic gives a brief description of how DNS queries work in Office Communications Server 2007 R2. During DNS lookup, SRV records are queried in parallel and returned in the following order to the client: 1. _sipinternaltls._tcp.<domain>— for internal TLS connections. 2. _sipinternal._tcp.<domain>— for internal TCP connections (performed only if TCP is allowed). 3. _sip._tls.<domain>— for external TLS connections. Where <domain> is the SIP domain used by your internal clients. The last query is useful when clients are connecting from outside your internal network. For details about remote user access, see Planning for External User Access in the Planning and Architecture documentation. The client uses the SRV record that is returned and is successful. The client does not try any other SRV records. After the SRV record is returned, a query is performed for the DNS A record for the host name that is returned by the SRV record. If no records are found during the DNS SRV query, the client 233 performs an explicit lookup of sipinternal.<domain>. If the lookup does not produce results, the client performs a lookup for sip.<domain>. If the client does not find sip.<domain>, it performs a lookup for sipexternal.<domain>. If your DNS infrastructure prohibits configuration of these DNS records, you can manually edit the client registry to point to the appropriate home server. For details about editing the client registry and configuring policy settings for the client, see Deploying Communicator in the Client Planning and Deployment documentation. Application Server Drilldown Application Server is a platform introduced in Office Communications Server 2007 R2 that makes it easier to build server-side applications that run on Standard Edition servers or Enterprise Edition pool servers. Applications developed using the Unified Communication Managed APIs (UCMA) 2.0 can use the Application Server platform as a common framework that leverages Office Communications Server capabilities such as deployment, trust, administration, load balancing and routing, and monitoring. Without Application Server, each application developer would have to create his own deployment, administration and integration story, leading to repeated effort, more time to market, and inconsistent behavior. Proliferation of these different solutions would also lead to complexity in deploying and maintaining the Office Communications Server deployment. Application Server is designed to host server applications that act as SIP endpoints. It is not intended to host Web applications and does not integrate with Internet Information Services (IIS), although applications running on it can expose Windows Communication Foundation (WCF) Web service endpoints. Like the Office Communications Server Conferencing Servers, Application Server is another server role, and when deployed on an Enterprise Edition consolidated pool topology each Application Server application runs on all servers in the pool and together they share the overall workload of the application. The Application Server implementation in Office Communications Server 2007 R2 is the first stage in the evolution of the platform, and in this release it hosts four new applications that come with Office Communications Server 2007 R2: Response Group Service, Outside Voice Control (also known as Call Control Service), Conferencing Attendant, and the Conferencing Announcement Service. However, in this release, Application Server is not supported as a platform for third-party applications. The topics in this section is intended to help Office Communications Server administrators and product specialists have a deeper understanding of the Application Server architecture and applications and prepare them to troubleshoot any issues encountered involving the four Application Server applications included with this release of the product. In This Section Characteristics of the Office Communications Server 2007 R2 Application Server Application Server Configuration Application Server Application Configuration 234 Characteristics of the Office Communications Server 2007 R2 Application Server Architecture Application Server consists of a single Windows service—Application Host (OCSAppServerMaster.exe)—and one or more instances of another Windows service— OCSAppServerHost.exe. Each instance of OCSAppServerHost.exe on a server hosts an Application Server application unique to that server. There will never be multiple instances of any particular Application Server application on a server. In the Enterprise Edition consolidated pool topology, all Front End Servers run identical instances of each Application Server application selected at the time of Office Communications Server installation. The Application Server applications themselves are written as .NET Framework 3.5 managed assemblies. All OCSAppServerHost.exe process instances and the OCSAppServerMaster.exe process run under the RTCComponentService account security context. Each Application Server application leverages the following Office Communications Server 2007 R2 components: WMI – Each application uses the lcwmi WMI provider to store/retrieve global and pool settings. For each Application Server application, all instances in a pool use a common set of settings stored in the backend RTCConfig database. Global settings are stored in Active Directory Domain Services. Unified Communications Managed APIs (UCMA) 2.0 –Application Server applications interface these APIs to access the SIP and media stack on each front end server. Communications between the Application Server applications and other SIP endpoints all route through a SIP Proxy in the same pool as the application (but not necessarily on the same physical server). Contact Objects/Trusted Services – Application Server applications are SIP Application Endpoints and as such require a SIP Address of Record (AOR) in the form of a SIP URI or Tel URI. This is accomplished by assigning an Active Directory Domain Services Contact object to each application and setting the application as a Trusted Service. These assignments enable the application to act as a SIP User Agent without having to authenticate or register, and enables them to subscribe to the presence of registered users and publish presence on behalf of registered users. Management – The Office Communications Server 2007 R2 Management Console exposes service start-up and shut-down control of the Application Server services on a per-server basis in the same way it provides control of the other Office Communications Server 2007 R2 services, such as the Front End services or Conferencing Servers. If an Application Server application requires pool-level configuration, the Management Console can list the application under the new Applications option under the pool’s Properties menu in Office Communications Server 2007 R2. This will launch a new snap-in for managing that 235 application’s pool level settings. (In R2, only the Response Group feature requires pool-level configuration.) The Management Console also can expose property sheets on the Forest container as needed to configure global properties associated with the Application Server application. In Office Communications Server 2007 R2, Communicator 2007 R2 Attendant is the only Application Server application that requires configuration at this level. Because all Application Server application instances in a pool are identical, configuration of Application Server applications on a per-server basis is unnecessary. Installation/Activation – the Application Server environment and each Application Server application are packaged as Windows installer (.MSI) files called from the main Office Communications Server installation program (if one or more Application Server applications were selected for installation). After you install it, they are activated or deactivated in AD DS using lcscmd.exe /server:<appserver> /action:Activate|Deactivate /Role:AppServer. Logging –Application Server applications can expose new components to the Office Communications Server 2007 R2 Logging Tool (OCSLogger.exe) for tracing communications with the application. Other Key Application Server Characteristics Distributed Workload The Office Communications Server Application Host process does not listen on the network at all, but like the Office Communications Server Conferencing Servers, each Application Server application has a TCP port assigned to it. All servers in the pool listen on those assigned ports for each the specific Application Server application they host, and the hardware load balancer also listens on those ports and distributes inbound traffic to Application Server application instances on a server in the pool. All SIP communications with an Application Server application occurs over TLS between a SIP Proxy in its pool using the pool’s SSL certificate, even if the Application Server application instance happens to be on the same physical server as the SIP Proxy. As with other UC endpoints, media communications are direct between the client and the Application Server application instance that took the call. For example, once a call has been routed to a Conferencing Attendant instance, the audio media flows directly between it and the Mediation Server that handled the call. Stateless Application Server applications are stateless in that they do not persist data between sessions, and each instance operates autonomously of the other instances of that application in the pool or across pools. All Application Server instances of a particular application are equivalent across servers in pool and do not communicate with each other or another server process (unlike the Conferencing Servers, which communicate state information to the Conferencing Server Factory). Furthermore, Application Server applications do not register with the SIP Registrar and thereby do not support multiple points-of-presence. A call to an Application Server application is routed to only one Application Server instance and the other instance remain unaware of that call. 236 The Office Communications Server Application Host service (OCSAppServerMaster.exe) also does not monitor the state of the Application Server applications on its server, other than monitoring whether the instances are running and if it detects an unhandled exception in the application, it will restart it automatically. Application Server Configuration In Office Communications Server 2007 R2, the Application Server infrastructure has no configurable post-installation settings (during installation, the RTCComponentService service account is assigned and the service is set for automatic start with a dependency on Windows Management Instrumentation [WMI]). A WMI Class exists in the LCWMI provider for Application Server settings— MSFT_SIPApplicationServerSetting—but currently there is no data store for this class. Because Application Server is a separate Office Communications Server 2007 R2 role, at the time of activation an msRTCSIP-ApplicationServer Service Connection Point (SCP) for each Application Server-role server is published in Active Directory Domain Services separate from SCPs of the other roles, such as the Front-End services and the Conferencing Servers. Application Server Application Configuration In the Office Communications Server 2007 R2 implementation, the Application Server applications retrieve settings information via WMI. Global settings are stored in AD, while pool level application settings are stored in the RTCConfig database. As mentioned earlier, some of these settings are established at time of activation, while others are configurable from the Office Communications Server 2007 R2 Management Console. All are viewable and configurable using the WBEMTEST utility and the global settings can also be accessed using ADSIEDIT.MSC. Global Settings MSFT_SIPPoolSetting – each pool is represented by an instance of this class. One if its properties—Applications Property— is a multi-valued array containing the names of the Application Server applications installed in the pool. MSFT_SIPApplicationContactSetting – this class contains instances for each Contact object required by the Application Server applications. If all four R2 Application Server applications have been installed, activated, and configured, there will be instances for each pool’s Response Group Presence Watcher (RGSPresenceWatcher), Conferencing Announcement Service, Conferencing Attendant (CAAPrivateContactObject), plus one for each Dial-In Conferencing access number configured for the organization. MSFT_SIPTrustedServiceSetting – this class will contain one instance for each Application Server application for each pool, which stores the Distinguished Name (DN), GRUU address, and port number for the Application Server application instances in that pool. 237 Pool Settings MSFT_SIPApplicationConfigSetting – Each pool’s RTCConfig database contains one instance of this class for each Application Server application installed in the pool, and each instance tells the Front End Server the name, labels, and location of the application’s assembly file. Other Pool-level Application settings – An Application Server application can also extend the Office Communications Server 2007 schema to add classes specific to itself. In Office Communications Server 2007 R2, the Response Group service added 11 new classes (and corresponding tables in the RTCConfig database) for storing settings. See Response Group Client Web Service Drilldown for details about these settings. SIP Trunking Drilldown Office Communications Server 2007 R2 enables basic call origination and termination using a Session Initiation Protocol (SIP) trunk to a service provider. In This Section This section contains the following topics: SIP Trunking Drilldown: Supported Scenarios SIP Trunking Drilldown: Supported Topologies SIP Trunking Drilldown: Security Considerations SIP Trunking Drilldown: Bandwidth Considerations SIP Trunking Drilldown: Protocol Flow and Details SIP Trunking Drilldown: High Availability SIP Trunking Drilldown: Supported Scenarios Supported scenarios include the following: An enterprise Office Communications Server user is able to place a local or long distance outbound call to the public switched telephone network (PSTN) by using a service provider Session Initiation Protocol (SIP) trunk. An enterprise Office Communications Server user is able to receive an inbound PSTN call to his/her Direct Inward Dialing (DID) number by using a service provider SIP trunk. If the service provider supports number portability, you can keep your pre-existing DID. The Calling Party Number (that is, used to show caller ID) is supplied (if allowed) for inbound and outbound calls. An active call can be placed on hold and off hold. Any other scenario is outside the scope for the Office Communications Server 2007 R2 release. Some examples include the following: E.911 support for outbound calls. Invoking any service provider call conferencing functionality over the SIP trunk. (This is separate from the conferencing functionality provided by Office Communications Server.) 238 Invoking any service provider call forwarding/redirect functionality over the SIP trunk. (This is separate from the call forwarding/redirect functionality provided by Office Communications Server.) SIP Trunking Drilldown: Supported Topologies The interface for connecting Office Communications Server environment to the Session Initiation Protocol (SIP) trunk of the service provider is made on the external side of a Mediation Server. The following list contains the supported topologies that you can use to enable this connection to your service provider’s SIP trunk: Private connection. In this configuration, the mediation server connects to the SIP trunk using a private network connection to the service provider. For instance, this could be a dedicated MPLS T1 connection installed for the purpose of SIP trunking. VPN connection. In this configuration, the mediation server connects to the SIP trunk using a virtual private network (VPN) connection to the service provider. This could run over a general Internet connection or an existing MPLS wide area network (WAN) connection. Unlike the private connection option, these multi-purpose connections are usually shared and used for multiple scenarios. The purpose for the VPN connection is to create an isolated, secure channel on which the SIP trunked calls are carried. 239 Public Connection. In this configuration, the Mediation Server connects to the SIP trunk by using a direct Internet connection. Unlike the private and VPN options, this topology does not leverage an isolated link to the SIP trunk. SIP Trunking Drilldown: Security Considerations Office Communications Server employs Transport Layer Security (TLS) to secure server/server and client/server SIP signaling and secure real-time protocol (SRTP) to secure media flow. The Mediation Server role has always supported TLS and SRTP on the Office Communications Server facing non-gateway side. With the release of Office Communicator Server 2007 R2, the Mediation Server role now supports TLS and SRTP on the gateway side. However, TLS/SRTP is 240 not supported by all service providers nor is it required in all SIP trunk topologies. This section describes when it is necessary to enable TLS and SRTP on the gateway side of the Mediation Server to ensure a secure deployment. There is only one key condition that requires TLS and SRTP to be enabled. Namely, there is some point in the network path between the Mediation Server and the service provider SIP trunk that is accessible to more than a limited set of non-IT personnel. Private Connection. The connection to the service provider is dedicated and only used to carry SIP trunk packets. Because only authorized IT engineers at the company and the service provider are able to observe this traffic, TLS/SRTP is not required. However, if the service provider supports it, you may still implement TLS/SRTP for an added layer of protection. Be sure that the subnet linking the Mediation Server to the private connection is also private. VPN Connection. Although the network between the Mediation Server and the service provider is likely shared by a number of applications, the virtual private network (VPN) connection effectively creates a dedicated pipe used only to carry SIP trunk packets. The key difference from the physical connection topology is that network isolation is being provided by the encryption capabilities of the VPN rather than physical separation. At minimum, the VPN should encrypt all traffic at a level comparable or better than 128-bit Advanced Encryption Standard (AES). Assuming this is the case, the only people who could observe this SIP trunking traffic would be authorized IT engineers of the company and the service provider, so TLS/SRTP is not required. However, if the service provider supports it, you may still implement TLS/SRTP for an added layer of protection. If you use a VPN appliance, ensure that the subnet linking the Mediation Server to the VPN appliance is also private. Note that if the tunneling mechanism carries User Datagram Protocol (UDP) packets over a TCP transport, this may impact the latency characteristics of the call, given that TCP is a reliable transport while UDP is not. Public Connection. With a public connection, clearly no dedicated connection exists. Quite the contrary, it should be assumed that a large number of people will be able to inspect all SIP trunk-related packets. Enabling TLS and SRTP is strongly advised to ensure a secure deployment. SIP Trunking Drilldown: Bandwidth Considerations SIP trunking services are typically priced according to the maximum number of simultaneous calls. Bandwidth availability needs to be taken into account so that you can take full advantage of the peak capacity that you have paid for. The bandwidth needs are determined as follows: SIP Trunk Peak Bandwidth = Max Simultaneous Calls x 80kbps The 80kbps value reflects 64kbps for the G711 codec plus 16kbps of packet overhead. In reality, the bandwidth will be somewhat lower due to silence suppression. That means the Mediation Server and the service provider stops sending real-time transport protocol (RTP) media packets when the respective participant is not talking. For audio sent by the Mediation Server, silence suppression will reduce the bandwidth by roughly 35%. The challenge is that bandwidth planning is usually symmetric, and each service provider implements different degrees of silence 241 suppression (or perhaps no silence suppression at all). Therefore, it is best to plan for the full 80kbps bandwidth unless you have further information regarding the silence suppression characteristics of your particular service provider. In the private connection topology, it is easy to plan your bandwidth because it is a dedicated link. Simply compute your SIP trunk peak bandwidth, and then obtain at least that much bandwidth in your dedicated connection. In the virtual private network (VPN) connection topology, how you plan your bandwidth depends on the network that the VPN is running over. If the VPN is running over a controlled link between your company and the service provider (for example, a corporate MPLS link), compute your SIP trunk peak bandwidth and set aside that much bandwidth on the link for the VPN connection. If the VPN is running over an uncontrolled link (for example, a public internet connection), compute your SIP trunk peak bandwidth and reserve that much bandwidth on your link for the VPN connection. This prevents a saturated link from causing bandwidth issues for your SIP trunk. However, this does not guarantee that your SIP trunk traffic will not be affected by congestion on the Internet. Therefore, running a VPN over an Internet connection is not recommended for deployments that require a high service level agreement (SLA). From a bandwidth standpoint, the public connection topology is handled similarly to running a VPN connection over an Internet connection. Compute your SIP trunk peak bandwidth and reserve that much bandwidth on your public connection link. This prevents a saturated link from causing bandwidth issues for your SIP trunk. However, this does not guarantee that your SIP trunk traffic will not be affected by congestion on the Internet. Again, running a VPN over an Internet connection is not recommended for deployments requiring a high SLA. SIP Trunking Drilldown: Protocol Flow and Details This topic describes the various Session Initiation Protocol (SIP) trunking protocol flows. SIP Call Flow and State Machine The implementation of SIP trunking in Office Communications Server 2007 R2 supports a constrained set of call scenarios. The diagram below reflects a high-level state machine for a call leg between the Mediation Server and the SIP trunk. From the Idle state, either the service provider or the Mediation Server could send a SIP Invite, which indicates that a call is being offered. Several provisional responses may be sent, such as 180 Ringing indications. However, a final response will ultimately be sent, such as a 480 Temporarily Unavailable or a 200 OK. In the former case, the SIP dialog fails to be established and the call state reverts to Idle. In the latter case, the SIP dialog succeeds and the call state goes to the Active state. During the Active state, the only supported call mediation command is to place the call on and off Hold. This may be done by either endpoint of the SIP dialog by sending another SIP Invite that contains the appropriate SDP command to indicate the call is active or on hold. From either the Active or On Hold states, the call may be terminated by either endpoint by sending a Bye. 242 Call Hold The Mediation Server only supports one method for placing a call on and off hold. To place a call on hold, an additional SIP Invite will be sent on an active call’s SIP dialog. The Session Description Protocol (SDP) body of this dialog contains a full SDP body containing the line a= inactive. To place a call off hold, an additional SIP Invite is sent on a held call’s SIP dialog. The SDP body of this dialog contains a full SDP body containing the line a=sendrecv. Dual-tone multifrequency (DTMF) The Mediation Server supports sending and receiving DTMF according to RFC 4733. Effectively, this passes a DTMF tone by sending a stream of real-time transport protocol (RTP) packets on the media channel using a payload type specific to DTMF. This is the same mechanism used in the rest of the Office Communications Server system to pass DTMF digits. Early Media New in Office Communications Server 2007 R2, the Mediation Server now supports the negotiation of Early Media on the Mediation Server per RFC 3960. This enables the negotiation and establishment of a media channel prior to the final 200 OK response. This would enable a service provider to send carrier specific in-band ring tones and ensure that no audio is lost when a user answers the phone. It is optional whether the service provider implements it. Uniform Resource Identifier (URI) Formatting All URI formatting is performed according to RFC 3966, where an E.164 number is preceded by a +. The SIP URI must have a trailing user=phone parameter. For an example, see the following: 243 INVITE sip:+14255550101@s1.ms.com;user=phone From: <sip:+14255550101@g1.contoso.com;user=phone> To: sip:+142575550155@s1.ms.com;user=phone This coordinates nicely with the Office Communications Server design of passing numbers in E.164 format. Incoming calls are already in the correct format and can be handled by Office Communications Server inbound routing. Outgoing calls, once normalized, can be passed directly to the SIP trunk as an E.164 number without having to perform any number translation. Codec Support The Mediation Server only supports G.711a and G.711u at a 20ms packet interval. This would be shown in the SDP as follows: a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMU/8000 a=ptime:20 Per RFC 2198, you may have support for sending redundant media packet (also called forward error correction). If it is supported, it is shown in the SDP list as follows: a=rtpmap:97 RED/8000 Finally, you may see a final codec for DTMF as follows: a=rtpmap:101 telephone-event/8000 SIP Trunking Drilldown: High Availability Various degrees of high availability can be achieved with Session Initiation Protocol (SIP) trunking. As with any failover solution, a higher the level of resiliency will come at an increased cost. Following are some different scenarios along with their corresponding high availability mitigation: Mediation Server failure. To protect against a Mediation Server failure, first install a second Mediation Server alongside the existing Mediation Server. Next, add this Mediation Server to any voice routes containing the existing Mediation Server. For outbound calls, Office Communications Server automatically load balances between the two Mediation Servers and route calls failover to just one of the Mediation Servers in case the other server goes down. Therefore, the service provider must be configured to accept SIP trunk calls originating from two source Internet Protocol (IP) addresses. Handling failover for incoming calls is done in an analogous fashion. The service provider should be configured with both gateway Internet Protocol (IP) addresses corresponding to the two Mediation Servers. The service provider should load balance between these servers by sending some calls to one server and some to the other. More importantly, if one server is no longer responding, the service provider must take that Mediation Server out of the pool and only send incoming calls to the active Mediation Servers. 244 Connection failure. To protect against a connection failure, use a second connection for the redundant Mediation Server instance. This second connection ensures that if one of the connections goes down, only one Mediation Server will be affected. The service provider must be able to detect this connection failure for incoming calls and send calls to the other connection. Address Book Server Drilldown The primary function of the Address Book Server and related services is to provide global address list (GAL) information that is retrieved from Active Directory Domain Services (AD DS) and make it available to clients through one of the following services: Address Book File Download Service. Where clients such as Office Communicator and devices such as Office Communicator Phone Edition download address book files, enabling clients to perform local address book queries. Address Book Web Query Service. Where clients such as Office Communicator Mobile send address book queries by using HTTPS to a Web service running on the Web Components Server. If individual clients accessed AD DS directly, it could impact Active Directory and network performance due to excessive Lightweight Directory Access Protocol (LDAP) queries. To make address book updates faster and more efficient, the Address Book Server generates daily address book file and address book database updates that are leveraged by the Address Book File Download Service and Address Book Web Query Service respectively. The secondary and optional function of the Address Book Server is to convert the format of phone numbers that may in a local format (for example, 555-0101) into the RFC 3966/ITU E.164 standardized format (for example, +1.425.555.0101). This conversion is referred to as phone number normalization. Phone numbers stored in Office Communications Server user and contact objects can be normalized by Address Book Server so they can be easily used by the Office Communications Server clients. Although it is preferable for normalized phone numbers to be entered into Active Directory, Active Directory does not perform any phone number normalization itself. The phone number normalization occurs when the Address Book Server reads the phone numbers from the RTC database, normalizes them if necessary, and then writes them into address book files and address book database (RTCAb). Among its daily tasks, the Address Book Server generates a set of compressed full files and delta files for use by the Address Book File Download Service. These files are stored in a standard NTFS folder. The advantage of the full file and delta file generation is that it minimizes the impact of the client download. When an Office Communicator 2007 R2 or Office Communicator Phone Edition (2007 R2 release) client logs on to its Enterprise pool or Standard Edition server, it uses one of two configured URLs (that is, one for internal access and the other for external access) to access the file from the NTFS folder by using HTTPS, HTTP, or by the file URL. When the client downloads the address book file for the first time, the full address book file is downloaded. On subsequent days in most situations, a delta file containing the changes since the last update is downloaded. 245 Relative to Office Communications Server 2007, a key architectural improvement for Address Book services in Office Communications Server 2007 R2 is the addition of an Address Book Web Query Service for mobile clients such as Communicator Mobile (2007 R2 release). Rather than download potentially large address book files, Communicator Mobile (2007 R2 release) clients make on-demand address book queries to the Address Book Web Query Service. Note: The Address Book logic described in the following sections apply to all Office Communications Server deployments except a few special environments with either a very large number of users or a relatively volatile directory. For these types of environments, Office Communications Server Address Book logic behaves differently in a small number of aspects, resulting in slight improvements in CPU and network efficiency. Exceptions for special environments are called out separately in the sections below. In This Section Address Book Server Introduction Address Book Server: File and Database Generation Address Book Server: Address Book File Download Service Address Book Server: Address Book Web Query Service Address Book Server: Advanced Address Book Features Address Book Server Introduction Introduction The primary function of the Address Book Server and related services is to provide global address list information that is retrieved from Active Directory Domain Services and make it available to clients through one of the following services: Address Book File Download Service, where clients such as Office Communicator and devices such as Office Communicator Phone Edition download address book files, which enable the clients to perform local address book queries, and Address Book Web Query Service, where clients such as Office Communicator Mobile send address book queries via HTTPS to a web service running on the Web Components Server. If individual clients accessed the Active Directory Domain Services directly, it could impact Active Directory (AD) and network performance due to excessive LDAP queries. To make address book updates faster and more efficient, the Address Book Server generates daily address book file and address book database updates that are leveraged by the Address Book File Download Service and Address Book Web Query Service respectively. The secondary and optional function of the Address Book Server is to convert the format of phone numbers that may in a local format (e.g. 555-0101) into the RFC 3966/ITU E.164 standardized format (e.g. +1.425.555.0101). This conversion is referred to as phone number normalization. Phone numbers stored in Office Communications Server (OCS) user and contact objects can be normalized by Address Book Server so they can be easily used by the OCS 246 clients. Although it is preferable for normalized phone numbers to be entered into Active Directory, AD does not perform any phone number normalization itself. The Address Book Server normalizes phone numbers for numbers read from the OCS’ Rtc database and then writes the normalized numbers into the address book files and address book database. Among its daily tasks, the Address Book Server generates a set of compressed full files and delta files for use by the Address Book File Download Service. These files are stored in a standard NTFS folder. The advantage of the full file and delta file generation is that it minimizes the impact of the client download. When an Office Communicator 2007 R2 or Office Communicator Phone Edition 2007 R2 client logs on to its Enterprise pool or Standard Edition Server, it uses a configured URL to the Web Components Server Address Book location. IIS (Web Components Server) then retrieves the AB file via the virtual directory pointing to the NTFS folder. By using this URL, the client retrieves a full file the first day it connects to the server and, under most conditions, delta files on subsequent days. Relative to OCS 2007, a key architectural improvement for Address Book services in OCS 2007 R2 is the addition of an Address Book Web Query Service for mobile clients such as Communicator Mobile 2007 R2. Rather than download potentially large address book files, Communicator Mobile R2 clients make on-demand address book queries to the Address Book Web Query Service. NOTE: The Address Book logic described in the following sections applies to all OCS deployments except a few special environments with either a very large number of users or a relatively volatile Directory. For such environments, OCS Address Book logic behaves differently in a small number of aspects, resulting in slight improvements in CPU and/or network efficiency. Exceptions for special environments are called out separately in the sections below. Address Book Server: File and Database Generation This section covers the address book process and the functions of the ABServer.exe process. Address Book Server Data Flow The address book data is retrieved from Active Directory, stored in the RTC database, extracted from the RTC database, and then placed in files and the RTCAb database for use by various clients. The following steps are performed: User Replicator (UR) reads the new or modified (that is, added, deleted, changed) user and contact object information from Active Directory and writes it into the RTC database. This process runs every 60 seconds. ABServer.exe reads the address book information from the RTC database and generates two sets of full and delta (that is, contains only the changes) address book files for use by Office Communicator (that is, with the file extension *.lsabs) and Office Communicator Phone Edition (that is, with the file extension *.dabs). These files are placed in a NTFS directory. ABServer.exe also creates a full database (that is, RTCAb) that is used by the Address Book 247 Web Query Service. By default, ABServer runs on a daily basis at 01:30. Also all phone numbers that cannot be normalized are placed into a .txt file in the same NTFS folder. Office Communicator, Office Communicator Phone Edition, and other related clients download either the full or delta file on a daily basis. They are access either through a file URL (also called a UNC path) to the NTFS folder or through a HTTPS URL (or HTTP if configured). The address book entries are then stored locally in the GalContacts.db and potentially in GalContactsDelta.db. Office Communicator Mobile clients leverage the Address Book Web Query Service, which leverages the latest daily updates in the RTCAb database. Address Book Server Process The Address Book Server process (C:\Program Files\Microsoft Office Communications Server 2007 R2\Server\Core\ABServer.exe) is responsible for generating the address book files (that is, *.lsabs and *.dabs), address book database (that is, RTCAb), and normalizing phone numbers (optional). This process is automatically run daily on one of the Office Communications Server Front End Servers. By default, the first server added to the Office Communications Server pool is given this role. The following table lists the various command-line options. Table 1. ABServer.exe Command-Line Options Command line options Command line option Description arguments -? None Displays all command switches for ABServer.exe. -syncNow None Manually synchronizes the Address Book Server by pausing the service to perform synchronization, and then restarting the service. If you are in a failover scenario and failing over from one server to another and syncNow does not work, check the load-balancer settings. The health monitor for incoming port 135 should point to 5060 (or 5061) on the servers. By default, it will point to 135 on the servers and since 135 is always up when the computer is running the server remains marked as being up even though Office Communications Server Front 248 Command line options Command line option Description arguments End service is down. -regenUR None Forces user replication regeneration. -dumpFile input-file [output-file] Input-file [output-file] Dumps the input file given as the first argument, formatted as text, to the output file given as the second argument. If the second argument is not given, the output file name defaults to the same path and file name as the input file with a .txt extension appended. -testPhoneNorm Phone-number Loads the normalization rules text file and attempts to normalize the phone number arguments. The results are displayed in the command-line window. If the phone number argument contains spaces, the phone number must be enclosed in quotation marks (that is, “ “). -validateDB None Validates the schema and user data in the database. -dumpRules None Displays all rules currently in effect, including generic and custom rules. ABServer.exe also makes use of the following MSFT_SIPAddressBookSetting WMI properties that control its behavior. Table 2. ABServer.exe WMI Properties Property name Type Default value Description MaxDeltaFileSizePer centage Integer 1250 Delta file is not created if percent change is greater than this number. (1250 INVALID USE OF 249 Property name Type Default value Description SYMBOLS 12.5%) OutputLocation String None File location, a valid folder. RunTime Integer(0 to 2359) 130 Service start time based on local time.(130 INVALID USE OF SYMBOLS O1:30 or 1:30am) SynchronizedPollingIntervalSecs Integer 300 Number of seconds between checks for synchronization. UseNormalizationRules Boolean True Flag to perform normalization or not. PartitionOutputByOU Boolean False Flag to partition data by organizational unit (OU). IgnoreGenericRules Boolean False Flag that determines whether or not to use the built-in generic rules. Additionally, there are static Address Book Server settings that are compile-time constants in the code as follows: Output file extension = .lsabs NumberOfDaysToKeep = 30 By default, the SQL maintenance interval is set for 02:00 local time each day. If the Address Book Server runs during this time, its performance is likely to degrade. For this reason, the Address Book Server runs by default at 01:30 local time each day which gives it 30 minutes to complete before it overlaps with the SQL maintenance interval. The service can be configured to run and generate the files in the Address Book Server file store at another time by configuring the MSFT_SIPAddressBookSetting::RunTime WMI setting. You can also force the Address Book Server to do a synchronization pass immediately by using the command ABServer -syncNow. This command is useful in case the address book files are accidentally deleted. You can also use it for testing purposes. ABServer.exe generates various files for use by the Address Book File Download service and a database for use by the Address Book Web Query service. 250 For detailed information about the ABServer.exe process and the WMI attributes, see Administering Address Book Server in the Administering Office Communications Server 2007 R2 documentation. Address Book Server: Address Book File Download Service This topic describes how the address book file download service works. File Generation ABServer.exe generates two sets of files for use by 2 groups of clients. For clients that typically have sufficient local storage space, ABServer.exe generates a file containing the full address book that contains a large set of user and contact object attributes. To optimize download efficiency, it also generates up to 29 delta files that contain incremental updates containing the last one day, two days and up to 29 days worth of changes. These files have the *.lsabs file extension. For clients that have limited local storage such as Microsoft Communicator Phone Experience, ABServer.exe generates a full address book file and up to 29 delta files that contain a restricted set of user and contact object attributes. These files have the *.dabs file extension (that is, device Address Book Server). In Office Communications Server Standard Edition, the Address Book files are stored by default in <drive>:\%ProgramFiles%\Office Communications Server 2007 R2\Web Components\Address Book Files\Files. In Enterprise Edition, the Address Book file store is a shared NTFS folder that the administrator manually creates during setup. The data gathered by the Address Book Server is stored in a binary format in compressed files to minimize storage requirements. The number of days that the delta files are kept is set at the static value of 30 days, and this number cannot be changed. After 59 days (the first 29 days after a fresh start will contain fewer delta files), the Address Book Server reaches a steady state where a set of up to 1800 files, which contain up to 900 *.lsabs and 900* .dabs files, each of which includes 30 full files and up to 870 (that is, 30 days * 29 files/day) delta files. Each time the Address Book Server starts, it determines whether there are data files in the output directory. If no data files are found, it will generate one full file. A delta file is not generated if there are no initial full files from previous days to compare against. The output files are written to the Address Book file store, a folder that can be assigned an access control list (ACL) by using the standard NTFS share permissions. The following table shows how the full files and delta files are generated for both *.lsabs and *.dabs files. Table 1. File Generation Day Day 1 Generated and deleted *.lsabs Generated and deleted *.dabs files files Full (F1) Full (F1) 251 Day Generated and deleted *.lsabs Generated and deleted *.dabs files files Full (F2) Full (F2) Delta of F2 - F1 Delta of F2 - F1 Full (F3) Full (F3) Delta of F3 –F2 Delta of F3 –F2 Delta of F3 –F1 Delta of F3 –F1 Full (F4) Full (F4) Delta of F4 - F3 Delta of F4 - F3 Delta of F4 - F2 Delta of F4 - F2 Delta of F4 - F1 Delta of F4 - F1 Day 5-29 … … Day 30 Full (F30) Full (F30) (reaches a steady state) Delta of F30-F29 Delta of F30-F29 Delta of F30-F28 Delta of F30-F28 … … Delta of F30-F1 Delta of F30-F1 Day 31 Full (F31) Full (F31) (now needs to start deleting files older than 30 days) Delta of F31-F30 Delta of F31-F30 Delta of F31-F29 Delta of F31-F29 … … Delta of F31-F2 Delta of F31-F2 All files from D1 are deleted. All files from D1 are deleted. Full (F32) Full (F32) Delta of F32-F31 Delta of F32-F31 Delta of F32-F30 Delta of F32-F30 … … Delta of F32-F3 Delta of F32-F3 All files from D2 are deleted. All files from D2 are deleted. 30 Full files + 30 days of up to 29 delta files/day = 900 files 30 Full files + 30 days of up to 29 delta files/day = 900 files Day 2 Day 3 Day 4 Day 32 Maximum Total Files (Steady State) 1800 files By default (that is, without organizational unit (OU) partitioning), all data files are stored in one directory. File names for full files are of the form F-xxxx, where xxxx is the file creation date 252 expressed as the hexadecimal 0-based number of days since January 1, 2001. Delta file names are of the form D-xxxx-yyyy.lsabs, where xxxx is the full file creation date, and yyyy is the delta file creation date. Files are also assigned the appropriate *.lsabs or *.dabs file extension. Files are created in memory and are written using a file handle that is created with no sharing allowed so that client applications cannot access a file before it has been completely written. Note: Exception: If a delta file size gets to beyond a certain percentage of the Full file size, a new Full file is generated instead of the incremental delta file. This percentage is specified by the server variable MaxDeltaFileSizePercentage. The default value for this is 1250, or 12.5%. If this percentage is surpassed on the size of the server-side delta file, the server produces a full file instead of a delta file. In this case, the server generates fewer than 30 days of delta file information, which is an exception to its normal logic. If this number is set to a higher value, the chances of forcing a full download decreases. However, there is more client-side processing required to update its local database. Additionally, any change to any attribute of an address book entry causes the entire record to be updated. For example, if the Mobile phone number changes, the entire user address book entry is updated. Organizational Unit and Address Book File Generation It is possible to create different sets of address book files based on the Organizational Unit (OU) property in Active Directory. For example, Active Directory could leverage OUs to partition the Active Directory into two or more logical groups based on business unit (for example, Automotive, Marine) or business function (for example, Sales, Engineering, Manufacturing). By setting the MSFT_SIPAddressBookSetting:PartitionOutputByOU WMI property to True, ABServer.exe creates a number of sets of address book files in a tree of folder names that map to the OU. This setting is passed to clients, which in turn access the address files under the appropriate subdirectory as indicated by the user or contact object’s OU path setting. PartitionOutputByOU can be leveraged in cases in large organizations where it is desirable to restrict the number of contacts or the size of the address book files that are accessed by groups of clients. It is also leveraged in Office Communications Server hosting environments where you need to partition users based on the company. Client and Address Book Server Communication The Address Book URLs (that is, one internal and one external) are the paths that clients use to access the data files in the Address Book Server file store. These URLs are configured under the Address Book tab in the Web Components Properties for the given Standard Edition server or Enterprise pool, and are retrieved through in-band provisioning (absInternalServerUrl and absExternalServerUrl) by the client when it logs on to its Standard Edition server or Enterprise pool. The clients can also have these URLs configured through Group Policy Objects. 253 Office Communicator needs to be configured to access the Address Book file store by using an URL defined in one of the following formats: HTTPS Format. A secure HTTP (HTTPS) URL is the recommended methodology for accessing address book files. HTTP can also be used but is not secure. This method uses the Internet Information Services (IIS) HTTP server(s) which is the core component of the Web Components Server. If you require the file store to be accessible by remote users who are connecting outside the intranet (outside the firewall), the IIS server is required and you must configure HTTPS on your virtual server. File URL Format. The file URL (also called an UNC path) is the other method for accessing address book files. This approach is not recommended because you cannot use it for remote access. The file URL is a standard file URL in the format \\server\share. Standard share and NTFS permissions are applicable to this URL. The clients connect to the file store through the Server Message Block (SMB) protocol. There are two cases when a File URL cannot be used: when remote access is required and if the Office Communications Server pool is set to require encryption. In both of these cases, a HTTPS URL is required. Note: If your clients use an HTTPS URL to access the Address Book Server file store, verify that the client certificate is already trusted by Internet Explorer prior to an attempt by clients to access the Address Book URL. If the client certificate is not trusted, the download fails. The user is not prompted to check the certificate and to configure it as trusted. Consider using a certificate that is trusted by default on your client. The type of authentication required for an Address Book URL varies depending on whether the URL is used for internal or external clients. The following table shows the supported authentication for each type of URL. Table 2. Supported Authentication for Address Book URLs Address Book URL Type Authentication Internal Integrated Windows Authentication (NTLM or Kerberos) External NTLM or HTTPS (basic over Secure Sockets Layer (SSL)) Address Book and Office Communicator The Address Book Client Provider is a module within Office Communicator that is responsible for synchronizing global address list (GAL) contacts with the Office Communicator contact database. Since all GAL contacts are read-only, this synchronization is a one-way process as follows: 1. Office Communicator logs on to the Enterprise pool or Standard Edition server using its logon logic. 254 2. Office Communicator accesses the internal and external address book shares by using the URLs provided either by the Group Policy Object (GPO) ABSInsideURL and ABSOutsideURL policy settings, or by retrieving them from the server during the logon process. These URLs are in either HTTPS, HTTP, or File URL format. The GPO settings take precedence over the settings retrieved from the server. If these GPOs are not set and depending on the setting of the AbsUseFallback Group Policy setting, the URLs are retrieved from either the Enterprise pool of the Standard Edition server. For details about these GPOs, see Deploying Communicator in the Client Planning and Deployment documentation and the Microsoft Office Communications Server 2007 R2 Group Policy Settings documentation at http://go.microsoft.com/fwlink/?LinkID=140494. 3. Office Communicator determines whether it is connecting from inside the intranet or connecting from outside through an Access Edge Server and then selects the appropriate URL for the connection. The logon credentials of the Office Communicator client are used to connect to the selected Address Book Server URL. Office Communicator uses the standard Internet Explorer application programming interface (API) to perform the URL authorization. If access is denied, one of the following occurs: If the user is inside the intranet, the client displays an icon indicating an Address Book download failure. The user is not asked for credentials again. If the user is outside the intranet, the user is prompted to enter proper URL credentials. Note: Office Communicator supports the use of a fallback URL for high availability. For details about configuring additional URL entries, see Using WMI to Configure Address Book Server Settings in the Administering Office Communications Server 2007 R2 documentation. Client Download Process If a client is accessing the URL for the first time and successfully connects, the client attempts to download the current full data file. On subsequent days, the client attempts to download a delta file based on the last full synchronization date. During daily client usage, this delta file is based on the previous day’s changes. If the client is offline for a day or more, it determines which delta file it must download to get up to date. For example, if the client is offline from Friday afternoon to Monday morning, it will attempt to download a delta file containing 3 days of changes. If the client is offline for more than 30 days, it is forced to attempt to download the full data file. The client stores this information in the local GalContacts.db database. Storing this information in a local database reduces the time taken to synchronize information on the client computer with the latest information stored in Active Directory, thereby significantly improving the GAL search process. The client will also create an index to the database which is stored in the file GalContacts.db.idx. In the event of a download failure because of network connectivity or other issues, the client retries in time intervals that doubles on each previous failure (that is, 1 minute, 2 minutes, 4 255 minutes, and so on, up to a maximum of 64 minutes, and then retries every 64 minutes). Any data that was downloaded before the failure is discarded, and the retry begins again at the beginning. If the failure persists for more than 24 hours, a warning is displayed, and an application event is added to the Event Log. When the client logs on, it determines if it has been more than 24 hours since the last download. If so, then the current download occurs immediately. Otherwise, download is scheduled at 00:00 UTC (Universal Coordinated Time, also known as GMT). The following exceptions apply: If the address book contains over 50K entries, the client maintains a separate delta database GalContactsDelta.db and index GalContactsDelta.db.idx for GAL contacts, and periodically merges updates into its main database GalContacts.db. This helps reduce the processing required on a daily basis on the client machine in very large environments. There are conditions when the server will not generate some of all of the delta files on the server. This happens when the MaxDeltaFileSizePercentage is exceeded. In this case the client will be forced to download the full address book file. This effectively causes the GalCaontacts.db to be completely replaced. Whenever a full download occurs in the case where there are over 50K entries, the GalContactsDelta.db database will be emptied (as there are no deltas). An additional client-side case is when the client cannot access the relevant delta file (that is, possibly locked, access denied, or not created due to time zones and file download time). In this case the client attempts to access relevant older delta files (that is, up to 2 additional days back). For example, after logging on at 09:00, the client cannot access a delta file containing 4 days of changes on Wednesday (after the files have been generated at 01:30). The client tries to access the delta file generated on Tuesday containing 3 days of changes, and if that cannot be accessed, it tries to access the delta file generated on Monday with 2 days of changes. After successfully accessing one of these older delta files, the client does not try to access additional files until the next day. Although the client does not obtain the latest changes, it will likely get some previous changes, which in turn minimizes the amount of deltas it needs to process the following day. Internet Explorer Dependencies Because Office Communicator uses the standard Internet Explorer API to perform the URL authorization, it depends on the following Internet Explorer settings: Security Settings, including the intranet URL settings. For example, if you are using an Internet (that is, external) type of URL, such as http://server.com/share, for intranet (that is, internal) users instead of an intranet URL, such as http://server/share, unless this URL is configured explicitly as an intranet URL in Internet Explorer, Office Communicator ignores this entry. We recommend that you use an intranet URL for internal users. If you have a specific need to use an Internet URL, you must manually configure this URL as an intranet URL in Internet Explorer, or you must use an Active Directory group policy to configure the URL. 256 Proxy Settings. If you use an HTTP proxy to manage your Web traffic and the Address Book data flows through this proxy, the client cannot access these URLs if the proxy becomes unavailable or if authorization problems occur with the proxy. File Store Recommendations and File Size Guidelines As a best practice, store Address Book data files on separate storage. The storage can be any of the many types, for example a direct access storage device (DASD) or a storage area network (SAN). The storage needs specific to the Address Book Server are very minimal and are expected to be in the range of 20 MB to 5 GB, depending on the number of users in the forest. The size of the full data files depends on the number of users and contacts stored in your Active Directory. The size of the delta files increases with the number of daily changes that occur to users and contacts in Active Directory. A large number of changes increases the delta file size and the time it takes to generate the delta files. On average the *.dabs files are about 25% of the size of the *.lsabs files. This depends on the number of fields that are typically populated. Office Communicator Local Address Book Database Files Office Communicator 2007 R2 stores the local address book database and in the directory: <drive>:\%LOCALAPPDATA%\Microsoft\Communicator\<user>\ The following table shows sample address book files for an organization with approximately 250,000 address book entries (that is, users, contact objects). The file sizes vary depending on various factors such as the number of address book fields that are populated. Table 3. Sample Address Book Files Name Date modified Type Size GalContacts 6/5/2009 9:32 AM Data Base File 99,156 KB GalContacts.db.idx 6/5/2009 9:32 AM IDX File 52,394 KB GalContactsDelta 6/12/2009 8:30 AM Data Base File 3,696 KB GalContactsDelta.db.idx 6/12/2009 8:30 AM IDX File 2,122 KB Address Book and Office Communicator Phone Edition The file download process on the Office Communicator Phone Edition (IP Phones) and related devices is similar to on the process for Office Communicator, with the main difference being that it downloads the smaller *.dabs files. These files contain a limited set of attributes, specifically displayName, msRTCSIP_PrimaryUserAddress, telephoneNumber (that is, office), and mobile (that is, telephone number). Although this search experience is not as robust as that of Office Communicator, it is fairly effective. Additionally many users do not use the text search capability on IP Phones because it is not as easy to use as using a keyboard with Office Communicator. 257 Additionally predictive text searches may seem to return unexpected results, match phone numbers and names, and have a limited screen for showing result sets. The IP Phones locally implement a method of doing predictive search, enabling a user to query address book text names by using dial pad digits. For example, the digit 2 could map to an “A”, “B” or “C” and 6 could map to “M”, “N” or “O”. Thus, the digit sequence “226” would match address book entries with the name “Cam”, “Bam”, “Can”, and so on. Address Book Web Query Service In enterprise environments, Address Book files can get too large to be reasonably downloadable by mobile clients, such as Communicator Mobile (2007 R2 release). To better target the needs of mobile clients, Office Communications Server 2007 R2 introduces a parallel path for Mobile Address Book data: The Address Book Web Query Service, which leverages the RTCAb database to provide on-demand address book queries for mobile clients. Address Book Server: Address Book Web Query Service The Address Book Web Query Server queries are passed by the client to the Address Book Web Query server by HTTPs (or HTTP if configured). The internal and external URLs are configured on the server under which are leveraged for both Address Book Web Query Server and Distribution List Expansion. These URLs are then passed to the clients through the dlxInternalUrl and dlxExternalUrl in-band provisioning settings. Queries are sent to the Address Book Web Query Server by using HTTPS (or HTTP if configured through the URL). The ASP.net first pre-processes the query and forms an SQL query, which is executed by the SQL Server (or SQL Server Express for SE) using the RTCAb database. Next, post-processing of the results occurs (that is, constructing the information to be sent to the client). The query results are then returned to the client. Following are sample URLs for internal and external Address Book Web Server queries. The specific search attributes are not included. The following table lists the RTCAb database fields that are extracted from the RTC database by ABServer.exe. Table 1. RTCAb Database Fields Name Active Directory name Attribute ID Example Display Name displayName 4 “Sara Davis”, “Dan G Fennell” Office Number telephoneNumber 10 1.425.555.0101 Mobile Mobile 13 1.425.555.0198 258 Name Active Directory name Attribute ID Example SIP Address msRTCSIP_PrimaryUserAddress 9 sarad@contoso.com Primary email address proxyAddress 18 sarad@contoso.com , sara.davis@contoso.com Number The RTCAb database is designed so that additional search fields can be easily added to the database (adding additional fields is currently not supported). The example in the following table shows sample data in the AbAttributeValue table, which is the primary table in the RTCAb database that is used for queries. The UserID column maps to an address book entry (for example, a user or contact object). The AttrID column identifies the attribute (see the previous table), the Value column is the alpha-numeric value of the attribute (for example, “Bill Malone”), and the DTMF column encodes the string value in a numeric format for predictive text dial pad. Table 2. Sample AbAttributeValue Table Ptrn UserId AttrId Value DTMF (dial pad index) 1 365649 10 +1 (425) 5550198 X50198 1*425*5550198*50198 1 365649 10 14255550198 14255550198 1 365649 10 4255550198 4255550198 1 365649 10 5550198 5550198 1 365649 10 0198 0198 1 365649 4 Bill Malone 2455*42837 1 365649 9 Billm 24556 1 365649 9 billm@contoso.com 24556126686761266 1 365649 17 billm@contoso.com 24556126686761266 1 365649 18 billm@contoso.com 24556126686761266 1 365649 18 billm@msg.Contoso.com 245561674126686761266 1 365649 18 billm@titanium.contoso.com 24556184826486126686761266 1 365649 18 billmcontoso.com 2455626686761266 1 365649 18 2455626686761266 24556674126686761266 1 365649 18 billmtitanium.contoso.com 2455684826486126686761266 259 Note: The digit 1 in the dual-tone multifrequency (DTMF) interface is used for various characters (for example, !, @, ., -) and the digits 0 and 1. The symbol * is used to represent a space or other separators. Office Communicator Address Book Queries Currently, Office Communicator is the only client that leverages the Address Book Web Query Service. The Address Book Web Query Service supports a wide set of query options. The following table contains the parameters and default values that can be processed by the Address Book Web Query Service. Although it is not possible for users or administrators to modify this query, this table helps demonstrate how Address Book Query works and how queries may differ for future clients that may leverage this service. Table 3. Parameters and Default Values Parameter Type Default Notes QueryString String Dial Boolean True Determines whether a predictive search query is performed (for example, dial pad queries that leverage the DTMF index) PrefixQueryAttributes String displayName, msRTCSIPPrimaryUserAddress, proxyAddress, telephoneNumber, mobile Attributes where a SQL LIKE comparison operator is used (for example, “Cam” matches “Cameron) ExactQueryAttributes String displayName, msRTCSIPPrimaryUserAddress, proxyAddress, telephoneNumber, mobile Attributes where a SQL = comparison operator is used (for example, “Cam” does NOT match Expression for the query 260 Parameter Type Default Notes “Cameron”) RequestTimeout Query timeout MaxResult Int 50 Maximum results to return ReturnAttributes String givenName, sn, displayName, mailNickName, physicalDeliveryOfficeName, msRTCSIPPrimaryUserAddress, proxyAddress, telephoneNumber, homePhone, otherHomePhone, mobile, otherMobile, otherTelephone, ipPhone, mail, manager Default set of attributes to be returned to the user. Many of these attributes cannot be used in the query string expression The following table lists parameters that Communicator Mobile uses. These are hardwired into Communicator Mobile and cannot be changed. Table 4. Communicator Mobile Parameters Parameter Type Default Notes QueryString String Dial Boolean False Does not support dial pad queries PrefixQueryAttributes String displayName, msRTCSIPPrimaryUserAddress, proxyAddress, telephoneNumber, mobile Uses prefix match (SQL LIKE) ExactQueryAttributes String Expression for the query RequestTimeout Query timeout MaxResult Int 20 Saves network bandwidth ReturnAttributes String givenName, sn, displayName, mailNickName, physicalDeliveryOfficeName, msRTCSIPPrimaryUserAddress, Default set of attributes to be returned to the user. Many of these attributes 261 Parameter Type Default Notes proxyAddress, telephoneNumber, homePhone, otherHomePhone, mobile, otherMobile, otherTelephone, ipPhone, mail, manager cannot be used in the query string expression Queries on Display Name Currently the Address Book Server only supports name-based queries based on display name. It does not support queries based on the Active Directory entries for last name (that is, SN), first name (that is, givenName), and so on. It may also match the user part of the Session Initiation Protocol (SIP) Uniform Resource Identifier (URI) or e-mail address. To support names typed in different orders (for example, “Sara Davis”, “Davis, Sara”, and “Davis Sara”) and users with multiple first or last names (for example, “Pablo Rovira Diez”), multiple entries are placed into the AbAttributeValue table for the display name. For example, the following entries are placed in the table for Pablo Rovira Diez: Pablo Rovira Diez Diez Pablo Rovira Diez, Pablo Rovira Rovira Diez Pablo Rovira Diez, Pablo Since the Address Book Web Query Service leverages the SQL LIKE string matching expression, all of the following strings will match at least one of the table entries, and will return “Diez Pablo Rovira” as a match (in addition to other possible matches). Pa Pablo Pablo Rovira Diez Pablo Diez, P Rovira Rovira Diez P Rovira Diez, P However the following strings will not create a match: Rovira Pablo Pablo Diez The general case for display name index generation is as follows: Simple Case 262 DisplayName = "A B" will support AB B a (Inversed) B,A (Inversed with Comma) Generates 3 indices Complex Case Display Name = “A B C D E” will support ABCDE D E A B C (Last 2 words) D,E A B C (Last 2 words with Comma) E A B C D (Last word) E, A B C D (Last word with Comma) Generates 5 indices (no more, no less) In the case where there are more than two words in the last name, the index based on the display name will most likely need to be leveraged to obtain the desired match. Queries on Phone Numbers To support practical queries based on phone numbers, a number of indices are created. By leveraging the SQL LIKE expression (that is, partial match), you can use a number of useful options for searching phone numbers. The RFC 3966/E.164 phone number “+1.425.555.0101” will get entries with the following indexes: +1.425.555.0101 4255550101 5550101 0101 14255550101 Tel:+14255550101 14255550101 The RFC 3966/E.164 phone number “+01 (23) 456789 x01” will get entries with the following indexes: +01.23.456789.01 012345678901 2345678901 45678901 01 0123456789 Tel:+0123456789;ext=01 263 Address Book Web Query also pre-processes queries to remove any extraneous symbols. For example, the string +1(425) 555-0101 would be translated to 14255550101 before running the query. Sorting Query Results Currently, Communicator Mobile only retrieves for the first 20 matches for a given query. The Address Book Query Server searches for the first 100 matches for any query, of which only the first 20 entries in the result set are passed back to the client (that is, based on the actual query sent by the client). For performance reasons the Address Book Query Server does not attempt to process more than 100 matches. For example, if a user tries to query “Bo”, only the first 100 matches that SQL Server finds are returned. In cases where there are more than 100 potential matches, the query does not fetch every attribute that begins with a “Bo” (for example, every user with a first name or last name that begins with a “Bo”, a SIP URI that begins with a “Bo”, and so on) and sort them, as this would take up significant database cycles. Although this is not optimal, it achieves a decent tradeoff between functionality and performance. In general, most users refine their query and re-submit it rather than scrolling through pages of query results. There are a few issues when a user attempts to search for a common name. For example, if a user searched for “Daniel” and there were more than 100 “Daniels” in the address book, 100 random matches would be returned and subsequently sorted. The user may see “Daniel Park” and “Daniel Taylor” sequentially and assume that “Daniel Roman” (that is, alphabetically between Park and Taylor) is not in the address book. However, this is not necessarily the case because “Daniel Roman” may not have been in the set of 100 entries returned and would not be presented in the list. In this case the user would be expected to enter a more refined query. Predictive Text Queries The AbAttributeValue database table also has a column for DTMF queries. This is a special index created to support predictive text queries where telephone dial pads are used to enter queries. For example, the digit 2 could represent an “A”, “B” or “C”. Thus if a user keyed in “226”, it would match any existing entries that start with “226” in the DTMF column (for example, “Cam”, “Cameron”, “Candice”, “Bam”, etc.). Although this query is supported by the Address Book Web Query Server, there are no clients that currently leverage this interface. Note: Communicator Mobile performs numeric matches on office and mobile phone numbers and any SIP or e-mail address that leverages digits. However these queries do not leverage the predictive text query algorithms. Address Book Web Query Database The Address Book Web Query RTCAb database is collocated as a separate SQL Server instance on the same SQL Server as the RTC database for the given pool. The database leverages the same high availability features as the RTC database. The database should also be included in 264 any backup plan, although historical copies are not relevant and the database can be regenerated by using the ABServer –syncnow command. The database is implemented by using two database partitions, where each partition contains a complete copy of the address book. At any given point in time, one partition is active, which means it is being used by Address Book Web Query Server for handling queries from clients. The other partition is then available to the ABServer.exe process for the next nightly update. After the update process is finished (that is, committed to the database), this new partition becomes active. This technique helps enable optimal performance as there are no locking contention issues in the database (that is, all queries are read-only). The size of the RTCAb is modest and is dependent on the number of contacts in the address book and the number of fields populated. SQL Server also reserves significant space for the creation and maintenance of the database and various indices. Address Book Web Query Database Language Support The Address Book Web Query RTCAb database currently uses the Latin1_General_CI_AI (that is, Case Insensitive, Accent Insensitive) database collation. In SQL Server, collations control various language-specific rules for how comparisons (that is, SQL = and LIKE) and sorts (that is, SQL ORDER BY) behave. The Latin1_General collation supports various Latin-based languages that have the same superset of order and sorting rules, including Dutch, English, German, Italian, and Portuguese/ Brazilian. There are languages where the general rules of Latin largely apply to (for example, Modern Spanish and French) but may have some subtle issues around comparison and sorting (for example, certain ligatures may not be correctly sorted). For other languages, such as Japanese and Simplified Chinese, where the rules of Latin have no influence, sorting and comparison are dictated by the underlying characteristics of Unicode. In languages with a large number of characters, users often rely on exact match and not necessarily matches based on a partial letter match. Not having correct alphabetical ordering may not be as much of an issue as it is with languages like English. Address Book Web Query Server Performance The Address Book Web Query Server and RTCAb database generally only have a minimal impact on performance the Web Components Server (typically running on the Front-End servers) and the back-end server. Currently, only the Communicator Mobile clients use Address Book Web Query Server and queries on this device are explicitly controlled by the user when they use the Search function, as opposed to being performed automatically as a user types in a name or phone number. The Address Book Web Query ASP.net process is relatively lightweight and the back-end database processing is all read-only queries on a database that is updated once per day. The Address Book Query service does not pose any significant performance bottleneck, and whatever impact it has can be resolved by general performance tuning on the front-end and back-end servers. 265 Address Book Server: Advanced Address Book Features This topic discusses advanced Address Book Server features, like phone number normalization, User Replicator, and filtering. Address Book Server Phone Number Normalization Office Communicator requires standardized RFC 3966/E.164 phone numbers. To use phone numbers that are unstructured or inconsistently formatted, Office Communications Server relies on the Address Book Server to perform phone number translation in conjunction with mapping rules. If the UseNormalizationRules WMI property is set to TRUE, ABServer.exe reads the phone numbers from the RTC database, normalizes them (if necessary), and then writes the normalized values into the address book (that is, download) files and the Address Book Web Query database RTCAb. Clients, such as Office Communicator and Communicator Mobile, can use these normalized numbers. You can apply two types of rules to phone numbers. One type is the set of generic rules that are automatically performed by the server. The other type is a set of sample company rules that can be edited and is included in the installation folder alongside ABServer.exe. The sample company rules include a comment at the start of the file informing the administrator that if they want specific rules for their company, they should copy the sample file to the output location for the pool and change the name to Company_Phone_Number_Normalization_Rules.txt, so that it will be used for future synchronization passes. If the UseNormalizationRules WMI flag is set to TRUE, the rules are applied to those Active Directory attributes with 0x2000 bit set in the Flags column value. If the 0x1000 bit is set in the Flags column value, the associated Active Directory attribute value is always normalized. Sample_Company_Phone_Number_Normalization_Rules.txt is the sample file in which you configure rules specific to your company requirements. To use this file, copy it to Company_Phone_Number_Normalization_Rules.txt. Otherwise, Address Book Server will use only the generic rules configured by default on the server. Note: When you remove the Address Book Server, Company_Phone_Number_Normalization_Rules.txt is not deleted. If you want to remove this file, you must delete it manually. User Replicator and Address Book Server The Address Book Server uses data provided by User Replicator to update the information that it initially obtains from the global address list (GAL). User Replicator writes the Active Directory attributes for each user, contact, and group into the AbUserEntry table in the database and the Address Book Server syncs the user data from the database into files in the Address Book Server file store and into the Address Book Web Query database RTCab. The schema for the AbUserEntry table uses two columns, UserGuid and UserData. UserGuid is the index column and contains the 16-byte GUID of the Active Directory object. UserData is an image column which contains all of the previously mentioned Active Directory attributes for that contact. 266 User Replicator determines which Active Directory attributes to write by reading a configuration table located in the same SQL instance as the AbUserEntry table. The AbAttribute table contains three columns, ID, Name and Flags. The table is created during database setup. If the AbAttribute table is empty, User Replicator skips its AbUserEntry table processing logic. Address Book Server attributes are dynamic and are retrieved from the AbAttribute table, which is initially written by the Address Book Server when the Address Book Server is activated. Address Book Server activation populates the AbAttribute table with the values needed to support Office Communicator 2007 R2. The following table shows those current values. Table 1. AbAttribute Table Values ID Name Flags 1 msExchHideFromAddressLists 0xFF000003 2 givenName 0x01000000 3 Sn 0x02000000 4 displayName 0x03020000 5 Title 0x04000000 6 mailNickname 0x05000400 7 Company 0x06000000 8 physicalDeliveryOfficeName 0x07000000 9 msRTCSIP-PrimaryUserAddress 0x08020800 10 telephoneNumber 0x09022800 11 homeNumber 0x0A002800 12 otherHomeNumber 0x0A002000 13 Mobile 0x0B022800 14 otherMobile 0x0B002000 15 otherTelephone 0x0C002000 16 ipPhone 0x0D002000 17 Mail 0x0E000000 18 proxyAddresses 0x00000105 19 groupType 0x0F010800 20 ManagerouPathId 0x10000000 21 0x11000800 267 The numbers in the ID column must be unique and should never be reused. Also, keeping the ID values below 256 saves space in the output files written by the Address Book Server. However, the maximum ID value is 65535. The Name column corresponds to the Active Directory attribute name that User Replicator should put in the AbUserEntry table for each contact. The value in the Flags column is used to define the type of attribute. The following types of Address Book Server attributes are recognized by User Replicator, indicated by the low byte of the value in the Flags column. Table 2. Address Book Server Attributes Recognized by User Replicator Attribute Description 0x0 A string attribute. User Replicator converts this type to UTF-8 before storing it in the AbUserEntry table. 0x1 A binary attribute. User Replicator stores this in the blob without any conversion. 0x2 A string attribute, but is included only if the attribute value begins with "tel:". This is primarily for multi-valued string attributes, specifically proxyAddresses. In this case, Address Book Server is interested only in proxyAddresses entries that begin with "tel:". Therefore, in the interest of saving space, User Replicator stores only the entries that begin with "tel:". 0x3 A Boolean string attribute, which if TRUE causes User Replicator to not include this contact in the AbUserEntry table. If FALSE, it causes User Replicator to include the attributes for this contact in the AbUserEntry table, but not the particular attribute with this flag. This is another special case type that is primarily for the msExchHideFromAddressLists attribute. 0x4 A string attribute, but is included only if the attribute value begins with "smtp:" and includes the "@" symbol. 0x5 A string attribute, but is included only if the attribute value begins with either "tel:" or "smtp:" and includes the "@" symbol. 0x100 If set, this is a multi-valued attribute that can appear more than once for each contact. 268 Attribute Description 0x400 If set, this identifies the e-mail alias attribute for a contact. Address Book Server uses this flag to identify which attribute value to show in the phone normalization event log entry. 0x800 If set, this identifies a required attribute for a contact. Address Book Server includes a user in the AbUserEntry table only if there is a value for this attribute in Active Directory. If there is more than one required attribute, only one of them is required to have a value to include the user in the AbUserEntry table. 0x1000 If set, Address Book Server always normalizes the value of this attribute. 0x2000 If set, Address Book Server uses the normalized number from proxyAddresses, if the UseNormalizationRules WMI setting is FALSE; otherwise it behaves the same as when the flag bit is 0x1000. 0x4000 If set, Address Book Server does not include objects in the AbUserEntry table that have this value for the specified attribute. For example, if the msRTCSIP-PrimaryUserAddress attribute has this flag bit set, then contacts that have this attribute are not written to the database. 0x8000 If set, Address Book Server does not include objects in the AbUserEntry table that do not have this value for the specified attribute. If both the 0x4000 and 0x8000 flag bits are set on an object, the attribute with the flag bit value set to 0x4000 takes precedence, and the object is excluded from the AbUserEntry table. 0x10000 If set, this represents a group object. User Replicator uses this flag bit to include contacts with the groupType attribute whose presence indicates a group (for example, a distribution list or security group). 0x20000 If set, User Replicator uses this flag bit to include this attribute in device-specific Address 269 Attribute Description Book Server files (that is, files with a .dabs extension). Filtering the Address Book The users populated in the Address Book Server files can be controlled based on certain Active Directory Attributes listed in the AbAttribute table. One such attribute used for filtering is the msExchangeHideFromAddressBook attribute. This is a user attribute added by the Exchange schema. If the value of this attribute is TRUE, Exchange Server uses this attribute to hide the contact from the Outlook GAL. Similarly, if the value of this attribute is TRUE, User Replicator does not include that user in the AbUserEntry table and this user will not be in the Address Book Server files. You can use some flag bits to define a filter to use on Address Book Server attributes. For example, the presence of certain flag bits can identify an attribute as an include attribute or an exclude attribute. User Replicator filters out contacts that contain an exclude attribute and filters out contains that do not contain an include attribute. Currently, there are three different filters. The following table lists these filers. Table 3. Filters Attribute Description 0x800 If set, this identifies a required attribute for a contact. User Replicator uses this flag bit to filter out contacts that do not contain at least one required attribute. The OuPathId is a required attribute, which is always set. So at least one of other required attributes should be set. Otherwise, contact (that is, with value of required attribute OuPathId) will still not be written to database. For example, if telephoneNumber and homePhone are defined as required attributes, only the contacts that have at least one of these attributes are written to the database. 0x4000 If set, this identifies an exclude attribute. User Replicator uses this flag bit to filter out contacts that contain this attribute. For example, if msRTCSIP-PrimaryUserAddress is defined as an exclude attribute, contacts that have this attribute are not written to the database. 0x8000 If set, this identifies an include attribute. User 270 Attribute Description Replicator uses this flag bit to filter out contacts that do not contain this attribute. For example, if msRTCSIP-PrimaryUserAddress is defined as an include attribute, only the contacts that have this attribute are written to the database. Note: If both the 0x4000 (exclude attribute) and 0x8000 (include attribute) flag bits are set, the 0x4000 bit overrides the 0x8000 bit and the contact is excluded. Although you can filter the Address Book to include only certain users, limiting entries does not limit other users' ability to contact the filtered users or to see their presence status. Users can always find, manually send instant messages, or manually initiate calls to users not in the Address Book by entering a user's complete sign-in name. Also, Office Communicator 2007 R2 can use contact information for a user in Outlook or the Windows Address Book. While having full contact records in the Address Book files enables you to use Office Communicator 2007 R2 to initiate e-mail, telephone, or Enterprise Voice calls (that is, if Enterprise Voice is enabled on the server) with users that are not configured for Session Initiation Protocol (SIP), some organizations prefer to include only SIP-enabled users in their Address Book Server entries. You can filter the Address Book to include only SIP-enabled users by clearing the 0x800 bit in the Flags column of the following required attributes: mailNickname, telephoneNumber, homePhone, and mobile. You can also filter the Address Book to include only SIP-enabled users by setting the 0x8000 (include attribute) in the Flags column of the msRTCSIP-PrimaryUserAddress attribute. This also helps to exclude service accounts from the Address Book files. After you modify the AbAttribute table, you can refresh the data in the AbUserEntry table by running the abserver.exe –regenUR command. After UR replication completes, you can update the file in the Address Book Server file store by manually running the abserver.exe –syncNow command. Management of Office Communications Server 2007 R2 Office Communications Server 2007 R2 provides several administrative tools to facilitate the management of servers and users in an Office Communications Server 2007 R2 deployment. This section provides a description of the tools and information about key management and operations tasks for Office Communications Server 2007 R2. In This Section 271 Administrative Tools Overview Installation and Use of Administrative Tools Troubleshooting for Office Communications Server 2007 R2 Load Balancers for Office Communications Server 2007 R2 Media Ports Voice Quality of Service (QoS) WMI Settings for Office Communications Server 2007 R2 Client Registry Keys/GPO for Office Communications Server 2007 R2 In-Band Provisioning over SIP Administrative Tools Overview Office Communications Server 2007 R2 provides dedicated administrative tools. To manage Office Communications Server 2007 R2, you can do either of the following: Install the administrative tools on any server on which Office Communications Server 2007 R2 and its components are installed. Install the administrative tools on a separate computer, such as a centralized administration console on which Office Communications Server 2007 R2 is not installed. Note: The Office Communications Server administrative tools are no longer installed automatically on servers running Office Communications Server, but you can install the tools by using the same Deployment Wizard that you use to install Office Communications Server 2007 R2. The exception is the Office Communications Server 2007 R2 Group Chat Server Configuration Tool, which is installed by default on each computer running Group Chat Server or the Group Chat Compliance service. Administrative Tools The following table describes the tools available for administering Office Communications Server 2007 R2 and its components. Table 1. Administrative Tools Tool Description Availability and use Office Communications Server 2007 R2 snap-in A Microsoft Management Console (MMC) snap-in that is the primary administrative tool for Office Communications Server 2007 R2 servers in an Active Directory domain. Available on any other computer in the domain on which the Office Communications Server 2007 R2 administrative tools are installed. It cannot be used to manage Edge Servers, 272 Tool Description Availability and use Proxy Servers, or other computers not in the domain. Use it to view and configure Office Communications Server 2007 R2 pools, servers, and users, including the settings for the servers and users on Standard Edition servers and in Enterprise pools that are in the Active Directory forest. Office Communications Server 2007 R2 management components for Active Directory Users and Computers Additional functionality for management of Office Communications Server 2007 R2 servers in Active Directory Domain Services (AD DS). It is required for initially enabling each user for Office Communications Server. You can also use it for managing user settings for Office Communications Server 2007 R2 users in the domain, based on the organizational unit (OU) or folder in which they reside, by using the Active Directory Users and Computers snap-in. Available in Active Directory Users and Computers on computers on which the Office Communications Server 2007 R2 administrative tools are installed, but can be used only if the server is in a domain. Office Communications Server 2007 R2 snap-in extension for the Computer Management console An MMC snap-in that is the primary tool for management of Office Communications Server 2007 R2 servers that are not in an Active Directory domain, such as Edge Servers in the perimeter network, as well as Proxy Servers. Available on any computer on which the Office Communications Server 2007 R2 administrative tools are installed. On the local computer, only server-level settings can be managed with this snap-in extension. If the local computer is not running Office Communications Server 2007 R2, you can use Computer Management to connect to an Office 273 Tool Description Availability and use Communications Server 2007 R2 server and then use the Office Communications Server 2007 R2 snap-in extension to manage the server-level settings of that computer. The 2007 R2 version of Communicator Web Access snap-in An MMC snap-in that is the primary administrative tool for Communicator Web Access. Available on any server in the domain on which the Office Communications Server 2007 R2 administrative tools are installed. Response Group Service snap-in An MMC snap-in that is the primary administrative tool for Office Communications Server 2007 R2 servers. Available in the Office Communications Server 2007 R2 snap-in. Response Group Configuration A Web-based tool that is used Tool to create and manage Response Groups. Installed with the Web Components Server or Standard Edition server. Any computer that is in the same forest as the server that is running the Response Group Service can use the Internet Explorer Internet browser to access the Response Group Configuration Tool. Office Communications Server 2007 R2 Group Chat Administration Tool A Group Chat tool to create categories and chat rooms, define their scope and membership, create federated users and groups, manage how users can use the chat rooms, and specify which users are administrators and managers. Can be installed on any computer in the domain available for installation of the Group Chat Administration Tool. Group Chat Server Configuration Tool A Group Chat tool to start, Available on any server stop, and configure Group running Group Chat Server or Chat Servers, configure the the Compliance service. Group Chat database, manage 274 Tool Description Availability and use compliance, and set logging levels. LCSCmd.exe RGSCOT.exe A command-line tool used to prepare Active Directory Domain Services, create Enterprise pools, perform XML-based logging, manage permissions, and install, activate, check the status of, or deactivate servers, as well as to perform backup and restoration operations for Office Communications Server 2007 R2 servers and Enterprise pools. Available on any computer in the domain on which the Office Communications Server 2007 R2 administrative tools are installed. A command-line tool used to create and manage Response Group Service Contact objects. Available on any server in the domain on which the Office Communications Server 2007 R2 administrative tools are installed. This tool is used initially for Active Directory preparation, and then for ongoing backup and restoration operations, so it is not covered in this documentation. For details about how to use this tool for Active Directory preparation and other command-line management tasks, see Preparing Active Directory Domain Services for Office Communications Server 2007 R2 in the Deployment documentation and the Command Line Reference in the Reference documentation. In addition to the administrative tools described in the table, you can use Windows Management Instrumentation Tester (WBEMTest), which ships with the Windows Server 2008 and Windows Server 2003 operating systems, to modify Windows Management Instrumentation (WMI) settings. Run the WBEMTest tool on any computer on which Office Communications Server 2007 R2 is installed. This guide includes specific procedures for using WBEMTest to change WMI settings. For details about WBEMTest, see "Using WBEMTest user interface" at http://go.microsoft.com/fwlink/?LinkId=139797. Note: The Group Chat and Communicator Web Access tools listed in the table are described in separate administration documentation. For details about administering Group Chat and 275 Communicator Web Access, see the Administering Group Chat documentation and the Communicator Web Access (2007 R2 Release) Administration Guide documentation. Permissions Installation of Office Communications Server 2007 R2 administrative tools on a computer that is not running Office Communications Server 2007 R2 requires using an account that is a member of the Administrators group (or an account with equivalent privileges). Using administrative tools requires the following: To administer user account settings, an account that is a member of the RTCUniversalUserAdmins group, or an account with equivalent privileges. For all other Office Communications Server 2007 R2 administration tasks, an account that is a member of the RTCUniversalServerAdmins group, or an account with equivalent privileges. Installation and Use of Administrative Tools You can install and use the Office Communications Server 2007 R2 administrative tools on any computer in the domain that meets the administrative tools prerequisites, such as on a computer that you use as a central administrative console. For details about installation prerequisites, see Internal Office Communications Server Component Requirements in the Supported Topologies and Infrastructure Requirements documentation. Note: Installation and use of Office Communications Server requires that users be members of specific groups. For details about providing appropriate permissions and delegation, see Accounts and Permissions Requirements in the Planning and Architecture documentation. This section covers primarily the use of the Office Communications Server 2007 R2 administrative tools to manage Office Communications Server. For details about installing and using the administrative tools, including the Office Communications Server user management functionality in Active Directory Users and Computers, see the Administering Office Communications Server 2007 R2 documentation. For details about using the LCSCmd.exe command-line tool to manage Office Communications Server, see the Office Communications Server 2007 R2 Command Line Reference Guide in the Reference documentation. For details about other tools for administering other Office Communications Server 2007 R2 components, see the Administering Communicator Web Access documentation and the Administering Group Chat documentation. In This Section This section includes the following topics: Version Restrictions Remote Administration Requirements Installing Administrative Tools 276 Version Restrictions Installing Office Communications Server 2007 R2 administrative tools on the same computer as Office Communications Server 2007 administrative tools or Live Communications Server 2005 with Service Pack 1 (SP1) administrative tools is not supported. Additionally, you cannot administer servers and users from previous versions of Office Communications Server or Microsoft Live Communications Server with the Office Communications Server 2007 R2 administrative tools, nor can you administer Office Communications Server 2007 R2 servers and users with previous versions of the Office Communications Server or Live Communications Server administrative tools. You can use the Move Users Wizard in Office Communications Server 2007 R2 to move users from Office Communications Server 2007. For details about migrating from Office Communications Server 2007 to Office Communications Server 2007 R2, see Supported Migration Paths and Coexistence Scenarios in the Supported Topologies and Infrastructure Requirements documentation and the migration documentation in the Office Communications Server 2007 R2 TechNet Library at http://go.microsoft.com/fwlink/?LinkID=132106. Remote Administration Requirements If you want to use remote administration to deploy or administer Office Communications Server 2007 R2 while Windows Firewall is running, you must configure Windows Firewall to enable the remote administration exception. For details, see "Help: Enable or disable the remote administration exception" in the Windows Server product documentation at http://go.microsoft.com/fwlink/?LinkId=137361. To remotely administer or deploy the Web Components Server, you must also add Inetinfo.exe to the Windows Firewall exceptions list. For details, see "Help: Add a program to the Windows Firewall exceptions list" in the Windows Server product documentation at http://go.microsoft.com/fwlink/?LinkId=137362. Installing Administrative Tools In Office Communications Server 2007 R2, the Office Communications Server administrative tools are not installed by default. To install the administrative tools on a computer running Office Communications Server 2007 R2 or on another computer, such as a management console from which you want to centrally manage Office Communications Server 2007 R2 servers and users, you can use the Deployment Wizard to install the administrative tools, including Response Group Service and Communicator Web Access. For a description of each of these tools, see Administrative Consoles in the Planning and Architecture documentation. Important: Before installing the administrative tools, verify that all prerequisites have been met, including operating system requirements and installation of required updates. For details, see Administrative Tools Software Requirements in the Supported Topologies and Infrastructure Requirements documentation. 277 Use one of the following two procedures to install the Office Communications Server 2007 R2 administrative tools on a computer running a 64-bit version of the operating system or a 32-bit version of the operating system. Note: This topic covers the installation of the Office Communications Server 2007 R2 administrative tools, which are the primary tools for managing Office Communications Server. For information about other tools for managing other optional Office Communications Server 2007 R2 components, see the Communicator Web Access (2007 R2 Release) Administration Guide documentation and the Administering Group Chat documentation. To install the Office Communications Server 2007 R2 administrative tools on a computer running a 64-bit version of the operating system 1. On the computer on which you want to install the Office Communications Server 2007 R2 administrative tools, log on using an account that is a member of the Administrators group (or an account with equivalent privileges) and the Domain Admins group. 2. Do one of the following: Insert the Microsoft Office Communications Server CD, and then click Enterprise Edition. Insert the Microsoft Office Communications Server CD, and then click Standard Edition. If you are installing from a network share to a 64-bit computer, browse to the \setup\amd64 folder on the network share, and then double-click setupEE.exe or setupSE.exe. 3. On the Office Communications Server 2007 R2 Deployment Wizard page, click Administrative Tools. 4. Review the license agreement, click I accept the terms in the license agreement to proceed, and then click OK. 5. Take the appropriate action on each page of the wizard to complete the installation. Note: Installing or removing the administrative tools on a computer running the Windows Vista operating system on which the Security Center service is running with the startup mode set to Automatic may result in the following error message: "Error stopping service since one or more dependent services failed to stop. Please try again." If you close the error message, the process should complete successfully. To install the Office Communications Server 2007 R2 administrative tools on a computer running a 32-bit version of the operating system 1. On the computer on which you want to install the Office Communications Server 2007 R2 administrative tools, log on using an account that is a member of the Administrators 278 group (or an account with equivalent privileges) and the Domain Admins group. 2. On the Microsoft Office Communications Server CD or a network share containing the installation files, browse to the \support\i86 folder. 3. Run vcredist_x86.exe to start the Microsoft Visual C++ 2008 Redistributable Setup wizard. Take the appropriate action on each page of the wizard to complete the installation. 4. Run SQLServer2005_BC.msi to start the Microsoft SQL Server 2005 Backward Compatibility Setup Wizard. Take the appropriate action on each page of the wizard, including using the default for Feature Selection, to complete the installation. 5. Run sqlncli.msi to start the wizard for Microsoft SQL Server Native Client. Take the appropriate action on each page of the wizard, including using the default for Feature Selection, to complete the installation. 6. Run OCSCore.msi to start the Office Communications Server 2007 R2 Core Components Setup Wizard. Take the appropriate action on each page of the wizard to complete the installation. 7. Run AdminTools.msi to start the Office Communications Server 2007 R2 Administrative Tools Setup Wizard. Take the appropriate action on each page of the wizard to complete the installation. Note: Installing or removing the administrative tools on a computer running Windows Vista on which the Security Center service is running with the startup mode set to Automatic may result in the following error message: "Error stopping service since one or more dependent services failed to stop. Please try again." If you close the error message, the process should complete successfully. Troubleshooting for Office Communications Server 2007 R2 Office Communications Server 2007 R2 includes several logging and diagnostics tools that can help troubleshoot an Office Communications Server deployment. The tools include: OCSLogger. Generates logs for different server components while the server is running. Snooper. Protocol analysis tool designed to view logs generated by the OCSLogger tool; loads the supplied log file and shows the messages in its display. Snooper is part of Microsoft Office Communications Server 2007 R2 Resource Kit Tools. The Resource Kit includes documentation for using the tool. Office Communications Server also includes ms-diagnostics headers that are error code extensions that solve the need for more granular SIP error codes to communicate diagnostic information through a new ms-diagnostics header. There are two purposes of these error code extensions: 279 Convey diagnostic information to help troubleshoot infrastructure (server) problems, misconfigurations, syntactical problems and other reasons for a non-successful SIP response. Convey actionable error codes to the client, which can then be used by the client applications, such as the Live Meeting client and Office Communicator, to display appropriate errors to the user. The error IDs and reason values for ms-diagnostic headers are documented in the “Appendix A: Diagnostics Header Error ID and Reason Values” section of the [MS-OCER]: Client Error Reporting Protocol Specification at http://go.microsoft.com/fwlink/?LinkId=144413. Load Balancers for Office Communications Server 2007 R2 A hardware load balancer is required in an Enterprise pool with more than one Enterprise Edition server. A load balancer is not required for a Standard Edition server or a single Enterprise Edition Front End Server. A load balancer is required, for arrays of Office Communications Server 2007 R2 Edge Servers. The load balancer performs the critical role of delivering scalability and high availability across multiple servers connected to a centralized database on the Office Communications Server 2007 R2, Back-End Database. Prerequisites for a Load Balancer Connecting to a Pool Before configuring a load balancer to connect to the Office Communications Server 2007 R2 Enterprise pool, you must configure the following: A static IP address for servers within your pool. For each server within the pool, a certificate issued for server authentication by a certification authority in the pools local domain. A virtual IP (VIP) address and a DNS record for the load balancer. Test users created and SIP-enabled in the pool. Install root certificate from the certification authority (CA) in the domain (or trusted CA) on client computers. Log on to all servers in the pool using TLS to ensure certificates are working. Load Balancer Requirements A load balancer for the Office Communications Server 2007 R2 Enterprise pool must meet the following requirements: Must expose a VIP Address through ARP (Address Resolution Protocol). The VIP must have a single DNS entry, called Pool FQDN. The VIP must be a static IP address. 280 Must allow multiple ports to be opened on the same VIP. Specifically, it must expose the ports described in the following table. Ports Required Port Use 5060 SIP communication over TCP. 5061 SIP communication over TLS. 135 To move users from a pool and other remote DCOM-based operations. 443 HTTPS traffic to the pool URLs. 444 Communication between the focus (Office Communications Server 2007 R2 component that manages conference state) and the conferencing servers. 5065 SIP listening requests for Application Sharing. 5069 Monitoring Server. 5071 SIP listening requests for Response Group Service. 5072 SIP listening requests for Conferencing Attendant. 5073 SIP listening requests for Conferencing Announcement Server. 5074 SIP listening requests for Outside Voice Control. 8404 TLS (remoting over MTLS) listening for interserver communications for Response Group Service. The load balancer must provide TCP-level affinity. This means that the load balancer must ensure that TCP connections can be established with one Office Communications Server 2007 R2 in the pool and all traffic on that connection destined for that same Office Communications Server 2007 R2. The load balancer must provide a configurable TCP idle-timeout interval with a maximum value greater than or equal to the minimum of the REGISTER refresh or SIP Keep-Alive interval of 30 minutes. The load balancer should support a rich set of metrics (round robin, least connections, weighted, and so forth). A weighted least connections-based load balancing mechanism is recommended for the load balancer. This means that the load balancer will rank all Office 281 Communications Servers 2007 R2 based on the weight assigned to them and the number of outstanding connections. This rank will then be used to pick the Office Communications Server 2007 R2 to be used for the next connection request. The load balancer must be able to detect Office Communications Server 2007 R2 availability by establishing TCP connections to either port 5060 (SIP over TCP), 5061 (SIP over TLS), and 444 (conferencing over HTTPS), depending on which is active (often called a heartbeat or monitor). The polling interval must be a configurable value with a minimum value of at least five seconds. The load balancer must not select an Office Communications Server 2007 R2 that shuts down until a successful TCP connection (heartbeat) can be established again. Every Office Communications Server 2007 R2 must have exactly one network adapter. Multihoming an Office Communications Server 2007 R2 is not supported. The network adapter must have exactly one static IP address. This IP address will be used for the incoming load-balanced traffic. The computer must have a registered FQDN. The IP address registered for this FQDN must be publicly accessible from within the enterprise. The load balancer must allow for adding and removing servers to the pool without shutting down. The load balancer must be NAT (network address translation) capable. When you configure the load balancer, you need to request the relevant network and DNS administrator for a VIP (virtual IP) address for the load balancer, as well as a static IP address for every server that you plan to deploy in the Enterprise pool. Supported Load Balancer Configurations Most load balancers can be configured to operate in either Secure Network Address Translation (SNAT) mode or Destination Network Address Translation (DNAT) mode. With SNAT, both the source and IP destinations are changed as a TCP request passes through the Load Balancer. With DNAT, only the destination IP address is changed and the source IP address is passed through intact. Destination network address translation (DNAT) is not supported for load balancing of an Enterprise pool or Communicator Web Access, but both DNAT and source network address translation (SNAT) are supported for load balancing of Edge Servers and HTTP The issues with DNAT are related to inter-server communication within a pool (specifically, members of a pool trying to connect to their own VIP), which will fail in a DNAT configuration. In any location with multiple Edge Servers deployed behind a load balancer, the external firewall cannot function as a network address translation (NAT). However, in a site with only a single Edge Server deployed, the external firewall can be configured as a NAT. If you do so, configure the NAT as a destination network address translation (DNAT) for inbound traffic—in other words, configure any firewall filter used for traffic from the Internet to the Edge Server with DNAT, and configure any firewall filter for traffic going from the Edge Server to the Internet (outbound traffic) as a source network address translation (SNAT). The inbound and outbound filters must map to the same public IP address and the same private IP address. For details about load balancing pools, see Enterprise 282 Edition in the Planning and Architecture documentation. For details about load balancing Edge Servers, see External User Access Components in the Planning and Architecture documentation. For details about load balancing Communicator Web Access, see Communicator Web Access Support in the Planning and Architecture documentation. For details about Directors, see Director Component in the Supported Topologies and Infrastructure Requirements documentation. For details about load balancing support in Office Communications Server 2007 R2, see Environmental Requirements in the Supported Topologies and Infrastructure Requirements documentation. Also, Direct Server Return is a third variant of NAT. Direct Server Return is not supported. Media Ports This section describes port range requirements for media traffic. For information on configuring non-media ports (for example, an overall system-wide ports table), see the Planning and Architecture documentation. For a complete list of all edge server, firewall, and external load balancer port settings, see the Deploying Edge Servers for External User Access documentation. For details about load balancer configuration, see Load Balancers for Office Communications Server 2007 R2. In This Section Mediation Server for Office Communications Server 2007 R2 Media Port Range for Office Communications Server 2007 R2 Mediation Server for Office Communications Server 2007 R2 The internal edge of a Mediation Server should be configured to correspond to a unique static route that is described by an IP address and a port number. This IP address must be the one corresponding to the IP address from the DNS resolution of the FQDN of the Mediation Server. The default port is 5061. The external edge of a Mediation Server should be configured as the internal next-hop proxy for the media gateway. It should be identified by a unique combination of IP address and port number. The IP address should not be the same as that of the internal edge, and the default port is 5060. When configuring Mediation Server, you are advised to accept the default media port gateway range of 60,000 to 64,000. The default range media port range enables the server to handle up to 1,000 simultaneous voice calls. Reducing the port range greatly reduces server capacity and should be undertaken only for specific reasons by an administrator who is knowledgeable about media port requirements and scenarios. For this reasons, altering the default port range is not recommended. Note: Organizations that use IPSec for packet security are advised to disable it for media ports because the security handshake required by IPSec delays call setup. IPSec is 283 unnecessary for media ports because SRTP encryption secures all media traffic between the Mediation Server and the internal Communications Server network. Media Gateway Depending on the gateway vendor, there are potentially many attributes that must be set, but to use the gateway for Enterprise Voice, port 5060 must be configured as the listening port that is used for TCP connections to the Mediation Server. Media Port Range for Office Communications Server 2007 R2 This section describes the minimum media port allocation requirements for the client and server. The default UDP/TCP port range used by the Office Communicator 2007 R2 client is 1024-65535. The Real Time Media Communications stack in Office Communicator 2007 R2 allocates the media port dynamically in this range. To maintain an adequate level of performance, you can specify a smaller port range for Office Communicator 2007 R2 to use. To control the specific range of ports that need to be open on a firewall, a registry key setting is provided to force the media stack to reduce the range of port values that can be used for realtime media communications. On the Office Communicator client, the port range registry settings are as follows: HKLM\Software\Policies\Microsoft\Communicator\PortRange\Enabled HKLM\Software\Policies\Microsoft\Communicator\PortRange\MaxMediaPort HKLM\Software\Policies\Microsoft\Communicator\PortRange\MinMediaPort By default none of these registry keys is set. Minimum Number of Ports If you use the port range registry key settings to reduce the ports that can be used for media, it is recommended that you do so according to the minimums described in this section. For client endpoints, the port range should not be reduced to the point where it can compromise the ability of the media stack to negotiate audio, video, and desktop sharing communication ports during session setup or during a call. More specifically, for an Office Communicator 2007 R2 client, the minimum port range is 40. A smaller range of ports can result in errors during call transfer and conference escalation scenarios. By configuring a minimum of 40 ports, you enable the client to evaluate the candidate transport addresses that it can use to stream audio, video, and desktop sharing to another client, as described in the Internet Engineering Task Force (IETF) Interactive Connectivity Establishment (ICE) protocol. Candidate addresses include a local address and an address on the A/V Access Edge server. A minimum of 40 ports in the port range will also accommodate any escalations from a peer-to-peer call to a conference. Note: An escalation of a peer-to-peer call to a conference triggers a temporary doubling of the ports in use. 284 Different call scenarios can dictate whether to deliver by using User Datagram Protocol (UDP) or Transmission Control Protocol (TCP). However, whenever UDP can be used to deliver media, it will be used instead of TCP. Note: Secure Real-Time Transport Protocol (SRTP) and Secure Real-Time Transport Control Protocol (SRTCP) streams are multiplexed over TCP but are delivered separately in the case of UDP. UDP connections are more resilient to packet loss than TCP. When a UDP packet is lost, there is no transport impact to subsequent packets. When packet loss occurs over TCP, all subsequent packets are held at the transport level to ensure a reliable stream of data. As a result, overall latency in the media delivery chain may increase over TCP. The following set of tables show the detailed port requirements for call setup: Table 1.0 Port Requirements for Call Setup Voice ICE v6 Voice ICE v6 Voice ICE v6 Voice ICE v19 Voice ICE v19 UDP RTP UDP RTCP TCP RTP+ UDP RDP UDP RTCP RTCP ICE Local Candidate 1 1 1 1 1 ICE A/V Edge Server Candidate 1 1 1 1 1 Voice Maximum Number of Ports 4 4 4 4 4 Consultative Call Transfer, Number of Additional Ports 4 4 4 4 4 Total Audio Maximum Number of Ports 8 8 8 8 8 Audio Video Maximum Number of Ports 16 16 16 16 16 Consultative Call Transfer Maximum Number of Ports 16 16 16 16 16 Total Audio Video Maximum Number of Ports 32 32 32 32 32 285 Voice ICE v6 Voice ICE v6 Voice ICE v6 Voice ICE v19 Voice ICE v19 UDP RTP UDP RTCP TCP RTP+ UDP RDP UDP RTCP RTCP Audio Video Desktop Sharing Maximum Number of Ports 16 16 16 16 16 Consultative Call Transfer Maximum Number of Ports 16 16 16 16 16 Total Audio Video Desktop Sharing Maximum Number of Ports 32 32 32 32 32 Table 1.1 Port Requirements for Call Setup Voice ICE v19 CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video TCP RTP+ ICE v6 UDP RTP ICE v6 UDP RTCP ICE v6 TCP RTP+ RTCP RTCP ICE Local Candidate 1 1 1 1 ICE A/V Edge Server Candidate 1 1 1 1 Voice Maximum Number of Ports 4 N/A N/A N/A Consultative Call Transfer, Number of Additional Ports 4 N/A N/A N/A Total Audio Maximum Number of Ports 8 N/A N/A N/A Audio Video Maximum Number of Ports 16 16 16 16 Consultative Call Transfer Maximum Number of Ports 16 16 16 16 286 Voice ICE v19 CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video TCP RTP+ ICE v6 UDP RTP ICE v6 UDP RTCP ICE v6 TCP RTP+ RTCP RTCP Total Audio Video Maximum Number of Ports 32 32 32 32 Audio Video Desktop Sharing Maximum Number of Ports 16 16 16 16 Consultative Call Transfer Maximum Number of Ports 16 16 16 16 Total Audio Video Desktop Sharing Maximum Number of Ports 32 32 32 32 Table 1.2 Port Requirements for Call Setup CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video Desktop ICE v19 UDP RTP ICE v19 UDP RTCP ICE v19 TCP RTP+ Sharing TCP RTCP RTP+ RTCP ICE Local Candidate 1 1 1 2 ICE A/V Edge Server Candidate 1 1 1 1 Voice Maximum Number of Ports N/A N/A N/A N/A Consultative Call Transfer, Number of Additional Ports N/A N/A N/A N/A Total Audio Maximum Number of Ports N/A N/A N/A N/A Audio Video Maximum Number of Ports 16 16 16 N/A 287 CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video Desktop ICE v19 UDP RTP ICE v19 UDP RTCP ICE v19 TCP RTP+ Sharing TCP RTCP RTP+ RTCP Consultative Call 16 Transfer Maximum Number of Ports 16 16 N/A Total Audio Video Maximum Number of Ports 32 32 32 N/A Audio Video Desktop Sharing Maximum Number of Ports 16 16 16 16 Consultative Call 16 Transfer Maximum Number of Ports 16 16 16 Total Audio Video Desktop Sharing Maximum Number of Ports 32 32 32 32 The following set of tables show the detailed port requirements for escalation during a call: Table 2.0 Port Requirements for Escalation During a Call Voice ICE v6 Voice ICE v6 Voice ICE v6 Voice ICE v19 Voice ICE v19 UDP RTP UDP RTCP TCP RTP+ UDP RDP UDP RTCP RTCP Established P2P or Conference 1 1 1 1 1 Escalation From P2P to Conference 1 1 1 1 1 Total Audio Maximum Number of Ports 4 4 4 4 4 Total Audio Video Maximum Number 16 16 16 16 16 288 Voice ICE v6 Voice ICE v6 Voice ICE v6 Voice ICE v19 Voice ICE v19 UDP RTP UDP RTCP TCP RTP+ UDP RDP UDP RTCP 16 16 RTCP of Ports Total Audio Video Desktop Sharing Maximum Number of Ports 16 16 16 Table 2.1 Port Requirements for Escalation During a Call Voice ICE v19 CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video TCP RTP+ ICE v6 UDP RTP ICE v6 UDP RTCP ICE v6 TCP RTP+ RTCP RTCP Established P2P or Conference 1 1 1 1 Escalation From P2P to Conference 1 1 1 1 Total Audio Maximum Number of Ports 4 N/A N/A N/A Total Audio Video Maximum Number of Ports 16 16 16 16 Total Audio Video Desktop Sharing Maximum Number of Ports 16 16 16 16 Table 2.2 Port Requirements for Escalation During a Call CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video Desktop ICE v19 UDP RTP ICE v19 UDP RTCP ICE v19 TCP RTP+ Sharing TCP RTCP RTP+ RTCP Established P2P or Conference 1 1 1 2 Escalation From P2P to 1 1 1 1 289 CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video Desktop ICE v19 UDP RTP ICE v19 UDP RTCP ICE v19 TCP RTP+ Sharing TCP RTCP RTP+ RTCP Conference Total Audio N/A Maximum Number of Ports N/A N/A N/A Total Audio Video 16 Maximum Number of Ports 16 16 N/A Total Audio Video 16 Desktop Sharing Maximum Number of Ports 16 16 16 The following set of tables show the detailed overall requirements for ports: Table 3.0 Overall Requirements for Ports Voice ICE v6 Voice ICE v6 Voice ICE v6 Voice ICE v19 Voice ICE v19 UDP RTP UDP RTCP TCP RTP+ UDP RDP UDP RTCP RTCP Minimum Ports Required for Audio 16 16 16 16 16 Minimum Ports Required for Audio Video 32 32 32 32 32 Minimum Ports Required for Audio Video Desktop Sharing 32 32 32 32 32 ALL * 32 32 32 32 32 290 Table 3.1 Overall Requirements for Ports Voice ICE v19 CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video TCP RTP+ ICE v6 UDP RTP ICE v6 UDP RTCP ICE v6 TCP RTP+ RTCP RTCP Minimum Ports Required for Audio 16 N/A N/A N/A Minimum Ports Required for Audio Video 32 32 32 32 Minimum Ports Required for Audio Video Desktop Sharing 32 32 32 32 ALL * 32 32 32 32 Table 3.2 Overall Requirements for Ports CIF/VGA/HD Video CIF/VGA/HD Video CIF/VGA/HD Video Desktop ICE v19 UDP RTP ICE v19 UDP RTCP ICE v19 TCP RTP+ Sharing TCP RTCP RTP+ RTCP Minimum Ports Required for Audio N/A N/A N/A N/A Minimum Ports Required for Audio Video 32 32 32 N/A Minimum Ports 32 Required for Audio Video Desktop Sharing 32 32 32 ALL * 32 32 32 32 Note: * 8 additional ports required to accommodate any third party applications. At least 40 ports needed for allocating ports in the same range at the same time. 291 As described in the tables, the minimum number of ports that must be allocated on a client platform is 40. During a normal call, the number of ports used will not exceed 2, 4, or 5 depending on whether audio, audio/video, or audio/video/Desktop sharing are streamed. Server Port Allocation Changing the default port range on the server is not recommended. However, if your organization has a need to establish port ranges on the server, you can use the following WMI settings to configure the port range: MSFT_SIPPoolConfigSetting MSFT_SIPDataMCUSetting MSFT_SIPMediationServerConfigSetting For an A/V Conferencing Server as well as all other server components terminating Audio/Video media (for example, Front-Ends hosting Conferencing Attendant, Response Group Service), the port range must be at least six times the maximum number of concurrent call legs that can be supported on the server (that is, two ports for the RTP and RTCP traffic for each modality – audio, video, and panoramic video). For an A/V Access Edge server, the port range must be at least twelve times the maximum number of outside user calls that can be supported on the server (two ports for the RTP and RTCP traffic for each modality – audio, video and panoramic video, or audio, video, and desktop sharing for ICE v6 and ICE v19. For a Mediation Server, the port range must be at least eight times the maximum number of concurrent calls that can be supported on the server (that is, two ports for the RTP and RTCP traffic for audio multiplied by two because the Mediation Server is a back-to-back User Agent for ICE v6 and also for ICE v19). Voice Quality of Service (QoS) The quality of the service associated with synchronous traffic like audio or video can be impacted by delay, jitter, and packet loss in the IP network. Although Office Communications Server 2007 R2 has been designed to work without any Quality of Service (QoS) framework, it can be deployed in IP networks with QoS implemented using Differentiated Services (DiffServ). To support the QoS environment, endpoints are configured to mark the IP traffic conveying the realtime audio and video IP traffic according to well-established classes of services designed to protect the real-time communication traffic from other asynchronous traffic in the IP network, including instant messaging (IM), application sharing data, and file downloads. These markings can be changed to map to different classes of services as desired by an enterprise. QoS with Office Communications Server 2007 R2 A network enabled for Differentiated Services (DiffServ) provides class-level prioritization based on Differentiated Services Code Point (DSCP) marking of the IP packets. Each DSCP value corresponds to a class of service for forwarding packets from the sender or intermediary router to 292 the next router or receiver in the network. The forwarding behaviors can be implemented by using a variety of techniques, including priority queuing, weighted fair queuing, or conventional leaky bucket-based techniques. Relevant classes for the delivery of audio and video media streams are the Expedited Forwarding (EF) and Assured Forwarding (AF) classes, respectively. For a description of the 6-bit DSCP field values in the Type of Service byte of any IP packet, see IETF RFC 2474. In Office Communications Server 2007 R2, DSCP marking can be enabled to configure the media stack to mark the IP traffic conveying the real-time audio and video IP traffic according to wellestablished classes of services. By default, DSCP marking is not enabled. If enabled, the marking of the IP packets is done by the QoS Packet Scheduler service. The resulting marked packets can subsequently be recognized by network entities (end systems and routers) to manage the media traffic according to the QoS priorities. The QoS marking is applied to all media ports and regardless of whether the audio/video traffic is delivered over Real-Time Protocol (RTP; see IETF RFC 3350) or Secure Real-Time Protocol (SRTP; see IETF RFC 3711). Because QoS policies are often tied to UDP or TCP ports, Office Communications Server 2007 R2 also includes a Group Policy registry setting (on client platforms) or a WMI setting (on server platforms) to specify the port range for the UDP and TCP ports used in delivering media streams. Before enabling QoS for Office Communications Server 2007 R2, you must provision the network correctly. Relevant classes for the delivery of audio and video media streams in Office Communications Server 2007 R2 are the following: For audio, the Expedited Forwarding (EF) class. Audio streams affected by this marking include DTMF, Comfort Noise, and Audio with Forward Error Correction (FEC) streams. For video, the Assured Forwarding (AF) class. Video streams affected by this marking include Video streams with FEC packets. After ensuring that the network is correctly configured, Office Communications Server 2007 R2 can be configured to support a QoS environment by enabling DSCP marking, which includes doing the following: Enabling QoS on the appropriate servers and clients Running QoS on computers Ensuring that Group Policy settings are correct on servers and client computers The procedures in Enabling DSCP Marking describe how to configure Office Communications Server components to support a QoS environment. Note: Generally, a QoS environment is set up before Office Communications Server is deployed, and the procedures in this documentation are implemented after the Communications Server components are deployed. If you add Differentiated Services capability to the Enterprise network after you deploy Office Communications Server 2007 R2, use the information in Implementing Support for a QoS Environment in the Administering Office Communications Server 2007 R2 documentation to enable and configure Office Communications Server media traffic to take advantage of this new capability. 293 Enabling DSCP Marking The procedures in this section describe how to configure components to enable Differentiated Services Code Point (DSCP) marking for Office Communications Server 2007 R2. This includes: Enabling QoS. Installing the QoS Packet Scheduler on computers. Verifying Group Policy settings on computers. Note: DSCP marking is generally enabled at the time of deployment in a QoS environment. If you add Differentiated Services capability to the Enterprise network after deploying Office Communications Server 2007 R2, you can configure Office Communications Server media traffic to take advantage of this new capability at that time. Enabling QoS To enable DSCP marking for Office Communications Server 2007 R2, you must enable QoS on the following components: Media servers, which are configured via in-band provisioning. These servers include the following: A/V Conferencing Server. Front End Servers or Standard Edition servers running Conferencing Attendant or Response Group Service. Unified Communications Managed API server. Mediation Servers, which are configured using WMI settings. Office Communicator 2007 R2 clients, including Communicator 2007 R2 Attendant, which are configured by creating a registry key. Office Communicator 2007 R2 Phone Edition clients, which are configured using Office Communicator property settings via in-band provisioning. Note: After completing these procedures for enabling QoS, you must verify that the QoS Packet Scheduler is running and the Group Policy settings are correct on each client and server, using the procedures provided later in this topic. To enable QoS on media servers 1. Log on to the Office Communications Server 2007 R2 server as a member of the RTCUniversalServerAdmins group or an account with equivalent user rights. 2. Click Start, and then click Run. 3. In the Open box, type wbemtest, and then click OK. 4. In the Windows Management Instrumentation Tester dialog box, click Connect. 5. In the Connect dialog box, in Namespace, specify root\cimv2, and then click Connect. 294 6. In the Windows Management Instrumentation Tester dialog box, click Query. 7. In the Query dialog box, in Enter Query, do one of the following: For Standard Edition Server, specify select * from MSFT_SIPPoolConfigSetting where backend="(local)\\rtc", and then click Apply. For an Enterprise pool, specify select * from MSFT_SIPPoolConfigSetting where backend=”<SQL Server>\\<database instance>", and then click Apply. (RTC is the default database instance name.) 8. In the Query Result dialog box, double-click the MSFT_SIPPoolConfigSetting instance (which should be the only instance available on this media server). 9. In the Object editor dialog box, in Properties, click ServerQoSEnabled, and then click Edit Property. 10. In the Property Editor dialog box, in Value, specify True, and then click Save Property. 11. Repeat the preceding steps for each Office Communications Server 2007 R2 server that is in a different pool in your environment, including each A/V Conferencing Server, server running the Response Group Service, and Unified Communications Managed API server. Media servers within the same pool will share the settings after they have been set on the Office Communications Server 2007 R2 server for that pool. Mediation Server does not join a pool, so the settings need to be run separately as a WMI setting on that platform. Important After completing this procedure, ensure that the QoS Packet Scheduler is installed and that Windows Group Policy settings are appropriately configured on each computer. Policies are propagated via in-band provisioning, so for the policies to become effective, you must do one of the following: To enable QoS on Mediation Servers 1. Log on to the Mediation Server as a member of the RTCUniversalServerAdmins group or an account with equivalent user rights. 2. Click Start, and then click Run. 3. In the Open box, type wbemtest, and then click OK. 4. In the Windows Management Instrumentation Tester dialog box, click Connect. 5. In the Connect dialog box, in Namespace, type root\cimv2, and then click Connect. and then click Enum Classes. 6. In the Windows Management Instrumentation Tester dialog box, click Enum Classes. 7. In the Superclass info dialog box, leave the name blank, and then click OK. 8. In the Query Result dialog box, double-click the class name MSFT_SIPMediationServerConfigSetting. 9. In the Object editor for MSFT_SIPMediationServerConfigSetting dialog box, click 295 Instances. 10. In the Query Result dialog box, double-click the MSFT_SIPMediationServerConfigSettingInstanceID instance (which should be the only instance available on this Mediation Server). 11. In the Object editor dialog box, in Properties, click QoSEnabled, and then click Edit Property. 12. In the Property Editor dialog box, in Value, specify True, and then click Save Property. 13. In the ObjectEditor dialog box, click Save Object. 14. Restart the Mediation Server service. 15. Repeat the preceding steps on each Office Communications Server 2007 R2 Mediation Server. Note: This procedure only enables DSCP in the WMI settings of the Mediation Server. After completing this procedure, ensure that the QoS Packet Scheduler is installed and that Group Policy settings are appropriately configured on each computer, and then restart the services. To enable QoS on Communicator clients 1. Log on to the desktop, laptop, or Attendant client as a member of the Administrator group or an account with equivalent user rights. 2. Open the Registry Editor. 3. Create the following registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RTC\Transport 4. Restart the Office Communicator 2007 R2 service. 5. Repeat the preceding steps on each desktop, laptop, and attendant client. Note: This procedure only enables DSCP on the client. After completing this procedure, ensure that the QoS Packet Scheduler is installed and that Group Policy settings are appropriately configured on each computer, and then restart the services. To enable QoS on Office Communications Server 2007 R2 Phone Edition 1. Log on to a server running Office Communications Server 2007 R2 or a computer on which Office Communications Server 2007 R2 administrative tools are installed, as a member of the RTCUniversalServerAdmins group or an account with equivalent user rights. 2. Open the Office Communications Server 2007 R2 snap-in. 3. In the console tree, expand the forest node, and then do one of the following: For an Enterprise pool, expand Enterprise pools, expand the pool, right-click Front 296 Ends, and then click Properties. For a Standard Edition server, expand Standard Edition servers, right-click the pool, click Properties, and then click Front End Properties. 4. In the Front End Properties dialog box, on the Voice tab, next to Advanced options, click Configure. 5. Verify the IP QoS value (default is 40) and the 802.1p Voice value (default is 0) For optimum quality of service, we recommend that you use the default values. To turn off DSCP marking, set both values to 0. 6. For the new settings to take effect, restart the device or log off and log on to the device. 7. Click OK, twice. Installing the QoS Packet Scheduler on Computers The QoS Packet Scheduler needs to be active and configured properly in order for Office Communications Server 2007 R2 servers and clients in order to make the marking active. For details about the QoS Packet Scheduler service, see Voice Quality of Service (QoS) in the Technical Reference for Office Communications Server 2007 R2 in the Reference documentation. By default, the QoS Packet Scheduler is installed on computers running Windows XP, Windows Vista, and Windows 2008. By default, the QoS Packet Scheduler is not installed on Windows Server 2003. Use the following procedures to determine whether the QoS Packet Scheduler is installed and, if not, install it. To install the QoS Packet Scheduler on Windows XP or Windows Server 2003 1. Log on to the computer as a member of the Administrators group or an account with equivalent user rights. 2. Click Start, and then click Control Panel. 3. Click Network Connections. 4. Right-click the network interface on which you want to enable the QoS Packet Scheduler, and then click Properties. 5. Click Install. 6. In Select Network Component Type, click Service. 7. Click Add. 8. In Select Network Service, click QoS Packet Scheduler, and then click OK. To install the QoS Packet Scheduler on Windows Vista or Windows Server 2008 1. Log on to the computer as a member of the Administrator group or an account with equivalent user rights. 2. Click Start, and then click Control Panel. 3. Click Network and Sharing Center. 297 4. Right-click the network interface on which you want to enable the QoS Packet Scheduler, and then click Properties. 5. Click Install. 6. In Select Network Feature, click Service. 7. Click Add. 8. In Select Network Service, click QoS Packet Scheduler, and then click OK. Verifying Group Policy Settings on Computers In order to support DSCP marking on the servers and client computers in your organization, the Group Policy settings for conforming packets for the two service types used by QoS Packet Scheduler must be enabled and cannot be set to zero. This includes the following: SERVICETYPE_GUARANTEED. This setting guarantees that IP datagrams will arrive within the guaranteed delivery time and will not be discarded due to queue overflows, provided the flow's traffic stays within its specified traffic parameters. This service is intended for applications that need a firm guarantee that a datagram will arrive no later than a certain time after it was transmitted by its source. The Real Time Media Communications stack marks the RTP/SRTP audio packets (default payload type value equal to 0, 3, 4, 8, 13, 97, 101, 111, 112, 114, 115, 116, or 118) as SERVICETYPE_GUARANTEED. This marking is off by default. To enable QoS on highdefinition video, also update the following registry key to set the value to 250000 bytes per sec (2 Mbps): HKEY_LOCAL_MACHINE\Software\Microsoft\RTC\Transport\VideoBandwidthDiscardThresh oldBytesPerSec The SERVICETYPE_CONTROLLEDLOAD setting provides an end-to-end QoS that closely approximates transmission quality provided by best-effort service, as expected under unloaded conditions from the associated network components along the data path. Applications that use SERVICETYPE_CONTROLLEDLOAD may therefore assume the following: The network will deliver a very high percentage of transmitted packets to its intended receivers. In other words, packet loss will closely approximate the basic packet error rate of the transmission medium. Transmission delay for a very high percentage of the delivered packets will not greatly exceed the minimum transit delay experienced by any successfully delivered packet. The Real Time Media Communications stack marks the RTP/SRTP video packets (default payload type value equal to 34 or 121) as SERVICETYPE_CONTROLLEDLOAD. This marking is off by default. Use the following procedure on each client and server to ensure that the Group Policy settings for the two service types are set correctly. 298 To verify service type settings on a computer 1. Log on to the computer as a member of the Administrators group or an account with equivalent user rights. 2. Click Start, and then click Run. 3. In the Open box, type gpedit.msc. 4. In the Group Policy Object Editor dialog box, expand Computer Configuration, expand Administrative Template, expand Network, expand QoS Packet Scheduler, and then click DSCP value of conforming packets. 5. In DSCP value of conforming packets, verify that Guaranteed service type and Controlled load service each have one of the following settings: Not configured. Enabled with a nonzero value. To see the value, right-click the setting, and then click Properties. Disabled. Note: To ensure that the policies are applied, you may need to run the gpupdate /target:computer /force command. This command may need to be run each time the computer is restarted. For details, see Knowledge Base article 973779, “Some QoS Group Policy settings are not retained after you restart a client computer that is running Windows Vista or Windows Server 2008” at http://support.microsoft.com/kb/973779 and Knowledge Base article 972878, “The "Guaranteed service type" Group Policy setting returns to the default value after you restart a client computer that is running Windows XP or Windows Server 2003” at http://support.microsoft.com/kb/972878. WMI Settings for Office Communications Server 2007 R2 For details about Office Communications Server WMI settings, see the Office Communications Server SDK at the Microsoft Web site http://go.microsoft.com/fwlink/?LinkId=144486. Client Registry Keys/GPO for Office Communications Server 2007 R2 For details about Office Communicator registry settings, see the Office Communicator 2007 policy documentation available at the Microsoft Web site http://go.microsoft.com/fwlink/?LinkID=140494. 299 In-Band Provisioning over SIP After the client is signed in, the client receives settings from the server pool through in-band provisioning. Specific settings that have been configured in the Office Communications Server properties are propagated to the client during this process. Unlike Group Policy, which is delivered by using a separate mechanism that is based on Windows and Active Directory, inband provisioning carries settings within the Session Initiation Protocol (SIP) and does not require a separate communications channel. For example, Office Communicator clients receive server locations, security information, and settings related to specific client features during in-band provisioning. Office Communicator Phone Edition devices receive the list of supported location profiles and pool-level defaults through in-band provisioning. The following table outlines the settings that are sent to Office Communicator clients during inband provisioning and the location where these settings are configured on the server. Table 1. In-Band Provisioning Settings Settings sent through in-band provisioning Location in server properties Internal and external URLs for the Address Book Server and Web Service for Distribution Group expansion. In the pool properties, Web Component Properties, Address Book tab, Internal URL and External URL Location of the Media Relay Access server (MRAS, part of A/V Edge Server) In the forest properties, Global Properties, Edge Servers tab, under A/V Edge Servers. SIP high security mode In the pool properties, Front End Properties, Voice tab, in the Advanced Voice Options page (after Advanced Options, click Configure), under SIP security mode. Telephony Mode, which determines whether enterprise and voice telephony features, remote call control, computer-to-computer calling, are enabled Voice license: In the user’s Active Directory properties, Communications tab, Telephony options.Enterprise license: In the forest properties, Global Settings, Meetings, Global Policies Enterprise with Voice license: Both of the above settings Audio/video conferencing and data conferencing, In the forest properties, Global Properties, Meetings, Global Policies Simultaneous ringing In the forest properties, Voice Properties, Policy tab, edit the policy and select or clear the Allow simultaneous ringing of phones check box Whether encryption is supported or required when making and receiving audio and video Pool Properties, Media tab, under Security Settings, Encryption Level 300 Settings sent through in-band provisioning Location in server properties calls Default location context for phone calls In the forest properties, Voice Properties, Location tab Line information for the UC phone line In the user’s Active Directory properties, Communications tab, Telephony options, Line URI. Maximum video rate allowed In the pool properties, Front End Properties, Video tab, select the appropriate setting for Maximum video quality Enforce pin lock In the pool properties, Front End Properties, Voice tab, select or clear the Enforce phone lock check box Why Use In-Band Provisioning? To ensure a consistent user experience across all endpoints, Office Communications Server uses in-band provisioning. This enables policies and settings (for example, the MRAS setting) to be sent to non-domain joined clients as well as devices such as Office Communicator Phone Edition, Office Communicator Mobile (2007 R2 release). For endpoints like Office Communicator 2007 R2, an advantage of using in-band provisioning is that information critical to client functionality is stored on the server and not on the computer or the specific endpoint. In-band provisioning simplifies the application of policies and server settings across the organization because the settings apply to all clients that sign in to the server pool. However, some organizations may need to apply distinct settings and policies to different groups within the organization. Administrators can achieve this greater level of granularity by using Group Policy to apply separate client settings to different Active Directory groups. Note: Office Communicator Phone Edition clients receive all settings from the server through inband provisioning and are not configurable through registry-based Group Policy. Some application layer settings are common between Office Communicator 2007 R2 and Office Communicator Phone Edition. Because Office Communicator Phone Edition has no group policy mechanism, certain application layer settings that were previously controlled solely through Group Policy have moved in-band in the Office Communications Server 2007 R2 release. This change was made so that Office Communicator Phone Edition clients could receive these settings through in-band provisioning. However, before you remove any group policies because the settings have moved in-band, you should consider the effect on Office Communicator 2007 R2 clients. Following are the affected settings: 301 Portrange (Specify dynamic port ranges) and the Enabled, MaxMediaPort, and MinMediaPort subkeys EnableTracing (Turn on tracing for Office Communicator) EnableSIPHighSecurityMode (Configure SIP security mode) Of these settings, the SIP Security Mode setting is used during the bootstrapping process to specify whether Transport Layer Security (TLS) is required. If your organization requires a TLS connection between clients and servers in previous versions of Office Communications Server, you have probably already set the Group Policy for SIP Security Mode. Even though the setting has moved in-band for Office Communications Server 2007 R2, you should retain the SIP Security Mode group policy because it is still used during bootstrapping, before the client is able to receive settings through in-band provisioning. Maintaining the SIP Security Mode policy retains security during the bootstrapping process. Office Communicator 2007 R2 Group Policy Precedence Some Office Communicator 2007 R2 features and behaviors can be configured by the administrator by using Office Communications Server 2007 R2 in-band provisioning, or by the user through the Communicator 2007 R2 Options dialog box. However, Group Policies take precedence over both of these methods. The following table summarizes the order in which settings take precedence when a conflict occurs. Table 2. Group Policy Precedence Precedence Location or Method of Setting 1 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Communicator 2 HKEY_CURRENT_USER\Software\Policies\Microsoft\Communicator 3 Office Communications Server 2007 R2 In-Band provisioning 4 Office Communications Server 2007 R2 In-Band provisioning Policy transport In-band settings are requested when a client signs in. The client sends a sequence of messages and the server responds. The following shows the sequence of interactions between the client and the server. The client first sends a SERVICE request for the location profile settings. The following is an example of the start-line. SERVICE sip:amst@litwareinc.com;gruu;opaque=app:locationprofile:get;default SIP/2.0 302 The server responds with a 200 OK message that contains the location profile settings. The content type of the response is application/ms-location-profile-definition+xml. The message body contains the dialing rule patterns and corresponding translations. An example of a message body is as follows: <LocationProfileDescription xmlns="http://schemas.microsoft.com/2007/03/locationProfileDescription" > <Name>Local.LitwareInc.com</Name> <Rule> <Pattern>^(112)$</Pattern> <Translation>$1</Translation> <InternalEnterpriseExtension>false</InternalEnterpriseExtension> <ApplicableForDeviceDialing>true</ApplicableForDeviceDialing> </Rule> </LocationProfileDescription> The client then sends a SUBSCRIBE request for the contact list. The Event header in the SUBSCRIBE message has a value of vnd-microsoft-roaming-contacts. The server responds with a 200 OK message that contains the contact list, the various groups that the users has created and contacts who belong to each group. The Content type header of the response is application/vnd-microsoft-roaming-contacts+xml. The following snippet shows an example of the response that contains the contact list. <contactList deltaNum="248" > <group id="1" name="~" externalURI="" /> <group id="2" name="Sales Team" externalURI="" /> <group id="3" name="Accounts Team" externalURI="" /> <contact uri="amst@contoso.com" name="" groups="2 3" subscribed="true" externalURI="" /> <contact uri="hc@contoso.com" name="" groups="1" subscribed="true" externalURI="" /> <contact uri="gy@contoso.com" name="" groups="1" subscribed="true" externalURI="" /> <contact uri="va@contoso.com" name="" groups="1 2" subscribed="true" externalURI="" /> </contactList> 303 A client endpoint also sends a SUBSCRIBE message for various provisioning settings. This SUBSCRIBE message contains an Event header with a value of vnd-microsoft-provisioning-v2. The Content type of the message is application/vnd-microsoft-roaming-provisioning-v2+xml. An example of a SUBSCRIBE message for the roaming provisioning settings is as follows: <provisioningGroupList xmlns="http://schemas.microsoft.com/2006/09/sip/provisioninggrouplist"> <provisioningGroup name="ServerConfiguration"/> <provisioningGroup name="meetingPolicy"/> <provisioningGroup name="ucPolicy"/> <provisioningGroup name="publicationGrammar"/> <provisioningGroup name="userSetting"/> </provisioningGroupList> The server responds with a 200 OK message that contains the settings for the requested provisioning groups. The Content type of the response is application/vnd-microsoft-roamingprovisioning-v2+xml. The response contains server configuration such as update server URLs, Address book server URLs, Console download URLs. The following settings are new in Office Communications Server 2007 R2: Call Control Server Uri, Pool Uri, and Maximum video rate allowed. An example of the response containing the roaming provisioning settings is as follows: <provisionGroupList xmlns="http://schemas.microsoft.com/2006/09/sip/provisiongrouplistnotification"> <provisionGroup name="ServerConfiguration" > <ucMaxVideoRateAllowed>VGA-600K</ucMaxVideoRateAllowed> <absInternalServerUrl>https://absint.contoso.com/Abs/Int/Handler</absIn ternalServerUrl> <absExternalServerUrl>https://absext.contoso.com/Abs/Ext/Handler</absEx ternalServerUrl> <absWebServiceEnabled>true</absWebServiceEnabled> <ucPC2PCAVEncryption>RequireEncryption</ucPC2PCAVEncryption> <organization>Contoso, Inc.</organization> <consoleDownloadInternalUrl>http://r.office.microsoft.com/r/rlidOCSR2?c lid=1033&amp;p1=livemeeting</consoleDownloadInternalUrl> 304 <consoleDownloadExternalUrl>http://r.office.microsoft.com/r/rlidOCSR2?c lid=1033&amp;p1=livemeeting</consoleDownloadExternalUrl> <dlxInternalUrl>https://ocs.contoso.com/GroupExpansion/Int/service.asmx </dlxInternalUrl> <dlxExternalUrl>https://ocs.contoso.com/GroupExpansion/Ext/service.asmx </dlxExternalUrl> <dlxEnabled>true</dlxEnabled> <ucDiffServVoice>40</ucDiffServVoice> <ucVoice802_1p>0</ucVoice802_1p> <ucEnforcePinLock>true</ucEnforcePinLock> <ucMinPinLength>6</ucMinPinLength> <ucPhoneTimeOut>10</ucPhoneTimeOut> <ucExchangeMWIPoll>3</ucExchangeMWIPoll> <ucEnableSIPSecurityMode>High</ucEnableSIPSecurityMode> <ucEnableUserLogging>false</ucEnableUserLogging> … </provisionGroup> <provisionGroup name="meetingPolicy" instanceId="{6B151D61-D98B-4A169D6C-8BBB3111228A}" > <instance> <property name="Name"><![CDATA[Default Policy]]></property> <property name="ColorDepth"><![CDATA[High colors]]></property> <property name="AllowPresenterToDelegateRecording"><![CDATA[false]]></property> <property name="EnableAppDesktopSharing"><![CDATA[true]]></property> <property name="AllowAppSharingForExternalMeeting"><![CDATA[Desktop]]></property> <property name="MeetingSize"><![CDATA[50]]></property … </instance> </provisionGroup> <provisionGroup name="ucPolicy" instanceId="{6B41BE99-5C45-41E5-B34CF6B8D0079E7B}" > 305 <instance> <property name="Name"><![CDATA[Default Policy]]></property> <property name="AllowUsersToChangeTeamSettings"><![CDATA[true]]></property> <property name="AllowSimultaneousRinging"><![CDATA[true]]></property> </instance> </provisionGroup> </provisionGroup> <provisionGroup name="userSetting" > <ucUserLocationProfile >Main.Contoso.com</ucUserLocationProfile> </provisionGroup> </provisionGroupList> Provisioning Groups There are different provisioning groups, each group deals with a specific area of category of settings. The various provisioning groups and the settings they contain are as follows: Server Configuration. Contains update server URLs, Address Book server URLs, console download URLs, distribution list URLs, media relay server URL, Quality of Service (QoS) server URL, Communicator Web Access URLs, call control server URLs. Meeting Policy. Settings that control whether the presenter is allowed to record a meeting, whether application sharing is allowed, IP audio and IP video. User setting. User specific location profile. ucPolicy. Contains settings for simultaneous ringing, phone usages, and so on. Publication Grammar. A fixed manifest sent out by the server. It allows the client endpoint to control the aggregation logic and the manifest is server agnostic. 306