Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Якорь
with_one_server
with_one_server

Оглавление
printablefalse

Initial data

Информация

Initial data

Integration of the ECSS-10 Class 5 software switch (SSW) on 1 physical server with support for SIP with the following parameters per load:

  • Maximum number of subscribers — 15.000 (MUL — Max user limit);
  • Maximum number of simultaneous connections — 2.000 (MCL — Max call limit);
  • System redundancy is not required;
  • The number of Ethernet network interfaces — 4.

...

Example of drafting hardware requirements

Device

Required resource

Hardware product series

MCL

MUL

Server 1

2500

15000

Heavy

After determining the requirements of the project, create a preliminary network map.

...

Server name (host)

Role

Interface

Address

Port

Static addresses of the software switch

ecss1Server address

net.10 (mgm)

10.0.10.10/24

-
ecss2Protocole adapter address

net.20 (voip)

10.0.20.10/24

-

ecss1

Gateway address

net.10 (mgm)

10.0.10.1

-

ecss2

DNS server addresses

net.10 (mgm)

10.0.10.1, 8.8.8.8

-

Internal addresses of the software switch

ecss1Core address (ecss-core)

lo

127.0.0.1/24

5000
ecss2Media server address (ecss-media-server (MSR))

lo

127.0.0.1/24

5040

Connecting to network

The topology of connecting the server to the network to ensure redundancy is recommended to be done using 2 switches.

Image Added

draw.io DiagrambordertruediagramNamestacksimpleViewerfalsewidth600linksautotbstyletoplboxtruediagramWidth1966revision1Figure 1 — Network connection diagram

...

Server network interfaces are also included in pairs in switches, on which port aggregation (port-channel) is configured in LACP mode. For example, eth0 and eth1 are included to first switch (port-channel 1), and eth2 and eth3 — to the second (port-channel 2).

Installation of ECSS-10 on one server

Installation of ECSS-10 consists of two main parts:

  1. Preparation: installation of Ubuntu 22.04, Ubuntu packets updating, OS "optimization", installation of additional software packages, preparation of network interfaces, /etc/hosts, ssh-keygen
  2. Installation of ECSS-10 

Preparation

This section describes the operating system installation, as well as required and optional packages. ECSS-10 version 3.18 runs on Ubuntu 22.04.

...

  • Installation media with the operating system distribution;
  • A prepared server with an updated BIOS, ILP (if available), and a connected network for internet access;
  • Setting the installation media (USB flash drive or CD/DVD) as the first boot priority in the BIOS;
  • Sufficient disk space and memory as specified in the design.

Якорь
inst_os
inst_os
OS installation

To install the OS, do the following:

...

Раскрыть
titleUbuntu Server 22.04 installation
A Shared Block
shared-block-keyUbuntu Server 22.04 installation
панель
titleSelect language

панель
titleContinue without update

панель
titleKeyboard configuration


панель
titleВыбираем стандартную установку Ubuntu Сервер


панель
titleSelect Eht: the interface for installing Ubuntu (it should have internet access).

панель
titleSet the IP address for internet access (DHCP cannot be used).

панель
titleProxy server cannot be used (if it is used in your project, please specify)

панель
titleDefault

панель
titleCreate partitions on the disk, using LVM

панель
titleBy default, two partitions are created: /boot and /, we keep /boot and delete /. First, unmount

панель
titleThen delete

панель
titleConfirm deletion

панель
titleLeave only /boot

панель
titleCreate partitions according to the dimensions specified in the table below

панель
title root size 30 Gb, mount point /

панель
title mnesia size 30 Gb, mount point /var/lib/ecss

панель
title log size 20 Gb, mount point /var/log

панель
titlemysql, size 30G, mount point - /var/lib/mysql

панель
title ecss_log, size 20 Gb, mount point  /var/log/ecss

панель
titleecss_db, size 100 Gb, mount point-  /var/lib/ecss-mysql

панель
titlehome, size 10 Gb, mount point -  /home

панель
titleglusterfs - for the cluster / for a single host - restfs, size - all remaining disk space, mount point - /var/lib/ecss/glusterfs - for the cluster, and /var/lib/ecss/restfs - for a single server

панель
titleobtained configuration

панель
titleConfirm

панель
titleCreate a user and a hostname, in ECSS10 the recommended hostname is ecss1/ecss2 (used for license integration), username (in the example abf / password at your discretion)

панель
titleWhen installing, select Free installation:

панель
titleWhen installing Ubuntu Linux, install openSSH for remote management

панель
titleConfirm

панель
titleWait for the message to appear - Restart now

панель
titleRemove the installation disk/flash drive and press Enter

 Ubuntu Linux Server has been installed.



Якорь
df
df
Table1 — An option for storing information in a file system on physical media for servers

или glusterfs* или или или * или
1Operating system boot partition (created automatically)bootraid 1: hdd1, hdd2boot/bootext41 GBPrimary
2Operating system root partitionrootraid 1: hdd1, hdd2root/ext430 GBLogical
3Local database informationmnesiaraid 1: hdd1, hdd2mnesia/var/lib/ecssext410 GBLogical
4Distributed database for storing media resourcesglusterfsraid 1: hdd1, hdd2
or hdd3glusterfs/var/lib/ecss/
restfsext4Max GBLogical
5OS subsystem operation logslograid 1: hdd1, hdd2
or hdd3log/var/logext420 GBLogical
6ECSS subsystem operation logsecss_lograid 1: hdd1, hdd2
or hdd3ecss_log/var/log/ecssext420 GBLogical
7Databasesecss_dbraid 1: hdd1, hdd2
or hdd3ecss_db/srv/ecss/ecss-postgres-bdr-ssw/ext4100–400 GB*
Logical
8User fileshomeraid 1: hdd1, hdd2
or hdd3home/homeext410 GBLogical


Примечание

* If the server will not work in a cluster, then a partition /var/lib/ecss/restfs is created instead of glusterfs.** The recommended value for series series Light, Light+, Midi is 100 GB. The recommended value for series Heavy is 200 GB, for Super Heavy is 400 GB.

...

Подсказка

When installing the system in a cluster, the recommended value for the first server is ecss1, for the second – ecss2.

Configuring network

Install the software switch according to the parameters specified in the technical specification. In this example, it is assumed that the required operating system is already installed. 

It is recommended to split traffic used for different purposes. For example, management traffic and VoIP traffic. To do this, 2 or more VLANs are created. In the minimum case and with a small load, one VLAN can be enough. Hovewer, it will cause inconvenience in the future at traffic dump and its analysis. According to the technical specification, host IP adresses, gateways, DNS, routing and other parameters are configured on VLAN. 
According to the technical specification, the following addresses are used in a given example:

  • 10.0.10.

...

  • 41/24 — for management, vlan 10;
  • 10.0.20.

...

  • 41/24 — for VoIP.

There is an address structure inside the server platform and internal addresses are used for interaction between subsystems (nodes) in the cluster. For example, the internal address for a cluster on one server is 127.0.0.1, while the kernel (ecss-core) interacts with the multimedia data processing server (ecss-media-server). Their interaction takes place using the same address, but each software part has its own transport port: ecss-core — 5000, ecss-msr — 5040.

A single address for accessing the MySQL database is defined for all cluster nodes, for example, the ecss-mysql address 127.0.0.1. Thus, the uniformity condition is fulfilled, in which all cluster nodes have completely identical data about the current state of the dynamic components of the software switch (for example, call history).

Preparing system network interfaces

According to the technical specification, the system has 4 network interfaces. Information about their status can be viewed using the ifconfig or ip a command:

eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 36:10:28:73:63:01 txqueuelen 1000 (Ethernet)

eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 36:10:28:73:63:01 txqueuelen 1000 (Ethernet)

eth2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether be:77:ea:52:4d:39 txqueuelen 1000 (Ethernet)

eth3: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether be:77:ea:52:4d:39 txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0

First, the network interfaces are configured. Ubuntu18 uses the netplan utility to configure.

...

Блок кода
sudo nano /etc/netplan/ecss_netplan.yaml


Примечание

The rest of files from this directory should be moved to another place or be romoved.

In the configurations for each host, first of all, declare the ethernets section, which describes existing in the system Ethernet interfaces that will be used in the future. It is important to disable the use of dynamic address allocation (DHCP) for each interface.The next section describes aggregated channels — bonds.Depending on chosen network connection option, 1:1 (active - backup) or LACP (802.3ad) backup mode is configured.

Optionally, gateways for communication with the outside world and DNS server addresses are defined, as well as IP addresses for each interface.

...

# Netplan for the ecss1 host of the test software switch
# Pay attention to the mandatory presence of at least two spaces in each line and section (except for the network section line)

network:
version: 2 # netplan version
renderer: networkd # netplan configuration executor
ethernets: # Ethernet interfaces description section
eth0 enp0s3: # Interface name
Name of the VM interface to the internet         dhcp4: no # Disabling dynamic distribution of IP address on the interfaces
        eth1dhcp6:
no dhcp4: no
addresses: eth2:
[192.168.56.41/24] enp0s8: # dhcp4:interface no
name for SSW eth3:
dhcp4: no
bonds: # Section describing bonding interfaces. The name cannot contain more than 15 characters!
bond1: # Bonding interface name
interfaces: # Section of determining bonding interfaces # Disabling dynamic distribution of IP address on the interfaces         dhcp6: no vlans: net.10: # Management interface         id: 10 link: enp0s3 addresses: [10.0.10.41/24]
- eth0 - eth1 - eth2 - eth3net.20: # interface for VoIP
parametersid: #20
Section of defining bonding interface parameterslink: enp0s8
mode: active-backup # Backup mode 1:1
mii-monitor-interval: 100 # Section of interface monitoring (ms)
primary: eth0 # Section of determining main interface
optional: false
vlans:
   network.10: # Management interface
id: 10
link: bond1
addresses: [10.0.3.237/24]
gateway4: 10.0.10.1 # Gateway address
nameservers:
addresses: [10.0.10.1, 8.8.8.8] # DNS servers addresses
network.20: # interface for VoIP
id: 20
link: bond1
addresses: [10.0.3.237/24]

Apply parameters with the command:

...

sudo netplan apply

Operating system software update

Add the ELTEX repository to install the ECSS-10 system:

Блок кода
sudo sh -c "echo 'deb [arch=amd64] http://archive.eltex.org/ssw/bionic/3.14 stable main extras external' > /etc/apt/sources.list.d/eltex-ecss10-stable.list"

...

Note that it is required to specify the correct version of the operating system when adding the ELTEX repository. If installing on Ubuntu 18.04, specify bionic, as shown in the example above. However, if ECSS-10 is installed on Astra Linux, then specify the appropriate smolensk repositories:

Блок кода
sudo sh -c "echo 'deb [arch=amd64] http://archive.eltex.org/ssw/smolensk/3.14 stable main extras external' > /etc/apt/sources.list.d/eltex-ecss10-stable.list"
sudo sh -c "echo 'http://archive.eltex.org astra smolensk smolensk-extras' > /etc/apt/sources.list.d/eltex-ecss10-stable.list"

Next, import the key with the following command:

Без форматирования
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5

Before starting the installation, update the OS:

Без форматирования
sudo apt update
sudo apt upgrade

Software installation and configuration

