Discussion utilisateur:Gfa/STUN

De Wiki JabberFR
Révision datée du 3 février 2010 à 22:57 par Nyco (discussion | contributions) (indentation à la XEP, pour plus de lisibilité)
Aller à la navigation Aller à la recherche

Principe

STUN est un système client/serveur permettant de faire traverser les packets UDP au travers des routeurs NAT, très répandus ( inclus dans les "Box" d'opérateurs ADSL). Pour la VoIP avec Jabber (par exemple Jingle), afin de faire transiter la voix, les clients ont besoin d'établir une connexion entre eux. Hélas, dans la plupart des cas, les NAT gênent la négociation permettant d'établir cette connexion.

Voici une négociation gênée par un NAT

Demande :

<iq type="set"
    to="gfa@jabber.gnubox.net/PsiLaptop"
    id="aac1a" >
  <jingle xmlns="urn:xmpp:jingle:1"
          initiator="gfa85@im.apinc.org/Psi"
          action="session-initiate"
          sid="kQVmbTlykr8RnXFc" >
    <content creator="initiator"
             name="A"
             senders="both">
      <description xmlns="urn:xmpp:jingle:apps:rtp:1"
                   media="audio">
        <payload-type id="110"
                      name="SPEEX"
                      clockrate="16000" />
      </description>
    <transport xmlns="urn:xmpp:jingle:transports:ice-udp:1"
               pwd="YPCRsM3Lzqq0NqYg0edogE"
               ufrag="VvCJ" />
    </content>
  </jingle>
</iq>

Réponse :

<iq from="gfa@jabber.gnubox.net/PsiLaptop"
    type="result"
    xml:lang="fr"
    to="gfa85@im.apinc.org/Psi"
    id="aac1a" />

Négociation provenant de l'appelant :

<iq type="set"
    to="gfa@jabber.gnubox.net/PsiLaptop"
    id="aac2a" > 
  <jingle xmlns="urn:xmpp:jingle:1"
          action="transport-info"
          sid="kQVmbTlykr8RnXFc" >
    <content creator="initiator"
             name="A" >
      <transport xmlns="urn:xmpp:jingle:transports:ice-udp:1"
                 pwd="YPCRsM3Lzqq0NqYg0edogE"
                 ufrag="VvCJ" >
        <candidate generation="0"
                   network="0"
                   port="8010"
                   protocol="udp"
                   component="1"
                   foundation="0"
                   ip="192.168.0.10"
                   priority="2130706431"
                   type="host"
                   id="2nSFnufIoR" />
        <candidate generation="0"
                   network="0"
                   port="8011"
                   protocol="udp"
                   component="2"
                   foundation="0"
                   ip="192.168.0.10"
                   priority="2130706430"
                   type="host"
                   id="m6GrM9lWOs" />
      </transport>
    </content>
  </jingle>
</iq>

Négociation, provenant de l'appelé :

<iq from="gfa@jabber.gnubox.net/PsiLaptop"
    type="set"
    xml:lang="fr"
    to="gfa85@im.apinc.org/Psi"
    id="aaeba" >
  <jingle xmlns="urn:xmpp:jingle:1"
          action="transport-info"
          sid="kQVmbTlykr8RnXFc" >
    <content creator="initiator"
             name="A" >
      <transport xmlns="urn:xmpp:jingle:transports:ice-udp:1"
                 pwd="MAkderMeG9g0JfsFDpN8cy"
                 ufrag="LYaR" >
        <candidate generation="0"
                   network="0"
                   port="8010"
                   protocol="udp"
                   component="1"
                   foundation="0"
                   ip="192.168.0.12"
                   priority="2130706431"
                   type="host"
                   id="PoO5Qsg2gi" />
        <candidate generation="0"
                   network="0"
                   port="8011"
                   protocol="udp"
                   component="2"
                   foundation="0"
                   ip="192.168.0.12"
                   priority="2130706430"
                   type="host"
                   id="qULtGeTTiV" />
      </transport>
    </content>
  </jingle>
</iq>

On remarquera les IP locales ! Inexploitables dans le cadre d'internet !