voip rtp – real time transport protocol. rtp -real time transport protocol zo protocolo de...
TRANSCRIPT
VoIP
RTP – Real Time Transport Protocol
RTP -Real Time Transport Protocol
O Protocolo de transporte mais utilizado para aplicações é o TCP. , porém, para aplicações em tempo real, o TCP não possui as características desejadas.
Algumas funções do TCP o desqualificam para o seu uso como protocolo de transporte das aplicações de tempo real, como:
RTP -Real Time Transport Protocol 1 – O TCP é um protocolo ponto-a-ponto e
estabelece conexão entre dois pontos finais. No entanto não é concebido para transmissão multicast.
2 – O TCP inclui mecanismos de retransmissão de longos segmentos, que cheguem fora de ordem. Este tipo de mecanismo não é possível de ser usado em aplicações de tempo real.
3 – O TCP não contém mecanismos convenientes de associação de informação de temporização dos segmentos, que é outro requerimento de aplicações em tempo real.
RTP -Real Time Transport Protocol
Outro protocolo de transporte largamente usado é o UDP, ele não possui as duas primeiras características listadas, mas da mesma forma que o TCP, não provê informações de temporização. Sozinho, o UDP também não provê as ferramentas para as aplicações de tempo real.
RTP -Real Time Transport Protocol
Assim o IETF definiu um protocolo na RFC 1889 chamado RTP (Real Time Protocol), para o transporte da aplicação e um protocolo chamado RTPC (Real Time Control Protocol) para o controle do RTP.
O Transporte do Tráfego em Tempo Real difere do tráfego em alta velocidade, como na figura a seguir
RTP -Real Time Transport Protocol
A Figura ilustra um esquema típico em tempo real. Nela, um servidor gera áudio à ser transmitido a 64
kbps. O sinal de áudio digitalizado é transmitido em pacotes de 160
bytes de dados, assim cada pacote é transmitido à cada 20ms. Estes
pacotes são entregues a uma Internet encaminhados à um PC multimídia, que recompõe este
áudio no instante que chega. No entanto, devido ao delay variável imposto pela Internet, os pacotes
não chegam à cada 20ms no destino. Para compensar isto, os
pacotes que chegam são bufferizados, atrasados um pouco, e então liberados à taxa constante ao software que recompõe o áudio.
Requerimentos para Comunicação em Tempo Real
Baixo Jitter Baixa Latência Habilidade para integrar facilmente serviços
em tempo real e não em tempo real. Adaptabilidade para dinamicamente mudar
as condições de tráfego da rede
Boa performance para redes grandes com um número grande de conexões
Requerimentos modestos de bufferização dentro da rede
Alta capacidade efetiva de utilização Baixo overhead em bits de header por
pacote Pequeno processamento do overhead por
pacote dentro da rede e nos sistemas finais.
Requerimentos para Comunicação em Tempo Real
RTP - Arquitetura
Header Fixo RTP
RTP header format:
V
00
01
02
03
04
05
06
07
08
09
10
11
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
12
P X CC M Payload Type Sequence Number
Timestamp
Synchronization Source Identifier
V = VersionP = PaddingX = ExtensionCC = CSRC CountM = Marker
Contributing Source Identifiers (0 … 15 entries)
RTP – Real Time Protocol
Version (2 bits) : A versão atual é 2.
Padding (1 bit): Indica quando octetos de enchimento
aparecerem no fim do payload. O enchimento é usado se a aplicação requer que o payload seja um inteiro múltiplo de algum tamanho, tal como um múltiplo de 32 bits (4 bytes)
RTP – Real Time Protocol
Extension (1bit): Se setado, o header fixado é seguido
por exatamente um header estendido, que é usado para extensões experimentais do RTP
CSRC Count (4 bits): O número de identificadores de CSRC
que seguem o header fixo
RTP – Real Time Protocol
Marker (1 bit): A interpretação do Marker bit depende do tipo
de payload; ele é usado para identificar um limite no fluxo de dados. Para sinais de vídeo, é setado para marcar o fim de um quadro de imagem. Para sinais de áudio é setado para marcar o início de um surto de voz.
Payload Type (7 bits): Identifica o formato de um payload RTP, que
seguirá o header.
RTP – Real Time Protocol
Sequence Number (16 bits): Cada fonte começa com um número de seqüência
randômico, que é incrementado para cada pacote RTP transmitido. Isso permite a detecção de perda de pacotes e geração de estatísticas de timestamp. Um conjunto de pacotes podem ter um mesmo timestamp se são gerados logicamente no mesmo tempo, por exemplo vários pacotes levando o mesmo quadro de vídeo
Timestamp (32 bits): Corresponde ao instante de geração do primeiro octeto
dos dados do payload, a unidade de tempo deste campo depende do tipo de payload. Os valores devem ser gerados por um clock interno.
RTP – Real Time Protocol
Synchronization Clock Identifier: Um valor gerado randomicamente que
identifica de maneira única a fonte dentro de uma sessão.
RTP – Infos após Header fixo
Contributing Source Identifier: Identifica uma fonte de contribuição
para o payload. Usada na função mixer.
RTCP – Real Time Control Protocol
Definição: O protocolo RTP é usado apenas para a
transmissão de dados do usuário, tipicamente em conexões multicast entre todos os participantes em uma sessão. Um protocolo separado de controle (RTCP) também opera de modo multicast para prover a realimentação para as fontes do RTP assim como para todos os participantes de uma sessão.
O RTCP usa o mesmo serviço de transporte do UDP porém em porta diferente. Cada participante manda periodicamente um pacote RTCP para todos os outros participantes da sessão.
A RFC 1889 mostra quatro funções desenvolvidas pelo RTCP:
RTPC – Tipos de pacotes definidos:
Os pacotes podem ser:
Sender Report (SR) Receiver Report (RR) Source Description (SDES) Goodbye (BYE) Application Specific
RTPC – Informações nos pacotes
Informações genéricas: Version (2 bits): Versão atual 2 Padding (1 bit): Se setado significa que
este pacote contém bytes de enchimento e é o último desta transmissão. Neste caso, o último byte do enchimento contém o número de bytes de enchimento.
Count (5 bits): O número de blocos de relatório de recepção contido em um pacote SR ou RR, ou o número de fontes contidas em um pacote SDES ou BYE.
RTPC – Informações nos pacotes
Informações genéricas, cont.: Packet Type (8bits): Identifica o tipo
de pacote RTCP. Lenght (16 bits): Contado em
agrupamentos de 32 bits.Em adição, os pacotes RR e SR
contém os seguintes campos: Synchronization Source Identifier:
Identifica a fonte do pacote RTCP.
Header de um Pacote RTPC
01
00
02
03
04
05
06
07
09
08
10
11
12
13
14
15
17
16
18
19
20
21
22
23
25
24
26
27
28
29
30
31
V P RC PT=SR=200 length
SSRC of sender
NTP timestamp, most signficant word
NTP timestamp, least signficant word
RTP timestamp
sender's packet count
sender's octet count
hea
der
sen
der
info
V = version
P = padding
RC = reports count
PT = packet type
SR = sender report
SSRC = synchronisation source
NTP = network time protocol
Sender Report:
Sender Report (SR):
Os receptores RTCP provêem uma realimentação da qualidade usando um pacote Sender Report (SR) ou Receiver Report (RR), dependendo se o receptor é também um transmissor durante esta sessão. O campo Sender Information Block inclui os seguintes campos:
O campo Sender Information Block
NTP Timestamp (64 bits): Este campo é usado para, em combinação com os timestamps retornados dos relatórios de recepção para medir o tempo de percurso entre esses receptores.
RTP Timestamp (32 bits): Este campo é usado para criar timestamps em pacotes de dados RTP.
Senders Packet Count (32 bits): Número total de pacotes RTP transmitidos pelo transmissor nesta sessão.
Senders Object Count (32 bits): Número total de octetos de payload transmitidos pelo transmissor nesta sessão.
O campo Sender Information Block, cont.
Seguindo o bloco de informação do transmissor existem zero ou mais blocos reception report. Um bloco é incluído para cada fonte em que este participante tenha recebido dados durante esta sessão. Cada bloco desses possui os seguintes campos: SSRC_n (32 bits): Identifica a fonte referida por
este bloco de relatório. Fraction Lost (8 bits): A fração de pacotes de
dados RTP desta fonte perdidos desde que o pacote SR ou RR imediatamente anterior foi transmitido.
Cumulative Number of Packets Lost (24 bits): Número total de pacotes RTP desta fonte perdidos desde o início desta sessão.
O campo Sender Information Block, cont.
Extended Highest Sequence Number Received (32 bits): Os 16 bits menos significativos contém o maior número de seqüência dos pacotes RTP recebidos desta fonte. Os 16 bits menos significativos mostra o número de vezes que o número de seqüência foi resetado.
Interarrival Jitter (32 bits): Contém uma estimativa do jitter experimentado pelos pacotes RTP nesta sessão.
Last SR Timestamp (32 bits): Contém o último Timestamp do Bloco SR recebido da fonte.
Delay Since Last SR (32 bits): O delay, expresso em frações de 2-16 segundos, entre a recepção do último SR da fonte n e a transmissão deste relatório.
Receiver Report
O formato dos pacotes RR é o mesmo que o SR, exceto que o campo Packet Type possui outro valor e não há informações de transmissor.
Receiver Report
01
00
02
03
04
05
06
07
09
08
10
11
12
13
14
15
17
16
18
19
20
21
22
23
25
24
26
27
28
29
30
31
V P RC PT=RR=201 length
SSRC of sender
SSRC-1 (SSRC of first source)
cumulative number of packets lostfraction lost
extended highest sequence number received
interarrival jitter
last SR
delay since last SR
hea
der
rep
ort
blo
ck 1
Source Description:
O pacote Source Description (SD) é usado por uma fonte para prover mais informações sobre si. O pacote consiste de um header de 32 bits seguido de zero ou mais comandos, cada um dos quais contém informações de descrição da fonte.
Goodbye:
O pacote BYE indica que um ou mais fontes não estão mais ativas. Isto é usado pelos receptores para deixar de contar o silêncio dessas fontes como falha de comunicação.