Using a single server for the SSD does not provide redundancy. Therefore, upgrading to a new version without interrupting traffic is not possible.
There are two ways to upgrade.
The first option is to stop traffic and update PostgreSQL and all ecss packages on the working SSD, then activate the service and start traffic. The advantage of this option is a simple upgrade process. The disadvantage is a longer traffic interruption.
The second option is to perform a complete fresh installation of the OS on a separate host (physical or virtual), and then install the SSD using temporary IP addresses. During the installation, you will also need to copy the databases (Mnesia + PostgreSQL) from the old host to the new one. Once the new SSD is installed, the temporary IP addresses are replaced with those of the old SSD (at this point, the old SSD is disabled) and the MSR files are configured. After this, the new SSD begins serving traffic. The advantage of this option is minimal traffic interruption. The disadvantage is a more complex and time-consuming update procedure.
Select the appropriate option.
ECSS-10 version 3.17 supports two licensing types: file-based licenses (with or without a token) and ELM licenses. Depending on the licensing type, different commands will be executed during the update. You can check which type is used on your SWS using the following command:
When using a file license, the output will be:
When using an ELM license, the output will be:
|
Before performing the update procedure, perform a full backup. |
If you need the latest billing data, you need to finalize the current CDR and download the CDR files to a remote server:
/domain/test_domain/cdr/make_finalize_cdr Created file(s): cdr_20260522_11_51_16_1_c.csv |
| Perform a full backup |
sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm |
When the attached command is executed, a notification will be displayed.
These messages are not errors. Continue with the procedure. |
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" |
sudo apt update |
If you see this system message:
Run the following command:
|
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down |
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down [+] down 2/2 ✔ Container ecss-postgres-bdr-ssw-postgres-container-1 Removed ✔ Network ecss-postgres-bdr-ssw_default Removed |
sudo apt remove ecss-postgres-bdr-ssw |
Run remove, not purge, because remove preserves the volumes directory with our database tables. |
sudo apt remove ecss-postgres-bdr-ssw Reading package lists... Done . . . The following packages will be REMOVED: ecss-postgres-bdr-ssw . . . Do you want to continue? [y/n] y Deleting ecss-postgres-bdr-ssw (17.1.0.59+ssw) … |
sudo apt install ecss-postgres-bdr-ssw |
During installation, you will be asked the same questions as during the initial installation: The answers must exactly match those specified in the procedure, otherwise an attempt will be made to create a new database and the installation will fail. |
|
sudo apt install ecss-postgres-bdr-ssw . . . ================== Create databases ================== Database ecss_storekeeper_db already exists, skipping... Database web_conf already exists, skipping... Extension btree_gist already exists, skipping... Extension bdr already exists, skipping... =================================== Creating Postgres Exporter Schema =================================== Node IP: localhost psql:/srv/ecss/ecss-postgres-bdr-ssw/schema.sql:1: NOTICE: schema "postgres_exporter" already exists, skipping CREATE SCHEMA GRANT CREATE FUNCTION CREATE VIEW GRANT CREATE FUNCTION CREATE VIEW GRANT psql:/srv/ecss/ecss-postgres-bdr-ssw/schema.sql:28: NOTICE: extension "pg_stat_statements" already exists, skipping CREATE EXTENSION CREATE FUNCTION CREATE VIEW GRANT . . . ======================================================= ======================================================= ecss-postgres-bdr-ssw successfully installed/updated! ======================================================= ======================================================= ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓ ┳┓┳┓┳┓ ┏┓┏┓┓ ┏ ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓ ┣┫┃┃┣┫ ┗┓┗┓┃┃┃ ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛ ┻┛┻┛┛┗ ┗┛┗┛┗┻┛ |
sudo docker ps |
sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bf73743d3e09 git.eltex.loc:4567/ecss/ecss-postgresbdr:3.18 "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:5439->5432/tcp, [::]:5439->5432/tcp ecss-postgres-bdr-ssw-postgres-container-1 |
sudo apt install ecss-dns-env |
sudo dpkg-reconfigure ecss-dns-env |
When updating, you need to apply new configuration files (confirm with -Y). |
sudo apt install ecss-user |
sudo apt install ecss-utils |
Install the License Provider package:
When installing the ecss-license-provider package the following questions will be asked:
The data is saved to the /etc/ecss/ecss-license-provider/config.env file:
Configuring License Provider (LP) The The information is saved to the The config.yaml file contains general settings for connecting to the ELM server and information about licenses: what licenses to take, where to take them from, and where to send them, all this information should be configured manually.
ecss-elm-adapter configuration file used in the version 3.17 /etc/ecss/ecss-elm-adapter/config.env:
In the
ecss_nodes block. You must specify the details of the services that will receive the license. A service is defined by three parameters:
Restart the
|
sudo apt install ecss-node |
During installation, you will be prompted to configure the settings required to generate the configuration files; examples of possible answers are provided below.
| ecss-node questions | Answers for ecss1 | Example | |
Cookies for the core node: | ecss-core (default value)
|
| |
Cookies for the ds node: | ecss-ds (default value)
|
| |
Cookies for the mediator node: | ecss-mediator (default value)
|
| |
Cookies for the pa-sip node: | ecss-pa-sip (default value)
|
| |
Cookies for the mycelium node: | ecss-mycelium (default value)
|
| |
Use the current version of the configuration file? | No (default value) |
| |
| |||
sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm |
sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm |
sudo systemctl start ecss-mycelium |
sudo systemctl start ecss-ds |
sudo systemctl start ecss-core |
sudo systemctl start ecss-mediator |
Do not start PA-SIP yet |
system-status command in CoCon:/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.18.0.271 │core1@ecss1 │not running │14m 4s│ │ │ds1@ecss1 │ecss-ds-3.18.0.271 │ds1@ecss1 │ds1@ecss1 │14m 4s│ │ │md1@ecss1 │ecss-mediator-3.18.0.271│md1@ecss1 │md1@ecss1 │14m 4s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.271│mycelium1@ecss1│not running │14m 4s│ │ │sorm1@ecss1 │ecss-sorm-3.18.0.271 │sorm1@ecss1 │not running │14m 5s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.17.1.1.7 │ connected │ 00:43:03 │ └─────────────┴───────────┴────────────┴───────────┴───────────┘ |
|
Configure the SSW connection to the License Provider using the following command in CoCon (in this example, the License Provider is installed in the ecss1 host, hosts' IPadd is 10.0.10.41. The default port value from the
After execution, check the connection status with the following command:
Teh host should have a status of alive=true and be “current.”
If the status for one of the License Provider hosts is shown as “current,” you can send a request to upload the license to the SSW using the following command:
|
ecss-restfs package.Accept all new configuration files by choosing Y. |
sudo apt install ecss-restfs |
ecss-media-server package.The Media Server analyzes the configuration in the files located in the /etc/ecss/ecss-media-server/ directory. Version 3.17 introduces a new feature for managing codec priorities. If, for any reason, multiple files contain a codec section that lists the same codec more than once, a conflict will occur after the update, and the Media Server will not function. Therefore, there should be no conflicts regarding codec priorities in the configuration files of a single Media Server (there should be only one entry for one codec, and it should not be repeated in other files). The decision regarding which specific files need to be configured is left to the discretion of the system administrator. |
Accept all new configuration files by choosing Y. |
sudo apt install ecss-media-server |
sudo dpkg-reconfigure ecss-media-server |
sudo apt install ecss-media-resources |
sudo apt install ecss-web-conf |
Updating the
Updating the
Updating the
Updating the
Updating the
|
sudo systemctl start ecss-pa-sip |
/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime │ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼───────┤ │ │core1@ecss1 │ecss-core-3.18.0.271 │core1@ecss1 │not running │54m 27s│ │ │ds1@ecss1 │ecss-ds-3.18.0.271 │ds1@ecss1 │ds1@ecss1 │54m 27s│ │ │md1@ecss1 │ecss-mediator-3.18.0.271│md1@ecss1 │md1@ecss1 │54m 27s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.271│mycelium1@ecss1│not running │54m 27s│ │ │sip1@ecss1 │ecss-pa-sip-3.18.0.271 │sip1@ecss1 │sip1@ecss1 │54m 27s│ │ │sorm1@ecss1 │ecss-sorm-3.18.0.271 │sorm1@ecss1 │not running │54m 27s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬──────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼──────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.18.0.7 │ connected │ 00:01:17 │ └─────────────┴───────────┴──────────┴───────────┴───────────┘ |
/domain/test_domain/sip/user/registered sip * 450 make users list ... [**********************************************************************] 28mks 450 users information read ... [**********************************************************************] 1ms Executed on the sip1@ecss1 ┌───────────────┐ │ elements: 436 │ └───────────────┘ |
Initial data
Use temporary IP addresses during installation (10.0.10.51/10.0.20.51 in the example). In the final steps, the temporary addresses will be replaced with the actual IP addresses for SSW version 3.17 (10.0.10.41/10.0.20.41 in the example).
According to the technical specifications, the hardware platform must be determined.
Connecting to the network To ensure redundancy, it is recommended to use two switches when configuring the server’s network topology.
Figure 1 – Network connection diagram Option 1. Active-backup configuration The switches are interconnected in an ERPS ring. All four physical network interfaces are combined into a single aggregated link (bond). The server’s port aggregation is configured in active-backup mode, meaning that only one network interface is active at any given time. The server’s network interfaces are connected in pairs to the switches, on which the port aggregation (port-channel) is also configured in active-backup mode. For example, eth1 and eth2 are connected to the first switch, while eth3 and eth4 are connected to the second. Option 2. LACP diagram The switches are linked together in a stack. The stack must function logically as a single switch capable of providing port aggregation in LACP mode across different physical switches. An example is the MES3124 switches with specialized firmware. All four physical network interfaces are also combined into a single aggregated link (bond). Server port aggregation is configured in 802.3ad mode. Aggregated groups of network cards with the same speed and duplex settings are created. With this configuration, data transmission utilizes all channels in the active aggregation in accordance with the IEEE 802.3ad standard. The choice of which interface to send a packet through is determined by a policy. By default, this is the XOR policy; the “xmit_hash” policy can also be used. Requirements:
The server’s network interfaces are also connected in pairs to switches on which port aggregation (port-channel) is configured in LACP mode. For example, eth1 and eth2 are connected to the first switch (port-channel 1), and eth3 and eth4 are connected to the second (port-channel 2). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The SSW ECSS10 installation consists of two main parts:
Preparation phaseThis section describes the installation of the operating system, as well as the required and additional packages. The ECSS-10 system, version 3.17, runs on Ubuntu 22.04. Prerequisites
To install the OS, perform the following steps:
At least 256 Gb of free space is required for the system to operate. The "hostname" parameter must be configured on the system's servers. It is recommended to use the same username (any name except ssw) on all system servers. The ECSS-10 license is tied to the eToken/ruToken key and the computer name (hostname). The system user ssw is created during installation of the ecss-user package.
|
Network configuration We will configure the network according to the parameters specified in the technical specifications. In this example, we assume that the required operating system is already installed. It is recommended to separate traffic used for different purposes – for example, management traffic and VoIP traffic. To do this, create two or more VLANs. With a light load, you can get by with a single VLAN for simplicity, but this will cause inconvenience in the future when capturing and analyzing traffic dumps. In accordance with the technical specifications, the host’s IP addresses, gateways, DNS, and routing to other networks are configured on the VLANs. In this example, according to the technical specifications, we will use the following addresses:
Within the server platform, there is an addressing structure, and internal addresses are used for communication between subsystems (nodes) in the cluster. For example, the internal address for a cluster on a single server is 127.0.0.1, and the core (ecss-core) communicates with the multimedia data processing server (ecss-media-server). They communicate using the same address, but each software component has its own transport port: 5000 for ecss-core, 5040 for ecss-msr. A single address is defined for all cluster nodes to access the database, for example, 127.0.0.1. This ensures consistency, whereby all cluster nodes have exactly the same data about the current state of the software switch’s dynamic components (for example, call history). Preparing system's network interfacesAccording to technical specifications, the system has 4 network interfaces. Information about their state can be looked up using the ifconfig or ip a command:
First, configure the network interfaces. In Ubuntu 22, the netplan utility is used to configure them. This utility makes it possible to configure the network settings and then load them into the system using the "networkd" or "NetworkManager" network manager.
In the configurations for each host, we first define the ethernets section, which describes the Ethernet interfaces present in the system that will be used later. For each interface, you must disable dynamic address assignment (DHCP). Next, configure the VLANs, where you can optionally specify gateways for communication with the outside world and DNS server addresses, as well as the IP addresses for each interface.
Example of configuring the ecss_netplan.yaml file for the “active-backup” option
The following bonds settings are required for the ECSS server to ensure that configuration works correctly: mode: active-backup – specifies the operating mode in which one of the links is selected as active, while the others remain in standby;
Apply the configured settings using the following command:
On the system’s servers, you must configure the “hostname” parameter. It is recommended to use the same username (any name except ssw) on all system servers. The ECSS-10 license is tied to the eToken/ruToken key and the computer name (hostname), so you must use the standard values. The ssw system user is created during installation of the ecss-user package.
Specify the hostname as ecss1 in the /etc/hostname file:
Specify the actual IP address and the hostname currently in use (for example, 10.0.10.51 ecss1) in the /etc/hosts file:
|
Use the cpufrequtils utility.
sudo apt install cpufrequtils |
By default, after installing Ubuntu, the “ondemand” mode is used (CPU performance is adjusted based on application requests, which saves power but reduces performance):
cat /etc/init.d/cpufrequtils | grep GOVERNOR= |
The system output shows that the default mode after installation is “ondemand”:
GOVERNOR="ondemand" |
To set the performance mode, in the /etc/init.d/cpufrequtils file, replace ondemand with performance
sudo sed -i 's/GOVERNOR="ondemand"/GOVERNOR="performance"/g' /etc/init.d/cpufrequtils |
Restart the utility:
sudo /etc/init.d/cpufrequtils restart |
Then run the following command:
sudo systemctl daemon-reload |
The Ubuntu SSW server operates in real time, so all necessary data must be stored in RAM; using a swap file (/swap.img) can increase the processing time for SSW ECSS10 application calls, which is unacceptable. Disable swap.
Execute the following three commands one by one:
Disable Swap:
sudo swapoff -a |
Delete the swap.img file.
sudo rm /swap.img |
Comment out the line — /swap.img none swap sw 0 0 — in the /etc/fstab file by running the sudo nano /etc/fstab command
or change it to # /swap.img none swap sw 0 0
or delete this string (/swap.img none swap sw 0 0)
sudo nano /etc/fstab |
To verify, run the free -h command:
free -h |
Swap size equals 0, which means it's disabled
free -h
total used free shared buff/cache available
Mem: 3,9G 110M 3,2G 820K 535M 3,5G
Swap: 0B 0B 0B
|
During the installation of Ubuntu 22, you are not prompted to set a time zone (the default is UTC). You must set it manually (to ensure the billing system, scheduled tasks, etc., function correctly), for example:
sudo timedatectl set-timezone Asia/Novosibirsk |
You can improve the performance of high-load servers by increasing the open file limit.
To set the open file limit, do the following:
Check the current limit using the command:
ulimit -a |
The output:
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 the 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 |
|
Packages must NOT be installed as the ssw user. |
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 using the following command::
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5 |
Before the installation, update the OS:
sudo apt update |
If you see the following system message::
Run the following command:
|
sudo apt upgrade |
┌ ECSS software version. It is currently listed as 3 in the certification application.. | We will not change it until the next certification or │ the release of a fundamentally new version of the system. │ │ ┌ System Release version. The common version for all components included in a specific release. | | We change it centrally when
│ │ we decide to release a new version. Releases are typically not compatible with one another.
┌─┴┐ ┌──┴─┐
ECSS.SysRel.SubMaj.SubMin
└──┬─┘ └──┬─┘
│ └ Subsystem minor version. The subsystem minor version is set by the subsystem developer. | The minor version
│ is updated when a patch is added. As a rule, minor versions within a single major version
│ are compatible with each other and differ only within specific patches.
│
└ Subsystem major version. The major version is set by the subsystem developer. The subsystem’s major version must be changed when significant changes are made to the subsystem. The APT package installation utility analyzes the package version from left to right; for example, if we have package 14.14.7.7 If, in a specific situation, you need to upgrade from version 14.14.7.7 to version 14.14.7.9, the standard command → sudo apt upgrade won’t work, since it will select the newest package. In this situation, we need to explicitly specify which version of the package we want to install; in this example, we should use the command → sudo apt install package_name=14.14.7.9. This is usually necessary for testing a specific patch; for standard updates, simply using the usual command to install or update the package is sufficient. |
Install all the offered 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 wget rsync ncdu |
List of required service software:
List of recommended diagnostic and utility software:
|
Before installing the ecss packages, you must ensure that the SPD bandwidth meets the necessary requirements.
Check the values of the following parameters: |
Execute the following command:
sudo apt install -y ecss-dns-env |
The configurator will prompt you to select the sections to configure based on the questions below. Select a broker. (For example, 10.0.10.51).
| ecss-dns-env question | Answers for ecss1 | |
|---|---|---|
| [Primary broker] Enter the address ([Primary broker] Enter ip) | 10.0.10.51 (needs to be entered) |
|
| [Secondary broker] Enter the address ([Secondary broker] Enter ip) | 10.0.10.51 (needs to be entered) |
|
If there will be a need to adjust the IP addresses later, use the following command:
|
Before installing
|
Installing the ecss-postgres-bdr-ssw package
Install the ecss-postgres-bdr-ssw package:
sudo apt install ecss-postgres-bdr-ssw |
When configuring the ecss-postgres-bdr-ssw package, the following questions will be asked:
| ecss-postgres-bdr-ssw questions | Answers for ecss1 | Example |
|---|---|---|
| Current IP address of the network interface (Select the address used earlier by MySQL). | Select an IP address for working with Postgres from the list |
|
| Install on a cluster? | No (needs to be selected) |
|
. . . ================== Create databases ================== CREATE DATABASE CREATE DATABASE CREATE EXTENSION CREATE EXTENSION =================================== Creating Postgres Exporter Schema =================================== Node IP: localhost CREATE SCHEMA GRANT CREATE FUNCTION CREATE VIEW GRANT CREATE FUNCTION CREATE VIEW GRANT CREATE EXTENSION CREATE FUNCTION CREATE VIEW GRANT ======================================================= ======================================================= ecss-postgres-bdr-ssw successfully installed/updated! ======================================================= ======================================================= ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓ ┳┓┳┓┳┓ ┏┓┏┓┓ ┏ ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓ ┣┫┃┃┣┫ ┗┓┗┓┃┃┃ ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛ ┻┛┻┛┛┗ ┗┛┗┛┗┻┛ |
|
Install the License Provider package:
When istalling the ecss-license-provider package, the following questions will be asked:
The data is saved to the /etc/ecss/ecss-license-provider/config.env file:
License Provider (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 to the config.env file during the ecss-license-provider package installation. The config.yaml file contains main settings for connecting to the ELM server: where to take licenses from, which licenses to take, and where to send them. All of this should be configured manually.
It is necessary to specify the ELM servers list to which you wnat to connect to obtain licenses. First address in the list is used as the main one. Additional lines contain backup addresses:
The ecss_nodes block. This block must specify the details of the services that will receive the license. A service is specified by three parameters:
Restart the ecss-license-provider.service service for updating configuration from the /etc/ecss/ecss-license-provider/config.yaml file using the following command:
|
Installing the required ecss-node package includes the installation and initial configuration of the core subsystems.
The ecss-postgres-bdr-ssw package must already be installed on the system |
To install the ecss-node package, run the following command:
sudo apt install -y ecss-node |
During installation, a user named ssw is created, under whose account all ecss* services are run. The necessary directories are created, DNS configuration is performed, and SSL certificates are configured.
The ecss-user package will also be installed during this process |
During installation, you will be prompted to configure the parameters needed to generate the configuration files; examples of responses are provided below.
| ecss-user questions | Answers for ecss1 | Example | ||||
|---|---|---|---|---|---|---|
Do you want to use the default settings? | Yes (default value) |
| ||||
| ecss-node questions | Answers for ecss1 | Example | ||||
| test.update (needs to be entered)
|
| ||||
| Do you want to use the default settings? | Yes (default value) |
| ||||
| ecss-user questions | Answers for ecss1 | Example | ||||
| Maximum size of an uncompressed core dump in bytes. | 8G (default value) |
| ||||
| Maximum size of a compressed core dump in bytes. | 2G (default value) |
| ||||
| Maximum size that the /var/lib/systemd/coredump directory can occupy: | default (default value) |
| ||||
| Minimum amount of free disk space in bytes. | 30G (default value) |
| ||||
Save the /etc/ecss/ssl/ecss10root.key file to a safe location and delete it! | Ok (default value) |
| ||||
Cookie for the core node: | ecss-core (needs to be entered) |
| ||||
Cookie for the ds node: | ecss-ds (needs to be entered) |
| ||||
Cookie for the mediator node: | ecss-mediator (needs to be entered) |
| ||||
Cookie for the pa-sip node: | ecss-pa-sip (needs to be entered) |
| ||||
Cookie for the mycelium node: | ecss-mycelium (needs to be entered) |
| ||||
To check the NTP synchronization status, use the `ntpq -p` command. If you use the additional `-n` option, 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 |
Stop the following services::
sudo systemctl stop ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
Create a backup for oasys (Copy Mnesia database from old to new ecss1), run the following commands:
cd /var/lib/ecss/oasys/ |
sudo rsync -a <Your_user>@<IP_add_of_an_old_server>:/var/lib/ecss/oasys/Mnesia.ds1@ecss1/ Mnesia.ds1@ecss1/ |
sudo rsync -a <Your_user>@<IP_add_of_an_old_server>:/var/lib/ecss/oasys/Mnesia.md1@ecss1/ Mnesia.md1@ecss1/ |
cd ~ |
Restart the SSW services:
sudo systemctl restart ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
To check the status of the services, run the system-status command in CoCon:
/system-status Checking... ┌─┬───────────────┬─────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼─────────────────────────┼───────────────┼────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.18.0.271 │core1@ecss1 │not running │3m 55s│ │ │ds1@ecss1 │ecss-ds-3.18.0.271 │ds1@ecss1 │ds1@ecss1 │4m 40s│ │ │md1@ecss1 │ecss-mediator-3.18.0.271 │md1@ecss1 │md1@ecss1 │3m 50s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.271 │mycelium1@ecss1│not running │5m 28s│ │ │sip1@ecss1 │ecss-pa-sip-3.18.0.271 │sip1@ecss1 │sip1@ecss1 │3m 45s│ │ │sorm1@ecss1 │ecss-sorm-3.18.0.271 │sorm1@ecss1 │not running │1m 55s│ └─┴───────────────┴─────────────────────────┴───────────────┴────────────┴──────┘ |
|
Configure the SSW connection to the License Provider using the following command in CoCon (in this example, the License Provider is installed on the ecss1 host, hosts IPadd is 10.0.10.51. Port value from the /etc/ecss/ecss-license-provider/config.env file is 4321 by default):
After execution, check the connection status with the following command:
The host should have the alive=true status and be "current".
If the status for one of the License Provider hosts is shown as “current,” you can send a request to upload the license to the SSW using the following command:
|
Next, install the ecss-restf package, followed by ecss-media-server, ecss-media-resources, ecss-web-conf, and others in any order:
sudo apt install -y ecss-restfs |
Installing ecss-restfs.
When installing the ecss-restfs package, you will be prompted to specify configuration options. The answers to these questions are provided below.
| ecss-restfs questions | Answers |
|---|---|
Use TTS service | No (default value) |
Configure phone book | No (default value) |
Configure speech recognition service | No (default value) |
Select nothing | Ok |
After installing the ecss-restfs package, check for the presence of the voice guide’s WAV files in the /var/lib/ecss/restfs/system/sounds/ directory using the command:
ll /var/lib/ecss/restfs/system/sounds/ |
The presence of WAV files in the directory specified above indicates that the ecss-restfs package was installed correctly
The absence of WAV files in the directory specified above indicates a problem with the installation of the ecss-restfs package. To resolve this, run the following command:
and repeat the verification command:
|
Next, you need to make sure that these files are accessible from outside. To do so, run the following command: Installing ecss-restfs.
wget http://ecss1:9990/system/sounds/ai_you.wav |
wget http://ecss1:9990/system/sounds/ai_you.wav --2026-04-18 17:43:29-- http://ecss1:9990/system/sounds/ai_you.wav Resolving ecss1 (ecss1)... 127.0.1.1, 10.0.10.51 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 2026-04-18 17:43:29 (301 MB/s) - ‘ai_you.wav’ saved [11670/11670] |
You can delete the test file
rm ai_you.wav |
Transfer the call recordings from the old server to the new one by running the following command:
sudo rsync -a <your_user>@<IP_add_of_an_old_ecss1>:/var/lib/ecss/restfs/domain/ /var/lib/ecss/restfs/domain/ |
abf@ecss1:/var/lib/ecss/restfs/domain$ ls -la /var/lib/ecss/restfs/domain 8 total drwxr-xr-x 2 www-data www-data 4096 apr 22 18:21 . drwxr-xr-x 7 www-data www-data 4096 may 28 15:07 .. abf@ecss1:/var/lib/ecss/restfs/domain$ sudo rsync -a abf@10.0.10.10:/var/lib/ecss/restfs/domain/ /var/lib/ecss/restfs/domain/ abf@ecss1:/var/lib/ecss/restfs/domain$ ls -la test_domain/records/2026_05_28 610 total drwxrwxrwx 2 www-data www-data 4096 may 28 14:56 . drwxrwxrwx 3 www-data www-data 4096 may 28 14:27 .. -rw-r--r-- 1 www-data www-data 71892 may 28 14:27 2026-05-28_14-27-02_t_42009-42007.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:27 2026-05-28_14-27-02_t_42009-42007.pcm.meta -rw-r--r-- 1 www-data www-data 71892 may 28 14:31 2026-05-28_14-31-19_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:31 2026-05-28_14-31-19_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 63904 may 28 14:55 2026-05-28_14-55-24_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:55 2026-05-28_14-55-24_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 39940 may 28 14:55 2026-05-28_14-55-31_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:55 2026-05-28_14-55-31_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 15976 may 28 14:55 2026-05-28_14-55-37_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:55 2026-05-28_14-55-37_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 79880 may 28 14:55 2026-05-28_14-55-48_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:55 2026-05-28_14-55-48_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 55916 may 28 14:56 2026-05-28_14-55-59_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:55 2026-05-28_14-55-59_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 47928 may 28 14:56 2026-05-28_14-56-04_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:56 2026-05-28_14-56-04_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 31952 may 28 14:56 2026-05-28_14-56-28_t_42009-42007.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:56 2026-05-28_14-56-28_t_42009-42007.pcm.meta -rw-r--r-- 1 www-data www-data 31952 may 28 14:56 2026-05-28_14-56-37_t_42009-42007.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:56 2026-05-28_14-56-37_t_42009-42007.pcm.meta -rw-r--r-- 1 www-data www-data 95856 may 28 14:56 2026-05-28_14-56-42_t_42009-42007.pcm -rw-rw-rw- 1 www-data www-data 86 may 28 14:56 2026-05-28_14-56-42_t_42009-42007.pcm.meta |
sudo apt install -y ecss-media-server |
For the media server (ecss-media-server/MSR), you can perform the initial setup by writing the parameters to a configuration file,
to do this, you need to configure transport bind-addr, mcc bind-address:
Specify the IP address of the old SSW version 3.17 (10.0.20.41 in the example).
| ecss-media-server questions | Answers for ecss1 |
|---|---|
| [ MSR SIP ] Enter the bind-ip address (Enter) | 10.0.20.41 (needs to be entered) |
| [MSR Control-Channel] Enter the bind-ip address | 10.0.20.41 (needs to be entered) |
After generating the default configurations, run the following check:
cat /etc/ecss/ecss-media-server/config.xml |
Inside is the configuration for msr: config.xml; in the conf.d directory is the default.xml configuration.
Essentially, 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 enables only the following codecs: pcma, pcmu, g722, h264, h263-1998, and t38. The rest have a status of 0 (disabled). If you want to enable the remaining codecs, use the nano editor to change the priority from 0 to the desired priority number (the priority level must not be duplicated for the audio/video/fax service).
sudo nano /etc/ecss/ecss-media-server/config.xml
| To enable all codecs 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"/> should be changed 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 is not allowed to specify the same priority for different codecs; for example, g722="5" g729="5". In this case, they will not work correctly or will be ignored. |
Take a look at the accounts section (the default.xml file):
cat /etc/ecss/ecss-media-server/conf.d/default.xml |
Check the correctness of the data.
<?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 the MSR on the core.
The main parameters here are msr_name and realm:
After modifying the /etc/ecss/ecss-media-server/config.xml and /etc/ecss/ecss-media-server/conf.d/default.xml configuration files, you should restart the ecss-media-server service for the changes to take effect using the following command:
sudo systemctl restart ecss-media-server |
You will see the following message:
The operational IP addresses for the media service are specified, but they are currently still assigned to the old ecss1. After switching the IP addresses, the service will start automatically. |
sudo apt install ecss-web-conf |
The web configurator makes system management more intuitive and convenient. Installing the web configurator is not required, but it is recommended.
Additionally, installing the ecss-web-conf package automatically installs the ecss-subscriber-portal-ui package. The ECSS-10 system’s “Subscriber Portal” application allows system 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 questions | Answers for ecss1 | Example |
|---|---|---|
| Do you want to use the default settings? | Yes (default value) |
|
Check whether you can connect to the web interface at http://10.0.10.51; the username and password are admin/password. Not all features will be available at this time, but the web interface should work, and you should be able to log in successfully.
sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm |
Copy the Postgres database from the old ecss1 server by running the following command:
sudo tar -Pcvf /tmp/postgres.tar /srv/ecss/ecss-postgres-bdr-ssw/volumes/ |
Copy postgres.tar to the new server by running the following command:
scp /tmp/postgres.tar <your_user>@<IP_address_of_a_new_ecss1>:/tmp/postgres.tar |
Stop the Postgres database Docker with the following command:
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml stop |
Clear the /srv/ecss/ecss-postgres-bdr-ssw/volumes subdirectory:
sudo rm -R /srv/ecss/ecss-postgres-bdr-ssw/volumes/* |
Extract the Postgres database on the new ecss1 server.
sudo tar xvf /tmp/postgres.tar -C / |
Start the Postgres database Docker with the following command:
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml start |
Change the 10.0.10.41/10.0.20.41 IP addresses to the ones that aren't used in the network (10.0.10.61/10.0.20.61, for example):
sudo nano /etc/netplan/ecss.yaml |
|
|
sudo netplan apply |
Once the operational IP addresses have been removed from the old SSW, you can assign them to the new SSW. Run the following command:
sudo nano /etc/netplan/ecss.yaml |
Change the IP addresses 10.0.10.51/10.0.20.51 to those used on the network for the SSW (in the example, 10.0.10.41/10.0.20.41):
|
|
sudo netplan apply |
Update an IP address in the /etc/hosts file:
sudo nano /etc/hosts |
Update an IP address in the /etc/dnsmasq.d/ecss-broker file:
sudo dpkg-reconfigure ecss-dns-env |
/system/licence/manager/set --hosts [https://10.0.10.41:4321] |
sudo systemctl restart ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-media-server |
After the update is complete, verify that all SSW services are functioning properly.