Pergunta

Eu queria saber por que UDP é usado na RTP, em vez de TCP?. Maior VoIP Ferramentas usadas somente UDP como eu cortei algumas das VoIP OSS.

Foi útil?

Solução

Como DJ apontou, TCP é sobre a obtenção de um fluxo de dados confiável, e vai abrandar transmissão e re-transmissão corrompido pacotes, a fim de conseguir isso.

UDP não se preocupa com a confiabilidade da comunicação, e não irá diminuir ou re-transmissão de dados.

Se seu aplicativo precisa de um fluxo de dados confiável, por exemplo, para recuperar um arquivo de um servidor web, você escolhe TCP.

Se a sua aplicação não se preocupa com pacotes corrompidos ou perdidos, e você não precisa suportar a sobrecarga adicional para fornecer a confiabilidade adicional, você pode escolher UDP vez.

VOIP não é significativamente melhorada pela transmissão de pacotes de confiança, e de fato, em alguns casos, as coisas em TCP como retransmissão e backoff exponencial qualidade VOIP pode realmente prejudicar. Portanto, UDP foi uma escolha melhor.

Outras dicas

Um monte de boas respostas foram dadas, mas eu gostaria de apontar uma coisa fora explicitamente:

Basicamente, um fluxo de dados completo é uma coisa agradável a ter em tempo real de áudio / vídeo, mas não é estritamente necessário (como outros têm para fora pontas):

O fato importante é que alguns dados que chega tarde demais é inútil. Que bom é os dados em falta para um quadro que deveria ter sido exibido um segundo atrás?

Se você fosse usar TCP (que também garante a ordem correta de todos os dados), então você não seria capaz de chegar aos dados mais up-to-date até o antigo é transmitida corretamente. Isto é duplamente ruim: você tem que esperar para a re-transmissão dos dados antigos e os novos dados (que agora está atrasado) vai provavelmente ser tão inútil

.

Assim RTP faz algum tipo de transmissão de melhor esforço em que ele tenta transferir todos os dados disponíveis no momento, mas não tenta dados voltar a transmitir o que foi perdido / corrompido durante a transferência (*). Ele só vai com a vida e as esperanças de que os dados atuais mais importante chega lá corretamente.

(*) na verdade eu não sei as especificidades da RTP. Talvez ele não tentar re-transmissão, mas se isso acontecer, então não vai ser tão agressivo como TCP é (que nunca vai aceitar qualquer perda de dados).

Os outros estão corretos, no entanto, a não realmente dizer a verdadeira razão pela qual. Saua tipo de dicas para ele, mas aqui está uma resposta mais completa.

Áudio e Vídeo é em tempo real. Se você estiver ouvindo rádio, ou assistindo TV, e o sinal é interrompido, ele não pegar onde você parou .. você está apenas "observar" o sinal como córregos, e se você não pode observar -lo a qualquer momento, você perdê-lo.

A razão é simples. Demora. VOIP se esforça muito para minimizar a quantidade de atraso a partir do momento que alguém fala em uma extremidade e obtê-lo em seu fim, e sua resposta de volta. Caso contrário, como erros ocorreram, a quantidade de atraso entre o momento em que a pessoa falou e quando o sinal foi recebido seria continuamente crescer até tornar-se inútil.

Lembre-se, cada atraso de uma retransmissão tem de ser repetido, e que faz com que mais dados a ser adiada, em seguida, outro erro causa um atraso ainda maior. A única solução viável é a de simplesmente descartar quaisquer dados que não podem ser visualizados em tempo real.

A 1 segundo de atraso de retransmissão significaria que seria agora um segundo a partir do momento eu disse algo até que você ouviu. Um segundo 1 segundo de atraso significa agora é 2 segundos a partir do momento que eu digo algo até que você ouvi-lo. Esta é cumulativo porque os dados são reproduzidos na mesma proporção em que é falado, e assim por diante ...

RTP podia ser orientado a conexão, mas então ele teria que cair (ou ignorar) de dados para manter-se com erros de retransmissão de qualquer maneira, então porque se preocupar com a sobrecarga extra?

