12.07.2015 Views

RTP : protocole de transport - RFC

RTP : protocole de transport - RFC

RTP : protocole de transport - RFC

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>RFC</strong> 3550 page - 46 - Schulzrinne & autresséquentiels requis avant <strong>de</strong> déclarer qu'une source est vali<strong>de</strong> (paramètre MIN_SEQUENTIAL) et les autres variables sontinitialisée :init_seq(s, seq);s->max_seq = seq - 1;s->probation = MIN_SEQUENTIAL;Un s->probation différent <strong>de</strong> zéro marque la source comme pas encore vali<strong>de</strong> <strong>de</strong> sorte que l'état peut être éliminé après unebrève temporisation plutôt qu'une longue, comme exposé au paragraphe 6.2.1.Après qu'une source est considérée vali<strong>de</strong>, le type <strong>de</strong> charge utile est considéré vali<strong>de</strong> si il n'est pas supérieur àMAX_DROPOUT <strong>de</strong> plus <strong>de</strong> s->max_seq ni supérieur à MAX_MISORDER <strong>de</strong>rrière. Si le nouveau type <strong>de</strong> charge utileest <strong>de</strong> plus <strong>de</strong> max_seq modulo la gamme <strong>de</strong> type <strong>de</strong> charge utile <strong>RTP</strong> (16 bits) mais est plus petit que max_seq, il estrevenu à zéro et le compte (glissant) <strong>de</strong> cycles <strong>de</strong> type <strong>de</strong> charge utile est incrémenté. Une valeur <strong>de</strong> un est retournée pourindiquer un type <strong>de</strong> charge utile vali<strong>de</strong>.Autrement, la valeur zéro est retournée pour indiquer que la validation a échoué, et le mauvais type <strong>de</strong> charge utile plus 1est mémorisé. Si le prochain paquet reçu porte le prochain plus fort type <strong>de</strong> charge utile, il est considéré comme le débutvali<strong>de</strong> d'une nouvelle séquence <strong>de</strong> paquet vraisemblablement causée par un rejet étendu ou un redémarrage <strong>de</strong> source.Comme plusieurs cycles complets <strong>de</strong> type <strong>de</strong> charge utile peuvent avoir été manqués, la statistique <strong>de</strong>s pertes <strong>de</strong> paquet estremise à zéro.On donne les valeurs types <strong>de</strong>s paramètres, sur la base d'un temps maximum <strong>de</strong> désordre <strong>de</strong> 2 secon<strong>de</strong>s à 50 paquets/s et unrejet maximum <strong>de</strong> 1 minute. Le paramètre <strong>de</strong> rejet MAX_DROPOUT <strong>de</strong>vrait être une faible fraction <strong>de</strong> l'espace <strong>de</strong> 16 bits<strong>de</strong> type <strong>de</strong> charge utile pour donner une probabilité raisonnable que le nouveau type <strong>de</strong> charge utile après redémarrage netombe pas dans la gamme acceptable pour les types <strong>de</strong> charge utiles d'avant le redémarrage.void init_seq(source *s, u_int16 seq){s->base_seq = seq;s->max_seq = seq;s->bad_seq = <strong>RTP</strong>_SEQ_MOD + 1; /* ainsi seq == bad_seq est faux */s->cycles = 0;s->received = 0;s->received_prior = 0;s->expected_prior = 0;/* autre initialisation */}int update_seq(source *s, u_int16 seq){u_int16 u<strong>de</strong>lta = seq - s->max_seq;const int MAX_DROPOUT = 3000;const int MAX_MISORDER = 100;const int MIN_SEQUENTIAL = 2;/** la source n'est pas vali<strong>de</strong> tant que MIN_SEQUENTIAL paquets avec le type <strong>de</strong> charge utile en séquence* n'ont pas été reçus.*/si (s->probation) {/* le paquet est en séquence */si (seq == s->max_seq + 1) {s->probation--;s->max_seq = seq;si (s->probation == 0) {init_seq(s, seq);s->received++;return 1;}} autrement {s->probation = MIN_SEQUENTIAL - 1;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!