O algoritmo logarítmico de retirada na camada MAC, usado principalmente em protocolos de CSMA/CA (acesso múltiplo do senso de transportadora com prevenção de colisão) como Wi-Fi (802.11), visa resolver colisões, introduzindo um atraso randomizado antes de retransmitir um quadro. É "logarítmico" porque a gama de possíveis atrasos aumenta exponencialmente a cada colisão sucessiva. Veja como é implementado:
1. Detecção de colisão: * O nó de transmissão ouve uma colisão após o envio de um quadro. Se detectar uma colisão (por exemplo, sentindo outro sinal no canal durante a transmissão), sabe que sua transmissão falhou.
2. Inicialização do contador de retirada: * Um contador de retirada é inicializado. O valor inicial é geralmente `cwmin` (janela de contenção mínimo), um valor fixo definido pelo padrão (por exemplo, 31 em cerca de 802.11 configurações). Este contador representa o número de slots de tempo que o nó deve esperar antes de tentar retransmissão. Um slot de tempo é um intervalo curto e predefinido.
3. RECONHECIMENTO ALEATÓRIO: * Um número aleatório é gerado uniformemente entre 0 e o valor atual do contador de retirada (`cw`). Esse número aleatório determina o atraso específico antes da retransmissão. Essa aleatoriedade ajuda a evitar colisões persistentes que possam ocorrer se todos os nós retransmitam exatamente ao mesmo tempo.
4. Diminui o contador de retirada: * O nó aguarda o número aleatório de slots de tempo. Durante esse período de espera, o nó continua a detectar o canal. Se o canal estiver claro, diminui o contador de retirada em cada intervalo até atingir zero.
5. Retransmissão: * Quando o contador de retirada atingir zero, o nó tenta retransmitir o quadro.
6. Resolução de colisão: * Se ocorrer outra colisão, a janela de contenção (`cw`) é dobrada (ou aumentada de acordo com um algoritmo específico dentro do padrão), até um valor máximo (` cwmax`). Isso garante que os nós espalhem suas tentativas de retransmissão em um intervalo de tempo maior, diminuindo a probabilidade de novas colisões.
7. Backoff exponencial: * A natureza logarítmica surge do aumento exponencial da janela de contenção. Cada colisão aumenta significativamente a faixa de possíveis atrasos, levando a uma rápida diminuição na probabilidade de colisão. Se um número máximo de tentativas de retransmissão for alcançado sem sucesso, o quadro será descartado.
8. Exemplo: Digamos que `cwmin` é 31 e` cwmax` é 1023.
*
1ª colisão: `Cw` =31. Atraso aleatório:0-31 slots de tempo.
*
2ª colisão: `Cw` =63 (dobrado). Atraso aleatório:0-63 slots de tempo.
*
3rd Collision: `Cw` =127. Atraso aleatório:0-127 slots de tempo.
* ... e assim por diante, até que o `cw` chegue a` cwmax` ou o quadro seja transmitido com sucesso.
Detalhes da implementação (exemplo 802.11): A implementação precisa varia ligeiramente, dependendo do padrão 802.11 específico (por exemplo, 802.11a, 802.11b, 802.11g, 802.11n, 802.11ax). Os detalhes seriam incorporados no firmware ou driver da placa de interface de rede sem fio (NIC). Esses detalhes incluem:
* Valores específicos de `cwmin` e` cwmax`.
* O algoritmo exato para dobrar ou aumentar a janela de contenção.
* Mecanismos para lidar com vários tipos de erros e condições de canal.
Em essência, o algoritmo logarítmico de retirada é um componente essencial para tornar a CSMA/CA eficaz no gerenciamento de acesso simultâneo a um meio sem fio compartilhado, evitando colisões catastróficas e permitindo comunicação eficiente.