UNIVERSIDADE DE SANTA CRUZ DO SUL - UNISC

DEPARTAMENTO DE INFORMÁTICA

CURSO DE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO

TRABALHO I – CIRCUITOS VIRTUAIS EM REDES ATM

ADILSON ARTHUR MOHR


Redes de Computadores I

Leandro Vaguetti

Santa Cruz do Sul, 29 de agosto de 2003.





Apresentação do algoritmo de roteamento utilizado para o circuito virtual estabelecer o melhor caminho para fechar o circuito, usando o ATM como exemplo. Texto extraído do livro Redes de Computadores, de Andrew Tanenbaum.



A CAMADA ATM NO MODELO DE REDE ATM

As camadas do modelo ATM não têm exatamente as mesmas camadas que o modelo OSI. Acamada ATM não tem as características de um protocolo de camada de enlace de dados: um protocolo com um único hop usado nas extremidades de uma conexão, como os protocolos de 1 a 6 do modelo OSI. Essa camada tem as características de um protocolo de camada de rede: roteamento, comutação e circuitos virtuais fim a fim.

A camada ATM é orientada à conexão, tanto em termos do serviço que oferece quanto na forma como opera internamente. O elemento básico da camada ATM é o circuito virtual [oficialmente chamado de canal virtual (virtual channel)]. Normalmente, um circuito virtual é uma conexão de uma origem para um destino, embora as conexões por multicast também sejam permitidas. Os circuitos virtuais são unidirecionais, mas um par de circuitos também pode ser criado ao mesmo tempo. Ambos os membros do par são endereçados pelo mesmo identificador; portanto, na prática um circuito virtual é full-duplex. No entanto, a capacidade do canal e as outras propriedades podem ser diferentes nas duas direções e, em alguns casos, podem ser iguais a zero.

A camada ATM é incomum para um protocolo orientado à conexão, pois não oferece confirmações. A justificativa desse projeto é que o ATM foi projetado para ser usado nas redes de fibra ótica, que são altamente confiáveis. Segundo essa concepção, seria adequado deixar o controle de erros para as camadas mais altas. Afinal de contas, o envio de confirmações na camada de enlace de dados ou na camada de rede não passa de uma otimização. Para a camada de transporte, basta enviar uma mensagem e, caso a confirmação não chegue no tempo predeterminado, enviá-la novamente.

Por essa razão, as redes ATM costumam ser usadas para tráfego em tempo real, como áudio e vídeo. Para esse tipo de tráfego, a retransmissão de uma célula com erro esporádica é pior do que ignorá-la.

Apesar da ausência de confirmações, a camada ATM oferece uma grande garantia: as células enviadas ao longo de um circuito virtual jamais chegarão fora de ordem. A sub-rede ATM pode descartar células se houver congestionamento, mas sob nenhuma condição poderá reordenar as células enviadas em um único circuito virtual. No entanto, as células enviadas em diferentes circuitos virtuais não têm qualquer garantia de ordenação. Por exemplo, se um host enviar uma célula no circuito virtual 10 e, mais tarde, enviar uma célula no circuito virtual 20 para o mesmo destino, a segunda célula poderá chegar primeiro. Se as duas células tivessem sido enviadas no mesmo circuito virtual, a primeira a ser enviada seria sempre a primeira a chegar.

A camada ATM suporta uma hierarquia de conexão de dois níveis visível para a camada de transporte. Ao longo do caminho de transmissão de uma determinada origem para um determinado destino, um grupo de circuito virtuais pode ser reunido de modo a criar o que se convencionou chamar de caminho virtual (virtual path), mostrado na figura abaixo.

Circuito Virtual     Caminho Virtual
   





Teoricamente, um caminho virtual é igual a um feixe de pares trançados: quando ele é rerroteado todos os pares (circuitos virtuais) também o são.



FORMATOS DE CÉLULA

Na camada ATM, existem duas interfaces distintas: a UNI (User-Network Interface) e a NNI (Network-Network Interface). A primeira define o limite entre um host e uma rede ATM (em muitos casos, entre c cliente e a concessionária de comunicações). A segunda diz respeito à linha entre dois comutadores ATM (o termo na tecnologia ATM que corres ponde aos roteadores).












(a) O cabeçalho da camada A TM na UNI.
(b)O cabeçalho da camada A TM na NNI

