Groupe de travail Réseau	G.Camarillo, dynamicsoft Inc.	
Request for Comments : 3608 	B. Hoeneisen, Switch	
Catégorie : En cours de normalisation	octobre 2003	
Traduction Claude Brière de L’Isle		

Champ d’en-tête d’extension du protocole d’initialisation de session (SIP) pour la découverte de chemin de service durant l’enregistrement

Statut de ce mémoire
Le présent document spécifie un protocole Internet en cours de normalisation pour la communauté de l’Internet, et appelle à des discussions et des suggestions pour son amélioration. Prière de se reporter à l’édition actuelle du STD 1 "Normes des protocoles officiels de l’Internet" pour connaître l’état de normalisation et le statut de ce protocole. La distribution du présent mémoire n’est soumise à aucune restriction.
(La présente traduction incorpore les errata 2580, 2161, 2977, et 2980.)

Notice de copyright
Copyright (C) The Internet Society (2003). Tous droits réservés

Résumé
Le présent document définit un champ d’en-tête d’extension du protocole d’initialisation de session (SIP, Session Initiation Protocol) utilisé en conjonction avec les réponses aux demandes REGISTER pour fournir un mécanisme par lequel un registraire peut informer un agent d’utilisateur (UA, user agent) qui s’enregistre d’un chemin de service que l’UA peut utiliser pour demander des services sortants à partir du domaine du registraire.
Table des Matières
1. Terminologie	1
2. Fondements	1
3. Discussion du mécanisme	3
4. Déclaration d’applicabilité	3
5. Syntaxe	3
6. Usage	4
6.1 Procédures chez l’UA	4
6.2 Procédures chez le mandataire	4
6.3 Procédures chez le registraire	5
6.4 Exemples d’usage	5
7. Considérations sur la sécurité	8
8. Considérations relatives à l’IANA	9
9. Références normatives	9
10. Références pour information	9
11. Propriété intellectuelle	9
12. Adresses des auteurs	10
13. Déclaration complète de droits de reproduction	10

1.	Terminologie

Dans le présent document, les mots clés "DOIT", "NE DOIT PAS", "EXIGE", "DEVRA", "NE DEVRA PAS", "DEVRAIT", "NE DEVRAIT PAS", "RECOMMETE", "PEUT", et "FACULTATIF" sont à interpréter comme décrit dans le BCP 14, [RFC2119].

2.	Fondements

Le projet en partenariat de troisième génération (3GPP, Third Generation Partnership Project) a établi une exigence pour la découverte des mandataires de rattachement durant l’enregistrement SIP et a publié cette exigence dans la [RFC4083]. Le réseau 3GPP alloue dynamiquement un mandataire de service de rattachement à chaque adresse d’enregistrement (AOR, address-of-record). Cette allocation peut survenir en conjonction avec une opération REGISTER, ou hors bande lorsque nécessaire pour prendre en charge des services d’appel lorsque l’adresse d’enregistrement n’a pas d’enregistrements. Ce mandataire de service de rattachement peut fournir aussi bien des services entrants (qui se terminent à l’UA) que des services sortants (générés à l’UA).

Dans le cas entrant, l’identifiant de ressource universel (URI, Uniform Resource Identifier) des demandes SIP entrantes correspond à l’adresse d’enregistrement d’un usager associé au mandataire de service de rattachement. Le mandataire de service de rattachement transmet ensuite (dans la plupart des cas) la demande à l’adresse de contact enregistrée pour cet AOR. Un mécanisme pour traverser les mandataires requis entre le mandataire de service de rattachement et l’UA enregistré est  présenté dans la [RFC3327].

Le cas de session sortante (générée à l’UA) soulève un autre problème. Précisément, "comment l’UA sait-il quel mandataire de service utiliser et comment y arriver ?"

Plusieurs mécanismes ont été proposés dans les discussions, incluant :

1.	Les données de configuration dans l’UA. Cela soulève des questions de gestion et de mise à jour de configuration d’UA, en particulier si l’allocation de mandataire est très dynamique, comme dans les scénarios d’équilibrage de charge.

2.	L’utilisation d’un autre protocole, comme HTTP, pour obtenir les données de configuration d’un serveur de configuration dans le réseau de rattachement. Bien que fonctionnelle, cette solution exige des moteurs de protocole supplémentaires, un pare-feu complexe, de la redondance de fonctionnement, et un trafic supplémentaire significatif.

3.	L’utilisation de tableaux de recherche dans le réseau de rattachement, comme cela peut être fait pour les demandes entrantes dans certains réseaux 3G. Cela a une redondance relativement élevée en termes de fonctionnement de base de données.

