Relais média RTPengine (rtpengine)
Relais RTP optionnel piloté par Kamailio : ancrage du média, NAT difficile et interconnexion média avec les opérateurs. Relais en espace utilisateur, protocole de contrôle ng sur l'adresse d'administration, métriques Prometheus à la demande.
Généré depuis catalog/services/rtpengine.yaml : ne pas modifier à la main.
Résumé
| Version | 11.5.1.18 |
| Usage | installer et configurer |
| Couche | infrastructure (présentée à part) |
| Catégorie | Réseau |
| Méthodes d'installation | package |
| Connexion externe | non |
| Réservé au bac à sable | non |
Licence
| Identifiant SPDX | GPL-3.0-or-later |
| Politique de licence | exception de licence |
| Exception de licence | LEX-026 (en attente de la décision du client) |
| Remarque de licence | GPL-3.0-or-later avec l'exception de liaison OpenSSL de Sipwise (debian/copyright du projet ; SPDX n'a pas d'identifiant pour cette exception) : un démon séparé piloté par son protocole réseau ng ; aucun code de RTPengine n'est lié à Navin. Le bundle hors ligne redistribue les paquets de la distribution avec leurs notices et leurs sources. |
| Composant de la plateforme | rtpengine |
Paquets et artefacts
Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.
| Type | Paquet | Version | Licence | Détails |
|---|---|---|---|---|
| paquet système | rtpengine-daemon | version du dépôt configuré | GPL-3.0-or-later | famille Debian (apt) |
| paquet système | rtpengine-utils | version du dépôt configuré | GPL-3.0-or-later | famille Debian (apt) |
Systèmes et architectures pris en charge
| Méthode | Systèmes d'exploitation | Architectures |
|---|---|---|
package | famille Debian (apt) | x86_64, aarch64 (non restreintes par le descripteur) |
- Pas de méthode
packagesur la famille RHEL (dnf) : Aucun paquet RTPengine n'existe dans RHEL ni dans EPEL 9 et 10 (le projet Sipwise ne publie que des paquets Debian). Placer le relais média sur Ubuntu 24.04 (universe : rtpengine-daemon 11.5.1.18) ou Debian 13 (rtpengine-daemon 12.5.1.31). - Méthode
packagede la famille Debian (apt) limitée à Ubuntu 24.04, Debian 13 : La configuration générée n'est validée que contre le RTPengine d'Ubuntu 24.04 (11.5.1.18) et de Debian 13 (12.5.1.31) ; les versions plus anciennes de Debian 12 et d'Ubuntu 22.04 ne font pas partie du miroir hors ligne de la téléphonie.
Unités de la distribution masquées par la méthode package : rtpengine-daemon.service. Le postinst des paquets les démarre avec la configuration d'origine : juste après l'installation, l'agent les arrête, les désactive et les masque (tâche systemd.mask, seulement si leur fichier d'unité appartient à un paquet installé), et le composant tourne dans sa propre unité navin-<service>-<component>.service. La désinstallation les démasque seulement.
Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.
Prérequis
Hôte
Le descripteur ne déclare aucun contrôle préalable de l'hôte.
Programmes que les commandes et les contrôles du service lancent sur l'hôte, hors des racines gérées : les ajouter à allowed_commands de l'agent (voir Sécurité de l'agent Navin), sinon l'agent les refuse avec command_not_allowed : /usr/bin/rtpengine-ctl.
Réseau et ports
| Composant | Nom du port | Port | Ouvert dans le pare-feu de l'hôte |
|---|---|---|---|
rtpengine | ng | 2223/udp | oui |
rtpengine | media | 30000-39999/udp | oui |
rtpengine | metrics | 2224/tcp | oui |
rtpengine | cli | 9900/tcp | non |
Services et connexions nécessaires
Ce service n'a aucune dépendance.
Méthodes et modes d'installation
| Méthode | Défaut | Ce que la méthode utilise |
|---|---|---|
package | oui | les paquets système du descripteur, installés par le gestionnaire de paquets de l'hôte |
Composants
| Composant | Type | Méthodes d'installation | Ports |
|---|---|---|---|
RTPengine (rtpengine) | maître | package | 2223/udp, 30000-39999/udp, 2224/tcp, 9900/tcp |
Unique (single) (par défaut)
Un seul relais média.
Ce que le mode déploie :
| Composant | Placement |
|---|---|
rtpengine | min 1, max 1 |
Redondant (redundant)
Deux relais indépendants ou plus utilisés tour à tour par Kamailio ; un relais perdu coupe le média de ses appels.
Ce que le mode déploie :
| Composant | Placement |
|---|---|
rtpengine | min 2, recommandé 2 |
Installer ce service
L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.
-
Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.
-
Choisissez le service. À l'étape Service, sélectionnez Relais média RTPengine. La carte affiche la licence
GPL-3.0-or-later. -
Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode :
single(par défaut),redundant. Chaque mode déploie les composants listés dans Méthodes et modes d'installation. -
Liaisons. Ce service n'a aucune dépendance : l'étape Liaisons n'a rien à lier.
-
Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration). Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.
-
Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.
-
Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services.
Haute disponibilité
| Cluster | aucun (none) |
| Haute disponibilité | redondance (redundancy) |
| Bascule | côté client (client) |
| Réplication | aucun (none) |
| Quorum | aucun (none) |
| Découverte | statique (static) |
| Point d'entrée | découverte par le client (client-discovery) |
| Documentation officielle | https://rtpengine.readthedocs.io/en/latest/overview.html |
| Références | https://www.kamailio.org/docs/modules/5.7.x/modules/rtpengine.html |
Topologie par mode
| Modes | Niveau le plus haut du catalogue | Répartition | Composant du quorum | Domaines de panne | Description |
|---|---|---|---|---|---|
single | autonome (standalone) | unique (single) | - | 1 | Un relais : sa perte coupe le média des appels qu'il ancre. |
redundant | ha (ha) | actif-actif (active-active) | - | 2 | Relais indépendants ; Kamailio envoie chaque nouvel appel à un relais disponible. |
Remarques
- Quand il se justifie : ancrage RTP sur le bord SIP (exigence légale ou masquage de topologie), téléphones ou opérateurs derrière un NAT qu'Asterisk ne traverse pas, interconnexion média entre des réseaux qui ne se routent pas. Quand il ne se justifie pas : Asterisk ancre lui-même le média des appels PBX et LiveKit SIP celui des appels IA ; les softphones WebRTC parlent DTLS-SRTP avec Asterisk, jamais par RTPengine.
- Les relais ne partagent aucun état (pas de Redis configuré) : les appels d'un relais perdu perdent leur média ; les nouveaux appels vont aux autres.
Paramètres de configuration
Réseau
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Port ng (ng_port) | port | 2223 | - | non | non | oui | Port UDP de contrôle du protocole ng sur l'adresse d'administration. ng n'a pas d'authentification : garder l'adresse d'administration sur un réseau joint par les seuls hôtes Kamailio. |
Adresse d'administration (admin_address) | string | (vide) | - | non | non | oui | Adresse d'écoute de ng et HTTP ; vide : l'adresse de l'hôte. (portée host) |
Métriques HTTP (metrics_enabled) | bool | false | - | non | non | oui | Ouvre l'écoute HTTP : /metrics Prometheus, mais aussi l'interface de commande sous /cli, sans authentification ; réservée aux hôtes du cluster par le pare-feu de l'hôte. |
Port HTTP (http_port) | port | 2224 | - | non | non | oui | Port de /metrics sur l'adresse d'administration, tant que les métriques HTTP sont actives. |
Port de la CLI (cli_port) | port | 9900 | - | non | non | oui | Port local de rtpengine-ctl (commandes du Manager). |
Média
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Adresse média (media_address) | string | (vide) | - | non | non | oui | Adresse locale des ports RTP ; vide : l'adresse de l'hôte. (portée host) |
Adresse annoncée (advertised_address) | string | (vide) | - | non | non | oui | Adresse publique écrite dans le SDP quand l'hôte est derrière un NAT 1:1 ; vide : l'adresse média. (portée host) |
Premier port RTP (port_min) | port | 30000 | min 1024, max 39000 | non | non | oui | Premier port UDP de la plage média, qui finit à 39999 (public, deux ports par branche relayée). |
Délai RTP (rtp_timeout_s) | int | 60 | min 10, max 3600 | non | non | non | Secondes sans média avant la fermeture d'un appel. |
Délai en attente (silent_timeout_s) | int | 3600 | min 60, max 86400 | non | non | non | Secondes sans média pour un appel en attente (sendonly) avant sa fermeture. |
Durée maximale d'un appel (max_call_duration_s) | int | 14400 | min 60, max 86400 | non | non | non | Secondes après lesquelles un appel est fermé quel que soit son média. |
Réglages
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Fils d'exécution (threads) | int | 4 | min 1, max 64 | non | non | oui | Fils d'exécution qui relaient le média. (recommandé max(2, min(32, host.cpu_count))) |
Niveau de journalisation (log_level) | int | 5 | min 1, max 7 | non | non | non | Niveau syslog : 3 erreurs, 5 notices, 6 info, 7 débogage. |
Points d'accès
| Point d'accès | Schéma | Composant | Port | Chemin | Paramètre TLS | Paramètres de liaison | Secrets de liaison | Commande de provisionnement |
|---|---|---|---|---|---|---|---|---|
ng | ng | rtpengine | 2223 (ng_port) | - | - | - | - | - |
Commandes
| Commande | Composant | Cible | Description |
|---|---|---|---|
Sessions (sessions) | rtpengine | tous les hôtes | Nombre de sessions relayées sur chaque relais. |
Statistiques (totals) | rtpengine | tous les hôtes | Totaux depuis le démarrage : sessions, paquets, erreurs, délais dépassés. |
Contrôles de santé
Vivacité (par instance)
| Composant | Contrôle | Détails |
|---|---|---|
rtpengine | TCP 127.0.0.1:{{ config.cli_port }} | 20 tentatives ; intervalle 1 s ; délai 3 s |
Disponibilité (contrôle du service)
| Contrôle | Détails |
|---|---|
/usr/bin/rtpengine-ctl -ip 127.0.0.1 -port {{ config.cli_port }} list numsessions | Attendu Current sessions ; 10 tentatives ; intervalle 3 s ; délai 10 s |
Contrôles préalables
| Contrôle | Type | Signification | Sévérité | Composants |
|---|---|---|---|---|
ng_port_free | port_free {"param": "ng_port"} | port 2223 libre sur l'hôte | bloquant | tous les composants |
Désinstallation
Chemins supprimés quand les données sont purgées : {{ paths.log }}.
Documentation amont
- Site : https://rtpengine.readthedocs.io
- Sources : https://github.com/sipwise/rtpengine
- Haute disponibilité : https://rtpengine.readthedocs.io/en/latest/overview.html
- Haute disponibilité : https://www.kamailio.org/docs/modules/5.7.x/modules/rtpengine.html