Os cabeçalhos apresentam uma pequena diferença: o formato NNI é igual ao formato UNI, com a exceção de que o campo GFC não está presente e que são usados 4 bits para que, em vez de 8, o campo VPI tenha 12 bits. As células são transmitidas a partir do byte mais à esquerda e do bit mais à esquerda contido em um byte. O campo GFC só é encontrado nas células existentes entre um host e a rede. Como é substituído pelo primeiro comutador que alcança, esse campo não tem significado fim a fim e não é entregue no destino. Originalmente, seu uso visaria a possibilidade de alguns controle de fluxo ou de prioridade entre os hosts e as redes; no entanto como não foram definidos valores para ele, a rede o ignora.

O campo VPI é um inteiro cuja finalidade é selecionar um determinado caminho virtual. Da mesma forma, o campo VCI seleciona um determinado circuito virtual dentro do caminho virtual escolhido. Como o campo VPI tem 8 bits (na UNI) e o VCI tem 16 bits, teoricamente um host poderia ter até 256 feixes de circuitos virtuais, que por sua vez contêm até 65.536 circuitos virtuais. Na verdade, esse número é um pouco menor, pois alguns VCI's estão reservados para funções de controle, como por exemplo a configuração de circuitos virtuais.

O campo PTI define o tipo de carga que a célula contém de acordo com os valores apresentados na tabela abaixo. Nesse caso, os tipos de célula são fornecidos pelo usuário, mas as informações sobre congestionamento são fornecidas pela rede. Em outras palavras, uma célula enviada com o PTI 000 deve chegar com 010 para que o destino tome conhecimento da ocorrência de problemas ao longo do caminho.

Tipo de carga útil

Significado

000

Célula de dados do usuário, sem congestionamento, tipo de célula 0

001

Célula de dados do usuário, sem congestionamento, tipo de célula 1

010

Célula de dados do usuário, presença de congestionamento, tipo de célula 0

011

Célula de dados do usuário, presença de congestionamento, tipo de célula 1

100

Informações de manutenção entre comutadores adjacentes

101

Informações de manutenção entre os comutadores de origem e de destino

110

Célula de Gerenciamento de Recursos (usada para controle de congestionamento com ABR)

111

Reservado para uma futura função

Valores do campo PTI

O bit CLP pode ser ativado por um host para distinguir um tráfego de maior prioridade de um tráfego de menor prioridade. Se houver congestionamento e as células tiverem de ser descartadas, os comutadores tentarão descartar as células com o bit CLP definido como 1 antes de eliminar as que tiverem o bit CLP definido como 0.

Por fim, o campo HEC é um soma de verificação que confere o cabeçalho. Essa soma não confere a carga. Um código de Hamming em um número de 40 bits exige apenas 5 bits; portanto, com 8 bits, é possível utilizar um código mais sofisticado. O código escolhido poderá corrigir todos os erros de um único bit, como também detectar cerca de 90 por cento de todos os erros de vários bits. Diversos estudos mostraram que a grande maioria dos erros nos enlaces óticos é de erros de um único bit.

Depois do cabeçalho, vêm 48 bytes de carga útil. No entanto, nem todos os 48 bytes estão disponíveis para o usuário, pois alguns protocolos ALL colocam seus cabeçalhos e trailers dentro da carga útil.



ESTABELECIMENTO DE CONEXÃO

O modelo ATM aceita os circuitos virtuais permanentes e os circuitos virtuais comutados. O primeiro é encontrado em todas as situações e pode ser usado à vontade, assim como as linhas privadas, Os outros circuitos têm de ser definidos sempre que forem usados, exatamente como acontece com as chamadas telefônicas, que será o tipo discutido.

Tecnicamente, o estabelecimento de conexão não pertence à camada ATM, mas é manipulada pelo plano de controle usando um protocolo ITU extremamente complexo cujo nome é Q.2931 (Stiller, 1995).

É possível estabelecer uma conexão de diversas formas. A mais comum, no entanto, é adquirir um circuito virtual para sinalização e usá-lo. Para estabelecer um circuito desse tipo, as células contendo uma solicitação são enviadas em um caminho virtual 0, o circuito virtual 5. Se não houver problemas, será estabelecido um novo circuito virtual, no qual as solicitações e respostas de estabelecimento de conexão podem ser enviadas e recebidas.