4.	De retourner une réponse 302 indiquant le mandataire de service comme un nouveau contact, causant la retransmission de la demande par le nœud amont qui traite la réponse 302 (évidemment l’UA) vers le mandataire de service. Bien que cela diminue le fonctionnement des base de données du point précédent, cela permet explicitement la mise en antémémoire de la réponse 302 réduisant potentiellement par là la fréquence et le nombre des opérations de la base de données.

5.	D’effectuer une opération équivalente à l’enregistrement d’acheminement dans une transaction REGISTER entre l’UA et le registraire associé, puis de mémoriser ce chemin dans l’UA et de le réutiliser comme chemin de service sur les futures demandes générées depuis l’UA. Bien qu’efficace, cela contraint le chemin de service pour les opérations de mandataire à être congruent avec le chemin pris par le message REGISTER.

6.	De retourner les informations de chemin de service comme la valeur d’un champ d’en-tête dans la réponse REGISTER. Bien que similaire à l’alternative précédente, cette approche donne au registraire la capacité d’appliquer sélectivement sa connaissance de la topologie du réseau de rattachement en construisant le chemin de service.

Le présent document définit cette dernière approche : retourner les informations de chemin de service comme un champ d’en-tête dans la réponse REGISTER. Ce nouveau champ d’en-tête indique un "chemin pré chargé" que l’UA peut souhaiter utiliser si il demande des services au réseau mandataire associé au registraire qui génère la réponse.

Scénario
      UA1----P1-----|    |--R-------|
                    |    |          |
                    P2---|         DBMS
                    |    |          |
      UA2-----------|    |--HSP-----|

Dans ce scénario, on a un "réseau de rattachement" contenant le mandataire d’acheminement P2, le registraire R, le mandataire de service de rattachement HSP, et la base de données DBMS utilisée par R et HSP. P2 représente le "bord" du réseau de rattachement du point de vue de SIP, et peut être appelé un "mandataire bordure". UA1 est un UA externe derrière le mandataire P1. UA1 découvre P1 via le protocole de configuration dynamique d’hôte (DHCP, Dynamic Host Configuration Protocol) (c’est juste un exemple, et d’autres mécanismes autres que DHCP sont possibles). UA2 est un autre UA sur l’Internet, qui n’utilise pas un mandataire de sortie par défaut. On ne montre pas les éléments du système des noms de domaine (DNS) dans ce diagramme, mais on suppose qu’il est raisonnablement disponible dans la discussion. La mission est pour UA1 de découvrir HSP de sorte que les demandes sortantes de UA1 puissent être acheminées (à la discrétion de UA1) à travers HSP, recevant par là des services sortants de HSP.

3.	Discussion du mécanisme

Les UA peuvent inclure un champ d’en-tête Route dans une demande initiale pour forcer cette demande à visiter et potentiellement être servie par un ou plusieurs mandataires. Utiliser un tel chemin (appelé un "chemin de service" ou "chemin pré chargé") permet à un UA de demander des services d’un mandataire ou réseau de mandataires de rattachement spécifique. La question ouverte est "comment un UA peut-il découvrir quel chemin de service utiliser ?"

Le présent document définit un champ d’en-tête appelé "Service-Route" qui peut contenir un vecteur de chemin qui, si il est utilisé comme exposé ci-dessus, va diriger les demandes à travers une séquence spécifique de mandataires. Un registraire peut utiliser un champ d’en-tête Service-Route pour informer un UA d’un chemin de service qui, si il est utilisé par l’UA, va fournir des services d’un mandataire ou ensemble de mandataires associé à ce registraire. Le champ d’en-tête  Service-Route peut être inclus par un registraire dans la réponse à une demande REGISTER. Par conséquent, un UA qui s’enregistre apprend un chemin de service qui peut être utilisé pour demander des services d’un système auprès duquel il vient juste de s’enregistrer.

L’acheminement établi par le mécanisme Service-Route ne s’applique qu’aux demandes générées par l’agent d’utilisateur. C’est-à-dire, il ne s’applique qu’à l’UA qui a généré les demandes, et non aux demandes qui se terminent à cet UA.

Dit simplement, le registraire génère un chemin de service pour l’UA qui s’enregistre et le retourne dans la réponse à chaque demande REGISTER réussie. Ce chemin de service a la forme d’un champ d’en-tête Route que l’UA qui s’enregistre peut utiliser pour envoyer des demandes à travers le mandataire de service choisi par le registraire. L’UA utiliserait ce chemin en l’insérant comme champ d’en-tête Route pré chargé dans les demandes générées par l’UA destinées à l’acheminement à travers le mandataire de service.