pacotes Tecnicamente RTP podem ser intercaladas através de uma conexão TCP. Há lotes de grandes respostas dadas aqui. Duas pequenas pontos adicionais:

RFC 4588 descreve como se pode usar a retransmissão com os dados RTP. A maioria dos clientes que recebem fluxos RTP empregam um buffer para conta para jitter na rede que é normalmente 1-5 segundos de duração e que significa que há tempo disponível para a retransmissão para receber os dados desejados.

tráfego RTP podem ser intercaladas através de uma conexão TCP. Na prática, quando isso é feito, a diferença entre Interleaved RTP (ou seja, através de TCP) e RTP enviado sobre UDP é a forma como estes dois executar através de uma rede com perdas com largura de banda suficiente disponível para o usuário. O fluxo intercalado TCP vai acabar sendo jerky como o jogador espera continuamente em um estado de buffer para pacotes para chegar. Dependendo do leitor pode avançar para alcançá-lo. Com uma conexão RTP você receberá artefatos (manchas / lacrimejamento) no vídeo.

UDP é muitas vezes usado para vários tipos de tráfego em tempo real que não precisam de ordenação estrita para ser útil. Isso ocorre porque TCP impõe uma ordenação antes de passar dados para um aplicativo (por padrão, você pode contornar isso definindo o ponteiro URG, mas ninguém parece nunca fazer isso) e que pode ser altamente indesejável em um ambiente onde você em vez obter dados em tempo real atuais do que obter dados antigos de forma confiável.

RTP é bastante insensível à perda de pacotes, por isso não requer a confiabilidade do TCP.

UDP tem menos sobrecarga para os cabeçalhos de modo que um pacote pode transportar mais dados, de modo que a largura de banda de rede é utilizada de forma mais eficiente.

UDP fornece transmissão de dados rápida também.

Assim, UDP é a escolha óbvia em casos como este.

Além de todos os outros agradável e respostas corretas este artigo dá uma boa compreensão sobre as diferenças entre TCP e UDP.

UDP é usado sempre que os dados é enviado, que não precisam ser exatamente recebido no alvo, ou se nenhuma conexão estável é necessária.

TCP é usado se as necessidades de dados a ser exatamente recebido, bit a bit, sem perda de bits.

Para Vídeo e Som de streaming, alguns pedaços que são perdidos no caminho não afetam o resultado de uma forma, que é mentionable, alguns pixels falhando em uma foto de um córrego, nada que afeta um usuário, em DVDs perdidos taxa de bits é maior.

apenas uma observação: Cada pacote enviado em um fluxo RTP é dado um número acima do que seus predecessor.This permite thr destino para determinar se todos os pacotes estão em falta. Se um pacote é mising, a melhor ação para o destino a tomar é para aproximar o vaue faltando por interpolação. Retranmission não é uma opção proctical desde o pacote retransmitido seria tarde demais para ser útil.

Eu gostaria de adicionar rapidamente ao que Matt H disse em resposta a resposta de Stobor. Matt H mencionado que a RTP sobre UDP pacotes podem ser checksum'ed modo que, se eles estão corrompidos, eles vão ficar reenviado. Este é realmente um recurso opcional na maioria dos PBXs. No Asterisk, por exemplo, você pode ativar / desativar somas de verificação em seu RTP sobre UDP tráfego no arquivo de configuração rtp.conf com a seguinte linha:

rtpchecksums=yes ; or no if you prefer

Felicidades!

O Real-time Transport Protocol é um protocolo de rede usado para entregar streaming de mídia de áudio e vídeo através da internet, permitindo assim que o Voice Over Internet Protocol (VoIP).

RTP é geralmente usado com um protocolo de sinalização, tal como SIP, que define-se conexões entre a rede. aplicações RTP pode usar o Transmission Control Protocol (TCP), mas a maioria usa o User Datagram Protocol (UDP) em vez porque UDP permite a entrega mais rápida de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top