Предупреждение
titleIMPORTANT
Do NOT install the packages as ssw user. 

Install all the proposed packages:

...

sudo apt install aptitude atop ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen ssh tftpd vim sngrep tshark cpanminus gnuplot libgraph-easy-perl debconf-utils

Installing ecss-mysql package

The installation begins with the deployment of the MySQL server and the integration of the ecss-mysql database.

To install, run the command:

...

sudo apt install ecss-mysql

Configuring ecss-dns-env package

Before installing the ecss-mysql package, you will be prompted to configure environment variables for services in dnsmasq. Configuration manager will prompt to select the sections to configure, do not select anything.

Configuring ecss-mysql package

When installing the package, the following data will be requested:

...

Changing the default path — agree to change the configuration file to enter the path to the ecss-mysql databases by entering "Y".

MySQL databases used by the ECSS-10 system will be stored under the path /var/lib/ecss-mysql after installation. Check for files in the folder:

...

ls -l /var/lib/ecss-mysql/
total 36
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_address_book
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:37 ecss_audit
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_calls_db
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_dialer_db
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_meeting_db
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_statistics
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_subscribers
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 history_db
drwxr-xr-x 2 mysql mysql 4096 Sep 26 14:32 web_conf

Check that the server is running:

...

sudo systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/mysql.service.d
└─override.conf
Active: active (running) since Thu 2019-09-26 13:36:47 +07; 23h ago
Main PID: 11642 (mysqld)
CGroup: /system.slice/mysql.service
└─11642 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Installing the ecss-node package

Installing the ecss-node package:

Без форматирования
sudo apt install ecss-node

During the package installation ssw user is created, on whose behalf all ecss services are launched*. The necessary directories are being created, DNS is being configured, SSL certificates are being configured. During the installation, 8 questions necessary for the formation of configuration files will be asked.

...

ntp.ubuntu.com (by default).

Enter one or more space-separated servers used on the site

...

192.168.0.0|255.255.0.0 (by default)

Enter a list of subnets from which this NTP server will be accessible, for example 10.10.0.0|255.255.255.0

...

addresses: [10.0.20.41/24]

The following bond settings are required for the ECSS server to run correctly:

mode: active-backup - specifies the operating mode in which one link is selected as active, while the others remain in backup;
primary-reselect-policy: failure - specifies that a new active link should be selected only when the current active link fails. This avoids unnecessary switching;
gratuitous-arp: 5 - when the active link changes, five gratuitous ARP requests are sent to the switch to update its switching table. This facilitates faster switching;
all-slaves-active: true - forces incoming frames to be accepted on the backup interfaces. This ensures that traffic balancing on the MES does not interfere with operation. Data flows to the server from all links, and the server sends data only from the active link;
mii-monitor-interval: 100 - enables link monitoring via the MII interface and specifies a polling interval of 100 ms;
up-delay: 1000 - specifies that a connected interface should not be considered immediately available for operation, but rather a one-second delay should be applied after the interface has been connected. This is necessary to avoid unnecessary switching when the port repeatedly switches between the "on" and "off" states.


Предупреждение
languagebash

It is also recommended to check for any other files in the /etc/netplan/ directory. If other files are present, they should be moved to another directory or deleted. Otherwise, incorrect configuration of network interfaces and incorrect operation of SSW may occur.

Apply parameters with the command:

sudo netplan apply

It is neccessary to configure "hostname" parameter on the system servers.

It is recommended to specify the same username (anything except ssw) on all servers in the system. The ECSS-10 license is linked to the eToken/ruToken key and the computer hostname. The system user ssw is created when installing the ecss-user package.

Подсказка

When installing the system in a cluster, the recommended value for the first server is ecss1.

Other host names are possible only upon project approval; this will be required to generate licenses.

Specify hostname: ecss1 in file /etc/hostname:

Блок кода
sudo nano /etc/hostname 

Specify real IP address and host name (for example 10.0.20.41 ecss1) in file /etc/hosts:

Блок кода
127.0.0.1   localhost # Local loopback address, used by some ecss services
10.0.20.41  ecss1 # Host address

Optimization of the operating system

Set OS settings to performance mode

Use cpufrequtils utility.

Блок кода
languagebash
sudo apt install cpufrequtils

By default, after installation, Ubuntu uses the "ondemand" mode (CPU performance is based on application requests, saving power, but lower performance):

Блок кода
cat /etc/init.d/cpufrequtils | grep GOVERNOR=

In the system output message, the default operating mode after installation is "ondemand":

Без форматирования
GOVERNOR="ondemand"

Set the efficiency/performance mode - replace the value "ondemand" with "performance" in the file /etc/init.d/cpufrequtils.

Блок кода
languagebash
sudo sed -i 's/GOVERNOR="ondemand"/GOVERNOR="performance"/g' /etc/init.d/cpufrequtils

Restart the utility:

Блок кода
languagebash
titleon both hosts
sudo /etc/init.d/cpufrequtils restart 

Then run the command:

Блок кода
languagebash
titleon both hosts
sudo systemctl daemon-reload

Disable SWAP

The Ubuntu SSW server operates in real time, so all necessary data must be in RAM. Using a swap file (/swap.img) can increase the processing time of ECSS10 SSW application calls, which is unacceptable. Disable swap.

Run three commands in sequence:

Disable swap:

Блок кода
languagebash
sudo swapoff -a

Delete swap.img file.

Блок кода
languagebash
sudo rm /swap.img

Comment out the line "/swap.img none swap sw 0 0" in the "/etc/fstab" file – change it to "# /swap.img none swap sw 0 0"

or delete this line (/swap.img none swap sw 0 0).

Блок кода
languagebash
sudo nano /etc/fstab


Без форматирования
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/731728e2-4d6b-499a-afea-9362fd6726b2 / ext4 defaults 0 1

To check, run the command free -h:

Блок кода
languagebash
free -h

Swap size is 0 – that is, it is disabled

Без форматирования
languagebash
free -h
              total        used        free      shared  buff/cache   available
Mem:           3,9G        110M        3,2G        820K        535M        3,5G
Swap:            0B          0B          0B

Setting the time zone

When installing Ubuntu 22, it is not prompted to set a time zone (UTC is the default). One should set it manually (for the rating system, scheduled tasks, etc.) to function correctly. For example:

Блок кода
languagebash
sudo timedatectl set-timezone Asia/Novosibirsk

Improving the performance of high-load servers

It is possible to improve the performance of high-load servers by increasing the open file limit.

To set the open file limit, follow these steps:

Check the current limit with the command:

Блок кода
ulimit -a

Result:

Без форматирования
eltex@ecss1:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15515
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15515
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

This limit (open files 1024) is not enough for normal operation of high-load servers.

Set open file limit for each user:

Блок кода
sudo sed -i  '55i\*                soft    nproc           65536\n*                hard    nproc           131072\n*                soft    nofile          65536\n*                hard    nofile          131072\nroot             -       memlock         unlimited' /etc/security/limits.conf
Раскрыть
titleResult:

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - a user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#        - NOTE: group and wildcard limits are not applied to root.
#          To apply a limit to the root user, <domain> must be
#          the literal username root.
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#        - chroot - change root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#root            hard    core            100000
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4
*                soft    nproc           65536
*                hard    nproc           131072
*                soft    nofile          65536
*                hard    nofile          131072
root             -       memlock         unlimited

# End of file


Предупреждение
titleIMPORTANT

Installation of packages must be done NOT under the ssw system user.

Operating system software update

Add the ELTEX repository to install the ECSS-10 system:

Блок кода
sudo sh -c "echo 'deb [arch=amd64] http://archive.eltex.org/ssw/jammy/3.18 stable main extras external' > /etc/apt/sources.list.d/eltex-ecss10-stable.list"

Next, import the key with the following command:

Без форматирования
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5

Before starting the installation, update the OS:

Без форматирования
sudo apt update
sudo apt upgrade
Примечание

In case the following system message is displayed

Без форматирования
W: http://archive.eltex.org/ssw/jammy/3.18/dists/unstable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

Run the following command:

Блок кода
titleon both hosts
sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d


Блок кода
languagebash
sudo apt upgrade

Software installation and configuration

Предупреждение
titledeb package installation
  ┌ ECSS software version. Currently, it is listed as version 3 in the certification application.
  | It is not changed until the next certification or
  │ the release of a fundamentally new version of the system.
  │
  │     ┌ System Release Version. This is the common version for all components included in a specific release. 
  |     | It is changed centrally
  │     │ when decided to launch a new release. Releases are usually not compatible with each other.
┌─┴┐ ┌──┴─┐
ECSS.SysRel.SubMaj.SubMin
            └──┬─┘ └──┬─┘
               │      └ Subsystem minor version. The minor version of a subsystem is set by the subsystem developer.
               |        The minor version 
               │        is changed when a patch is added. Minor versions within a single major version are generally  
               │        compatible with each other and differ within specific patches.
               │
               └ Subsystem major version. The major version is set by the subsystem developer. 
                 The major version of a subsystem must be updated when significant changes are made to the subsystem.


The APT package installation utility analyzes package version from left to right. For example, if we have package 14.14.7.7, the repository contains packages:

14.14.7.8
14.14.7.9
14.14.8.1
14.14.20–14.14.28.
Then, when running the sudo apt install package name command → package 14.14.28 will be automatically checked and installed. Since it is the most recent, the analysis will be performed based on the third position (major), and the fourth position (minor) will not be analyzed (the same applies to sudo apt upgrade command).

If a specific situation requires upgrading from version 14.14.7.7 to version 14.14.7.9, the standard command → sudo apt upgrade will not help, since the newest package will be selected. In this situation, it is needed to explicitly specify which version of the package wanted to be installed. In this example, we should select the command → sudo apt install package name=14.14.7.9. This is usually necessary for testing a specific patch; for standard updates, it is enough to select the usual command to install/update the package.

Якорь
Доп_пакеты
Доп_пакеты
Install all the proposed packages:

Без форматирования
sudo apt install ntp ntpdate tcpdump vlan dnsmasq aptitude atop ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen ssh tftpd vim sngrep tshark cpanminus gnuplot libgraph-easy-perl debconf-utils
Раскрыть
languagebash
titleSoftware packages that are recommended to be installed

List of mandatory service software:

Блок кода
languagebash
sudo apt install -y ntp tcpdump vlan dnsmasq


ntpNTP server
tcpdumpsniffer
vlanVLAN management
dnsmasqlightweight DNS/DHCP server

List of recommended diagnostic and support software:

Блок кода
languagebash
sudo apt install -y aptitude atop ethtool htop mc screen ssh tftpd sngrep tshark gnuplot libgraph-easy-perl debconf-utils iotop ncdu


aptitude

Installing programs from repositories (recommended instead of apt/apt-get) 

atop

Host load monitoring with the function of periodically saving information to files 

ethtool

Viewing network interface statistics

htopProcess monitoring
mcFile manager
screenTerminal multiplexer 
sshSSH server and client 
tftpdTFTP server 
sngrepSIP tracing 
tsharkConsole analogue of Wireshark 
gnuplotOutput of statistics graphs 
libgraph-easy-perlPerl module for converting or rendering graphs (in ASCII, HTML, SVG, or via Graphviz) 
debconf-utilsA set of utilities for working with the debconf database 
iotop

