Avaya Client SDK

< Back to Package Overview

Enabling Applications for Dual IP Stack Network Usage

The Client SDK supports single stack IPv4 and IPv6 networks, and IPv4 and IPv6 dual stack networks. The IP network topology must be supported from your application end to end to the enterprise infrastructure, and cannot be enabled as an application only feature. In dual stack environment, Client SDK can be configured to have signaling on a specific network address and media exchanged over another type of IP Address.

In order to utilize the dual stack environment, following conditions shall be met -

  • Device hosting the application shall have both IPv4 and IPv6 addresses.
  • SIP server configuration for Client SDK shall have FQDN. The FQDN shall resolve to both IPv4 and IPv6 IP addresses.
  • Client SDK shall be configured to use both IPv4 and IPv6 addresses. See below section about Client SDK Configuration.

In Single stack environment IPv4 only or IPv6 only, Client SDK will utilize the available network to setup SIP signaling and media streams.

Client SDK Configuration

There are two aspects of configuration -

Signaling Address Mode

Client SDK can be configured with a network preference for SIP signaling. Below is the example of setting the network preference for SIP signalling.

// User configuration
CSUserConfiguration* userConfig = [[CSUserConfiguration alloc] init];
CSSIPUserConfiguration* sipUserConfiguration = userConfig.SIPUserConfiguration;
sipUserConfiguration.signalingAddressMode = CSSignalingAddressModeIPv6; 
// This configures application to prefer IPv6 address for SIP signalling.

Below is the enum listing the possible values for Signaling Address Mode.

/**
 * Indicates the SIP session manager address type preference when the 
 * client connects to dual stack server from a dual stack client network.
*/
typedef NS_ENUM(NSInteger, CSSignalingAddressMode) 
{
    /**
     * Prefer IPv4 SM address
    */
    CSSignalingAddressModeIPv4 = 0,
    /**
     * Prefer IPv6 SM address
    */
    CSSignalingAddressModeIPv6
};

Media Address Mode

The Client SDK can be configured with network preference for media exchange. If both addresses are offered when placing a call, only one address will be selected to stream the media.

Below is the example of setting the network preference for media streaming.

// User configuration
CSUserConfiguration* userConfig = [[CSUserConfiguration alloc] init];
CSSIPUserConfiguration* sipUserConfiguration = userConfig.SIPUserConfiguration;
sipUserConfiguration.mediaAddressMode = CSMediaAddressModeIPv4Then6; 
// This configures application to prefer media streaming over IPv4 than IPv6.

Below is the enum listing the possible values for Media Address Mode.

/**
 * Indicates the IP address type preference to use when negotiating media streams 
 * when the client connects to dual stack server from a dual
 * stack client network.
*/
typedef NS_ENUM(NSInteger, CSMediaAddressMode) 
{
    /**
     * Only use local IPv4 address during media information exchange.
     * This option is used in an IPv4 only network environment, where the
     * local client has an IPv4 network address.
     * Setting this mode in an IPv6 only environment is a configuration
     * error, however the call is allowed to proceed with an IPv6 media
     * address.
    */
    CSMediaAddressModeIPv4 = 0,
    /**
     * Only use local IPv6 address during media information exchange.
     * This option is used in an IPv6 only network environment, where the
     * local client has an IPv6 network addresses.
     * Setting this mode in an IPv4 only environment is a configuration
     * error, however the call is allowed to proceed with an IPv4 media
     * address.
    */
    CSMediaAddressModeIPv6,
    /**
     * Prefer local IPv4 address over local IPv6 address when both
     * are available to the local endpoint.
     * This option is used in a dual IPv4 and IPv6 network environment, where the
     * local client has both IPv4 and IPv6 address.
     * Both IPv4 and IPv6 local addresses are provided during media
     * exchange, and the IPv4 local address is preferred over the IPv6 address.
    */
    CSMediaAddressModeIPv4Then6,
    /**
     * Prefer local IPv6 address over local IPv4 address when both
     * are available to the local endpoint.
     * This option is used in a dual IPv4 and IPv6 network environment, where the
     * local client has both IPv4 and IPv6 addresses.
     * Both IPv4 and IPv6 local addresses are provided during media
     * exchange, and the IPv6 local address is preferred over the IPv4 address.
    */
    CSMediaAddressModeIPv6Then4
};

The Signaling Address Mode and Media Address Mode configuration is a preference. If actual available network is single stack (IPv4 only or IPv6 only), the Client SDK will ignore these configuration preferences to use the available network for SIP signaling and media.