# Sentinel VoLTE in the Cloud

Sentinel VoLTE - Version 2.9.0

The Sentinel VoLTE Cloud environment is an Amazon Elastic Cloud Compute (EC2) based, functional IMS network in the Cloud.

### Audience

This document is intended for:

- engineers looking to gain knowledge around VoLTE and IMS.

### Topics

- Cloud Environment Architecture— an overview explaining the relationships between the individual components

- Commissioning the Cloud Environment— how to gain access to an instance of the Sentinel VoLTE cloud environment

- Using the Cloud Environment— how to use the cloud environment once it has been set up

- Decommissioning the Cloud Environment— how to dispose of the cloud environment.

## Cloud Environment Architecture

The Sentinel VoLTE Cloud environment is an Amazon Elastic Cloud Compute (EC2) based, small scale, functional IMS network in the Cloud.

### Components

It includes five main components, each running in its own EC2 instance:

- OpenCloud Sentinel VoLTE TAS

- OpenIMS HSS

- Metaswitch Clearwater IMS

- Session Border Controller (not yet available)

- Dialogic XMS - Media Resource Function (not yet available).

Each instance is published in Amazon as an EC2 AMI. New instances of the three images can be spun-up from the AMIs in about five minutes.

### Architecture

Component | Features
--- | ---
Sentinel VoLTE TAS | Online Charging via Diameter Ro MMTEL-AS features, from GSMA IR.92 SCC-AS features, from GSMA IR.64 Subscriber configuration via REM HSS Subscriber Data page XCAP provisioning for subscriber self provisioning/configuration of MMTEL features
OpenIMS HSS | Typical HSS functions Sh Transparent User Data repository — for MMTel Supplementary Service Data
Clearwater IMS | Project Clearwater is an open source implementation of the IP Multimedia Subsystem for cloud computing environments.

| OpenCloud configures the three instances to communicate between themselves.

### Product documentation links

Component | Documentation URL
--- | ---
Sentinel VoLTE | Sentinel VoLTE
Clearwater IMS Core | http://www.projectclearwater.org/
OpenIMS HSS | http://www.openimscore.org/
Dialogic XMS | http://www.dialogic.com/en/products/media-server-software/xms.aspx
Perimeta Session Border Controller | http://www.metaswitch.com/perimeta-session-border-controller-sbc

## Commissioning the Cloud Environment

### Commissioning options

There are three options for setting up the Sentinel VoLTE cloud environment in EC2:

- OpenCloud provides access to a demo account that has the VoLTE environment installed.

- The customer provides an EC2 account and OpenCloud installs the VoLTE environment.

- The customer manually installs from shared AMIs.

#### OpenCloud provides account

- OpenCloud has responsibility for billing.

- OpenCloud R&D installs Sentinel VoLTE and other network infrastructure on a new EC2 account.

- EC2 sub-account is created, providing full access to the customer.

- The sub-account can be manually disabled/removed by OpenCloud at any point.

- OpenCloud provides the customer with a specific login URL for EC2 console, a username/password, and an ssh key.

- Customer configures SIP user agents to make calls.

| A user for your Amazon AWS account must be created for OpenCloud to set up the account. Here’s how to give OpenCloud access to your account.

#### Customer provides account

- Customer has responsibility for billing.

- Customer provides OpenCloud with temporary access to an EC2 ‘power user’ account by providing the following details:

  - Access key

  - Secret key

  - Amazon EC2 region

  - Amazon EC2 account number.

- OpenCloud R&D installs Sentinel VoLTE and other network infrastructure in the customer’s account via an automated Jenkins job.

- OpenCloud provides ssh keys to the customer for ssh access to the EC2 instances.

- Customer configures SIP User Agents to make calls.

#### Customer manually installs

- Customer provides OpenCloud with ec2 account number.

- OpenCloud shares the three AMIs with the customer.

- Customer installs the Sentinel VoLTE cloud environment by following how to manually install the Sentinel VoLTE cloud environment.

### Amazon AWS account types

OpenCloud supports both ‘classic’ and newer ‘default-VPC’ EC2 accounts.

