Repository: incubator-ariatosca Updated Branches: refs/heads/ARIA-321-clearwater 28d092aff -> e1ad58915 (forced update)
Initial install (succeeds, but Ellis has errors) Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/e1ad5891 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/e1ad5891 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/e1ad5891 Branch: refs/heads/ARIA-321-clearwater Commit: e1ad5891534ec39dc000376f748eda0a85d751db Parents: 67a0675 Author: Tal Liron <[email protected]> Authored: Tue Jul 18 17:25:27 2017 -0500 Committer: Tal Liron <[email protected]> Committed: Tue Jul 18 17:54:01 2017 -0500 ---------------------------------------------------------------------- .../clearwater/clearwater-single-static.yaml | 61 +++ examples/clearwater/scripts/bono/create.sh | 5 + examples/clearwater/scripts/bono/delete.sh | 0 examples/clearwater/scripts/dime/create.sh | 5 + examples/clearwater/scripts/dime/delete.sh | 0 examples/clearwater/scripts/ellis/create.sh | 5 + examples/clearwater/scripts/ellis/delete.sh | 0 examples/clearwater/scripts/homer/create.sh | 5 + examples/clearwater/scripts/homer/delete.sh | 0 examples/clearwater/scripts/homestead/create.sh | 0 examples/clearwater/scripts/homestead/delete.sh | 0 examples/clearwater/scripts/host/configure.sh | 136 +++++++ examples/clearwater/scripts/ralf/create.sh | 0 examples/clearwater/scripts/ralf/delete.sh | 0 examples/clearwater/scripts/sprout/create.sh | 8 + examples/clearwater/scripts/sprout/delete.sh | 0 examples/clearwater/scripts/velum/create.sh | 8 + examples/clearwater/scripts/velum/delete.sh | 0 examples/clearwater/types/cassandra.yaml | 0 examples/clearwater/types/clearwater.yaml | 256 ++++++++++++ examples/clearwater/types/ims.yaml | 394 +++++++++++++++++++ 21 files changed, 883 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/clearwater-single-static.yaml ---------------------------------------------------------------------- diff --git a/examples/clearwater/clearwater-single-static.yaml b/examples/clearwater/clearwater-single-static.yaml new file mode 100644 index 0000000..f46e150 --- /dev/null +++ b/examples/clearwater/clearwater-single-static.yaml @@ -0,0 +1,61 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 + +description: >- + Project Clearwater is an open-source IMS core, developed by Metaswitch Networks and released under + the GNU GPLv3. + +metadata: + template_name: clearwater-local + template_author: ARIA + template_version: '1.0.0' + aria_version: '0.1' + +imports: + - types/clearwater.yaml + - aria-1.0 + +topology_template: + + inputs: + hosts.user: + type: string + default: ubuntu + hosts.password: + type: string + default: ubuntu + static_host.public_address: + type: string + default: 192.168.1.170 + + node_templates: + bono: + type: clearwater.Bono + + sprout: + type: clearwater.Sprout + + dime: + type: clearwater.Dime + + homestead: + type: clearwater.Homestead + + ralf: + type: clearwater.Ralf + + velum: + type: clearwater.Velum + + homer: + type: clearwater.Homer + + ellis: + type: clearwater.Ellis + + static_host: + type: clearwater.Host + properties: + ssh.user: { get_input: hosts.user } + ssh.password: { get_input: hosts.password } + attributes: + public_address: { get_input: static_host.public_address } http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/bono/create.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/bono/create.sh b/examples/clearwater/scripts/bono/create.sh new file mode 100644 index 0000000..6e441c2 --- /dev/null +++ b/examples/clearwater/scripts/bono/create.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +yes | aptdcon --hide-terminal --install bono restund +yes | aptdcon --hide-terminal --install clearwater-management http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/bono/delete.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/bono/delete.sh b/examples/clearwater/scripts/bono/delete.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/dime/create.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/dime/create.sh b/examples/clearwater/scripts/dime/create.sh new file mode 100644 index 0000000..584fcd0 --- /dev/null +++ b/examples/clearwater/scripts/dime/create.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +yes | aptdcon --hide-terminal --install dime clearwater-prov-tools +yes | aptdcon --hide-terminal --install clearwater-management http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/dime/delete.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/dime/delete.sh b/examples/clearwater/scripts/dime/delete.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/ellis/create.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/ellis/create.sh b/examples/clearwater/scripts/ellis/create.sh new file mode 100644 index 0000000..f7fb151 --- /dev/null +++ b/examples/clearwater/scripts/ellis/create.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +yes | aptdcon --hide-terminal --install ellis +yes | aptdcon --hide-terminal --install clearwater-management http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/ellis/delete.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/ellis/delete.sh b/examples/clearwater/scripts/ellis/delete.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/homer/create.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/homer/create.sh b/examples/clearwater/scripts/homer/create.sh new file mode 100644 index 0000000..4aa4893 --- /dev/null +++ b/examples/clearwater/scripts/homer/create.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +yes | aptdcon --hide-terminal --install homer +yes | aptdcon --hide-terminal --install clearwater-management http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/homer/delete.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/homer/delete.sh b/examples/clearwater/scripts/homer/delete.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/homestead/create.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/homestead/create.sh b/examples/clearwater/scripts/homestead/create.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/homestead/delete.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/homestead/delete.sh b/examples/clearwater/scripts/homestead/delete.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/host/configure.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/host/configure.sh b/examples/clearwater/scripts/host/configure.sh new file mode 100644 index 0000000..ab0a3fd --- /dev/null +++ b/examples/clearwater/scripts/host/configure.sh @@ -0,0 +1,136 @@ +#!/bin/bash +set -e + +REPO_FILE=/etc/apt/sources.list.d/clearwater.list +REPO_LINE="deb http://repo.cw-ngv.com/stable binary/" +KEY_URL=http://repo.cw-ngv.com/repo_key + +# Clearwater repository +if [ ! -f "$REPO_FILE" ]; then + echo "$REPO_LINE" > "$REPO_FILE" + curl -L "$KEY_URL" | apt-key add - + apt update +fi + +if ! type aptdcon > /dev/null; then + apt install aptdaemon --yes +fi + +# For cw-upload_shared_config +yes | aptdcon --hide-terminal --install clearwater-config-manager + + +CONFIG_FILE=/etc/clearwater/local_config + +LOCAL_IP=192.168.1.170 +PUBLIC_HOSTNAME=ubuntu +SITE_NAME=aria +ZONE=example.com +SECRET=secret + +# Local configuration +if [ ! -f "$CONFIG_FILE" ]; then + PUBLIC_IP=$LOCAL_IP + ETCD_CLUSTER=$LOCAL_IP + + mkdir -p /etc/clearwater + echo "# Created by ARIA on $(date -u)" > "$CONFIG_FILE" + + echo >> "$CONFIG_FILE" + echo "# Local IP configuration" >> "$CONFIG_FILE" + echo "local_ip=$LOCAL_IP" >> "$CONFIG_FILE" + echo "public_ip=$PUBLIC_IP" >> "$CONFIG_FILE" + echo "public_hostname=$PUBLIC_HOSTNAME" >> "$CONFIG_FILE" + echo "etcd_cluster=\"$ETCD_CLUSTER\"" >> "$CONFIG_FILE" + + echo >> "$CONFIG_FILE" + echo "# Max 50MB of logs" >> "$CONFIG_FILE" + echo "max_log_directory_size=52428800" >> "$CONFIG_FILE" + + if [ 1 -eq 2 ]; then + # Geographically redundant + echo >> "$CONFIG_FILE" + echo "# Geographically redundant" >> "$CONFIG_FILE" + echo "local_site_name=$SITE_NAME" >> "$CONFIG_FILE" + + # On the first Vellum node in the second site, you should set remote_cassandra_seeds to the + # IP address of a Vellum node in the first site. + #echo "remote_cassandra_seeds=" >> "$CONFIG_FILE" + fi +fi + + +CONFIG_FILE=/etc/clearwater/shared_config + +# Shared configuration +if [ ! -f "$CONFIG_FILE" ]; then + SMTP_HOSTNAME=127.0.0.1 + SMTP_USERNAME=username + SMTP_PASSWORD=password + + if [ 1 -eq 2 ]; then + # Geographically redundant + SPROUT_HOSTNAME=sprout.$SITE_NAME.$ZONE + SPROUT_REGISTRATION_STORE=vellum.$SITE_NAME.$ZONE + HS_HOSTNAME=hs.$SITE_NAME.$ZONE:8888 + HS_PROVISIONING_HOSTNAME=hs.$SITE_NAME.$ZONE:8889 + RALF_HOSTNAME=ralf.$SITE_NAME.$ZONE:10888 + RALF_SESSION_STORE=vellum.$ZONE + XDMS_HOSTNAME=homer.$SITE_NAME.$ZONE:7888 + CHRONOS_HOSTNAME=vellum.$SITE_NAME.$ZONE + CASSANDRA_HOSTNAME=vellum.$SITE_NAME.$ZONE + else + VELLUM_IP=$LOCAL_IP + HS_IP=$LOCAL_IP + HOMER_IP=$LOCAL_IP + + SPROUT_HOSTNAME=$PUBLIC_HOSTNAME + SPROUT_REGISTRATION_STORE=$VELLUM_IP + HS_HOSTNAME=$HS_IP:8888 + HS_PROVISIONING_HOSTNAME=$HS_IP:8889 + RALF_HOSTNAME= + RALF_SESSION_STORE= + XDMS_HOSTNAME=$HOMER_IP:7888 + CHRONOS_HOSTNAME= + CASSANDRA_HOSTNAME= + fi + + mkdir -p /etc/clearwater + echo "# Created by ARIA on $(date -u)" > "$CONFIG_FILE" + + echo >> "$CONFIG_FILE" + echo "# Deployment definitions" >> "$CONFIG_FILE" + echo "home_domain=$ZONE" >> "$CONFIG_FILE" + echo "sprout_hostname=$SPROUT_HOSTNAME" >> "$CONFIG_FILE" + echo "sprout_registration_store=$SPROUT_REGISTRATION_STORE" >> "$CONFIG_FILE" + echo "hs_hostname=$HS_HOSTNAME" >> "$CONFIG_FILE" + echo "hs_provisioning_hostname=$HS_PROVISIONING_HOSTNAME" >> "$CONFIG_FILE" + echo "ralf_hostname=$RALF_HOSTNAME" >> "$CONFIG_FILE" + echo "ralf_session_store=$RALF_SESSION_STORE" >> "$CONFIG_FILE" + echo "xdms_hostname=$XDMS_HOSTNAME" >> "$CONFIG_FILE" + echo "chronos_hostname=$CHRONOS_HOSTNAME" >> "$CONFIG_FILE" + echo "cassandra_hostname=$CASSANDRA_HOSTNAME" >> "$CONFIG_FILE" + + echo >> "$CONFIG_FILE" + echo "# Email server configuration" >> "$CONFIG_FILE" + echo "smtp_smarthost=$SMTP_HOSTNAME" >> "$CONFIG_FILE" + echo "smtp_username=$SMTP_USERNAME" >> "$CONFIG_FILE" + echo "smtp_password=$SMTP_PASSWORD" >> "$CONFIG_FILE" + echo "email_recovery_sender=clearwater@$ZONE" >> "$CONFIG_FILE" + + echo >> "$CONFIG_FILE" + echo "# I-CSCF/S-CSCF configuration" >> "$CONFIG_FILE" + echo "upstream_hostname=scscf.$HOSTNAME" >> "$CONFIG_FILE" + + echo >> "$CONFIG_FILE" + echo "# Keys" >> "$CONFIG_FILE" + echo "signup_key=$SECRET" >> "$CONFIG_FILE" + echo "turn_workaround=$SECRET" >> "$CONFIG_FILE" + echo "ellis_api_key=$SECRET" >> "$CONFIG_FILE" + echo "ellis_cookie_key=$SECRET" >> "$CONFIG_FILE" + + echo >> "$CONFIG_FILE" + echo "reduce_cassandra_mem_usage=Y" >> "$CONFIG_FILE" + + #cw-upload_shared_config +fi http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/ralf/create.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/ralf/create.sh b/examples/clearwater/scripts/ralf/create.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/ralf/delete.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/ralf/delete.sh b/examples/clearwater/scripts/ralf/delete.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/sprout/create.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/sprout/create.sh b/examples/clearwater/scripts/sprout/create.sh new file mode 100644 index 0000000..32f2a1a --- /dev/null +++ b/examples/clearwater/scripts/sprout/create.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +yes | aptdcon --hide-terminal --install sprout +yes | aptdcon --hide-terminal --install clearwater-management + +# Memento +#yes | aptdcon --hide-terminal --install memento-as memento-nginx http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/sprout/delete.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/sprout/delete.sh b/examples/clearwater/scripts/sprout/delete.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/velum/create.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/velum/create.sh b/examples/clearwater/scripts/velum/create.sh new file mode 100644 index 0000000..ae22417 --- /dev/null +++ b/examples/clearwater/scripts/velum/create.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +yes | aptdcon --hide-terminal --install vellum +yes | aptdcon --hide-terminal --install clearwater-management + +# Memento +#yes | aptdcon --hide-terminal --install memento-cassandra http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/scripts/velum/delete.sh ---------------------------------------------------------------------- diff --git a/examples/clearwater/scripts/velum/delete.sh b/examples/clearwater/scripts/velum/delete.sh new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/types/cassandra.yaml ---------------------------------------------------------------------- diff --git a/examples/clearwater/types/cassandra.yaml b/examples/clearwater/types/cassandra.yaml new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/types/clearwater.yaml ---------------------------------------------------------------------- diff --git a/examples/clearwater/types/clearwater.yaml b/examples/clearwater/types/clearwater.yaml new file mode 100644 index 0000000..97fc395 --- /dev/null +++ b/examples/clearwater/types/clearwater.yaml @@ -0,0 +1,256 @@ +# http://clearwater.readthedocs.io/en/stable/Clearwater_Architecture.html + +imports: + - ims.yaml + +dsl_definitions: + + clearwater_operation_dependencies: &CLEARWATER_OPERATION_DEPENDENCIES + - "ssh.user > { get_property: [ HOST, ssh.user ] }" + - "ssh.password > { get_property: [ HOST, ssh.password ] }" + - "ssh.address > { get_attribute: [ HOST, public_address ] }" + - "ssh.use_sudo > true" + +node_types: + + clearwater.Host: + derived_from: tosca.nodes.Compute + properties: + ssh.user: + type: string + ssh.password: + type: string + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + configure: + implementation: + primary: scripts/host/configure.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + + clearwater.Bono: + description: >- + Clearwater edge proxy. + + The Bono nodes form a horizontally scalable SIP edge proxy providing both a SIP IMS Gm + compliant interface and a WebRTC interface to clients. Client connections are load balanced + across the nodes. The Bono node provides the anchor point for the client's connection to the + Clearwater system, including support for various NAT traversal mechanisms. A client is + therefore anchored to a particular Bono node for the duration of its registration, but can + move to another Bono node if the connection or client fails. + + Clients can connect to Bono using SIP/UDP or SIP/TCP. Bono supports any WebRTC client that + performs call setup signaling using SIP over WebSocket. + + Alternatively, Clearwater can be deployed with a third party P-CSCF or Session Border + Controller implementing P-CSCF. In this case Bono nodes are not required. + derived_from: tosca.nodes.SoftwareComponent + capabilities: + Gm: ims.capabilities.Gm + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + create: + implementation: + primary: scripts/bono/create.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + delete: + implementation: + primary: scripts/bono/delete.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + + clearwater.Sprout: + description: >- + Clearwater SIP router. + + The Sprout nodes act as a horizontally scalable, combined SIP registrar and authoritative + routing proxy, and handle client authentication and the ISC interface to application servers. + The Sprout nodes also contain the in-built MMTEL application server. SIP transactions are load + balanced across the Sprout cluster, so there is no long-lived association between a client and + a particular Sprout node. Sprout does not store any long-lived data itself and instead uses + web service interfaces to Homestead and Homer to retrieve HSS configuration such as + authentication data/user profiles and MMTEL service settings APIs to Vellum for storing + subscriber registration data and for running timers. + + Sprout is where the bulk of the I-CSCF and S-CSCF function resides, with the remainder + provided by Dime (and backed by the long-lived data stores on Vellum). + derived_from: tosca.nodes.SoftwareComponent + properties: + memento: + description: >- + Set to true if you want the Sprout node to include a Memento Application server. + type: boolean + default: false + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + create: + implementation: + primary: scripts/sprout/create.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + delete: + implementation: + primary: scripts/sprout/delete.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + + clearwater.Dime: + description: >- + Clearwater Diameter gateway. + + Dime nodes run Clearwater's Homestead and Ralf components. + derived_from: tosca.nodes.SoftwareComponent + capabilities: + host: + type: tosca.capabilities.Container + valid_source_types: [ clearwater.DimeSoftwareComponent ] + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + create: + implementation: + primary: scripts/dime/create.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + delete: + implementation: + primary: scripts/dime/delete.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + + clearwater.DimeSoftwareComponent: + description: >- + Base type for Dime software components. + derived_from: tosca.nodes.SoftwareComponent + requirements: + - host: # override + capability: tosca.capabilities.Container + node: clearwater.Dime + + clearwater.Homestead: + description: >- + Clearwater HSS cache. + + Homestead provides a web services interface to Sprout for retrieving authentication + credentials and user profile information. It can either master the data (in which case it + exposes a web services provisioning interface) or can pull the data from an IMS compliant HSS + over the Cx interface. The Homestead nodes themselves are stateless - the mastered / cached + subscriber data is all stored on Vellum (via Cassandraâs Thrift interface). + + In the IMS architecture, the HSS mirror function is considered to be part of the I-CSCF and + S-CSCF components, so in Clearwater I-CSCF and S-CSCF function is implemented with a + combination of Sprout and Dime clusters. + derived_from: clearwater.DimeSoftwareComponent + capabilities: + Cx: ims.capabilities.Cx + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + create: + implementation: + primary: scripts/homestead/create.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + delete: + implementation: + primary: scripts/homestead/delete.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + + clearwater.Ralf: + description: >- + Clearwater CTF. + + Ralf provides an HTTP API that both Bono and Sprout can use to report billable events that + should be passed to the CDF (Charging Data Function) over the Rf billing interface. Ralf is + stateless, using Vellum to maintain the long lived session state and run the timers necessary + to enable it to conform to the Rf protocol. + derived_from: clearwater.DimeSoftwareComponent + capabilities: + Rf: ims.capabilities.Rf + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + create: + implementation: + primary: scripts/ralf/create.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + delete: + implementation: + primary: scripts/ralf/delete.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + + clearwater.Velum: + description: >- + Clearwater state store. + + Vellum is used to maintain all long-lived state in the deployment. It does this by running a + number of cloud optimized, distributed storage clusters. + + - Cassandra. Cassandra is used by Homestead to store authentication credentials and profile + information, and is used by Homer to store MMTEL service settings. Vellum exposes Cassandra's + Thrift API. + + - etcd. etcd is used by Vellum itself to share clustering information between Vellum nodes and + by other nodes in the deployment for shared configuration. + + - Chronos. Chronos is a distributed, redundant, reliable timer service developed by + Clearwater. It is used by Sprout and Ralf nodes to enable timers to be run (e.g. for SIP + Registration expiry) without pinning operations to a specific node (one node can set the timer + and another act on it when it pops). Chronos is accessed via an HTTP API. + + - Memcached / Astaire. Vellum also runs a Memcached cluster fronted by Astaire. Astaire is a + service developed by Clearwater that enabled more rapid scale up and scale down of memcached + clusters. This cluster is used by Sprout and Ralf for storing registration and session state. + derived_from: tosca.nodes.SoftwareComponent + properties: + memento: + description: >- + Set to true if you want your Sprout node includes a Memento Application server. + type: boolean + default: false + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + create: + implementation: + primary: scripts/velum/create.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + delete: + implementation: + primary: scripts/velum/delete.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + + clearwater.Homer: + description: >- + Clearwater XDMS. + + Homer is a standard XDMS used to store MMTEL service settings documents for each user of the + system. Documents are created, read, updated and deleted using a standard XCAP interface. As + with Homestead, the Homer nodes use Vellum as the data store for all long lived data. + derived_from: tosca.nodes.SoftwareComponent + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + create: + implementation: + primary: scripts/homer/create.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + delete: + implementation: + primary: scripts/homer/delete.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + + clearwater.Ellis: + description: >- + Ellis is a sample provisioning portal providing self sign-up, password management, line + management and control of MMTEL service settings. It is not intended to be a part of + production Clearwater deployments (it is not easy to horizontally scale because of the MySQL + underpinnings for one thing) but to make the system easy to use out of the box. + derived_from: tosca.nodes.SoftwareComponent + interfaces: + Standard: + type: tosca.interfaces.node.lifecycle.Standard + create: + implementation: + primary: scripts/ellis/create.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES + delete: + implementation: + primary: scripts/ellis/delete.sh + dependencies: *CLEARWATER_OPERATION_DEPENDENCIES http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e1ad5891/examples/clearwater/types/ims.yaml ---------------------------------------------------------------------- diff --git a/examples/clearwater/types/ims.yaml b/examples/clearwater/types/ims.yaml new file mode 100644 index 0000000..6b9d8e3 --- /dev/null +++ b/examples/clearwater/types/ims.yaml @@ -0,0 +1,394 @@ +# https://en.wikipedia.org/wiki/IP_Multimedia_Subsystem#Interfaces_description + +capability_types: + + # In IMS these are called "interfaces". + + ims.capabilities.Diameter: + derived_from: tosca.capabilities.Root + + ims.capabilities.TCP: + derived_from: tosca.capabilities.Root + + ims.capabilities.SIP: + derived_from: tosca.capabilities.Root + + ims.capabilities.RTP: + derived_from: tosca.capabilities.Root + + ims.capabilities.H248: + derived_from: tosca.capabilities.Root + + ims.capabilities.HTTP: + derived_from: tosca.capabilities.Root + + ims.capabilities.MAP: + derived_from: tosca.capabilities.Root + + ims.capabilities.Cr: + description: >- + Used by MRFC to fetch documents (e.g. scripts, announcement files, and other resources) from + an AS. Also used for media control related commands. + derived_from: ims.capabilities.TCP + + ims.capabilities.Cx: + description: >- + Used to send subscriber data to the S-CSCF; including filter criteria and their priority. Also + used to furnish CDF and/or OCF addresses. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Dh: + description: >- + Used by AS to find the HSS holding the user profile information in a multi-HSS environment. + DH_SLF_QUERY indicates an IMPU and DX_SLF_RESP return the HSS name. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Dx: + description: >- + Used by I-CSCF or S-CSCF to find a correct HSS in a multi-HSS environment. DX_SLF_QUERY + indicates an IMPU and DX_SLF_RESP return the HSS name. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Gm: + description: >- + Used to exchange messages between SIP user equipment (UE) or Voip gateway and P-CSCF. + derived_from: ims.capabilities.SIP + + ims.capabilities.Go: + description: >- + Allows operators to control QoS in a user plane and exchange charging correlation + information between IMS and GPRS network. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Gq: + description: >- + Used to exchange policy decisions-related information between P-CSCF and PDF. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Gx: + description: >- + Used to exchange policy decisions-related information between PCEF and PCRF. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Gy: + description: >- + Used for online flow-based bearer charging. Functionally equivalent to Ro interface. + derived_from: ims.capabilities.Diameter + + ims.capabilities.ISC: + description: >- + Reference point between S-CSCF and AS. Main functions are to: + * Notify the AS of the registered IMPU, registration state and UE capabilities + * Supply the AS with information to allow it to execute multiple services + * Convey charging function addresses + derived_from: ims.capabilities.SIP + + ims.capabilities.Ici: + description: >- + Used to exchange messages between an IBCF and another IBCF belonging to a different IMS + network. + derived_from: ims.capabilities.SIP + + ims.capabilities.Izi: + description: >- + Used to forward media streams from a TrGW to another TrGW belonging to a different IMS + network. + derived_from: ims.capabilities.RTP + + ims.capabilities.Ma: + description: >- + Main functions are to: + * Forward SIP requests which are destined to a public service identity hosted by the AS + * Originate a session on behalf of a user or public service identity, if the AS has no + knowledge of a S-CSCF assigned to that user or public service identity + * Convey charging function addresses + derived_from: ims.capabilities.SIP + + ims.capabilities.Mg: + description: >- + ISUP signalling to SIP signalling and forwards SIP signalling to I-CSCF. + derived_from: ims.capabilities.SIP + + ims.capabilities.Mi: + description: >- + Used to exchange messages between S-CSCF and BGCF. + derived_from: ims.capabilities.SIP + + ims.capabilities.Mj: + description: >- + Used for the interworking with the PSTN/CS domain, when the BGCF has determined that a + breakout should occur in the same IMS network to send SIP message from BGCF to MGCF. + derived_from: ims.capabilities.SIP + + ims.capabilities.Mk: + description: >- + Used for the interworking with the PSTN/CS domain, when the BGCF has determined that a + breakout should occur in another IMS network to send SIP message from BGCF to the BGCF in the + other network. + derived_from: ims.capabilities.SIP + + ims.capabilities.Mm: + description: >- + Used for exchanging messages between IMS and external IP networks. + derived_from: ims.capabilities.SIP + + ims.capabilities.Mn: + description: >- + Allows control of user-plane resources. + derived_from: ims.capabilities.H248 + + ims.capabilities.Mp: + description: >- + Allows an MRFC to control media stream resources provided by an MRFP. + derived_from: ims.capabilities.H248 + + ims.capabilities.Mr: + description: >- + Used to exchange information between S-CSCF and MRFC. + derived_from: ims.capabilities.SIP + + ims.capabilities.Mr2: + description: >- + Used to exchange session controls between AS and MRFC. + derived_from: ims.capabilities.SIP + + ims.capabilities.Mw: + description: >- + Used to exchange messages between CSCFs. AGCF appears as a P-CSCF to the other CSCFs. + derived_from: ims.capabilities.SIP + + ims.capabilities.Mx: + description: >- + Used for the interworking with another IMS network, when the BGCF has determined that a + breakout should occur in the other IMS network to send SIP message from BGCF to the IBCF in + the other network. + derived_from: ims.capabilities.SIP + + ims.capabilities.P1: + description: >- + Used for call control services by AGCF to control H.248 A-MGW and residential gateways. + derived_from: ims.capabilities.H248 + + ims.capabilities.P2: + description: >- + Reference point between AGCF and CSCF. + derived_from: ims.capabilities.SIP + + ims.capabilities.Rc: + description: >- + Used by the AS to request that media resources be assigned to a call when using MRB in-line + mode or in query mode. + derived_from: ims.capabilities.SIP + + ims.capabilities.Rf: + description: >- + Used to exchange offline charging information with CDF. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Ro: + description: >- + Used to exchange online charging information with OCF. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Rx: + description: >- + Used to exchange policy and charging related information between P-CSCF and PCRF. Replacement + for the Gq reference point. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Sh: + description: >- + Used to exchange User Profile information (e.g., user-related data, group lists, + user-service-related information or user location information or charging function addresses + (used when the AS has not received the third-party REGISTER for a user)) between an AS (SIP + AS or OSA SCS) and HSS. Also allow AS to activate/deactivate filter criteria stored in the HSS + on a per-subscriber basis. + derived_from: ims.capabilities.Diameter + + ims.capabilities.Si: + description: >- + Transports CAMEL subscription information, including triggers for use by CAMEL-based + application services information. + derived_from: ims.capabilities.MAP + + ims.capabilities.Sr: + description: >- + Used by MRFC to fetch documents (scripts and other resources) from an AS. + derived_from: ims.capabilities.HTTP + + ims.capabilities.Ut: + description: >- + Facilitates the management of subscriber information related to services and settings. + derived_from: ims.capabilities.HTTP + + ims.capabilities.Z: + description: >- + Conversion of POTS services to SIP messages. + derived_from: tosca.capabilities.Root + + +# https://en.wikipedia.org/wiki/IP_Multimedia_Subsystem#Core_network + +node_types: + + # In IMS these are called "functions". + + ims.nodes.HSS: + description: >- + The home subscriber server (HSS), or user profile server function (UPSF), is a master user + database that supports the IMS network entities that actually handle calls. It contains the + subscription-related information (subscriber profiles), performs authentication and + authorization of the user, and can provide information about the subscriber's location and IP + information. It is similar to the GSM home location register (HLR) and Authentication centre + (AuC). + + A subscriber location function (SLF) is needed to map user addresses when multiple HSSs are + used. + derived_from: tosca.nodes.Root + + ims.nodes.CSCF: + description: >- + Several roles of SIP servers or proxies, collectively called Call Session Control Function + (CSCF), are used to process SIP signalling packets in the IMS. + derived_from: tosca.nodes.Root + + ims.nodes.P-CSCF: + description: >- + A Proxy-CSCF (P-CSCF) is a SIP proxy that is the first point of contact for the IMS terminal. + It can be located either in the visited network (in full IMS networks) or in the home network + (when the visited network is not IMS compliant yet). Some networks may use a Session Border + Controller (SBC) for this function. The P-CSCF is at its core a specialized SBC for the + Userânetwork interface which not only protects the network, but also the IMS terminal. The use + of an additional SBC between the IMS terminal and the P-CSCF is unnecessary and infeasible due + to the signaling being encrypted on this leg. The terminal discovers its P-CSCF with either + DHCP, or it may be configured (e.g. during initial provisioning or via a 3GPP IMS Management + Object (MO)) or in the ISIM or assigned in the PDP Context (in General Packet Radio Service + (GPRS)). + derived_from: ims.nodes.CSCF + + ims.nodes.I-CSCF: + description: >- + An Interrogating-CSCF (I-CSCF) is another SIP function located at the edge of an + administrative domain. Its IP address is published in the Domain Name System (DNS) of the + domain (using NAPTR and SRV type of DNS records), so that remote servers can find it, and use + it as a forwarding point (e.g., registering) for SIP packets to this domain. + derived_from: ims.nodes.CSCF + + ims.nodes.S-CSCF: + description: >- + A Serving-CSCF (S-CSCF) is the central node of the signalling plane. It is a SIP server, but + performs session control too. It is always located in the home network. It uses Diameter Cx + and Dx interfaces to the HSS to download user profiles and upload user-to-S-CSCF associations + (the user profile is only cached locally for processing reasons only and is not changed). All + necessary subscriber profile information is loaded from the HSS. + derived_from: ims.nodes.CSCF + + ims.nodes.AS: + description: >- + SIP Application servers (AS) host and execute services, and interface with the S-CSCF using + SIP. An example of an application server that is being developed in 3GPP is the Voice call + continuity Function (VCC Server). Depending on the actual service, the AS can operate in SIP + proxy mode, SIP UA (user agent) mode or SIP B2BUA mode. An AS can be located in the home + network or in an external third-party network. If located in the home network, it can query + the HSS with the Diameter Sh or Si interfaces (for a SIP-AS). + derived_from: tosca.nodes.Root + + ims.nodes.SIP-AS: + description: >- + Host and execute IMS specific services. + derived_from: ims.nodes.AS + + ims.nodes.IM-SSF: + description: >- + IP Multimedia Service Switching Function. Interfaces SIP to CAP to communicate with CAMEL + Application Servers. + derived_from: ims.nodes.AS + + ims.nodes.OSA-SCS: + description: >- + OSA service capability server. Interfaces SIP to the OSA framework. + derived_from: ims.nodes.AS + + ims.nodes.AS-ILCM: + description: >- + The AS-ILCM (Application Server - Incoming Leg Control Model) stores transaction state, and + may optionally store session state depending on the specific service being executed. The + AS-ILCM interfaces to the S-CSCF (ILCM) for an incoming leg. Application Logic provides the + service(s) and interacts between the AS-ILCM and AS-OLCM. + derived_from: ims.nodes.AS + + ims.nodes.AS-OLCM: + description: >- + The AS-OLCM (Application Server - Outgoing Leg Control Model) stores transaction state, and + may optionally store session state depending on the specific service being executed. The + AS-OLCM interfaces to the S-CSCF (OLCM) for an outgoing leg. Application Logic provides the + service(s) and interacts between the AS-ILCM and AS-OLCM. + derived_from: ims.nodes.AS + + ims.nodes.MRF: + description: >- + The Media Resource Function (MRF) provides media related functions such as media manipulation + (e.g. voice stream mixing) and playing of tones and announcements. + + Each MRF is further divided into a media resource function controller (MRFC) and a media + resource function processor (MRFP). + derived_from: tosca.nodes.Root + + ims.nodes.MRFC: + description: >- + The MRFC is a signalling plane node that interprets information coming from an AS and S-CSCF + to control the MRFP. + derived_from: tosca.nodes.Root + + ims.nodes.MRFP: + description: >- + The MRFP is a media plane node used to mix, source or process media streams. It can also + manage access right to shared resources. + derived_from: tosca.nodes.Root + + ims.nodes.MRB: + description: >- + The Media Resource Broker (MRB) is a functional entity that is responsible for both collection + of appropriate published MRF information and supplying of appropriate MRF information to + consuming entities such as the AS. MRB can be used in two modes: + * Query mode: AS queries the MRB for media and sets up the call using the response of MRB + * In-Line Mode: AS sends a SIP INVITE to the MRB. The MRB sets up the call + derived_from: tosca.nodes.Root + + ims.nodes.BGCF: + description: >- + A Breakout Gateway Control Function (BGCF) is a SIP proxy which processes requests for routing + from an S-CSCF when the S-CSCF has determined that the session cannot be routed using DNS or + ENUM/DNS. It includes routing functionality based on telephone numbers. + derived_from: tosca.nodes.Root + + ims.nodes.PTSNGateway: + description: >- + A PSTN/CS gateway interfaces with PSTN circuit switched (CS) networks. For signalling, CS + networks use ISDN User Part (ISUP) (or BICC) over Message Transfer Part (MTP), while IMS uses + SIP over IP. For media, CS networks use Pulse-code modulation (PCM), while IMS uses Real-time + Transport Protocol (RTP). + derived_from: tosca.nodes.Root + + ims.nodes.SGW: + description: >- + A signalling gateway (SGW) interfaces with the signalling plane of the CS. It transforms lower + layer protocols as Stream Control Transmission Protocol (SCTP, an IP protocol) into Message + Transfer Part (MTP, an Signalling System 7 (SS7) protocol), to pass ISDN User Part (ISUP) from + the MGCF to the CS network. + derived_from: ims.nodes.PTSNGateway + + ims.nodes.MGCF: + description: >- + A media gateway controller function (MGCF) is a SIP endpoint that does call control protocol + conversion between SIP and ISUP/BICC and interfaces with the SGW over SCTP. It also controls + the resources in a Media Gateway (MGW) across an H.248 interface. + derived_from: ims.nodes.PTSNGateway + + ims.nodes.MGW: + description: >- + A media gateway (MGW) interfaces with the media plane of the CS network, by converting between + RTP and PCM. It can also transcode when the codecs don't match (e.g., IMS might use AMR, PSTN + might use G.711). + derived_from: ims.nodes.PTSNGateway + \ No newline at end of file
