caminhada de código webrtc vinte e quatro (cálculo de atraso RTT)

I. Visão geral

Existem duas maneiras de calcular o RTT no WebRTC:
Com base no cálculo do remetente do fluxo de mídia. Calculado pelas informações transportadas no Relatório do Remetente (SR) e Relatório do Receptor (RR).
Com base no cálculo do receptor de fluxo de mídia. As informações do bloco de relatório de tempo de referência do receptor e do bloco de relatório DLRR são transmitidas por meio de relatórios estendidos RTCP RTCP (XR).
Os princípios de cálculo do RTT nos dois métodos são os mesmos. Apresente o método de cálculo XR, porque em alguns cenários, um dos dois endpoints envia apenas dados de mídia e o outro apenas recebe dados de mídia. Nesse cenário, a extremidade receptora não enviará SR, o que impossibilita o cálculo do RTT. Portanto, a maneira como o RTCP XR é calculado na extremidade receptora é estendida.

WebRTC obtém o parâmetro de atraso RTT em RTCPReceiver::OnPeriodicRttUpdate. Quando o cliente deste lado estiver enviando dados, obtenha o valor calculado com base no remetente do fluxo de mídia. Quando o cliente recebe apenas dados de mídia, ele obtém o valor calculado com base na extremidade receptora do fluxo de mídia.

 2. Cálculo baseado no remetente do fluxo de mídia 

atraso desde o último SR = T22 - T21

RTT = T12 - T11 - (T22 - T21)

RTT = T12 - T11 - Atraso desde o último SR

O remetente precisa empacotar o Sender Report (SR) e analisar e processar o protocolo Receiver Report (RR).

1. Acordo do Relatório do Remetente (SR)

Carimbo de data/hora NTP: 64 bits. Registra o timestamp NTP quando o SR foi enviado.

O exemplo do wireshark é o seguinte:

O código RTCPSender::BuildSR é implementado da seguinte forma: 

 

 2. Protocolo de Relatório do Receptor (RR)

último SR(LSR): 32 bits. Os 32 bits no meio do timestamp NTP de 64 bits (o timestamp NTP refere-se ao tempo absoluto, relativo ao tempo experimentado às 00:00:00 de 1º de janeiro de 1900, em segundos. O timestamp NTP completo é representado por 64 bits , e a metade esquerda dos 32 bits representa um número inteiro. A metade direita dos 32 bits representa o decimal, geralmente por uma questão de compacidade, os 32 bits do meio podem ser usados ​​para representação, neste momento o inteiro e o decimal são representados por 16 bits, respectivamente ). Registra o horário NTP do último SR enviado pelo SSRC_n de origem, obtido do timestamp NTP do registro SR recebido. O valor é 0 se nenhum SR foi recebido.
atraso desde o último SR (DLSR): 32 bits. Em unidades de 1/65536 (2^16) segundos. Ele registra o intervalo de tempo desde o recebimento do SR enviado pela fonte SSRC_n pela última vez até o envio do RR atualmente. O valor é 0 se nenhum SR foi recebido. 

O exemplo do wireshark é o seguinte:

  •   O receptor de mídia encapsula o pacote RR
PlatformThread::StartThread(void * param) 
->PlatformThread::Run() 
->ProcessThreadImpl2::Run(void * obj)
->ProcessThreadImpl2::Process() 
->ModuleRtpRtcpImpl2::Process() //配置周期发送RTCP的RR报文TimeToSendRTCPReport&SendRTCP
->RTCPSender::SendRTCP
->RTCPSender::ComputeCompoundRTCPPacket
->RTCPSender::BuildRR
->RTCPSender::CreateReportBlocks

A extremidade receptora envia pacotes RTCP RR periodicamente. last SR é o timestamp NTP da última mensagem RTCP SR recebida pelo receptor.

 

  •  O remetente de mídia analisa e calcula o valor RTT
ModuleRtpRtcpImpl2::IncomingRtcpPacket
->RTCPReceiver::IncomingPacket
->RTCPReceiver::IncomingPacket
->RTCPReceiver::ParseCompoundPacket
->RTCPReceiver::HandleReceiverReport
->RTCPReceiver::HandleReportBlock

A função RTCPReceiver::HandleReportBlock obtém o tempo NTP atual do remetente e, em seguida, extrai last_sr e delay_since_last_sr da mensagem RR para calcular o tempo de atraso RTT.

3. Cálculo baseado no receptor de stream de mídia

1, Bloco de Relatório de Tempo de Referência do Receptor 

 

Exemplo de Wireshark:

  2, Bloco de Relatório DLRR

Exemplo de Wireshark:

O receptor calcula o atraso RTT na função RTCReceiver::HandleXrDlrrReportBlock. 

 

 referência:

Pesquisa WebRTC: atraso de ida e volta de parâmetros estatísticos - Sword Crazy

Acho que você gosta

Origin blog.csdn.net/CrystalShaw/article/details/125934629
Recomendado
Clasificación