- If the ec2 account is classic:

  A separate VPC is deployed and configured for the Sentinel VoLTE Cloud Environment.

- If the ec2 account has a default VPC:

  that VPC is used for the Sentinel VoLTE Cloud Environment.

#### How to give OpenCloud access to your account

To use the first of the two options above, a user for your Amazon AWS account must be created for OpenCloud.

Here is how to do that:

1 | Log in to your AWS account.
2 | Select “IAM” from the drop-down Services menu at the top-left of the screen.
3 | From the IAM dashboard: Click Create a New Group of Users.
4 | On the GROUP NAME page: Specify the name for the group (for example, `OpenCloud`). Click Continue.
5 | On the PERMISSIONS page: Select the Power User Access policy template. Click Continue on the next screen.
6 | On the USERS page: Enter a user name (for example, `opencloud`). Ensure that Generate an access key for each User is checked. Click Continue.
7 | Review your selections. Click Continue.
8 | On the next screen: Download (or view and take note of) the given security credentials.
| This is your only opportunity to get these security credentials.

Once you have finished, provide OpenCloud with the security credentials for the new user, and we will set up and configure the Sentinel VoLTE cloud environment.

You can then delete the new user by right-clicking on it and selecting Delete from the Users section of the IAM web console.

## Manually Install Sentinel VoLTE Cloud Environment

Follow these steps to manually install an ec2 Sentinel VoLTE cloud environment.

| An output (bulleted in blue) from a step should be noted, as it forms the input to a subsequent step.

### 1 Determine the AMI IDs

Determine the AMI IDs for the VoLTE, HSS and Clearwater images:

- $VOLTEAMIID

- $HSSAMIID

- $CWAMIID.

### 2 Create a keypair, VPC, and security groups

#### Create a keypair

| Step | Command | Output
--- | --- | --- | ---
1 | Create keypair |
    ec2-create-keypair cloud-keypair
| $KEYPAIR

#### Create a VPC

If the ec2 account is an ‘ec2 classic’ then it won’t have a default VPC.
If there is no default VPC, follow the steps in this table.
Otherwise, use the default VPC.

| Step | Command | Output
--- | --- | --- | ---
1 | Create VPC |
    ec2-create-vpc 10.0.0.0/24
| $VPCID
2 | Create Internet Gateway |
    ec2-create-internet-gateway
| $GATEWAYID
3 | Attach Internet Gateway to VPC |
    ec2-attach-internet-gateway $GATEWAYID -c $VPCID
4 | Create Route Table |
    ec2-create-route-table $VPCID
| $ROUTETABLEID
5 | Create Route Table entry |
    ec2-create-route $ROUTETABLEID -g $GATEWAYID -r 0.0.0.0/0
6 | Create Subnet |
    ec2-create-subnet -c $VPCID -i 10.0.0.0/24
| $SUBNETID
7 | Modify Subnet: Auto-assign public IP |
    ec2-modify-subnet-attribute $SUBNETID -m true
8 | Set DNS hostnames to true |
    ec2-modify-vpc-attribute -c $VPCID -d true
9 | Associate Subnet to Route Table |
    ec2-associate-route-table $ROUTETABLEID -s $SUBNETID

##### Use the default VPC

If the ec2 account has a default-VPC, then use that and one of its subnets:

- $VPCID

- $SUBNETID.

#### Create two security groups

| Step | Command | Output
--- | --- | --- | ---
1 | Create Access group |
    ec2-create-group "VoLTE cloud access" -d "Access Security group for VoLTE environment" -c $VPCID
| $SGID‑ACCESS
2 | Create Internal group |
    ec2-create-group "VoLTE cloud internal" -d "Internal Security group for VoLTE environment" -c $VPCID
| $SGID‑INTERNAL

### 3 Add rules to security groups

Add these rules to the security groups you created:

Security group | Rules
--- | ---
Access | SIP
    ec2-authorize $SGID-ACCESS -P tcp -p 5052 -o $SGID-INTERNAL
    ec2-authorize $SGID-ACCESS -P tcp -p 5054 -o $SGID-INTERNAL
    ec2-authorize $SGID-ACCESS -P tcp -p 5060
    ec2-authorize $SGID-ACCESS -P udp -p 5060
