• Nenhum resultado encontrado

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.