A razão para as duas etapas desse procedimento de estabelecimento é que, dessa forma, a largura de banda reservada para o circuito virtual 5 (que praticamente não é usado) pode ser mantida extremamente baixa. Outra alternativa também é oferecida para o estabelecimento de circuitos virtuais. Algumas concessionárias de comunicações podem permitir que os usuários tenham caminhos virtuais permanentes entre destinos predefinidos ou permitir que eles os definam dinamicamente. Quando um host tem um caminho virtual para outro host, ele pode alocar circuitos virtuais nele próprio, sem envolver os comutadores.

O estabelecimento de um circuito virtual utiliza os seis tipos de mensagem listados na tabela abaixo. Cada mensagem ocupa uma ou mais células e contém o tipo, o tamanho e os parâmetros da mensagem. As mensagens podem ser enviadas para a rede através de um host ou podem ser enviadas pela rede para um host (geralmente, em resposta a uma mensagem de outro host). Existe uma série de outras mensagens de registro de erro e status, que, no entanto, não são mostradas aqui.

Mensagem

Significado quando enviada pelo host

Significado quando enviada pela rede

SETUP

Estabeleça um circuito

Chamada recebida

CALL PROCEEDING

Vi a chamada recebida

A sua solicitação de chamada será processada

CONNECT

Aceito a chamada recebida

A sua solicitação de chamada foi aceita

CONNECT ACK

Obrigado por aceitar

Obrigado por fazer a chamada

RELEASE

Favor encerrar a chamada

O outro lado já teve o suficiente

RELEASE COMPLETE

Confirmação de RELEASE

Confirmação de RELEASE

Mensagens usadas para o estabelecimento e o encerramento da conexão

O procedimento normal para o estabelecimento de uma chamada é fazer com que um host envie a mensagem SETUP em um circuito virtual especial. Em seguida, a rede responde com CALL PROCEEDING para confirmar o recebimento da solicitação. Quando se propaga na direção do destino, a mensagem SETUP é confirmada em cada hop por CALL PROCEEDING.

Quando a mensagem SETUP finalmente chega, o host de destino pode responder com CONNECT para aceitar a chamada. Em seguida, a rede envia a mensagem CONNECT ACK para indicar que recebeu a mensagem CONNECT. Quando a mensagem CONNECT é propagada de volta na direção da origem, cada comutador que a receber deverá confirmá-la com uma mensagem CONNECT ACK. Essa seqüência de eventos é mostrada na figura abaixo, (a).


(a) Configuração de uma conexão em uma rede A TM
(b) Encerramento da conexão

A seqüência que encerra um circuito virtual é igualmente simples. O host que deseja desconectar-se só precisa enviar a mensagem RELEASE, que se propaga até a outra extremidade e faz com que o circuito seja encerrado. A mensagem é confirmada em cada um dos hops ao longo do caminho, como mostra a mesma figura, (b).

As redes ATM permitem a configuração de canais de multicast. Um canal de multicast tem apenas um transmissor e mais de um receptor. Para criá-los, é necessário configurar uma conexão para um dos destinos da maneira tradicional. Em seguida, a mensagem ADD PARTY é enviada para anexar um segundo destino ao circuito virtual retornado pela chamada anterior. Em seguida, podem ser enviadas novas mensagens ADD PARTY a fim de aumentar o tamanho do grupo de multicast.

Para configurar uma conexão com um destino, é preciso especificá-lo incluindo seu endereço na mensagem SETUP. Existem três tipos de endereço na rede ATM. O primeiro deles tem 20 bytes e é baseado nos endereços OSI. O primeiro byte revela o formato do endereço. No primeiro formato, os bytes 2 e 3 especificam um país, o byte 4 oferece o formato do restante do endereço, que contém uma autorização de 3 bytes, um domínio de 2 bytes, uma área de 2 bytes e um endereço de 6 bytes, além de alguns outros itens. No segundo formato, os bytes 2 e 3 identificam uma organização internacional, em vez de um país. O restante do endereço é igual ao do formato 1. Há uma forma mais antiga de endereçamento (CCITT E.164), que usa os números de telefone ISDN de 15 dígitos.



ROTEAMENTO E COMUTAÇÃO