SSH
    ec2-authorize $SGID-ACCESS -P tcp -p 22
RTP
    ec2-authorize $SGIDaccess -P udp -p 16000-18000
Internal | All internal traffic
    ec2-authorize $SGID-INTERNAL -P all -o $SGID-INTERNAL
All traffic from access group
    ec2-authorize $SGID-INTERNAL -P all -o $SGID-ACCESS
SSH
    ec2-authorize $SGID-INTERNAL -P tcp -p 22
GUI Access for REM, HSS, MRF
    ec2-authorize $SGID-INTERNAL -P tcp -p 8080
    ec2-authorize $SGID-INTERNAL -P tcp -p 443
Limit outbound access to only the access and internal security groups
    ec2-authorize $SGID-INTERNAL -P all -o $SGID-INTERNAL --egress
    ec2-authorize $SGID-INTERNAL -P all -o $SGID-ACCESS --egress
    ec2-revoke $SGID-INTERNAL -P all -s 0.0.0.0/0 --egress

### 4 Create the instances from the AMIs

| Command | Output
--- | --- | ---
1 |
    ec2-run-instances $VOLTEAMIID -t m3.large -k $KEYPAIR -s $SUBNETID
    --associate-public-ip-address true -g $SGID-INTERNAL
| $VOLTE_INSTANCE_ID
2 |
    ec2-run-instances $HSSAMIID -t m1.medium -k $KEYPAIR -s $SUBNETID --associate-public-ip-address true -g $SGID-INTERNAL
| $HSS_INSTANCE_ID
3 |
    ec2-run-instances $CWAMIID -t m3.large -k $KEYPAIR -s $SUBNETID --associate-public-ip-address true -g $SGID-INTERNAL
| $CW_INSTANCE_ID

| If you are using a Perimeta SBC, then it should use the Access Security group. If you are not using Perimeta, then Clearwater should use the Access Security group. VOLTE, HSS and MRF (when used) should use the Internal Security group.

### 5 Note IP addresses and DNS names

Note the following:

internal IP address of each of the servers | $VOLTE-INTERNAL-IP $HSS-INTERNAL-IP $CW-INTERNAL-IP
internal DNS name of each of the servers | $VOLTE-INTERNAL-DNS $HSS-INTERNAL-DNS $CW-INTERNAL-DNS
external IP address of each of the servers | $VOLTE-EXTERNAL-IP $HSS-EXTERNAL-IP $CW-EXTERNAL-IP
external DNS of each of the servers | $VOLTE-EXTERNAL-DNS $HSS-EXTERNAL-DNS $CW-EXTERNAL-DNS

### 6 Add entries to each instance in /etc/hosts

ssh into each instance and add these entries to `/etc/hosts`:

Instance | Entry
--- | ---
volte-instance |
    $VOLTE-INTERNAL-IP
hss-instance |
    $HSS-INTERNAL-IP
clearwater-instance |
    $CW-INTERNAL-IP

### 7 Update configuration

Update these configurations:

Configuration | What to update | Command
--- | --- | ---
HSS Application Server | rhino address |
    rhinosipaddr="sip:$VOLTE-INTERNAL-DNS:5060;transport=tcp" +
    Via HSS Admin GUI --> Services / Application Servers page
or
    ssh ec2 hss +
    mysql -u root -ppassword -D hss_db -e "update application_server set server_name = '$rhinosipaddr' where name = 'Rhino_AS';"
HSS S-CSCF | clearwater address |
    cwsipaddr="sip:$CW-INTERNAL-IP:5054" +
    Via HSS Admin GUI --> Network Configuration / Preferred S-CSCF Sets page
or
    ssh ec2 hss +
    mysql -u root -ppassword -D hss_db -e "update preferred_scscf_set set scscf_name = '$cwsipaddr' where name = 'sprout';"
clearwater | HSS and upstream details |
    ssh ec2 cw +
    vi /etc/clearwater/config +
    upstream_hostname=$CW-INTERNAL-IP +
    hss_hostname=$HSS-INTERNAL-DNS +
    hss_port=3868