Le mécanisme par lequel le registraire construit la valeur du champ d’en-tête est spécifique de la mise en œuvre locale et sort du domaine d’application du présent document.

4.	Déclaration d’applicabilité

Le mécanisme Service-Route est applicable lorsque :
1.	L’UA s’enregistre auprès d’un registraire.
2.	Le registraire a connaissance d’un mandataire de service qui devrait être utilisé par l’UA lorsque il demande des services du domaine du registraire. Cette connaissance peut résulter d’une allocation dynamique ou de quelque autre mécanisme qui sort du domaine d’application du présent document.
3.	Le ou les registraires ont une connaissance suffisante de la topologie, de la politique, et de la situation du réseau pour qu’un chemin de service raisonnable puisse être construit.
4.	Le chemin de service construit par le registraire est le même pour tous les contacts associés à une seule adresse d’enregistrement. Ce mécanisme ne fournit pas de chemins de service spécifiques du contact.
5.	Les autres mécanismes pour proposer un chemin de service à l’UA ne sont pas disponibles ou sont inappropriés pour l’utilisation dans l’environnement spécifique.

D’autres méthodes peuvent aussi être disponibles par lesquelles un UA peut être informé d’un chemin de service. De telles autres méthodes sortent du domaine d’application du présent document. La discussion du pourquoi on pourrait souhaiter allouer un chemin de service durant l’enregistrement ou de quand il pourrait être approprié de le faire sort du domaine d’application du présent document.

5.	Syntaxe

La syntaxe pour le champ d’en-tête Service-Route est :

Service-Route = "Service-Route" HCOLON sr-value *( COMMA sr-value)

sr-value = name-addr *( SEMI rr-param )

Noter que les valeurs du champ d’en-tête Service-Route DOIVENT se conformer à la syntaxe de l’élément Route comme défini dans la [RFC3261]. Comme il y est suggéré, de telles valeurs DOIVENT inclure le paramètre d’indicateur d’acheminement lâche ";lr" pour une pleine conformité à la [RFC3261].

L’usage admissible des champs d’en-tête est décrit dans le Tableau 2 de la [RFC3261]. Les ajouts suivants à ce tableau sont nécessaires pour Service-Route.

Ajout de Service-Route au Tableau 3 de SIP :

Champ d’en-tête	où	mandataire	ACK	BYE	CAN	INV	OPT	REG	PRA
Service-Route	2xx	ar	-	-	-	-	-	o	-

6.	Usage
6.1	Procédures chez l’UA

L’UA effectue un enregistrement comme d’habitude. La réponse REGISTER peut contenir un champ d’en-tête Service-Route. S’il en est ainsi, l’UA PEUT mémoriser la valeur du champ d’en-tête Service-Route en association avec l’adresse d’enregistrement pour laquelle la transaction REGISTER avait enregistré un contact. Si l’UA accepte des adresses d’enregistrement multiples, il peut être capable de mémoriser plusieurs chemins de service, un par adresse d’enregistrement. Si l’UA rafraîchit l’enregistrement, la valeur mémorisée du Service-Route est mise à jour conformément au champ d’en-tête Service-Route de la dernière réponse de classe 200. Si il n’y a pas de champ d’en-tête Service-Route dans la réponse, l’UA purge tout chemin de service pour cette adresse d’enregistrement mémorisée antérieurement par l’UA. Si la demande de réenregistrement est refusée ou si un enregistrement existant arrive à expiration et si l’UA choisit de ne pas se réenregistrer, l’UA DEVRAIT éliminer tout chemin de service mémorisé pour cette adresse d’enregistrement.

L’UA PEUT choisir de d’activer un chemin de service pour de futures demandes associées à une certaine adresse d’enregistrement pour laquelle un chemin de service est connu. Si il en est ainsi, il utilise le contenu du champ d’en-tête Service-Route comme champ d’en-tête Route pré chargé dans les demandes initiales sortantes [RFC3261]. L’UA DOIT préserver l’ordre, au cas où il y aurait plus d’un champ d’en-tête Service-Route ou valeur de champ d’en-tête.