Quando um circuito virtual é estabelecido, a mensagem SETUP percorre a rede da origem até o destino, O algoritmo de roteamento define o caminho a ser percorrido por essa mensagem e, conseqüentemente, pelo circuito virtual. Como o padrão ATM não especifica um algoritmo de roteamento em particular, a concessionária tem a liberdade de escolher um dos algoritmos já discutidos neste capítulo ou de usar outro.

A experiência com redes orientadas à conexão anteriores, como a X.25, mostrava que uma boa parte do potencial dos comutadores pode ser desperdiçada ao se definir a conversão das informações do circuito virtual contido em cada célula na linha de saída poder onde a célula será enviada. Como os projetistas da ATM queriam evitar esse problema, a camada da ATM foi projetada de modo a proporcionar o máximo de eficiência ao roteamento. Em particular, a idéia era rotear apenas pelo campo VPI, deixando o campo VCI apenas para o hop final em cada direção, quando as células são enviadas entre um comutador e um host. Entre dois comutadores, só pode ser usado um caminho virtual.

Há uma série de vantagens em usar apenas os VPI's entre os comutadores internos. Para começar, quando se estabelece um caminho virtual entre uma origem e um destino, os outros circuitos virtuais ao longo do percurso só podem seguir o caminho que já existe. Não se pode tomar qualquer nova decisão em termos de roteamento. E como se um feixe de pares trançados tivesse sido colocado entre a origem e o destino. A configuração de uma nova conexão exige apenas a alocação de um dos pares ainda não-usados.

Em segundo lugar, o roteamento de células individuais se torna mais fácil quando todos os circuitos virtuais de um determinado caminho já estão no mesmo feixe. A decisão de roteamento envolve apenas a observação de um número de 12 bits, e não de um número de 12 bits e outro de 16 bits. Mostraremos, a seguir, como é feita a comutação de células, mas, mesmo sem entrar em maiores detalhes, fica claro que é perfeitamente possível indexar uma tabela de 212 entradas, o que não acontece com uma tabela de 228 entradas.

Em terceiro lugar, quando se baseia todo o roteamento em caminhos virtuais fica mais fácil comutar um grupo inteiro de circuitos virtuais. Considere, por exemplo, um hipotético backbone ATM instalado nos Estados Unidos, como mostra a figura abaixo. Normalmente, os circuitos virtuais de NY para SF passam por Omaha e Denver. No entanto, suponha a ocorrência de problemas na linha Omaha-Denver. Com o rerroteamento do caminho virtual Omaha-Denver para LA e para SF, todos os caminhos virtuais (que podem chegar à casa de 65.535) podem ser comutados em apenas uma operação, em vez de em milhares de operações.


O rerroteamento de um caminho virtual redireciona todos os seus circuitos virtuais

Por fim, os caminhos virtuais permitem que as concessionárias de comunicações ofereçam grupos de usuários fechados (redes privadas) para clientes corporativos. Uma empresa pode configurar uma rede de caminhos virtuais permanentes entre seus diversos escritórios e em seguida alocar circuitos virtuais dentro desses caminhos de acordo com suas necessidades. Nenhuma chamada externa pode entrar na rede, assim como nenhuma chamada pode sair da rede privada, exceto quando gateways especiais são utilizados. Muitas empresas gostam desse tipo de segurança.

Só o tempo dirá se os comutadores vão usar o campo VPI para fazer o roteamento como planejado ou continuarão a usar a combinação dos campos VPI e VCI (negando, dessa forma, todas as vantagens aqui apresentadas). Os primeiros resultados obtidos com esse campo não foram muito animadores.

Vejamos agora como as células poderiam ser roteadas dentro de um comutador interno (que só está anexado a outros comutadores, não a hosts). Para sermos mais práticos, consideremos o comutador Omaha da figura apresentada anteriormente. Em cada uma de suas cinco linhas de entrada, há uma tabela, vpi_table, indexada pela VPI de entrada, cuja finalidade é identificar qual das cinco linhas de saída deve ser usada e qual VPI deve ser colocada nas células de saída. Vamos partir do princípio de que as cinco linhas são numeradas de 0 a 4, que são distribuídas no sentido horário a partir de Minneapolis. Em cada linha de saída, o comutador mantém um mapa de bits que identifica as VPI's que estão sendo usadas nessa linha.

Quando o comutador for inicializado, todas as entradas em todas as estruturas vpí_table serão assinaladas como inativas. Da mesma forma, todos os mapas de bits serão marcados para indicar que todas as VPIs estão disponíveis (exceto as reservadas). Imaginemos agora que as chamadas sejam feitas como mostra a tabela abaixo.

