Дерево страниц

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

Ключ

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

...

This section provides examples of installing and configuring ECSS-10 for a system with a single server and for a cluster of two servers.

Initial system installation without redundancy with one server 
Якорь
with_one_server
with_one_server

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 — 2000 (MCL — Max call limit);
  • System redundancy is not required;
  • The number of Ethernet network interfaces — 4.

...

Server name (host)

Role

Interface

Address

Port

Static addresses of the software switch

ecss1Server management interface (port 2000 ssh)net.1010.0.10.11/242000
ecss2Server management interface (port 2000 ssh)net.1010.0.10.12/242000

ecss1

Core addres (ecss-core)

net.20

10.0.20.11/24

5000

ecss2

Core addres (ecss-core)

net.20

10.0.20.12/24

5000

ecss1, ecss2Gateway addressnet.1010.0.10.1-
ecss1, ecss2DNS server addressesnet.1010.0.10.1, 8.8.8.8-
ecss1, ecss2NTP server addressesnet.1010.136.16.211, 10.136.16.212123

Internal addresses of the software switch

ecss1virtual address of eccs1 host software adapternet.20:SIP110.0.20.31/24-
ecss2virtual address of eccs2 host software adapternet.20:SIP210.0.20.32/24-
ecss1backup virtual address of eccs2 host software adapter on eccs1 hostnet.20:SIP210.0.20.32/24-
ecss2backup virtual address of eccs1 host software adapter on eccs2 hostnet.20:SIP110.0.20.31/24-
ecss1, ecss2MySQL database virtual address (ecss-mysql)net.10:MYSQL10.0.10.10/243306

Connecting to network

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

...

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).

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. 

...

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:

...

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

Software installation and configuration

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

...

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.

...

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:

...

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:

...

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

Next, ecss-media-server, ecss-media-resources, ecss-restf, ecss-web-conf and other packagesare installed in any order:

ecss-media-server, ecss-media-resources

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

...

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

...

QuestionsAnswers

Use TTS service

No

Configure phone book

No

Configure speech recognition service

No

Choose nothing

Ok

ecss-web-conf

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

...

QuestionsAnswers
Input IP address or hostname of MySQL db for web-conf DB127.0.0.1

Input port of MySQL db for web-conf DB

3306

Input IP address or hostname for ECSS-10 with http_terminal

127.0.0.1

Input port SSW http_terminal

9999
Input login for SSW http_terminaladmin

Input  password for SSW http_terminal

password

Configuring security. SSH

Configuring SSH server:

sudo nano /etc/ssh/sshd_config

...

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

Initial configuration

Start the necessary services.

...

After creating the domain, configure:

  • routing;
  • users;
  • subscribers;
  • trunks and bridges.

Initial installation of a redundant system in a cluster of two servers

Initial data

Информация
iconfalse
titleInitial data

Technical specification:

Integration of the ECSS-10 Class 5 software switch (SSW) on 2 physical servers with SIP support is required with the following parameters of the server group load:

  • Maximum number of subscribers —15,000 (MUL — Max user limit);
  • Maximum number of simultaneous connections — 2000 (MCL — Max call limit);
  • Full backup of the ECSS system is required (all nodes are reserved on the second server);
  • Number of Ethernet network interfaces — 4.

...

Server name (host)

Role

Interface

Address

Port

External addresses of the software switch

ecss1

Server management interface (port 2000 ssh)

bond2_ecss1_mgm

10.0.3.237/24

2000

ecss2

Server management interface (port 2000 ssh)

bond2_ecss2_mgm

10.0.3.240/24

2000

ecss1

Software Adapter interface of ecss1 host (ecss_pa_sip)

bond1_ecss1_pa

--
ecss2Software Adapter interface of ecss2 host (ecss_pa_sip)

bond1_ecss2_pa

--
ecss1Virtual address of the ecss1 host software adapterVRRP:SIP1_Mr10.0.3.238/24-
ecss2Virtual address of the ecss2 host software adapterVRRP:SIP2_Mr10.0.3.241/24-
ecss1Alternative virtual address of the ecss2 host software adapter on the ecss1 hostVRRP:SIP2_Bup10.0.3.241/24-
ecss2Alternative virtual address of the ecss1 host software adapter on the ecss2 hostVRRP:SIP1_Bup10.0.3.238/24-

Internal addresses of the software switch

ecss1Internal address of the ecss1 hostvlan2192.168.1.1/24-
ecss2Internal address of the ecss2 hostvlan2192.168.1.2/24-

ecss1

Core address (ecss-core)

