# Asynchronous Transfer Mode

Asynchronous Transfer Mode (ATM) é, de acordo com o ATM Fórum, "um conceito de telecomunicações definido pelos padrões ANSI e ITU (formalmente CCITT) para transporte de uma variedade completa de tráfego de usuários, incluindo sinais de voz, dados e vídeo. O ATM foi desenvolvido para atender as necessidades do Broadband Integrated Services Digital Network, como definido em meados dos anos de 1980, e projetado para unificar as telecomunicações e as redes de computadores. Ela foi projetada para uma rede que deve manipular tanto tráfego tradicional de dados de altas taxas de transferência (e.g., transferências de arquivos), e conteúdo de baixa latência e de tempo real como voz e vídeo. O modelo de referência para o ATM mapeia aproximadamente às três camadas mais inferiores do modelo de referência OSI: camada de rede, camada de enlace de dados e camada física. O ATM é o protocolo núcleo usado sobre a espinha dorsal (backbone) SONET/SDH da rede pública de telefonia comutada (PSTN) e Rede Digital de Serviços Integrados (ISDN), mas seu uso está declinando em favor do todo IP.
O ATM fornece funcionalidade que é similar a redes de comutação de circuitos e comutação de pacotes: ele usa multiplexação por divisão de tempo assíncrona, e codifica os dados em pacotes (quadros ISO-OSI) pequenos e de tamanho fixo chamados de células. Isto difere-se das abordagens como o Internet Protocol ou o Ethernet que usam pacotes e quadros de tamanho variável. O ATM usa um modelo orientado a conexão no qual um circuito virtual deve ser estabelecido entre dois pontos fins antes que a real troca de dados inicie. Estes circuitos virtuais podem ser "permanentes", i.e. conexões dedicadas que são normalmente pré-configuradas pelo provedor de serviços, ou "comutados", i.e. configurados sobre uma base por-chamada usando sinalização e desconectados quando a chamada é terminada.
ATM, eventualmente, tornou-se dominada somente pela tecnologia Internet Protocol (IP).

## Histórico

O ATM surgiu em 1990 e é o nome dado a "Asynchronous Transfer Mode" [ Modo de Transferência Assíncrono ], desenvolvido pela International Telecommunications Union (ITU) e Internet Engineering Task Force (IETF). Foi desenhado como um protocolo de comunicação de alta velocidade que não depende de nenhuma topologia de rede específica. Usa uma tecnologia de comutação de células de alta velocidade que pode tratar tanto dados como vídeo e áudio em tempo real.

## Fórum ATM

Consórcio entre a UTI e IETF. O Forum ATM foi criado com o intuito de padronizar o ATM. O qual entregou para a sociedade uma referência que dividiu o ATM em três camadas: ATM Adaptive layer (AAL), a camada ATM e a camada física. Após várias fusões em 2009 fundiu-se com o Broadband Forum

## Estrutura

Baseado na tecnologia de comutação de pacotes através de circuitos virtuais, o ATM faz uso de pacotes (células) de tamanho fixo de 53 bytes (48 bytes de dados e 5 de cabeçalho). O campo de dados (também chamado de payload) é pequeno para otimizar o atraso na rede; eficiência da transmissão e a complexidade da implementação. O tamanho do payload foi definido entre a disputa entre Europa e EUA. O primeiro desejava 32 bytes de payload, o segundo 64. A solução foi a média aritmética entre os dois.
Este tipo de transmissão de dados é escalável, permitindo que as suas células possam ser transportadas de uma LAN para outra através de uma WAN. A velocidade do ATM começa em 25 Mbps, 51 Mbps, 155 Mbps e superiores. Estas velocidades podem ser atingidas com cabeamento de cobre ou fibra óptica (com a utilização exclusiva de cabeamento em fibra óptica pode-se atingir até 622.08 Mbps).
Por ser orientado a conexão é possível dar suporte à QoS em determinado tipo de rede.
As camadas ATM podem ser resumidas como abaixo:
* AAL: dá suporte a diferentes tipos de tecnologias;
* Camada ATM: define e estrutura da célula ATM;
* Camada física: interface com o canal de comunicação;

### Canais virtuais