Les chemins lâches peuvent interagir de façons intéressantes avec une politique d’acheminement. Les spécificités de la façon dont l’ensemble de chemins de service s’intègre à tout chemin par défaut exigé en local et à la politique locale dépendent de la mise en œuvre. Par exemple, certains appareils vont utiliser un acheminement lâche explicitement configuré en local pour atteindre le mandataire de prochain bond, et d’autres vont utiliser une règle d’acheminement de mandataire de sortie par défaut. Cependant, pour que le résultat fonctionne, la combinaison DOIT fournir un acheminement valide dans l’environnement local. En général, l’ensemble de chemins de service est ajouté à tout chemin configuré en local nécessaire pour sortir de la chaîne de mandataires d’accès. Les concepteurs de systèmes doivent faire correspondre la politique d’acheminement de service de leurs nœuds avec la politique d’acheminement SIP de base afin d’obtenir un système fonctionnel.

6.2	Procédures chez le mandataire

Le champ d’en-tête Service-Route est généralement traité comme tout autre champ d’en-tête inconnu par les mandataires intermédiaires. Ils le transmettent simplement vers la destination. Noter que, comme d’habitude, les mandataires intermédiaires qui auront besoin d’être traversés par de futures demandes au sein d’un dialogue peuvent enregistrer le chemin. Les mandataires ne devraient pas supposer qu’ils seront traversés par les futures demandes d’un dialogue simplement parce qu’ils apparaissent dans le champ d’en-tête Service-Route.

La question se pose de savoir si les mandataires qui traitent une réponse REGISTER peuvent s’ajouter eux-mêmes au chemin établi dans le champ d’en-tête Service-Route. Bien que ceci permettrait une construction dynamique des chemins de service, cela pose deux problèmes significatifs. Le premier est celui de la transparence, telle que vue par le registraire : les mandataires intermédiaires pourraient s’ajouter eux-mêmes à l’insu ou sans le consentement du registraire. Le second problème est l’interaction avec la sécurité de bout en bout. Si le registraire utilise les techniques de S/MIME pour protéger la réponse REGISTER, de tels ajouts seraient visible à l’UA comme des altérations "par interposition" dans la réponse. Par conséquent, les mandataires intermédiaires NE DEVRAIENT PAS altérer la valeur de Service-Route dans les réponses REGISTER, et si ils le font, l’UA NE DOIT PAS être obligé d’accepter l’altération.

Des considérations supplémentaires s’appliquent si un mandataire est à "double rattachement", ce qui signifie qu’il est connecté à deux (ou plus) réseaux différents de telle sorte que les demandes sont reçues sur une interface et mandatées à travers une autre interface réseau. Les mandataires qui mettent en œuvre le multi rattachement comme documenté précisément dans la [RFC3261] enregistrent le chemin d’une demande auprès de l’interface d’envoi. Lors du traitement de la réponse, ils remplacent la valeur du champ d’en-tête Record-Route qui représente l’interface sur laquelle était mandatée la demande par une nouvelle valeur qui représente l’interface sur laquelle ils vont mandater la réponse. Par conséquent, le vecteur de chemin vu par le serveur d’agent d’utilisateur (UAS, User Agent Server) n’est pas l’exact inverse du vecteur de chemin vu par le client d’agent d’utilisateur (UAC, User Agent Client). Bien que cela soit sans dommage en soi, cela complique les choses pour les nœuds qui utilisent le vecteur de chemin enregistré (selon la [RFC3327]) pour déterminer un chemin de service pour une future utilisation.

Au lieu de suivre la procédure de la [RFC3261], les mandataires utilisés avec Service-Route qui insèrent des valeurs de champ d’en-tête Record-Route ou Path DEVRAIENT enregistrer non pas une mais deux valeurs de chemin lors du traitement de la demande. La première valeur enregistrée indique l’interface receveuse, et la seconde indique l’interface d’envoi. Lors du traitement de la réponse, aucune modification du chemin enregistré n’est requise. Cette optimisation assure des chemins pleinement réversibles qui peuvent être effectivement utilisés dans la construction de chemins de service.

6.3	Procédures chez le registraire

Lorsque un registraire reçoit une demande REGISTER réussie, il PEUT choisir de retourner un ou plusieurs champs d’en-tête Service-Route dans la réponse de classe 200. La détermination d’inclure ce ou ces champs d’en-têtes dans la réponse de classe 200 et de quelles valeurs insérer est l’affaire de la politique locale et sort du domaine d’application du présent document.

Ayant inséré un ou des champs d’en-tête Service-Route, le registraire retourne la réponse de classe 200 à l’UA conformément aux procédures standard.

Une opération REGISTER qui effectue une recherche de liens (c’est-à-dire, aucun champ d’en-tête Contact n’est présent dans la demande) DEVRAIT retourner la même valeur de Service-Route que dans la précédente réponse REGISTER correspondante pour l’adresse d’enregistrement en question. Dans certains cas, le Service-Route peut être calculé de façon dynamique par le registraire plutôt que mémorisé, et la décision de recalculer ce chemin dans l’éventualité d’une recherche de liens revient à la mise en œuvre.

