Modo full-duplex

Tradicionalmente, as redes Ethernet operavam em modo half-duplex, onde é possível realizar apenas uma transmissão por vez, enviando ou recebendo dados, mas não as duas coisas simultaneamente. Este modo de funcionamento é herança das redes 10BASE-2 e das redes com hubs burros, onde todas as estações são ligadas ao mesmo cabo e apenas uma pode transmitir de cada vez, com a possibilidade de ocorrerem colisões.

Como as transmissões são divididas em pacotes e são concluídas num espaço muito pequeno de tempo, transferências simultâneas podem ser feitas “ao mesmo tempo”, mas a velocidade da rede é dividida entre as transmissões. Ao enviar um grande arquivo, ao mesmo tempo em que baixa outro, você obteria, na melhor das hipóteses, 50 megabits em cada direção em uma rede de 100 megabits. Na prática, a taxa ficaria abaixo disso, pois parte da banda da rede seria desperdiçada na forma de colisões e retransmissões de pacotes.

O modo full-duplex permite que cada nó da rede envie e receba dados simultaneamente, permitindo que você baixe um arquivo grande a partir do servidor de arquivos da rede, ao mesmo tempo em que outro micro da rede copia um arquivo a partir do seu. Ambas as transferências são feitas na velocidade máxima permitida pela rede, ou seja, 100 ou 1000 megabits.

No modo full-duplex também não é mais usado o CSMA-CD, pois as colisões de pacotes simplesmente deixam de existir. Para que isso aconteça, é obrigatório o uso de um switch ou hub-switch. Não é possível usar o modo full-duplex usando um hub burro.

O full-duplex é suportado por todos os padrões de rede do 100BASE-TX em diante, incluindo o 1000BASE-T, usado nas rede Gigabit. É muito raro ter uma rede Gigabit operando em modo half-duplex, simplesmente por que não existe mais mercado para hubs burros e produzí-los não resultaria em um preço de venda muito mais baixo em primeiro lugar, mas de qualquer forma a possibilidade ainda existe.

As redes 10G por sua vez, abandonaram definitivamente o suporte ao modo half-duplex, operando em modo full-duplex por padrão. Os hubs burros não são mais previstos no padrão 10G, de forma que eles logo se tornarão coisa do passado.

Embora o uso do modo full-duplex não dobre o desempenho da rede (já que raramente as estações precisarão transmitir grandes volumes de dados ao mesmo tempo), ele representa sempre um certo ganho e por isso é sempre desejável.

As placas de rede são capazes de detectar automaticamente quando o full-duplex está disponível e ativá-lo automaticamente, tanto no Linux quanto no Windows.

No Linux, você pode verificar a configuração através dos comandos “mii-tool” e “ethtool“. O mii-tool é o utilitário mais antigo, enquanto o ethtool é seu sucessor atualizado. Muitas placas antigas suportam apenas o mii-tool e a maioria das placas modernas suportam apenas o ethtool, de forma que você acaba tendo que utilizar um ou outro de acordo com a placa usada.

Para checar o modo de operação da placa de rede, basta usar o comando mii-tool sem parâmetros ou o ethtool seguido da interface, como em:

# mii-tool
eth0: negotiated 100BaseTx-FD, link ok

# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full

Port: MII
PHYAD: 32
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes

Como você pode ver, o mii-tool vai mais direto ao ponto, fornecendo a informação em uma única linha, enquanto o ethtool é mais falador.

O “100BaseTx-FD” na saída do mii-tool indica que a placa está operando em modo full-duplex. Caso a placa estivesse trabalhando em modo half-duplex, ela apareceria como “100BaseTx-HD”. Note que o “FD” e “HD” são justamente abreviações de full-duplex e half-duplex. Caso você estivesse usando placas antigas (de 10 megabits), seriam usados, respectivamente, os modos “10BaseT-FD” e “10BaseT-HD”. Existe ainda um último modo possível, o “100BaseT4”, que indica que a placa está utilizando o padrão para cabos cat 3, onde são utilizados os 4 fios do cabo.

No caso do ethtool, a velocidade é indicada na linha “Speed”, que pode conter os valores “10”, “100”, “1000” ou “10000” e o uso do half-duplex ou full-duplex na linha “Duplex”, que pode conter os valores “Half” ou “Full”.

Como disse, o modo de operação é definido automaticamente, depois de um rápido processo de negociação entre a placa e o hub ou switch. É possível também usar o mii-tool e o ethtool para forçar um determinado modo de operação.

No caso do mii-tool, use o parâmetro “-F”, seguido do padrão desejado, como em:

# mii-tool -F 100BaseTx-FD eth0

ou:

# mii-tool -F 100BaseTx-HD eth0

No caso do ethtool a linha de comando é um pouco mais longa, contendo a interface, a velocidade desejada e o parâmetro “half” ou “full”. É necessário adicionar também o parâmetro “autoneg off”, que desativa a autonegociação, passando a usar a configuração definida por você, como em:

# ethtool -s eth0 speed 100 duplex full autoneg off

ou:

# ethtool -s eth0 speed 10 duplex half autoneg off

Note que forçar o modo full-duplex em uma rede onde o hub ou os cabos não suportem este modo de operação, fará com que pacotes passem a ser perdidos, deixando a rede lenta ou mesmo derrubando a conexão do seu micro. Estas opções são destinadas a casos onde a autonegociação falhe, ou onde você queira deliberadamente reduzir a velocidade de operação da rede.

Para verificar o uso do modo full-duplex no Windows, acesse as propriedades da conexão de rede e clicar em “configurar” para abrir a janela de opções da placa de rede. Você encontrará a opção com o modo de transferência da placa de rede na sessão “Avançado”.

index_html_78acedb5

Agradecimentos a Jqueiroz

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X