Protocolos CSMA que permitem colisão

Existem três tipos de protocolos CSMA que permitem a existência de colisão na transmissão de dados, e para entendê-los vamos lançar mão do meu recurso mais manjado: uma metáfora.

***


Imagine então, querida leitora, que havia uma rodoviária que tinha caixas de som usadas para anunciar os ônibus que estavam saindo e chegando. Só que, ao invés de ter apenas uma pessoa responsável pelos anúncios, cada uma das 20 empresas tinha a sua própria mocinha com voz de veludo. Claro que elas não podiam falar ao mesmo tempo, para que os passageiros não se confundissem, e por isso adotaram um método de trabalho.

Antes de começar a dar o seu recado, elas reparavam se não havia nenhuma das outras falando. Se não houvesse nenhum anúncio sendo feito, elas faziam o seu na mesma hora. E se houvesse alguém falando, elas esperavam que a primeira terminasse para começar a falar assim que fosse possível. Simples e prático, mas com um problema muito comum: às vezes, duas, três ou até mais moças ficavam esperando uma terminar de falar e então começavam todas a falar juntas. Quando isso acontecia, todas paravam de falar e aguardavam um tempo aleatório para então tentar novamente.

Por que este tempo era aleatório? Fácil: se todas aguardassem o mesmo tempo, todas tentariam começar a falar na mesma hora, e falariam juntas ao mesmo tempo de novo, de novo, de novo. Com tempos aleatórios, uma esperaria, digamos, cinco segundos, outra onze e a terceira vinte, diminuindo os riscos de falarem juntas.

Quando haviam poucos ônibus circulando, este método funcionava com excelência, pois havia pouca concorrência entre as moças. Entretanto, em períodos de grande movimento, elas raramente conseguiam dar seus recados nas primeiras tentativas.

***


Por isso, a administração da rodoviária ficou insatisfeita com o rendimento deste rodízio e resolveu adotar um novo método. Neste novo método, a princípio tudo parecia igual: quando as moças tivessem alguma coisa para anunciar, elas reparavam se as outras estavam falando ou não. Caso não estivessem, o anúncio era feito na hora.

A diferença estava no caso de haver alguém falando. Neste segundo jeito de trabalhar, elas não ficavam esperando a primeira terminar de falar para começar logo em seguida. Ao contrário, elas esperariam um tempo aleatório. Depois que este tempo passasse, elas novamente reparariam se havia alguém falando, e o processo se repetia.

Um pequeno porém deste modelo é que, em momentos de baixo movimento, muitas vezes as moças esperavam mais do que o necessário para poder dar seus recados. Por que? Porque, por haver pouca "concorrência", eram pequenas as chances de duas começarem a falar ao mesmo tempo assim que outra terminasse, e o método de trabalho, mesmo assim, as fazia esperar um tempo aleatório, sempre maior que o tempo que a primeira levava pra terminar de falar.

Ademais, apesar de quase eliminar o número de colisões e melhorar consideravelmente o andamento do trabalho nos horários de pico, este método de trabalho trouxe um outro e sério problema: por várias vezes alguma das moças ficava um longo tempo tentando fazer o seu anúncio, sem sucesso, e às vezes o ônibus saída da rodoviária sem que ela conseguisse falar. Acontecia mais ou menos assim: a moça tinha um anúncio a fazer, mas já havia outra falando. Ela aguardava. Quando ia tentar falar, outra já tinha começado. Ela aguardava. Quando ia tentar falar, mais outra já tinha começado. E o processo se repetia uma vez atrás da outra.

***


Como forma de melhorar esta situação sem retroceder ao modelo anterior, a administração da rodoviária criou então um método misto, que tentava minimizar os dois problemas. Assim como no segundo método, ao verem que alguém já estava falando, as moças esperavam um tempo aleatório. A grande mudança trazida neste terceiro modelo foi na maneira que as moças agiam quando podiam falar.

O que acontecia, então? Quando viam que podiam dar o seu anúncio, elas jogavam um dado sobre a mesa. Se caísse 1, 2 ou 3, elas começavam a falar. Se caísse 4, 5 ou 6, elas esperariam um tempo aleatório para então ver novamente se outra estava falando, reiniciando o processo.

Trabalhando desta forma, mesmo que acontecessem casos de duas ou mais moças começarem a falar ao mesmo tempo, eram muito poucos e, ao mesmo tempo, houve uma diminuição grande nos casos de uma moça tentar falar várias vezes sem conseguir, e ninguém mais perdia seu ônibus.

Veja que, na verdade, havia 50% porcento de chances de as moças começarem a falar ou não, e que esta porcentagem poderia ser ajustada de acordo com o movimento da rodoviária.

Em momentos de baixo tráfego, em que era mais prático deixá-las falar assim que possível, poderia-se aumentar as chances de elas agirem assim simplesmente indicando que elas deveriam falar se o dado desse de 1 a 5, ou então não falariam se o dado desse 6. Do mesmo modo, em momentos de grande movimento, nos quais o segundo método é mais útil, poderia-se definir que elas não falassem se o dado desse de 2 a 6, ou então que falassem se desse 1.

A rodoviária passou a trabalhar assim, os problemas foram minimizados e todos foram felizes para sempre.

***


Pronto, se vocês entenderam esta história, entenderam os três tipos de protocolo CSMA que permitem colisão.

O CSMA 1-persistente é o primeiro: uma máquina, antes de transmitir, verifica se o canal de comunicação está sendo usado. Se não estiver sendo usado, transmite; caso contrário, fica esperando até que a outra transmissão termine para começar a sua logo em seguida.

O CSMA não-persistente é o segundo: uma máquina, antes de transmitir, verifica se o canal de comunicação está sendo usado. Se não estiver sendo usado, transmite; caso contrário, espera um tempo aleatório para tentar novamente.

O CSMA p-persistente é o terceiro: uma máquina, antes de transmitir, verifica se o canal de comunicação está sendo usado. Se estiver sendo usado, espera um tempo aleatório; caso contrário, baseada em um sorteio, ou ela transmite na mesma hora ou adia a transmissão, de acordo com um tempo aleatório.

***


Artigo do Vovó Viu a Rede: Entenda como funciona a escolha de tempo aleatório de espera

3 comentários:

Unknown disse...

Olá amigo. Estudando pelo Tanembaum, me restou uma dúvida a respeito do p-persistente e não consegui entender.

Quanto aquela divisão sincronizando a transmissão por slots (que o tanembaum coloca em sua explicação), como ela se encaixaria em suas analogias, ou melhor ainda, numa explicação técnica, mas não tão técnica assim.

Um forte abraço meu amigo mário

Mário Marinato disse...

George, vou dar uma olhada com calma nisso aí e logo logo escrevo um artigo sobre o assunto, beleza?

Até mais ver.

Mário Marinato disse...

George, eu estava lendo aqui a seção que fala sobre CSMA p-persistente e relendo o meu artigo e vi que consegui a façanha de chegar ao meu máximo de clareza com ele. Infelizmente, não tenho um jeito melhor de explicar o assunto.

Sugiro que dê uma relida em todo o meu artigo com calma. Talvez a luz acenda em algum momento.

Abraço.