4.2 Protocolo de Resolução de Colisão (CRP)
4.2.1 Protocolo CRP Com Detecção de Colisão (CD)
Conforme mencionado na Seção 4.1, sempre que a transmissão de duas ou mais estações se sobrepõem, os quadros transmitidos não podem ser corretamente decodificados. Neste sentido, o objetivo do protocolo CRP é promover o acesso ordeiro e individual ao canal, evitando assim, colisões de quadro de dados. A rotina DividindoGrupo-CD apresenta em detalhes como esta coordenação de acesso ao canal é feita por estações que executam o protocolo CRP (CD).
Inicialmente, todas as estações transmissoras encontram-se agrupadas em um mesmo conjunto S. Como resultado da execução do algoritmo DividindoGrupo-CD, dois sub-
conjuntos não vazios S1 e S2 são gerados. O subconjunto S2 é submetido ao algoritmo
DividindoGrupo-CD, sendo dividido em dois subconjuntos, não vazios, S2 e S3. A mesma
operação de particionamento é então aplicada ao subconjunto S3. Generalizando, um
subconjunto Si é particionado em dois subconjuntos não vazios Si e Si+1. Este processo
se repete até que um subconjunto unitário, Sl = vl, seja encontrado. Onde, a estação vl
é declarada vencedora do período de resolução de colisão corrente. Ao tomarem conheci- mento de que uma estação vencedora foi selecionada, as estações remanescentes deixam a fase de contenção do protocolo. Desta forma, as estações remanescentes passam a evitar o acesso ao canal até que a estação sl finalize o seu ciclo de comunicação. A Rotina 1
apresenta os detalhes do algoritmo DividindoGrupo-CD.
É possível verificar que a rotina DividindoGrupo-CD particiona um conjunto de en- trada Si em dois subconjuntos, não vazios, Si and Si+1. A partir do estado resultante do
canal de comunicação, armazenado em Estado(cara) e Estado(coroa), cada estação sabe identificar se |Si| = 1 ou |Si| ≥ 2. Da mesma forma, é possível determinar se |Si+1|= 1
ou |Si+1| ≥ 2. Em outras palavras, obter esta informação corresponde a determinar se o
estado resultante do canal é nulo, simples ou colisão. Para estações com capacidade de detecção de colisão (CD) habilitada, esta é uma tarefa possível, conforme discutido na Seção 4.1.
A Figura 4.1 apresenta um exemplo de funcionamento do protocolo CRP (CD). A Fi- gura 4.1(a) mostra o processo de particionamento do conjunto inicial S, conforme definido pela Rotina 1. A Figura 4.1(b) mostra o mapeamento entre o processo de divisão dos subconjuntos e o estado do canal durante a execução do protocolo CRP (CD). No início da execução do protocolo, todas as estações em S estão ativas. Sempre que uma estação vencedora é identificada, todas as demais estações deixam a fase atual de contenção. De acordo com o exemplo, o conjunto inicial S é formado por 5 estações transmissoras, são elas: v1, v2, v3, v4 e v5. Na primeira iteração, Figura 4.1(a), as estações executam a Rotina
1 e são divididas em dois subconjuntos: Si = {v1, v3, v5} (cara) e Si+1 = {v2, v4} (coroa).
Do ponto de vista do canal (Figura 4.1(b)), o estado final da primeira e da segunda fatia
Rotina 1 DividindoGrupo-CD 1: do
2: cada nó em Si lança uma moeda justa;
3: todos os nós que tiraram ‘cara’ transmitem um tone no canal;
4: Seja Estado(cara) o estado resultante do canal;
5: todos os nos que tiraram ‘coroa’ transmitem um tone no canal; 6: Seja Estado(coroa) o estado resultante do canal;
7: while (Estado(cara) == NULL or Estado(coroa) == NULL); 8: Si ← todos os nós que tiraram ‘cara’;
Iteração 1 Iteração 2 Iteração 3 v1v5 v1v3 v5 v1v2 v3v4 v5 v1v3 v5 v2v4 v3 Cara Cara Cara Coroa Coroa Coroa
(a) Representação em árvore.
C o lis ão v5 v3 v1 v5 v3 v1 v4 v2 v3 v5 v1 C o lis ão C o lis ão N ul o Si m pl es C o lis ão Canal Fatias de Tempo Vencedor 1 2 3 4 5 6 5µs 1 2 3 Iterações Fatias: (b) Representação do Canal
Figura 4.1: Representação da árvore binária de execução do protocolo CRP (CD) para um grupo de 5 estações transmissoras.
Rotina 2 Collision Resolution Protocol (CRP) 1: todos os nós definem i ← 1;
2: while i ≥1 do
3: if | Si | == 1 then
4: o único nó em Si é declarado vencedor;
5: i = 0;
6: else
7: executam DividindoGrupo-CD para particionar Si;
8: todos os nós ativos definem i ← i + 1;
9: end if 10: end while
é colisão. Na segunda iteração, o subconjunto Si é subdividido de uma forma desbalan-
ceada. Ou seja, Si+1= {v1, v3, v5} e Si+2= ∅. Este desbalanceamento retorna verdadeiro
na avaliação da condição: Estado(coroa) == NULL (Rotina 1, linha 7), forçando uma nova subdivisão do conjunto Si. A terceira iteração divide o subconjunto Si em dois
subconjuntos não vazios Si+1 = {v3} (cara) e Si+2 = {v1, v5} (coroa). Como |Si+1| = 1,
a estação v3 declara-se vencedora do período de contenção atual. A partir deste ponto,
todas as estações aguardam em silêncio o processo de alocação do canal, que é iniciado pela estação vencedora. Este processo será discutido em detalhes na Seção 4.2.3. Por fim, é importante destacar que a verificação | Si |== 1 (Rotina 2, linha 3) restringe a parada
do algoritmo CRP ao caso em que o grupo de estações que escolheram cara (Rotina 1, linha 8) for unitário.
A parada do protocolo CRP pode ser verificada, conforme sua descrição que será apresentada a seguir. Maiores detalhes sobre o protocolo são apresentados na Rotina 2.
De acordo com a rotina, observe que a tarefa para verificar se |Si| = 1 não necessita
de nenhuma transmissão. Esta informação pode ser determinada através do estado do canal obtido na execução da algoritmo DividindoGrupo-CD. Consequentemente, nenhuma transmissão é necessária, exceto as definidas no algoritmo DividindoGrupo-CD. Conforme demonstrado, o algoritmo DividindoGrupo-CD garante a divisão do conjunto Si em dois
subconjuntos não vazios. Sendo assim, é factível assumir que, para o conjunto inicial S ≥2, eventualmente, a condição | Si |== 1 será satisfeita e o algoritmo CRP terminará,
tendo como resultado uma estação declarada vencedora do período de contenção corrente. O próximo passo será a avaliação da quantidade de fatias de tempo envolvidas na execução do algoritmo DividindoGrupo-CD. Suponha que m estações (2 ≤ m ≤ n), contidas no conjunto Si, serão divididas em dois subconjuntos não vazios (Si+1 e Si+2),
através da execução do algoritmo DividindoGrupo-CD. Uma iteração da estrutura de repetição doWhile (DividindoGrupo-CD, linhas 2-6) é dita como bem sucedida, se ela consegue particionar o conjunto de entrada Si em dois subconjuntos não vazios. Seja X
uma variável aleatória representando o número de estações que escolheram cara, ao lançar a moeda. Como m ≥ 2, a probabilidade de uma iteração bem sucedida pode ser calculada por:
Pr[1 ≤ X ≤ m − 1] = 1 − Pr[X = 0] − Pr[X = m], (4.1)
= 1 − 2 Pr[X = 0] = 1 − 2m−11 ≥ 1
2. (4.2)
Conforme mencionado, uma iteração bem sucedida produz dois subconjuntos não va- zios (Rotina 1). Neste caso, o protocolo CRP (Rotina 2) requer, no pior caso, log2(n) itera-
ções bem sucedidas para que uma estação seja declarada vencedora. O próximo passo, será avaliar o número de fatias de tempo que são suficientes para garantir, com alta probabili- dade, a existência de log2(n) iterações bem sucedidas no algoritmo DividindoGrupo-CD.
Seja Y uma variável aleatória que represente o número de sucessos em 8n tentativas de Bernoulli [74], com parâmetro de p = 1
2. Seja E[Y ] a representação do valor esperado
de Y . Tem-se que o valor E[Y ] é dado por E[Y ] = 8np = 4n. Para analisar a calda da Distribuição Binominal, o estimador conhecido por Limite de Chernoff [36] pode ser utilizado conforme apresentado pela Equação (2.7). Substituindo os valores na equação, tem-se:
Pr[Y < log2(n)] < Pr[Y ≤ (1 −
3
4)E[Y ]] = Pr[Y ≤ n] ≤ e−329E[Y ] = e−
9
8n <2−1,5n.
Desta forma, fica demonstrado que com probabilidade de sucesso de pelo menos 1 −
pelo menos log2(n) iterações bem sucedidas. Como em cada iteração do laço do-While
gasta duas fatias de tempo, o protocolo CRP terminará em até 8n × 2 = 16n fatias de tempo, com probabilidade de sucesso de pelo menos 1 − 2−1,5n. A discussão apresentada,
pode ser resumida conforme o Lema 4.1.
Lema 4.1. O protocolo CRP pode selecionar uma única estação transmissora entre n
CD-estações em contenção, em uma rede ad hoc de único salto, em até 16n fatias de tempo com probabilidade de sucesso de pelo menos 1 − 2−1,5n.
O lema apresentado fecha a seção de análise para o protocolo CRP executado por estações com capacidade de detecção de colisão. O próximo passo será apresentar as modificações necessárias no protocolo para que este possa ser executado por estações sem esta capacidade. A próxima seção discute melhor as questões envolvidas.