/etc/clearwater/s-cscf.json | clearwater hostname |
    ssh ec2 cw +
    vi /etc/clearwater/s-cscf.json
    {
       "s-cscfs" : [
       {   "server" : "sip:$CW-EXTERNAL-DNS:5054;transport=TCP",
       "priority" : 0,
       "weight" : 100,
       "capabilities" : []
       }
       ]
    }

### 8 Effect changes

To effect the configuration changes:

| Step | Command
--- | --- | ---
1 | Install Ralf and point clearwater config at Ralf |
    ssh ec2 cw +
    vi /etc/clearwater/config +
    #ralf_hostname=
| If CDF is not required, ignore the above and comment out Ralf.
2 | Restart clearwater to pick up changes |
    ssh ec2 cw +
    sudo service clearwater-infrastructure restart +
    sudo monit stop bono +
    sudo monit stop ellis +
    sudo monit restart sprout +
    sudo monit restart homestead
3 | Update details in HSS configuration |
    ssh ec2 hss +
    vi /home/ubuntu/HSS/FHoSS/deploy/DiameterPeerHSS.xml +
    change: +
    FQDN="$HSS-INTERNAL-DNS" +
    Realm="example.com" +
    <Acceptor port="3868" bind="$HSS-INTERNAL-IP" /> +
    vi /home/ubuntu/HSS/FHoSS/deploy/hss.properties +
    change: +
    host=$HSS-INTERNAL-IP +
    port=8080
4 | Restart HSS to pick up changes |
    ssh ec2 hss +
    sudo /etc/init.d/hss stop +
    sudo /etc/init.d/hss start

## Using the Cloud Environment

This section includes the following topics about how to interact with the Sentinel VoLTE Cloud environment:

- Basic Access

- User Agent Configuration

- IMS Identities

- MMTel Demonstrations

- IMS configuration in HSS

## Basic Access

Administrators can access the EC2 instances, for configuration, using SSH or OAM consoles.

### SSH access

With the provided ssh key (such as `volte-cloud.pem`), the administrator can ssh access each of the servers.

### OAM consoles

Both the OpenIMS and VoLTE TAS VM include browser-based OAM consoles.

These run as follows:

Service | URL within the Cloud environment | Username | Password
--- | --- | --- | ---
Rhino Element Manager | http://<VOLTE_PUBLIC_IP>:8080/rem | emadm | ec2oc2014!
HSS Web Console | http://<HSS_PUBLIC_IP>:8080/hss.web.console | hssAdmin | ec2oc2014!

## User Agent Configuration

This section gives instructions for how to configure a variety of SIP user agents (UAs) for use with the Sentinel VoLTE cloud environment.

OpenCloud has successfully tested the cloud environment with the following programs:

Name | Tested platforms
--- | ---
Zoiper | Windows 8, Windows 7, Ubuntu Linux, Mac OS X, Android, iOS 7
Jitsi | Ubuntu Linux
Linphone | Windows 8, Windows 7, Linux, iOS 7
Twinkle | Ubuntu Linux

## Jitsi

Jitsi runs on Windows, Linux, and Mac platforms.

### Windows configuration

| Use default values unless otherwise stated. `<CLEARWATER_PUBLIC_IP>` should be substituted with the public IP of the EC2 instance that is running the Clearwater IMS. (By default this instance will be labelled `Clearwater IMS`). `6505550425@example.com` is used as an example.

1 | From the menubar: Select File ▶ Add new account…​. Select SIP from the dropdown box. Click the Advanced button.
2 | On the Account tab: SIP ID: `6505550425@example.com` Password: `ec2oc-6505550425` Display Name: `6505550425` (optional)
3 | On the Connection tab: Registrar: `example.com` Authorization name: `6505550425@example.com` Client TLS certificate: `none` Configure proxy automatically: `false` Proxy: `<CLEARWATER_PUBLIC_IP>` Proxy Port: `5060` Preferred transport: `TCP` Keep alive method: `REGISTER`

## Linphone