Note : Une opération de recherche de liens pourrait être utilisée par l’UA pour récupérer une valeur perdue de Service-Route. Autrement, un UA dans cette situation pourrait juste faire un nouveau REGISTER.

Certaines topologies de réseau PEUVENT exiger qu’un mandataire spécifique (par exemple, un mandataire pare-feu) soit traversé avant le mandataire de service de rattachement. Donc, un registraire avec la connaissance spécifique de la topologie du réseau PEUT retourner plus d’un champ ou élément d’en-tête Service-Route dans la réponse de classe 200 ; l’ordre est spécifié comme de haut en bas, ce qui signifie que l’entrée la plus élevée de Service-Route sera visitée en premier. De telles constructions sont spécifiques de la mise en œuvre et sortent du domaine d’application du présent document.

En général, le champ d’en-tête Service-Route contient des références aux éléments qui sont strictement inclus dans le domaine administratif du registraire et du mandataire de service de rattachement. Par exemple, considérons le cas où un usager quitte le réseau de "rattachement" et part dans un réseau "visité". Le registraire ne peut pas être supposé avoir connaissance de la topologie du réseau visité, de sorte que le Service-Route qu’il retourne contient des éléments du seul réseau de rattachement.

Noter que le ou les éléments de Service-Route insérés DOIVENT se conformer à la syntaxe d’un élément Route comme défini dans la [RFC3261]. Comme il y est suggéré, de tels élément de chemin DOIVENT inclure le paramètre Indicateur d’acheminement lâche ";lr" pour une pleine conformité à la [RFC3261].

6.4	Exemples d’usage

On présente un exemple dans le contexte du scénario présenté dans la section 2. Le diagramme du réseau est reproduit :

Scénario
      UA1----P1-----|    |--R-------|
                    |    |          |
                    P2---|         DBMS
                    |    |          |
      UA2-----------|    |--HSP-----|

6.4.1	Exemple de mécanisme dans la transaction REGISTER
Cet exemple montre la séquence de messages pour l’agent d’utilisateur UA1 qui s’enregistre à  HOME.EXAMPLE.COM en utilisant le registraire R. R retourne un Service-Route indiquant que UA1 peut utiliser le mandataire de service de rattachement HSP.HOME.EXAMPLE.COM pour recevoir des services sortants de HOME.EXAMPLE.COM.

Noter que certains champs d’en-tête (par exemple, Content-Length) et des descriptions de session sont omise pour une présentation plus courte et on l’espère plus lisible.

Séquence de messages pour REGISTER qui retourne un Service-Route:

F1 Register UA1 -> P1
 REGISTER sip:HOME.EXAMPLE.COM SIP/2.0
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKcR1ntRAp
 To: Lawyer <sip:UA1@HOME.EXAMPLE.COM>
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=981211
 Call-ID: 843817637684230@998sdasdh09
 CSeq: 1826 REGISTER
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
  . . .

F2 Register P1 -> P2
 REGISTER sip:HOME.EXAMPLE.COM SIP/2.0
 Via: SIP/2.0/UDP P1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKlJuB1mcr
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKcR1ntRAp
 To: Lawyer <sip:UA1@HOME.EXAMPLE.COM>
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=981211
 Call-ID: 843817637684230@998sdasdh09
 CSeq: 1826 REGISTER
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
  . . .

F3 Register P2 -> R
 REGISTER sip:HOME.EXAMPLE.COM SIP/2.0
 Via: SIP/2.0/UDP P2.HOME.EXAMPLE.COM:5060;branch=z9hG4bKvE0R2l07o2b6T
 Via: SIP/2.0/UDP P1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKlJuB1mcr
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKcR1ntRAp
 To: Lawyer <sip:UA1@HOME.EXAMPLE.COM>
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=981211
 Call-ID: 843817637684230@998sdasdh09
 CSeq: 1826 REGISTER
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
  . . .

F4 R exécute Register
 R Stores:
 For <sip:UA1@HOME.EXAMPLE.COM>
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>

F5 R calcule le chemin de service
Dans cet exemple, R est configuré statiquement pour référencer HSP comme un chemin de service, et R sait aussi que P2 est utilisé comme mandataire bordure fournisseur, donc :

 Service-Route: <sip:P2.HOME.EXAMPLE.COM;lr>, <sip:HSP.HOME.EXAMPLE.COM;lr>