A tool for monitoring disk I/O usage in real time on Linux 


Примечание

This software is not mandatory for the ECSS-10 system operation, but can simplify the maintenance of the system and its individual components by operation and support engineers.



Примечание

Before installing the ecss packages, it is needed to ensure that the network's bandwidth meets the requirements.

To do this, run the command sudo ethtool <interface name> for all physical interfaces.

Раскрыть
titleExample:

sudo ethtool net.20
Settings for net.20:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Auto-negotiation: on
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    MDI-X: off (auto)
    Link detected: yes

Check the following:

  • Advertised auto-negotiation: Yes
  • Speed: 1000 Mbps (minimum)
  • Duplex: Full

Configuring ecss-dns-env package

Run the following command:

Блок кода
sudo apt install -y ecss-dns-env

The installer will suggest selecting sections for configuration, do not select anything, just press Enter.

Installing Postgres

Предупреждение
titleNote

Before installing ecss-postgres-bdr-ssw, docker must be added to the apt sources on the system. To do this, run the following commands:

Блок кода
titleon both hosts
sudo install -m 0755 -d /etc/apt/keyrings
Блок кода
titleon both hosts
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
Блок кода
titleon both hosts
sudo chmod a+r /etc/apt/keyrings/docker.asc
Блок кода
titleon both hosts
sudo sh -c "echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu   jammy stable' >> /etc/apt/sources.list.d/docker.list"
Блок кода
languagebash
titleon both hosts - update
sudo apt update && sudo apt upgrade

Installing ecss-postgres-bdr-ssw package

Блок кода
languagebash
titleecss1
sudo apt install -y ecss-postgres-bdr-ssw

When installing the ecss-postgres-bdr-ssw package, the following questions will be asked:

Questions ecss-postgres-bdr-sswReplies for ecss1Example
Current IP address of the network interface. Select an IP address from the list to use with Postgres

Image Added

Installing in a cluster?No (needs to be selected)

Image Added


Блок кода
titleResult:
=======================================================
=======================================================
 ecss-postgres-bdr-ssw successfully installed/updated! 
=======================================================
=======================================================


┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓  ┳┓┳┓┳┓  ┏┓┏┓┓ ┏
┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓  ┣┫┃┃┣┫  ┗┓┗┓┃┃┃
┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛  ┻┛┻┛┛┗  ┗┛┗┛┗┻┛

Installing ecss-node

Installation of the required ecss-node package includes installation and initial configuration of the main subsystems.

Примечание

The ecss-postgres-bdr-ssw package should already be installed on the system.

To install the ecss-node package, run the command:

Блок кода
languagebash
titleinitially on ecss1 after completing the package installation on ecss2
sudo apt install -y ecss-node

During package installation, the ssw user is created, under which all ecss* services are launched. The necessary directories are created, DNS is configured, and SSL certificates are configured.

Подсказка

During installation, the ecss-user package will also be installed.

Installing on ecss1 server

During installation, it will be prompted to configure the parameters necessary for generating configuration files. Examples of replies are below.

ecss-user questionsReplies for ecss1Example
Do you want to use the default settings?Yes (default)

Image Added

  
ecss-node questionsReplies for ecss1Example

Якорь
Идентификатор ECSS-узла
Идентификатор ECSS-узла
ECSS Node ID in DNS format (cluster name configuring): (any unique name, in example abf.test)

abf.test (needs to be entered)

Подсказка

ECSS_ID format
It must begin and end with a Latin letter or number, while dots and dashes may be used in the body.

Без форматирования
[A-Za-z0-9][A-Za-z0-9.-][A-Za-z0-9]

Image Added

Do you want to use the standard settings? 

No (needs to be entered)

Image Added

Select the items you want to configure: 


ntp + cookie  (needs to be entered)

Image Added

Enter external NTP servers separated by a space: 

ntp.ubuntu.com (default)

Image Added

NTP: Do you want to use the settings for the cluster? 

No (needs to be entered)

Image Added

NTP: Do you want to manually define the networks that should have access to NTP? 

Yes (default)

Image Added

NTP: Enter networks that should have access to NTP separated by a space: (in the example: 10.0.10.0|255.255.255.0 10.0.20.0|255.255.255.0)

10.0.10.0|255.255.255.0 10.0.20.0|255.255.255.0 (needs to be entered)

Image Added

Cookie for the core node: (specify a unique cookie for the core, in the example: ecss-core-example) 

ecss-core-example (needs to be entered)

Image Added

Cookie for ds node: (specify a unique cookie for the ds, in the example: ecss-ds-example)

ecss-ds-example (needs to be entered)

Image Added

Cookie for mediator node: (specify a unique cookie for the mediator, in the example: ecss-mediator-example)

ecss-mediator-example (needs to be entered)

Image Added

Cookie for mediator pa-sip: (specify a unique cookie for the pa-sip, in the example: ecss-pa-sip-example)

ecss-pa-sip-example (needs to be entered)

Image Added

Cookie for mycelium: (specify a unique cookie for the mycelium, in the example: ecss-mycelium-example)

ecss-mycelium-example (needs to be entered)

Image Added

Cookie for sorm: (specify a unique cookie for the sorm, in the example: ecss-sorm-example)

ecss-sorm-example (needs to be entered)

Image Added

  
ecss-user questionsReplies for ecss1Example

Maximum size of uncompressed dump in bytes.


8G (default)

Image Added

Maximum size of compressed dump in bytes.2G (default)

Image Added

The maximum size that the /var/lib/systemd/coredump directory can occupy is:

default (default)

Image Added

Minimum amount of free disk space in bytes.

30G (default)

Image Added

Save to a safe place and delete the file /etc/ecss/ssl/ecss10root.key!

Ok (default)

Image Added

Check the status of services with the following command:

Блок кода
titleon both hosts
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium

If the status is "active", continue; if the status is "inactive", run the command "sudo systemctl restart ecss-<package name>"

Без форматирования
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
active
active
active
active
active

To view information about the NTP synchronization status, the command "ntpq -p" is used. If the additional key "–n" is used, the IP address will be displayed instead of the server name:

Без форматирования
ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*185.125.190.56  17.253.28.253    2 u   45   64    1   83.893   +0.470   2.177

License installation

A Shared Block
allowAnonymousAccesstrue
shared-block-keylicence

The ECSS-10 system uses the ELM licencing – the ECSS ecosystem's license distribution service, consisting of ecss-license-agent and ecss-license-provider.

  • ECSS License Agent – ​​An adapter for working with the ECSS License Provider (LP). It receives a list of License Provider hosts and implements the logic for connecting and reconnecting to the LP.
    • Responsible for obtaining, validating, and then sending licenses to the client.
    • Sends connection statuses and received licenses to the client.
    • Provides an API for sending HTTP requests and WS events to the LP.
  • ECSS License Provider – A service for orchestrating license parameters for ECSS nodes.
    • Responsible for:
      • Obtaining a license for a specific ECSS node (SSW / AuP) or device (SMG)
      • Distributing license parameters between ECSS nodes and ECSS services
      • Monitoring ECSS node activity and validating them to prevent license replication beyond specified limits
      • Monitoring changes to specified limits on ECSS nodes and dynamically distributing them according to current load.
Информация

ecss-license-agent is a component of the SSW and is part of the ecss-node package. It requires no separate configuration.

Подсказка

The Ecss License Provider can be installed on either the SSW or a dedicated server. If the Ecss License Provider is already installed on your project, you only need to add an entry for the new component in the LP configuration file, and the next step, "LP Installation", will not be required.


Раскрыть
titleLP installation on SSW host

To install the ecss-license-provider package, it is necessary to run the following command:

Блок кода
sudo apt install ecss-license-provider 

When installing the ecss-license-provider package, you will be asked the following questions:

QuestionsRepliesExample

License Provider listen ip:

0.0.0.0  (default)

Image Added

License provider listen port:4321 (default)

Image Added

Log level:info (default),
possible options: debug, error, info

Image Added

License Provider cluster key:

specify a unique name
ecss-lm-cluster (default)

Подсказка

Managers with the same name will attempt to form a cluster and back each other up.


Image Added

Which services need to be restarted?

ecss-license-provider.service (default)

Image Added

The data is saved in a file — /etc/ecss/ecss-license-provider/config.env:

Без форматирования
ECSS_LM_HOST=0.0.0.0
ECSS_LM_PORT=4321
ECSS_LM_LOG_LEVEL=info
RELEASE_COOKIE=ecss-abf-lm-cluster
A Shared Block
allowAnonymousAccesstrue
shared-block-keylicence

The ECSS-10 system uses the "License Provider" – the ECSS ecosystem's license distribution service, consisting of ecss-license-agent and ecss-license-provider.

  • ECSS License Agent – ​​An adapter for working with the ECSS License Provider (LP). It receives a list of License Provider hosts and implements the logic for connecting and reconnecting to the LP.
    • Responsible for obtaining, validating, and then sending licenses to the client.
    • Sends connection statuses and received licenses to the client.
    • Provides an API for sending HTTP requests and WS events to the LP.
  • ECSS License Provider – A service for orchestrating license parameters for ECSS nodes.
    • Responsible for:
      • Obtaining a license for a specific ECSS node (SSW / AuP) or device (SMG)
      • Distributing license parameters between ECSS nodes and ECSS services
      • Monitoring ECSS node activity and validating them to prevent license replication beyond specified limits
      • Monitoring changes to specified limits on ECSS nodes and dynamically distributing them according to current load.
Информация

ecss-license-agent is a component of the SSW and is part of the ecss-node package. It requires no separate configuration.

Подсказка

The Ecss License Provider can be installed on either the SSW or a dedicated server. If the Ecss License Provider is already installed on your project, you only need to add an entry for the new component in the LP configuration file, and the next step, "LP Installation," will not be required.

Раскрыть
titleLP installation on SSW host

To install the ecss-license-provider package, it is necessary to run the following command:

Блок кода
titleon both hosts if it is a cluster
sudo apt install ecss-license-provider 

When installing the ecss-license-provider package, you will be asked the following questions:

QuestionsRepliesExample

License Provider listen ip:

0.0.0.0  (default)

Image Added

License provider listen port:4321 (default)

Image Added

Log level:info (default),
possible options: debug, error, info

Image Added

License Provider cluster key:

specify a unique name
ecss-lm-cluster (default)

Подсказка

Managers with the same name will attempt to form a cluster and back each other up.


Image Added

Which services need to be restarted?

ecss-license-provider.service (default)

Image Added

The data is saved in a file /etc/ecss/ecss-license-provider/config.env:

Без форматирования
ECSS_LM_HOST=0.0.0.0
ECSS_LM_PORT=4321
ECSS_LM_LOG_LEVEL=info
RELEASE_COOKIE=ecss-abf-lm-cluster

LP configuration

The ecss-license-provider service uses two configuration files: /etc/ecss/ecss-license-provider/config.env and /etc/ecss/ecss-license-provider/config.yaml.
Information is saved in the config.env file when the ecss-license-provider package is installed.

The config.yaml file contains the basic settings for connecting to the ELM server, including where to obtain licenses, which licenses to use, and where to transfer them. All of this must be configured manually.

Раскрыть
titleWhen installing LP on SSW

Run the command:

Блок кода
sudo nano /etc/ecss/ecss-license-provider/config.yaml


