perf(pjsip): optimize NAT/TLS keepalives and remote registration expiry for off-network phones
This commit is contained in:
1 parent
c79faadd99
commit
3ef7ed0010
1 file changed
+22
-5
+22
-5
@@ -87,6 +87,21 @@ class ConfigGenerator
|
||||
$lines[] = "; ===========================================================================";
|
||||
$lines[] = "";
|
||||
|
||||
// 0. Paramètres globaux PJSIP (Keepalive applicatif TLS/TCP toutes les 30s pour préserver les sessions NAT hors réseau)
|
||||
$lines[] = "; --- PARAMÈTRES GLOBAUX PJSIP (KEEPALIVE NAT / HORS RÉSEAU) ---";
|
||||
$lines[] = "[global]";
|
||||
$lines[] = "type = global";
|
||||
$lines[] = "keep_alive_interval = 30";
|
||||
$lines[] = "contact_expiration_check_interval = 15";
|
||||
$lines[] = "";
|
||||
|
||||
$tcpKeepaliveLines = [
|
||||
"tcp_keepalive_enable = yes",
|
||||
"tcp_keepalive_idle_time = 20",
|
||||
"tcp_keepalive_interval_time = 5",
|
||||
"tcp_keepalive_probe_count = 3",
|
||||
];
|
||||
|
||||
// 1. Transport UDP (Postes internes LAN & Trunks standards)
|
||||
$lines[] = "; --- TRANSPORT UDP (LAN / INTERNE) ---";
|
||||
$lines[] = "[transport-udp]";
|
||||
@@ -136,6 +151,7 @@ class ConfigGenerator
|
||||
$lines[] = "external_media_address = {$haVip}";
|
||||
$lines[] = "external_signaling_address = {$haVip}";
|
||||
}
|
||||
array_push($lines, ...$tcpKeepaliveLines);
|
||||
$lines[] = "allow_reload = no";
|
||||
$lines[] = "";
|
||||
|
||||
@@ -209,6 +225,7 @@ class ConfigGenerator
|
||||
$lines[] = "external_media_address = {$haVip}";
|
||||
$lines[] = "external_signaling_address = {$haVip}";
|
||||
}
|
||||
array_push($lines, ...$tcpKeepaliveLines);
|
||||
$lines[] = "allow_reload = no";
|
||||
$lines[] = "";
|
||||
|
||||
@@ -223,10 +240,10 @@ class ConfigGenerator
|
||||
$clusterSt = $this->db->query('SELECT enabled, blf_expiry FROM cluster_settings WHERE id = 1')->fetch(PDO::FETCH_ASSOC) ?: [];
|
||||
} catch (\Throwable $e) {}
|
||||
$isHaActive = !empty($clusterSt['enabled']);
|
||||
// En mode Haute Disponibilité, on plafonne l'expiration d'enregistrement des AOR (REGISTER) sur la valeur configurée (par défaut 120s)
|
||||
// afin que les téléphones se réenregistrent très vite en cas de bascule HA. Sans HA, on conserve le standard 1800s (30 min).
|
||||
$regExpiration = $isHaActive ? max(30, min(3600, (int)($clusterSt['blf_expiry'] ?? 120))) : 1800;
|
||||
$subMinExpiry = $isHaActive ? 30 : 0;
|
||||
// En mode HA, on plafonne sur la valeur configurée (par défaut 120s).
|
||||
// Sans HA, on garde 120s-300s afin de maintenir actives les tables NAT des postes hors réseau.
|
||||
$regExpiration = $isHaActive ? max(30, min(3600, (int)($clusterSt['blf_expiry'] ?? 120))) : 120;
|
||||
$regMaxExpiration = $isHaActive ? $regExpiration : 300;
|
||||
|
||||
foreach ($extensions as $ext) {
|
||||
$num = trim((string)$ext['extension']);
|
||||
@@ -316,7 +333,7 @@ class ConfigGenerator
|
||||
$lines[] = "max_contacts = {$maxContacts}";
|
||||
$lines[] = "remove_existing = yes";
|
||||
$lines[] = "default_expiration = {$regExpiration}";
|
||||
$lines[] = "maximum_expiration = {$regExpiration}";
|
||||
$lines[] = "maximum_expiration = {$regMaxExpiration}";
|
||||
$lines[] = "minimum_expiration = " . ($isHaActive ? 30 : 60);
|
||||
$lines[] = "qualify_frequency = 30";
|
||||
if ($hasVm) {
|
||||
|
||||
Reference in new issue
Block a user