Origem

Linha de entrada

VPI de entrada

Destino

Linha de saída

VPI de saída

Caminho:

NY

1

1

SE

4

1

Novo

NY

1

2

Denver

4

2

Novo

LA

3

1

Minneapolis

O

1

Novo

DC

1

3

LA

3

2

Novo

NY

1

1

SE

4

1

Antigo

SE

4

3

DO

1

4

Novo

DC

1

5

SE

4

4

Novo

NY

1

2

Denver

4

2

Antigo

SE

4

5

Minneapolis

O

2

Novo

NY

1

1

SE

4

1

Antigo

Alguns roteamentos através de comutador – mapa apresentado anteriormente

À medida que os caminhos virtuais (e os circuitos virtuais) são configurados, são criadas entradas nas tabelas. Vamos partir do princípio de que os circuitos virtuais são full-duplex e, conseqüentemente, cada um deles resulta em duas entradas, uma para encaminhar o tráfego da origem e outra para inverter o tráfego do destino.

As tabelas correspondentes aos roteamentos da tabela acima são mostradas na tabela abaixo. Por exemplo, a primeira chamada gera a entrada (4, 1) para VPI 1 na tabela DC, pois faz referência às células que chegam na linha 1 com VPI 1 e que se destinam a SF. No entanto, também há uma entrada na tabela Denver para VPI 1 mostrando que as células provenientes de Denver com VPI 1 devem sair na linha 1 com VPI 1. Essas células estão trafegando pelo outro percurso (de SF para NY) desse caminho virtual. Observe que, em alguns casos, dois ou três circuitos virtuais estão compartilhando um caminho comum. Não são necessárias novas entradas de tabela para os novos circuitos virtuais que conectam uma origem e um destino e que já têm um caminho.


VPI_table

para Minn.


VPI_table

para DC


VPI_table

para Dallas


VPI_table

para LA


VPI_table

para Denver

Entrada

Saída


Saída


Saída


Saída


Saída

VPI

Linha

VPI


Linha

VPI


Linha

VPI


Linha

VPI


Linha

VPI

0















1

3

1


4






0

1


1

1

2

4

5


4






1

3


1

2

3




3









1

4

4




4









1

5

5




4









0

2

6















7















8





























4095
















Linha 0


Linha 1


Linha 2


Linha 3


Linha 4

As entradas de tarefas para os roteamentos da tabela apresentada anteriormente

Agora podemos explicar como as células são processadas dentro de um comutador. Suponhamos que uma célula chegue na linha 1 (DC) com VPI 3. O hardware ou o software do comutador usa o número 3 como um índice na tabela para a linha 1 e vê que essa célula deve sair na linha 3 (LA) com VPI 2. Ele sobrepõe o campo VPI com um 2 e coloca o número da linha de saída, 3, em alguma parte da célula; por exemplo, no campo HEC, que deverá ser recalculado posteriormente.

Agora a questão é saber como levar célula do buffer de entrada atual para a linha 3. Esse problema (roteamento dentro de um comutador) pode ser resolvido com comutadores knockout e Batcher-banyan.

Chegou a hora de vermos como um feixe de circuitos virtuais pode ser rerroteado, como acontece no mapa apresentado. Se mudarmos a entrada para VPI 1 na tabela DC de (4, 1) para (3, 3), as células de NY encaminhadas para SF serão desviadas para LA. É claro que o comutador de LA tem de ser informado desse evento, de modo que o comutador tenha de gerar e enviar uma mensagem SETUP para LA para estabelecer o novo caminho com VPI 3. Quando esse caminho tiver sido configurado, todos os circuitos virtuais de NY para SF serão rerroteados via LA, mesmo quando houver milhares deles. Se não houvesse caminhos virtuais, cada circuito virtual teria sua própria entrada de tabela e deveria ter um rerroteamento à parte.

Vale lembrar, no entanto, que essa discussão é sobre ATM em WANs. Em uma LAN, as questões são muito mais simples. Por exemplo, pode ser usado apenas um caminho virtual para todos os caminhos virtuais.



Referências Bibliográficas :

Tanenbaum, Andrew S., Redes de Computadores, 3ª Edição, Rio de Janeiro – RJ, Editora Campus, 1997.