vlan2

192.168.1.1/245000
ecss2Core address (ecss-core)vlan2192.168.1.2/245000

ecss1

Media server address (ecss-media-server (MSR))

vlan2

192.168.1.1/245040
ecss2

Media server address (ecss-media-server (MSR))

vlan2192.168.1.2/245040

ecss1

MySQL Database Virtual Address
(ecss-mysql)

vlan2:mysql (VRRP)

192.168.1.10/243306

Connecting to network

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

...

All 4 physical network interfaces are connected into 1 aggregated link (bond). Server port aggregation is configured in 802.3ad mode. Network cards aggregated groups with same rate and duplex are created. With such a combination, the transmission uses all channels in active aggregation according to the IEEE802.3ad standard. The choice on which interface to send a packet is determined by policy. By default, it is XOR policy, also xmit_hash policy can be used. For more information, see Netplan section. 

Requirements:

  • Ethtool  support in driver to obtain information about speed and duplex on each network interface;
  • IEEE802.3ad standard support on switch. 

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).

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. 

...

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

Note that while editing netplan, you must follow the YAML markup rules:

  • Mandatory presence of two spaces before each line (except network).
  • Each subsection is additionally shifted by 2 spaces:

→ Section                                                               |network

→ Subsection                                                         |_'_'bonds:

→ Subsection of the bonds section description    |_'_'_'_'bonded_one:

→ etc.                                                                     |_'_'_'_'...

  • There is no space before the ":" sign, after — one space.
  • Before the "-" sign, the number of spaces is as if a new subsection begins, after — one space.

Example of netplan for active-backup mode

Netplan for ecss1 server interfaces (/etc/netplan/ecss_netplan.yaml)Netplan for ecss2 server interfaces (/etc/netplan/ecss_netplan.yaml)


Без форматирования
# 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: # Interface name
      dhcp4: no # Disabling dynamic distribution of IP address on the interfaces
    eth1:
      dhcp4: no
    eth2:
      dhcp4: no
    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
		- eth0
		- eth1
		- eth2
		- eth3
      parameters: # Section of defining bonding interface parameters
        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 # Determining if an interface is required at startup
  
  vlans:
    net.10: # Management interface
      id: 10
        link: bond1
        addresses: [10.0.10.11/24]
        gateway4: 10.0.10.1 # Gateway address
        nameservers:
          addresses: [10.0.10.1, 8.8.8.8] # DNS servers addresses
        routes: # Routing for NTP subnet
          - to: 10.136.16.0/24
            via: 10.0.10.1 # Gateway address for this subnet
            on-link: true # Determines that the specified routes are directly associated with the interface
    net.20: # Interface for VoIP
        id: 20
        link: bond1
        addresses: [10.0.20.11/24]
        routes:
          - to: 10.0.3.0/24
            via: 10.0.20.1
            on-link: true          



Без форматирования
# Netplan for the ecss2 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: # Interface name
      dhcp4: no # Disabling dynamic distribution of IP address on the intefaces
    eth1:
      dhcp4: no
    eth2:
      dhcp4: no
    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
		- eth0
		- eth1
		- eth2
		- eth3
      parameters: # Section of defining bonding interface parameters
        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 # Determining if an interface is required at startup
  
  vlans:
    net.10: # Management interface
      id: 10
        link: bond1
        addresses: [10.0.10.12/24]
        gateway4: 10.0.10.1 # Gateway address
        nameservers:
          addresses: [10.0.10.1, 8.8.8.8] # DNS servers addresses
        routes: # Routing for NTP subnet
          - to: 10.136.16.0/24
            via: 10.0.10.1 # Gateway address for this subnet
            on-link: true # Determines that the specified routes are directly associated with the interface
    net.20: # Interface for VoIP
        id: 20
        link: bond1
        addresses: [10.0.20.12/24]
        routes:
          - to: 10.0.3.0/24
            via: 10.0.20.1
            on-link: true          


Example of netplan for 802.3ad mode

Netplan for ecss1 server interfaces (/etc/netplan/ecss_netplan.yaml)Netplan for ecss2 server interfaces (/etc/netplan/ecss_netplan.yaml)


