Mettre en place une interconnexion SIP conforme FFTelecoms v3.4 avec FreeSWITCH
Author

admin

Mettre en place une interconnexion SIP conforme FFTelecoms v3.4 avec FreeSWITCH

Guide technique pour configurer une interconnexion SIP inter-opérateurs conforme au profil FFTelecoms v3.4 sur FreeSWITCH : TLS, SRTP, codecs, P-Asserted-Identity, MAN, NG eCall.

Interconnexion SIP FFTelecoms v3.4 avec FreeSWITCH

Schéma interconnexion SIP FFTelecoms

L'interconnexion IP entre opérateurs en France est encadrée par le profil SIP FFTelecoms, maintenu par la Fédération Française des Télécoms. La version v3.4 (dernière en date) définit les exigences techniques que tout opérateur exploitant des ressources du plan de numérotation français doit respecter.

Ce guide détaille comment configurer FreeSWITCH pour être conforme à ce profil.

Les exigences du profil SIP FFTelecoms v3.4

Signalisation SIP

Exigence Détail
Transport TLS 1.2 minimum (port 5061)
Codec voix G.711a (PCMA) obligatoire, G.711µ optionnel
Fax T.38 obligatoire
PRACK Support du 100rel (réponses provisoires fiables)
Session Timer Support de l'extension timer (RFC 4028)
P-Asserted-Identity Obligatoire pour l'identification de l'appelant
MAN Header Identity + jeton STIR/SHAKEN
Appels internationaux Indication systématique de l'origine internationale
181 Call Forwarding Ne pas relayer le numéro de renvoi en 181
Erreurs SIP Ne pas réessayer automatiquement après erreur SIP
NG eCall Support des appels d'urgence véhicules (P-Asserted-Identity = MSISDN véhicule)
RTT Compatibilité texte temps réel (accessibilité)

Sécurité média

Exigence Détail
SRTP AES_CM_128_HMAC_SHA1_80
Négociation Via SDP (a=crypto)