Linphone runs on Windows, Linux, Mac, Android, iPhone, and Blackberry platforms.

| You must use version 3.7.0 or later! Windows and Linux have been successfully tested by OpenCloud. The Android version (at the time of writing) does not contain sufficient capabilities out-of-the-box.

### Windows configuration

| Use default values unless otherwise stated. `<CLEARWATER_PUBLIC_IP>` should be substituted with the public IP of the EC2 instance that is running the Clearwater IMS (By default this instance will be labelled `Clearwater IMS`). `6505550425@example.com` is used as an example.

1 | Open Options ▶ Preferences.
2 | Under the Manage SIP Accounts tab, add a proxy account with these details: Your SIP identity: `sip:6505550425@example.com` SIP Proxy Address: `sip:<CLEARWATER_PUBLIC_IP>:5060;transport=tcp*` Transport: `TCP` Route: sip: `<CLEARWATER_PUBLIC_IP>:5060;transport=tcp` Contact Params: `6505550425`
3 | When attempting to connect with this account, you will be prompted for a username and password: Username: `6505550425@example.com` Password: `ec2oc-6505550425`

## Twinkle

Twinkle runs on the Linux platform.

| Twinkle has not been updated in some time; getting it to run on recent versions of Linux can be difficult.

### Linux configuration

| Use default values unless otherwise stated. `<CLEARWATER_PUBLIC_IP>` should be substituted with the public IP of the EC2 instance that is running the Clearwater IMS. (By default this instance will be labelled `Clearwater IMS`.) User `6505550425@example.com` is used as an example.

1 | When starting Twinkle for the first time, it will prompt you to create a user account. Select Profile editor when prompted. Enter a name of your choice. Click OK.
| Access the Profile Editor after initial setup by selecting Edit ▶ User Profile…​.
2 | Under the User tab: Your Name: `6505550425` User Name: `6505550425` Domain: `example.com` Realm: `example` Authentication Name: `6505550425@example.com` Password: `ec2oc-6505550425`
3 | Under the SIP server tab: Use outbound proxy: `true` Outbound proxy: `<CLEARWATER_PUBLIC_IP>;transport=tcp`

## Zoiper

Zoiper runs on the Windows, Linux, Mac, Android, and iPhone platforms.

Below are instruction for configuring with Windows, Android, and iOS 7.

| User `6505550425@example.com` is used below as an example. Use default values unless otherwise stated. `<CLEARWATER_PUBLIC_IP>` should be substituted with the public IP of the EC2 instance that is running the Clearwater IMS. (By default this instance will be labelled `Clearwater IMS`.)

### Windows configuration

1 | Select Preferences from the Settings menu.
| If creating a new account, you will need to enter some of the settings below in the creation wizard rather than the main Preferences window.
2 | Under Accounts / General: SIP Account options Domain: `example.com` Username: `6505550425` Password: `ec2oc-6505550425` Caller ID Name: `6505550425` (optional) Outbound options Auth. Username: `6505550425@example.com` Use Outbound Proxy: `true` Outbound Proxy: `<CLEARWATER_PUBLIC_IP>:5060`
3 | Under Accounts ▶ Advanced: Use TCP transport: `true`

### Android configuration

1 | Go to Config ▶ Accounts ▶ Add Account ▶ SIP.
2 | Enter the following details into the SIP Account screen: Authentication Host: `example.com` Username: `6505550425` Password: `ec2oc-6505550425` Optional (not actually optional!) Authentication User: `6505550425@example.com` Outbound Proxy: `<CLEARWATER_PUBLIC_IP>:5060` Caller ID Name: `6505550425` (this one is optional)
3 | From the SIP Account screen, select Network Settings: Transport Type: `TCP`
4 | If set-up is successful, the new account will appear on the Config ▶ Accounts screen, with a green tick next to it.
| Tapping on the tick will allow you to deregister and register.

### iOS 7 configuration

