Encontrando quando um pacote UDP é realmente transmitido no roteador OpenWrt

0

Estou usando um roteador Linksys WRT 1900 ACS com o OpenWrt 15.05.1. Estou executando um programa em C que envia certos pacotes WiFi UDP Multicast em intervalos regulares (de 16 ms) e imprime a hora do sistema no stdout. Eu posso ver claramente as irregularidades no final do recebimento, mas elas não aparecem nos valores do tempo impresso.

Isso me leva a acreditar que algum nível de buffer / espera está acontecendo mesmo depois que a chamada do sistema sendto () retornar. Como posso obter a hora em que o pacote é realmente emitido?

Nota: As irregularidades são as mesmas em todos os receptores dessa rede multicast, portanto, o problema não está no lado do receptor.

    
por Nisheeth Lahoti 03.08.2017 / 15:06

1 resposta

0

Infelizmente, você não pode.

TL; DR

A função sendto retorna assim que o pacote é enviado para a pilha IP. A pilha IP do kernel irá processá-lo e tentará enviar o pacote através da sua interface WiFi.

Aqui está o problema, o atraso de transmissão WiFi é longo (em comparação com Ethernet com fio) e irregular. Aqui está um exemplo de qual latência você deve esperar:

Estegráficologarítmicomostraoatrasodotempodepingentremeuservidoremeuroteadoreentremeuservidoreumclientesemfio.Comopingébidirecional,alatênciaunidirecionaléprovavelmentecercademetadedisso.

Acomunicaçãocomfiomostraumtempodepingemtornode300us,enquantooslinkssemfiomostramumamédiade7ms(23vezesmaisatraso).

Agoraquaseomesmográfico,destavezlinearparadestacarairregularidade:

OtempodepingdoWifivariaentre6e45ms.

Soluções?

Comoafunçãosendtoretornamaiscedodoqueoesperado,nãoépossívelmediremquetempoospacotessãoenviados.Sevocêestiverrealmenteinteressadonomomentoemqueopacoteéenviado,provavelmentepoderáestimarissoaguardandoumarespostadoclienteediminuindootempodeidaevolta.

Mas,comovocêjádescobriu,,todososclientesWiFirecebemopacoteaomesmotempo,jáqueéummulticast.

Então,averdadeiraquestãoaquié:Oquevocêestátentandoalcançar?

Porexemplo,sevocêquiserquetodososseusclientesreproduzamomesmofluxodeáudioaomesmotempo,algumtipodesoftware PLL deve fazer o truque.

Se você quiser minimizar o atraso, o WiFi ainda poderá tentar ajustar suas configurações de Wi-Fi, especialmente aquelas relacionadas à economia de energia, no roteador e nos clientes.

E se você quiser obter algum desempenho em tempo real , provavelmente deve esquecer o WiFi.

    
por 25.08.2017 / 09:29