Comutação/Transferência de Dados

André Moreira (andre@dei.isep.ipp.pt)
Professor Adjunto do Departamento de Engenharia Informática do ISEP

Na maioria dos casos os nós entre os quais se pretende transferir informação não estão ligados por uma linha dedicada, basicamente porque se pretende que de um dado conjunto de E nós, qualquer um deles possa comunicar com qualquer um dos outros (E-1) nós.

Em termos de topologia (disposição física dos nós e das linhas) a situação descrita é conhecida por "fully-connected", contudo torna-se rápidamente impraticável com o aumento do número de estações, já que são necessárias E x (E-1)/2 linhas, além disso em cada nó necessita de (E-1) interfaces para assegurar as ligações.

Número de nós 2 3 4567...10...20
Linhas dedicadas necessárias 1 3 6101521...45...190
Interfaces/cada nó 1 2 3456...9...19

Para tornar viável a comunicação entre um grande número de nós surge o conceito de rede de comunicação, trata-se acima de tudo de um serviço de transferência de dados entre nós.

Cada nó possui uma única interface ligada à rede, esta assegura a transferência de dados entre qualquer um dos nós que lhe estão ligados.

Numa topologia "full-connected" o nó de destino para os dados emitidos está implicito pois para cada destino possível existe uma interface separada. Numa rede de comunicação corrente, cada nó possui apenas uma interface que usa para comunicar com qualquer um dos outros nós. Quando um nó emite dados torna-se necessário indicar à rede qual é o nó de destino para esses dados, para o efeito utilizam-se endereços.

Cada nó ligado a uma rede de comunicação possui um endereço unico que o identifica, a rede lida com os endereços de forma a fazer chegar os dados ao nó correcto.

As redes de comunicação podem ser divididas em duas categorias distintas:

  • Redes de "Broadcast"
  • Redes de Comutação

As redes de "broadcast" são essencialmente usadas em implementações locais (LAN), trata-se de implementações em que a funcionalidade da rede é em grande parte transferida para os nós. A rede em sí é apenas um meio físico partilhado por todos os nós, os dados emitidos chegam a todos os nós (daí a designação "broadcast"), cada nó procede a uma filtragem, eliminando os dados que não lhe são destinados.

Mesmo no domínio LAN as redes de "broadcast" são cada vez menos usadas em favor de soluções comutadas. O acesso ao meio condicionado das redes "broadcast" produz eficiências baixas.

Um exemplo critico é o das redes Ethernet (802.3) que usam o mecanismo de acesso CSMA/CD. Sob uma taxa de transmissão de 10 Mbps dificilmente se obtém taxas efectivas superiores a 1 Mbps, as implementações Fast Ethernet (100 Mbps) dificilmente atingem débitos superiores a 10 Mbps. Também aqui a evolução mais aconselhável é no sentido da comutação.

Redes de Comutação

As redes de comutação são constituidas por um conjunto de nós intermédios, com várias ligações entre sí, mas geralmente com uma topologia mais simples do que "full-connected" (por razões económicas).

Os nós intermédios funcionam como um conjunto que assegura que os dados chegam ao destino correcto, o modo como a rede assegura a transferência dos dados pode obdecer a vários principios, dado origem a diversos tipos de rede de comutação.

Comutação de circuitos

Trata-se de uma técnica na qual a rede assegura um circuito físico entre emissor e receptor, a comunicação é constituida por três fases caracteristicas:

- Estabelecimento do circuito físico
nesta fase a rede, mediante o endereço de destino une sucessivos circuitos desde o nó de origem até chegar ao nó de destino.
- Transferência de dados
depois de estabelecido o circuito físico através da rede os dois nós podem comunicar como se existisse uma linha dedicada a unir os dois.
- Terminação do circuito
por ordem de um dos nós o circuito é desactivado, libertando os recursos ocupados na rede.

A comutação de circuitos físicos é uma técnica bastante rudimentar, usada por exemplo nas redes telefónicas publicas, tendo algumas caracteristicas que interessa destacar:

  1. Existe um atraso inicial para o estabelecimento do circuito físico
  2. Depois de estabelecido o circuito físico a tranferência de dados é feita a uma taxa constante, sem atrasos assinaláveis nos nós intermédios
  3. Quando dois nós estão em comunicação encontram-se totalmente inacessiveis para terceiros.
  4. A gestão dos recursos pela rede é muito deficiente: os recursos necessários à comunicação ficam reservados durante toda a comunicação, independentemente da utilização que tiverem.
  5. Sob taxas de utilização muito elevadas a rede pode simplesmente recusar o estabelecimento do circuito por falta de recursos.