Без форматирования
# 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: # Interface name
      dhcp4: no # Disabling dynamic distribution of IP address on the interfaces
    eth1:
      dhcp4: no
    eth2:
      dhcp4: no
    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
		- eth0
		- eth1
		- eth2
		- eth3
      parameters: # Section of defining bonding interface parameters
        mode: 802.3ad # LACP mode 1:1
        mii-monitor-interval: 100 # Section of interface monitoring (ms)
        primary: eth0 # Section of determining main interface
      optional: false # Determining if an interface is required at startup
  
  vlans:
    net.10: # Management interface
      id: 10
        link: bond1
        addresses: [10.0.10.11/24]
        gateway4: 10.0.10.1 # Gateway address
        nameservers:
          addresses: [10.0.10.1, 8.8.8.8] # DNS servers addresses
        routes: # Routing for NTP subnet
          - to: 10.136.16.0/24
            via: 10.0.10.1 # Gateway address for this subnet
            on-link: true # Determines that the specified routes are directly associated with the interface
    net.20: # Interface for VoIP
        id: 20
        link: bond1
        addresses: [10.0.20.11/24]
        routes:
          - to: 10.0.3.0/24
            via: 10.0.20.1
            on-link: true          



Без форматирования
# Netplan for the ecss2 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: # Interface name
      dhcp4: no # Disabling dynamic distribution of IP address on the interfaces
    eth1:
      dhcp4: no
    eth2:
      dhcp4: no
    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
		- eth0
		- eth1
		- eth2
		- eth3
      parameters: # Section of defining bonding interface parameters
        mode: 802.3ad # LACP mode 1:1
        mii-monitor-interval: 100 # Section of interface monitoring (ms)
        primary: eth0 # Section of determining main interface
      optional: false # Determining if an interface is required at startup
  
  vlans:
    net.10: # Management interface
      id: 10
        link: bond1
        addresses: [10.0.10.12/24]
        gateway4: 10.0.10.1 # Gateway address
        nameservers:
          addresses: [10.0.10.1, 8.8.8.8] # DNS servers addresses
        routes: # Routing for NTP subnet
          - to: 10.136.16.0/24
            via: 10.0.10.1 # Gateway address for this subnet
            on-link: true # Determines that the specified routes are directly associated with the interface
    net.20: # Interface for VoIP
        id: 20
        link: bond1
        addresses: [10.0.20.12/24]
        routes:
          - to: 10.0.3.0/24
            via: 10.0.20.1
            on-link: true          


Apply parameters with the command:

sudo netplan apply

Configuring /etc/hosts

After configuring netplan, specify that the internal address 192.168.1.X belongs to the corresponding ecssX server. To do this, configure /etc/hosts. 

...

Accessing ecss2 from ecss1Accessing ecss1 from ecss2

ping ecss2

PING ecss2 (192.168.1.2) 56(84) bytes of data.
64 bytes from ecss2 (192.168.1.2): icmp_seq=1 ttl=64 time=0.043 ms

ping ecss1

PING ecss1 (192.168.1.1) 56(84) bytes of data.
64 bytes from ecss1 (192.168.1.1): icmp_seq=1 ttl=64 time=0.043 ms

Operating system software update

To install the ECSS-10 system, add the ELTEX repository:

...

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

Software installation and configuration

Install all the proposed packages:

...

Без форматирования
sudo apt install ifenslave-2.6 keepalived attr

Installing the ecss-mysql package

To install, run the command:

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

Configuring the ecss-dns-env package

Before installing the ecss-mysql package, you will be prompted to configure environment variables for services in dnsmasq. The customizer will prompt you to select the sections to configure. Choose broker and mysql.

QuestionsReplies for ecss1Replies for ecss2
Secondary broker address192.168.1.2192.168.1.2
mysql address192.168.1.10192.168.1.10

Configuring the ecss-mysql package

During installation, the customizer will ask questions, replies are given in the table below. Note that the password is the same for both hosts on which mysql is installed.

...

Блок кода
sudo mysql -uroot -p -e 'show slave status \G;' | grep -E "Slave_IO_Running:|Slave_SQL_Running:"
Enter password:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Editing keepalived.conf

Next step is to edit global configuration file keepalived.conf. The contents are the same on both hosts.

...

Then /etc/keepalived/mysql.conf are created on both hosts. 

Creating VRRP for MySQL

/etc/keepalived/mysql.conf for ecss1/etc/keepalived/mysql.conf for ecss2
# Configuring mysql for first node:

vrrp_script check_mysql {
    script "/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf -e 'SELECT 1;'"
    user root
    interval 2
    fall 1
    timeout 2
}

