Como a LAN funciona nos videogames se apenas uma estação pode transmitir?

7

Eu li na LAN que os dados são transmitidos em pacotes para permitir que apenas uma estação transmita em um determinado momento; portanto, como isso pode ser aplicado nas partes da LAN dos jogos de vídeo se apenas um dispositivo for transmitir em um determinado momento? Tempo ?

Os dados são geralmente transmitidos em pacotes. Como o meio é compartilhado, apenas uma estação por vez pode transmitir um pacote.

Stalling, Comunicação de Dados e Computador , 5a ed.

eis3nheim
fonte
6
Vale a pena notar que a premissa está incorreta para a maioria das redes cabeadas modernas; "Como o meio é compartilhado, apenas uma estação por vez pode transmitir um pacote". mantido verdadeiro para 10BASE2 e parcialmente para 10BASE-T com hubs repetidores. Porém, a Ethernet moderna é sempre usada como switches de armazenamento e encaminhamento e muitas estações podem estar transmitindo a qualquer momento.
marcelm
3
(1) ui. O nome de Stallings tem um 's' no final. (2) Em outras notícias, filmes / cinema e televisão / vídeo consistem em uma série de imagens estáticas . Como é possível que imagens estáticas possam parecer aos humanos como se estivessem se movendo? Pense nisso.
Dave_thompson_085
O LAN Doom funcionou muito bem, mesmo vinte anos atrás, em redes coaxiais 10base2, embora as versões anteriores enviassem um pacote para cada bala chaingun que causava problemas.
Pjc50 19/0318
@marcelm, o Wi-Fi agora é o rei da LAN (mais dispositivos são fornecidos com interfaces Wi-Fi do que com interfaces Ethernet) e usa um meio compartilhado, half-duplex.
Ron Maupin

Respostas:

20

Apenas um dispositivo pode transmitir a qualquer momento. A qualquer momento, outro dispositivo pode transmitir.

Como você pode ter uma conversa na mesa de jantar se apenas uma pessoa pode falar a qualquer momento?

Jörg W Mittag
fonte
3
Sim, você espera (e, para protocolos em tempo real, geralmente garante que os quadros sejam realmente pequenos, para que você não precise esperar muito tempo) ou não use uma mídia compartilhada; esse problema simplesmente não acontece ' não existe. Honestamente, a última vez que estive em uma festa na LAN que realmente usou um meio compartilhado foi em 1995. Desde então, sempre usamos switches.
Jörg W Mittag
2
Para estender a analogia da mesa de jantar, sim, se houver uma dúzia de pessoas na mesa, é bem possível que você acabe não sendo capaz de dizer o que queria dizer. É por isso que as LANs corporativas precisam usar comutadores - a mídia compartilhada CSMA não inicia em grandes LANs Ethernet. Antes que os switches ethernet se tornassem acessíveis, havia outros padrões (como Token Ring e 100VG) que substituíam o esquema CSMA / CD por um esquema de token, o que significa que todos os falantes tinham um intervalo de tempo (token) no qual tinham uma oportunidade democrática de dizer o que eles quisessem dizer.
mere3ortal
9
@ eis3nheim sim. Mas o atraso é menor do que você pode perceber. Um pacote pequeno em uma rede rápida leva microssegundos para transmitir.
precisa
11
@ eis3nheim: Por exemplo, para Gigabit Ethernet, o tempo mínimo do slot (o menor quadro que um dispositivo pode enviar) é de ~ 4µs (512 bytes). Falando em termos de jogos, isso representa um atraso de cerca de meio quadro a 120fps. E tecnicamente falando, o GigE nem precisa de um tempo mínimo de slot, já que nenhum equipamento GigE médio compartilhado foi construído. 10G e mais nem sequer especificam mais o meio compartilhado e, portanto, não têm um tempo de slot mínimo. Portanto, isso significa que, no GigE, se o seu jogo enviar apenas os menores datagramas possíveis, o atraso será de cerca de 1 quadro a 120fps para obter uma resposta.
Jörg W Mittag
11
?? Metade de um quadro de video é de 4 ms (4 000 microsiemens)
Qsigma
18