Comutação de mensagens

Trata-se do envio de mensagens através da rede, nó a nó desde a origem até ao destino, não existe qualquer fase anterior ao envio de dados, a mensagem é enviada para a rede juntamente com o endereço de destino e a rede encarrega-se de a fazer chegar ao destino.

O conceito de mensagem é aqui extremamente lato, trata-se de blocos de dados de qualquer tipo, mas que deverão ser autónomos. Por exemplo se pretendemos transferir um ficheiro, o ficheiro é a mensagem e é enviado integralmente numa unica emissão nunca podendo ser dividido em bocados.

As mensagens são integralmente recebidas em cada nó por onde passam, só depois são enviadas ao nó seguinte ("store & forward"), este processo introduz atrasos significativos. Sendo n o número de nós pelos quais a mensagem passa (também conhecido por número de "hop's"), o atraso total será n x Tt, ignorando atrasos de propagação, processamento e espera em filas nos nós.

Os exemplos correntes no nível 2 escasseiam, mas existem alguns casos bem conhecidos no nível de aplicação, o mais notório é sem dúvida o dos sistemas de correio electrónico.

A comutação de mensagens introduz uma seria de possibilidades que não existiam na comutação de circuitos e anula alguns dos seus inconvenientes:

  1. A utilização dos recursos é muito mais eficiênte pois as linhas apenas são ocupadas durante o tempo necessário à transferência das mensagens entre os nós.
  2. Por muito elevada que seja a utilização existe sempre a possibilidade de as mensagens circularem, embora com atrasos por espera nos nós
  3. Não existe necessidade de o nó de destino estar activo, a rede pode armazenar a mensagem e entregar mais tarde.
  4. Os atrasos nos nós são significativos.
  5. A mensagem pode ter diversos destinos sendo copiada pela rede de modo a ser entregue a todos eles.
  6. O conceito de mensagem e os atrasos produzidos tornam este tipo de comutação inadequado para trocas intensas de pequenas quantidades de informação entre nós (tráfego interactivo).
  7. Uma vez que uma mensagem é transmitida sucessivamente entre nós consecutivos o controle de fluxo e erros pode ser realizado pela própria rede.
  8. A rede pode ser heterogénea, nomeadamente com velocidades de trasmissão distintas no seu interior.
  9. Fica aberto caminho para a definição de graus de prioridade: em cada saída de cada nó existe uma fila de espera. As filas de espera são habitualmente geridas com uma disciplina de serviço FCFS ("First Come First Served"), mas é simples implementar um sistema de prioridades.

Comutação de Pacotes

Os grandes problemas levantados pela comutação de mensagens poderiam ser resolvidos se os dados a enviar forem divididos em blocos mais pequenos.

Na comutação de pacotes são impostas restrições quanto à quantidade de informação a enviar de cada vez, esses blocos de informação tomam a designação genérica de pacotes, ou especificamente na camada de ligação lógica a designação de "tramas" ("frames").

Geralmente as "tramas" possuem tamanho variável até um valor máximo imposto. Imagine-se o envio de um ficheiro, raramente uma única "trama" será suficiente, a questão é saber como a rede vai lidar com uma sequência de "tramas" que estão relacionadas entre sí.

O problema é que se as "tramas" forem tratadas pela rede com mensagens os caminhos seguidos pelas "tramas" poderão ser diferentes e podem chegar ao destino em ordem diversa da de emissão.

Existem duas abordagens para este problema:

Datagramas
nesta abordagem ignora-se o problema que fica delegado para os níveis superiores resolverem, um serviço de "datagramas" não garante a ordem de entrega.
Circuitos Virtuais
esta técnica utiliza alguns principios da comutação de circuitos, mas o circuito é meramente lógico. Existem igualmente três fases na comunicação:
  1. Estabelecimento do circuito virtual - o nó de origem pede à rede um circuito virtual para ligação a um dado endereço de destino, a rede define um caminho e atribui-lhe um identificador que devolve ao nó.
  2. Transmissão - as "tramas" são enviadas, mas em lugar do endereço de destino contêm o identificador do caminho a seguir, deste modo todas as "tramas" seguem o mesmo caminho, estando por isso a ordem assegurada.
  3. Terminação do Circuito Virtual