F6 enregistre la résponse r -> P2

 SIP/2.0 200 OK
 Via: SIP/2.0/UDP P2.HOME.EXAMPLE.COM:5060;branch=z9hG4bKvE0R2l07o2b6T
 Via: SIP/2.0/UDP P1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKlJuB1mcr
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKcR1ntRAp
 To: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=87654
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=981211
 Call-ID: 843817637684230@998sdasdh09
 CSeq: 1826 REGISTER
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
 Service-Route: <sip:P2.HOME.EXAMPLE.COM;lr>, <sip:HSP.HOME.EXAMPLE.COM;lr>
  . . .

F7 enregistre la réponse P2 -> P1
 SIP/2.0 200 OK
 Via: SIP/2.0/UDP P1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKlJuB1mcr
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKcR1ntRAp
 To: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=87654
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=981211
 Call-ID: 843817637684230@998sdasdh09
 CSeq: 1826 REGISTER
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
 Service-Route: <sip:P2.HOME.EXAMPLE.COM;lr>, <sip:HSP.HOME.EXAMPLE.COM;lr>
  . . .

F8 enregistre la réponse P1 -> UA1
 SIP/2.0 200 OK
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKcR1ntRAp
 To: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=87654
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=981211
 Call-ID: 843817637684230@998sdasdh09
 CSeq: 1826 REGISTER
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
 Service-Route: <sip:P2.HOME.EXAMPLE.COM;lr>, <sip:HSP.HOME.EXAMPLE.COM;lr>
  . . .

F9 UA1 mémorise le chemin de service pour UA1@HOME.EXAMPLE.COM

6.4.2	Exemple de mécanisme dans la transaction INVITE
Cet exemple montre la séquence de messages pour une transaction INVITE générée de UA1 et arrivant finalement à UA2 en utilisant des services sortants de HOME.EXAMPLE.COM. UA1 s’est précédemment enregistré auprès de HOME.EXAMPLE.COM et est informé d’un chemin de service à travers HSP.HOME.EXAMPLE.COM. Le service fourni par HOME.EXAMPLE.COM est un service de "connexion", qui fournit un enregistrement de l’appel pour l’usage de UA1 (peut-être l’usager de UA1 est un avocat qui facture les appels de ses clients).

Noter que dans cet exemple UA1 et UA2 sont supposés être enregistrés dans le même réseau (HOME.EXAMPLE.COM). Il n’est généralement pas nécessaire d’utiliser le mécanisme de chemin de service décrit ici.

Séquence de messages pour INVITE utilisant Service-Route :

F1 Invite UA1 -> P1
 INVITE sip:UA2@HOME.EXAMPLE.COM SIP/2.0
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKnashds7
 To: Customer <sip:UA2@HOME.EXAMPLE.COM>
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=456248
 Call-ID: 38615183343@s1i1l2j6u
 CSeq: 18 INVITE
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
 Route: <sip:P2.HOME.EXAMPLE.COM;lr>, <sip:HSP.HOME.EXAMPLE.COM;lr>
  . . .
Note : P1 est choisi en utilisant la règle de "mandataire sortant" dans UA1.

F2 Invite P1 -> P2
 INVITE sip:UA2@HOME.EXAMPLE.COM SIP/2.0
 Via: SIP/2.0/UDP P1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bK34ghi7ab04
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKnashds7
 To: Customer <sip:UA2@HOME.EXAMPLE.COM>
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=456248
 Call-ID: 38615183343@s1i1l2j6u
 CSeq: 18 INVITE
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
 Record-Route: <sip:P1.VISITED.EXAMPLE.ORG;lr>
 Route: <sip:P2.HOME.EXAMPLE.COM;lr>,<sip:HSP.HOME.EXAMPLE.COM;lr>
  . . .
Note : P1 s’est ajouté lui-même au Record Route.

F3 Invite P2 -> HSP
 INVITE sip:UA2@HOME.EXAMPLE.COM SIP/2.0
 Via: SIP/2.0/UDP P2.HOME.EXAMPLE.COM:5060;branch=z9hG4bKiokioukju908
 Via: SIP/2.0/UDP P1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bK34ghi7ab04
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKnashds7
 To: Customer <sip:UA2@HOME.EXAMPLE.COM>
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=456248
 Call-ID: 38615183343@s1i1l2j6u
 CSeq: 18 INVITE
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
 Record-Route: <sip:P2.HOME.EXAMPLE.COM;lr>
 Record-Route: <sip:P1.VISITED.EXAMPLE.ORG;lr>
 Route: <sip:HSP.HOME.EXAMPLE.COM;lr>
  . . .
