Che cos’è il ptime ?
Nell’ambito del VoIP SIP, il media attribute chiamato ptime indica il timer di pacchettizzazione. Esso è presente nel messaggio SDP e definisce la lunghezza di ogni pacchetto RTP che viene trasmesso.
Il ptime fornisce la durata temporale, espressa in millisecondi, del flusso multimediale presente nel pacchetto. Questo valore è pienamente significativo per i flussi multimediali di tipo audio ma può essere utilizzato anche con altri tipi di media se la cosa ha senso. Al fine di decodificare lo stream RTP non dovrebbe essere necessario conoscere il valore di ptime. Esso è normalmente inteso come una raccomandazione per la codifica/pacchettizzazione dell’audio. È un attributo di tipo media-level e non dipende dal set di caratteri.
l’attributo SDP ptime viene definito nell’ambito degli attributi SIP con la RFC 4566 nella sezione 6
Qual’è il significato del ptime?
Un valore di ptime più basso porta a più pacchetti al secondo, mentre un ptime più lungo porta a meno pacchetti al secondo.
Con i codec G711 e l’impiego della codifica dei dati PCM (Pulse Code Modulation),vengono prelevati 8000 campioni al secondo. Se ciascuno di questi 8.000 campioni al secondo fosse inviato su un singolo pacchetto, vedremmo un numero enorme di minuscoli pacchetti RTP in cui l’intestazione è molto più grande del payload.
Invece gli endpoint generalmente aspettano fino a quando non hanno un certo numero di questi campioni e poi li inviano contemporaneamente, ogni X millisecondi, come definito dal valore ptime.
Alcuni esempi:
- Un ptime di 1000 ms significa 1 pacchetto al secondo.
- Un ptime di 20 ms significa 50 pacchetti al secondo.
- Un ptime di 50 ms significa 20 pacchetti al secondo.
L’attributo maxptime
La RFC 4566 ha introdotto anche l’attributo di maxptime. Si tratta di un attributo opzionale che un endpoint può utilizzare per specificare il massimo valore di ptime che è in grado di supportare.
Alcuni endpoint meno recenti spesso non dispongono di molta memoria e/o potenza di elaborazione e preferiscono quindi ridurre il numero dei pacchetti al secondo da gestire. Per ottenere questo risultato impiegano valori di ptime più elevati. Su questo tipo di circuiti contraddistinti da qualità più bassa e maggiore presenza di jitter, si utilizzano dei buffer di compensazione per trattare correttamente l’audio in ingresso e quello da trasmettere in uscita.
I problemi di un eratto valore di ptime
L’utilizzo di valori di ptime non corrispondenti o addirittura fuori limite, dal punto di vista di un endpoint, può portare a strani problemi o comportamenti. E’ possibile ad esempio che l’endpoint squilli, risponda alla chiamata e riceva persino un 200 OK. In questa situazione può però accadere che, invece che trasmettere l’ACK, la controparte invii un BYE come conferma della propria incompatibilità a livello di ptime.
Purtroppo Nell’INVITE iniziale, l’attributo ptime non è obbligatorio. Ciò significa che esiste l’eventualità che la controparte abbia limiti ai valori ptime supportati. In questi casi accade sovente che l’endpoint riaggancia le chiamate subito dopo il 200 OK. La diagnosi di questo tipo di problematiche richiede spesso un notevole impegno dal punto di vista temporale. In casi di questo tipo è sempre suggeribile verificare i seguenti parametri:
- Valori di ptime presenti nella sezione SDP degli INVITE e dei 200 OK
- Tempo intercorrente tra i pacchetti RTP
- Differenza dei valori di timestamp tra i pacchetti RTP (per risalire al valore di ptime non dichiarato)
Un metodo abbastanza rapido per risolvere eventuali conflitti, sapendo che un endpoint supporta solo fino a 20ms, è quello di impostare l’attrinuto maxptime pari a 20ms.