Avaya Client SDK

< Back to Package Overview

High Availability Considerations

Avaya Client SDK provides support for all of the high availability features available from each of the network services you may choose to add to your application. In any given deployment whether or not high-availability is available is not only dependent on whether the service itself supports high availability but also whether or not the administrator for that deployment has chosen to deploy and configure their particular deployment for high availability. High availability generally involves additional cost and complexity so it is an optional feature that cannot be assumed for every deployment.

The underlying high availability network design and deployment model can differ from service to service. As an application developer you will see that in some cases high availability support is completely transparent to you. In other cases you will need to add application logic, or adjust your user experience, to provide feedback to users when underlying services may be limited as a result of planned (e.g. maintenance) or unplanned (e.g. network interruptions, service interruptions).

Service Feature Provider Network Protocol Network Element High-Availability Supported Application Development Requirements
CSCallService Signalling SIP Aura Session Manager Yes Application shall initialize the SDK properly with the complete list of servers.
Media Preservation SIP Aura Session Manager Yes Application shall reflect limited call capabilities. CSCall Object isServiceAvailable returns false to indicate lack of signalling support. <CSCallDelegate>.callServiceDidBecomeUnavailable is invoked. <CSCallDelegate>.callDidChangeCapabilities is invoked.,The Application may choose to update the UI to reflect limited call capabilities (warning badge).
Signalling SIP IP Office Yes Application shall initialize the SDK properly with the complete list of servers.
Conferencing Service (CSConference) SIP Signalling SIP Aura SIP Conference Server No Application shall reflect limited call capabilities. CSCall Object isServiceAvailable returns false to indicate lack of signalling support. <CSCallDelegate>.callServiceDidBecomeUnavailable is invoked. <CSCallDelegate>.callDidChangeCapabilities is invoked.,The Application may choose to update the UI to reflect limited call capabilities (warning badge).
UCCP Signalling UCCP/HTTP UCCS No Application shall reflect limited conference capabilities. Full Call control is available (hold, retrieve, terminate). Conference operations not available (mute participant, dialout participant).
Media RTP Aura Media Server Yes CSDK does not provide media detection. Conf participant will detect lack of audio and terminate call. Conf moderator may choose to terminate meeting.
Collaboration WCS Provider/HTTP WCS Yes Collaboration is not available until WCS Provider reconnects. Collaboration must be restarted by the user.
CSContactService PPM Contacts PPM/HTTP Aura Session Manager Yes Contact Operations unavailable until CSDK reconnects to PPM element. In an Aura network, PPM contacts is co-located with the Aura Session Manager.
AADS Contacts AADS/HTTP Avaya Aura Device Services Yes Contact Operations unavailable until CSDK reconnects to network element.
IPO Contacts MTCTI/HTTPS IP Office Yes Contact Operations unavailable until CSDK reconnects to network element.
IPO Presence MTCTI/HTTPS IP Office Yes Presence Operations unavailable until CSDK reconnects to network element.
CSSharedControlService Shared Control of Desk Phone SIP Desk Phone with Aura deployment No Application to present connectivity with Desk phone is unavailable.

Scenarios

Call Server Network Unreachable

When the CSDK CSCallService cannot reach the Call Server:

  • Incoming Call notifications will not be presented to Application.
  • Outgoing Calls cannot be initiated.

High Availability Considerations 1

Call/Conference Server Network Unreachable, Call/Conference Call in Progress

High Availability Considerations 2

Messaging Server Unavailable

When the Client SDK MessagingService cannot reach the messaging server:

  • The application cannot create a new conversation
  • A new message cannot be sent
  • Incoming messages will not be passed to the application

Collaboration Server Network Unreachable

When the CSDK CSCollaborationService cannot be reached:

  • Existing collaborationListeners will be notified the collaboration is not available.

Presence Server Network Unreachable

When the CSDK CSPresenceService cannot reach the Presence Server:

  • The application cannot update the presence status of the local user.
  • The presence subscription list cannot be modified.
  • Presence status of current contacts will be updated to unknown status.
  • Remote users will not see presence updates of the current user.

The CSDK CSPresenceService will attempt to automatically try to reconnect with the Presence Server. When connectivity is established the known subscription list will be resubscribed automatically. High Availability Considerations 2

Device Services Unreachable or Desk Phone Unreachable

All Client SDK Services follow the same notification structure between the Client SDK service and your application, as shown in the Networking Change Sequence Diagram.

Media Preservation

Media Preservation is a technique used by Client SDK to minimize the occurrence of dropped calls as a result of network disruptions. Because the SIP signalling path uses TCP and the audio/video media uses UDP when network disruptions occur it is not uncommon that the disruption causes the TCP socket for the signalling session to be closed while the UDP stream continues to flow after the disruption is resolved. In this case because the media recovers the call can continue but because the signalling session is lost the features available on the call are limited until the signalling session can be recovered.

Client SDK does attempt to automatically restore the signalling session but this process is best-effort and applications must be prepared to deal with calls that once are media preserved stay in this state until they are terminated by your application or the user of your application.

Upon media preservation call state being detected by the CSDK:

  • Applications that implements the <CSCallDelegate> methods will receive callServiceDidBecomeUnavailable and callDidChangeCapabilities callbacks.
@interface CallHandler : NSObject 

- (void) addCallsObject:(CSCall *)call;

@end

@implementation CallHandler

- (void)addCallsObject:(CSCall *)call 
{   
    call.delegate = self;
}

#pragma mark - CSCallDelegate

- (void)callServiceDidBecomeUnavailable:(CSCall *)call 
{
    // Code to update the UI appropriately
}

- (void)callDidChangeCapabilities:(CSCall *)call 
{
    // Code to update the UI appropriately
}

@end
  • Applications that implements the <CSCallServiceDelegate> methods will receive callServiceDidChangeCapabilities callback.
@interface CallServiceHandler : NSObject 

- (void)addUsersObject:(CSUser *)user;

@end

@implementation CallServiceHandler

- (void)addUsersObject:(CSUser *)user 
{
    user.callService.delegate = self;
}

#pragma mark - CSCallServiceDelegate

- (void)callServiceDidChangeCapabilities:(CSCallService *)callService 
{
    // Code to update the UI appropriately
}

@end
  • Applications should check CSCallService.VoIPCallingCapability property ahead of establishing another call.
if (callService.voipCallingCapability.allowed)
{
    // Code to establish another call
}

Session Timers

Session Timers is a technique defined by RFC 4028 to minimize resource utilization for calls that do not have signalling support (media preserved), and is available in the Client SDK. Avaya does not recommend the use of Session Timers in applications because a call without signalling support may continue to have media support (media preserved) providing the user with the minimal necessary call experience. The use of Session Timers will terminate a media preserved call when the negotiated call session expires automatically. In situations where signalling support is not available, the Avaya recommended practice is to allow the end-user to determine if the existing call is providing the minimal experience by allowing the user to terminate the call at their discretion.

By default, Session Timers duration is set to 0, or disabled. Session Timer value is activated by a non-zero value provided at: CSSIPClientConfiguration.sessionRefreshTimeout.