1 | Go to Settings ▶ Accounts ▶ Add Account (tap + in the upper-right corner of the screen) ▶ SIP account
2 | Enter the following details into the SIP Account screen: SIP options Account name: a name for this SIP account (for example, `OC VoLTE`) Domain: `example.com` Username: `6505550425` Password: `ec2oc-6505550425` Caller ID: `6505550425` Advanced Settings Auth Username: `6505550425@example.com` Select Use Outbound Proxy Outbound Proxy: `<CLEARWATER_PUBLIC_IP>:5060`
3 | Under Additional Settings on the same screen: Select Network Settings.
4 | Select Transports type: `TCP`.
5 | If set up is successful, the new account will appear on the Settings ▶ Accounts screen. If registration is successful, selecting the account will show a Registration Status of OK, under which there is an Unregister button to un-register.

## IMS Identities

### Included IMS subscriptions

Several preconfigured IMS subscriptions are included in the VoLTE cloud environment for testing purposes.

IMS Subscription | IMS Public Identity | IMS Private Identity | Domain | Password
--- | --- | --- | --- | ---
    6505550335
    sip:6505550335@example.com
    6505550335@example.com
    example.com
    ec2oc‑6505550335
    6505550337
    sip:6505550337@example.com
    6505550337@example.com
    example.com
    ec2oc‑6505550337
    6505550386
    sip:6505550386@example.com
    6505550386@example.com
    example.com
    ec2oc‑6505550386
    6505550425
    sip:6505550425@example.com
    6505550425@example.com
    example.com
    ec2oc‑6505550425
    6505550201
    sip:6505550201@example.com
    6505550201@example.com
    example.com
    ec2oc‑6505550201
    6505550202
    sip:6505550202@example.com
    6505550202@example.com
    example.com
    ec2oc‑6505550202
    6505550203
    sip:6505550203@example.com
    6505550203@example.com
    example.com
    ec2oc‑6505550203
    6505550204
    sip:6505550204@example.com
    6505550204@example.com
    example.com
    ec2oc‑6505550204
    6505550205
    sip:6505550205@example.com
    6505550205@example.com
    example.com
    ec2oc‑6505550205
    6505550206
    sip:6505550206@example.com
    6505550206@example.com
    example.com
    ec2oc‑6505550206
    6505550207
    sip:6505550207@example.com
    6505550207@example.com
    example.com
    ec2oc‑6505550207
    6505550208
    sip:6505550208@example.com
    6505550208@example.com
    example.com
    ec2oc‑6505550208
    6505550209
    sip:6505550209@example.com
    6505550209@example.com
    example.com
    ec2oc‑6505550209
    6505550210
    sip:6505550210@example.com
    6505550210@example.com
    example.com
    ec2oc‑6505550210

### Viewing IMS subscription and identities

IMS Subscriptions and related identities can be viewed through the HSS Web Console.