Note : HSP est choisi en utilisant une recherche DNS pour HSP au sein de HOME.EXAMPLE.COM. P2 s’est ajouté lui-même au Record-Route. P2 s’est supprimé de Route.

F4 HSP exécute le service
HSP identifie le service à exécuter à partir du profil mémorisé de UA1. Ses spécificités sortent du domaine du présent document. Pour cet exemple, HSP écrit un enregistrement pour le "livre journal de l’avocat", puis cherche l’AOR "sip:UA2@HOME.EXAMPLE.COM" et découvre que le contact courant pour UA2 est à l’hôte UAADDR2.HOME.EXAMPLE.COM. Cela sera l’URI de demande de l’INVITE du prochain bond.

F5 Invite HSP -> P2
 INVITE sip:UA2@UAADDR2.HOME.EXAMPLE.COM SIP/2.0
 Via: SIP/2.0/USP HSP.HOME.EXAMPLE.COM:5060;branch=z9hG4bKHSP10120323
 Via: SIP/2.0/UDP P2.HOME.EXAMPLE.COM:5060;branch=z9hG4bKiokioukju908
 Via: SIP/2.0/UDP P1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bK34ghi7ab04
 Via: SIP/2.0/UDP UADDR1.VISITED.EXAMPLE.ORG:5060;branch=z9hG4bKnashds7
 To: Customer <sip:UA2@HOME.EXAMPLE.COM>
 From: Lawyer <sip:UA1@HOME.EXAMPLE.COM>;tag=456248
 Call-ID: 38615183343@s1i1l2j6u
 CSeq: 18 INVITE
 Contact: <sip:UA1@UADDR1.VISITED.EXAMPLE.ORG>
 Record-Route: <sip:HSP.HOME.EXAMPLE.COM;lr>
 Record-Route: <sip:P2.HOME.EXAMPLE.COM;lr>
 Record-Route: <sip:P1.VISITED.EXAMPLE.ORG;lr>
  . . .
Note : P2 est choisi par la règle du mandataire sortant sur HSP. HSP s’est supprimé du Route.

INVITE se propage vers UA2 comme d’habitude.

7.	Considérations sur la sécurité

Il est possible aux mandataires entre l’UA et le registraire de modifier durant la transaction REGISTER la valeur du Service-Route retourné par le registraire, ou d’insérer un Service-Route même quand il n’en a pas été retourné un par le registraire. La conséquence d’une telle attaque est que les demandes futures faites par l’UA en utilisant le chemin de service peuvent être détournées sur ou à travers un nœud autre que celui qui serait normalement visité. Il est aussi possible aux mandataires sur le chemin de l’INVITE d’exécuter de nombreuses attaques différentes. Il est donc souhaitable d’appliquer une authentification transitive mutuelle en utilisant sips: ou d’autres mécanismes disponibles afin de prévenir de telles attaques.

L’URI "sips:" comme défini dans la [RFC3261] propose un mécanisme par lequel un UA peut demander la protection de l’intégrité du message et l’authentification mutuelle au niveau transport. Comme il n’est pas obligatoire que les mandataires modifient les messages, les corps S/MIME signés peuvent être utilisés pour fournir une protection de bout en bout de la valeur retournée.

Les systèmes qui utilisent Service-Route DEVRAIENT fournir la protection de l’intégrité du message et l’authentification mutuelle bond par bond. Les UA DEVRAIENT demander cette prise en charge en utilisant un URI "sips:". Les registraires qui retournent un Service-Route DOIVENT mettre en œuvre la protection de bout en bout en utilisant S/MIME et DEVRAIENT utiliser S/MIME pour protéger toutes ces réponses. Les UA qui reçoivent des Service-Route DEVRAIENT authentifier les corps S/MIME joints s’il en est de présents.

8.	Considérations relatives à l’IANA

Le présent document définit l’extension SIP de champ d’en-tête "Service-Route" qui a été incluse dans le registre des champs d’en-tête SIP défini dans la [RFC3261]. Le processus de changement pour SIP, [RFC3427] rend obligatoire que les champs d’en-têtes d’extension SIP généraux soient définis par une RFC en cours de normalisation. Le présent document fournit la définition requise.

L’enregistrement pour le champ d’en-tête Service-Route est le suivant :
Numéro de RFC : RFC 3608
Nom de champ d’en-tête : Service-Route
Forme compacte : aucune

9.	Références normatives

[RFC2119]	S. Bradner, "Mots clés à utiliser dans les RFC pour indiquer les niveaux d'exigence", BCP 14, mars 1997.

