40 Chapitre 2. Etat <strong>de</strong> l'art et principales notionsvoie <strong>de</strong> retour et faible latence, un mo<strong>de</strong> basé sur les acquittements sera plus ecaceen termes <strong>de</strong> compression qu'un mo<strong>de</strong> unidirectionnel. Cependant, si le réseau utilisécomporte une forte latence, ces mécanismes seront pénalisés au <strong>pro</strong>t d'un mo<strong>de</strong>unidirectionnel, indépendant <strong>de</strong> la latence du réseau.Des mécanismes permettant le basculement dynamique d'un mo<strong>de</strong> <strong>de</strong> compressionà un autre sont également dénis dans le standard, mais ne seront pas détaillés ici.Tout comme les mécanismes <strong>de</strong> compression précé<strong>de</strong>mment étudiés, ROHC dénit5 types <strong>de</strong> champs, selon leur variabilité : Les champs INFERRED non communiqués car déductibles d'autres paramètres. Les champs STATIC qui ne varient pas pour un ux <strong>de</strong> paquet. Lorsque un <strong>de</strong>ces champs varie, un paquet IR est envoyé. Les champs STATIC-DEF similaires, qui permettent l'i<strong>de</strong>ntication d'un ux <strong>de</strong>paquets (comme les adresses). Les champs STATIC-KNOWN qui sont <strong>de</strong>s valeurs connues car caractéristiquesd'un <strong>pro</strong>tocole Les champs CHANGING considérés comme variables.Par exemple, dans le cas <strong>de</strong> RTP/UDP/IP, la répartition <strong>de</strong> ces diérents champsest présentée dans la Table 2.1 :IPv6 (octets) IPv4 (octets)INFERRED 4 6STATIC 1.75 1.875STATIC-DEF 42.5 16STATIC-KNOWN 0.25 2.625CHANGING 11.5 13.5Total 60 40Table 2.1 Répartition <strong>de</strong>s champs RTP/UDP/IP dans ROHCAinsi, pour le <strong>pro</strong>tocole ROHC, seuls 34% <strong>de</strong> l'en-tête RTP/UDP/IP en IPv4 et19% en IPv6 sont considérés comme variables. Tout comme les <strong>pro</strong>tocoles précé<strong>de</strong>nts,ROHC permet <strong>de</strong> discriminer parmi les champs CHANGING diérents types <strong>de</strong>champs variables, notamment les champs variant d'un <strong>de</strong>lta quasi-constant. Ces mécanismespermettent ainsi d'obtenir <strong>de</strong>s performances <strong>de</strong> compression similaires auxautres <strong>pro</strong>tocoles.Lorsque le décompresseur détecte une erreur résiduelle dans le paquet courantreçu, celui-ci rejette simplement le paquet sans envoyer d'acquittement négatif (dansles mo<strong>de</strong>s O et R) ou changer d'état. Le décompresseur considère alors l'échec duCRC comme une erreur binaire dans le paquet reçu. Conformément à la machine àétats du décompresseur dénie sur la Figure 2.16, lorsque k 1 <strong>de</strong>s n 1 <strong>de</strong>rniers paquetsont vu leur CRC échouer, celui-ci passe <strong>de</strong> l'état Full Context à l'état Static Context.Dans ce cas, le décompresseur rejette tous les paquets jusqu'à réception d'un paquet
2.3. La compression d'en-têtes 41transportant un contexte dynamique entier. De la même manière, si le décompresseurse trouve dans l'état Static Context et si k 2 <strong>de</strong>s n 2 <strong>de</strong>rniers paquets transportant uncontexte dynamique entier échouent, le décompresseur se met dans l'état No Context.Dans l'état No Context, le décompresseur élimine tous les paquets jusqu'à réceptiond'un en-tête complet.Un <strong>de</strong>s points important du décompresseur ROHC est donc une bonne paramétrisation<strong>de</strong>s valeurs k et n. En eet, si <strong>de</strong>s valeurs trop sensibles sont utilisées, parexemple k 1 = n 1 = k 2 = n 2 = 1, le décompresseur réagira <strong>de</strong> manière excessive àtoute erreur, et entrainera une perte conséquente <strong>de</strong> paquets suite à ce changementd'état soudain. Ceci sera d'autant plus marqué que les timeouts sont importants dansles mo<strong>de</strong>s U et O et le RTT long dans les mo<strong>de</strong>s O et R. De même, un manque <strong>de</strong>sensiblité entraînera un manque <strong>de</strong> réaction et une longue invalidation en conséquence.Comme mécanisme <strong>de</strong> abilisation, ROHC <strong>pro</strong>pose une amélioration du mécanisme<strong>de</strong> type LSB. Dans un mécanisme <strong>de</strong> type LSB, lorsque une modication est àtransmettre, on envoie les k bits ayant été modiés, ou alors la plus petite valeur supérieureà k lorsque l'ensemble <strong>de</strong>s tailles permises est limité, par exemple <strong>de</strong>s champssur un ou <strong>de</strong>ux octets. Le fonctionnement <strong>de</strong> ce mécanisme est garanti lorsque lecompresseur et le décompresseur utilisent la même valeur <strong>de</strong> référence. Cependant,<strong>de</strong>ux scénarios peuvent empêcher le fonctionnement correct <strong>de</strong> ce codage. Dans unpremier cas, <strong>de</strong>s pertes <strong>de</strong> paquets peuvent apparaître. Dans ce cas, au <strong>pro</strong>chain paquetreçu par le décompresseur, celui-ci et le compresseur n'ont plus forcément lamême valeur <strong>de</strong> référence pour le codage LSB. Il n'est donc pas garanti ici que ledécodage fonctionne ce qui entraîne un perte <strong>de</strong> synchronisation. Dans un secondcas, <strong>de</strong>s erreurs bits résiduelles peuvent avoir modié le LSB porté par un paquet. Enconséquence, les <strong>pro</strong>chains paquets reçus ne se baseront pas sur la même valeur <strong>de</strong>référence que le compresseur et entraineront une <strong>pro</strong>pagation <strong>de</strong> l'erreur et une perte<strong>de</strong> synchronisation.An d'éliminer les erreurs d'interprétations dues à <strong>de</strong>s valeurs diérentes <strong>de</strong> référence<strong>de</strong> chaque côté, ROHC utilise un schéma appelé Window-LSB (W-LSB). Avecce mécanisme, le compresseur conserve en mémoire une fenêtre glissante <strong>de</strong> valeurs<strong>de</strong> référence. Lors <strong>de</strong> l'envoi d'un paquet original, le codage W-LSB va co<strong>de</strong>r sur lenombre minimal k 0<strong>de</strong> bits tels que l'interprétation <strong>de</strong> la valeur originale soit unique surl'intervalle couvert par l'ensemble <strong>de</strong>s valeurs <strong>de</strong> référence <strong>de</strong> la fenêtre. Ceci permetd'assurer que la décompression est correcte si tant est que le décompresseur a reçuune <strong>de</strong>s valeurs <strong>de</strong> référence <strong>de</strong> la fenêtre. Ceci permet donc <strong>de</strong> garantir <strong>de</strong> manièreecace la transmission <strong>de</strong>s valeurs, au prix d'une perte <strong>de</strong> compression mesurée.Le mécanisme W-LSB est illustré sur l'exemple suivant. Prenons l'exemple <strong>de</strong> latransmission <strong>de</strong>s valeurs : 124, 252, 276, 278 et supposons que la valeur 252 soitperdue lors <strong>de</strong> la transmission. Avec un codage <strong>de</strong> type LSB, le compresseur envoieles valeurs : 124, 252, 76, 8. Le codage a donc coûté ici 9 caractères. Cependant,le décompresseur déco<strong>de</strong>ra : 124, 176, 178. Avec un codage <strong>de</strong> type W-LSB et unetaille <strong>de</strong> fenêtre <strong>de</strong> <strong>de</strong>ux, le co<strong>de</strong>ur enverra 124, 252, 276, 78 soit 11 caractères mais