Блок кода
titleinformation in file after installation
elm_addresses: []
licenses: []
ecss_nodes: []

In the elm_adresses field specify a list of ELM servers to which you want to connect to obtain licenses. The first address in the list is used as the primary address. Additional address lines act as backups.

Подсказка

Eltex ELM server data — "elm.eltex-co.ru:8099".

example:
- "elm.eltex-co.ru:8099"
- "192.168.111.22:8099"
- "elm-3.eltex.loc:8099"

Next, the licenses themselves are specified in the licenses field.

  • id – can be any, as long as it is unique for each license. This only affects the license address on the LP itself (e.g., 0, 1, 2, 3).
  • kind – only ssw is supported for SSW.
  • type – select elm if this license needs to be requested from the ELM server. If you need to use a file-based SSW license, select ecss_license.
    • For elm type, you must specify the license_key and product_id fields to identify the license.
    • For ecss_license type, specify the license field, which contains the static license key.
Примечание

The license_key and product_id parameters must match the data loaded on the ELM server.

Подсказка

The value of the license_key, product_id or license, passport parameters must be obtained from the project manager.


ecss_nodes block

Specify the details of the services that will receive the license. In our case, it is the SSW. The service is defined by three parameters:

  • id – the service identifier; must match the ECSS_ID of the licensed SSW.
  • kind – the type of service being licensed. Similar to the license block, only ssw is supported for SSW.
  • license_id – the identifier of the license that will be sent to this service. Corresponds to the license identifiers from the licenses block.
Примечание

Two SSWs with different ECSS_IDs cannot obtain the same license; a configuration with such a distribution will be marked as invalid.
Furthermore, two SSWs with the same ECSS_ID cannot simultaneously obtain the same license from the same LP.
Therefore, it is extremely important to correctly set your ECSS_ID and make it unique, at least within the visibility range of the LP being used.

Подсказка

ECSS_ID format
It must begin and end with a Latin letter or number, while dots and dashes may be used in the body.

Без форматирования
[A-Za-z0-9][A-Za-z0-9.-][A-Za-z0-9]
Примечание

For SSW running in a cluster, specify only one entry in the ecss_nodes block per cluster; individual entries for each host are not allowed. Otherwise, two requests with the same ECSS_ID will be generated, which is unacceptable.

Блок кода
titleconfig.yaml file example
elm_addresses:
 - "elm.eltex-co.ru:8099"
 - "192.168.111.22:8099"
 - "elm-3.eltex.loc:8099"
licenses:
 - id: 0
   kind: SSW
   type: elm
   license_key: "ssw1test"
   product_id: "ECSS1000001"
 - id: 1
   kind: ssw
   type: ecss_license
   license: "af615ebb92d381125ff"
ecss_nodes:
 - id: abf.test
   kind: ssw
   license_id: 0

Restart the ecss-license-provider.service to update the configuration from the /etc/ecss/ecss-license-provider/config.yaml file using the following command:

Блок кода
sudo systemctl restart ecss-license-provider.service
Раскрыть
titleWhen connecting SSW to the previuosly installed LP

If LP is already installed and used on the local network, you need to add the new SSW parameters to the /etc/ecss/ecss-license-provider/config.yaml configuration file in the licenses and ecss_nodes blocks.

Run the command:

Блок кода
sudo nano /etc/ecss/ecss-license-provider/config.yaml

Example:

Блок кода
titleBefore:
elm_addresses:
 - "elm.eltex-co.ru:8099"
 - "192.168.111.22:8099"
 - "elm-3.eltex.loc:8099"
licenses:
 - id: 0
   kind: SSW
   type: elm
   license_key: "ssw1test"
   product_id: "ECSS1000001"
 - id: 1
   kind: ssw
   type: ecss_license
   license: "af615ebb92d381125ff"
 - id: 2
   kind: SSW
   type: elm
   license_key: "ssw2test"
   product_id: "ECSS1000002"
ecss_nodes:
 - id: 1.test
   kind: ssw
   license_id: 0
 - id: 2.test
   kind: ssw
   license_id: 1
 - id: 3.test
   kind: ssw
   license_id: 2
Блок кода
titleAfter:
elm_addresses:
 - "elm.eltex-co.ru:8099"
 - "192.168.111.22:8099"
 - "elm-3.eltex.loc:8099"
licenses:
 - id: 0
   kind: SSW
   type: elm
   license_key: "ssw1test"
   product_id: "ECSS1000001"
 - id: 1
   kind: ssw
   type: ecss_license
   license: "af615ebb92d381125ff"
 - id: 2
   kind: SSW
   type: elm
   license_key: "ssw2test"
   product_id: "ECSS1000002"
 - id: 3
   kind: SSW
   type: elm
   license_key: "ssw3test"
   product_id: "ECSS1000003"
ecss_nodes:
 - id: 1.test
   kind: ssw
   license_id: 0
 - id: 2.test
   kind: ssw
   license_id: 1
 - id: 3.test
   kind: ssw
   license_id: 2
 - id: abf.test
   kind: ssw
   license_id: 3

Restart the ecss-license-provider.service to update the configuration from the /etc/ecss/ecss-license-provider/config.yaml file using the following command:

Блок кода
sudo systemctl restart ecss-license-provider.service

To enable system nodes to become operational, it is necessary to configure the system by specifying the names of the hosts on which the ecss services are deployed.

Command in CoCon: /system/clusters/set [<host1>, <host2>, ... <hostN>].

In a single server configuration (hostname ecss1), run the command:

Блок кода
titlein CoCon
/system/clusters/set [ecss1]

Connecting the SSW to the License Provider

Configure the SSW connection to the LP using the following command in CoCon (in this example, the LP with IPadd host 10.0.10.51. The default port value from the /etc/ecss/ecss-license-provider/config.env file is 4321):