Alguns protocolos de rede local, em algumas mídias, são half-duplex. Isso significa que apenas um host em uma LAN pode enviar um quadro a qualquer momento. O exemplo clássico disso é a Ethernet original, mas o exemplo moderno é o Wi-Fi.

A ethernet original era executada no cabo coaxial e usava o CSMA / CD (acesso múltiplo por detecção de colisão com detecção de colisão) para detectar colisões onde dois hosts estavam enviando ao mesmo tempo e, em seguida, enviava um sinal de obstrução porque os dados estavam corrompidos. Cada host recuava aleatoriamente e tentava reenviar, mas os hosts primeiro ouviam o meio para ver se algum outro host estava enviando.

Hoje, o Wi-Fi usa um meio compartilhado: as ondas de rádio. Somente um host por vez pode enviar. O Wi-Fi usa o CSMA / CA (acesso múltiplo por detecção de operadora com prevenção de colisões) para tentar evitar colisões.

Em termos humanos, cada quadro usado no meio é bastante pequeno e não permanece no meio por muito tempo; assim, revezando-se e compartilhando o meio, os anfitriões aparecem, para nós humanos lentos, para usar simultaneamente o meio.

Ron Maupin
fonte
"half-duplex" se aplica a um link, não toda a rede ...
rackandboneman
@rackandboneman, não entendo o motivo do seu comentário. Não mencionei nem impliquei nada sobre toda a rede. Eu estava falando sobre o meio em uso, o que implica o link.
Ron Maupin
rackandboneman o que chamamos de link agora costumava ser chamado de rede. @RonMaupin você disse LAN, LAN = Rede de Área Local
user253751
2
@immibis, o termo LAN é usado em diferentes contextos. Pode significar um domínio de colisão (link), um domínio de broadcast, uma instalação elétrica em um único site (incluindo várias redes de camada 3), uma rede de campus, etc. No contexto desta pergunta, eu estava usando a LAN para me referir a o domínio de colisão.
Ron Maupin
Obviamente, para um jogo cliente-servidor (na maioria dos jogos atualmente), o "problema" está de volta - a latência mínima é determinada pela quantidade de dados que o servidor precisa processar, bem como pela infraestrutura de rede entre os clientes e o servidor. O full-duplex pode ajudar, ou não ajuda. E sim, o servidor pode ter um link melhor que os clientes. Mas, de qualquer forma, ainda estamos falando de latências que nem chegam perto da duração de uma única atualização de jogo (na LAN) e a maioria dos jogos em rede espera que a mensagem seja processada em alguma atualização futura, permitindo que todas as máquinas sejam mantidas em sincronizar apesar do atraso.
Luaan 19/03/19
5

A resposta (ingênua) é, ou melhor, costumava ser simples: traduz para cada remetente que precisa esperar uma pequena fração de segundo. Não há como contornar isso, porque é assim que a rede funciona no nível físico, mas também não é um grande problema, pois estamos falando de alguns microssegundos (micro, não mili).

A resposta um pouco menos ingênua seria que, a menos que a LAN também inclua WLAN, sua cotação esteja desatualizada (incorreta). Em uma WLAN, você ainda não tem muitas opções. Enquanto uma estação está enviando, nenhuma outra estação pode enviar (a menos que eles usem um canal não sobreposto completamente diferente, mas são realmente duas redes, não uma, então uma estaria trapaceando).

Os computadores em uma LAN moderna de "jogos" normalmente serão conectados via pelo menos 100BASE-TX, provavelmente 1000BASE-T, ambos compatíveis com a operação full-duplex, para começar. Isso significa que você pode enviar e receber no mesmo cabo físico (bem, um fio diferente dentro do cabo, mas ainda assim) ao mesmo tempo. A noção de ter que esperar enquanto o cabo está ocupado não é mais tão simples, pois o envio realmente não interfere no recebimento. Somente o tráfego proveniente de vários outros remetentes interfere independentemente.