1. Prérequis

  • FreeSWITCH 1.10.x ou supérieur installé sur Debian 12/13
  • Certificats TLS (signé par une CA reconnue, pas self-signed pour l'interco)
  • Certificat APNF pour le MAN (STIR/SHAKEN)
  • Accord d'interconnexion signé avec l'opérateur distant
  • Plage d'adresses IP connue de l'opérateur distant

2. Profil SIP pour l'interconnexion

Créer un profil SIP dédié à l'interconnexion FFTelecoms :

<!-- /etc/freeswitch/sip_profiles/fftelecoms.xml -->
<profile name="fftelecoms">
  <settings>
    <!-- Réseau -->
    <param name="sip-ip" value="$${local_ip_v4}"/>
    <param name="sip-port" value="5061"/>
    <param name="sip-trace" value="false"/>

    <!-- TLS obligatoire -->
    <param name="tls" value="true"/>
    <param name="tls-only" value="true"/>
    <param name="tls-version" value="tlsv1.2"/>
    <param name="tls-cert-dir" value="/etc/freeswitch/tls/"/>
    <param name="tls-verify-policy" value="all"/>
    <param name="tls-verify-depth" value="3"/>

    <!-- RTP / SRTP -->
    <param name="rtp-ip" value="$${local_ip_v4}"/>
    <param name="rtp-secure-media" value="true"/>
    <param name="rtp-secure-media-suites" value="AES_CM_128_HMAC_SHA1_80"/>

    <!-- Codecs conformes FFTelecoms -->
    <param name="inbound-codec-string" value="PCMA"/>
    <param name="outbound-codec-string" value="PCMA"/>

    <!-- T.38 Fax -->
    <param name="fax-enable-t38" value="true"/>
    <param name="fax-enable-t38-request" value="true"/>

    <!-- PRACK (100rel) -->
    <param name="enable-100rel" value="true"/>

    <!-- Session Timer (RFC 4028) -->
    <param name="enable-timer" value="true"/>
    <param name="session-timeout" value="1800"/>
    <param name="minimum-session-expires" value="90"/>

    <!-- Identité -->
    <param name="send-pai" value="true"/>
    <param name="caller-id-type" value="pid"/>

    <!-- Pas d'enregistrement sur une interco -->
    <param name="accept-blind-reg" value="false"/>
    <param name="manage-presence" value="false"/>

    <!-- NAT — pas de NAT sur une interco directe -->
    <param name="apply-nat-acl" value="none"/>
  </settings>

  <!-- Gateway vers l'opérateur distant -->
  <gateways>
    <gateway name="operateur-distant">
      <param name="realm" value="sip.operateur-distant.fr"/>
      <param name="proxy" value="sbc.operateur-distant.fr"/>
      <param name="transport" value="tls"/>
      <param name="register" value="false"/>
      <param name="caller-id-in-from" value="false"/>
    </gateway>
  </gateways>
</profile>

3. ACL — Restreindre l'accès

L'interconnexion SIP doit être restreinte aux IP de l'opérateur distant :

<!-- /etc/freeswitch/autoload_configs/acl.conf.xml -->
<list name="interco-operateur" default="deny">
  <!-- IP du SBC opérateur distant -->
  <node type="allow" cidr="203.0.113.10/32"/>
  <node type="allow" cidr="203.0.113.11/32"/>
</list>

Appliquer l'ACL au profil :

<param name="apply-inbound-acl" value="interco-operateur"/>

4. P-Asserted-Identity

Le profil FFTelecoms exige l'envoi du P-Asserted-Identity dans chaque INVITE. FreeSWITCH le gère nativement quand send-pai est activé.

Dans le dialplan, vous pouvez forcer l'identité :

<action application="set" data="sip_h_P-Asserted-Identity=<sip:+33XXXXXXXXX@votre-domaine.fr>"/>

Appels internationaux entrants

Le profil v3.4 exige d'indiquer systématiquement l'origine internationale des appels entrants, même quand le CLI est un numéro français (ex : abonné en roaming) :

<!-- Marquer les appels internationaux entrants -->
<extension name="mark_international">
  <condition field="${sip_h_X-International-Origin}" expression="^true$">
    <action application="set" data="international_call=true"/>
  </condition>
</extension>

5. MAN / STIR-SHAKEN

Le profil v3.4 intègre les exigences du MAN (Mécanisme d'Authentification des Numéros). Chaque INVITE sortant doit contenir un header Identity avec un jeton STIR/SHAKEN signé.

Voir notre article dédié : MAN : comprendre le Mécanisme d'Authentification des Numéros

6. Gestion des erreurs SIP

Le profil v3.4 impose de ne pas réessayer automatiquement un appel après réception d'une erreur SIP à l'interface FFTelecoms :

<!-- Dialplan : ne pas retry sur erreur -->
<extension name="no_retry_on_error">
  <condition field="destination_number" expression="^(\d+)$">
    <action application="set" data="bridge_early_media=true"/>
    <action application="set" data="bypass_media=false"/>
    <action application="set" data="continue_on_fail=false"/>
    <action application="bridge" data="sofia/fftelecoms/${destination_number}@operateur-distant"/>
  </condition>
</extension>

7. 181 Call Forwarding

Le profil interdit de relayer le numéro de renvoi dans une réponse 181 reçue d'opérateurs en aval. FreeSWITCH ne génère pas de 181 par défaut, mais si vous utilisez le call forwarding, assurez-vous de ne pas propager cette information vers l'interface FFTelecoms :

<action application="set" data="sip_suppress_181=true"/>

8. NG eCall (appels d'urgence véhicules)

Le profil v3.4 ajoute le support des appels d'urgence de nouvelle génération depuis les véhicules (NG eCall). Le MSISDN identifiant le véhicule doit être transmis dans le P-Asserted-Identity de l'INVITE initial.

FreeSWITCH achemine ces appels comme tout autre appel d'urgence, en s'assurant de préserver le P-Asserted-Identity d'origine.

9. RTT — Texte en temps réel

La compatibilité avec le texte en temps réel (RTT) est requise pour les appels entre opérateurs de l'UE (accessibilité). FreeSWITCH supporte le RTT via le codec T.140 :

<param name="inbound-codec-string" value="PCMA,t140"/>

10. Tests et validation

Vérifier le profil TLS

fs_cli -x "sofia status profile fftelecoms"
# Vérifier : TLS = true, Secure Media = true

Test d'appel avec sipp

sipp -sn uac -t l1 sbc.operateur-distant.fr:5061 \
    -s 0612345678 -m 1 -tls_cert /etc/freeswitch/tls/agent.pem

Vérifier les headers SIP

# Activer le SIP trace
fs_cli -x "sofia profile fftelecoms siptrace on"

# Vérifier la présence de :
# - P-Asserted-Identity
# - Identity (STIR/SHAKEN)
# - Supported: 100rel, timer

Checklist de conformité FFTelecoms v3.4

  • [ ] TLS 1.2+ sur le port 5061
  • [ ] SRTP AES_CM_128_HMAC_SHA1_80
  • [ ] Codec G.711a (PCMA) en priorité
  • [ ] T.38 pour le fax
  • [ ] PRACK (100rel) activé
  • [ ] Session Timer activé
  • [ ] P-Asserted-Identity envoyé
  • [ ] Header Identity (MAN/STIR-SHAKEN)
  • [ ] Pas de retry automatique sur erreur SIP
  • [ ] Pas de 181 forwarding
  • [ ] NG eCall supporté
  • [ ] RTT/T.140 supporté
  • [ ] ACL restrictive sur les IP de l'opérateur

Conclusion

La conformité au profil SIP FFTelecoms v3.4 est obligatoire pour tout opérateur français. FreeSWITCH, correctement configuré, répond à toutes les exigences techniques du profil.

Chez Technixis, nous accompagnons les opérateurs dans la mise en place de leurs interconnexions SIP conformes : configuration FreeSWITCH, tests d'interopérabilité, certification MAN et mise en production.

Besoin d'accompagnement ? Contactez-nous ou appelez le 0800 012 013.


Sources :
- FFTelecoms — Publication du profil SIP v3.4
- FFTelecoms — Spécification interface SIP v3.4 (PDF)

Aucun commentaire pour le moment. Soyez le premier !

Laisser un commentaire