A figura seguinte ilustra o comportamento das técnicas descritas numa rede com dois nós intermédios:

O caso mais divulgado de aplicação da comutação de pacotes é o protocolo X.25.

As redes X.25, implementam comutação de pacotes que assenta (encapsulamento) sobre a transmissão de "tramas" na camada de ligação lógica segundo o protocolo LAP-B (idêntico ao HDLC).

Na altura em que surgiram as redes X.25 a qualidade das linhas de transmissão era muito baixa e os erros de transmissão extremamente frequentes. As redes X.25 proporcionam comunicações fiáveis sobre as piores condições, para o conseguirem implementam controlo de erros independente em cada linha interna da rede.

Algumas das caracteristicas das redes X.25 são:

  • Controlo de fluxo e de congestão duplicado: para "tramas" e para pacotes
  • O controlo de erros linha a linha, no nível de pacote.
  • Encaminhamento ("routing") no nível de pacote.
  • Detecção de erros nas "tramas".
  • Pacotes de tamanho variável

Todas estes mecanismos tornam a especificação X.25 bastante pesada, a qualidade actual das linhas de transmissão torna desnecessário tantos mecanismos que tendem a tornar as redes menos eficiêntes.

Como é do conhecimento geral, quanto menos mecanismos de controlo forem implementados maior será a eficiência, desde que não ocorram erros. Por esta razão surgiram recentemente alternativas ao X.25 que são na realidade implementações parciais onde alguma funcionalidade original é eliminada:

  • "Packet Relay"
  • "Frame Switch"
  • "Frame Relay"
  • "Cell Relay"

Surgem aqui duas designações para a transferência de dados "relaying" e "switching".

"Relaying"
A designação "relaying" refere-se a uma operação não fiável, sem armazenamento nos nós intermédios, logo sem controlo de erros ou fluxo. Os nós funcionam em modo "cut-through": a informação necessária para executar o algoritmo de encaminhamento encontra-se no inicio dos pacotes, assim o pacote começa a ser emitido antes de ter sido integralmente recebido.
O funcionamento em modo "cut-through" tem a vantagem de diminuir substancialmente os atrasos nos nós, mas inviabiliza o bloqueio de pacotes com erro já que só é possivel saber se existe algum erro após a leitura integral do pacote. Outra desvantagem do modo "cut-through" é que a taxa de transmissão deve ser a mesma em toda a rede.
Nota-se que o modo "cut-through" é optimista e supõe que a linha de destino se encontra livre, se não for esse o caso ou passa a "store & forward" ou perde o pacote.
"Switching"
A designação "switching" refere-se a uma operação fiável, com armazenamento obrigatório nos nós intermédios, os pacotes com erro são bloqueados nos nós, os próprios nós intermédios implementam geralmente o controlo de fluxo e podem ou não implementar controlo de erros. Este modo de operação é normalmente conhecido por "store & forward".
Relay vs. Switching / Cut-through vs. Store & Forward

"Packet Relay"

Os pacotes de nível 3 apenas asseguram o encaminhamento, são encapsulados em "tramas" (nível 2) que asseguram o controlo de fluxo.

"Frame Switch"

Não implementa o nível 3, logo não trabalha com pacotes, apenas "tramas". As "tramas" são fiáveis, implementam controlo de fluxo e erros ("janela deslizante") e claro asseguram as funções de encaminhamento.

"Frame Relay"

Versão não fiável do "Frame Switch", apenas pode ser usado em linhas de elevada qualidade. Não existe controlo de fluxo ou erros.

Sem qualquer controlo de erros toma a designação "Frame Relay Type 1". Na implementação "Frame Relay Type 2" efectua controlo de erros na interface exterior da rede (entre os dois pontos de ligação à rede), os nós intermédios continuam a funcionar em "cut-through".

"Cell Relay"

Trata-se de uma variante do "Frame Relay Type 2". Proporciona controlo de fluxo e erros apenas entre os nós finais. No interior da rede os nós asseguram apenas o encaminhamento.

As "tramas" possuem um tamanho fixo e tomam a designação de células. Esta é a técnica usada nas redes ATM.