Além disso, hoje em dia os cabos quase sem exceção são conectados a um switch (em vez de um hub) que pode, em princípio (dependendo da qualidade do hardware) enviar e receber independentemente em todas as portas ao mesmo tempo e que, em princípio (novamente, dependendo da qualidade do hardware) tem largura de banda interna suficiente para processar N vezes a taxa de transferência teórica máxima para N portas. Sua milhagem pode variar um pouco, pois a qualidade do comutador varia. Alguns comutadores muito baratos terão N portas, mas apenas largura de banda suficiente correspondente à metade da quantidade de dados que pode ser enviada pelas N portas ao mesmo tempo. Muitas vezes, mesmo isso é (surpreendentemente) perfeitamente bom o suficiente.

Assim, você ainda terá alguns atrasos inevitáveis ​​ocasionais, porque os pacotes precisam ser enfileirados quando dois computadores na rede enviam quase ao mesmo tempo para o mesmo destino (o comutador toma essa decisão, não a placa de rede do computador) , mas na maioria das vezes "funcionará". Observe que, mesmo quando "não funciona", funciona de qualquer maneira, apenas leva um microssegundo ou dois a mais para que os dados sejam recebidos.

Damon
fonte
2

Esse livro é um pouco datado, confira algumas informações sobre como a Ethernet evoluiu e a diferença entre half-duplex e full duplex:

https://en.wikipedia.org/wiki/Ethernet#Evolution

boomi
fonte
11
Hoje, o Wi-Fi ainda é half-duplex, e mais dispositivos são fornecidos com interfaces Wi-Fi do que dispositivos com interfaces Ethernet, portanto, o half-duplex está vivo e bem.
Ron Maupin
Definitivamente é justo. Pensando em uma festa na LAN, acho que há conexões com fio.
Boomi
@RonMaupin Com os avanços na tecnologia MIMO, a limitação de uma estação transmissora em qualquer momento também é desbotamento por Wi-Fi;)
marcelm
11
@marcelm, é half-duplex porque uma estação não pode enviar e receber ao mesmo tempo.
Ron Maupin
Mais do que um pouco datado, eu diria. O livro didático do autor está com pelo menos 5 edições de atraso.
Kevin Krumwiede 19/03/19
2

Isso é verdade para implementações de Ethernet da velha escola (10base2, 10base5 et al ... assim como 10baseT e 100baseT SE um hub sem comutação foi usado) que realmente usava um meio compartilhado fisicamente ou logicamente (planta de cabeamento) para conectar mais de duas transmissões portas capazes. Se duas estações transmitidas acidentalmente ao mesmo tempo, o sinal naquele meio compartilhado fica distorcido - as portas de rede foram projetadas para detectar esses sinais distorcidos e enviar outro sinal ao meio, que ainda pode ser lido corretamente nos dados distorcidos e sinaliza para todos que todas as suas transmissões são inválidas e terão que ser repetidas após um tempo de recuo. O problema com essas configurações era que, se alguma coisa carregava a rede até o limite com pequenos pacotes, a largura de banda alcançável terminava significativamente abaixo do máximo teórico,

Em uma Ethernet totalmente comutada (como seria possível ao construí-la com todas as peças normalmente disponíveis em uma loja após 2004). "Totalmente comutada" porque existem formas híbridas (ed) onde várias mídias compartilhadas (com mais de 2 portas) eram separados por comutadores), sempre há duas portas (uma no comutador e a outra em um computador ou outro dispositivo conectado) compartilhando uma mídia. Qualquer ethernet do tipo "T" possui pares de fios separados para cada direção, portanto, entre duas portas, sempre será possível que ambas transmitam e recebam ao mesmo tempo. Um switch sempre solicita pacotes de vários remetentes em uma sequência válida e o transmite onde quer que decida enviá-los, a menos que esteja realmente sobrecarregado (o que dificilmente ocorrerá em uma situação de rede doméstica).