Блок кода
titlein CoCon
/system/licence/manager/set --hosts [https://10.0.10.51:4321]
Подсказка

If LP is installed on SSW hosts, specify OAM IP addresses.

After completion, check the connection status with the command:

Блок кода
titlein CoCon
/system/licence/manager/show-status           
┌───────────────────────┬───────┬─────┐
│         Host          │Current│Alive│
├───────────────────────┼───────┼─────┤
│https://10.0.10.51:4321│*      │true │
└───────────────────────┴───────┴─────┘

The host must have the alive=true status and be "current."

  • Current - displays the host the SSW is connected to. If connected, * is indicated; otherwise, nothing is indicated.
  • Alive - displays the host's availability status (healthcheck).
Информация
titleConnection to License Officer

Failure to connect to the License Provider/ELM will be equivalent to a loss of access to the token, leading to critical crashes and a transition to emergency mode, after which, if the connection is not restored, the system will switch to the default license.

This behavior only applies when operating in ELM mode.

If the status off the LP host is shown as current, it is possible to send a request to download a license to the SSW using the command:

Блок кода
titlein CoCon
/cluster/storage/ds1/licence/request
Раскрыть
titleexample of command /cluster/storage/ds1/licence/request execution
Блок кода
titletype=elm
/cluster/storage/ds1/licence/request      
Licence received      
[*******                                                               ] 6s 2ms   
Success: Licence parameters applied
Подсказка

In the "type=ecss_license" mode, the /cluster/storage/ds1/licence/request command will only be executed if the passport has been previously loaded.

Блок кода
titletype=ecss_license
/cluster/storage/ds1/licence/request      
Waiting for licence...
[*******                                                               ] 6s       
┌─┬─────────────────────────────────────────────────────┬─────────┬────────────────────────────────────────┐
│A│                     Description                     │Old Value│               New Value                │
├─┼─────────────────────────────────────────────────────┼─────────┼────────────────────────────────────────┤
│^│Support for reservation of call-processes            │false    │true                                    │
│^│Maximum call duration (in seconds)                   │60       │2678400                                 │
│^│Maximum number of simultaneous calls                 │5        │10000                                   │
│^│Elph                                                 │         │                                        │
│^│ total count of members of the one Elph group        │10       │100                                     │
│^│Subscribers limit                                    │10       │500000                                  │
│^│Virtual subscribers limit                            │infinity │1000                                    │
│^│Add-on conferences                                   │         │                                        │
│^│ total count                                         │30       │1000                                    │
│^│Add-on conferences                                   │         │                                        │
│^│ members of the one add-on conference                │16       │300                                     │
│^│Chat rooms                                           │         │                                        │
│^│ total count                                         │30       │100                                     │
│^│Chat rooms                                           │         │                                        │
│^│ members of the one chatroom                         │16       │300                                     │
│^│Meet Me                                              │         │                                        │
│^│ total count                                         │0        │100                                     │
│^│Meet Me                                              │         │                                        │
│^│ members of the one Meet Me conference               │0        │300                                     │
│^│SORM                                                 │         │                                        │
│^│ enabled                                             │false    │true                                    │
│+│ channels on SORM mediator                           │         │64                                      │
│^│Sorm extractor                                       │none     │mfi                                     │
│^│Support antifraud system                             │none     │custom                                  │
│+│Call center                                          │         │                                        │
│+│ operator's capability for look at calls in queue    │         │true                                    │
│+│ operator's capability for use Intervension SS       │         │true                                    │
│^│Call center                                          │         │                                        │
│^│ active agents                                       │0        │1000                                    │
│^│Call center                                          │         │                                        │
│^│ active supervisors                                  │0        │100                                     │
│^│Teleconference                                       │         │                                        │
│^│ channels                                            │3        │2000                                    │
│^│Teleconference                                       │         │                                        │
│^│ max members of one teleconference                   │0        │200                                     │
│^│Teleconference                                       │         │                                        │
│^│ active count                                        │0        │32                                      │
│^│TSMN system                                          │         │                                        │
│^│ concurrent calls (active)                           │0        │50                                      │
│^│TSMN system                                          │         │                                        │
│^│ concurrent calls (backup)                           │0        │50                                      │
│^│TSMN system                                          │         │                                        │
│^│ backup mode                                         │none     │"backup"                                │
│^│Total count of simultaneous records voice calls      │0        │200                                     │
│+│IVR                                                  │         │                                        │
│+│ customization enabled                               │         │true                                    │
│+│ Automatic Speech Recognition (ASR) subsystem enabled│         │true                                    │
│^│Channels on dialer outgoing calls                    │2        │5                                       │
│+│Supplementary Services licence package(s)            │         │                                        │
│+│ name                                                │         │'ECSS-ADV'                              │
│+│ limit                                               │         │10000                                   │
│+│ description                                         │         │"Additional services of 4 and 5 levels" │
│+│ SS list                                             │         │[1,2,3,4,5]                             │
│+│ name                                                │         │'ECSS-BAS'                              │
│+│ limit                                               │         │10000                                   │
│+│ description                                         │         │"Basic services of 1 and 2 levels"      │
│+│ SS list                                             │         │[1,2]                                   │
│+│ name                                                │         │'ECSS-BAS+'                             │
│+│ limit                                               │         │10000                                   │
│+│ description                                         │         │"Expansion of basic services of 3 level"│
│+│ SS list                                             │         │[1,2,3]                                 │
│^│GEO backup                                           │         │                                        │
│^│ enabled                                             │false    │true                                    │
│^│SIGTRAN                                              │         │                                        │
│^│ SEP                                                 │false    │true                                    │
│^│ STP                                                 │false    │true                                    │
└─┴─────────────────────────────────────────────────────┴─────────┴────────────────────────────────────────┘
Legend:
    '^' - Changed;
    '-' - Deleted;
    '+' - New.


[request] You are trying to add a license that is different from the current one by the pa
          rameters in the table (other values will remain unchanged).
Licence received      o ?> yes
[*******                                                               ] 1m 15s   
Success: Licence parameters applied


Depending on the selected license type for SSW: "type=elm" or "type=ecss_license", we will receive different output from the license viewing command:

Без форматирования
titletype=ecss_license
/cluster/storage/ds1/licence/list-licence 
┌──┬───────────────────┬────────────┬──────┬────────────────┬────────────────────┬────────────────────┬─────────┐
│Id│Creation date(UTC) │   SSW ID   │Active│  Description   │Comm. Exp. Date(UTC)│Expiration date(UTC)│Time left│
├──┼───────────────────┼────────────┼──────┼────────────────┼────────────────────┼────────────────────┼─────────┤
│1 │12.03.2026 18:40:00│ECSS 010070 │*     │ECSS TPM License│13.03.2027 06:59:59 │14.03.2026 10:44:05 │1d 6h 59m│
│0 │01.01.1990 00:00:00│ECSS DEFAULT│      │Default licence │                    │                    │         │
└──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────────────┴─────────┘
Информация

TPM is a complete analogue of the licensing that was used previously, with a token and passport, without connection to the LP.

or

Без форматирования
titletype=elm
/cluster/storage/ds1/licence/list-licence 
┌──┬───────────────────┬────────────┬──────┬────────────────┬────────────────────┬────────────────────┬─────────┐
│Id│Creation date(UTC) │   SSW ID   │Active│  Description   │Comm. Exp. Date(UTC)│Expiration date(UTC)│Time left│
├──┼───────────────────┼────────────┼──────┼────────────────┼────────────────────┼────────────────────┼─────────┤
│1 │03.02.2026 16:26:34│ECSS2000009 │*     │ECSS ELM License│03.02.2027 16:26:34 │14.03.2026 10:49:12 │1d 6h 59m│
│0 │01.01.1990 00:00:00│ECSS DEFAULT│      │Default licence │                    │                    │         │
└──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────────────┴─────────┘

Installing ecss-restf,  ecss-media-server, ecss-web-conf packages 

Perform configuration for the Sip adapter by running the following command:

Блок кода
sudo systemctl edit ecss-pa-sip.service

Add the following data to the configuration file:

Без форматирования
[Service]
LimitNOFILE=65536


Предупреждение

These two lines need to be inserted in a specific location. (Starting with Ubuntu 22.04.2, there are a few important points. The file that opens is completely commented out, but the first few lines look like in the image below. Any edits you make should be between these two comment blocks).

Image Added

Reload the configuration

Блок кода
sudo systemctl daemon-reload

Update the configuration file by rebooting the server:

Блок кода
titleon both hosts
sudo systemctl restart ecss-mycelium ecss-ds ecss-core ecss-pa-sip ecss-mediator

Next, the ecss-restf packages are installed, followed by ecss-media-server, ecss-media-resources, ecss-web-conf and others in any order:

ecss-restfs

ecss-restfs package

Блок кода
languagebash
titleon both hosts
sudo apt install -y ecss-restfs

Installing ecss-restfs. During installation, you'll be asked a series of questions to create the necessary configuration files. The installer will also prompt you to install and configure the Text2speech package from Yandex.

ecss-restfs questionsRepliesExample
Do you want to use Text To Speeh (TTS service)?No (default)

Image Added

Do you want to configure phone book?Yes (needs to be selected)

Image Added

Do you want to configure carddav server?No (default)

Image Added

Do you want to configure phone book (LDAP)?


No (default)

Image Added

Do you want to configure phone book (SSW)?No (default)

Image Added

Do you want to configure speech recognition service?No (default)

Image Added

Do you want to configure phone book (POSTGRES)?Yes (default)

Image Added

POSTGRES: postgres service:localhost (default)

Image Added

POSTGRES: Connection port:5439 (default)

Image Added

POSTGRES: Login:postgres (default)

Image Added

POSTGRES: Password:postgres1 (default)

Image Added

POSTGRES: database:ecss_storekeeper_db (default)

Image Added

Enter a domain to search:test.domain (default)

Image Added

POSTGRES: Number of contacts requested:10000 (default)

Image Added

Do you want to enable transliteration for your phone book (LDAP)?No (default)

Image Added

Select the items you want to customize:proxy-filter (needs to be selected)

Image Added

Enable whitelist for api/proxy?

 

Image Added

Подсказка
titlewhitelist addresses to a file /etc/ecss/ecss-restfs/api-proxy.conf

# -------------------------------------------------------------------
# API Filter File Format (api/proxy):
#   - IP: 192.168.0.1
#   - Domain: example.com
#   - Wildcard: *.wildcard.com
#   - Comments: lines starting with #
# Example:
#   192.168.0.1
#   example.com
#   # comment
#   *.wildcard.com
# -------------------------------------------------------------------

Примечание
titleIMPORTANT!

In case of successful proxying (200), the cache is stored for 28 days, therefore, to apply the filter configuration, in case of changes, the cache (/var/cache/ecss/restfs-api) should be deleted and the ecss-restfs service should be restarted.

After installing the ecss-restfs package, check for the presence of auto-informer wav files in the /var/lib/ecss/restfs/system/sounds/ directory using the command:

Блок кода
languagebash
ll /var/lib/ecss/restfs/system/sounds/

The presence of about 140 wav files in the directory specified above indicates that the ecss-restfs package was installed correctly.

Информация

The absence of wav files in the above directory indicates a problem installing the ecss-restfs package. To resolve this, run the following command:

Блок кода
sudo apt --fix-broken install 

and repeat the verification command:

Блок кода
ll /var/lib/ecss/restfs/system/sounds/


Check the accessibility of these files from the outside. To do this, execute the command on the host ecss1 one by one:

Блок кода
wget http://ecss1:9990/system/sounds/ai_you.wav


Без форматирования
languagebash
wget http://ecss1:9990/system/sounds/ai_you.wav
--2023-12-18 17:43:29--  http://ecss1:9990/system/sounds/ai_you.wav
Resolving ecss1 (ecss1)... 127.0.1.1, 10.0.10.11
Connecting to ecss1 (ecss1)|127.0.1.1|:9990... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11670 (11K) [audio/x-wav]
Saving to: ‘ai_you.wav’

ai_you.wav                                  100%[========================================================================================>]  11,40K  --.-KB/s    in 0s      

2023-12-18 17:43:29 (301 MB/s) - ‘ai_you.wav’ saved [11670/11670]

verification files can be deleted

Без форматирования
languagebash
rm ai_you.wav

ecss-media-server

Блок кода
languagebash
sudo apt install -y ecss-media-server

For the media server (ecss-media-server/MSR), initial configuration is possible by writing parameters to a configuration file. To do this, configure transport bind-addr,mcc bind-addres:

ecss-media-server questionsReplies for ecss1
[ MSR SIP ] Enter bind-ip address10.0.20.41 (needs to be entered)
[MSR Control-Channel] Enter bind-ip address10.0.20.41 (needs to be entered)

After creating the default configurations, perform a check: 

Блок кода
languagebash
cat /etc/ecss/ecss-media-server/config.xml

The msr configuration is located inside: config.xml, and the default.xml configuration is in the conf.d directory.

Default.xml is an extension of config.xml that defines the accounts section. This is done to ensure that this configuration remains unchanged after package updates.

Блок кода
<?xml version="1.0" encoding="utf-8"?>
<config date="09:24:23 03.12.2025">
  <general log-level="3" log-rotate="yes" max-calls="2148" max-vid-calls="100" max-in-group="512" load-sensor="media" load-delta="10" calls-delta="100" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled" enable-ice-transport="no" ice-update="no" aggressive-ice="yes" stun-server="" suspicious-mode="no"/>
  <transport bind-addr="10.0.20.41" port="5040" transport="udp+tcp"/>
  <!-- By default configured public TURN-server -->
  <turn-server use-turn="no" host="numb.viagenie.ca" user="webrtc@live.com" password="muazkh"/>
  <media mixer-clock-rate="8000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="4496" tias-in-sdp="no" thread-cnt="2" vid-enc-threads="2" vid-dec-threads="2" video-conf-layout="evenly" keyframe-interval="1000" vid-decode-delay="100" silent-codec-switch="yes" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="640" video-enc-height="360" finalsilence="1000" rtcp-stat-dump="yes" dtmf-tg-fpc-loop="10" dtmf-tg-fit="1" dtmf-tg-fot="2" dtmf-tg-volume="12288"/>
  <codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g726="0" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
  <accounts>
    <!-- <dynamic msr_name="msr.name"
            realm="sip:127.0.0.1:5000"
            dtmf_mode="rfc+inband+info"
            auth_name="user"
            auth_password="password" /> -->
  </accounts>
  <pbyte>
    <mcc bind-addr="10.0.20.41" port="5700"/>
  </pbyte>
  <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
  <metrics enable="yes" use-pushgateway="yes" pushgateway-addr="127.0.0.1:9091" push-interval="5" port="8100" msr_name="msr2"/>
  <rtp>
    <auto addr-v4=""/>
  </rtp>
</config>

By default, after installation, ECSS-10 activates only the following codecs: pcma, pcmu, g722, h264, h263-1998, and t38. The rest have a status of 0 = off. If you want to activate other codecs, use the nano editor to change the priority from 0 to a priority number (the priority level should not be repeated for the audio/video/fax service).
sudo nano /etc/ecss/ecss-media-server/config.xml

Подсказка
languagebash

To activate all codecs, change the line -

<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g726="0" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
to - 
<codec pcma="1" pcmu="2" ilbc="6" gsm="4" g722="3" g726="11" g729="5" speex="7" l16="8" g7221="9" opus="10" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>


Предупреждение

It's not allowed to specify the same priority for different codecs, for example, g722="5" g729="5". Otherwise, they will not work correctly or will be ignored.
Except for "0" – disabled.

Consider the accounts section (default.xml file):

Блок кода
languagebash
cat /etc/ecss/ecss-media-server/conf.d/default.xml

Check the data for correctness.

Блок кода
titleConfiguring msr for ecss1(/etc/ecss/ecss-media-server/conf.d/default.xml)
<?xml version="1.0"?>
<config>
    <accounts>
        <dynamic msr_name="msr.ecss1" realm="sip:10.0.20.41:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
            <via dynamic-ifaces="no">
                <iface name="net.20" ip="10.0.20.41"/>
            </via>
        </dynamic>
    </accounts>
</config>

It specifies the current settings used to register msr on core.

The main parameters here are msr_name and realm:

  • msr_name — defines the name of the msr (it is recommended to specify msr. name and the host it belongs to, for example, msr.ecss1);
  • realm — defines the address for registering with the core. The default entry point is port 5000, address is 127.0.0.1.

After changing the configuration files /etc/ecss/ecss-media-server/config.xml and /etc/ecss/ecss-media-server/conf.d/default.xml, restart the ecss-media-server for the changes to take effect, using the following command:

Блок кода
sudo systemctl restart ecss-media-server

ecss-web-conf

Блок кода
languagebash
titleon both hosts
sudo apt install ecss-web-conf

The web configurator makes system management more intuitive and convenient. Installing the web configurator is optional, but recommended.

Installing the ecss-web-conf package also automatically installs the ecss-subscriber-portal-ui package. The ECSS-10 Subscriber Portal application allows subscribers to independently manage services, view information on completed calls and active conferences, and configure their own IVR scripts for incoming calls.

ecss-web-conf questionsReplies for both hostsExample
Do you want to use the default settings?Yes (default)

Image Added

Check the connectivity of the web interface http://10.0.20.41,user/password: admin/password. Not all functions are available at the moment, but the web interface should be working and the login successful.

Security configuration. SSH

Configure the SSH server:

Блок кода
languagebash
sudo nano /etc/ssh/sshd_config

Specify the port and address to which the server can be accessed in the configuration file:

Configuring ssh for ecss1 (/etc/ssh/sshd_config)

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.

Port 2000
#AddressFamily any
ListenAddress 10.0.10.10 
#ListenAddress ::

<...>

Restart ssh:

Блок кода
languagebash
titleon both hosts
sudo systemctl restart ssh.service

Adding services

Installing all services specified in the license:

Блок кода
titlein CoCon
/cluster/storage/ds1/ss/install ds1@ecss1 ss_*

Result:

Блок кода
languagebash
/cluster/storage/ds1/ss/install ds1@ecss1 ss_*
Successfully installed: /var/lib/ecss/ss/ss_dnd.xml
Successfully installed: /var/lib/ecss/ss/ss_clir.xml
. . .
Successfully installed: /var/lib/ecss/ss/ss_chunt.xml

Example of a primary system configuration using web configurator

Initial data

  • System installation is complete;
  • System is ready for further configuring;
  • Interfaces are running.

It is recommended to use the latest available browser versions. Recommended browsers: Opera, Chrome.

To start configuring the system, go to the web configurator: http://<Ipadd SSW>.

To determine and register in the system, the following are planned:

  • Subscribers with numbers 42001, 42002 , 42003, 42004 ,42005, 42006, 42007, 42008, 42009, 42010;
  • Trunk towards the gateway.

Preparation for work

Image Added

Figure 1 — Log in to the web configurator (authorization window)

In the authorization window, enter the values defined during the installation of the web configurator.

Примечание

Default values for authorization:

Login: admin

Password: password

After logging in, the main workspace with application icons will be visible, as well as status bar with available options, in particular:

  • 1 — log out of the system;
  • 2 — domain selection;
  • 3 — language selection.

Якорь
desktopview
desktopview

Image Added

Figure 2 — View of the web configurator workspace

Creating an operator account

After authorization, in order to increase security during the operation of the software switch, it is recommended to create accounts for operators, as well as to change the password for the admin user.

To create a new operator account, use User manager application:

Image Added

Figure 3 — Application view "User Manager"

Click the "Add" button Image Added. In the window that opens, define a new account, for this:

  1. In the "Name" field, enter the login of the account, for example, "test";
  2. In the "Password" field and "Confirmation" field enter the password for the user, for example "testpassword";
  3. Define level of access rights for the user by selecting current permissions or using roles, for example ecss-user.

Image Added

Figure 4 — Operator account creation dialog box

Image Added

Figure 5 — Application view with created operator account

To change the password, click the edit button next to the user name. In the dialog box that opens, enter:

  1. Old password (for the admin user, the default password is password);
  2. New password;
  3. Confirm new password.

Image Added

Figure 6 — Edit user dialog box

Adding media resources

To begin working with the media server immediately after its registration, it is necessary to activate the MSR network interfaces. The web configurator application "MSR registrars" is used to configure media resources.

Image Added

Image Added

Figure 7 — MSR registrars

Set the IP address for receiving connections from the media server, changing the value 0.0.0.0 to the actual MSR addresses:

Image Added

Image Added

Image Added

Figure 8 — Setting the IP address of the MSR

Creating IP-set (sip transport) and assigning it to a domain

To configure an interface, open the Clusters application.

Image Added

Figure 9 — Clusters application view

To create a new IP address group (IP-set), select the SIP adapter cluster "sip1" and click on the Cluster Properties button (or double-click on the cluster icon with left mouse button).

In the dialog box that appears, go to the Transport tab. Next, click on Add button. New group will appear. To edit the fields, double-click the one you need:

  1. Rename an address group (IP-set), for example "test_set";
  2. Specify the port on which the domain will be accessed, for example 5060;
  3. Expand newly created group by clicking on the black triangle to the left of the group name;
  4. Define the address for the SIP adapter node, according to the configuration example. For example specify 10.0.20.41:

Image Added

Figure 12 — Clusters/Transport application view

Click Save to apply the settings.

Creating a domain

Domain is a virtual PBX within our SSW. We can create as many of virtual PBXs as needed for a project.

To create a domain, log in to the Domains application. In the window that opens, create a domain:

1. Click the Add domain button:

Image Added

Figure 11 — Adding domain to the system

2. The following settings are available in the dialog box that opens:

Enter the domain name, for example "test_domain";

3. Click Ok:

Image Added

Figure 12 — Domain declare

4. Click the UpdateImage Addedbutton.

Created domain will be displayed in the current configuration:

Image Added

Figure 13 — Displaying created domain

To edit current domain, it must be selected in the system. To switch to a domain, use the domain selection option (see point 2 in the figure View of the web configurator workspace).

After selecting the domain, according to the current system configuration, all applications will be available:

Image Added

Figure 14 — Displaying applications in current system configuration

To link an address group to a domain, return to the "Domain" app, select the domain, and go to the settings by clicking the "Domain Properties" button or double-clicking the domain.

In the list settings, open the "SIP" branch, then "SIP Transport," then select the newly created address group in the IP set field. Click "Save" to apply the settings.

Image Added

Figure 15 — SIP transport settings

Select the required services for the created domain that will be used (for example, for a subscriber domain, trunk services are not required, and vice versa for a transit domain. There is no need to specify services for the subscriber).

Image Added

Figure 16 — After creating a new domain, there are no services

  1. Select the "SS Install" application;
  2. Select the "SS installed" column (services specified in the SSW license);
  3. Select the services required for the specified domain.

Save configuration.

Image Added

Figure 17 — Selection of services for subscribers/trunks of the new domain

Image Added

Figure 18 — List of services now available to subscribers of the new domain

Creating subscribers

The Subscriber card application is used to create and edit subscriber parameters in the system.

Image Added

Figure 19 — Subscriber card application view

It is possible to create SIP subscribers and virtual subscribers in the application.

For users with a physical termination, the functionality of the SIP subscriber is used, while the virtual subscriber is used when functionality without physical endings is needed. For example, the number for accessing the ivr script.

To create new subscribers, click on the Add button.

In the dialog box that opens, specify the following parameters:

  • Context — routing context, select the one that you created, for example "test_name";
  • Interface name — number or group of numbers that is assigned to the subscriber, for example {42001-42010} or abcd;
  • Interface group — the name of a group that unites several subscribers, for example "sip";
  • Alias as user — setting that binds entity number, alias and user with the same name, in the example the setting is activated;
  • Authorization — procedure for verifying the authenticity of the user's rights to access data, in the example always is used.
  • Login — use WHATEVER.
  • Password — can be set or used generated by the system.

Image AddedImage Added

Figure 20 — Example of identifying subscribers in a domain

Image Added

Image Added

Figure 21 — Example of adding services for a subscriber


Creating and applying routing contexts for a domain

Routing is responsible for finding the number and then addressing the call. At least one routing context must be configured for the system to operate correctly.

Routing is configured in Routing Manager application.

Image Added

Figure 22 — Routing manager application view

Example of creating a context and a few rules in it:

1. In the left part of the window in the Context section click the Create context button Image Added;

2. In the dialog box that opens, indicate the name of the context;

3. Click Ok button;

4. Click Save context Image Added;

Image Added


Create 4 rules in this context:

  • rule1 — rule for accessing TAU-72 trunk;
  • rule2 — local routing rule for numbers 42001-42005;
  • rule3 — rule for entering the ivr;
  • rule4 — exception rule.

To create a new rule, select the created context and click Create rule. In the window that appears, enter name of the rule. Then save the newly created rules.

Image Added

Figure 23 — Creating routing context rule

Image Added

Figure 24 — Defining rules

At the moment, the trunk that can be referred in a rule is not defined, however it is possible to specify the numbers by which the selection will be made.

Go to the lower part of the screen by clicking on the rule1, where the areas for editing the routing context are located. It is conditionally defined in the example that selection for entering the trunk will be carried out based on the characteristics of the called subscriber number (CDPN), and the numbers in the trunk should start with digit 4.

Functionally, the routing context is divided into three parts:

  • Condition — section defining the expressions for selection according to the proposed criteria;
  • Action — section that converts the signs of numbers to a specific value;
  • Result — section that completes the routing and determines its result.

rule1: To access the trunk, edit each part correctly:

  • In the conditions section, go to the CDPN tab. Enter the phone numbers that are assigned to the trunk in the Number field. For example, to define numbers from 42006 to 42007, enter condition 420(6-7);
  • In the actions section, go to the CDPN tab. Enter a mask to change the number in the Number field. For example, to add number 4 before the number, fill in the field with the following expression 4{1,2,3,4,5};
  • Click Save rule and Save Context buttons to apply changes.

To configure the result field, the trunk must be defined in the system, so return to configuring this rule a little later.

Configure remaining rules in the same way.

For rule2:

  • In CDPN tab in conditions section, enter phone numbers that are behind the trunk in "Number" field. For example, to define numbers from 42001 to 42005, enter condition 420(1-5);
  • In the result section, define the result as local (e. local routing);
  • Click Save rule and Save Context buttons to apply changes.

For rule 3, assume that subscribers with numbers 108, 109 and 110 get into the informant ivr script before calling further.

  • In CGPN tab in conditions section, enter the phone numbers for which the selection will be in the field "Number", for example 420(10.08-09).
  • Click Save rule and Save Context buttons to apply changes.

To configure the result field, ivr script must be defined in the system, so return to configuring this rule later.

For rule 4, define an exception rule — this is a rule that works in case any other rules fail.

  • By default, this rule is created in the system in default_routing context. The % symbol is written to the called number in the conditions, and the result is local routing, however, it is recommended to create this rule at the end if assigning to the subscriber a context other than default_routing.

Image Added

Figure 25 — Example of configuring routing context 

Creating trunk 
Якорь
trunk
trunk

To create and edit trunk parameters in the system, use the Trunk manager application.

Image Added

Figure 26 — Trunk Manager application view

To define a trunk in the system, click on the Trunk declare Image Added button, define parameters in the dialog box that opens:

  • Name — assign trunk name by which it can be identified in the system;
  • Context — apply previously created test_name routing context;
  • Group — select the interface group created when defining 'test.group' subscribers;
  • IP address group (IPSet) — 'ipset1' address group created on the domain;
  • Registration — if trunk is used, then enable this parameter, it is not used in the example;
  • Host [:port] — destination IP address of the trunk — 10.0.3.100;
  • Listen port — transport port where traffic from the trunk will be listened to, corresponds to the port assigned to the IP address group.

Image Added

Figure 27 — Creating a trunk

Creating IVR script 
Якорь
ivr
ivr

To create IVR, use the IVR editor application. 

To create a script, click on the Add Image Added button, select script type (in this case there is a script for incoming calls), specify the name of the script in the dialog box, for example "test_ivr".

After creating the script, a flowchart will appear in the main editor window.

In figures below is shown an example of making a script that plays a pre-recorded phrase to the caller when triggered, and then continues the call.

  • Info —  block that plays messages until the user responds. A tone generator is used as a recorded phrase:

Image Added

Figure 29 — View of the IVR workspace with the Info block settings

  • Dial — block that makes a call to a given number. To continue the call, apply the predefined CDPN variable:

Image Added

Figure 30 — View of the IVR workspace

Completing routing configuration

To complete routing, open Routing manager application and in rules rule1 and rule3 adjust the corresponding routing results, and follow the steps below:

  • rule1: select the "external" sub-item in the Result section. In the Value field of the Directions table add the trunk created earlier, then save the rule Image Added.
  • rule3: select the "ivr" sub-item in the Result section. In the script field add the previously created ivr script, then save the rule and the context Image Added.

Image Added

Figure 31 — Type of routing context

Initial system configuration via the command-line interface (CLI)


Раскрыть
titleExample of initial configuration via CoCon (CLI)

Adding media resources using the command-line interface (CLI)

Open CLI CoCon:

Блок кода
languagebash
titleecss1 password = password
ssh admin@localhost -p 8023

A media resource is a description of the media server parameters required for operation.

Примечание

To use the media resource and establish connections, it is necessary to activate it in the media resource creation command: /system/media/resource/declare (parameter "is active"=true) or /system/media/resource/set (parameter "active"=true), if activation was not performed during creation. Activation can also be performed through the web interface, application - MSR network terminations (MSR-registrars).


Раскрыть
titledeclare

declare

The command to declare a media server connection to ECSS-10.

To operate in preconfigured mode, one can pre-register media resources with known information.

To do this, it is necessary to create a description of known media servers with all parameters specified, allowing to start working with the media server immediately after its registration.

The command to create a media server configuration:

Command path:

/system/media/resource/declare

Syntax:

declare <node> by_contact <contact> <zone> <site> <is active>

or

declare <node> by_iface <msr> <acc_id> <iface> <zone> <site> <is active>

Parameters:

<node> — core node name;

<contact> — contact uri of the declared media resource;

<zone> — logical service zone of the MSR;

<site> — MSR service network identifier;

<is active> — media resource activity status, true/false values;

<msr> — MSR name;

<acc_id> — resource identifier number;

<iface> — interface name.


Раскрыть
titleset

set

A command for changing media resource settings.

Command path:

/system/media/resource/set

Syntax:

set <node|*> <contact> <active|zone|site> <value>

Parameters:

<node|*> — node name;
<contact> — contact uri of the declared media resource;
<active|zone|site> — activation | zone | site;
<value> — parameter value.

Example:

Блок кода
titleperformed in CoCon
/system/media/resource/declare core1@ecss1 contact net.20@msr.ecss1 default local true

Result:

Без форматирования
/system/media/resource/declare core1@ecss1 contact net.20@msr.ecss1 default local true
  Declared media resources
┌─────────────┬───────────────────────┬────────┬─────────┬───────┐
│    Node     │        Contact        │ Active │   Zone  │  Site │
├─────────────┼───────────────────────┼────────┼─────────┼───────┤
│ core1@ecss1 │ net.20@msr.ecss1      │ true   │ default │ local │
└─────────────┴───────────────────────┴────────┴─────────┴───────┘


Раскрыть
titleinfo

info

A command for viewing connection status information for a specific media resource.

Command path:

/system/media/resource/info

Syntax:

info <node>  <contact>

Parameters:

<contact> — contact uri of the declared media resource;
<node> — node name.

Example:

Блок кода
languagebash
/system/media/resource/info core1@ecss1 net.20@msr.ecss1
  Media resource specific for node core1@ecss1:
┌─┬─────────────────┬─────────────────────┐
│F│    Parameter    │        Value        │
├─┼─────────────────┼─────────────────────┤
│r│ Contact         │ net.20@msr.ecss1    │
│r│ Status          │ registered          │
│r│ Cc-status       │ connected           │
│r│ Cc-status uptime│ 00:16:48            │
│r│ Cc-id           │ cb6599              │
│r│ Address         │ 10.0.20.41:5700     │
│r│ Register time   │ 2025/12/03 09:40:25 │
│r│ Expired         │ 131                 │
│r│ Iface           │ net.20(10.0.20.41)  │
│ │ Active          │ true                │
│ │ Zone            │ default             │
│ │ Site            │ local               │
│r│ MSR version     │ 3.18.1.0.12         │
│r│ MSR load        │ 0                   │
│r│ MSR perf coef   │ 1.0                 │
└─┴─────────────────┴─────────────────────┘
Legend:
Column F - means Flag, values r - flag for readonly parameter


Раскрыть
titlelist

list
A command for viewing a list of media resources in the ECSS-10 system.

Command path:

/system/media/resource/list

Syntax:

list [active | all | register]

Parameters:

active — display only active media resources (default);
register — display only registered media resources;
short — display minimal information;
all — display all declared media resources.

By default, the command displays a list of registered media servers.

Example:

Блок кода
languagebash
/system/media/resource/list all                      
  All media resource selected list specific:
┌─────────────┬───────────┬──────────────┬───────────┬──────┬────────┬───────────┬───────────┬─────────────────┬────────┬────────────┬────────┬─────────┬───────┬──────────────────┬────────────┬─────────┐
│    Node     │    MSR    │     MSR      │    MSR    │ MSR  │ Cc-id  │ Cc-status │ Cc-uptime │   Cc-address    │ Iface  │   Iface    │ Active │  Zone   │ Site  │     Contact      │   Status   │ Expired │
│             │           │   version    │ perf coef │ load │        │           │           │                 │  name  │    addr    │        │         │       │                  │            │         │
├─────────────┼───────────┼──────────────┼───────────┼──────┼────────┼───────────┼───────────┼─────────────────┼────────┼────────────┼────────┼─────────┼───────┼──────────────────┼────────────┼─────────┤
│ core1@ecss1 │ msr.ecss1 │ 3.18.1.0.12  │       1.0 │    0 │ 54faa9 │ connected │ 00:54:48  │ 10.0.20.41:5700 │ net.20 │ 10.0.20.41 │ true   │ default │ local │ net.20@msr.ecss1 │ registered │     129 │
└─────────────┴───────────┴──────────────┴───────────┴──────┴────────┴───────────┴───────────┴─────────────────┴────────┴────────────┴────────┴─────────┴───────┴──────────────────┴────────────┴─────────┘

Adding registrar control for MSR media manager in the Command Line Interface (CLI) CoCon


/system/media/registrar/ - regisrtrar control commands for the MSR media manager


Раскрыть
titleset

set

A command for changing common and individual parameters.

Command path:

/system/media/registrar/set

Syntax for setting common parameters:

set common <FIELD> <VALUE>

Parameters:

<FIELD> — name of the parameter being configured;

<VALUE> — value of the parameter being configured

Where:

  • common — the type of parameter being set;
  • <common parameter> — a common media registrar parameter for all nodes: registration-timeout;
  • private — the type of parameter being set;
  • <node name> — the name of the node on which the media registrarresides;
  • <private parameter> — a media registrar parameter that is set on <node name>: is-active, listen-interface, and listen-port.

List of parameters available for configuration:

  • is-active — enables or disables the registrar (false - deactivates the registrar, the registrar stops receiving SIP traffic);
  • listen-interface — the name of the interface the registrar uses;

  • listen-port — the port on which the registrar accepts registration requests (default 5000);

  • registration-timeout — re-registration timer, range from 60 to 86400.

In the general settings you can set the registration time; by default it is 60 seconds.

Example:
Set the registration time to 60 seconds:

Без форматирования
/system/media/registrar/set common registration-timeout 60
Common parameter registration-timeout set to 60.

Syntax for configuring individual parameters:

system/media/registrar/set private <CORE> <FIELD> <VALUE>

Parameters:

<CORE> — the core node for which the Registrar server is being configured;

<FIELD> — the name of the configurable parameter;

<VALUE> — the value of the configurable parameter.

Configurable parameters:

  • is-active — whether the Registrar server is active, true | false;
  • listen-ip — the IP address on which the Registrar server will accept connections (default 0.0.0.0);
  • listen-port — the network port on which the Registrar server will accept connections (default 5000).

Example:

Set the IP address for receiving connections from the media server:

Блок кода
titlein CoCon
/system/media/registrar/set private core1@ecss1 listen-ip 10.0.20.41

Result:

Без форматирования
/system/media/registrar/set private core1@ecss1 listen-ip 10.0.20.41   
Private parameter listen-ip set to 10.0.20.41 at node core1@ecss1.


Раскрыть
titleinfo

info

Command for viewing the current Registrar server settings.

Command path:

/system/media/registrar/info

Example:

Без форматирования
/system/media/registrar/info
 Common parameters:
┌───────────────────────────┬───────┐
│         Parameter         │ Value │
├───────────────────────────┼───────┤
│ registration-timeout, sec │   180 │
└───────────────────────────┴───────┘
 Private parameters:
┌─────────────┬─────────┬───────────┬────────────┬─────────────┐
│    Node     │ Status  │ Is-active │ Listen-ip  │ Listen-port │
├─────────────┼─────────┼───────────┼────────────┼─────────────┤
│ core1@ecss1 │ active  │ true      │ 10.0.20.41 │        5000 │
└─────────────┴─────────┴───────────┴────────────┴─────────────┘
Подсказка

It is also possible to add media resources through the web configurator application — MSR-registrars.

After all services are started, the nodes will take some time to establish communication. Once all nodes are loaded, the following information will be output when the system-status query is executed:

Без форматирования
languagebash
/system-status   
Checking...
┌─┬───────────────┬───────────────────────────┬────────────────┬──────────────┬──────┐
│ │     Node      │          Release          │  Erlang nodes  │ Mnesia nodes │Uptime│
├─┼───────────────┼───────────────────────────┼────────────────┼──────────────┼──────┤
│ │core1@ecss1    │ecss-core-3.18.1.0.1657    │core1@ecss1     │not running   │1h 23m│
│ │ds1@ecss1      │ecss-ds-3.18.1.0.1657      │ds1@ecss1       │ds1@ecss1     │1h 23m│
│ │md1@ecss1      │ecss-mediator-3.18.1.0.1657│md1@ecss1       │md1@ecss1     │1h 23m│
│ │mycelium1@ecss1│ecss-mycelium-3.18.1.0.1657│mycelium1@ecss1 │not running   │1h 23m│
│ │sip1@ecss1     │ecss-pa-sip-3.18.1.0.1657  │sip1@ecss1      │sip1@ecss1    │1h 23m│
└─┴───────────────┴───────────────────────────┴────────────────┴──────────────┴──────┘

All services are started.

  Active media resource selected list specific:
┌─────────────┬───────────┬──────────────┬───────────┬───────────┐
│    Node     │    MSR    │     MSR      │ Cc-status │ Cc-uptime │
│             │           │   version    │           │           │
├─────────────┼───────────┼──────────────┼───────────┼───────────┤
│ core1@ecss1 │ msr.ecss1 │ 3.18.1.0.12  │ connected │ 00:04:15  │
└─────────────┴───────────┴──────────────┴───────────┴───────────┘

In the example above, the nodes have started and the MSR have registered on the ecss-core node.

Creating and configuring a SIP IP address group (IP-set)

Configure the SIP adapter according to the specifications:

Блок кода
titlein CoCon
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.20.41


Блок кода
titlein CoCon
/cluster/adapter/sip1/sip/network/set ip_set test_set listen-ports list = [5060]

Result:

Без форматирования
languagebash
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.20.41
        
Property "ip_set" successfully changed from: 
    
        to
test_set: no ports set
test_set: sip1@ecss1 10.0.20.41
test_set: dscp 0.

/cluster/adapter/sip1/sip/network/set ip_set test_set listen-ports list = [5060]
Property "ip_set" successfully changed from:
test_set: no ports set
test_set: sip1@ecss1 10.0.20.41
test_set: dscp 0
        to
test_set: 5060
test_set: sip1@ecss1 10.0.20.41
test_set: dscp 0

Creating a domain and connecting an IP-set

Create a Domain (virtual PBX) and assign it the SIP adapter settings group (IP set) created above:

Блок кода
titlein CoCon
/domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges


Блок кода
titlein CoCon
/domain/test_domain/sip/network/set ip_set [test_set]


Блок кода
languagebash
/domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges
New domain test_domain is declared


/domain/test_domain/sip/network/set ip_set [test_set]
Property "ip_set" successfully changed from: 
[]
   to
["test_set"].

After creating a domain, the system administrator should grant access to the Domain (virtual PBX) operator to manage services. To do this, use the "test_domain" command to allow the Domain (virtual PBX) operator to manage all services:

Блок кода
titlein CoCon
/cluster/storage/ds1/ss/access-list add test_domain *


Без форматирования
languagebash
/cluster/storage/ds1/ss/access-list add test_domain *
Supplementary services successfully added in the domain test_domain.

To enable subscribers to apply a service package immediately after creation, it is necessary to configure a licensed service package application policy.

Create a license application policy named "new_sub"

Блок кода
languagebash
titlein CoCon user/pw = admin/password
/domain/test_domain/ss/licence/politics/declare new_sub "Set when creating a subscriber"


Без форматирования
/domain/test_domain/ss/licence/politics/declare new_sub "Set when creating a subscriber"
Licence politic new_sub successfully declared.

To set the name of the additional services package, use the following commands:

Блок кода
languagebash
titlein CoCon user/pw = admin/password
/cluster/storage/ds1/licence/show-licence 1

The following information is important:

Без форматирования
languagebash
/cluster/storage/ds1/licence/show-licence 1
SSW ID                                                < Name SSW ID >
Description                                           ECSS ELM License

. . .  

Supplementary Services licence package(s)             
 name

To generate certificates, select manual method. All questions can be answered as suggested by default.

Installing ecss-media-server, ecss-media-resources, ecss-restf, ecss-web-conf packages

...

ecss-media-server, ecss-media-resources

Без форматирования
sudo apt install ecss-media-server ecss-media-resources

For the media server (ecss-media-server / MSR), initial configuration is possible with parameters recorded to the configuration file, it is required to perform the configuration without selecting any items:

...

After forming the default configurations, go to the directory where the configurations are located and check them:

Блок кода
cd /etc/ecss/ecss-media-server/
cat config.xml
cat conf.d/default.xml

There is a configuration for msr: config.xml, the conf.d directory contains the configuration default.xml. At its core, default.xml is an addition to config.xml, which defines the accounts section. This is done in order for this configuration to remain unchanged after package updates. 

Example of config.xml:

Блок кода
<?xml version="1.0" encoding="utf-8"?>
<config date="10:48:15 21.02.2022">
  <general log-level="3" log-rotate="yes" max-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" calls-delta="100" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled" suspicious-mode="no"/>
  <transport bind-addr="192.168.2.21" port="5040" transport="udp+tcp"/>
  <!-- By default configured public TURN-server -->
  <turn-server use-turn="no" host="numb.viagenie.ca" user="webrtc@live.com" password="muazkh"/>
  <media mixer-clock-rate="8000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="2048" tias-in-sdp="no" thread-cnt="2" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="1280" video-enc-height="720" finalsilence="1000" rtcp-stat-dump="yes"/>
  <codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
  <accounts>
    <!-- <dynamic msr_name="msr.name"
            realm="sip:127.0.0.1:5000"
            dtmf_mode="rfc+inband+info"
            auth_name="user"
            auth_password="password" /> -->
  </accounts>
  <pbyte>
    <mcc bind-addr="192.168.2.21" port="5700"/>
  </pbyte>
  <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
  <rtp>
    <auto addr-v4=""/>
  </rtp>
</config>

Example of accounts section (default.xml file):

Блок кода
titleНастройка msr для ecss1(/etc/ecss/ecss-media-server/conf.d/default.xml)
<?xml version="1.0"?>
<config>
      <accounts>
            <dynamic msr_name="msr.ecss1" realm="sip:127.0.0.1:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
      </accounts>
</config>

It contains current settings according to which the msr is registered on core.

The main parameters are: msr_name and realm.

msr_name is a parameter that defines the name of the msr. (it is recommended to set the name of the msr. and the host to which it belongs, for example, msr.ecss1);

realm — defines the address for registration on the core. Default entry point: port 5000, address: 127.0.0.1.

ecss-restfs

Без форматирования
sudo apt install ecss-restfs

When installing, you will be prompted to set up the configuration:

...

Use TTS service

...

Configure phone book

...

Configure speech recognition service

...

Choose nothing

...

ecss-web-conf

Без форматирования
sudo apt install ecss-web-conf

When installing, you will be prompted to set up the configuration:

...

Input port of MySQL db for web-conf DB

...

Input IP address or hostname for ECSS-10 with http_terminal

...

Input port SSW http_terminal

...

Input  password for SSW http_terminal

...

Configuring security. SSH

Configuring SSH server:

...

sudo nano /etc/ssh/sshd_config

In the configuration file specify the port and address where you can access the server:

...

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.

Port 2000
#AddressFamily any
ListenAddress 10.0.3.237
#ListenAddress ::

<...>

Restart ssh:

Без форматирования
sudo systemctl restart ssh.service

Initial configuration

Start the necessary services.

Предупреждение
titleIMPORTANT

Before starting, check Token availability in the system.

Run the ecss-mycelium and ecss-ds packages on the first host:

Без форматирования
sudo systemctl start ecss-mycelium
sudo systemctl start ecss-ds

Go to the CLI:

Без форматирования
ssh admin@localhost -p 8023
password: password

Check system status:

Без форматирования
admin@mycelium1@ecss1$ system-status 
Checking...
┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐
│ │     Node      │        Release         │ Erlang nodes  │Mnesia nodes│Uptime│
├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤
│ │ds1@ecss1      │ecss-ds-3.14.10.91      │ds1@ecss1      │ds1@ecss1   │8m 9s │
│ │mycelium1@ecss1│ecss-mycelium-3.14.10.91│mycelium1@ecss1│not running │8m 10s│
└─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘

All services are started.

Next, install passport and licenses to the system:

Без форматирования
admin@[mycelium1@ecss1]:/$ cluster/storage/ds1/licence/set-passport <passport>
admin@[mycelium1@ecss1]:/$ cluster/storage/ds1/licence/add <license>

Exit the CoCon, reboot the ecss-mycelium and ecss-ds subsystems, and then connect the remaining subsystems in the following order: ecss-core, ecss-pa-sip, ecss-media-server, ecss-restfs, ecss-mediator, ecss-web-conf.

Без форматирования
sudo systemctl start ecss-core ecss-pa-sip ecss-mediator ecss-media-server ecss-restfs ecss-web-conf

Return to the CoCon.

After that, the MSR- and Core-subsystems are connected. To do this, use the following command:

Без форматирования
admin@[mycelium1@ecss1]:/$ /system/media/resource/declare core1@ecss1 iface msr.ecss1 bond1_ecss1_pa default local true

To check, run system-status command and see the output:

Без форматирования
admin@mycelium1@ecss1$ system-status
                      
Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐ │
 
     
Node
      
        
Release
       'ECSS-ADV'
 limit 
 
Erlang
 
nodes
  
│Mnesia
 
nodes│Uptime│ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤ │
 
│core1@ecss1
    
│ecss-core-3.14.10.91
    
│core1@ecss1
    
│not
 
running
 
│1m
 
59s│ │
 
│ds1@ecss1
      
│ecss-ds-3.14.10.91
      
│ds1@ecss1
      
│ds1@ecss1
   
│4h
    
│ │ │md1@ecss1
600000
 description             
│ecss-mediator-3.14.10.91│md1@ecss1
      
│md1@ecss1
   
│1m
 
59s│ │
 
│mycelium1@ecss1│ecss-mycelium-3.14.10.91│mycelium1@ecss1│not
 
running
 
│4h
    
│ │
 
│sip1@ecss1
     
│ecss-pa-sip-3.14.10.91
  
│sip1@ecss1
    "The 
│sip1@ecss1
whole package 
│1m
of 
59s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬────────────┬───────────┬───────────┐ │
services"
 SS list                
Node
     
     
MSR
   
    
MSR
     
 
Cc-status
 
 
Cc-uptime
 
│ │
    [1,2,3,4,5]
         
           
  
version
   
           
           
│ ├─────────────┼───────────┼────────────┼───────────┼───────────┤ │
 
core1@ecss1
 
 
msr.ecss1
 
 
3.14.10.42
 
 
connected

. 
│ 00:01:31
. .  
│ └─────────────┴───────────┴────────────┴───────────┴───────────┘

Configure the SIP adapter according to the technical specification. Define a group of IP addresses (IP-set):

Без форматирования
admin@[mycelium1@ecss1]:/$ /cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.3.238 

          
Property "ip_set" successfully changed from:

          
to
test_set: no ports set
test_set: sip1@ecss1 10.0.3.238
test_set: dscp 0.

Next, create a domain and assign to it the created group (IP-set) of the SIP adapter settings:

Без форматирования
admin@[mycelium1@ecss1]:/$ domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges 
New domain test_domain is declared

          
domain/test_domain/sip/network/set ip_set [test_set] Property "ip_set" successfully changed from:

          
[] to ["test_set"].

After creating the domain, configure:

...


The service package name in this example is "ECSS-ADV".

Add the license service package named "ECSS-FULL+" (that's how it's described in the license) to the created policy:

Блок кода
languagebash
titlein CoCon
/domain/test_domain/ss/licence/politics/package-add new_sub ECSS-ADV 

Result:

Без форматирования
/domain/test_domain/ss/licence/politics/package-add new_sub ECSS-ADV 
Licence packages ["ECSS-ADV"] successfully added to politic new_sub.

The package has been added, but the policy is currently not active (cannot be applied to the subscriber). To activate the new_sub policy, run the following command:

Блок кода
languagebash
titlein CoCon
/domain/test_domain/ss/licence/politics/activate new_sub


Без форматирования
/domain/test_domain/ss/licence/politics/activate new_sub
Licence politic new_sub successfully activated.

Now we can use additional services when creating subscribers.