O ATM faz uso de conexões virtuais para transportar os pacotes através da rede. A menor estrutura da comunicação ATM é o canal virtual (virtual channel - VC) que é a conexão entre os pontos transmissor/receptor. Apesar de aparentar apenas um circuito, são na realidade dois (uplink e downlink) e os dois possuem seus próprios QoS. Vários VC's podem ter o mesmo caminho entre os nodes (nós) da rede, assim eles são aglutinados em caminhos virtuais (Virtual Path - VP). Podem ser permanentes (Permanent Virtual Connections - PVC); chaveadas (Switched Virtual Connections- SVC) e semi permanentes (Soft Permanent Virtual Connections-SPVC). As conexões são configuradas manualmente para prevenir erros entre os pontos de conexão, apesar de tornar a programação dos caminhos muito complexa para o programador. Cada enlace da rede é chamado de enlace de caminho virtual (Virtual Path Link- VPL). Cada VC e VP tem sum número de identificação chamados VCI (virtual channel identifier) e VPI (virtual path identifier). Finalmente, o caminho fim-a-fim é chamado de conexão de caminho virtual (Virtual Path Connection - VPC). Esta estrutura pode ser resumida na imagem abaixo:

### Camada de adaptação ATM: AAL

Esta camada é responsável por adaptar o fluxo de informações o ATM e as camadas superiores suportando diferentes protocolos. Esta camada é regida pela recomendação I.362 e pode ser resumida conforme o quadro abaixo:
| Aspecto | CLASSE A | CLASSE B | CLASSE C | CLASSE D |
| Relação temporal entre fonte e destino | Requerida | Requerida | Não requerida | Não requerida |
| taxa de bits | Constante | Variável | Variável | Variável |
| modo de conexão | Orientado a conexão | Orientado a conexão | Orientado a conexão | Não orientado a conexão |
| protocolo | AAL 1 | AAL 2 | AAL ¾ E AAL 5 | AAL ¾ E AAL 5 |
É nesta camada que ocorre a fragmentação da informação, bem como a sua remontagem

### Célula ATM

Todo pacote ATM é formado por um cabeçalho e mais payload. O cabeçalho tem o tamanho máximo de 5 bytes e é composto por:
Generic Flow Control:informações entre cliente e switch o qual permite ao primeirio switch da rede controlar o fluxo de dados, contudo não é utilizado. Usa 4 bits de dados.
Virtual Path Identifier: identifica qual VPI utilizar. No switch somente a tabela de comutação é guardada, e não o circuito. Usa 8 bits de dados na célula UNI e 12 na NNI.
Virtual Channel Identifier: identificação do canal virtual. Usa 16 bits de dados. Juntamente com os 8 ou 12 bits de endereçamento do VPI é possível configurar 256 ou 4096 caminhos e mais de 65 mil canais diferentes para uma célula.
Payload Type Identifier: informa o tipo de dado que está sendo transmitido. Esta no formato de 3 bits, e identifica conforme a tabela abaixo:
Cell Loss Priority: identifica a prioridade da célula em caso de congestionamento.
Header Error Check : CRC, faz uso do polinômio $X^{8}+X^{2}+X+1$
Abaixo pode ser visto a estrutura dos dois tipos de cabeçalhos:
Célula UNI (user-to-network interface)
Célula NNI (networ-to-network interface)
Significados dos vários campos da célula ATM
* Os campos VCI (Virtual Chanel Identifier) e VPI(Virtual Path Identifier) são os campos necessários para que os computadores possam efetuar a comutação das células
* O campo PT identifica o tipo de célula, que pode ser:
* Qualquer nó congestionado pode modificar, assim que recebe a célula, o seu cabeçalho de forma a indicar que a célula passou por um nó em congestionamento.
* O campo CLP(Cell Loss Priority) indica a prioridade para o descarte de células pelos computadores. O valor CLP=1 para uma célula implica que, caso o nó tenha que descartar, esta célula será descartada primeiro.
* O campo HEC(Header Error Check) é utilizado para a verificação de erros de transmissão. O HEC permite à camada física a verificação da integridade do cabeçalho.
* O campo GFC aparece somente no cabeçalho das células UNI. Algumas alternativas para uso deste campo seriam para marcar como ociosa a célula, ou para marcá-la como sendo de informação de manutenção e operação da camada física.