vrrp_instance MySQL {
    state MASTER                     # Initial state at start
    interface net.10                 # Name of the network interface, on which VRRP will operate
    virtual_router_id 10             # Unique router id (0..255)
    priority 100                     # Priority (0..255) the higher the more
    advert_int 1                     # Notification sending interval (sec)
    preempt_delay 60                 # Master wait interval at daemon start (sec) at BACKUP initial state

    unicast_src_ip  10.0.10.11       # Own real IP address
    unicast_peer {
         10.0.10.12                  # Neighbour real IP address
    }

    virtual_ipaddress {
        # Virtual IP address and a mask
        # dev - network interface on which virtual address will operate
        # label - virtual interface label (for ease of identification)
        10.0.10.10/24 dev net.10 label net.10:mysql
   }

    track_script {
        check_mysql
    }
}
# Configuring mysql for the second node:

vrrp_script check_mysql {
    script "/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf -e 'SELECT 1;'"
    user root
    interval 2
    fall 1
    timeout 2
}

vrrp_instance MySQL {
    state MASTER                     # Initial state at start
    interface net.10                 # Name of the network interface, on which VRRP will operate
    virtual_router_id 10             # Unique router id (0..255)
    priority 50                      # Priority (0..255) the higher the more
    advert_int 1                     # Notification sending interval (sec)
    preempt_delay 60                 # Master wait interval at daemon start (sec) at BACKUP initial state

    unicast_src_ip  10.0.10.12       # Own real IP address
    unicast_peer {
         10.0.10.12                  # Neighbour real IP address
    }

    virtual_ipaddress {
        # Virtual IP address and a mask
        # dev - network interface on which virtual address will operate
        # label - virtual interface label (for ease of identification)
        10.0.10.10/24 dev net.10 label net.10:mysql
   }

    track_script {
        check_mysql
    }
}

...

ifconfig
<...>
vlan2:mysql: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 0.0.0.0
ether ca:d2:8a:13:3a:11 txqueuelen 1000 (Ethernet)

Installing the ecss-node package

Installing the ecss-node package:

...

Select manual mode for certificates generation. All questions can be answered with default answers by clicking "Enter" for all questions.

Installing and configuring the remaining ecss packages 

Next, install all the necessary packages on both hosts (for more information on installing necessary and additional packages, see "Installation of ECSS packages"):

...

  • 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.

Configuring VRRP for SIP adapter

To configure VRRP for SIP adapter, create on both servers files, the view of which is shown below:

...

sudo systemctl restart keepalived.service

Further configuring of the software switch

mycelium.config

Cluster name is set in the ecss-mycelium /etc/ecss/ecss-mycelium/mycelium.config package configuration:

...

Configuring cluster name  (/etc/ecss/ecss-mycelium/mycelium1.config)

%%% -*- mode:erlang -*-
%%% Warning - this config file *must* end with <dot><whitespace>
[
    {mycelium_broker, [
         {cluster_name, test_cluster},           %% Set the cluster name for both hosts. The cluster name is arbitrary and must be the same on both hosts
        
...

Якорь
epmd_1
epmd_1

epmd

Configuring epmd:

systemctl edit epmd.service

...

systemctl daemon-reload
systemctl restart epmd.service

glusterfs

Configure glusterfs for ecss-restfs on the first host (ecss1), to do this, install the glusterfs-server and attr packages on both hosts:

...

df -h
<...>
localhost:/ecss_volume 253G 3.0G 239G 2% /var/lib/ecss/restfs

Configuring security. SSH

Configuring SSH server:

Без форматирования
sudo nano /etc/ssh/sshd_config

...

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

Configuring ecss-node package cluster

Start the necessary services:

...

It can be seen that the nodes have entered the cluster and the MSR has registered on the ecss-core node.

Configuring group of IP addresses (IP-set)

Configure SIP adapter according to the technical specification:

...

After creating the domain, configure:

Example of a primary system configuration using web configurator

Initial data

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

...

  • Subscribers with numbers 101, 102 , 103, 104 ,105, 106, 107, 108, 109, 110;
  • Trunk towards the gateway.

Preparation for work

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

...

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.

...

Figure 6 — Edit user dialog box

Creating a domain

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

...

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:

...

Figure 10 — Displaying applications in current system configuration

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

To configure an interface, open the Clusters application.

...

Figure 14 — Configuration window for SIP transport

Creating subscribers

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

...

Figure 16 — Example of identifying subscribers in a domain

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.

...

Figure 20 — Example of configuring routing context 

Creating trunk 
Якорь
trunk
trunk

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

...

Figure 22 — Creating a trunk

Creating IVR script 
Якорь
ivr
ivr

To create IVR, use the IVR editor application. 

...

Figure 25 — 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 .
  • 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 .

...

Figure 26 —Type of routing context

Configuring services

To configure the services, perform several actions:

...