Para garantir a integridade, alguns outros sistemas de LAN com fio não Ethernet (hoje em dia raramente usados) (por exemplo, Token Ring, FDDI) usavam métodos diferentes para disciplinar o acesso médio, em alguns casos negociando positivamente o privilégio de enviar antes que alguém pudesse transmitir uma carga útil.

O WIFI também precisa lidar com um problema comum de mídia e também com o fato de que dois transmissores conflitantes podem ter visibilidade diferente para diferentes receptores. Um algoritmo chamado CSMA / CA é usado para resolver isso.

rackandboneman
fonte
1

Em uma rede de 10 Mb / s, um pacote completo leva cerca de 1 ms para transmitir. A maioria dos pacotes de jogos é muito menor, então você não percebe essa latência e pode receber centenas de atualizações por segundo com bastante facilidade. O grande atraso vem da distância de pelo menos 18ms por 1000 milhas. Essa é a velocidade da luz e não pode ser evitada. Outros pacotes no fio podem adicionar a essa latência - isso é chamado de instabilidade.

Fred Phillips
fonte
11
Outros pacotes no fio podem adicionar essa latência - isso é chamado de instabilidade. ” Na verdade, a instabilidade é uma latência variável. Eu acho que você quer dizer congestionamento, que é uma das causas do jitter. Protocolos em tempo real, por exemplo, VoIP, costumam funcionar bem com uma latência razoavelmente grande, mas uma latência em constante mudança (tremulação) causa problemas graves.
Ron Maupin
Nunca assuma que a largura de banda e a latência precisam estar relacionadas. Um caminhão cheio de discos rígidos tem uma enorme largura de banda, mas também uma grande latência. A latência é sobre quando o primeiro bit chega, a largura de banda é sobre a rapidez com que os próximos bits vêm depois do primeiro.
allo
1

Em todos os videogames, sempre há um atraso entre o momento em que um jogador oferece informações (pressionando um botão, movendo um joystick etc.) e a reação a isso. Existe até um atraso perceptível entre o computador detectando uma alteração de controle e essa alteração que aparece no próximo quadro na tela *, e é por isso que alguns jogadores reduzem as configurações gráficas (tornando o jogo menos bonito) para manter 60 FPS.

As redes também apresentarão esse atraso por várias razões, uma das quais porque os jogadores não podem receber duas mensagens ao mesmo tempo. Se dois outros computadores tentarem enviar uma mensagem ao mesmo tempo, um deles recuará e deixará o outro ir primeiro (em um meio de transmissão compartilhado, como WiFi) ou um comutador receberá os dois ao mesmo tempo, mas enviará um antes do outro para o destino (Ethernet com fio moderna).

Os atrasos em uma LAN são pequenos, no entanto, e são diminuídos pela quantidade de atraso (dezenas ou até centenas de vezes maior) produzido pela reprodução pela Internet.

Então, como isso pode funcionar? Normalmente, os jogos modelam o outro jogador, prevendo movimentos futuros com base no movimento atual, para que você o veja se movendo suavemente em uma determinada direção, mesmo que seu computador nem sempre esteja recebendo atualizações imediatas sobre onde ele realmente está. (O código que faz isso geralmente é chamado de código de rede .) É por isso que os jogadores às vezes pulam de repente de um lugar para outro; a previsão ficou fora de sincronia com o que realmente estava acontecendo, geralmente devido a um atraso na rede.


* Isso geralmente não é percebido como "vi um atraso", mas "os controles parecem lentos" ou similares.

cjs
fonte
11
Sem mencionar o atraso entre "algo muda na tela", "você percebe que algo muda na tela", "você planeja uma ação de resposta" e "você realmente move sua mão / dedo". Todos os animais grandes precisam de um circuito de compensação de atraso bastante decente para ter a chance de fazer qualquer coisa no mundo real. Ocultar latência é algo tanto nos animais quanto no código de jogo - e os neurônios transmitem muito mais devagar que os cabos de cobre; os neurônios saudáveis ​​mais rápidos transmitem a cerca de 120 m / s. Mesmo com cabos muito mais longos, é muito mais latência do que uma LAN típica.
Luaan