Redes IEEE 802.11 (Wifi)
4. O problema do acesso ao meio
4.1. O acesso ao meio CSMA/CA
O protocolo MAC usado em redes IEEE 802.11 se chama CSMA/CA (Carrier Sense Multiple Access/Collision Avoidance). Ele foi desenhado para prover um acesso justo e equitativo entre as WSTA, de forma que em média todas as WSTA tenham as mesmas oportunidades de acesso ao meio (entenda isso por "oportunidades de transmitirem seus quadros"). Além disso, em seu projeto foram incluídos cuidados para que colisões sejam difíceis de ocorrer, mas isso não impede que elas aconteçam. Os procedimentos e cuidados do MAC para evitar e tratar colisões apresentam um certo custo (overhead), que impedem que as WSTA aproveitem plenamente a capacidade do canal sem-fio. Consequentemente, a vazão pela rede sem-fio que pode de fato ser obtida é menor que a taxa de bits nominal (por exemplo, com IEEE 802.11n e taxa de 150 Mbps, na prática pode se obter uma taxa efetiva em torno de 80 MBps).
O video a seguir resume o funcionamento do CSMA/CA, e explica porque algo assim é necessário. Mas primeiro ele explica o CSMA/CD, que fazia algo parecido em redes Ethernet antigas (isso ajuda a entender o CSMA/CA).
O protocolo CSMA/CA implementa um acesso ao meio visando reduzir a chance de colisões. Numa rede sem-fio como essa, não é possível detectar colisões, portanto uma vez iniciada uma transmissão não pode ser interrompida. A detecção de colisões, e de outros erros que impeçam um quadro de ser recebido pelo destinatário, se faz indiretamente com quadros de reconhecimento (ACK). Cada quadro transmitido deve ser reconhecido pelo destinatário, como mostrado abaixo, para que a transmissão seja considerada com sucesso.
Envio de um quadro de dados, com subsequente reconhecimento (ACK)
O não recebimento de um ACK desencadeia uma retransmissão, de forma parecida com o procedimento de retransmissão do CSMA/CD ao detectar colisão. Antes de efetuar uma retransmissão, o MAC espera um tempo aleatório denominado backoff (recuo). Esse tempo é sorteado dentre um conjunto de possíveis valores que compõem a Janela de Contenção (Cw - Contention Window), representados no intervalo [0, Cw]. O valor de Cw varia de (15 para IEEE 802.11a/g/n e 31 para 802.11b) a (1023), e praticamente dobra a cada retransmissão de um mesmo quadro. A figura abaixo ilustra as janelas de contenção para retransmissões sucessivas.
Backoff para retransmissões sucessivas
Resumidamente, o protocolo MAC usa basicamente dois mecanismos principais para fazer o acesso ao meio:
- Antes de uma transmissão, verifica-se se o canal está livre. Caso não esteja, deve-se primeiro aguardar que fique livre.
- Cada quadro transmitido deve ser confirmado pelo receptor. Isso quer dizer que o receptor deve enviar um quadro de confirmação para o transmissor (ACK). Se esse quadro ACK não for recebido, o transmissor assume que houve um erro. Nesse caso, o transmissor faz uma retransmissão.
- Antes de uma retransmissão o transmissor se impõem um tempo de espera aleatório chamado de backoff. A duração máxima do backoff depende de quantas retransmissões do mesmo quadro já foram feitas.
A figura abaixo ilustra um cenário em que cinco WSTA disputam o acesso ao meio. Repare os backoff feitos pelas WSTA antes de iniciarem suas transmissões. Esse backoff sempre precede uma transmissão quando a WSTA for verificar o canal sem-fio e o encontra ocupado (pense em por que o MAC deve fazer isso ...).
Por fim, o MAC CSMA/CA usado nas redes IEEE 802.11 define uma formato de quadros, mostrado na figura abaixo. Note que ele é diferente do quadro ethernet, e portanto o AP precisa traduzir os cabeçalhos de quadros que viajam da rede cabeada para a WLAN, e vice-versa. Note também que os endereços MAC do CSMA/CA são os mesmos que em redes ethernet.