[RFC2223]	J. Postel, J. Reynolds, "Instructions pour les auteurs de RFC", octobre 1997. (Information)

[RFC3261]	J. Rosenberg et autres, "SIP : Protocole d'initialisation de session", juin 2002. (Mise à jour par RFC3265, RFC3853, RFC4320, RFC4916, RFC5393, RFC6665)

[RFC3327]	D. Willis, B. Hoeneisen, "Champ d'en-tête d'extension du protocole d'initialisation de session (SIP) pour enregistrer des contacts non adjacents", décembre 2002. (P.S.)

[RFC3427]	A. Mankin et autres, "Processus des changements au protocole d'initialisation de session (SIP)", BCP 67, décembre 2002. (Remplacée par RFC5727)

10.	Références pour information

[RFC4083]	M. Garcia-Martin, "Exigences du projet en partenariat de troisième génération (3GPP) pour la version 5 des entrées du protocole d'initialisation de session (SIP)", mai 2005. (Information)

11.	Propriété intellectuelle

L’IETF ne prend pas position sur la validité et la portée de tout droit de propriété intellectuelle ou autres droits qui pourrait être revendiqués au titre de la mise en œuvre ou l’utilisation de la technologie décrite dans le présent document ou sur la mesure dans laquelle toute licence sur de tels droits pourrait être ou n’être pas disponible ; pas plus qu’elle ne prétend avoir accompli aucun effort pour identifier de tels droits. Les informations sur les procédures de l’ISOC au sujet des droits dans les documents de l’ISOC figurent dans les BCP  78 et BCP 79.

Des copies des dépôts d’IPR faites au secrétariat de l’IETF et toutes assurances de disponibilité de licences, ou le résultat de tentatives faites pour obtenir une licence ou permission générale d’utilisation de tels droits de propriété par ceux qui mettent en œuvre ou utilisent la présente spécification peuvent être obtenues sur répertoire en ligne des IPR de l’IETF à http://www.ietf.org/ipr.

L’IETF invite toute partie intéressée à porter son attention sur tous copyrights, licences ou applications de licence, ou autres droits de propriété qui pourraient couvrir les technologies qui peuvent être nécessaires pour mettre en œuvre la présente 
norme. Prière d’adresser les informations à l’IETF à ietf-ipr@ietf.org.

12.	Adresses des auteurs

Dean Willis	Bernie Hoeneisen	
dynamicsoft Inc.	Switch	
3100 Independence Parkway	Limmatquai 138	
#311-164	CH-8001 Zurich	
Plano, TX  75075	Switzerlandtéléphone : +41 1 268 1515	
USA	mél : hoeneisen@switch.ch , b.hoeneisen@ieee.org 	
téléphone : +1 972 473 5455	URI:   http://www.switch.ch/ 	
mél : dean.willis@softarmor.com 		

13.	Déclaration complète de droits de reproduction

Copyright (C) The Internet Society (2002). Tous droits réservés.

Le présent document et ses traductions peuvent être copiés et fournis aux tiers, et les travaux dérivés qui les commentent ou les expliquent ou aident à leur mise en œuvre peuvent être préparés, copiés, publiés et distribués, en tout ou partie, sans restriction d’aucune sorte, pourvu que la déclaration de droits de reproduction ci-dessus et le présent paragraphe soient inclus dans toutes telles copies et travaux dérivés. Cependant, le présent document lui-même ne peut être modifié d’aucune façon, en particulier en retirant la notice de droits de reproduction ou les références à la Internet Society ou aux autres organisations Internet, excepté autant qu’il est nécessaire pour le besoin du développement des normes Internet, auquel cas les procédures de droits de reproduction définies dans les procédures des normes Internet doivent être suivies, ou pour les besoins de la traduction dans d’autres langues que l’anglais.

Les permissions limitées accordées ci-dessus sont perpétuelles et ne seront pas révoquées par la Internet Society ou ses successeurs ou ayant droits.

Le présent document et les informations y contenues sont fournies sur une base "EN L’ÉTAT" et le contributeur, l’organisation qu’il ou elle représente ou qui le/la finance (s’il en est), la INTERNET SOCIETY et la INTERNET ENGINEERING TASK FORCE déclinent toutes garanties, exprimées ou implicites, y compris mais non limitées à toute garantie que l’utilisation des informations ci encloses ne violent aucun droit ou aucune garantie implicite de commercialisation ou d’aptitude à un objet particulier.

Le financement de la fonction d’édition des RFC est actuellement fourni par l’Internet Society.