1 | Log in to the HSS web console.
| See Basic Access for credentials to log in.
A Welcome page displays.
2 | Click the User Identities link. A User Identities page displays.
3 | Click the Search link under IMS Subscriptions. The Search page displays.
4 | Click the Search button on the Subscription Search page.
| The search button can be clicked without entering any text.
The Search Results page displays.
5 | View a subscription within the results.
| In the Search Results page, you can click a result to then view the subscription.
The Subscription page displays (in this example, IMS subscription '6505550425').
| You can click links within the subscription (such as the IMS Private Identity (IMPI).

| Viewing other aspects of IMS identities In the IMS Identities page, there are three search menus you can use for more detail: IMS Subscriptions (IMSUs) IMS Private Identities (IMPIs) IMS Public Identities (IMPUs).

| Adding new IMS subscriptions and identities To add new IMS subscriptions and identities, see Adding a New User to the HSS.

### Viewing transparent user data

Transparent user data can be stored in the HSS and accessed over the Diameter Sh interface. The OpenIMS HSS does not provide a view of transparent user data within its web console, but Sentinel VoLTE’s Rhino Element Manager does.

To view transparent user data:

1 | Log into Rhino Element Manager (REM).
| For information about login credentials, see Basic Access.
2 | Select Sentinel ▶ HSS Subscriber Data. The HSS Subscriber Data screen displays.
3 | Enter an IMS Public User Identity (IMPU) in the IMS User Identity box, then click the Load button. In this case, the IMPU `sip:6505550425@example.com` was entered.
4 | Check the ICB Rules line to see that the user has an Anonymous condition for Incoming Communication Barring.
| Allow is set to `false`, which means anonymous callers are rejected.

## Adding a New User to the HSS

| As an example, this page shows how to add user `6505550411`.

### HSS configuration

To configure HSS:

1 | Login to the HSS web console; and navigate to the User Identities page.
2 | Create the IMS: Click IMS Subscription / Create. Enter: Name: `6505550411` Capabilities Set: `cap_set1` Preferred S-CSCF: `sprout` Click Save.
3 | Create the IMPI: Click Private Identity / Create. Enter: Identity: `6505550411@example.com` Secret Key: random password — write it down! Authentication Schemas: `SIP Digest` Default: `SIP Digest` Click Save.
4 | Associate the IMPI to the IMSU: Enter: IMSU Identity: `6505550411` Click Add/Change. Click Save.
5 | Create the IMPU: Click Public Identity / Create. Enter: Identity: `sip:6505550411@example.com` Service Profile: `default_sp` Charging-Info Set: `default_charging_set` Click Save.
6 | Associate IMPI to IMPU: Enter: IMPI Identity: `6505550411@example.com` Click Add.
7 | Add Visited Network to IMPU: Enter: Visited Network: `example.com` Click Add.

### OCS configuration

To configure OCS:

1 | Login to VoLTE TAS and edit this file: `~/RhinoSDK/rhino-connectivity/diameter-2.6.0.7/simulators/ocs-simulator/config/accounts.xml`
2 | Add an entry for `65055500411`; for example:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!-- this is a sample account file for the Billing simulator -->
    <!DOCTYPE billing-simulator-accounts PUBLIC "-//Open Cloud Ltd.//DTD Billing Simulator Accounts 1.0//EN" "http://www.opencloud.com/dtd/billsim-accounts_1_0.dtd">
    <billing-simulator-accounts>
    <account>
    <msisdn>sip:65055500411@example.com</msisdn>
    <unlimited/>
    </account>
    <account>
    <msisdn>sip:6505550335@example.com</msisdn>
    <unlimited/>
    </account>
3 | Restart the OCS simulator:
    ubuntu@ip-172-31-36-135:~/RhinoSDK/rhino-connectivity/diameter-2.6.0.7/simulators/ocs-simulator$ sudo /etc/init.d/ocs stop

    ubuntu@ip-172-31-36-135:~/RhinoSDK/rhino-connectivity/diameter-2.6.0.7/simulators/ocs-simulator$ sudo /etc/init.d/ocs start

### Add MMTel CDIV data in REM

To add MMTel CDIV data:

1 | Login to the REM HSS Subscriber Data page.
2 | Click HSS Data: Add, and enter: IMS user identity: `sip:6505550411@example.com`
3 | Set CDIV features.
| For CDIV syntax, see Example CDIV rules
4 | Set ACR rules.
| For ACR syntax, see ACR rule example
5 | Click Save.

## MMTel Demonstrations

This section shows how to set up subscribers to see a variety of MMTel features in action.

- Anonymous Calling

- Anonymous Call Rejection

- CDIV No-Answer Scenario

- CDIV Unconditional Scenario

- CDIV Busy Scenario

## Anonymous Calling

To see anonymous calling in action:

1 | Start two UEs: Register `sip:6505550335@example.com` Register `sip:6505550425@example.com`
2 | Make a call from `sip:6505550335@example.com` to `sip:6505550425@example.com`.
| The incoming call is from `6505550335@example.com`.
3 | In REM, navigate to Sentinel / HSS Subscriber data OR XCAP…​.
4 | Search for `sip:6505550335@example.com.`
5 | Edit the HSS Data and set: OIR Active: `true` OIR Default Behaviour: `presentation-restricted`
6 | Wait 30 seconds.
7 | Make a call from `sip:6505550335@example.com` to `sip:6505550425@example.com`. The incoming call is `Anonymous`.

## Anonymous Call Rejection

To see anonymous call rejection in action:

1 | Start two UEs: Register `sip:6505550335@example.com` Register `sip:6505550425@example.com`
2 | In REM, navigate to Sentinel / HSS Subscriber data.
3 | Search for `sip:6505550425@example.com.`
4 | Edit the HSS Data and set: ICB Active: `true`
5 | Wait 30 seconds.
6 | Make a call from `sip:6505550335@example.com` to `sip:6505550425@example.com`. The incoming call is rejected.

## CDIV No-Answer Scenario

To see the CDIV no-answer scenario in action:

1 | Start a UE for each of: `sip:6505550335@example.com` `sip:6505550337@example.com` `sip:6505550425@example.com` For example:
2 | Make a call from `sip:6505550335@example.com` to `sip:6505550337@example.com`
| Note the incoming call.
3 | Make a call from `sip:6505550335@example.com` to `sip:6505550425@example.com`
| Note the incoming call.
4 | In REM: Navigate to Sentinel ▶ HSS Subscriber data. Search for `sip:6505550337@example.com`. Edit the HSS Data. Set CDIV Active to `true`.
5 | Wait 30 seconds.
6 | Make a call from `sip:6505550335@example.com` to `sip:6505550337@example.com` .
| Don’t answer it. Leave it ringing for 30 seconds.
The incoming call to `6505550337` is diverted to `6505550425`.

## CDIV Unconditional Scenario

To see the CDIV unconditional scenario in action:

1 | Start a UE for each of: `sip:6505550335@example.com` `sip:6505550337@example.com` `sip:6505550425@example.com` For example:
2 | Make a call from `sip:6505550335@example.com` to `sip:6505550386@example.com`
| Note the incoming call.
3 | In REM: Navigate to Sentinel ▶ HSS Subscriber data. Search for `sip:6505550386@example.com`. Edit the HSS Data: Set CDIV Active to `true`.
4 | Wait 30 seconds.
5 | Make a call from `sip:6505550335@example.com` to `sip:6505550386@example.com`.
| Don’t answer it. Leave it ringing for 30 seconds.
The incoming call is automatically diverted to `6505550425`.

## CDIV Busy Scenario

To see the CDIV busy scenario in action:

1 | Start a UE for each of: `sip:6505550335@example.com`
| Use Zoiper for `sip:6505550335@example.com`.
`sip:6505550337@example.com` `sip:6505550425@example.com`. For example:
2 | In REM: Navigate to Sentinel ▶ HSS Subscriber data. Search for `sip:6505550335@example.com`. Edit the HSS Data: Set CDIV Active to `true`.
3 | Wait 30 seconds.
4 | Make a call from `sip:6505550386@example.com` to `sip:6505550335@example.com`.
5 | Reject the call. The call is automatically diverted to `6505550425@example.com`.

## IMS Configuration in HSS

IMS configuration is stored in HSS. This page shows which IMS components are stored where.

### IMS subscription (IMSI)

Each subscriber has a IMS subscription which is linked to a preferred S-CSCF — Sprout.

### Preferred S‑CSCF

The Preferred S-CSCF page can be reached from the network configuration page. The entry for Sprout points to the SIP URI of the S-CSCF.

### Default profile

Each of the subscribers in HSS is linked to the service profile `default_sp`. This service profile is linked to the two iFCs `SipInvite` and `SipRegister`.

As the name implies, the 'SipInvite' iFC is for `INVITE` initiated signalling, and 'SipRegister' is for `REGISTER` initiated signalling.

### Initial filter criteria

The iFCs `SipInvite` and `SipRegister` are linked to the VoLTE TAS via the Application Server definition `Rhino_AS`.

`SipInvite`:

`SipRegister`:

### Application server

The Application server entry for `Rhino_AS` provides the connection details for the VoLTE TAS server.

## Decommissioning the Cloud Environment

To decommission the VoLTE cloud environment, the EC2 the administrator needs to:

1 | Login to the AWS console.
2 | Terminate: the Sentinel Volte TAS instance the OpenIMS HSS instance the Clearwater IMS instance.
3 | Delete: the associated volumes the associated snapshots the security group the key pair.