UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE I NFORMÁTICA E DE ESTATÍSTICA CURSO DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO ARQUITETURA DE REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA [email protected] Maio / 2000 VITÓRIO BRUNO MAZZOLA obteve o título de Engenheiro Eletricista pela Universidade Federal de Santa Catarina (UFSC) em 1981 e o título de Mestre em Engenharia Elétrica pela mesma instituição em 1985. Em 1991, obteve o diploma de Doutor em Informática Industrial pela Université Paul-Sabatier em Toulouse (França). É professor da UFSC desde 1985, tendo atuado por mais de 10 anos junto ao Departamento de Engenharia Elétrica, tendo desenvolvido suas atividades de pesquisa no Laboratório de Controle e Microinformática (LCMI). Atualmente, ocupa o cargo de Professor Titular da UFSC, estando lotado no Departamento de Informática e de Estatística (INE), onde entre outras atividades, atua como Coordenador de Pesquisas do INE. Com relação à participação junto a sociedades científicas, foi Diretor-Secretário da Sociedade Brasileira de Automática entre 1993 e 1995 e ocupou o cargo de Diretor-Regional Sul e de membro do Conselho Técnico-Administrativo desta mesma Sociedade no biênio 1996-1998. Suas áreas de atuação são, prioritariamente, Redes de Computadores e Engenharia de Software. Endereço para contato: Prof. Vitório Bruno Mazzola Departamento de Informática e de Estatística Universidade Federal de Santa Catarina Campus Universitário — Trindade 88040-900 — Florianópolis — SC Tel.: (048) 331-9498 / 9971-3975 Fax: (048) 331-9566 E-mail: [email protected] http://www.inf.ufsc.br/~mazzola SUMÁRIO CAPÍTULO 1 1. 2. 3. 4. 5. INTRODUÇÃO ÀS REDES DE COMUNICAÇÃO Histórico das Redes de Comunicação.................................................................1.1 Importância das Redes de Comunicação ............................................................1.2 Extensão e Topologia............................................................................................1.2 Aspectos Arquiteturais ..........................................................................................1.4 Tecnologias de Transmissão de Dados...............................................................1.9 CAPÍTULO 2 1. 2. 3. 4. 5. 6. 7. O MODELO DE REFERÊNCIA OSI Introdução..............................................................................................................2.1 Fundamentos e Arquitetura...................................................................................2.1 Serviços e Protocolos ...........................................................................................2.3 A Arquitetura OSI e as Funções das Camadas ...................................................2.4 A Comunicação no OSI ........................................................................................2.7 Os Conceitos do Modelo OSI ...............................................................................2.7 As Primitivas de Serviço.....................................................................................2.10 CAPÍTULO 3 1. 2. 3. 4. 5. 6. 7. 8. AS SETE CAMADAS DO MODELO OSI Introdução..............................................................................................................3.1 A Camada Física ..................................................................................................3.1 A Camada de Enlace de Dados ...........................................................................3.5 A Camada de Rede.............................................................................................3.10 A Camada de Transporte....................................................................................3.16 A Camada de Sessão.........................................................................................3.21 A Camada de Apresentação...............................................................................3.28 A Camada de Aplicação......................................................................................3.36 —i— ARQUITETURA DE REDES DE COMPUTADORES — SUMÁRIO CAPÍTULO 4 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. AS REDES LOCAIS Introdução..............................................................................................................4.1 Classificação das Redes de Computadores........................................................4.1 Parâmetros de Comparação ................................................................................4.2 Características das Redes Locais .......................................................................4.3 Histórico ................................................................................................................4.4 Definições Básicas ...............................................................................................4.4 RM-OSI e as Redes Locais ..................................................................................4.5 Os Sistemas Operacionais de Rede....................................................................4.6 O Padrão IEEE 802...............................................................................................4.7 Ethernet 802.3.....................................................................................................4.10 A Rede Local Ethernet ........................................................................................4.12 Configuração da Ethernet ...................................................................................4.15 Fast Ethernet.......................................................................................................4.15 Token Ring e IEEE 802.5....................................................................................4.16 Cabeamento Estruturado....................................................................................4.18 CAPÍTULO 5 1. 2. 3. 4. 5. 6. 7. 8. REDES LOCAIS INDUSTRIAIS Introdução..............................................................................................................5.1 Níveis Hierárquicos da Integração Fabril ..............................................................5.1 As Redes na Empresa..........................................................................................5.2 Aspectos da Comunicação em Ambiente Industrial.............................................5.2 Características Básicas das Redes Industriais ...................................................5.4 Projetos de Padronização de Redes Industriais ..................................................5.6 Projeto MAP...........................................................................................................5.7 Redes Fieldbus ...................................................................................................5.16 CAPÍTULO 6 1. 2. 3. 4. 5. 6. 7. PROF. VITÓRIO BRUNO MAZZOLA INTERCONEXÃO DE REDES Introdução..............................................................................................................6.1 Aspectos da Conectividade ..................................................................................6.2 A Interconexão segundo o Modelo OSI.................................................................6.3 As Diferentes Possibilidades de Interconexão .....................................................6.4 As Pontes ..............................................................................................................6.4 Os Roteadores......................................................................................................6.6 As Passarelas .......................................................................................................6.8 — ii — ARQUITETURA DE REDES DE COMPUTADORES — SUMÁRIO CAPÍTULO 7 1. 2. 3. 4. 5. 6. 7. ENGENHARIA DE PROTOCOLOS Introdução..............................................................................................................7.1 As Etapas de Concepção dos Protocolos de Comunicação...............................7.1 Especificação de Protocolos de Comunicação ...................................................7.2 A Validação de Protocolos de Comunicação .....................................................7.11 A Implementação dos Protocolos de Comunicação ..........................................7.19 O Teste de Protocolos de Comunicação ...........................................................7.19 Conclusão .......................................................................................................... 7.20 CAPÍTULO 8 1. 2. 3. 4. 5. 6. 7. 8. 9. REDES DE PETRI Introdução ........................................................................................................... 8.1 Redes de Petri — Definição Básica................................................................... 8.1 Propriedades das Redes de Petri ...................................................................... 8.6 Representação de Dados e de Aspectos Temporais...................................... 8.12 Redes de Petri Coloridas ................................................................................. 8.15 Redes de Petri Predicados-Transições ........................................................... 8.18 Redes de Petri Temporizadas ......................................................................... 8.21 Redes de Petri Temporais ............................................................................... 8.22 Conclusão......................................................................................................... 8.24 CAPÍTULO 9 1. 2. 3. 4. A TÉCNICA ESTELLE Introdução..............................................................................................................9.1 As Técnicas de Descrição Formal Padronizadas................................................9.1 A Técnica de Descrição Formal Estelle ...............................................................9.2 Os Trabalhos Realizados em torno de Estelle...................................................9.18 CAPÍTULO 10 1. 2. 3. 4. PROF. VITÓRIO BRUNO MAZZOLA ESTADO DA ARTE EM REDES Introdução............................................................................................................10.1 A Rede Digital de Serviços Integrados - ISDN....................................................10.1 A Rede FDDI.......................................................................................................10.8 A Pesquisa em Redes de Comunicação - Estado da Arte ................................10.9 BIBLIOGRAFIA............................................................................................................... B.1 — iii — Capítulo 1 AS REDES 1. DE COMPUTADORES HISTÓRICO DAS REDES DE COMUNICAÇÃO A evolução da microeletrônica e da informática tem possibilitado a obtenção de processadores e outros componentes de computadores cada vez mais potentes e velozes, num tamanho mais reduzido e num preço cada vez mais acessível a um maior número de pessoas. Os microprocessadores existentes hoje em dia e que ocupam o espaço menor do que uma caixa de fósforos substituem e ultrapassam as capacidades dos computadores de alguns anos atrás, que ocupavam salas inteiras. Estes eram máquinas bastante complexas no que diz respeito à sua utilização e que ficavam em salas isoladas onde muito poucas pessoas tinham acesso, sendo operadas apenas por especialistas (analistas de sistema). Os usuários daqueles computadores normalmente submetiam seus programas aplicativos como jobs (ou tarefas) que executavam sem qualquer interação com o processamento do programa. Uma primeira tentativa de interação com o computador ocorreu no início dos anos 60, com a técnica de time-sharing, que foi o resultado do desenvolvimento das tele-impressoras e da tecnologia de transmissão de dados. Nesta técnica um conjunto de terminais era conectado a um computador central através de linhas de comunicação de baixa velocidade, o que permitia aos usuários interagir com os seus programas. A necessidade de conexão de terminais para o processamento interativo foi o ponto de partida para o estabelecimento de necessidades de comunicação nos computadores. A técnica de time-sharing permitia a um grande conjunto de usuários o compartilhamento de um único computador para a resolução de uma grande diversidade de problemas e as aplicações desenvolvidas foram cada vez mais se multiplicando e se diversificando (cálculos complexos, produção de relatórios, ensino de programação, aplicações militares, etc...). Este aumento na demanda implicava numa necessidade crescente de atualizações e incrementos nas capacidades de cálculo e de armazenamento nas unidades central o que nem sempre era viável ou possível, dado que os computadores do tipo mainframes nem sempre eram adaptados para suportar determinadas extensões. Nos anos 70, com o surgimento dos minicomputadores, foi possível adaptar as capacidades de processamento às reais necessidades de uma dada aplicação. Além disso, dado que a nível de uma empresa um grande número de usuários operavam sobre conjuntos comuns de informações, a necessidade do compartilhamento de dados, de dispositivos de armazenamento e de periféricos entre os vários departamentos de uma empresa deu um novo impulso aos trabalhos no sentido de se resolver os problemas de comunicação entre os computadores. Este novo tipo de aplicações exigia uma velocidade e uma capacidade de transmissão muito mais elevadas que no caso da conexão de terminais a um computador central. Assim, com a utilização de minicomputadores interconectados, obtinha-se uma capacidade de processamento superior àquela possível com a utilização dos mainframes. Outro aspecto interessante é que as redes podiam ser estendidas em função — 1.1 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA das necessidades de processamento das aplicações. Além disso, a modularidade natural das redes de computadores era tal que uma falha num minicomputador (ou de comunicação da rede) tinha um efeito bastante limitado em relação ao processamento global. Atualmente, as vantagens dos sistemas distribuídos e interconectados são uma evidência reconhecida para as aplicações mais diversas, desde a automação de escritórios até o controle de processos, passando por aplicações de gerenciamento bancário, reservas de passagens aéreas, processamento de texto, correio eletrônico, etc... 2. IMPORTÂNCIA DAS REDES DE COMUNICAÇÃO Um grande número de empresas possui atualmente uma quantidade relativamente grande de computadores operando nos seus diversos setores. Um exemplo deste fato é aquele de uma empresa que possui diversas fábricas contendo cada uma um computador responsável das atividades de base da fábrica (controle de estoques, controle da produção e, o que também é importante, a produção da folha de pagamentos). Neste exemplo, apesar da possibilidade de operação destes computadores de maneira isolada, é evidente que sua operação seria mais eficiente se eles fossem conectados para, por exemplo, permitir o tratamento das informações de todas as fábricas da empresa. O objetivo da conexão dos diferentes computadores da empresa é permitir o que poderíamos chamar de compartilhamento de recursos, ou seja, tornar acessíveis a cada computador todos os dados gerados nas diversas fábricas da empresa. Um outro ponto importante da existência das Redes de Comunicação é relacionado a um aumento na confiabilidade do sistema como um todo. Pode-se, por exemplo, ter multiplicados os arquivos em duas ou mais máquinas para que, em caso de defeito de uma máquina, cópias dos arquivos continuarão acessíveis em outras máquinas. Além disso, o sistema pode operar em regime degradado no caso de pane de um computador, sendo que outra máquina pode assumir a sua tarefa. A continuidade de funcionamento de um sistema é ponto importante para um grande número de aplicações, como por exemplo: aplicações militares, bancárias, o controle de tráfego aéreo, etc. A redução de custos é uma outra questão importante da utilização das Redes de Comunicação, uma vez que computadores de pequeno porte apresentam uma menor relação preço/desempenho que os grandes. Assim, sistemas que utilizariam apenas uma máquina de grande porte e de custo muito elevado podem ser concebidos à base da utilização de um grande número de microcomputadores (ou estações de trabalho) manipulando dados presentes num ou mais servidores de arquivos. 3. EXTENSÃO E TOPOLOGIA 3.1. Redes locais e redes de longa distância Na seção anterior foram apresentados dois exemplos de implementação de Redes de Comunicação: no primeiro caso, o sistema era composto de diversos computadores espalhados cada um numa fábrica da empresa. No segundo caso, o sistema era composto de diversos microcomputadores, podendo todos estar localizados na mesma sala ou em salas vizinhas num mesmo edifício. A diferença na dimensão das Redes de Comunicação introduz diferentes problemas e necessidades e deve então, fazer objeto de uma classificação. No que diz respeito ao exemplo dos microcomputadores, a rede é classificada como sendo uma Rede Local (ou LAN - Local Área Network), caracterizada particularmente por uma pequena extensão, limitando-se normalmente à interconexão de computadores localizados numa mesma sala, num mesmo prédio ou num campus. No exemplo da empresa possuindo diversas fábricas, a rede utilizada permitiria conectar computadores localizados em diferentes prédios numa mesma cidade ou mesmo — 1.2 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA em cidades distantes de uma dada região. Esta caracteriza uma Rede de Longa Distância ou Rede Geograficamente Distribuída (ou WAN - Wide Área Network). 3.2. As diferentes topologias Um ponto importante no que diz respeito à concepção de uma rede de comunicação é a definição da maneira como as diferentes estações serão associadas. Inicialmente, podemos distinguir dois tipos principais de concepção: os canais em modo ponto-a-ponto e os canais de difusão. Nos canais em ponto-a-ponto, a rede é composta de diversas linhas de comunicação, cada linha sendo associada à conexão de um par de estações. Neste caso, se duas estações devem se comunicar sem o compartilhamento de um cabo, a comunicação será feita de modo indireto, através de uma terceira estação. Assim, quando uma mensagem (ou pacote) é enviada de uma estação a outra de forma indireta (ou seja, através de uma ou mais estações), ela será recebida integralmente por cada estação e, uma vez que a linha de saída da estação considerada está livre, retransmitida à estação seguinte. Esta política de transmissão é também conhecida por “store and forward” ou comutação de pacotes. A maior parte das redes de longa distância são do tipo ponto-aponto. As redes ponto-a-ponto podem ser concebidas segundo diferentes topologias. As redes locais ponto-a-ponto são caracterizadas normalmente por uma topologia simétrica; as redes de longa distância apresentam geralmente topologias assimétricas. A figura 1.1 apresenta as diferentes topologias possíveis nas redes ponto-a-ponto. Uma outra classe de redes, as redes de difusão, são caracterizadas pelo compartilhamento, por todas as estações, de uma linha única de comunicação. Neste caso, as mensagens enviadas por uma estação são recebidas por todas as demais conectadas ao suporte, sendo que um campo de endereço contido na mensagem permite identificar o destinatário. Na recepção, a máquina verifica se o endereço definido no campo corresponde ao seu e, em caso negativo, a mensagem é ignorada. As redes locais pertencem geralmente a esta classe de redes. Nas redes de difusão, existe a possibilidade de uma estação enviar uma mesma mensagem às demais estações da rede, utilizando um código de endereço especial; neste caso, todas as estações vão tratar a mensagem recebida. Figura 1.1 - Topologias ponto-a-ponto: estrela, anel, malha regular, malha irregular e árvore. — 1.3 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA Pode-se ainda especificar uma mensagem de modo que esta seja enviada a um subgrupo de estações da rede. A figura 1.2 apresenta algumas topologias possíveis no caso das redes a difusão. Numa rede em barramento, uma única máquina é autorizada a cada instante a transmitir uma mensagem — é a estação mestre do barramento. As demais estações devem esperar autorização para transmissão. Para isto, um mecanismo de arbitragem deve ser implementado para resolver possíveis problemas de conflito (quando duas ou mais estações querem enviar uma mensagem), este mecanismo podendo ser centralizado ou distribuído. No caso das redes de satélite (ou rádio), cada estação é dotada de uma antena através da qual pode enviar e receber mensagens. Cada estação pode “escutar” o satélite e, em alguns casos, receber diretamente as mensagens enviadas pelas demais estações. No caso do anel, cada bit transmitido é propagado de maneira independente em relação à mensagem (ou pacote) ao qual ele pertence. Em geral, cada bit realiza uma volta completa do anel durante o tempo necessário para a emissão de um certo número de bits, antes mesmo da emissão completa da mensagem. Também nesta topologia, é necessária a implementação de um mecanismo de acesso ao suporte de comunicação. Existem diferentes técnicas para este fim que serão discutidas ao longo do curso. As redes de difusão podem ainda considerar duas classes de mecanismos de acesso ao suporte de comunicação: estáticas ou dinâmicas. Um exemplo do primeiro caso é a definição de intervalos de tempo durante os quais cada estação tem a posse do canal de comunicação, permitindo então que esta emita a mensagem de maneira cíclica. No entanto, esta política é bastante ineficiente do ponto de vista do envio das mensagens, uma vez que muitas estações não vão enviar mensagens nos intervalos a elas destinadas. Já na outra classe de mecanismos, dinâmicos, o acesso é dado às estações segundo a demanda de envio de mensagens. Nos mecanismos de acesso dinâmicos, pode-se ainda considerar dois casos: • os mecanismos centralizados, nos quais uma estação central (árbitro) é a responsável da definição do direito de acesso ao suporte de comunicação; • os mecanismos distribuídos, nos quais cada estação define quando ela vai emitir a mensagem. 4. ASPECTOS ARQUITETURAIS 4.1. Serviços necessários à comunicação Como visto nas seções precedentes, as redes de computadores podem se caracterizar por diferentes configurações e topologias. Apesar da diversidade no que diz respeito a este aspecto, todas as possíveis configurações têm um objetivo comum — a transferência de dados. Figura 1.2 - Topologias das redes de difusão: barramento, satélite e anel — 1.4 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA O problema que se coloca é então relacionado à especificação dos procedimentos e mecanismos que devem ser implementados para viabilizar o funcionamento da rede. A resolução deste problema é baseada principalmente no conhecimento prévio das funções que devem ser suportadas pela rede, assim como do ambiente no qual ela vai ser inserida. Estes aspectos serão mostrados aqui através de alguns exemplos. O primeiro exemplo é baseado nas políticas de time-sharing já descrita na seção 1. Vamos considerar o caso em que temos apenas um terminal conectado a um computador, como mostrado na figura 1.3. Considerando que um usuário vai servir-se do terminal para processar informações no computador central, para que isto seja possível, é necessário que o computador central seja dotado do programa necessário ao tratamento daquelas informações. Em caso positivo, o terminal e o computador devem estabelecer um diálogo que permita o bom desenrolar das operações de tratamento das informações. Este diálogo deverá permitir, por exemplo, que o usuário comunique sua intenção (de processar as informações!) ao computador e, em seguida, envie as informações a serem processadas. Uma vez efetuado o tratamento, o computador deve retornar os resultados ao terminal. Esta seqüência de operações, apesar de aparentemente elementar, requer a satisfação de uma série de condições. Vamos supor, por exemplo, que o computador central e o terminal tenham sido fabricados de forma totalmente independente um do outro, o que pode ter resultado numa diferente filosofia no que diz respeito ao formato das informações. Um primeiro obstáculo a ser vencido é aquele da linguagem; o terminal deveria então se adaptar à linguagem do computador central. Resolvido o problema de compreensão, um outro problema encontrado diz respeito aos possíveis erros de transmissão que podem ocorrer durante a comunicação, uma vez que as linhas de comunicação estão sujeitas a ruídos e outros fenômenos podendo provocar perdas de informação. Uma outra questão pode ainda estar relacionada à velocidade de funcionamento dos dois elementos. Se considerarmos que o computador central opera numa velocidade superior à do terminal, por exemplo, o terminal corre o risco de ser “bombardeado” pelo fluxo de dados vindo do computador, o que vai exigir então o estabelecimento de um mecanismo de controle do fluxo de informação. Resumindo, a rede de comunicação deve, além de suprir as funções de transmissão e tratamento de informações, oferecer serviços de adaptação, detecção e correção de erros de transmissão e controle de fluxo. Vamos considerar agora que, ao invés de um único terminal, vamos conectar um maior número deles ao computador central (figura 1.4). Aqui, cada terminal pode, a princípio e a qualquer momento, tomar a iniciativa da troca de dados com o computador. Isto significa que cada terminal terá de ser caracterizado por um endereço específico, cuja utilização correta vai permitir evitar que o computador central envie as informações aos terminais de maneira indevida. Figura 1.3 - Terminal conectado a um computador central — 1.5 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA Figura 1.4 - Configuração com vários terminais Por outro lado, se o número de terminais conectados ao computador central torna-se relativamente elevado (a fim de permitir a utilização máxima da capacidade de processamento deste), será necessário organizar as interações entre terminais e o computador central em sessões, de tal forma que, ao término de uma sessão entre um terminal e o computador central, este terá liberados determinados elementos (envolvidos naquela sessão) que poderão atender outros terminais em estado de espera. Ainda, considerando que nem todos os terminais vão efetuar o mesmo tipo de tratamento de forma simultânea, dever-se-á, então, especificar a aplicação associada. Assim, todas as necessidades vistas neste exemplo deverão ser associadas às funcionalidades definidas no exemplo anterior. Mas os problemas não terminam por aqui... (é impossível, no momento, prever onde terminarão os problemas!) Vamos considerar ainda um exemplo, mais particularmente o de uma rede contendo diversos computadores, terminais, etc... , cada um destes elementos constituindo um nó da rede (figura 1.5). Neste exemplo, os dois elementos envolvidos numa comunicação não serão mais necessariamente adjacentes; além disso, podem existir diversas maneiras de conectá-los, o que vai corresponder a diferentes caminhos. No exemplo mostrado na figura, os nós 1 e 5 podem ser conectados por pelos menos uns 10 caminhos e a escolha de qual caminho utilizar deverá então ser realizada, o que é não é uma tarefa tão simples quanto possa parecer. Ainda, se a rede é da classe ponto-a-ponto (ou comutação de pacotes), o sistema de comunicação deve assegurar a correta transmissão (transporte) da informação de um ponto a outro. Particularmente, será necessário garantir que as mensagens enviadas serão recuperadas e reconstituídas na ordem correta no ponto de chegada. Um requisito também importante é o aspecto da codificação das mensagens de modo a evitar o acesso a informações de parte de usuários alheios ao sistema considerado. A esta função, pode-se eventualmente acrescentar a técnicas de compressão de dados, necessária se a informação enviada é demasiadamente redundante e o custo da comunicação é alto. 4.2. Questões organizacionais Uma vez listadas as diferentes necessidades relacionadas a uma rede de comunicação, a questão que se coloca é a da viabilidade de um projeto de rede, dada a quantidade de funções a implementar. — 1.6 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA 4 3 1 5 2 Figura 1.5 - Configuração com vários computadores e terminais. Uma outra questão é a do ordenamento das funções. O controle de fluxo deve ser realizado antes ou depois da correção de erros? Uma vez resolvida esta questão, que elementos da rede serão responsáveis da implementação destas funções? As soluções adotadas são dependentes do suporte de transmissão utilizado? Elas continuam válidas no caso de expansão da rede? Estas questões representam, de certo modo, a necessidade de levar em conta um certo ordenamento no que diz respeito à adoção das soluções a cada problema. Uma ilustração típica do problema é aquele da comunicação entre duas empresas. Vamos supor que o Diretor de uma Empresa A quer comunicar com o Diretor de uma Empresa B. Ele convoca a sua Secretária Administrativa e solicita, informalmente, que esta construa um texto relativo ao assunto a ser tratado. A Secretária Administrativa elabora o documento e o entrega ao Office Boy que vai envelopá-lo e encaminhá-lo ao Chefe do Setor de Malote. Este último encaminha o documento ao Serviço Postal para condução à Empresa B. Considerando que a Empresa B apresenta uma estrutura similar à Empresa A (como é ilustrado na figura 1.6), os mesmos elementos atuam, cada um em suas funções para fazer com que a correspondência chegue às mãos do Diretor da Empresa. Empresa A Empresa B Diretor Empresa Diretor Empresa Secretária Administrativa Secretária Administrativa Office Boy Office Boy Chefe Malote Chefe Malote Serviço Postal Figura 1.6 - Filosofia de concepção das redes, ilustrada por um processo de relações entre empresas. — 1.7 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA Este processo caracteriza, na verdade, a filosofia de concepção das redes de comunicação, que é baseada em dois conceitos fundamentais: o da hierarquia e o da descentralização, cuja conjunção vai permitir responder à questão de ordenação na adoção das soluções. Segundo esta filosofia, uma tarefa global é vista como sendo decomposta à medida que se vai descendo na hierarquia e que a única interação física se faz no seu nível mais baixo. Podemos considerar que a comunicação entre dois nós de uma rede é uma tarefa global que afeta um sistema complexo e, consequentemente, sujeita à aplicação dos princípios de hierarquização e de descentralização. As vantagens da adoção destes princípios são, fundamentalmente: • facilidade de estudo e de implementação da rede a partir de elementos de base existentes, o que permite a redução dos custos de instalação; • simplificação de sua operação em função da definição de regras formais; • garantia de confiabilidade de um sistema que seja aceitável, particularmente graças ao encapsulamento das funções o que permite limitar a propagação de erros e facilitar a manutenção; • garantia, pela modularidade, de um grau satisfatório de evolutividade e de extensibilidade da rede; • otimizar o desempenho. Todos estes aspectos nos conduzem a conceber uma arquitetura de comunicação como sendo uma organização de software e hardware estruturada em camadas. 4.3. A estruturação em camadas Os conceitos de hierarquia e descentralização podem ser empregados de diferentes formas, cada uma podendo implicar num tipo de rede particular. Em função desta provável multiplicidade, surgiu então a necessidade de uma normalização permitindo a conexão de diferentes classes de hardware. Para possibilitar a normalização, foi necessário estabelecer um modelo teórico capaz de representar as relações entre as diferentes tarefas implementadas nos diferentes níveis hierárquicos. A possibilidade de interconexão de um número qualquer de sistemas, ou seja, de conjuntos autônomos podendo efetuar tarefas de tratamento ou de transmissão de informação, era uma característica essencial para o modelo a ser estabelecido. A figura 1.7 ilustra uma arquitetura hierarquizada em 7 camadas que permitirá introduzir o conjunto de conceitos relacionados ao modelo estabelecido. O objetivo de cada camada é o oferecimento de um determinado serviço às camadas superiores de forma a evitar que estas necessitem conhecer certos aspectos da implementação destes serviços. A camada n assume a comunicação com a camada n de uma outra máquina. Para fazê-lo, ela se serve de um conjunto de convenções e regras que vão permitir gerir esta comunicação. A este conjunto de regras e convenções, dá-se o nome de protocolo da camada n, ou, simplesmente, protocolo n. Como se pode ver na figura, não existe meio de comunicação físico entre as diferentes camadas (apenas o Meio de Transmissão entre as entidades pares da camada 1), o que significa que não existe transferência direta de dados entre a camada n de uma máquina à camada n de outra máquina. Na realidade, cada camada transfere os dados à camada imediatamente inferior até a camada mais baixa; o dado é então transmitido à outra máquina através do Meio de Transmissão. A comunicação entre as camadas é vista então como uma comunicação virtual e é representada, na figura 1.7, pelas linhas tracejadas ligando cada par de processos de uma camada. — 1.8 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA SISTEMA A Interface 6/7 Interface 5/6 Interface 4/5 Interface 3/4 Interface 2/3 Interface 1/2 Camada 7 SISTEMA B Protocolo da Camada 7 Camada 7 Protocolo da Camada 6 Camada 6 Camada 5 Camada 4 Camada 3 Camada 2 Camada 6 Protocolo da Camada 5 Protocolo da Camada 4 Protocolo da Camada 3 Protocolo da Camada 2 Camada 5 Camada 4 Camada 3 Camada 2 Protocolo da Camada 1 Camada 1 Camada 1 Interface 6/7 Interface 5/6 Interface 4/5 Interface 3/4 Interface 2/3 Interface 1/2 Meio de Transmissão Figura 1.7 - Modelo hierarquizado em 7 camadas. Cada camada comunica-se com as camadas adjacentes através de uma interface, que define as operações elementares e os serviços que a camada inferior oferece à camada considerada. No momento da definição do número de camadas que vai compor uma rede e do papel que cada uma delas deve cumprir, uma tarefa importante será a definição completa das interfaces entre as camadas; isto vai implicar que na definição do serviço oferecido por cada camada. Uma vantagem da correta definição das interfaces é a facilidade da introdução de modificações nas implementações das diferentes camadas; os mecanismos podem ser implementados de forma diferente, desde que as interfaces anteriormente definidas sejam respeitadas. Ao conjunto das camadas compondo uma rede dá-se o nome de arquitetura da rede, e as especificações da arquitetura devem conter informações suficientes para permitir o correto desenvolvimento da rede, tanto do ponto de vista do software quanto do hardware. Por outro lado, os detalhes de implementação dos mecanismos a implementar em cada camada, assim como as especificações detalhadas das interfaces não fazem parte da definição da arquitetura da rede. 5. TECNOLOGIAS DE TRANSMISSÃO DE DADOS 5.1. Principais Características Podemos definir transmissão como a técnica do transporte do sinal por um meio, de um ponto a outro afastado. Em particular, a transmissão de dados apresenta diversas características referentes ao sentido da transmissão, número de canais utilizados, sincronismo entre transmissor e receptor e velocidade de transmissão. Um equipamento pode ser projetado de tal forma que a transmissão sobre um determinado meio seja feita em uma das seguintes formas (sentido): § Simplex - quando a transmissão é feita em um único sentido. § Half-duplex - quando a transmissão é feita nos dois sentidos mas não ao mesmo tempo. § Full-duplex - quando a transmissão é feita nos dois sentidos simultaneamente. — 1.9 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA Uma mensagem é definida como um conjunto de símbolos. Cada símbolo, por sua vez, para efeito de transmissão de dados, é caracterizado por um conjunto de configurações do sinal que representam bits. Por necessidade de codificação, os símbolos ficam associados a caracteres, que são, na realidade, configurações de sinais. Na verdade, uma mensagem nada mais é que uma seqüência de bits. Para transferir essa seqüência de bits, podemos fazer de duas formas: serial ou paralela. Na transmissão paralela, os bits que compõem um caracter são transportados de forma simultânea, cada um possuindo seu próprio canal, conforme mostra a figura 1.8. Na transmissão serial, os bits que compõem um caracter são transportados um após o outro, utilizando apenas um canal, como ilustrado na figura 1.9. canal 0 1 1 canal 1 1 1 canal 2 0 0 canal 3 1 1 canal 4 0 0 canal 5 0 0 canal 6 1 1 canal 7 0 0 EMISSOR RECEPTOR Figura 1.8 - Transmissão paralela. 1 1 0 1 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 RECEPTOR 0 EMISSOR Figura 1.9 - Transmissão serial. Como os bits chegam um de cada vez, o equipamento receptor deverá saber qual bit é o primeiro do caracter, a fim de que possa decodificar o símbolo recebido, ou quais bits são realmente de informação. Este é um problema de sincronização. Sincronização pode ser vista, então, como o método do equipamento transmissor fazer a separação dos caracteres ou das mensagens para o equipamento receptor. Existem dois modos de se fazer sincronização e eles são conhecidos como transmissão síncrona e transmissão assíncrona. Todos os dois modos dizem respeito à transmissão serial. Na transmissão serial assíncrona, a sincronização é alcançada precedendo-se cada caracter de um elemento de start e colocando-se, após os bits de dados um elemento de stop. Geralmente os dados são transmitidos serialmente em um número fixo de bits, dependendo do código usado. Na transmissão serial síncrona, a sincronização é alcançada transmitindo-se os bits de um caracter seguidos imediatamente pelos bits do próximo caracter, não havendo elementos de start/stop entre eles. O conjunto de caracteres que formam uma mensagem é dividido em blocos. O tamanho destes blocos varia desde alguns poucos caracteres até centenas deles, dependendo dos equipamentos envolvidos na transmissão. — 1.10 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA A sincronização na transmissão síncrona se faz antes que um bloco de informação seja enviado pelo equipamento transmissor. Ela é alcançada pelo envio de uma configuração de bits chamada "caracter de sincronização" que precede o bloco a ser transmitido. Neste caso, a sincronização é feita mediante um ou dois bytes de sincronismo que são configurações de bits designadas para este fim. Do mesmo modo que é iniciada, a comunicação síncrona é encerrada, não por um bit, mas por um ou mais caracteres de fim de transmissão. Os caracteres iniciais e finais de um bloco em transmissão síncrona constituem o envelope do bloco, que pode ou não ser uma mensagem completa e tem funções análogas as do envelope de uma carta, inclusive a de conter também o endereço do destinatário. A ordem correta dos bits que constituem o envelope do bloco é definida por um conjunto de regras chamado protocolo de comunicação. São exemplos destes protocolos para transmissão síncrona: BSC, SDLC e HDLC. As vantagens de transmissão assíncrona são: geração de caracteres por meio de dispositivos eletromecânicos e transmissão de caracteres irregularmente espaçados no tempo. As desvantagens são: uma parte considerável do que transmite não transporta informação útil: a sincronização depende dos start/stop que podem não ser detectados por causa de distorções do sinal. Uma utilização da transmissão assíncrona é quando não se necessita de transmissão freqüente de informação. A transmissão síncrona apresenta, como vantagem, uma melhor proteção contra erros, pois ao término de cada bloco uma configuração de bits para detecção de erros pode ser enviada; é mais eficiente pois a proporção de mensagem transmitida como informação em relação à configuração de sincronização é maior que na transmissão assíncrona; não é tão sensível à distorção e opera a velocidades bem mais altas que no modo assíncrono. As desvantagens são: caso haja erro de sincronização, todo bloco é perdido; os caracteres são enviados em blocos e não antes destes poderem ser formados, obrigando que os equipamentos sejam dotados de memória de armazenamento para a coleta dos caracteres até que se forme o bloco com o comprimento usado pelo equipamento. Memória, nesse caso, são buffers, o que encarece seu custo. 5.2. Largura de Banda e Capacidade de Canal A taxa em que podemos enviar dados sobre um canal é proporcional à largura de banda do canal (ou bandwidth). O termo largura de banda não tem qualquer relação com as freqüências que são transmitidas no canal. Ele indica apenas a diferença entre os limites inferior e superior das freqüências que são suportadas pelo canal. Por exemplo, um canal que admite freqüências da ordem de 1500 a 5000 Hz, tem uma largura de banda igual a 5000-1500 = 3500Hz. Da mesma forma, um canal que admite freqüências que vão desde 18000 Hz a 21500 Hz também apresenta uma largura de banda 3500 Hz (21500 - 18000). A largura de banda de um canal de comunicação constitui uma medida da máxima taxa de informação que pode ser transmitida pelo canal. Largura de banda significa o espectro de freqüência que o canal é capaz de transmitir. Sobre a questão de quantos estados de sinalização podem ser transmitidos e distinguidos separadamente no receptor de um sistema de comunicação de dados pode-se dizer que, examinados os fatores que influenciam esse número de estados, podemos definir o conceito de capacidade do canal. Ruído, distorção e flutuações na atenuação do sinal portador têm influência no número de estados de sinalização. Este número de estados é observado na unidade de tempo (segundo). Quanto maior o número de estados que podem ser transmitidos e distinguidos, maior será a capacidade do canal. Podemos então concluir que a capacidade do canal está intimamente relacionada com a velocidade de transmissão, pois quanto maior o número de estados mais bits por segundo poderão ser transmitidos. Daí medir-se capacidade na unidade bits/segundo. Diferentes tipos de sinais (voz humana, música, dados, imagem) necessitam de diferentes capacidades de canal, as quais são indicadas em termos de largura de banda e — 1.11 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA outros fatores que influenciam a capacidade de um canal. Conhecida, pois, a largura de banda de um canal de comunicação, pode-se estabelecer a máxima taxa de sinalização que o mesmo pode conduzir sem erro, o que é denominado de capacidade do canal de comunicação. 5.3. Distorção e Ruído na Transmissão Atenuação, ruído e retardo são termos usados de um modo geral para descrever as modificações que um sinal sofre quando é transmitido em um circuito ou canal. Essas alterações resultam de imperfeições na propagação do sinal, ao longo do suporte de transmissão (atenuação e retardo) e de perturbações (ruídos) que atuam não só no suporte de transmissão como também nos estágios de processamento do sinal que compõem o receptor. Quando a alteração sofrida pelo sinal é muito grande, pode ocorrer a detecção trocada da informação binária, isto é, detecção de "1" quando foi transmitido o "0" ou detecção de "0" quando foi transmitido o "1". Estas detecções trocadas caracterizam os chamados erros de transmissão. O desempenho de um sistema de transmissão de dados é avaliado através do seu grau de confiabilidade na transmissão dos bits. A taxa de erros de um sistema de transmissão representa a probabilidade de ocorrência de erros de transmissão. Para redes de longa distância existe uma padronização internacional que determina uma taxa de erros máxima em um canal a fim de que o mesmo possa ser considerado adequado para a transmissão de dados. O ITU recomenda uma taxa de erros não superior a 10-5 , isto é, 1 bit errado a cada 100.000 bits transmitidos. Para redes locais, de maneira geral, admite-se taxas de erros típicas da ordem de 10-9 a 10-12 . A transmissão sem erros é um requisito essencial de quase todas as aplicações de comunicação de dados e portanto, uma série de mecanismos deve ser implementada para detectar e corrigir possíveis erros. A maneira usual utilizada para detectar a alteração de bits de informação transmitidos, consiste na adição de bits de redundância na mensagem a ser transmitida. Dentre as várias técnicas usadas para esta finalidade pode-se citar: bits de paridade por caracter, paridade longitudinal e códigos de redundância cíclica (CRC). 5.4. Comutação A função de comutação, ou chaveamento, em uma rede de comunicação refere-se à alocação dos recursos da rede (meios de transmissão, repetidores, sistemas intermediários, etc.) para a transmissão pelos diversos dispositivos conectados. A alocação destes recursos está intimamente ligada à forma de multiplexação dos meios de transmissão, que será discutida mais adiante. As formas de comutação são denominadas comutação de circuitos, comutação de mensagens e comutação de pacotes. A comutação de circuitos pode ser realizada se existir um caminho dedicado de comunicação entre duas estações. Esta comunicação envolve 3 fases: estabelecimento do circuito, transferência de informações e desconexão do circuito. Na comutação de circuitos o caminho alocado durante a fase de estabelecimento da conexão permanece dedicado àquelas estações até que uma delas, ou ambas, decida desfazer o circuito. Caso o tráfego entre as estações não seja contínuo e constante a capacidade do meio físico será desperdiçada. O caminho dedicado entre a origem e o destino pode ser: um caminho físico formado por uma sucessão de enlaces físicos, uma sucessão de canais de freqüência alocados em cada enlace ou uma sucessão de canais de tempo alocados em cada enlace. Este tipo de comutação é bastante utilizada em sistemas telefônicos. Na comutação de mensagens não é necessário o estabelecimento de um caminho dedicado entre as estações. Se uma estação deseja transmitir uma mensagem ela adiciona o endereço de destino da mesma poderá ser transmitida pela rede de nó em nó, utilizando apenas um canal por vez. A mensagem é armazenada e retransmitida em cada nó (storeand-forward). — 1.12 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA A comutação de pacotes é semelhante à comutação de mensagens, sendo que a principal diferença está no tamanho da mensagem sendo transmitida, que neste caso tem tamanho reduzido e limitado. Neste caso as mensagens com tamanho acima de um limite devem ser fragmentadas em unidades menores denominadas pacotes. Os pacotes que formam uma mensagem podem estar sendo transmitidos simultaneamente pela rede em diferentes enlaces, o que reduz o atraso de transmissão total da mensagem. Redes com comutação de pacotes requerem nós de comutação com menor capacidade de armazenamento e procedimentos de recuperação de erros mais eficientes do que para comutação de mensagens. 5.5. Multiplexação Quando a banda passante de um meio físico for maior ou igual à banda passante necessária para um sinal podemos transmitir mais de um sinal neste meio físico. Esta técnica é denominada multiplexação. As duas principais técnicas de multiplexação são: multiplexação por divisão de freqüência (FDM) e multiplexação por divisão de tempo (TDM). A primeira técnica divide a largura de banda em diversas larguras de banda menores, cada qual com seu próprio domínio de freqüências. Cada uma destas componentes pode ser usada individualmente como se ela fosse uma linha separada. A segunda técnica intercala os bits, que fluem das linhas de baixa velocidade, dentro da linha de maior velocidade. Em ambos os métodos o resultado é que uma linha transmite em paralelo um número de sinais de linhas de velocidades mais baixas. Uma desvantagem da FDM é a relativa dificuldade de expansão porque, uma vez determinado o número de sub-canais sobre a linha compartilhada, pode ser difícil adicionar novos sub-canais já que as freqüências em um grupo devem ser reatribuídas. Na TDM na qual o tempo disponível é dividido para os terminais; a largura de banda interna da linha de alta velocidade é ocupada pelo sinal de uma das linhas de baixa velocidade por unidade de tempo, então a largura de banda é dedicada ao tráfego da próxima linha de baixa velocidade e assim por diante. O multiplexador examina os sinais das linhas de baixa velocidade com uma ordem pré-definida. A linha de alta velocidade é ocupada com um único sinal em um determinado instante. Esta técnica é assim, totalmente diferente da FDM, na qual todos os sinais são enviados ao mesmo tempo, porém cada um ocupando uma diferente porção da largura de banda. A FDM ajusta-se naturalmente dentro do mundo dos sinais analógicos e a TDM tem sido amplamente usada com sinais digitais. A TDM é geralmente mais eficiente do que a FDM porque mais sub-canais podem ser colocados. FDM usa guardas-de-banda para separar freqüências alocadas. Similarmente, alguma perda do tempo ocorre com TDM. As fatias de tempo alocadas devem ser separadas por um espaço de tempo umas das outras. A TDM pode ser utilizada quando a capacidade (em quantidade de bits por segundo) do meio de transmissão, em muitos casos excede a taxa máxima de geração de bits da estações conectadas ao meio físico. Quando isto ocorre vários sinais podem ser transportados por um único caminho físico, intercalando-se porões de cada sinal durante o tempo. A TDM pode ser síncrona ou assíncrona. Na TDM síncrona o domínio do tempo é dividido em intervalos de tamanho fixo denominados frames, que por sua vez são subdivididos em subintervalos denominados slots. Cada estação deve esperar o seu slot dentro de cada frame quando então poderá transmitir dentro do tempo daquele slot utilizando a taxa de transmissão máxima suportada pelo meio físico. A TDM assíncrona procura eliminar o desperdício de capacidade existente no TDM síncrono, eliminando a alocação prévia do canal. Neste caso parcelas de tempo são alocadas dinamicamente de acordo com a demanda das estações, em compensação as unidades de informação devem conter um cabeçalho com os endereços origem e destino. O único objetivo dos multiplexadores é a diminuição do custo das linhas em uma rede. Uma tendência evidente é o crescente uso de inteligência nos multiplexadores para — 1.13 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA diminuir, ainda mais o custo das linhas (aumentar a economia). Multiplexadores inteligentes podem ser vistos como equipamentos de processamento da comunicação mais gerais e incluem os concentradores e processadores front-end. Um concentrador, em sua forma mais simples, nada mais é que um multiplexador inteligente , com memória de armazenamento e um processador. Nos multiplexadores existe uma correlação direta entre as velocidades de entrada e saída, enquanto que nos concentradores, que também incluem um software de controle, um grande número de linhas de baixa velocidade podem compartilhar um pequeno número de canais de alta velocidade. Através de armazenamento, enfileiramento e alocação estatística de canais disponíveis, os dados da fonte são "concentrados" em um canal de alta velocidade. Uma diferença fundamental entre multiplexadores e concentradores é que o primeiro trabalha com mesma taxa de entrada e saída de dados, enquanto que um concentrador inteligente pode ajustar dinamicamente suas alocações de largura de banda para modificações no tráfego. A técnica TDM se caracteriza por alocar uma fatia de tempo n à n-ésima linha de baixa velocidade, mesmo que não exista nenhum tráfego sobre esta linha. Uma modificação para otimizar esta técnica é a TDM estatística (STDM) que é uma forma de concentração. Uma fatia de tempo só será alocada se existir tráfego na linha. Em geral, o uso da STDM é mais vantajoso que a TDM pois evita a má utilização da linha. No entanto, se o tráfego de várias fontes (ou destinos) é uniformemente distribuído no tempo, então o uso da TDM será menos caro e proporcionará uma melhor utilização da linha. Um processador front-end é um concentrador de propósito especial que é instalado na frente do computador hospedeiro (HOST) e executa a tarefa de gerenciar a interface entre o HOST e a rede de comunicação. O principal objetivo da utilização de um processador front-end é aliviar o HOST das tarefas de processamento de comunicação reduzindo o tempo e o espaço dedicados pelo HOST para estas tarefas e, portanto, aumentar a sua disponibilidade para o processamento de dados. 5.6. Modulação Computadores são equipamentos que armazenam, processam e codificam informações em bits, que correspondem a dois níveis discretos de tensão ou corrente, representado pelos valores lógicos 0 ou 1. Este tipo de informação é chamada de digital. As informações geradas por fontes sonoras apresentam variações contínuas de amplitude, constituindo-se no tipo de informação que comumente denominamos de analógica. Desta forma podemos afirmar que existem dois tipos de sinais gerados para transmissão: sinais analógicos e sinais digitais. É importante notar que qualquer tipo de informação, analógica ou digital, pode ser transmitida através de um sinal analógico ou digital. A transmissão de informação digital através de sinais analógicos é possível através de técnicas de modulação, que transformam os sinais digitais em sinais analógicos através da variação contínua de um de seus parâmetros. Neste ponto, é conveniente fazer uma diferenciação entre as unidades bits por segundo (bps) e bauds. A taxa em bauds indica o número de vezes que a característica do sinal portador da informação (sinal modulado) se altera por segundo. Se o estado do sinal representa a presença ou ausência de um bit, então a taxa em bauds é a mesma que a taxa em bps. Por outro lado, quando usamos transmissão multinível, cada estado do sinal representa mais de um bit (2 bits na modulação dibit e 3 bits na modulação tribit, etc) e observamos que a taxa em bauds é menor que a taxa em bps. Por exemplo, considerando uma modulação dibit, onde o sinal pode estar em quatro estados e cada estado representa um dibit (2 bits), se a velocidade de sinalização for de 200 bauds, isto é, se a condição do sinal se alterar 200 vezes por segundo, teremos 400 bits transmitidos por segundo, ou seja, para cada alteração de condição do sinal, estaremos transmitindo dois bits representativos de um estado. Um exemplo sobre a diferença entre as velocidades bauds e bps é a utilização do canal telefônico para transmissão de sinal de dados. A largura de banda deste canal é de — 1.14 — CAP. 1 – I NTRODUÇÃO ÀS REDES DE COMPUTADORES PROF. VITÓRIO BRUNO MAZZOLA 3100 Hz (ciclos/segundo) e na prática é usado para transmitir sinal de dados até 2400 bauds. Se desejarmos transmitir a uma velocidade de transmissão de 4800 bps neste canal, deveremos usar um sinal dibit, ao qual corresponderá a mesma velocidade de sinalização de 2400 bauds. Neste caso, a velocidade de transmissão é duas vezes a velocidade de sinalização. Da mesma forma que se desejarmos transmitir 7200 bps, deveremos usar um sinal tribit e teremos velocidade de transmissão igual a três vezes a velocidade de sinalização. Modulação é o processo pelo qual se imprime uma informação em uma onda portadora, pela variação de um de seus parâmetros (amplitude, freqüência ou fase). O processo inverso, no qual a informação é retirada da onda portadora, é denominado demodulação. O equipamento que realiza a adequação dos sinais binários ao canal de transmissão é denominado modem (modulador-demodulador). Existem três técnicas básicas de modulação: § § § modulação por amplitude (AM) modulação por freqüência (FM) modulação por fase (PM) No caso específico do sinal modulador ser um sinal digital, essas técnicas tomam as seguintes denominações: § modulação por chaveamento da fase (ASK) § modulação por chaveamento da freqüência (FSK) § modulação por chaveamento de fase (PSK) 5.7. Sistemas em Banda Larga e em Banda Básica Duas técnicas de transmissão são as mais empregadas: sinalização em banda básica (baseband) e sinalização em banda larga (broadband). Na sinalização em banda básica (ou sinalização digital) o sinal é simplesmente colocado na rede sem se usar qualquer tipo de modulação, aparecendo diretamente na rede e não como deslocamentos de freqüência, fase ou amplitude de uma portadora. Sinalização em banda básica vem sendo adotada nos projetos de redes por não necessitar de modems e por possibilitar a transmissão em alta velocidade. Esta técnica não é adequada para transmissão a longas distâncias e para circuitos sujeitos a ruídos, interferências e erros aleatórios. Na sinalização em banda básica todo o espectro (banda) de freqüência do meio é utilizado para produzir o sinal. No ambiente de redes locais a sinalização em banda básica é bastante adequada. A sinalização em banda larga (ou sinalização analógica) realiza a multiplexação em freqüência (FDM). Com esta sinalização o espectro de freqüência do meio é dividido em vários canais, cada um podendo suportar diferentes tráfegos. Um caso especial de sistema de banda larga é o sistema de baixo custo que utiliza apenas um canal, denominado banda larga de único canal. A sinalização em banda larga é geralmente utilizada em redes locais Sinalização em banda larga é geralmente utilizada em redes locais em barra. Nas redes em banda larga cada canal pode ser utilizado para transportar qualquer tipo de sinal, por exemplo, sinais analógicos, como imagem ou voz, ou sinais digitais. Os canais podem ser classificados como dedicados ou chaveados. Tanto os canais dedicados quanto os canais chaveados podem ser ponto-a-ponto ou multiponto. — 1.15 — Capítulo 2 O M ODELO 1. DE R E F E R Ê N C I A OSI INTRODUÇÃO A grande importância da interconexão dos computadores através de redes de comunicação deu origem a uma necessidade que foi tornando-se evidente à medida que os desenvolvimentos neste domínio foram acentuando-se — a normalização das redes de comunicação. Iniciou-se, então, no seio da ISO - International Organization for Standardization, uma reunião de esforços no sentido de definir uma proposta de arquitetura normalizada para as redes de comunicação. Dada a grande diversidade dos equipamentos e das soluções existentes no que diz respeito à comunicação, o resultado deste trabalho foi de fato a padronização de um modelo (modelo de referência) sobre o qual deveriam ser baseadas as arquiteturas de redes de comunicação de forma a permitir a interconexão de equipamentos heterogêneos, tornando transparente ao usuário a forma como esta interconexão fosse implementada. Um sistema fundado em tal modelo de referência é dito um sistema aberto, uma vez que este está aberto à comunicação com outros equipamentos, de diferentes classes, fabricantes, modelos, etc... Baseada nesta filosofia, a proposta, definida numa série de documentos produzidos por aquela organização, foi denominada de Modelo de Referência para a Interconexão de Sistemas Abertos ou RM-OSI (Reference Model for Open Systems Interconnection), cujos conceitos principais serão apresentados nas seções que seguem. 2. FUNDAMENTOS E ARQUITETURA O conjunto de camadas ou níveis compondo um conjunto de regras de comunicação numa rede, denominada arquitetura da rede, e as especificações da arquitetura devem conter informações suficientes para permitir o correto desenvolvimento da rede, tanto do ponto de vista do software quanto do hardware. Os detalhes de implementação dos mecanismos a implementar em cada camada, assim como as especificações detalhadas das interfaces não fazem parte da definição da arquitetura da rede. Conforme já introduzido anteriormente, a figura 2.1 ilustra a arquitetura hierarquizada em camadas, no caso, 7 camadas, que permitirá introduzir o conjunto de conceitos relacionados ao modelo estabelecido. O objetivo de cada camada é o oferecimento de um determinado serviço às camadas superiores (utilizando-se, também dos serviços oferecidos pelas camadas inferiores) de forma a evitar que estas necessitem conhecer certos aspectos da implementação destes serviços. A camada n assume a comunicação com a camada n de uma outra máquina. Para fazê-lo, ela se serve de um conjunto de convenções e regras que vão permitir gerir esta comunicação. A este conjunto de regras e convenções, dá-se o nome de protocolo da — 2.1 — CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA camada n, ou, simplesmente, protocolo n. As entidades representando camadas correspondentes em diferentes sistemas são denominadas processos pares, ou entidades pares. Os processos pares vão se comunicar então através dos protocolos. Como se pode ver na figura, não existe meio de comunicação físico entre as diferentes camadas (apenas o Meio de Transmissão entre as entidades pares da camada 1), o que significa que não existe transferência direta de dados entre a camada n de uma máquina à camada n de outra máquina. Cada camada transfere os dados à camada imediatamente inferior até a camada mais baixa; o dado é então transmitido à outra máquina através do Meio de Transmissão. A comunicação entre as camadas é vista como uma COMUNICAÇÃO VIRTUAL e é representada, na figura 2.1, pelas linhas tracejadas ligando cada par de processos de uma camada. Cada camada comunica-se com as camadas adjacentes através de uma interface, que define as operações elementares e os serviços que a camada inferior oferece à camada considerada. No momento da definição do número de camadas que vai compor uma rede e do papel que cada uma delas deve cumprir, uma tarefa importante será a definição completa das interfaces entre as camadas; isto vai implicar que na definição do serviço oferecido por cada camada. Uma vantagem da correta definição das interfaces é a facilidade da introdução de modificações nas implementações das diferentes camadas; os mecanismos podem ser implementados de forma diferente, desde que as interfaces anteriormente definidas sejam respeitadas. Ao conjunto das camadas compondo uma rede dá-se o nome de arquitetura da rede, e as especificações da arquitetura devem conter informações suficientes para permitir o correto desenvolvimento da rede, tanto do ponto de vista do software quanto do hardware. Por outro lado, os detalhes de implementação dos mecanismos a implementar em cada camada, assim como as especificações detalhadas das interfaces não fazem parte da definição da arquitetura da rede. A figura 2.2 permite ilustrar o processo da comunicação no contexto de uma arquitetura multicamadas. O processo da camada 7 gera uma mensagem m, que será transmitida desta à camada inferior segundo o que estiver definido pela interface das camadas 6/7. Considera-se que esta transmissão introduz algumas modificações na mensagem (por exemplo, uma compressão de dados), o que justifica uma nova representação desta por M. Esta mensagem é, por sua vez, transmitida à camada 5, através da interface das camadas 5/6. SISTEMA A Interface 6/7 Interface 5/6 Interface 4/5 Interface 3/4 Interface 2/3 Interface 1/2 Camada 7 SISTEMA B Protocolo da Camada 7 Camada 7 Protocolo da Camada 6 Camada 6 Camada 5 Camada 4 Camada 3 Camada 6 Protocolo da Camada 5 Protocolo da Camada 4 Protocolo da Camada 3 Camada 5 Camada 4 Camada 3 Protocolo da Camada 2 Camada 2 Camada 1 Camada 2 Protocolo da Camada 1 Camada 1 Meio de Transmissão Figura 2.1 - Modelo hierarquizado em 7 camadas. — 2.2 — Interface 6/7 Interface 5/6 Interface 4/5 Interface 3/4 Interface 2/3 Interface 1/2 CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA No exemplo considerado na figura, a mensagem não sofre modificações, mas esta camada efetua o controle de fluxo. A camada 4 é responsável da decomposição da mensagem a fim de respeitar as restrições de tamanho que podem ser impostas pelas camadas inferiores. Assim, M é decomposta em M1 e M2. Para isto, é inserido também na mensagem (ou nas partes da mensagem) um cabeçalho H4 contendo uma informação de controle, como, por exemplo, um número de ordem que vai permitir, posteriormente na camada 4 do sistema destinatário, a reconstrução da mensagem a partir das partes recebidas. Outras informações podem ainda estar contidas neste cabeçalho, como, por exemplo, o tamanho da mensagem, o instante de envio, etc... Na camada 3, é feita a escolha das linhas de saída e um novo cabeçalho, H3, é introduzido às mensagens. Na camada 2, além de um cabeçalho, H2, é introduzido também um sufixo, T2, contendo informações específicos a esta camada. A mensagem é finalmente entregue à camada 1 para emissão via meio físico. No sistema destinatário, o processo inverso se desenrola, sendo que as mensagens vão subindo, de camada em camada, e os cabeçalhos retirados nas camadas respectivas, de modo a evitar que estes sejam transferidos às camadas que não lhes dizem respeito. Um aspecto importante mostrado na figura 2.2 é o da comunicação virtual ocorrendo entre as diferentes camadas pares. As camadas em cada nível possuem uma visão da comunicação horizontal, mesmo se as mensagens são na realidade transmitidas às camadas inferiores pertencentes ao mesmo sistema. 3. SERVIÇOS E PROTOCOLOS Embora sejam freqüentemente confundidos, serviço e protocolo são dois conceitos distintos. O importante nesta distinção é de poder estabelecer a relação entre os dois conceitos. O serviço corresponde a um conjunto de operações que uma camada é capaz de oferecer à camada imediatamente superior. Ele define o que uma camada é capaz de executar sem se preocupar com a maneira pela qual as operações serão executadas. O serviço está intimamente relacionado com as interfaces entre duas camadas, a inferior sendo a fornecedora do serviço e a superior, a usuária deste. TRANSMISSOR RECEPTOR Protocolo M M da Camada 7 Protocolo m m da Camada 6 Protocolo m m da Camada 5 Protocolo H4 M1 H4 M2 H4 M1 H4 M2 da Camada 4 Protocolo H3 H4 M1 H3 H4 M2 H3 H4 M1 H3 H4 M2 da Camada 3 Protocolo H2 H3 H4 M1 H2 H3 H4 M2 H2 H3 H4 M1 H2 H3 H4 M2 da Camada 2 Figura 2.2 - Ilustração da comunicação virtual numa arquitetura de rede. — 2.3 — CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA Por outro lado, o protocolo define um conjunto de regras que permitem especificar aspectos da realização do serviço, particularmente, o significado dos quadros, pacotes ou mensagens trocadas entre as entidades pares de uma dada camada. A nível de uma camada, o protocolo pode ser mudado sem problemas, desde que as interfaces com a camada superior não sejam alteradas, ou seja, que aquela continue a ter a mesma visibilidade no que diz respeito aos serviços realizados pela camada considerada; isto corresponde, na verdade, a um certo desacoplamento entre os conceitos de serviço e protocolo. 4. A ARQUITETURA OSI E AS FUNÇÕES DAS CAMADAS O modelo OSI foi criado seguindo a filosofia das arquiteturas multicamadas, descrita no capítulo precedente. Como mostra a figura 2.3, sua arquitetura define 7 camadas, cujos princípios de definição foram os seguintes: • cada camada corresponde a um nível de abstração necessário no modelo; • cada camada possui suas funções próprias e bem definidas; • as funções de cada camada foram escolhidas segundo a definição dos protocolos normalizados internacionalmente; • a escolha das fronteiras entre cada camada deveriam ser definidas de modo a minimizar o fluxo de informação nas interfaces; • número de camadas deveria ser suficientemente grande para evitar a realização de funções muito diversas por uma mesma camada; • número de camadas deveria ser suficientemente pequeno para evitar uma alta complexidade da arquitetura. Como se pode ver na figura, o modelo prevê a comunicação entre sub-redes através de processadores de interface de mensagem, ou IMPs (Interface Message Processors). Na figura, vemos ainda as unidades de dados trocadas a nível da arquitetura: APDU, PPDU, ..., BIT. Vamos descrever, a seguir, as principais funções realizadas por cada uma das camadas definidas no modelo. A Camada Física é responsável da transferência de bits num circuito de comunicação. SISTEMA A SISTEMA B Protocolo da Camada 7 7 Aplicação Aplicação 7 6 Apresentação Apresentação 6 5 Sessão Sessão 5 4 Transporte Transporte 4 3 Rede Rede Rede Rede 3 2 Enlace Enlace Enlace Enlace 2 1 Física Física Física Física 1 Protocolo da Camada 6 Protocolo da Camada 5 Protocolo da Camada 4 IMP IMP IMP - Interface Message Processor Figura 2.3 - Arquitetura de sete camadas do modelo OSI. — 2.4 — CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA De maneira geral, a sua função é garantir que cada bit enviado de um lado será recebido do outro lado sem ter alterado o seu valor, ou seja, se o bit enviado está a 1, ele será recebido a 1 e não a 0. Para isto, as questões a serem resolvidas neste nível são do tipo: • • • • • • os modos de representação dos bits 0 e 1 de maneira a evitar ambigüidades ou confusões (valor da tensão em volts para a representação dos valores 0 e 1 dos bits, duração de cada sinal representando um bit, a codificação dos sinais, etc...); os tipos de conectores a serem utilizados nas ligações (número de pinos utilizado, as funções associadas a cada pino, ...); a maneira como as conexões são estabelecidas para a iniciação de um diálogo e como é feita a desconexão ao final deste; modo de transmissão adotado ( unidirecional, bidirecional, ...); modo de conexão adotado (ponto-a-ponto, multiponto, ...); modo de tratamento dos erros (detecção, tratamento, etc...). A concepção desta camada deve se relacionar à definição das interfaces elétricas e mecânicas, seus modos de funcionamento, o suporte de comunicação adotado, etc. A Camada de Enlace de Dados tem por função principal a transformação do meio de comunicação «bruto» em uma linha livre de erros de transmissão para a camada de Rede. Ela efetua esta função através do fracionamento das mensagens recebidas do emissor em unidades de dados denominadas quadros, que correspondem a algumas centenas de bytes. Estes quadros são transmitidos seqüencialmente e vão gerar quadros de reconhecimento enviados pelo receptor. Nesta camada, as unidades de dados são enriquecidas com um conjunto de bits adicional (no início e fim de cada quadro) de modo a permitir o reconhecimento destes. Um problema típico deste nível é o da ocorrência de uma perturbação sobre a linha de transmissão que provoque a destruição (perda) do quadro enviado. Neste caso, o quadro deve ser retransmitido para garantir a integridade da informação transferida. Por outro lado, deve-se também evitar múltiplas retransmissões de um mesmo quadro, o que pode provocar a sua duplicação... por exemplo, se o quadro de reconhecimento é perdido. Uma outra função desta camada é evitar uma alta taxa de envio de dados da parte do emissor no caso do sistema emissor não ter capacidade de absorver a informação à mesma taxa. Este mecanismo deve permitir informar ao emissor a necessidade de armazenamento dos dados a transmitir (controle de fluxo). A Camada de Rede é responsável da gestão de sub-redes; ela define a forma como os pacotes de dados serão encaminhados do emissor ao receptor. Os caminhos a serem utilizados podem ser definidos em função de tabelas estáticas ou determinados dinamicamente no momento de cada diálogo em função das condições de tráfego da rede. Esta camada deve ainda efetuar a gestão dos problemas de congestionamento provocados pela presença de uma quantidade excessiva de pacotes de dados na rede. Ela deve, finalmente, resolver todos os problemas relacionados à interconexão de redes heterogêneas, particularmente: • incompatibilidades no endereçamento; • incoerências em relação aos tamanhos das mensagens; • etc. A Camada de Transporte recebe os dados enviados da camada de sessão, decompô-los, se for o caso, em unidades de dados menores e garantir que todas as partes da mensagem vão ser transmitidas corretamente à outra extremidade. Esta função deve ser suprida de maneira eficiente, inclusive, sem que a camada de Sessão tome conhecimento de possíveis alterações na tecnologia da parte material da rede. — 2.5 — CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA Esta camada cria, normalmente, uma conexão de rede para cada conexão de transporte requerida pela camada de Sessão, embora, se as necessidades de velocidade transmissão são justificadas, ela possa estabelecer diversas conexões de rede para uma mesma conexão de transporte. Por outro lado, se o custo da manutenção de uma conexão de rede é considerado elevado, esta camada pode efetuar a função inversa, ou seja, a multiplexação de várias conexões de transporte sobre uma mesma conexão de rede, esta tarefa sendo feita de modo transparente para a camada de Sessão. Ela deve determinar, também, o tipo de serviço oferecido à camada de Sessão e, por conseqüência, aos usuários da rede. Uma conexão de transporte típica é aquela de um canal ponto-a-ponto, livre de erros de transmissão, transmitindo as mensagens na mesma ordem em que elas foram enviadas. Por outro lado, outras classes de serviços podem fornecer uma conexão capaz de enviar as mensagens de modo isolado, mas sem a garantia de uma ordem correta na transmissão. O tipo do serviço a ser fornecido é definido no momento do estabelecimento da conexão. Uma característica desta camada é que ela implementa um verdadeiro diálogo fim-afim, ou seja, o programa executando no sistema fonte dialoga com o programa executando na máquina destino através dos cabeçalhos e informações de controle contidas nas mensagens deste nível. Já nas camadas mais baixas, os protocolos operam entre máquinas vizinhas e não entre os sistemas fonte e destino, dado que estes podem estar separados por vários IMPs. Esta diferença fundamental, que se estende igualmente às camadas superiores (até a camada 7) pode ser verificada pela ilustração da figura 2.3. Dado que esta camada é responsável do estabelecimento e término das conexões de rede, ela deve definir um mecanismo de endereçamento que permita a um sistema indicar com qual sistema ele deseja dialogar. Finalmente, ela deve implementar um mecanismo de controle de fluxo fim-a-fim para evitar que o sistema fonte envie mensagens numa taxa superior àquela com a qual o sistema destino pode consumi-las. A Camada de Sessão é responsável dos estabelecimentos de sessões de diálogo para os usuários da rede. Uma sessão objetiva permitir o transporte de dados, da mesma forma que os serviços oferecidos pela camada de Transporte, mas ela oferece serviços mais sofisticados de comunicação que podem ser úteis a determinadas aplicações. Um exemplo disto é a possibilidade de envio, através de uma sessão, de um arquivo de dados (ou programa) de um sistema a outro. Outro serviço da camada de Sessão é efetuar a gestão do diálogo, ou seja, definir, por exemplo, se o diálogo vai ser efetuado em modo uniou bidirecional. Um serviço também importante é aquele da sincronização do diálogo. Por exemplo, se um arquivo deve ser transferido através de uma sessão e este deve durar duas horas. Se, por uma razão qualquer, o tempo médio entre duas panes é de uma hora. Após uma primeira interrupção por pane, a transferência deverá reiniciar, podendo ocasionar em erros de transmissão. Uma forma de evitar isto é a inserção de pontos de teste junto aos dados fazendo com que, após uma interrupção de transferência, os dados sejam retomados apenas a partir do último ponto de teste. A Camada de Apresentação utiliza algumas funções freqüentemente necessárias de modo a poupar o usuário deste trabalho. Esta camada assume particularmente as funções associadas à sintaxe e à semântica dos dados transmitidos. Um exemplo típico das funções efetuadas por esta camada é a codificação da informação num padrão bem definido (ASCII, EBCDIC, etc...). Esta camada pode ainda suprir outras funções associadas à compreensão dos dados, se utilizando do conhecimento do significado da informação para reduzir a quantidade de informação enviada, inclusive para implementar funções de confidencialidade e de autenticação. — 2.6 — CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA A Camada de Aplicação implementa um conjunto de protocolos bastante diversificado e orientado a aplicações bem definidas. Um exemplo disto é o protocolo de terminal virtual, que permite gerar a utilização de um determinado programa (por exemplo, um editor de textos) de forma independente do tipo de terminal conectado à rede. Outro serviço importante é o de transferência de arquivos, que permite adaptar o tipo do arquivo transferido à forma implementada pelo sistema de arquivamento do sistema considerado. Na parte dedicada a esta camada veremos, além destas, outras classes de serviços implementados a este nível. 5. A COMUNICAÇÃO NO OSI A forma como os dados são transferidos ao longo do modelo OSI é ilustrada na figura 2.4. Como se pode ver, o processo emissor vai enviar uma certa quantidade de dados ao processo receptor. Ele envia, então, os dados à camada de Aplicação que introduz a estes um cabeçalho de aplicação, AH, e envia a mensagem resultante à camada de Apresentação. Esta camada, por sua vez, introduz à mensagem recebida um cabeçalho de apresentação, PH, enviando a mensagem, em seguida à camada inferior. É importante ressaltar aqui que esta camada não toma conhecimento da existência e significado do cabeçalho de aplicação, considerando este como parte dos dados compondo a mensagem. Este processo de transferência de camada a camada vai se repetindo até o nível físico, quando os dados serão, enfim, transmitidos ao sistema destino. Neste sistema, os diversos cabeçalhos introduzidos nas camadas de rede do sistema fonte vão sendo interpretados e eliminados nas camadas correspondentes até que os dados cheguem ao processo receptor. O conceito fundamental da transferência de dados é que cada camada foi projetada como se ela fosse realmente horizontal, quando na verdade a transmissão se dá de modo vertical. Isto fica claro, por exemplo, quando a camada de Transporte emissora recebe um dado da camada de Sessão; ela insere um cabeçalho de transporte e envia a mensagem à camada de Rede emissora. Este processo, portanto, para a camada de Transporte, não é mais do que um detalhe técnico. Um exemplo análogo é aquele de um diplomata de um país fazendo um discurso, na sua própria língua, nas Nações Unidas. Este considera estar se dirigindo aos seus colegas diplomatas de outros países, embora, na prática, ele esteja dirigindo-se ao seu intérprete. PROCESSO EMISSOR Aplicação AH Apresentação PH Sessão DADOS NH LH Apresentação DADOS TH Rede Aplicação DADOS DADOS SH Transporte Enlace PROCESSO RECEPTOR DADOS DADOS DADOS Física BITS Figura 2.4 - Ilustração da comunicação no modelo OSI. — 2.7 — Sessão Transporte Rede Enlace Física CAP. 2 – O MODELO DE REFERÊNCIA OSI 6. PROF. VITÓRIO BRUNO MAZZOLA OS CONCEITOS DO MODELO OSI Como visto anteriormente, o objetivo de cada camada definida no modelo OSI é fornecer um determinado conjunto de serviços à camada imediatamente superior. A nível do modelo de referência OSI, foi feita uma série de definições que vão permitir identificar cada componente do modelo de forma clara e não ambígua. É objetivo desta seção introduzir estes conceitos. 6.1. Terminologia OSI A nível de cada camada existem elementos ativos que implementam os serviços e protocolos relacionados com aquela camada. A estes elementos ativos, dá-se o nome de entidade e estas podem ser entidades de software ou de hardware. Às entidades localizadas em diferentes sistemas, mas associadas a um mesmo nível (ou camada), dá-se o nome de entidades pares. As entidades recebem também uma denominação complementar em função da camada à qual elas estão relacionadas — por exemplo, entidade de aplicação, entidade de apresentação, etc... As entidades de uma camada N (ou entidades N) implementam um serviço que é utilizado pela camada N+1. Assim, a camada N é dita ser um fornecedor de serviço e a camada N+1 é denominada um usuário de serviço. Por outro lado, a camada N poderá utilizar os serviços da camada imediatamente inferior, a camada N-1 para oferecer os serviços à camada superior. Ela pode ainda oferecer diferentes categorias (ou classes) de serviços: serviços mais eficientes e mais «caros» ou serviços lentos e «econômicos». Os serviços oferecidos por uma camada são acessíveis em pontos de acesso aos serviços, ou SAP (service access point). Os SAPs da camada N são os lugares onde a camada N+1 poderá ter acesso aos serviços oferecidos, cada SAP sendo identificado por um endereço único. Por exemplo, os SAP de uma rede telefônica são as tomadas às quais podem ser conectados os aparelhos telefônicos e seus endereços são os números de telefone associados à tomada considerada. Para que duas camadas possam trocar informações, existe uma série de regras a serem respeitadas, definidas pela interface. Através de uma interface, a camada N+1 envia uma unidade de dados de interface, ou IDU (Interface Data Unit) à entidade da camada N pelo SAP. A IDU é composta de uma parte denominada unidade de dados de serviço, ou SDU (Service Data Unit) e de outras informações de controle. A SDU é a informação transmitida via rede à entidade par e, em seguida, à camada N+1. A informação de controle é utilizada para auxiliar a gestão da camada inferior em seu trabalho (por exemplo, o número de bytes compondo a SDU correspondente). Para transmitir uma SDU, a entidade da camada N pode fragmentá-la em diversas partes, e cada parte vai receber um cabeçalho, sendo enviada como uma unidade de dados de protocolo, ou PDU (Protocol Data Unit). Os cabeçalhos de PDU são utilizados pelas entidades pares para o transporte do protocolo. Elas identificam a PDU contendo os dados e aquelas contendo informações de controle (números de seqüência, contagens, etc...). A figura 2.5 ilustra o processo descrito. As PDUs recebem normalmente uma denominação segundo a camada à qual estão associadas. Por exemplo, as PDUs de aplicação são ditas APDU, assim como as de apresentação são as PPDU, as de sessão SPDU, e assim por diante. 6.2. Serviços orientados conexão e sem conexão Como já foi dito, as camadas podem oferecer diferentes classes de serviços às camadas superiores, estes serviços podendo ser orientados conexão ou sem conexão. No que diz respeito ao serviços orientados à conexão, podemos citar, como exemplo típico o sistema telefônico. Para que seja possível falar a alguém no telefone, é necessário, — 2.8 — CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA inicialmente, tirar o fone do gancho, digitar (ou discar) um número, esperar que o interlocutor atenda, falar e, finalmente, desligar. Este é o princípio de base de um serviço orientado conexão: estabelecimento da conexão, utilização do serviço e término da conexão. O aspecto principal da conexão é o fato de que ela funciona como uma espécie de canal através do qual irão transitar os objetos ou mensagens envolvidas na realização do serviço. Já os serviços sem conexão são estruturados como o sistema postal, onde cada mensagem (ou carta, se consideramos o exemplo citado) contém o endereço do destinatário e é então encaminhada no sistema, independente de outras. Normalmente, se duas mensagens são enviadas a um mesmo destinatário, a primeira a ser enviada deve ser a primeira a ser recebida. Por outro lado, neste modo de serviço pode ocorrer que uma mensagem seja atrasada fazendo com que a segunda mensagem seja recebida primeiro. Já nos serviços orientados conexão, isto jamais poderá acontecer. Cada serviço é caracterizado por uma qualidade de serviço. Um serviço dito confiável é aquele em que os dados não podem ser jamais perdidos. Normalmente, a implementação de serviços confiáveis é feita através da definição de mensagens de reconhecimento enviadas pelo receptor, para cada mensagem recebida do emissor. Este processo, embora extremamente benéfico, introduz uma lentidão na transferência de dados, o que significa que nem sempre ele é desejável num sistema. Os serviços confiáveis orientados conexão apresentam duas variantes. No primeiro caso, as fronteiras das mensagens são sempre preservadas. Se duas mensagens de 1 Kbytes são enviadas, elas chegarão sob a forma de duas mensagens de 1 Kbytes e nunca como uma única mensagem de 2 Kbytes. Já na segunda variante, se uma mensagem de 2 Kbytes é recebida, não há como identificar se ela foi enviada realmente como uma única mensagem de 2 Kbytes, como duas mensagens de 1 Kbytes, ou ainda como 2048 mensagens de 1 byte. IDU Camada N+1 Interface ICI SDU SAP Cabeçalho Camada N ICI SDU SDU N-PDU Figura 2.5 - Ilustração dos diferentes conceitos associados ao modelo de referência OSI. Em algumas aplicações, é necessário resguardar as fronteiras entre as mensagens enviadas; por exemplo, no caso do envio de um documento a uma impressora é interessante poder preservar as fronteiras entre as páginas. No que diz respeito aos dois tipos de serviços (orientados conexão e sem conexão), nem todas as aplicações requerem a utilização de conexão. Um exemplo disto pode ser o de uma aplicação de correio eletrônico. Pode-se imaginar uma aplicação de correio em que o usuário não se interesse à necessidade de estabelecimento de conexão e tampouco a uma confiabilidade de 100% no que diz respeito à chegada das mensagens. Os serviços sem conexão e não-confiáveis são denominados serviços de datagrama. — 2.9 — CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA Existem casos, porém, em que, apesar de não necessitar o estabelecimento de conexão, a confiabilidade é essencial. O serviço utilizado neste caso é dito de datagrama com reconhecimento. O serviço de pedido-resposta já é um outro tipo de serviço no qual o emissor envia um datagrama contendo um serviço e o receptor envia um outro contendo a resposta a este pedido. A tabela a seguir ilustra os diferentes serviços com e sem conexão, com exemplos de aplicação destes serviços. SERVIÇOS Transf. confiável de mensagens Transf. confiável de dados Transf. sem controle de erros Datagrama s/ reconhecimento Datagrama c/ reconhecimento Pedido-Resposta 7. MODALIDADES com ou sem conexão com ou sem conexão com ou sem conexão sem conexão sem conexão sem conexão EXEMPLO seqüenciamento de páginas transferência de arquivos voz digitalizada correio eletrônico corr. eletrônico «registrado» consulta a bases de dados AS PRIMITIVAS DE SERVIÇO Um serviço é definido formalmente por um conjunto de primitivas (ou operações) disponíveis a um usuário ou a outras entidades para o acesso àquele serviço. Estas primitivas permitem indicar a ação a ser executada pelo serviço ou ainda um pedido de informação sobre uma ação executada previamente. No modelo OSI, as primitivas de serviço são divididas em quatro classes: as primitivas de pedido (request), as primitivas de indicação (indication), as primitivas de respostas (response) e as primitivas de confirmação (confirm). A tabela a seguir mostra o significado de cada uma destas primitivas no que diz respeito à execução de um serviço. PRIMITIVA REQUEST INDICATION RESPONSE CONFIRM SIGNIFICADO Pedido enviado por uma entidade que solicita um serviço Através dela, a entidade par é informada de uma solicitação de serviço A entidade par responde ao pedido de serviço A entidade solicitante é informada do resultado do serviço Um exemplo da utilização das primitivas de serviço é o pedido de um estabelecimento de conexão. Para requisitar o estabelecimento de uma conexão, a entidade que quer iniciar o diálogo envia uma primitiva de serviço de pedido de abertura de conexão, «CONNECT.request» que vai se refletir, na entidade destinatária, por uma primitiva de indicação, «CONNECT.indication». A entidade que recebeu a indicação vai enviar uma primitiva de resposta, «CONNECT.response», para informar se esta aceita ou não a conexão. Finalmente, a entidade emissora vai saber do resultado do seu pedido pela recepção de uma primitiva de serviço de confirmação, «CONNECT.confirm». Parâmetros podem ser associados às primitivas; no caso do serviço de conexão, por exemplo, os parâmetros podem especificar os seguintes aspectos relacionados à conexão desejada: a máquina com a qual se deseja dialogar, o tipo de serviço desejado, o tamanho máximo das mensagens, etc... Se a entidade invocada não está de acordo com os parâmetros contidos na primitiva de indicação recebida, esta pode fazer uma contra-proposta, através dos parâmetros da primitiva de resposta, que será transmitida à entidade emissora através dos parâmetros da primitiva de confirmação. — 2.10 — CAP. 2 – O MODELO DE REFERÊNCIA OSI PROF. VITÓRIO BRUNO MAZZOLA Os serviços no modelo OSI podem ser de dois tipos: confirmados ou nãoconfirmados. No caso dos serviços confirmados, as quatro classes de primitivas são definidas, ou seja, pedido (request), indicação (indication), resposta (response) e confirmação (confirm). Isto significa que a entidade que requisitou o serviço terá sempre uma informação sobre as condições de realização deste, até mesmo se este foi realizado com sucesso ou não. Nos serviços não-confirmados, apenas as duas primeiras classes de primitivas são utilizadas, ou seja, pedido e indicação. Neste tipo de serviços, a entidade emissora do pedido não receberá nenhuma informação sobre as condições de realização do serviço requisitado, nem mesmo se este foi realizado. A tabela a seguir apresenta um conjunto de primitivas associadas a um serviço orientado à conexão. PRIMITIVA CONNECT.request CONNECT.indication CONNECT.response CONNECT.confirm DATA.request DATA.indication DISCONNECT.request DISCONNECT.indication SIGNIFICADO pedido de estabelecimento de uma conexão indicação à entidade invocada utilizada para indicar a aceitação ou não da conexão informa à entidade emissora se a conexão é aceita pedido de envio de dados sinalização da chegada de dados pedido de término da conexão indicação do pedido à entidade par Neste exemplo, CONNECT é um serviço confirmado enquanto os serviços DATA e DISCONNECT são não-confirmados. A figura 2.6 permite ilustrar as trocas de primitivas de serviço entre as camadas no caso de um serviço confirmado. O exemplo utilizado é o serviço CONNECT. SISTEMA A SISTEMA B Camada N+1 Camada N+1 connect.req connect.rsp connect.cnf connect.ind Camada N Camada N Figura 2.6 - Ilustração da troca de primitivas de serviço (confirmado). — 2.11 — Capítulo 3 AS SETE CAMADAS 1. DO M ODELO OSI INTRODUÇÃO A definição de um modelo de referência para a interconexão de sistemas abertos, o modelo OSI foi, sem dúvida, uma contribuição positiva para a padronização das arquiteturas de comunicação. Entretanto, a definição das camadas presentes do modelo OSI está relacionada à definição de soluções em termos de serviços e protocolos que implementem as funções relacionadas a cada uma destas camadas. O objetivo desta parte é apresentar os principais problemas e as respectivas soluções relacionadas com cada uma das camadas do modelo OSI. Como poderá ser visto ao longo desta parte, as sete camadas do modelo OSI podem ser organizadas em duas classes distintas: • as camadas baixas, que compreendem desde a camada física até a camada de transporte e cujos serviços e protocolos estão relacionados com a transmissão dos dados propriamente dita; • as camadas altas, que compreendem desde a camada de sessão até a camada de aplicação, cujos serviços e protocolos são mais orientados a resolver questões envolvendo as aplicações que irão utilizar o suporte de comunicação considerado. 2. A CAMADA FÍSICA O objetivo da camada Física é assegurar o transporte dos dados, representados por um conjunto de bits, entre dois equipamentos terminais, via um suporte de transmissão. Abordaremos, nesta parte do documento, os principais aspectos e problemas relacionados à transmissão de dados, como, os suportes de transmissão, os modos de transmissão, a multiplexação e a comutação. Ainda nesta seção, serão vistos alguns exemplos de interfaces físicas padronizadas e adotadas em muitas aplicações e arquiteturas de comunicação. 2.1. Os Suportes de Transmissão Os suportes de transmissão podem se caracterizar pela existência ou não de um guia físico. Na primeira classe estão os cabos elétricos, as fibras óticas e, na segunda classe, as ondas de rádio, as ondas de luz, etc... 2.1.1. O par de fios trançados Em diversas aplicações, é necessário se manter uma conexão direta e permanente entre dois computadores. O suporte de transmissão mais clássico utilizado até o momento é — 3.1 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA o par de fios trançados, o qual é composto de dois fios elétricos em cobre, isolados, e arranjados longitudinalmente de forma helicoidal. Esta técnica de enrolar os fios permite diminuir os efeitos das induções eletromagnéticas parasitas provenientes do ambiente no qual este estiver instalado. A utilização mais típica deste suporte de transmissão é a rede telefônica, onde, graças às suas características elétricas, os sinais podem percorrer várias dezenas de quilômetros, sem a necessidade de amplificação ou regeneração de sinal. Estes podem, ainda, ser utilizados para a transmissão de sinais analógicos quanto de sinais digitais, a banda passante atingida sendo função da sua composição (particularmente, diâmetro e pureza dos condutores, natureza dos isolantes e do comprimento do cabo). A taxa de transmissão obtida pela utilização deste suporte de transmissão situa-se na faixa de algumas dezenas de Kbits/s, podendo atingir, em condições particulares, na faixa dos Mbits/s em pequenas distâncias. O fato de representar um baixo custo e uma grande faixa de utilização o torna um dos suportes mais utilizados atualmente e, provavelmente, nos próximos anos. 2.1.2. Os cabos coaxiais Os cabos coaxiais são também altamente empregados como suporte de transmissão. Dois tipos de cabos são tipicamente utilizados: o primeiro tipo apresenta uma impedância característica de 50 ohms, utilizado nas transmissões digitais denominada transmissão em banda de base; o segundo tipo, com uma impedância característica de 75 ohms, é mais adequado para a transmissão de sinais analógicos. Eles são constituídos de dois condutores arranjados de forma concêntrica: um condutor central, a alma, envolto por um material isolante de forma cilíndrica. Esta capa isolante é, por sua vez, envolta por uma trança metálica condutora em cobre. Finalmente, o conjunto é envolto numa capa de proteção em plástico isolante. Em relação aos pares de fios trançados, os cabos coaxiais apresentam melhores características elétricas, oferecendo um boa relação entre a banda passante e a proteção contra interferências eletromagnéticas. A largura de banda vai depender igualmente da qualidade da composição do cabo e do seu comprimento. Para distâncias em torno de 1 km, é possível obter uma taxa de transmissão em torno de 10 Mbits/segundo, podendo-se obter taxas superiores para distâncias mais curtas. Os cabos coaxiais são altamente utilizados como suporte de transmissão nas Redes Locais Industriais. A informação transmitida pelos cabos coaxiais é geralmente codificada sob a forma de um sinal binário, onde os dígitos 0 e 1 são representados por dois diferentes níveis... por exemplo, 1 volt para o bit 1 e 0 volt para o bit 0. Esta forma de codificação, embora seja uma convenção bastante adequada, não permite ao receptor do sinal detectar o início e o fim da transmissão de um dígito binário. 2.1.3. As fibras óticas As fibras óticas são o meio de transmissão pelo qual os sinais binários são conduzidos sob a forma de impulsos luminosos. Um impulso luminoso representa um bit a 1, enquanto a ausência deste impulso representa um bit a 0. A luz visível é uma onda luminosa cuja freqüência está na ordem de 108 Hz, o que dá ao sistema uma banda passante potencial bastante grande. As taxas de transmissão num suporte a fibra ótica ficam na faixa dos Gbit/s (109 bit/s). Um sistema de transmissão a base de fibra ótica é composto de três principais elementos: o suporte de transmissão (a fibra ótica), o dispositivo de emissão e o dispositivo de recepção da onda luminosa. A fibra ótica é constituída de um fio de vidro bastante fino, à base de silício e outros componentes. Ela consiste de um núcleo no qual se propaga a luz e uma capa externa de proteção que mantém a luz no interior do núcleo. O dispositivo de emissão consiste, ou de — 3.2 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA um diodo emissor de luz (LED) ou de um diodo laser. O dispositivo de recepção é constituído geralmente de um fotodiodo ou de um fototransistor. O princípio da transmissão das fibras óticas é o da reflexão da luz na interface entre dois meios. Quando um raio luminoso deixa um meio homogêneo para se propagar num outro meio, o seu percurso sofre um desvio na interface entre os dois meios. Entretanto, existe um ângulo de incidência limite, a partir do qual o raio luminoso, ao invés de ser refratado ele será refletido na interface, sendo mantido no meio no qual ele havia sido introduzido. Desta forma, a luz poderá ser propagada ao longo do meio, em distâncias de alguns quilômetros. Atualmente, os suportes de comunicação à base de fibra ótica são utilizados em redes de comunicação em longa distância, substituindo sistemas mais antigos à base de cabos coaxiais. Isto deverá continuar a ocorrer nos próximos anos, contribuindo para que se tenha, num futuro próximo, em distâncias relativamente grandes, sistemas de comunicação oferecendo altas taxas de transmissão garantindo assim o salvamento de grandes volumes de informação. 2.2. Aspectos da Transmissão de Dados O meio de transmissão consiste geralmente de um conjunto de recursos e regras que permitem a transmissão de informação de um ponto a outro numa rede de comunicação. A transmissão a nível de bit é uma das formas mais simples de transferência de informação. Este processo é ilustrado pela figura 3.1(a), onde podemos observar os seguintes elementos: • a fonte de informação, que pode ser um computador ou um terminal, por exemplo, que gera as informações que deverão ser transmitidas, estas sendo representadas, usualmente, por um conjunto de dígitos binários, ou bits; • o transmissor, que é responsável da adaptação ou conversão do conjunto de informações, de bits, para sinal elétrico ou eletromagnético, adaptando-o ao meio de transmissão; • o suporte de transmissão, encarregado do transporte dos sinais representando a informação e que pode ser caracterizado por uma das técnicas apresentadas na seção precedente; é o suporte de transmissão quem realiza a “ligação física” entre os elementos envolvidos na comunicação; RUÍDO FONTE DE INFORMAÇÃO BINÁRIA TRANSMISSOR SUPORTE DE TRANSMISSÃO RECEPTOR DESTINATÁRIO DA INFORMAÇÃO BINÁRIA (a) RUÍDO FONTE OU DESTINATÁRIO INFORMAÇÃO BINÁRIA TRANSMISSOR RECEPTOR SUPORTE DE TRANSMISSÃO TRANSMISSOR RECEPTOR FONTE OU DESTINATÁRIO INFORMAÇÃO BINÁRIA (b) Figura 3.1 - (a) Sistema de transmissão ponto-a-ponto unidirecional; (b) modelo bidirecional. — 3.3 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA • o receptor, responsável pela reconstituição da informação a partir dos sinais recebidos via suporte de transmissão, e que, inclusive pode ter sofrido distorções provocadas por ruídos existentes no meio; • o destinatário da informação, que pode ser um computador, um terminal ou outro equipamento e que vai consumir a informação gerada pelo elemento fonte. Geralmente, a transmissão a nível de bits pode ser realizada de forma bidirecional, esta podendo ainda ser realizada de forma alternada ou simultânea. Assim, a cada nó deverá estar associado um equipamento transmissor e um receptor compondo o conjunto transceptor como mostrado na figura 3.1(b). A transmissão de dados, quando realizada nos dois sentidos é denominada duplex. No caso em que ela se realiza alternadamente, ou seja, ora num sentido, ora no outro, ela se denomina half-duplex. No caso em que ela se realiza simultaneamente nos dois sentidos, esta será denominada full-duplex. Os modos de transmissão caracterizam as diferentes formas como os bits de informação transmitidos são delimitados e encaminhados ao longo da linha de comunicação. No que diz respeito à forma como os bits são encaminhados ao longo de uma linha de comunicação, pode-se distinguir o modo de transmissão paralelo e o modo serial, conforme já mencionado anteriormente. Na transmissão paralela, os bits são transportados simultaneamente por um suporte composto de várias linhas em paralelo. É um modo de transmissão mais adequado à comunicação entre equipamentos localizados a curtas distâncias. A ligação interna na arquitetura de computadores ou entre computadores e periféricos próximos são exemplos da aplicação da transmissão paralela. Na transmissão serial, mais adequada a comunicação entre equipamentos separados por grandes distâncias, os bits são encaminhados serialmente através de uma única linha de comunicação. Pode-se considerar outros parâmetros para a classificação dos modos de transmissão, como, por exemplo, o fator tempo. No caso particular das transmissões seriais, a forma de delimitar os bits pode levar em conta duas diferentes filosofias — a transmissão síncrona e a transmissão assíncrona. Na transmissão síncrona, os bits de dados são transmitidos segundo uma cadência pré-definida, obedecendo a um sinal de temporização (clock). O receptor, por sua vez, conhecendo os intervalos de tempo permitindo delimitar um bit, poderá identificar a seqüência dos bits fazendo uma amostragem do sinal recebido. Na transmissão assíncrona, não existe a fixação prévia de um período de tempo de emissão entre o transmissor e o receptor. A separação entre os bits é feita através de um sinal especial com duração variável. Um caso típico de transmissão assíncrona é a transmissão de caracteres; neste caso, a cada grupo de bits constituindo um caractere são adicionados bits especiais para representar o início (start bit) e final deste (stop bit). Neste tipo de comunicação, apesar de assíncrona ao nível de caracteres, ocorre uma sincronização ao nível de bit. Um outro aspecto a ser destacado aqui é aquele da forma como os sinais são transmitidos num suporte de comunicação, particularmente no que consiste à maneira como a banda passante do canal de comunicação é explorada. No primeiro modo, a transmissão em banda de base (baseband), a banda passante do suporte de transmissão é atribuída totalmente a um único canal de transmissão. Neste modo, os sinais são transmitidos através do meio de comunicação multiplexados no tempo. No segundo modo, a transmissão em barda larga (broadband), a banda passante do suporte de transmissão é dividida num determinado número de canais de faixa de freqüência estreita, permitindo que estes possam então ser transmitidos utilizando uma técnica de multiplexação em freqüência. A banda passante dos canais é normalmente definida em função da taxa de transmissão desejada e do modo de modulação empregado. Neste modo — 3.4 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA de transmissão, cada canal pode atingir uma taxa de transmissão de até 3 Mbits/s, inferior, portanto, à transmissão em banda de base. 3. A CAMADA DE ENLACE DE DADOS A camada de Enlace de Dados tem por função oferecer um caminho para o transporte das informações entre entidades da Camada de Rede, que será estudada na parte seguinte do documento. Dentre os fatores com os quais a camada de Enlace deve preocupar-se estão: • a forma como os bits provenientes da camada Física serão agrupados em quadros; • os mecanismos de detecção e correção de erros a serem implantados, uma vez que as informações trocadas através da camada Física não são isentas de erros de transmissão, pelos fatores que foram levantados na parte anterior deste documento; • os mecanismos de controle de fluxo para limitar o volume de informação trocados entre entidades fonte e destino; • a gestão das ligações entre as entidades. 3.1. As Classes de Serviços de Enlace A camada de Enlace de Dados oferece serviços classificados em três principais categorias, estas dependendo do sistema no qual elas serão implantadas: • serviço sem conexão e sem reconhecimento; • serviço sem conexão com reconhecimento; • serviço orientado à conexão. Na primeira classe de serviços, a máquina fonte da informação envia os quadros de dados à máquina destinatária sem recepção de reconhecimento da informação enviada; além disso, não existe estabelecimento prévio de conexão e, por conseqüência, não existe liberação desta ao final do diálogo. Se um quadro de dados é perdido no suporte de transmissão como conseqüência de um ruído, não existe nenhum mecanismo que permita solucionar o problema. Esta classe de serviços é adequada quando implantados sobre um suporte de comunicação cuja taxa de erros é muito baixa ou que a correção dos erros é prevista nas camadas superiores. Eles podem ser empregados particularmente no caso de aplicações tempo real e em redes locais. A segunda classe de serviços, embora ainda não defina o estabelecimento prévio de conexão, prevê a existência de quadros de reconhecimento, de modo que a máquina fonte será notificada pela máquina destinatária da recepção do quadro previamente enviado. Um mecanismo que pode ser implantado no caso de perda do quadro — o que corresponde à não recepção do quadro de reconhecimento após um certo tempo (timeout) — é a retransmissão daquele. Num serviço sem conexão, existe a possibilidade da retransmissão de quadros provocando a recepção múltipla do mesmo quadro (duplicação de mensagem). A terceira classe de serviços é a mais sofisticada, uma vez que ela define a necessidade do estabelecimento prévio de conexão e a liberação destas ao final do diálogo. Neste caso, cada quadro enviado é numerado e a camada de Enlace garante que cada quadro enviado será recebido, uma única vez, e que o conjunto de quadros enviados será recebido ordenado da mesma forma que foi enviado. Esta classe de serviços oferece à camada de Rede um canal de comunicação confiável. Os serviços orientados conexão são caracterizados por três principais etapas: • a etapa de estabelecimento de conexão, durante a qual são definidos todos os parâmetros relacionados à conexão, como por exemplo, os contadores de seqüência de quadros; — 3.5 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA • a etapa de transmissão de dados, durante a qual são realizadas todas as trocas de informação correspondentes ao diálogo entre duas máquinas; • a etapa de liberação da conexão, que caracteriza o fim do diálogo e na qual todas as variáveis e outros recursos alocados à conexão serão novamente disponíveis. A comunicação entre as camadas de Rede e de Enlace é feita através de primitivas de serviço (request, indication, response e confirm) como definidas na parte relativa à apresentação do modelo OSI. Um esquema permitindo demonstrar o modo de utilização das primitivas é mostrado na figura 3.2. Neste esquema, representa-se nas extremidades a camada de Rede, caracterizada pelos dois sistemas envolvidos no diálogo (no caso, A e B) e no centro a camada de Enlace. Os deslocamentos verticais das primitivas representam o tempo decorrido entre as ocorrências destas. Por exemplo, no caso das primitivas de request e indication, o tempo decorrido entre o envio da primeira pela camada de Rede do sistema A e a recepção da segunda pela camada de Rede do sistema B. 3.2. O conceito de quadro Para que o serviço seja oferecido à camada de Rede, a camada de Enlace utiliza-se dos serviços fornecidos pela camada Física que, como já foi descrito na parte precedente, é responsável da transmissão de bits de um ponto a outro na rede de comunicação, sendo que o conjunto de bits transmitido pode sofrer distorções produzindo erros de transmissão. Uma conseqüência típica pode ser que o número de bits recebidos seja inferior ao número de bits enviados ou os valores de alguns bits podem ter sido modificados. Com o objetivo de permitir um controle de erro eficiente, a camada de Enlace decompõe as mensagens em porções menores denominadas quadros, aos quais são adicionados códigos especiais de controle de erro. Desta forma, o receptor pode verificar se o código enviado no contexto de um quadro indica ou não a ocorrência de erros de transmissão e ele pode, assim, tomar as providências necessárias para evitar as conseqüências devido àquele erro. A definição e delimitação dos quadros pode obedecer a diferentes políticas. Uma das políticas adotadas pode ser a contagem de caracteres. Nesta política, é introduzido um caractere especial que indica o número de caracteres compondo o quadro. Deste modo, a nível da camada de Enlace do receptor, basta que a entidade leia este caractere e em seguida conte o número de caracteres para definir o tamanho do quadro. O inconveniente desta técnica, portanto, é o fato de que o caractere que define o tamanho do quadro pode ser modificado, o que significa que o receptor vai ler, erroneamente os quadros transmitidos. A figura 3.3 ilustra este problema. camada de rede camada de enlace camada de rede request indication response confirm sistema B sistema A Figura 3.2 - Primitivas de serviço trocadas entre as camadas de Rede e de Enlace. — 3.6 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA contadores de caracteres (a) 5 1 2 3 4 quadro1 (5 car.) 5 6 7 8 5 1 2 3 8 0 quadro2 (5 car.) erro (b) 9 4 7 1 2 3 4 5 6 4 5 6 quadro3 (8 car.) contador de caracteres 6 7 8 9 8 0 1 2 3 Figura 3.3 - Sequência de caracteres: (a) sem erro; (b) com erro. Uma técnica que apresenta uma solução a este problema consiste na adição de seqüências especiais de caracteres de modo a representar o início e fim da transmissão de um quadro. A figura 3.4 ilustra um caso relativo a esta técnica, onde a seqüência de caracteres DLE (Data Link Escape) e STX (Start of TeXt) é inserida para representar o início de um quadro e a seqüência DLE e ETX (End of TeXt) para representar o fim do quadro. Esta técnica apresenta, ainda, um ponto de vulnerabilidade: se, dentro do texto, dado que os bits podem assumir qualquer combinação de valores, uma seqüência de bits coincide com uma das seqüências de caracteres citada, a entidade receptora na camada de Enlace pode ser “enganada” por esta seqüência e, assim, receber erroneamente o quadro. A solução a este problema vem através da introdução, pela entidade de Enlace emissora, de um caractere DLE a cada vez que, uma seqüência de bits correspondente à parte de dados, coincidir com um caractere DLE. Desta forma, basta à entidade de dados receptora eliminar os caracteres DLE dos dados antes de transmití-los à camada de Rede. Isto vai permitir então, às entidades receptoras de Enlace, fazer a distinção entre as seqüências delimitadoras de quadro (DLE-STX e DLE-ETX) das seqüências «acidentais» nos dados. Os caracteres DLE introduzidos a nível dos dados são denominados caracteres de transparência. Uma técnica ainda utilizada e definida mais particularmente para a utilização em redes de comunicação é aquela em que os quadros são delimitados por uma seqüência de bits particular, mas desta vez dissociados da codificação de caracteres. A seqüência 01111110 é adotada para representar a delimitação dos quadros. De maneira análoga à utilização dos caracteres de transparência da técnica anterior, bits de transparência são introduzidos a nível da parte de dados para evitar a confusão, por parte do receptor, com os delimitadores de quadro. Assim, no receptor, a cada vez que 5 bits “1” consecutivos são detectados na parte de dados, um bit 0 é adicionado após a seqüência. Do lado do receptor, a cada vez que ocorrer uma seqüência de 5 bits “1” consecutivos de dados seguidos de um bit 0, este último será eliminado da parte de dados. A figura 3.5 ilustra a aplicação desta técnica. Em 3.5(a) são apresentados os dados originais e, em 3.5(b), os mesmos dados com a introdução dos bits de transparência. 3.3. O controle de erro Os erros podendo ocorrer sobre os suportes de transmissão podem ter como causas os mais diversos fenômenos físicos, como por exemplo, o ruído térmico, provocado pela agitação dos elétrons nos cabos de cobre. Outro fenômeno importante são os ruídos impulsivos, capazes de provocar, numa linha transmitindo dados a 9600 bit/s, a perda de 96 — 3.7 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA bits. Os ruídos impulsivos são causados pelos arcos devido ao chaveamento de relês ou outros dispositivos eletromecânicos. O que se tem notado, entretanto, é que, independentemente do fenômeno causador de erro, estes tendem a gerar normalmente verdadeiros pacotes de erros e não erros simples. Isto pode ter um aspecto positivo, uma vez que, num conjunto relativamente grande de bits, um menor número de pacotes vai conter erros. Por outro lado, os erros agrupados em pacotes são mais difíceis de modelizar e de detectar. O controle de erros de transmissão é uma das funções mais importantes asseguradas pela camada de enlace. Esta função é baseada na informação, à entidade emissora da mensagem do que ocorreu na extremidade de recepção. Os protocolos de controle de erro são caracterizados, em geral, pela definição de um quadro de controle, correspondente a um reconhecimento positivo ou negativo. Caso a entidade emissora receba um reconhecimento positivo de um quadro previamente enviado, ela entende que aquele foi corretamente recebido. Por outro lado, se ela recebe um reconhecimento negativo, ficará consciente que o quadro foi mal transmitido e que, neste caso, ele deverá ser retransmitido. Ainda, se, por uma intensidade relativamente forte de ruído, o quadro inteiro não é recebido pela entidade destinatária, esta não vai reagir ao quadro emitido e a entidade emissora corre o risco de esperar indefinidamente pelo reconhecimento — isto é evitado pela adição de temporizadores, estabelecendo assim um tempo máximo de espera pelo reconhecimento, antes da retransmissão. O tempo de espera deve ser determinado em função dos atrasos relativos à transmissão dos quadros de modo que os quadros de reconhecimento, se existentes, cheguem antes do esgotamento da temporização (timeout). Deste modo, se o quadro ou o reconhecimento são perdidos, a temporização será esgotada, podendo provocar a retransmissão do quadro. Neste caso, é possível que o quadro seja aceito mais de uma vez pela camada de Enlace e transmitido à camada de Rede — duplicação de quadros. Para evitar este problema, deve-se introduzir um mecanismo de distinção dos quadros a fim de que o receptor possa separar os quadros duplicados de seus originais. (a) DLE STX A B DLE C DLE ETX (b) DLE STX A B DLE DLE C DLE ETX Figura 3.4 - (a) Dados enviados pela camada de Rede com seqüências de delimitação; (b) idem, com introdução dos caracteres de transparência. (a) 0 1 1 0 1 1 1 1 1 (b) 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 bit de transparência Figura 3.5 - (a) dados originais; (b) dados com adição do bit de transparência. — 3.8 — 1 CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA 3.3.1. Os códigos de correção de erro Existem praticamente duas técnicas para a correção de erro. A primeira, consiste na introdução, a nível dos quadros, de informações suficientemente redundantes que permitam ao receptor reconstituir os dados enviados a partir da informação recebida. A segunda técnica consiste em adicionar unicamente um conjunto de informações redundantes o suficiente para que o receptor possa detectar a ocorrência de um erro (sem corrigí-lo) e requisitar a retransmissão do quadro. Ao primeiro tipo de informação é dado o nome de código corretor e ao segundo tipo de informação código detector. 3.3.2. Os códigos de detecção de erro Os códigos corretores são utilizados para as transmissão de dados em casos particulares como, por exemplo, quando os canais são unidirecionais ou quando é impossível requisitar a retransmissão de um quadro. Quando possível, porém, uma solução mais adequada é através de uma técnica de detecção com retransmissão por razões de eficiência. Um método de detecção de erros largamente utilizado é a definição de códigos de detecção de erros polinomiais, também denominados CRC (cyclic redundancy code). Nos códigos polinomiais, considera-se que os bits de uma cadeia de caracteres são os coeficientes de um polinômio, coeficientes estes, capazes de assumir apenas dois valores: 0 ou 1. Assim, um bloco de k bits é visto como uma série de coeficientes de um polinômio de k termos, indo de x k-1 a x 0. A palavra 110001 contém 6 bits — ela representa então o seguinte polinômio: x 5 + x 4 + x 0 . A utilização de códigos de detecção polinomiais é baseada na escolha de um código especial que caracteriza um polinômio gerador, ou G(x). Uma exigência em relação a este polinômio é que os bits mais significativo e menos significativo (correspondendo, respectivamente aos coeficientes de mais alta ordem e de mais baixa ordem do polinômio) sejam de valor 1. A técnica consiste em adicionar a um bloco de dados (caracterizando um polinômio M(x)) um conjunto de bits de controle de modo que o quadro (dados + bits de controle) seja divisível por G(x). Na recepção, a entidade de Enlace efetua a divisão dos bits compondo o quadro pelo polinômio gerador. Caso o resto seja diferente de zero, é caracterizada então a ocorrência de um erro de transmissão. Alguns exemplos de códigos polinomiais adotados na detecção de erros são: CRC-12 = CRC-16 = CRC-CCITT = 4. x 12 + x 11 + x 3 + x 2 + x 1 + 1 x 16 + x 15 + x 2 + 1 x 16 + x 12 + x 5 + 1 A CAMADA DE REDE O objetivo da camada de Rede é assegurar o transporte de unidades de dados denominadas pacotes do sistema fonte ao sistema destinatário, definindo uma trajetória apropriada. Esta trajetória pode significar a passagem por diversos nós intermediários da rede, o que significa que a camada de Rede deve ter o conhecimento de todos os aspectos topológicos da rede considerada e, com esta informação, ser capaz de escolher o caminho a ser traçado pelas mensagens. Nesta escolha, é interessante que seja levado em conta o estado corrente da rede, particularmente no que diz respeito ao tráfego das mensagens, evitando assim a sobrecarga de certos trechos das linhas de comunicação. Ainda, se o sistemas fonte e destinatário estão conectados a redes diferentes, estas diferenças devem ser levadas em conta e compensadas pela camada de Rede. Duas funções essenciais da camada de Rede, descritas brevemente aqui, refletem, respectivamente, os problemas de roteamento e colisão serão tratados nesta parte do — 3.9 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA documento. Os mecanismos relacionados à funções de interconexão merecerão uma parte dedicada, mais adiante, no curso. 4.1. Serviços oferecidos pela camada de Rede Segundo a bibliografia, uma das primeiras discussões realizadas no que diz respeito à concepção da camada de Rede foi a questão do tipo de serviço a ser oferecido às camadas superiores, particularmente relacionado à existência ou não de conexão. O resultado desta discussão foi a definição, a nível do modelo OSI, de duas classes de serviço, sem conexão e orientado à conexão, sendo que uma certa liberdade foi dada no sentido de se definir a que nível o serviço com conexão seria implantado, ou mesmo se este seria implantado. Abriu-se, assim, a possibilidade de se ter, nos diferentes níveis, as duas classes de serviço, isto sendo ilustrado pela figura 3.6. Os SAPs são localizados na interface entre duas camadas, permitindo que uma camada tenha acesso aos serviços oferecidos pela camada inferior. Como se pode ver na figura, da camada de Enlace para cima, os serviços podem ser sem ou orientados à conexão. Uma conexão de Rede é vista, da ótica do modelo OSI, como um par de filas FIFO (FIrst In FIrst Out), cada uma orientada num sentido, conectado entre dois NSAPs (endereços de rede). A figura 3.7 ilustra o estado da conexão, considerando a adoção de um serviço orientado conexão. A figura 3.7(a) ilustra o estado da conexão antes do seu estabelecimento; 3.7(b) após o estabelecimento da conexão e, 3.7(c), após o envio de três pacotes de dados. 4.1.1. As primitivas de serviço O quadro a seguir apresenta as primitivas de serviço disponíveis pela camada de Rede do modelo OSI, tanto para o serviço orientado conexão como para o sem conexão. SERVIÇO ORIENTADO CONEXÃO N_CONNECT.request (called, calling,acks_wanted,exp_wanted,qos,user_data) N_CONNECT.indication (called, calling,acks_wanted,exp_wanted,qos,user_data) N_CONNECT.response (responder, acks_wanted,exp_wanted,qos,user_data) N_CONNECT.confirm (responder, acks_wanted,exp_wanted,qos,user_data) N_DISCONNECT.request (source, reason, user_data, responding_address) N_DISCONNECT.indication (source, reason, user_data, responding_address) N_DATA.request (user_data) N_DATA.indication (user_data) N_DATA_ACKNOWLEDGE.request ( ) N_DATA_ACKNOWLEDGE.indication ( ) N_EXPEDITED_DATA.request (user_data) N_EXPEDITED_DATA.indication (user_data) N_RESET.request (source, reason) N_RESET.indication (source, reason) N_RESET.response ( ) N_RESET.confirm ( ) SERVIÇO SEM CONEXÃO N_UNITDATA.request (source_address,dest_address, qos, user_data) N_UNITDATA.indication (source_address,dest_address, qos, user_data) N_FACILITY.request (qos) N_FACILITY.indication (dest_address, qos, reason) N_REPORT.indication (dest_address, qos, reason) — 3.10 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA serviço sem conexão serviço orientado conexão APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE ENLACE SAP FÍSICA Figura 3.6 - Ilustração das classes de serviço do modelo OSI. usuário 1 usuário 2 usuário 1 usuário 2 NSAPs NSAPs usuário 2 NSAPs camada Rede (a) usuário 1 camada Rede (b) camada Rede (c) Figura 3.7 - Modelo de uma conexão de Rede: (a) antes do estabelecimento; (b) após o estabelecimento; (c) após o envio de três pacotes (de 1 para 2). N_CONNECT.request é a primitiva utilizada para requisitar o estabelecimento de uma conexão de Rede e através de seus parâmetros deve-se indicar o endereço ao qual se deseja conectar (calling), assim como o endereço do iniciador (called). Encontra-se, ainda, nos seus parâmetros, duas variáveis booleanas que permitem requisitar serviços adicionais. O parâmetro acks_wanted permite indicar o pedido de reconhecimento de pacotes. Se a camada de Rede não permite o fornecimento de reconhecimento, o fornecedor vai colocar esta variável a falso na primitiva de indicação; da mesma forma, se a entidade destinatária não pode fornecer reconhecimento, ela mesma o fará (colocar acks_wanted a falso) na primitiva de resposta. O outro parâmetro booleano, exp_wanted, permite a utilização de serviços de dados expressos (ou urgentes), o que significa que um pacote pode violar a ordem normal dos pacotes na fila para se colocar na cabeça desta. Isto permite, de certo modo, estabelecer um nível de prioridade entre as mensagens a nível de Rede. O parâmetro qos permite determinar a qualidade do serviço a ser oferecido, sendo composto de duas listas de valores. A primeira lista contém o contexto desejado pela entidade iniciadora; a segunda indica os valores mínimos aceitáveis. Se o serviço de Rede é incapaz de fornecer pelo menos os valores mínimos estabelecidos pelo usuário iniciador, a conexão não será estabelecida. Os valores estabelecidos neste parâmetro são a taxa de erro, a taxa de transmissão, a confidencialidade e custo da transmissão. O iniciador pode, através do parâmetro user_data, introduzir dados no pedido de conexão, podendo a entidade chamada consultar estes dados antes da aceitação da conexão. A aceitação de uma conexão é feita pelo iniciador através da primitiva N_CONNECT.indication; por outro lado, a recusa é implementada através da primitiva — 3.11 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA N_DISCONNECT.request, que informa, através do parâmetro reason, o motivo do não estabelecimento da conexão. Se a conexão é estabelecida, a transmissão de dados é feita utilizando a primitiva N_DATA.request, que será refletida no receptor por uma primitiva N_DATA.indication. Caso um pedido de reconhecimento de pacotes foi acertado entre os usuários da camada no momento da conexão, o reconhecimento será implementado através do envio, pelo receptor, de uma primitiva N_DATA_ACKNOWLEDGE.request. As primitivas N_RESET são utilizadas para sinalizar problemas de comunicação, tais como o bloqueio de uma entidade de transporte envolvida na comunicação ou mesmo do fornecedor do serviço. O efeito deste serviço é o esvaziamento das filas de espera, sendo que as informações presentes nestas serão perdidas. As perdas deverão ser recuperadas pela camada de Transporte. As primitivas N-UNITDATA são utilizadas para o envio de dados no serviço sem conexão; elas não oferecem nem controle de erros nem de fluxo. N_FACILITY é o serviço que permite ao usuário obter informações sobre as características da transmissão de informação, por exemplo, a porcentagem de pacotes distribuídos. Finalmente, a primitiva N_REPORT permite à camada de Rede informar a ocorrência de problemas relativos ao serviço de Rede, como, por exemplo, a indisponibilidade momentânea de um determinado endereço destinatário. 4.1.2. O endereçamento de Rede Uma função importante desta camada é o fornecimento de uma codificação espacial coerente para uso da camada de Transporte. O fato é que, para cada rede, foi definida uma estrutura distinta de endereçamento, o trabalho de uniformização ficando a cargo da camada de Rede. Assim, a estrutura de endereçamento a nível de Rede foi concebida de modo a incorporar as características das diversas estruturas de endereçamento existentes. Todas as primitivas de serviço de Rede utilizam o endereçamento orientado aos NSAPs para identificar a origem de o destinatário de um pacote. O endereço de NSAP é composto de três campos: • AFI (Authority and Format Identifier), identifica o tipo de endereçamento existente no terceiro campo do endereço, possibilitando uma numeração entre 10 e 99, correspondente aos diferentes formatos existentes e deixando ainda possibilidades de extensão; • IDI (Initial Domain Identifier) indica o domínio ao qual pertence o número do DSP (o terceiro campo) — se o DSP é um número de telefone, este campo indicará o código do país; • DSP (Domain Specific Part) contém o endereço específico do NSAP no domínio considerado. 4.2. A função de Roteamento Como dito na parte introdutória, a função principal da camada de Rede é efetuar o encaminhamento dos pacotes trocados entre duas entidades oferecendo uma comunicação fim-a-fim. Durante a trajetória os pacotes sofrerão uma série de saltos, sendo que a decisão de que caminho utilizar é feita a nível da camada de Rede, esta decisão podendo levar em conta (ou não) a situação da rede do ponto de vista do tráfego de informação. Num primeiro ponto, dado este último aspecto, pode-se distinguir os diferentes algoritmos de roteamento em duas principais classes: os algoritmos adaptativos e não adaptativos. Os algoritmos não adaptativos não levam em conta a situação de tráfego da rede, fazendo o denominado roteamento estático; já os adaptativos o fazem, considerando modificações de topologia da rede e do tráfego real. — 3.12 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA As seções que seguem vão discutir alguns dos conjuntos de algoritmos de roteamento existentes. 4.2.1. Algoritmo do caminho mais curto Este algoritmo é baseado numa representação da subrede na forma de um grafo, onde os nós são os IMP e os arcos são as linhas de comunicação. E escolha de uma trajetória é, então, baseada neste grafo, o objetivo sendo encontrar o caminho mais curto entre dois IMPs. O conceito de caminho mais curto pode levar em conta diferentes aspectos: • o número de nós entre os dois pontos; • a distância geográfica entre os pontos; • os tempos de espera em cada nó da trajetória; • etc... No terceiro caso, por exemplo, os arcos são etiquetados com um valor que representa o tempo médio de espera entre o envio e a recepção de um pacote de teste, expedido periodicamente. Um exemplo de algoritmo do caminho mais curto é aquele definido por Dijkstra, onde cada nó é etiquetado pela distância do nó fonte seguindo o caminho mais curto conhecido. Como, inicialmente, nenhum caminho é conhecido, os nós são etiquetados com a etiqueta «infinito», ou .... Estas vão sendo atualizadas à medida que o algoritmo progride e que os caminhos vão se tornando conhecidos, as etiquetas vão indo do provisório ao permanente uma vez que o caminho mais curto foi encontrado para os diferentes nós. A figura 3.8 ilustra o funcionamento deste algoritmo. Vamos considerar o grafo apresentado em 3.8(a), onde os arcos são etiquetados com o valor da distância entre os nós. Vamos considerar que o objetivo aqui é encontrar o caminho mais curto entre A e D. Como o nó A é o nó de origem, ele será marcado por um nó de referência (fundo cinza) e serão analisados os nós adjacentes. Estes serão etiquetados pela distância que os separa de A, marcando também, na etiqueta, o último nó a partir do qual o cálculo foi feito. Após a análise dos nós adjacentes a A, marca-se aquele contendo a etiqueta de menor valor, como mostrado em 3.8(b), este nó passando a ser o nó ativo (ou de referência). Repetindo a análise para o nó B, define-se o nó E como sendo o novo nó ativo, mostrado em 3.8(c). O algoritmo vai progredindo até que o caminho mais curto seja então encontrado, as etiquetas sendo modificadas segundo as análises efetuadas. A progressão do algoritmo para o exemplo é ilustrada por 3.8(d), 3.8(e) e 3.8(f). 4.2.2. Roteamento multicaminhos Este algoritmo leva em conta a possibilidade de existência de diversos caminhos entre dois nós de valores quase equivalentes. Desta forma, o desempenho da rede pode ser melhorado, se o tráfego é assumido por vários caminhos, reduzindo assim a carga de uma dada linha de comunicação. Esta técnica de roteamento é implantada da seguinte forma: cada IMP mantém atualizada uma tabela com uma linha para cada IMP da rede. Para cada IMP, tem-se as diferentes linhas de saída para este destino, classificadas em ordem decrescente, do melhor ao menos eficiente, com um peso relativo. Antes do envio de um pacote, o IMP gera um número aleatório para definir o caminho, utilizando os pesos como probabilidade. As tabelas são criadas de maneira estática pelo administrador do sistema e carregadas em cada IMP na inicialização da rede. O grafo da figura 3.9(a) ilustra o desenvolvimento deste algoritmo, sendo que em 3.9(b) está apresentada a tabela para o IMP J. Se J recebe um pacote destinado a A, ele pode optar por um dos três caminhos, consultando a tabela na linha associada ao nó A. A primeira escolha é o caminho direto a A, as outras sendo via I e H, respectivamente. — 3.13 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI B 3 2 A C 7 2 E 1 6 PROF. VITÓRIO BRUNO MAZZOLA C ( ,-) B (2,A) 3 2 F 4 2 E ( ,-) D F ( ,-) A D ( ,-) 2 H G H ( ,-) G (6,A) (b) (a) C (9,B) B (2,A) C (9,B) B (2,A) E (4,B) E (4,B) A F ( ,-) F (6,E) D ( ,-) A H ( ,-) G (6,A) D ( ,-) H ( ,-) G (5,E) (d) (c) C (9,B) B (2,A) C (9,B) B (2,A) E (4,B) E (4,B) F (6,E) A D ( ,-) A F (6,E) H (9,G) G (5,E) D ( ,-) H (8,F) G (5,E) (f) (e) Figura 3.8 - Ilustração do algortimo de Dijkstra. A E B C F I G J K D H L A A 0,63 I 0,21 H 0,16 B A 0,46 H 0,31 I 0,23 C A 0,34 I 0,33 H 0,33 D H 0,25 I 0,25 A 0,50 0,40 A E I 0,40 H 0,20 F A 0,34 H 0,33 I 0,33 G H 0,46 A 0,31 K 0,23 H H 0,63 K 0,21 A 0,16 I I 0,65 A 0,22 H 0,13 · · · · · K K 0,67 H · 0,22 A · 0,11 L K 0,42 H 0,42 A 0,16 (a) (b) Figura 3.9 - Ilustração do algoritmo multicaminho: (a) grafo da rede; (b) tabela para o nó J. A decisão é, então, baseada na geração de um número aleatório entre 0,00 e 0,99. Se o número é inferior a 0,63, a linha A será escolhida, se estiver entre 0,63 e 0,83, a linha passando por I será escolhida; senão, será a linha que passa por H. A vantagem desta técnica sobre a anterior é a possibilidade de definir diferentes classes de tráfego sobre diferentes caminhos. Uma outra vantagem é a confiabilidade ganha, uma vez que várias linhas podem ser perdidas sem que a rede perca a sua conectividade. — 3.14 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI 4.3. PROF. VITÓRIO BRUNO MAZZOLA O controle de congestionamento Durante o funcionamento de uma aplicação distribuída construída sobre uma rede, vão existir instantes em que o fluxo de mensagens sendo trocadas pode atingir valores bastante importantes, de tal forma que os nós intermediários, responsáveis do tratamento dos pacotes, não sejam mais capazes de tratar os pacotes para retransmissão. Isto, naturalmente, vai ter como conseqüência uma degradação no funcionamento da rede, podendo trazer prejuízos (lentidão, perdas de pacotes) ao desempenho da aplicação e comprometendo o seu correto funcionamento. As causas desta sobrecarga, conhecida por congestionamento, podem ser de várias naturezas. Um exemplo disto pode ser a lentidão dos nós na realização do roteamento ou um mal funcionamento do mecanismos de controle de fluxo. O congestionamento consiste, normalmente de um processo a realimentação positiva, o número de mensagens tendendo a crescer se a rede está congestionada. Sendo assim, a camada de Rede deve também fazer este papel, através da implementação de funções de controle de congestionamento, alguns dos quais serão descritos a seguir. 4.3.1. A pré-alocação de buffers Uma primeira forma de controlar o congestionamento da rede é através da préalocação de buffers, particularmente se o serviço é orientado à conexão. Isto significa que, no momento do estabelecimento do circuito virtual que vai caracterizar a conexão, um determinado número de buffers deve ser alocado em cada nó para permitir o armazenamento dos pacotes a serem retransmitidos. Evidentemente, o número de buffers a ser alocado vai depender do protocolo implementado entre cada par de nós intermediários (IMPs). Um algoritmo do tipo «enviaespera» vai exigir um número de buffers evidentemente menor do que um algoritmo que autorize o envio de diversos pacotes antes da retransmissão. 4.3.2. A destruição de pacotes Um outro mecanismo que é adotado para o controle de congestionamento é o da destruição de pacotes. Neste caso, não existe reserva prévia de buffers, de modo que, se um pacote chega num IMP e este não dispõe de buffer para o seu armazenamento, este é simplesmente destruído (ou descartado). Se o serviço oferecido é do tipo «datagrama», não há mais nada a fazer; por outro lado, se este é orientado à conexão, o pacote deverá ser armazenado em algum nó para uma possível retransmissão. Ainda, a destruição de pacotes deve seguir uma certa disciplina... por exemplo, destruir um pacote de reconhecimento pode não ser uma boa solução, uma vez que este pacote poderia permitir ao nó o apagamento de um pacote de informação e, por consequência, a liberação de um buffer. Uma solução para isto é a reserva, para cada linha de chegada, de um buffer que possibilite a recepção de pacotes de reconhecimento endereçados àquele nó. 4.3.3. O controle de fluxo O controle de fluxo consiste em outra técnica de controle de congestionamento, embora não muito eficiente nesta tarefa. O problema do controle do fluxo é o fato que, os limites do tráfego não podem ser estabelecidos a valores muito baixos, pois isto pode provocar problemas de eficiência na aplicação se um pico de tráfego é requerido. Por outro lado, a escolha de um limite alto de tráfego pode resultar num controle medíocre de congestionamento. Outras técnicas de controle de congestionamento são ainda implementadas, como por exemplo: — 3.15 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA • o controle isarítmico, baseado na existência em cada nó de um certo número de fichas. O nó que tiver um pacote a transmitir, deve obter uma ficha, se existir alguma disponível. Isto permite manter constante o número de pacotes em circulação na rede; • os pacotes de estrangulamento, enviados por um nó ao usuário do serviço de rede, indicando que determinadas linhas de saída estão no limite da saturação. Isto faz com que o usuário reduza o envio de pacotes para o destino utilizando aquela linha até que a situação retome a normalidade. 5. A CAMADA DE TRANSPORTE A função da camada de Transporte é permitir a transferência de informações do sistema emissor ao sistema receptor de forma confiável e econômica, independentemente da natureza da informação ou das redes suportando a comunicação. A importância dos serviços fornecidos por esta camada está no fato que muitas aplicações existentes podem funcionar simplesmente com a existência de um serviço confiável de transporte de informação, o que quer dizer que os serviços que poderiam ser fornecidos pelas camadas superiores são dispensável. Um exemplo disto é a interconexão de estações no sistema UNIX. Nesta parte do documento, serão apresentadas as principais definições relacionadas aos serviços e protocolos de transporte, particularmente do ponto de vista do modelo OSI. 5.1. O serviço oferecido à camada de Sessão Segundo o modelo OSI, os usuários da camada de Transporte são as entidades de Sessão, às quais deve ser oferecido o serviço confiável de transporte dos bits de informação fim-a-fim, este serviço sendo fornecido através de uma entidade de software ou de hardware denominada entidade de transporte. De maneira similar à camada de Rede, a de Transporte pode fornecer duas classes de serviço, ou seja, sem conexão e orientados à conexão. Os serviços de Transporte orientados à conexão são caracterizados pelas três etapas já descritas para outros níveis do modelo OSI, isto é, estabelecimento de conexão, transferência de dados e liberação da conexão. Estes serviços são bastante similares aos serviços oferecidos pela camada de Rede, o que poderia colocar em dúvida a necessidade desta camada. No entanto, a sua existência se justifica pela necessidade de serviços de supervisão da camada de Rede do ponto de vista das entidades efetivamente envolvidas na comunicação. Uma supervisão fima-fim, uma vez que, até o nível Rede, as comunicações se fazem ponto-a-ponto. Outra contribuição importante da camada de Transporte é que ela permite a utilização de primitivas de serviço padrão pelas diversas aplicações construídas sobre a rede efetuando um perfeito «isolamento» em relação às camadas superiores e tornando transparentes as possíveis alterações tecnológicas que poderiam ocorrer nos níveis inferiores. Por esta razão, costuma-se fazer uma distinção entre os níveis de 1 a 4 e os de 5 a 7. Os primeiros quatro níveis seriam mais orientados ao transporte efetivo das informações e os três níveis superiores, mais orientados às aplicações que serão construídas sobre a rede. Poderíamos sintetizar o serviço fornecido pela camada de Transporte como de supervisor da qualidade de serviço oferecido pela camada de Rede. Isto significa que, se a camada de Rede é confiável, a camada de Transporte não terá muito a fazer. Por outro lado, se o serviço de Rede é deficiente, a camada de Transporte assume a função de suprir as diferenças entre a qualidade de serviço que a camada de Sessão necessita e aquilo que a camada de Rede pode oferecer. Para isto, o conceito de qualidade de serviço (QOS para Quality Of Service) é um aspecto importante na concepção da camada de Transporte, baseado sobre um certo conjunto de parâmetros, entre os quais: — 3.16 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI • • • • • • • • • PROF. VITÓRIO BRUNO MAZZOLA o tempo de estabelecimento de uma conexão; a probabilidade de falha de um estabelecimento; a taxa de débito da conexão; o tempo de trânsito; a taxa de erro residual; a probabilidade de incidente de transferência; o tempo de desconexão; a prioridade; etc... No momento do pedido de um estabelecimento de conexão, o usuário iniciante encaminha estes parâmetros nas primitivas de serviço. Se a camada de Transporte julga certos parâmetros longe da realidade, ela pode sinalizar isto ao usuário iniciante, sem mesmo ter tentado estabelecer a conexão, através de uma mensagem de erro que vai, também, indicar a natureza do erro sinalizado. Outra possibilidade é a camada de Transporte julgar que um certo valor para um parâmetro seja impossível de ser oferecido mas que um valor não muito longe daquele poderia ser oferecido. Neste caso, ela pode modificar os valores dos parâmetros enquadrados e encaminhar o pedido de conexão à máquina remota. Ainda, se a máquina distante verifica que ela não pode oferecer determinados valores especificados nos parâmetros do pedido, ela pode modificar também aqueles parâmetros. Se ela verifica não poder determinados parâmetros nos valores mínimos permitidos, neste caso ela vai rejeitar a conexão. 5.2. As primitivas de serviço de Transporte As primitivas de serviço de Transporte do modelo OSI são apresentadas no quadro a seguir, existindo para os serviços orientados conexão e sem conexão. SERVIÇO ORIENTADO CONEXÃO T_CONNECT.request (called, calling,exp_data,qos,user_data) T_CONNECT.indication (called, calling, exp_data,qos,user_data) T_CONNECT.response (qos, responder, exp_data, user_data) T_CONNECT.confirm (qos, responder, exp_data, user_data) T_DISCONNECT.request (user_data) T_DISCONNECT.indication (reason, user_data) T_DATA.request (user_data) T_DATA.indication (user_data) T_EXPEDITED_DATA.request (user_data) T_EXPEDITED_DATA.indication (user_data) SERVIÇO SEM CONEXÃO T_UNITDATA.request (called, calling,qos,user_data) T_UNITDATA.indication (called, calling,qos,user_data) Como podemos ver, as primitivas de serviço de Transporte se assemelham bastante àquelas do serviço de Rede. Existe, porém, uma diferença fundamental entre os dois níveis. No caso do nível Rede, considera-se que o serviço oferecido corresponde ao funcionamento real do sistema, representando inclusive suas falhas. Desta forma, podem ocorrer perdas de pacotes ou a emissão de comandos N_RESET de sua própria iniciativa. Já no caso do nível Transporte, os comandos N_RESET não são propagados aos usuários (as camadas superiores), uma vez que o objetivo principal desta camada é o tratamento de todos os problemas de comunicação evitando que os usuários do serviço — 3.17 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA tomem conhecimento das más condições de funcionamento da rede de comunicação (se tal é o caso!). Uma outra diferença entre os dois serviços são os usuários destes... no caso do serviço de Rede, os usuários são as entidades de Transporte, normalmente elementos associados ao sistema operacional considerado ou a uma carta específica instalada nos sistemas. Já os usuários do serviço de Transporte podem ser programas escritos pelos programadores de aplicações, uma vez que, como já foi dito, muitas aplicações podem comunicar-se diretamente através do uso direto das primitivas de serviço de Transporte (não fazendo uso dos serviços de Sessão ou de Apresentação). As possíveis relações entre as primitivas de serviço da camada de Transporte são apresentadas na figura 3.10. As duas extremidades das ilustrações caracterizam os usuários do serviço de Transporte, o fornecedor sendo representado pelo espaço separando os dois usuários. Em 3.10(a) é ilustrada um estabelecimento normal de conexão, onde o usuário da esquerda envia uma primitiva T_CONNECT.request à camada de Transporte. O usuário da direita vai receber então uma primitiva T_CONNECT.indication, cujos parâmetros vão conduzir os valores, particularmente, da qualidade de serviço a serem negociados. Este aceita o estabelecimento da conexão, retornando à camada de Transporte uma primitiva T_CONNECT.response, que será refletida, via serviço de Transporte, no usuário da esquerda na forma de uma primitiva T_CONNECT.confirm. A figura 3.10(b) apresenta uma tentativa de estabelecimento de conexão, rejeitada, porém, pelo usuário da direita, que utiliza as primitivas de serviço T_DISCONNECT.request e T_DISCONNECT.indication para sinalizar a rejeição. O caso é similar na figura 3.10(c), porém, desta vez, é o próprio fornecedor do serviço de Transporte quem rejeita a conexão, enviando uma primitiva T_DISCONNECT.indication ao usuário da esquerda. No que diz respeito à liberação da conexão, pode-se considerar três diferentes maneiras: a primeira, ilustrada em 3.10(d), considera o caso em que a liberação é iniciada por um dos usuários (no caso o da esquerda). A conexão é liberada no momento em que o usuário da direita recebe uma primitiva T_DISCONNECT.indication, reflexo da primitiva T_DISCONNECT.request emitida pelo usuário que iniciou a liberação. Em 3.10(e) é considerado o caso em que os dois usuário iniciam, simultaneamente, a liberação da conexão, neste caso, a conexão é liberada sem a emissão de outras primitivas de serviço; finalmente, em 3.10(f), a liberação é iniciada pelo próprio serviço de Transporte, que vai emitir primitivas T_DISCONNECT.indication aos dois usuários conectados. Já as figuras 3.10(g) e 3.10(h), representam, respectivamente, a etapa de transferência de dados, para dados normais e expressos. 5.3. Os protocolos de Transporte Como definido pelo modelo OSI, o serviço oferecido por uma camada N é o resultado da implementação de um protocolo N regendo a comunicação entre duas entidades N. Em princípio, os protocolos de Transporte apresentam preocupações similares à dos protocolos de Enlace, ou seja, o controle de erros, o controle de fluxo, o seqüenciamento dos dados. No entanto, algumas diferenças podem ser levantadas: • no caso da camada de Enlace, dois IMPs comunicam-se via um canal de comunicação; a nível de Transporte, a comunicação é feita via uma subrede; • no que diz respeito ao endereçamento, a nível de Enlace, um IMP não necessita referir-se explicitamente com qual IMP ele quer dialogar, uma vez que dois IMPs são conectados por uma via única; já, no nível Transporte, o endereço do destinatário deve ser explicitamente definido; — 3.18 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI T_CONNECT request T_CONNECT indication T_CONNECT response T_CONNECT confirm PROF. VITÓRIO BRUNO MAZZOLA T_CONNECT request T_CONNECT indication T_DISCONNECT request T_DISCONNECT indication (a) T_DISCONNECT indication (b) T_DISCONNECT request T_DISCONNECT indication T_DISCONNECT request T_CONNECT request (d) (c) T_DISCONNECT request T_DISCONNECT indication (e) T_DATA request (f) T_EXPEDITED_DATA request T_EXPEDITED_DATA indication T_DATA indication (g) T_DISCONNECT indication (h) Figura 3.10 - As diversas interações entre as primitivas de serviço de Transporte. • um outro problema é a questão do controle de fluxo; ao contrário do nível de Enlace, onde cada conexão pode alocar um determinado número de buffers para o armazenamento dos quadros, no nível Transporte isto fica mais difícil dado o número de conexões que pode estar sendo gerenciado num dado instante. Um aspecto a ser levado em conta no momento da concepção da camada de Transporte é o serviço oferecido pela camada de Rede, que pode ser classificado da seguinte maneira: • serviços do tipo A, que caracteriza os serviços perfeitos, onde a fração de pacotes perdidos, duplicados ou corrompidos é desprezível; é o tipo de serviço dificilmente encontrado em redes públicas, mas algumas redes locais são bastante próximas deste tipo de serviço; • serviços do tipo B, onde a perda de pacotes também é rara, mas a comunicação é freqüentemente interrompida (serviço N_RESET) devido a problemas de congestão, de hardware ou software; • serviços do tipo C, não confiáveis, sendo caracterizados normalmente pelas redes a longa distância do tipo datagrama. Para cada tipo de serviço, de A a C, o nível do serviço de Transporte caminha do mais simples ao mais complexo, ou seja, quanto pior o serviço oferecido pela camada de Rede, melhor (e mais complexo) deverá ser o serviço oferecido pela camada de Transporte. Para permitir a definição de vários níveis de oferecimento de serviço, o modelo OSI, a nível da camada de Transporte, define cinco classes de serviço: — 3.19 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA • classe 0, que são os serviços mais simples, capazes de estabelecer uma conexão, mas baseados na hipótese que o serviço de Rede não gera erros de transmissão; não existe tratamento de erros, controle de fluxo nem seqüenciamento; • classe 1, corresponde à classe 0, mas permite implementar a retomada de diálogo, considerando que pode ocorrer quebra do diálogo a nível de Rede (serviço N_RESET); ele permite a retomada da comunicação entre duas entidades de Transporte após a interrupção de uma conexão de Rede; • classe 2, que torna mais sofisticada a classe 0 pela introdução da possibilidade de manutenção de diversas conexões de Transporte sobre uma única conexão de Rede (multiplexação); • classe 3, que agrupa os mecanismos de retomada de diálogo da classe 1 com os de multiplexação da classe 2; • classe 4, definida para operar sobre os serviços de Rede do tipo C cuja falta de confiabilidade é conhecida, devendo tratar então os erros, perdas, duplicações, retomada de diálogo e todos os possíveis problemas não resolvidos pela camada de Rede. No momento do estabelecimento de uma conexão, são as entidades pares que devem tomar a decisão sobre qual classe de serviço adotar, uma classe sendo proposta pelo iniciante e negociada para permitir o estabelecimento da conexão. As funções do protocolo de Transporte vão depender do ambiente no qual ele vai operar assim como da natureza dos serviços que devem ser supridos. Um mínimo de funções deve, todavia, ser oferecido por um protocolo de Transporte, entre as quais: • • • • o estabelecimento de conexão; transferência de TPDUs; segmentação de mensagens; etc... O termo TPDU indicado acima serve para definir a unidade de dados trocada entre duas unidades de Transporte que é a unidade de dados de protocolo de transporte (em inglês, Transport Protocol Data Unit). Por outro lado, a unidade de dados emitida por um usuário do serviço Transporte será referenciado como sendo uma mensagem. Uma mensagem a ser transmitida pode ter um tamanho qualquer, a segmentação das mensagens devendo ser assumida por esta camada. Isto significa que, se uma unidade de dados apresenta um tamanho superior ao de um pacote, ela deve ser segmentada em tantos pacotes quantos sejam necessários para efetuar a sua completa emissão. Ainda, se uma entidade de Transporte gerencia várias conexões num dado instante, ela deve numerar as conexões e inserir o número correspondente nas unidades de dados, a fim de permitir à entidade receptora de identificar corretamente a conexão à qual esta unidade de dados deve ser associada. Independente da classe de protocolo considerada, deve sempre existir um mecanismo de liberação de conexão, esta liberação sendo, porém, diferente dependendo da classe de protocolo considerada. 6. A CAMADA DE SESSÃO Como foi mencionado anteriormente, o modelo hierárquico de comunicação proposto no modelo OSI pode fazer distinção em duas classes de camadas: as camadas inferiores, concretizadas pelas camadas de 1 a 4, já vistas, cujos serviços são orientados ao transporte de informação propriamente dito, tratando essencialmente de problemas de comunicação como, por exemplo, codificação e transmissão de bits, controle de fluxo e de erros, seqüenciamento, roteamento, controle de tráfego e gerenciamento de conexões; as camadas superiores, concretizadas pelas camadas de 5 a 7, cujos serviços se orientam — 3.20 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA mais às aplicações escritas pelos usuários no sentido de facilitar ou simplificar as suas tarefas, fornecendo serviços padronizados os mais diversos. A camada de Sessão é a primeira camada (no sentido bottom-up) enquadrada na segunda classe. Ao contrário de outras camadas já estudadas e outras que serão vistas mais adiante, a camada de Sessão foi introduzida no momento da definição do modelo OSI. As demais camadas presentes no OSI foram, de certo modo, inspiradas de modelos préexistentes na concepção de redes já existentes na época como, por exemplo, ARPANET. Esta é, na verdade, uma das camadas mais simples do modelo OSI, oferecendo uma quantidade relativamente limitada, longe dos serviços oferecidos por camadas como a de Transporte, por exemplo. Nesta parte do documento, veremos então os serviços oferecidos pela Sessão e como estes são implementados através dos protocolos. 6.1. Serviços oferecidos à camada de apresentação Segundo o modelo OSI, os usuários dos serviços de Sessão são as entidades de Apresentação, a posição desta camada estando ilustrada na figura 3.11. A principal função desta camada é oferecer aos seus usuários meios para o estabelecimento das conexões, denominadas sessões, de modo que estes possam trocar dados. Uma sessão pode ser utilizada para permitir a conexão à distância a um computador, por exemplo, através de um terminal, para uma transferência de arquivo, para o carregamento de programas à distância, etc... Apesar de que, ao nível de Sessão, são oferecidas primitivas de serviço para a comunicação sem conexão, neste modo, não é possível explorar os serviços orientados aos usuários, disponíveis nesta camada. No que diz respeito à conexão de Sessão (ou à sessão, como definido acima), podese estabelecer as diferentes possíveis relações entre uma conexão de Sessão e uma conexão de Transporte, como mostra a figura 3.12. Em 3.12(a), é mostrada uma correspondência de 1 a 1 entre uma conexão de Sessão e uma de Transporte. Por outro lado, como mostrado em 3.12(b), pode-se utilizar uma mesma conexão de Transporte para suportar diferentes sessões consecutivas (ver exemplo da agência de reservas de passagens em Tanenbaum 90). Ainda, pode-se ter o quadro inverso, onde, pela quebra de uma conexão de Transporte, a abertura de uma nova é providenciada para garantir a continuidade de uma mesma sessão. Este último cenário, ilustrado em 3.12(c), se caracteriza, por exemplo, quando as entidades de Transporte assumem a tarefa de retomada de diálogo após uma pane. 6.2. Sessão x Transporte: similaridades e diferenças Esta é a principal função da camada de Sessão e, da mesma forma como foi visto para camadas inferiores, o diálogo via esta camada é caracterizado pelas três etapas a seguir: estabelecimento de sessão, transferência de dados e liberação da sessão. 7 serviços oferecidos APRESENTAÇÃO à camada de apresenSSAP tação serviços oferecidos à camada de sessão ENTIDADE DE SESSÃO TSAP TRANSPORTE APRESENTAÇÃO 6 SSAP SPDUs ENTIDADE DE SESSÃO 5 4 protocolo de sessão TSAP TRANSPORTE 1a3 Figura 3.11 - Posição da camada de Sessão no modelo OSI. — 3.21 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI Sessão Transporte (a) PROF. VITÓRIO BRUNO MAZZOLA Sessão Sessão Transporte Transporte (b) (c) Figura 3.12 - Diferentes relações entre conexão de Sessão e de Transporte: (a) correspondência 1 a 1; (b) uma conexão de Transporte para várias sessões; (c) várias conexões de Transporte para uma única sessão. As primitivas de estabelecimento e liberação de sessão oferecidas à camada de Apresentação são similares àquelas oferecidas à própria camada de Sessão pelo Transporte. Esta similaridade ocorre a tal ponto que, em muitos casos, a recepção de uma primitiva de serviço da camada de Apresentação reflete-se imediatamente no envio de uma primitiva de serviço equivalente da camada de Transporte. Um exemplo disto é a primitiva de estabelecimento de Sessão, S_CONNECT.request, que é refletida no envio de uma primitiva T_CONNECT.request. Na fase de estabelecimento de uma conexão, da mesma forma que na camada de Transporte, ocorre a negociação, entre as duas entidades envolvidas (de Apresentação) sobre que parâmetros vão definir a comunicação. Dentre estes parâmetros, encontram-se parâmetros já conhecidos de outros níveis do modelo OSI (por exemplo, a necessidade de transferência de dados expressos) e também parâmetros específicos à camada de Sessão (por exemplo, na abertura de uma sessão para troca de informações via correio eletrônico, um parâmetro pode ser qual usuário vai tomar a iniciativa do diálogo). Apesar das semelhanças já levantadas, pode-se destacar também algumas diferenças entre uma sessão e uma conexão de Transporte, essas diferenças estando particularmente associadas ao procedimento de liberação das conexões. No caso da camada de Transporte, a primitiva T_DISCONNECT.request que causa a terminação abrupta da conexão, pondendo ocorrer inclusive perda dos dados ainda em trânsito. Já, no caso das sessões, a primitiva responsável da liberação é S_RELEASE.request que permite terminar, de maneira ordenada a conexão, sem ocorrência de perda dos dados (liberação negociada). É possível, no entanto, em caso de necessidade, promover uma liberação abrupta da sessão, isto, graças à utilização da primitiva S_ABORT.request. A diferença entre as duas formas de liberação de uma conexão é mostrada na figura 3.13. Em 3.13(a) é apresentada a liberação abrupta de uma conexão de Transporte; em 3.13(b), é apresentada a liberação negociada de uma sessão. Como se pode ver em 3.13(b), ao contrário dos serviços de liberação de conexão apresentados até o momento, o serviço de liberação negociada S_RELEASE é um serviço confirmado, caracterizado pelas primitivas request, indication, response e confirm. Como mostra a figura, mesmo após ter emitido o pedido de liberação, a entidade usuária pode continuar a receber primitivas de serviço de indicação de transferência de dados (no caso, S_DATA.indication), sendo que a desconexão só será efetivada após a recepção da primitiva S_RELEASE.confirm. Um outro ponto de bastante similaridade entre as camadas de Sessão e Transporte é o endereçamento. Da mesma forma que no Transporte, a nível de Sessão é necessário indicar um SSAP (Ponto de Acesso ao Serviço de Sessão ou Session Service Access Point) na fase de estabelecimento de sessão. Normalmente, um endereço de SSAP nada mais é que um endereço de TSAP enriquecido com outras informações. Ainda, uma diferença entre Sessão e Transporte está nos tipos de dados transmitidos. Como foi visto no caso da camada de Transporte, existem dois tipos de fluxos de dados — os dados normais e os dados expressos (ou urgentes). — 3.22 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA S_DATA request T_DATA request perda dado T_DISCONNECT indication T_DISCONNECT request S_RELEASE request S_RELEASE indication S_DATA indication S_RELEASE response (a) S_RELEASE confirm (b) Figura 3.13 - (a) liberação abrupta; (b) liberação negociada. Já na camada de Sessão, além destes dois tipos de dados, podem ocorrer outros dois — os dados tipados (typed data) e os dados de capacidade (capacity data). Estes tipos de dados serão explicados mais adiante, neste documento. 6.3. A gestão do diálogo Segundo o modelo OSI, todas as conexões estabelecidas são, a princípio, do tipo full duplex (ou seja, bidirecionais simultâneas, conforma mostrado na figura 3.14(a)). Por outro lado, existem muitas aplicações nas quais a possibilidade de operação em half duplex pode ser mais interessante. Este serviço é implementado a nível da camada de Sessão graças à definição de uma ficha de dados (data token), como ilustrado na figura 3.14(b). A comunicação em half duplex é uma opção negociada no momento do estabelecimento de uma sessão. Se esta opção é adotada, deverá ser definido também qual dos usuários envolvidos no diálogo poderá tomar a iniciativa (possuidor da ficha). Quando este usuário terminar a sua transmissão, ele pode ceder a ficha ao usuário par para que ele possa efetuar a sua transmissão. A passagem de ficha de um usuário a outro é implementada através da primitiva S_TOKEN_GIVE. Ainda, se um dos usuários querendo efetuar uma transmissão não possui a ficha naquele instante, ele pode requisitá-la a seu par através da emissão de uma primitiva S_TOKEN_PLEASE.request. O usuário receptor da primitiva S_TOKEN_PLEASE.indication pode ou não querer ceder a ficha. Em caso negativo, o usuário que a requisitou não fará outra coisa senão esperar a «boa vontade» do seu interlocutor (ou ainda, enviar dados urgentes que não necessitam a possessão da ficha). A ficha só passa a ter algum sentido no caso de comunicação half duplex. Se full duplex é a opção adotada, ela não é levada em conta. 6.4. A sincronização A camada de Sessão deve cobrir igualmente os problemas relacionados à sincronização. Esta tarefa é útil para a manutenção da coerência do estado entre dois usuários interlocutores em caso de erro ou outro problema. Apesar de que a camada de Transporte tenha, por princípio, a função de cobrir todos os problemas relacionados à retomada após ou erros ou panes, esta camada cobre unicamente os problemas relacionados à transmissão de dados propriamente dita, não levando em conta os problemas podendo ocorrer nas camadas superiores. Estes erros podem ocasionar perdas de dados que a camada de Transporte é incapaz de detectar (uma vez que esta não é a sua função!). — 3.23 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA S_DATA request S_DATA indication S_DATA request S_DATA indication S_DATA request S_DATA indication S_DATA request S_DATA indication S_DATA request S_DATA request S_TOKEN_GIVE request S_DATA indication S_DATA indication S_TOKEN_GIVE indication S_DATA indication S_DATA request (a) (b) Figura 3.14 - (a) comunicação full duplex; (b) comunicação half duplex com ficha. A camada de Sessão vem, então ao socorro do sistema efetuando a tarefa de sincronização, através da inserção a nível dos dados de pontos de sincronização, que permitem manter a sessão num estado correspondendo a um antigo ponto de sincronização. A figura 3.15(a) ilustra o procedimento de inserção de pontos de sincronização. Um exemplo disto pode ser ilustrado na transmissão de um documento via rede, no qual este pode ser decomposto em páginas às quais se pode associar os pontos de sincronização. Neste caso, a resincronização vai consistir na retransmissão do documento a partir de uma dada página que estava sendo transmitida quando o problema ocorreu. A sincronização é implementada da seguinte forma: o usuário emissor insere, nas suas mensagens, pontos de sincronização, cada ponto contendo um número de série. Quando um usuário envia uma primitiva (request) para inserir um ponto de sincronização, o outro usuário vai receber uma primitiva de indicação correspondente, isto ocorrendo de igual maneira no caso de uma resincronização. É importante notar aqui que a camada de Sessão oferece unicamente as ferramentas para a solução dos problemas de erros e incoerência por sincronização/resincronização. Na realidade, quem ativa estas ferramentas quando da ocorrência de um problema são as entidades das camadas superiores. O mecanismo de sincronização define dois tipos distintos de pontos de sincronização — os pontos de sincronização máximos e mínimos. SESSÃO 1 2 3 4 5 6 7 8 9 ponto de sincronização (a) SESSÃO 1 DIÁLOGO 2 3 4 5 6 7 8 9 ponto de sincronização mínimo ponto de sincronização máximo (b) Figura 3.15 - (a) Pontos de sincronização; (b) Pontos de sincronização máximos e mínimos. — 3.24 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA Os pontos de sincronização máximos são utilizados para delimitar trechos da informação denominados diálogos, que representam uma decomposição lógica da informação (capítulos de um livro, por exemplo). Já os pontos de sincronização mínimos são utlizados para separar porções menores da informação. No caso de um livro, esta porção poderia ser as páginas dos capítulos. A figura 3.15(b) ilustra os pontos de sincronização máximos e mínimos. Uma diferença fundamental entre os pontos máximos e mínimos reside na capacidade de resincronização. No caso de um ponto de sincronização máximo, após uma pane, é possível resincronizar, no máximo, de um ponto de sincronização máximo para trás. A partir deste ponto, é impossível recuperar informação. Isto ocorre porque um ponto máximo é visto como uma fronteira de proteção, cuja informação anterior é garantida ter sido recebida, o que significa que ela pode ser apagada da extremidade emissora. Isto já não ocorre no caso dos pontos de sincronização mínimos. Alem disso, pelo fato de que os pontos de sincronização máximos são tidos como fronteiras de proteção da informação, estes devem ser explicitamente reconhecidos pelo receptor, o que não é necessário no caso dos pontos de sincronização mínimos. 6.5. Gerenciamento de atividades Outra função importante da camada de Sessão é o controle de atividades. Esta tarefa é baseada no conceito de decomposição do fluxo de dados em atividades, independentes umas das outras. O conceito de atividade vai depender da aplicação considerada, o usuário sendo o responsável desta definição. Um exemplo típico de utilização do conceito é a transferência de arquivos, onde cada arquivo deve ser separado, de alguma forma dos demais. A forma de fazê-lo é através da definição, de cada arquivo, como sendo uma atividade, como mostra a figura 3.16. Para fazê-lo, antes da emissão de cada arquivo, o usuário deve enviar uma primitiva S_ACTIVITY_START.request para marcar o início de uma atividade; isto vai gerar, no lado do receptor, uma primitiva S_ACTIVITY_START.indication sinalizando o início do envio de uma nova atividade (neste caso particular, o arquivo). O fim da transferência de um arquivo é marcado, então, pelo envio, por parte do emissor, de uma primitiva S_ACTIVITY_END.request. O interesse da definição de atividade é o fato que certas aplicações podem ter a garantia de atomicidade, evitando erros devido a panes ocorridas entre ações de uma mesma atividade. Um exemplo de aplicação é o de uma operação bancária realizada através de um terminal informatizado. A operação normal se desenrola da maneira seguinte: • o proprietário da conta emite um comando informando o seu número de conta (e a senha correspondente) — o computador do banco verifica o número e a senha, e bloqueia o código correspondente a fim de evitar o acesso concorrente; • o proprietário da conta envia um novo comando informando o número da conta para onde o dinheiro deve ser transferido — o computador verifica o número da conta e bloqueia o código correspondente pela mesma razão já apresentada; • o proprietário, finalmente, emite um terceiro comando informando o montante a ser transferido — o computador efetiva, então, a transferência para a conta destinatária. Um caso típico deste cenário é aquele em que uma pane (falta de energia, por exemplo) ocorre no terminal sendo utilizado pelo cliente proprietário da conta imediatamente após o primeiro comando. O computador vai bloquear o código correspondente à conta, mas os demais comandos não serão efetuados. A aplicação do conceito de atividade via camada de Sessão permite solucionar este problema, garantindo a atomicidade da operação. A operação completa pode ser vista como uma atividade. — 3.25 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA SESSÃO ATIVIDADE ATIVIDADE arquivo 2 arquivo 1 início atividade fim atividade Figura 3.16 - Conceito de atividade aplicado a uma transferência de arquivo. Assim, após a recepção de uma primitiva S_ACTIVITY_START.indication, o computador do banco ficaria armazenando as mensagens (de comando) até a recepção de uma primitiva S_ACTIVITY_END.indication. Só neste momento, os comandos seriam efetivados pelo computador. Uma outra propriedade interessante das atividades é a capacidade de ser interrompida e retomada sem a perda das informações. Isto pode ser feito através da primitiva S_ACTIVITY_INTERRUPT que permite iniciar uma nova atividade e retomar aquela ao final desta segunda atividade a partir do ponto onde ela tinha sido interrompida. Um exemplo típico é aquele da transferência de um arquivo de tamanho relativamente grande, no qual, durante a transferência, seja necessário, com relativa urgência, efetuar a consulta a uma base de dados (anuário telefônico, agenda, por exemplo). Este exemplo é ilustrado na figura 3.17. 6.6. As primitivas de serviço de Sessão O quadro a seguir apresenta a lista das primitivas de serviço oferecidas pela camada de Sessão, indicando as classes de primitivas compondo cada serviço (R - request, I indication, Rs - response e C - confirm). São 58 primitivas organizadas em 7 grupos: estabelecimento de conexão, liberação de conexão, transferência de dados, gerenciamento de fichas, sincronização, gerenciamento de atividades e relatório de anomalias. Os dois primeiros grupos são relacionados, respectivamente, à inicialização e término das sessões. As primitivas S_CONNECT, conduzem, em seus parâmetros, informações tais como: SSAPs dos interlocutores, qualidade do serviço, números iniciais dos pontos de sincronização, etc... Já os serviços de liberação de sessão podem ser de três tipos: o primeiro, caracterizado pela primitivas S_RELEASE, especificando um serviço confirmado de término negociado de sessão (sem perda de dados); os dois outros, para e liberação abrupta de sessão (com eventual perda de dados), caracterizados pelas primitivas S_U_ABORT e S_P_ABORT, indicando, respectivamente, terminação de iniciativa do usuário (U - user) e do fornecedor do serviço (P - provider). 2 3 1 transf. arquivo 1ª parte 4 5 6 transf. arquivo 2ª parte consulta anuário 1 início atividade 1 4 fim atividade 2 2 interrupção atividade 1 5 retomada atividade 1 3 início atividade 2 6 fim atividade 1 Figura 3.17 - Exemplo da interrupção de um atividade para a realização de outra. — 3.26 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA PRIMITIVA R I Rs C FUNÇÃO ORIENTADO CONEXÃO • • • • S_CONNECT estabelecimento de conexão • • • • S_RELEASE liberação negociada de conexão • • S_U_ABORT liberação abrupta (usuário) • S_P_ABORT liberação abrupta (fornecedor) • • S_DATA transferência de dados normais • • S_EXPEDITED_DATA transferência de dados urgentes • • S_TYPED_DATA transferência de dados tipados • • • • S_CAPABILITY_DATA transf. de dados de capacidade • • S_TOKEN_GIVE passagem de ficha de dados • • S_TOKEN_PLEASE pedido de ficha • • S_CONTROL_GIVE passagem de todas as fichas • • • • S_SYNC_MAJOR inserção de pto. de sincro. máximo • • • • S_SYNC_MINOR inserção de pto. de sincro. mínimo • • • • S_RESYNCHRONIZE pedido de resincronização • • S_ACTIVITY_START início de uma atividade • • • • S_ACTIVITY_END fim de uma atividade • • • • S_ACTIVITY_DISCARD abandono de uma atividade • • • • S_ACTIVITY_INTERRUPT interrupção de uma atividade • • S_ACTIVITY_RESUME retomada de uma atividade • • S_U_EXCEPTION_REPORT relatório de anomalia (usuário) • S_P_EXCEPTION_REPORT relatório de anomalia (fornecedor) SEM CONEXÃO • • S_UNITDATA transferência de dados (s/ conexão) O terceiro grupo é caracterizado pelas quatro classes de primitivas para a transferência de dados (S_DATA, S_EXPEDITED_DATA, S_TYPED_DATA e S_CAPABILITY_DATA) cada uma para um dos quatro tipos de dados (normais, urgentes, tipados e de capacidade). Os dados normais e urgentes tendo sido discutidos em outras oportunidades, cabe aqui uma apresentação dos dois outros tipos de dados. Os dados tipados são similares aos dados normais do ponto de vista da transferência, a diferença fundamental sendo a liberdade de transmissão sem a necessidade de posse da ficha de dados. Este tipo de dados são utilizados, principalmente, para a troca de mensagens de controle entre os dois usuários. Os dados de capacidade são utilizados para a transferência de mensagens de controle da própria cada de Sessão. O serviço S_CAPABILITY_DATA, como se pode ver na tabela, é um serviço confirmado, fornecendo um reconhecimento dos dados de capacidade. Ainda, ao contrário dos dados tipados, estes dados só podem ser transmitidos se a entidade possui a ficha de transferência de dados. O quarto grupo de serviços é relacionado ao gerenciamento das fichas, que são em número de 4: as fichas de dados (para a transferência em half-duplex), as fichas de liberação (para o início de uma liberação negociada), as fichas de sincronização mínima (para a inserção de pontos de sincronização mínimos) e as fichas de sincronização máxima e atividade (para o gerenciamento das atividades e da sincronização). S_TOKEN_GIVE permite efetuar a transferência de uma ou mais fichas à entidade remota, as fichas a transferir sendo indicadas nos parâmetros das primitivas. O quinto grupo contém os serviços relativos à sincronização, seja para inserção de pontos de sincronização (através dos serviços S_SYNC_MAJOR e S_SYNC_MINOR, dedicados, respectivamente, à introdução de pontos de sincronização máximos e mínimos), seja para a resincronização a partir de um ponto dado (S_RESYNCHRONIZE). — 3.27 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA O sexto grupo, através dos serviços, S_ACTIVITY_START, S_ACTIVITY_END, S_ACTIVITY_DISCARD, S_ACTIVITY_INTERRUPT e S_ACTIVITY_RESUME é dedicado ao gerenciamento das atividades (início, fim, abandono, interrupção e retomada). O sétimo grupo é dedicado à geração de relatórios de anomalia, tanto da parte de um dos usuários (S_U_EXCEPTION_REPORT) quanto da camada de Sessão (S_P_EXCEPTION_REPORT). 7. A CAMADA DE APRESENTAÇÃO Quando foi concebida, a camada de Apresentação era responsável unicamente das funções de conversão entre dados representados em ASCII e EBCDIC. Em seguida, novos serviços foram introduzidos de forma que, atualmente, pode-se descrever a tarefa desta camada por tudo o que possa estar relacionado à representação dos dados a serem transmitidos, particularmente as funções de: conversão de dados, criptografia e compressão. As seções que seguem apresentarão os principais problemas e as soluções encontradas na realização destas funções. 7.1. As primitivas de serviço da camada de apresentação O quadro a seguir apresenta a lista de primitivas de serviço de Apresentação. Como se pode notar, quase todas as primitivas são idênticas àquelas apresentadas na parte anterior, relativa à camada de Sessão. PRIMITIVA R I Rs C FUNÇÃO ORIENTADO CONEXÃO P_CONNECT • • • • estabelecimento de conexão P_RELEASE • • • • liberação negociada de conexão P_U_ABORT • • liberação abrupta (usuário) P_P_ABORT • liberação abrupta (fornecedor) P_DATA • • transferência de dados normais P_EXPEDITED_DATA • • transferência de dados urgentes P_TYPED_DATA • • transferência de dados tipados P_CAPABILITY_DATA • • • • transf. de dados de capacidade P_TOKEN_GIVE • • passagem de ficha de dados P_TOKEN_PLEASE • • pedido de ficha P_CONTROL_GIVE • • passagem de todas as fichas P_SYNC_MAJOR • • • • inserção de pto. de sincro. máximo P_SYNC_MINOR • • • • inserção de pto. de sincro. mínimo P_RESYNCHRONIZE • • • • pedido de resincronização P_ACTIVITY_START • • início de uma atividade P_ACTIVITY_END • • • • fim de uma atividade P_ACTIVITY_DISCARD • • • • abandono de uma atividade P_ACTIVITY_INTERRUPT • • • • interrupção de uma atividade P_ACTIVITY_RESUME • • retomada de uma atividade P_U_EXCEPTION_REPORT • • relatório de anomalia (usuário) P_P_EXCEPTION_REPORT • relatório de anomalia (fornecedor) P_ALTER_CONTEXT • • • • alteração de contexto SEM CONEXÃO P_UNITDATA • • transferência de dados (s/ conexão) — 3.28 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA No caso dos serviços orientados à conexão, por exemplo, os usuários desta camada, ou seja, as entidades da camada de Aplicação podem abrir uma sessão utilizando a primitiva P_CONNECT.request, que se reflete, na camada de Apresentação, pelo envio de uma primitiva S_CONNECT.request, já descrita quando da apresentação da camada de Sessão. De fato, a maior parte das primitivas de serviço de Apresentação atravessam desta forma a camada. A novidade mostrada na camada são as primitivas P_ALTER_CONTEXT, que compõem o serviço de alteração de contexto de Apresentação. Um contexto é a unidade na qual são reagrupados as estruturas de dados utilizadas pelas entidades de Aplicação. Ao longo de uma sessão, é possível utilizar um contexto durante um determinado tempo e utilizar um outro num outro momento. O serviço P_ALTER_CONTEXT permite fazer a modificação. A camada de Apresentação viabiliza a negociação sobre que forma de representação será adotada para os dados manipulados pela aplicação. A negociação é baseada no fornecimento, por parte de um usuário, de todas as estruturas de dados que ele deseja utilizar, sendo que o usuário par pode ou não aceitar a proposta. Durante o diálogo, ainda é possível que novas propostas de estruturas de dados sejam negociadas pelos dois usuários. 7.2. A notação ASN.1 ASN.1 (Abstract Syntax Notation One) é uma sintaxe abstrata que foi definida na ISO para solucionar a problemática da representação dos dados. Isto foi motivado pela necessidade da existência de uma forma de representação de dados que fosse suficientemente flexível e genérica para que pudesse ser utilizada pelas mais diversas aplicações existentes. ASN.1 é definida pela norma ISO 8824, que apresenta as estruturas de dados previstas na sintaxe; outra norma, ISO 8825, define a sintaxe de transferência, ou seja, a forma como as estruturas de dados ASN.1 podem ser mapeadas em binário. As estruturas de dados ASN.1 foram definidas para prever as complexas estruturas de dados que poderiam ser manipuladas a nível de uma dada aplicação. Um registro ou uma estrutura de dados utilizada numa aplicação bancária pode conter os mais diversos campos, como por exemplo o nome, o endereço, os números de conta, as taxas de câmbio do dia, a data e hora, etc... Em outras aplicações, pode existir a necessidade de troca de estruturas de dados as mais diversas possível, sendo que cada aplicação pode ter as suas próprias estruturas de dados. Ainda, algumas estruturas de dados podem ser típicas de certas aplicações, outras específicas a uma determinada empresa ou instituição. Nos estudos apresentados das camadas inferiores, particularmente na apresentação dos protocolos existentes, muitas estruturas de dados foram apresentadas na forma de figuras, com seus campos sendo apresentados por retângulos. Estas estruturas podem ser formalizadas por registros, filas, vetores, etc... A camada de Aplicação, cujas entidades são os usuários da camada de Apresentação, é caracterizada por muitas estruturas de dados, transmitidas na forma de APDUs (Application Protocol Data Units), compostas de diferentes campos, cada campo tendo um determinado tipo (booleano, inteiro, etc...). A notação ASN.1 permite formalizar os diversos tipos de dados podendo compor os campos de uma APDU, reagrupando-os inclusive num módulo de biblioteca para cada aplicação típica. Desta forma, é possível a uma aplicação enviar uma estrutura de dados à camada de Apresentação, dando a ela o nome da estrutura ASN.1 correspondente. A camada de Apresentação poderá, então, conhecer o tipo e o tamanho de cada campo compondo a estrutura de dados e, desta forma, codificá-los para a transmissão. A entidade de Apresentação receptora, por sua vez, conhecendo a estrutura ASN.1 dos dados recebidos, pode fazer todas as conversões que sejam necessárias para adaptar à máquina receptora. — 3.29 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA O interesse da existência de ASN.1 é que esta notação serve como uma linguagem comum para todas as máquinas. Isto evita que todas as máquinas tivessem de conhecer todas as possíveis formas de representação de cada uma das máquinas com as quais elas teriam de se comunicar. Com ASN.1, basta apenas que cada máquina conheça como codificar seus dados nesta notação. A norma ISO 8824 define a notação de sintaxe abstrata ASN.1, onde os principais pontos serão apresentados a seguir. Um primeiro exemplo de como um dado pode ser descrito em ASN.1, vamos fazer um paralelo entre uma estrutura de dados Pascal e uma estrutura de dados ASN.1. Vamos considerar que pretendemos representar por uma estrutura em Pascal as principais características dos dinossauros. Isto poderia ser feito através de uma estrutura do tipo record, onde cada campo teria seu tipo específico e representando uma característica dos dinossauros. Um exemplo disto é mostrado a seguir: type dinossauro = record nome : array [1..12] of char; tamanho : integer; carnivoro : boolean; ossos : integer; descoberta : integer; end; No caso de ASN.1, a mesma estrutura de dados poderia ser representada da seguinte forma: dinossauro ::= SEQUENCE { nome OCTET STRING, --12 chars tamanho INTEGER, carnivoro BOOLEAN, ossos INTEGER, descoberta INTEGER } Como se pode notar, não existem muitas diferenças entre a forma de especificar um record Pascal e uma seqüência ASN.1. De fato, tipos complexos ASN.1 são gerados a partir de tipos de base, denominados tipos primitivos. Os tipos primitivos ASN.1 são apresentados na tabela a seguir. TIPO INTEGER BOOLEAN BIT STRING OCTET STRING ANY NULL OBJECT IDENTIFIER SIGNIFICADO inteiro de valor arbitrário verdadeiro / falso lista de bits lista de bytes conjunto de todos os tipos nenhum tipo nome de um objeto Como foi dito, estes tipos podem ser combinados para a definição de estruturas de dados mais complexas, isto pela utilização de construtores de ASN.1, onde os mais utilizados são: CONSTRUTOR SEQUENCE SEQUENCE OF SET SET OF CHOICE SIGNIFICADO seqüência de elementos de diversos tipos seqüência de elementos de um mesmo tipo conjunto (não ordenado) de elementos de diversos tipos conjunto (não ordenado) de elementos de um mesmo tipo escolha de um tipo entre uma lista de tipos — 3.30 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA O construtor SEQUENCE permite construir uma estrutura de dados cujos campos sejam de tipos diferentes. Ele é bastante similar a um registro Pascal, como já foi visto no exemplo anteriormente apresentado. SEQUENCE OF permite construir vetores de elementos de um mesmo tipo. O construtor SET é similar ao SEQUENCE, com uma diferença apenas — os elementos de um SET não ordenados como no caso do SEQUENCE. Da mesma forma, SET OF é similar a SEQUENCE OF, a mesma diferença sendo válida para este caso. O construtor CHOICE permite especificar um dado cujo formato pode assumir diversas opções. Um exemplo da utilização deste construtor é mostrado abaixo. PDU_Comando ::= CHOICE { Comando_local, Comando_remoto } Além dos tipos primitivos e construtores, existem ainda os tipos pré-definidos de ASN.1, como por exemplo: • NumericString, que define uma lista de numerais de 0 a 9 mais os brancos; • PrintableString, que define uma lista cujos elementos podem ser as letras maiúsculas, as minúsculas, os números e os caracteres ( ) ‘ + - . , / : = ? • GeneralizedTime, para definir datas e horas. Existe ainda, em ASN.1, a possibilidade de expressar estruturas de dados onde alguns dos campos possam ou não estar presentes em tempo de execução — são os campos opcionais. Isto é representado através da cláusula OPTIONAL. Ainda, pode-se atribuir a um dado um valor inicial (por default) através da cláusula DEFAULT. Finalmente, ASN.1 define ainda o conceito de etiqueta (ou TAG), que permite identificar um valor associando-o a um dado campo. Para mais detalhes sobre ASN.1, aconselha-se uma consulta às normas ISO 8824/8825 e outros documentos disponíveis sobre esta notação. 7.3. A compressão de dados De um ponto de vista genérico, os dados transmitidos através de um canal podem ser vistos como uma seqüência de símbolos S1, S2, ..., SN, pertencentes a um dado alfabeto (bits, dígitos decimais, letras, palavras de uma língua, etc...). As técnicas de compressão de dados existentes são baseadas sobre três diferentes aspectos da representação de dados: a limitação do alfabeto, as freqüências relativas dos símbolos, o contexto de aparecimento dos símbolos. Estes três pontos de vista serão analisados a seguir. 7.3.1. Codificação de um alfabeto finito de símbolos Muitas aplicações são baseadas na representação dos dados através de alfabetos finitos de símbolos. Um exemplo disto são as aplicações relacionadas à utilização de terminais, onde os dados são representados pelo alfabeto ASCII. Consideremos o exemplo do gerenciamento de uma biblioteca, onde um livro poderia ser identificado pelo seu título, o título de um livro podendo ser expresso em 20 caracteres (ou 140 bits). Isto significa que, com uma palavra de 140 bits, poderíamos identificar até 2140 livros. No entanto, não existem biblioteca no mundo que possua esta quantidade de livros. Assim, se, ao invés de identificarmos os livros pelo seu título escolhermos um sistema de — 3.31 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA numeração, poderemos diminuir em muito a quantidade de bits necessária para a identificação de um livro de qualquer biblioteca. 7.3.2. Codificação dependente da freqüência Em determinadas aplicações, muitos símbolos de um alfabeto são muito mais utilizados que outros. Nos textos em Inglês, por exemplo, a letra “E” aparece 100 vezes mais freqüentemente que a letra “Q”, a palavra “THE” aparecendo 10 vezes mais que “BE”. Baseados nestas informações, os dados podem ser codificados de tal forma que símbolos ou seqüências de símbolos sabidamente mais freqüentes que outros sejam representados de uma forma especial, simplificada no que diz respeito à quantidade de informação necessária. As técnicas consistem normalmente em codificar os símbolos mais freqüentes por códigos curtos e os menos freqüentes por códigos mais longos. Um exemplo desta técnica de compressão foi apresentada em 6.1.2. 7.3.3. Codificação baseada no contexto A técnica apresentada acima é baseada na ocorrência de símbolos ou determinadas seqüências de maneira isolada, como se a probabilidade de ocorrência dos símbolos ou seqüências fosse independente daquela que os precede. Na verdade, estas probabilidades podem ser altamente dependentes da informação precedente. Por exemplo, no caso de um texto em Português, a probabilidade de ocorrer a letra “T” após a letra “Q” é muitas vezes inferior que a probabilidade de ocorrer uma letra “U” após “Q”. A probabilidade de ocorrência de uma letra “P” após uma letra “N” numa palavra é nula, a menos que um erro de ortografia tenha sido cometido. Uma técnica mais sofisticada que aquela é de levar em conta este aspecto calculando a probabilidade relativa de ocorrência de cada símbolo após os demais símbolos de um alfabeto. No caso das letras, como o exemplo citado acima, isto vai significar na construção de 26 tabelas, cada uma contendo as probabilidades das letras seguindo uma letra do alfabeto. Se uma forte correlação existir entre os símbolos, a taxa de compressão vai ser muito melhor que aquela obtida com a utilização da técnica apresentada anteriormente. Uma desvantagem desta técnica é a grande quantidade de tabelas requerida para a definição das probabilidades relativas. No caso de um alfabeto composto de k símbolos, serão necessárias k 2 entradas em tabela. Um método possível de compressão é a organização dos símbolos em tipos, por exemplo, no caso de letras e números, pode-se classificá-los em maiúsculas, minúsculas, caracteres numéricos e caracteres especiais. Assim, quatro códigos podem ser associados aos quatro tipos e 28 códigos vão permitir codificar os caracteres. A idéia de base desta técnica é que, a princípio, todo símbolo após uma letra minúscula tem fortes possibilidades de ser também uma letra minúscula, todo símbolo seguindo um caractere numérico é também um caractere numérico, etc... Quando se quer chavear de um tipo de símbolo a outro, basta inserir o código associado ao novo tipo. Uma técnica similar pode ser utilizada para codificar longas seqüências de dados binários contendo grandes quantidades de zeros. Cada símbolo de k bits indica quantos zeros separam dois 1’s consecutivos. Assim, para tratar grandes faixas de zeros, o símbolo 1 indica que uma faixa de 2k - 1 mais o valor do símbolo seguinte separa os dois uns. Por exemplo, para a seqüência 000100000100000010000000000000010000001000100000001100000101 que contém as faixas de zeros de comprimentos: 3,5,6,14,6,3,7,0,1,5 e 1, pode-se utilizar a codificação seguinte: — 3.32 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA 011 101 110 111 111 000 110 011 111 000 000 001 101 001 onde a faixa de 14 zeros é codificada por 111 111 000 (ou seja, 7 + 7 + 0 = 14). Neste caso, a compressão permitiu reduzir em 34% o tamanho da informação. Uma aplicação desta técnica pode ser feita, com algumas modificações, na transmissão digital de imagens de televisão colorida. O sinal é constituídos de uma seqüência de quadros, de 25 a 30 por segundo, cada um contendo um vetor retangular de pontos (pixels) da imagem. Uma imagem de televisão pode ser composta de 1000 linhas de 600 pixels, cada pixel sendo codificado em 16 bits, 15 bits para a cor (com 32 níveis para cada cor) e 1 bit para informação de controle (enquadramento vertical ou horizontal). Uma codificação direta desta informação necessitaria 600000 pixels por quadro, ou seja, uma taxa de transmissão de 240 a 288 Mbits/s. Com uma codificação binária, seria necessário dispor de uma faixa de freqüência de quase 600 MHz. Uma vez que a transmissão analógica ocupa faixas de freqüência de apenas 6 MHz, a transmissão digital, sem compressão de imagem, poderia tornar-se inviável. A solução está no fato que, em transmissão de imagens, existe uma forte probabilidade de que muitos quadros consecutivos sejam idênticos àqueles que os precederam. Desta forma, basta providenciar, a nível dos televisores, uma memória que possa armazenar o último quadro recebido e, assim, transmitir apenas as diferenças entre o quadro anterior e o atual. 7.4. A criptografia A criptografia é uma técnica bastante antiga, introduzida principalmente pelas organizações militares, particularmente na troca de mensagens em tempo de guerra. Nessas ocasiões, um problema da criptografia era a dificuldade de decodificação das mensagens criptografadas, muitas vezes tendo de ser feitas nos campos de batalha em condições totalmente adversas. Outro problema era a dificuldade na mudança de uma técnica a outra, particularmente devido à dificuldade em informar o grande número de pessoas que deveria estar consciente da mudança. O processo de criptografia de uma mensagem é ilustrado pela figura 3.18. As mensagens a serem criptografadas são codificadas graças a uma função parametrizada por uma chave, gerando, na saída o texto criptografado ou o criptograma. Este texto é transmitido por um mensageiro ou rádio, este podendo ser «escutado» por um espião. A diferença entre o espião e o destinatário é que, como o primeiro não tem a chave de decodificação, ele dificilmente vai poder decodificar a mensagem. Os espiões podem efetuar dois tipos de ação sobre os criptogramas, copiá-los unicamente para conhecer o seu conteúdo (espião passivo) ou modificá-los de modo a confundir o destinatário destes (espião ativo). Um princípio das técnicas de criptografia é a suposição de que o espião conhece sempre as técnicas gerais da criptografia, ou seja, que pelo menos o esquema apresentado na figura 3.18 é conhecido. Por outro lado, criar a cada vez um método diferente de criptagem a cada vez que um outro é considerado conhecido representa um trabalho considerável. A forma mais eficiente de tentar «esconder o jogo» é através da introdução das chaves. As chaves consistem de seqüências de caracteres relativamente curtas que permitem escolher um método de criptagem em função do seu valor. A vantagem disto é que, enquanto uma técnica de criptagem pode ser modificada numa escala de anos, uma chave pode ser modificada quando se julgar necessário. Os métodos de criptografia podem ser organizados em duas principais classes: os métodos por substituição e os métodos por transposição cujos principais pontos serão vistos a seguir. — 3.33 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA espião passivo espião ativo ESPIÃO M Processo de codificação Processo de decodificação M criptograma chave de codificação (k) chave de decodificação Figura 3.18 - O processo de criptografia. 7.4.1. A criptagem por substituição Nestes métodos, cada letra ou grupo de letras é literalmente substituído por outra letra ou outro grupo de letras. A técnica mais antiga de criptagem é atribuída a Júlio César, que definiu uma técnica onde cada letra do alfabeto seria substituída por uma letra que estivesse 3 passos à sua frente ou seja, a seria codificada em D, b seria codificada em E, c seria codificada em F, etc..., e isto de maneira rotativa, de modo que z seria codificado em C. Desta forma, a palavra REDE ficaria... UHGH, portanto, irreconhecível. Esta técnica poderia ainda ser generalizada, pelo deslocamento do alfabeto de k passos ao invés de 3. A esta técnica generalizada, dá-se o nome de permutação circular. Uma outra técnica, a substituição monoalfabética, é uma extensão à permutação circular, mas, desta vez, as letras podem ser substituídas por qualquer outra. Por exemplo, se o alfabeto abcdefghijklmnopqrstuvwxyz é substituído por N B V C X W M L K J H G F D S Q P O I U Y T R E Z A, a palavra REDE torna-se, agora, OXCX. Com esta técnica, existem 26! (4.1026) chaves possíveis. Mesmo que o espião conheça a técnica, como ele não conhece a chave, ele teria dificuldade para descobrir o significado do criptograma. No entanto, esta dificuldade pode ser diminuída se forem consideradas as propriedades naturais da língua utilizada. Na língua inglesa, por exemplo, existem letras que são mais freqüentemente utilizadas, como por exemplo, as letras e, t, o, ..., os digramas mais freqüentes são th, in, er, ... e os trigramas mais utilizados são the, ing, and e ion. E o trigrama mais utilizado da lÍngua portuguesa? Nos últimos meses, deve ter sido CPI. Desta forma, a decodificação de um criptograma obtido com a substituição monoalfabética, é feita associando-se a letra mais freqüente à letra mais freqüente da língua considerada, os digramas mais freqüentes àqueles mais freqüentes da língua considerada, etc... 7.4.2. A criptagem por transposição Na criptagem por substituição, apesar da substituição das letras, os códigos mantém a ordem correta das letras nas palavras e frases. Na codificação por transposição, as letras — 3.34 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA não são substituídas, mas de fato, transpostas de tal forma a esconder o verdadeiro significado do texto. Uma técnica de criptagem é mostrada na figura 3.19, denominada transposição por colunas. Nesta técnica as linhas serão trocadas pelas colunas numeradas em função de uma chave que é, normalmente, uma palavra não contendo nenhuma letra repetida. No exemplo, a chave considerada é a palavra PESCAR, onde a ordem das colunas associadas a cada uma das letras vai ser 4-3-6-2-1-5. Assim, um texto como... TRANSFERIR UM M ILHÃO PARA A CONTA DE COLLOR o criptograma obtido será ... SUAADONRHAALRRIANOTEM POCFM OCERAILRTL. 8. A CAMADA DE APLICAÇÃO A camada de Aplicação tem por função o gerenciamento dos programas de usuário (programas de aplicação) que executam em máquinas conectadas e utilizam o sistema de comunicação para a troca de informações. Os programas de aplicação executando via um sistema de comunicação baseada no modelo OSI vão utilizar-se dos serviços de comunicação oferecidos pela camada de Apresentação, descrita na parte anterior do documento. Esta camada é a que mantém o contato direto com os usuários da arquitetura de comunicação, abrindo caminho para todos os serviços oferecidos pelas camadas inferiores. Dentro desta parte, serão estudados os principais aspectos relacionados à camada de Aplicação, particularmente, a sua estrutura e os conceitos associados e alguns exemplos de serviços oferecidos a nível de Aplicação. 8.1. Estrutura da camada de Aplicação A grande diversidade das aplicações podendo ser construídas sobre uma arquitetura de comunicação e a questão da heterogeneidade dos sistemas, fator importante da concepção do modelo OSI, conduziu, no âmbito da ISO, à definição de uma arquitetura unificada para a camada de Aplicação, ALS (Application Layer Structure), definida pela norma ISO 9545. Nesta definição, a norma não propõe serviço de Aplicação, mas introduz um conjunto de conceitos relacionados à estrutura da camada, que pode servir como base para a definição de outras normas ou propostas de serviços de Aplicação. P E S C A R 4 3 6 2 1 5 Texto original: T R A N S F E R I R U M TRANSFERIR UM MILHAO PARA A CONTA DE COLLOR M I L H A O P A R A A C O N T A D E C O L L O R Texto codificado SUAADONRHAALRRIANOTEMPOC FMOCERAILRTL Figura 3.19 - Exemplo da transposição por colunas. — 3.35 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA 8.1.1. Características específicas da camada de Aplicação Dado que a camada de Aplicação é a mais alta do modelo OSI, ela não fornece serviço a nenhuma outra camada, a noção de conexão ficando, então, inadequada a nível de Aplicação. Por outro lado, a comunicação entre entidades de Aplicação pares deve ser suportada por alguma forma de relação que permita a troca de informações de controle dos protocolos de Aplicação, esta forma de relação sendo definida como uma Associação de Aplicação. Os elementos compondo a arquitetura da camada de Aplicação vão se utilizar das facilidades oferecidas pela camada de Apresentação para a manipulação e a representação de dados, e os mecanismos de controle de diálogo oferecidos pela camada de Sessão. As interações entre os programas aplicativos permitem modelizar a operação cooperativa entre os sistemas abertos reais, necessitando porém o compartilhamento de uma quantidade de informações que viabilize estas interações, a fim de que o tratamento das atividades seja feito de maneira coerente. Três tipos de informação são, particularmente, relacionados à natureza das interações entre os programas aplicativos: • o conjunto de objetos sujeito às atividades de tratamento de informação; • os procedimentos de controle e de cooperação do tratamento distribuído para a comunicação entre programas; • os estados das interações passadas entre programas de aplicação. 8.1.2. Conceitos relacionados à camada de Aplicação As seções que seguem permitem introduzir alguns elementos relacionados à arquitetura da camada de Aplicação, particularmente, os Processos de Aplicação, as Entidades de Aplicação, as Associações de Aplicação, etc... Um Processo de Aplicação ou AP (Application Process) representa, de forma abstrata os elementos de um sistema aberto real que realiza o tratamento de informação no contexto de uma aplicação particular. Dependendo da natureza da aplicação considerada, um processo de Aplicação pode ter necessidade de trocar informações com outros processos de Aplicação, as interações necessárias a esta troca podendo ser realizadas a partir de um número distinto de partes invocáveis simultaneamente ou seqüencialmente. A atividade de um Processo de Aplicação é caracterizada, formalmente por uma instância ou Invocação de Processo de Aplicação ou API (Application Process Invocation). Uma Entidade de Aplicação ou AE (Application Entity) representa as capacidades de comunicação (dentro do contexto OSI) de um Processo de Aplicação. Uma ou várias Entidades de Aplicação permitem definir o que o ambiente OSI leva em conta para a comunicação de um processo de comunicação. Uma Entidade de Aplicação representa um único Processo de Aplicação. Por outro lado, um mesmo Processo de Aplicação pode reagrupar diversas Entidades de Aplicação. Além disso, diferentes Processos de Aplicação podem ser representados por Entidades de Aplicação de mesmo tipo, um Processo de Aplicação podendo reagrupar diversas Entidades de Aplicação de tipos diferentes. Uma Invocação de Entidade de Aplicação ou AEI (Application Entity Invocation) é uma utilização das capacidades de uma AE para as atividades de comunicação específicas de um Processo de Aplicação. Uma Associação de Aplicação ou AA (Application Association) é uma relação cooperativa estabelecida entre duas AEIs para a troca de informações. Uma ou mais AAs são criadas quando duas AEIs devem trocar informações no contexto de uma dada aplicação. Isto significa que uma AEI pode manter, simultânea ou sequencialmente, mais de uma AA com uma ou diversas AEIs. Um Elemento de Serviço de Aplicação ou ASE (Application Service Element) compreende um par serviço-protocolo normalizado que pode constituir uma Entidade de Aplicação. Ele corresponde a um subconjunto das funções ou facilidades de comunicação — 3.36 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA oferecidas para o suporte de cooperação entre Entidades de Aplicação. Estas funções e facilidades são definidas pela especificação de um conjunto de Unidades de Dados de Protocolo de Aplicação ou APDUs (Application Protocol Data Units) assim como os procedimentos associados à sua utilização, definindo o Protocolo de Aplicação entre dois ASEs. Finalmente, um conceito importante é o de um Contexto de Aplicação, que corresponde ao conjunto de regras e funções a serem implementadas ao longo da duração de uma Associação de Aplicação para a gestão das trocas de informações entre AEIs. As possíveis relações entre os conceitos aqui descritos são ilustradas pela figura 3.20. Outros conceitos importantes no que diz respeito à estrutura da camada de Aplicação são os Objetos de Associação Simples e a Função de Controle de Associação Simples. Os Objetos de Associação Simples ou SAO (Single Association Object) são os elementos que representam as funções e as informações de estado relacionadas às operações de uma associação de aplicação simples, o conceito de «simples» estando relacionado ao sentido de «único». Os componentes básicos de um SAO são o Elemento de Serviço de Controle de Associação ou ACSE (Association Control Service Element) e a Função de Controle de Associação Simples ou SACF (Single Association Control Function) que serão definidas mais adiante. Um SAO representa igualmente a operação de um conjunto de ASEs existentes numa AEI para uma associação de Aplicação particular. A Função de Controle de Associação Simples é o elemento que representa a coordenação das interações e a utilização dos elementos de um SAO. 8.1.3. Exemplos de Estruturas de AEIs A forma como uma AEI pode ser composta a partir dos diversos elementos definidos acima é ilustrada a partir de dois exemplos, apresentados nas figuras 3.21 e 3.22, respectivamente. Em 3.21, é apresentado um caso simples de uma AEI envolvida numa associação de Aplicação única. Ela é composta então de um SAO, constituído por dois ASEs e uma função de controle. Em 3.22, é apresentada uma AEI envolvida em três associações. No caso de múltiplas associações, algumas atividades de uma mesma aplicação podem ser distribuídas sobre várias associações. Neste caso, estas atividades devem ser coordenadas e ordenadas através de um conjunto de funções da própria aplicação. Este conjunto defunções é reagrupado, no modelo da camada de Aplicação, por um elemento denominado Função de Controle de Associações Múltiplas ou MACF (Multiple Association Control Function). AP API AE AE AP API AE AEI AEI AEI ASEs CONTEXTO DE APLICAÇÃO ASEs ASSOCIAÇÕES CONSECUTIVAS OU SIMULTÂNEAS Figura 3.20 - Conceitos da arquitetura da camada de Aplicação. — 3.37 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA Camada de Aplicação AEI SAO Camada de Apresentação S A C F ASE ACSE A S S O C I A Ç Ã O D E A P L I C A Ç Ã O Figura 3.21 - Uma AEI simples. Camada de Aplicação AEI MACF SAO 1 S ASE 1 A ASE 2 C ACSE F SAO 2 S ASE 3 A ASE 4 C ACSE F SAO 3 S ASE 3 A ASE 5 C ACSE F Camada de Apresentação Figura 3.22 - AEI com múltiplas associações. Na figura 3.22, uma das associações é utilizada de maneira totalmente independente das demais, enquanto as duas outras são utilizadas num mesmo conjunto de atividades que requerem a existência de uma MACF, como mostrado na figura. 8.2. ACSE e os serviços de gestão das conexões A gestão de conexões é um dos problemas a serem resolvidos pela camada de Aplicação, de forma a evitar que cada aplicação desenvolvida tenha de resolver esta questão à sua maneira. Assim, a nível desta camada, foi definido um Elemento de Serviço de Controle de Associação, o ACSE (Association Control Service Element) que assume esta tarefa. — 3.38 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA Como a totalidade das aplicações conhecidas requer, normalmente os serviços de gestão de conexão, este elemento de serviços deve estar sempre presente a nível dos contextos de Aplicação. Nas seções que seguem, apresentaremos os serviços supridos por este elemento de serviço, assim como as interfaces deste com os serviços das camadas inferiores. 8.2.1. Os serviços oferecidos pelo ACSE Os serviços oferecidos pelo ACSE são definidos pelas primitivas apresentadas no quadro a seguir. PRIMITIVA A-ASSOCIATE A-RELEASE A-ABORT A-P-ABORT SIGNIFICADO Estabelecimento de conexão Liberação negociada de conexão Liberação abrupta de conexão (usuário) Liberação abrupta de conexão (fornecedor) A_ASSOCIATE é um serviço confirmado que permite estabelecer uma associação a partir de um elemento de serviço de aplicação. Dentre os parâmetros da primitiva de serviço, é enviada a proposição de contexto de Aplicação. Em caso de aceitação por parte do receptor da indicação, a associação será, então, estabelecida. O serviço A_RELEASE é um serviço confirmado que permite liberar, de maneira ordenada, uma associação estabelecida entre duas AEIs, caracterizando uma liberação negociada, como definido na parte relativa à camada de Sessão. A_ABORT é um serviço não confirmado que permite «abortar», ou liberar de forma abrupta uma associação existente. Como já descrito anteriormente, neste caso podem ocorrer perdas de informações sendo trocadas através da associação. A ativação deste serviço é de iniciativa do usuário do ACSE. A_ABORT pode ser ativado pelo iniciador do serviço A_ASSOCIATE, no caso em que não exista concordância a respeito do contexto de aplicação a utilizar. A_P_ABORT é o serviço que efetua o mesmo que A_ABORT, sendo que, desta vez, a iniciativa é do fornecedor do serviço. 8.2.2. As interfaces do ACSE com os serviços de Apresentação O ACSE tem acesso a serviços de duas das camadas inferiores, particularmente, a camada imediatamente inferior, de Apresentação, e a camada de Sessão. No que diz respeito aos serviços de Apresentação, uma primeira correspondência que se pode estabelecer é o de uma associação com uma conexão de Apresentação. Deste ponto de vista, existem uma correspondência de 1 para 1, ou seja, uma associação de Aplicação corresponde a uma conexão de Apresentação. O ACSE necessita utilizar unicamente os serviços de base da camada de Apresentação, ou seja, os serviços P_CONNECT, P_RELEASE e P_U_ABORT. O iniciador do serviço A_ASSOCIATE deve determinar o contexto de Apresentação pretendido. 8.3. Os serviços de acesso e transferência de arquivos (FTAM) Em 1987, foi publicada pela ISO a versão definitiva da norma de serviços de acesso e transferência de arquivos, FTAM (File Transfer, Access and Management), com o número ISO 8571. A norma cobre um dos assuntos mais importantes da interconexão de sistemas, uma vez que ela normaliza o protocolo que permite oferecer os serviços de acesso e transferência de arquivos. FTAM permite a transferência do todo ou de parte de um arquivo, ao destinatário ou a uma estação (sistema) distante, oferecendo ainda serviços de controle de erros, retomada — 3.39 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA imediata ou não, controle de acesso a arquivos (acesso seletivo, proteção, ...) e modificação dos atributos de um arquivo. O tratamento de arquivos via FTAM é baseado no conceito de arquivo virtual, que permite representar, para os serviços FTAM o arquivo real. A relação entre estes elementos é apresentada na figura 3.23. A noção de arquivo virtual permite tornar transparente ao usuário as diferentes formas de armazenamento e os métodos de acesso dos sistemas de arquivo real. FTAM permite estabelecer as relações entre o sistema de arquivos real e os sistemas de arquivos virtuais. 8.3.1. O servidor virtual de arquivos Um servidor virtual de arquivos reagrupa todas as informações relativas aos arquivos, estas, permitindo conhecer o estado de um arquivo num dado instante. O modelo definido para o servidor de arquivos virtuais contém atributos os mais genéricos possíveis quanto à representação dos aspectos de um servidor de arquivos reais. Este é modelado como uma entidade endereçável com a qual um usuário remoto pode se comunicar, utilizando os serviços FTAM. A princípio, um número arbitrário de usuários pode ser associado a um mesmo servidor virtual de arquivos num dado instante. Ainda, um servidor virtual de arquivos pode gerenciar um número arbitrário de arquivos, onde cada arquivo é caracterizado por atributos tais como: o nome, ações possíveis sobre o arquivo (leitura, inserção, substituição, ...), controle de acesso (somente leitura, somente escrita, ...), tamanho do arquivo, identidade do criador, data e hora de criação, identidade do último modificador, data e hora de modificação, etc... A seleção de um arquivo é caracterizada por duas etapas: o estabelecimento de uma associação entre o usuário querendo selecioná-lo e o servidor virtual de arquivos; o fornecimento da identidade do arquivo a selecionar. A estrutura de acesso aos arquivos num servidor virtual de arquivos assume a forma arborescente, coerente com as estruturas mais genéricas dos sistemas reais de arquivos. Esta estrutura é ilustrada pela figura 3.24, onde se pode ver um único nó raiz (R), nós internos (A, E) e folhas (B, C, D, F) conectadas por arcos dirigidos. Sistema Real A Sistema Real B ARQUIVO REAL A ARQUIVO REAL B Ambiente OSI ARQUIVO VIRTUAL A protocolo FTAM ARQUIVO VIRTUAL B ARQUIVO VIRTUAL C ARQUIVO REAL C Sistema Real C Figura 3.23 - Relação entre arquivos virtuais e arquivos reais. — 3.40 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA Um nó da árvore pode pertencer a um único nível, podendo, por sua vez, servir de acesso à sua subárvore, conhecida como uma Unidade de Dados de Acesso a Arquivo ou FADU (File Access Data Unit). O conteúdo de um arquivo pertencente ao servidor de arquivos é mantido numa ou mais Unidade de Dados ou DU (Data Unit). Uma DU é um objeto de dados tipado (escalar, vetor, conjunto, ...), contendo elementos de dados atômicos denominados Elementos de Dados, aos quais é normalmente associada uma sintaxe abstrata (caractere, byte, inteiro, ...). Os serviços associados a um servidor virtual de arquivos são acessados via primitivas de serviço, que serão apresentadas na seção a seguir. 8.3.2. As primitivas de serviço de FTAM Os serviços oferecidos por FTAM para o acesso e a transferência de arquivos são organizados em unidades denominadas regimes. Os regimes correspondem a etapas da manipulação de arquivos, o quadro a seguir apresenta o conjunto de primitivas associado a cada um deles. O FTAM, como foi apresentado, constitui-se de um importante elemento de serviço de aplicação (ASE) para as aplicações que exijam manipulação ou transferência de arquivos, sejam aplicações de automação de escritório ou de automação da manufatura. No que diz respeito a esta segunda classe de aplicações, podemos destacar como um importante elemento de serviço de aplicação, o ASE MMS (Manufacturing Message Services). CONEXÃO DE APLICAÇÃO F_INITIALIZE F_TERMINATE F_ABORT SELEÇÃO DE ARQUIVO F_SELECT F_CREATE F_DESELECT F_DELETE F_READ_ATTRIB F_CHANGE_ATTRIB ACESSO A ARQUIVO F_OPEN F_CLOSE F_LOCATE F_ERASE TRANSF. DE DADOS F_READ F_WRITE F_DATA F_DATA_END F_TRANSFER_END autorização e informações para operação inicialização da associação terminação negociada de associação terminação abrupta da associação identificação de arquivos a manipular seleção de um arquivo existente criação de um arquivo liberação de um arquivo eliminação de um arquivo leitura dos atributos do arquivo modificação de atributos de um arquivo abertura, fechamento, etc... abertura de um arquivo fechamento de arquivo localização de um arquivo eliminação de conteúdo de um arquivo transferência de dados entre arquivos leitura do conteúdo de um arquivo escrita sobre um arquivo transferência de dados transferência de fim de dados fim de transferência de dados — 3.41 — CAP. 3 — AS SETE CAMADAS DO MODELO OSI PROF. VITÓRIO BRUNO MAZZOLA FADU R FADU A B DU DU C NÍVEL 0 DU E FADU DU D DU F DU NÍVEL 1 DU NÍVEL 2 Figura 3.24 - Estrutura de acesso do servidor virtual de arquivos. — 3.42 — Capítulo 4 AS RE D E S LO C A I S 1. INTRODUÇÃO A solução para o compartilhamento de recursos físicos e lógicos juntamente com a vantagem de se ter um sistema descentralizado foi alcançada através da interconexão das CPUs entre si. É a isso que se propõem as redes de computadores. A solução para a comunicação de computadores em termos de longa distância foi a tecnologia de comutação de pacotes, que solucionou o problema da linha telefônica dedicada. Para pequenas distâncias a solução foi a implantação de redes locais. De uma forma geral, o objetivo de uma rede é tornar disponível a qualquer usuário todos os programas, dados e outros recursos independente de suas localizações físicas. Outro objetivo é proporcionar uma maior disponibilidade e confiabilidade, dada a possibilidade de migração para outro equipamento quando a máquina sofre alguma falha. O uso de uma rede de computadores proporciona um meio de comunicação poderoso devido a sua velocidade e confiabilidade. 2. CLASSIFICAÇÃO DAS REDES DE COMPUTADORES Uma rede de computadores é formada por um conjunto de módulos processadores capazes de trocar informações e compartilhar recursos, interligados por um sistema de comunicação. O sistema de comunicação vai se constituir de um arranjo topológico interligando os vários módulos processadores através de enlaces físicos, através dos meios de transmissão, e de um conjunto de regras com fim de organizar a comunicação, os protocolos de comunicação. Redes Locais (LANs - Local Area Networks) surgiram dos ambientes de institutos de pesquisa e universidades. Elas surgiram para viabilizar a troca e o compartilhamento de informações e dispositivos periféricos preservando a independência das várias estações de processamento e permitindo a integração em ambientes de trabalho cooperativo. Pode-se caracterizar uma rede local como sendo uma rede que permite a interconexão de equipamentos de comunicação de dados numa pequena região. Nas redes locais as distâncias entre os módulos processadores se enquadram na faixa de alguns metros a alguns poucos quilômetros. Esta definição é bastante vaga, considerando “pequenas distâncias” entre 100m e 25km, embora as limitações associadas às técnicas utilizadas em redes locais não imponham limites a essas distâncias. Quando a distância de ligação começa a atingir distâncias metropolitanas chamamos estes sistemas de Redes Metropolitanas (MANs - Metropolitan Area Networks). Uma rede metropolitana apresenta características semelhantes às redes locais, porém cobrindo distâncias maiores e operando em velocidades maiores. Esta definição surgiu com o aparecimento do padrão de protocolos para redes metropolitanas IEEE 802.6, que faz parte do padrão IEEE 802 e é denominado DQDB (Distributed Queue Dual Bus). — 4.1 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA Redes Geograficamente Distribuídas (WANs - Wide Area Networks), ou Redes de Longa Distância, são utilizadas para compartilhar recursos especializados por uma maior comunidade de usuários geograficamente dispersos. Em função dos custos de comunicação serem bastante altos estas redes são, em geral, públicas, isto é, o sistema de comunicação, chamado sub-rede de comunicação, é mantido, gerenciado e de propriedade pública. Em função dos custos as velocidades empregadas são relativamente baixas, de alguns kilobits/segundo, podendo chegar a megabits/segundo. 3. PARÂMETROS DE COMPARAÇÃO A escolha de um tipo de rede para suporte a um dado conjunto de aplicações é uma tarefa difícil. Cada arquitetura de rede possui características que afetam sua adequação a uma aplicação em particular. Muitos podem ser os atributos que fazem parte do rol possível de ser considerado para comparação. Dentre eles estão custo, tempo de resposta, velocidade, desempenho, confiabilidade, modularidade, compatibilidade, e facilidade de adaptação na mudança de tecnologia. Estes pontos serão discutidos brevemente a seguir. 3.1. Custo O custo de uma rede é composto pelo custo das estações de processamento, das interfaces com o meio físico de comunicação e o custo do próprio meio físico. Uma vez que os custos das estações estão cada vez menores é necessário que o custo das interfaces seja minimizado. O que irá determinar o custo das interfaces é proporcional ao desempenho que se espera da rede. Redes de baixo a médio desempenho usualmente empregam poucas estações com uma demanda de taxas de dados e volume de tráfego pequeno, permitindo o uso de interfaces de baixo custo. Redes de alto desempenho já requerem interfaces de custo mais elevado. 3.2. Retardo de Transferência Retardo de acesso é o tempo que uma estação espera, a partir do momento que uma mensagem está pronta para ser transmitida, até o momento em que ela consegue transmitir com sucesso esta mensagem. Retardo de transmissão é o intervalo de tempo decorrido desde o início da transmissão de uma mensagem por uma estação de origem até o momento em que a mensagem chega à estação de destino. Por fim retardo de transferência eqüivale à soma dos retardos de acesso e de transmissão. O retardo de transferência é, na maioria dos casos, uma variável aleatória, porém em algumas redes o seu valor pode ser calculado, ou melhor, ele é determinístico. A rede deve ser adequada ao tipo particular de aplicação para o qual ela foi concebida. Por exemplo, para aplicações de controle em tempo real, o retardo de transferência limitado é de vital importância. 3.3. Desempenho Pode-se definir como desempenho a capacidade efetiva de transmissão da rede. Por exemplo as redes locais de alta velocidade (High-Speed Local Networks - HSLN) são projetadas de forma a fornecer um alto desempenho na comunicação entre dispositivos, embora o custo de conexões seja mais elevado. Na verdade os termos velocidade, desempenho e retardo de transferência estão intimamente relacionados. A escolha de um mecanismo de interconexão orientado para a natureza das aplicações é essencial para o bom desempenho de uma rede. — 4.2 — CAP. 4 — AS REDES LOCAIS 3.4. PROF. VITÓRIO BRUNO MAZZOLA Confiabilidade Confiabilidade pode ser avaliada em termos de tempo médio entre falhas (Medium Time Between Failures - MTBF), tolerância a falhas, degradação amena, tempo de reconfiguração após falhas e tempo médio de reparo (Medium Time to Repair - MTTR). O MTBF é geralmente medido em horas. A degradação amena está ligada à aplicação e mede a capacidade da rede continuar operando em presença de falhas, embora com desempenho menor. Reconfiguração após falhas requer que alternativas redundantes sejam acionadas tão logo uma falha ocorra. O tempo médio de reparo pode ser diminuído com o auxílio de redundância, mecanismos de autoteste e diagnóstico, e manutenção eficiente. 3.5. Modularidade Modularidade pode ser caracterizada como o grau de alteração de desempenho e funcionalidade que uma rede pode sofrer sem mudar seu projeto original. Os maiores benefícios de uma arquitetura modular incluem a facilidade para modificação, facilidade para crescimento e facilidade para o uso de um conjunto de componentes básicos. A modularidade está intimamente ligada às aplicações do sistema. Uma rede bem projetada deve poder se adaptar modularmente às várias aplicações a que é dedicada, como também prever futuras utilizações. 3.6. Compatibilidade Também conhecida como interoperabilidade, a compatibilidade pode ser vista como a capacidade que a rede possui para se ligar a dispositivos de vários fabricantes, a nível de software ou de hardware. Esta característica é bastante importante e valiosa por dar ao usuário grande flexibilidade e poder de barganha perante os fabricantes. 3.7. Sensibilidade Tecnológica Este tópico diz respeito à modularidade. Uma rede deve ter a capacidade de suportar todas as aplicações para a qual ela foi projetada, mais aquelas que no futuro possam ser requeridas, incluindo transmissão de vídeo, voz e interconexão com outras redes, por exemplo. 4. CARACTERÍSTICAS DAS REDES LOCAIS Geralmente uma rede local serve a uma área geograficamente limitada, isto é, um ambiente de trabalho, um edifício, um campus universitário, uma fábrica, etc. As distâncias podem variar de metros até alguns poucos quilômetros e a velocidade de transmissão é da ordem de milhões de bits por segundo. A maioria dos produtos existentes na área utiliza uma forma simples de interligação física entre os equipamentos e talvez esta seja uma das características mais atrativas das redes locais. Estas características, no entanto, não são suficientes para garantir o sucesso de uma rede local. Para o usuário final, é muito importante ter um mecanismo de transmissão de informação eficiente, sem que haja a necessidade de conhecer os detalhes técnicos para efetuar a ligação com a rede. Uma rede local pode ser descrita através das seguintes características: • • • • completamente contida dentro de uma área geográfica limitada; equipamentos interconectados porém independentes; alto grau de interconexão entre os equipamentos da rede; transmissão de informação geralmente na forma digital; — 4.3 — CAP. 4 — AS REDES LOCAIS • • PROF. VITÓRIO BRUNO MAZZOLA interface com a rede feita através de equipamentos e meios de transmissão relativamente baratos; possível comunicação entre dois equipamentos quaisquer da rede. Outros aspectos que não são definidos explicitamente incluem: • • • • • • • distâncias envolvidas; equipamentos envolvidos; velocidade de transmissão; topologia da rede; meio físico utilizado; protocolos e métodos de acesso usados; existência ou não de um nó controlador. A escolha de um tipo de rede para suporte a um dado conjunto de aplicações é uma tarefa por vezes difícil. Cada arquitetura de rede possui características que afetam sua adequação a uma aplicação em particular. Muitos podem ser os atributos que fazem parte do rol possível de ser considerado para comparação. Dentre eles estão: custo, tempo de resposta, velocidade, desempenho, confiabilidade, modularidade, compatibilidade, e facilidade de adaptação na mudança de tecnologia. 5. HISTÓRICO As redes locais surgiram inicialmente em centros de pesquisa e universidades. Elas constituem uma parte da evolução da pesquisa em redes de transmissão de dados em geral e da tecnologia de comutação de pacotes em particular. Uma das primeiras redes desenvolvidas usando as técnicas que agora são associadas às redes locais foi um sistema de controle de terminais remotos no qual o custo e a dificuldade de proporcionar enlaces com cabos normais foi proibitivamente alto. Tal sistema, conhecido como rede ALOHA no Hawai, tinha como objetivo interligar um grande número de terminais a um computador central. A característica principal do sistema ALOHA é o uso de um canal de rádio difusão por todos os usuários. Na rede ALOHA, cada terminal de usuário compete com os outros pela utilização do canal de rádio. Uma das primeiras redes locais desenvolvidas foi o Distributed Computing System (DCS) da Universidade da Califórnia em 1971/72. O DCS consiste em um conjunto de microcomputadores conectados através de um anel por onde fluem, à velocidade de 3,5 Mbps (megabits por segundo), as mensagens trocadas entre processos residentes nos diferentes computadores. O objetivo do projeto foi construir um sistema distribuído em termos de hardware, software e controle. Nos anos seguintes, diversos projetos de redes locais estavam em andamento. Um dos mais importantes foi a rede Ethernet, desenvolvida conjuntamente pela Xerox, Intel e Digital. Esta rede tinha como objetivos ser um sistema de comunicação de baixo custo para interligar minis e micros e ter o controle distribuído. A Ethernet é hoje um dos sistemas de rede local mais vendidos no mundo. O padrão Token Ring, definido pela IBM, também tem sua parcela de mercado atualmente. 6. DEFINIÇÕES BÁSICAS Podemos dizer que atualmente uma redes local (LAN - Local Area Network) é, basicamente, um grupo de PCs (desktops) ou estações de trabalho interligados a servidores. Os usuários de uma LAN executam suas tarefas a partir de seus PCs. Estas tarefas normalmente são edição de texto, planilhas eletrônicas ou aplicações gráfica e o acesso a aplicações disponíveis nos servidores. Os módulos mais importantes de uma LAN são: — 4.4 — CAP. 4 — AS REDES LOCAIS • • • PROF. VITÓRIO BRUNO MAZZOLA servidores; estações de trabalho; recursos de comunicação. Um servidor é um computador com elevada capacidade de processamento, cuja função é disponibilizar serviços à rede. Em geral esta máquina processa grandes volumes de dados, requerendo CPUs rápidas e dispositivos de armazenamento de alta capacidade e rápido acesso. Alguns dos servidores mais utilizados são: • • • • • servidor de aplicação; servidor de arquivos; servidor de impressora; servidor de rede; servidor de banco de dados. Atualmente o hardware servidor é composto por um PC-Pentium mono ou multiprocessado, ou então máquinas RISC de fabricantes como HP, Sun, Digital ou IBM. O sistema operacional do servidor pode ser enquadrado como Sistema Operacional de Rede (SOR). Os SOR mais adotados pelo mercado são: • • • • • Netware 4.1 (Novel Inc.); Windows NT Server (Microsoft Corp); LAN Server 4.0 (IBM); Unix (IBM, Sun, HP, SCO e outras); Banyan ENS 6.0 (Banyan-Vines). Os SOR são fundamentais na definição de uma rede local. Um estudo criterioso deve ser realizado visando a escolha do SOR mais adequado às necessidades de uma LAN. Este estudo deve levar em consideração diversos aspectos tais como: quantidade de PCs, aplicações envolvidas, necessidade de interfaces com outros SOR e com os sistemas operacionais dos próprios PCs, aderência a padrões, desempenho, etc. Através dos PCs e das estações de trabalho os usuários acessam arquivos e aplicações no servidor e executam tarefas locais. Conforme veremos posteriormente, as aplicações Cliente/Servidor são compartilhadas, ou seja, uma parte é executada no módulo Cliente e outra parte no módulo Servidor Os desktops mais populares consistem de um PC 486 ou Pentium, com MSWindows (3.11 ou 95). Existem outras boas opções como OS/2 e o Windows NT Client. Os recursos de comunicação constituem a definição da infra-estrutura de hardware e de software necessária para a comunicação entre os diversos componentes de uma LAN. Os recursos mais comuns são os hubs, as placas de rede, repetidores (repeaters), pontes (bridges), roteadores (routers), cabeamento, etc. A comunicação entre os elementos da rede deve ser o mais transparente possível, permitindo que as aplicações sejam independentes da plataforma de comunicação adotada. 7. O RM-OSI E AS REDES LOCAIS Redes locais possuem características que afetam principalmente os níveis mais baixos de protocolo. Esses níveis não devem deixar de levar em consideração o elevado desempenho, o baixo retardo, a baixa taxa de erros, o roteamento simples (em geral único) e as aplicações a que se destinam as redes locais. O RM-OSI, embora teoricamente, pode ser utilizado tanto em redes geograficamente distribuídas como para redes locais. No entanto ele foi pensado para uso em redes — 4.5 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA geograficamente distribuídas. Sua aplicabilidade em redes locais não pode deixar de levar em consideração as características intrínsecas destas redes. As distâncias limitadas a que são destinadas as redes locais permitem que seu protocolo de nível físico possa utilizar um meio de alta velocidade com baixíssimas taxas de erros. Este fato vai influenciar em muito os outros níveis de protocolo. Várias diferenças existem na camada de enlace de dados, a começar pela delimitação dos quadros. Ao contrário das redes de longa distância, nas redes locais o método mais apropriado para delimitação de quadro pode ser a simples presença ou ausência de sinal no meio. Devido ao alto desempenho do meio de transmissão e sua baixa taxa de erros, não cabe ao nível de enlace utilizar muitos bits de redundância para a recuperação de erros. Mais ainda, se levarmos em consideração que para determinadas aplicações os requisitos de tempo real são bem mais importantes do que sua confiabilidade exagerada da transmissão. Muitas vezes nem a recuperação de erros por retransmissão é desejável neste nível. Ao nível de enlace caberia apenas um esforço máximo para entregar pacotes de nível 3 sem erros, mas não a sua recuperação caso esse serviços ocorram. Em redes locais as regras que disciplinam o acesso ao meio físico para transmissão de dados são chamadas protocolos de acesso. Como exemplo pode-se citar as regras para controle de acesso ao barramento compartilhado. Nas redes locais a transmissão de dados é feita por difusão ou possuem roteamento único. Neste sentido os protocolos de ligação poderiam estar no nível 2 do RM-OSI, uma vez que tratam do envio do pacote de uma máquina para outra, mas igualmente poderiam ser colocados no nível de rede uma vez que se trata do envio de um pacote da estação de origem até a estação de destino, isto é, fim-afim. Existem também proposta que os colocam no nível físico, uma vez que determinam a ligação física ao meio. O comitê de padronização de redes locais, o IEEE 802, os coloca como parte do nível 2. Como nas redes locais a transmissão de dados é feita por difusão ou possuem roteamento único o nível de rede não tem aqui grande relevância. Em muitas redes o nível de transporte vai ser construído imediatamente acima do nível de enlace. Opcionalmente devemos permitir que o nível de transporte seja construído acima do nível inter-redes. O nível 3 em redes locais teria então como função o roteamento de pacotes entre estação origem e destino em redes diferentes ou na interconexão de redes locais entre si. Neste nível ainda o mais adequada a utilização de datagrama não confiável, deixando para os níveis superiores a recuperação, se necessária, dos erros. A arquitetura Internet TCP/IP, que utiliza essa abordagem, é uma alternativa bastante utilizada para interligação de redes locais de computadores. Em redes locais o nível de transporte, ao tornar transparente para os níveis superiores toda a parte de transmissão, pode ainda tirar vantagem que o meio lhe oferece, como por exemplo, a confirmação de vários circuitos virtuais em uma única mensagem em uma rede do tipo difusão. A implementação dos demais níveis de protocolo depende muito das aplicações da rede. O RM-OSI pode ser seguido na íntegra, podendo suas funções serem realizadas por processos de um sistema operacional distribuído, onde a interface do nível 4 seria vista simplesmente como primitivas de comunicação do núcleo desse mesmo sistema operacional. 8. OS SISTEMAS OPERACIONAIS DE REDE Os sistemas operacionais de rede (SOR) utilizados em redes locais, são uma extensão dos sistemas operacionais locais dos computadores interconectados, complementando-os com um conjunto de funções básicas, e de uso geral, necessárias à operação das estações, de forma a tornar transparente o uso dos recursos compartilhados. A interface entre as aplicações e o sistema operacional baseia-se, usualmente, em interações do tipo solicitação/resposta. No modo de interação cliente-servidor a entidade — 4.6 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA que solicita um serviço é chamada “cliente” e a que presta o serviço é o “servidor”. Nas estações que funcionam como clientes, o SOR, ao receber uma solicitação de um recurso localizado remotamente, monta uma mensagem de pedido e envia ao módulo servidor da estação onde será executado o serviço. Na estação remota, o SOR recebe a mensagem, providencia a execução do serviço solicitado, monta uma ou mais mensagens com o resultado da execução e as envia de volta para o SOR na estação requerente. Quando o SOR na estação que requisitou o serviço recebe a mensagem de resposta, ele faz a entrega à aplicação local. Nota-se que as funções do SOR nos módulos cliente e servidor são bastante diferentes. Resumindo, podemos classificar os módulos de um SOR instalados nas estações em dois tipos: • • SORC: módulo cliente do sistema operacional; SORS: módulo servidor do sistema operacional. Na arquitetura de redes Peer-to-Peer, em todas as estações as estações o SOR possui os dois módulos SORC e SORS. Na arquitetura de redes Cliente-Servidor, as estações da rede dividem-se em estações clientes, que só possuem as funções do módulo cliente acopladas ao seu sistema operacional local, e em estações servidoras. As estações servidoras possuem necessariamente as funções do módulo servidor e podem, opcionalmente, possuir também as funções do módulo cliente. A arquitetura cliente-servidor possui duas variações, definidas pela forma como são utilizados os servidores: • arquitetura cliente-servidor com servidor dedicado; • arquitetura cliente-servidor com servidor não dedicado. A diferença básica entre elas é a disponibilidade ou não da estação servidora para utilização por usuários locais. Estações servidoras, ou mais comumente chamadas de servidores, possuem software de suporte a determinados serviços e, por vezes, algum hardware especial. 9. O PADRÃO IEEE802 O projeto IEEE 802 teve origem na Sociedade de Computação do Instituto de Engenheiros Eletricistas e Eletrônicos dos EUA, ou IEEE Computer Society. O comitê 802 publicou um conjunto de padrões que foram adotados como padrões nacionais americanos pelo American National Standards Institute (ANSI). Estes padrões foram posteriormente revisados e republicados como padrões internacionais pela ISO com a designação ISO 8802. O objetivo foi o estabelecido de uma arquitetura padrão, orientada para o desenvolvimento de redes locais, que apresentasse as seguintes características: • • • correspondência máxima com o RM-OSI; interconexão eficiente de equipamentos a um custo moderado; implantação da arquitetura a custo moderado. A estratégia adotada na elaboração da arquitetura IEEE 802 é a de definir mais de um padrão de forma a atender aos requisitos dos sistemas usuários da rede. Na verdade, a arquitetura IEEE 802 pode ser vista como uma adaptação das duas camadas inferiores da arquitetura RM-OSI da ISO. Nesta arquitetura existem 3 camadas, ou seja, uma equivalente à camada física e duas sub-camadas que juntas equivalem a camada de enlace. Elas são assim denominadas: • camada física (PHY); • sub-camada de controle de acesso ao meio (MAC); • sub-camada de controle de enlace lógico (LLC). — 4.7 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA Para atender o modelo elaborado devemos observar que as funções de comunicação mínimas e essenciais de uma rede local, equivalentes aos níveis inferiores do RM-OSI, podem ser assim definidas: • fornecer um ou mais SAPs (pontos de acesso ao serviço) para os usuários da rede; • na transmissão, montar os dados a serem transmitidos em quadros com campos de endereço e detecção de erros; • na recepção, desmontar os quadros, efetuando o reconhecimento de endereço e detecção de erros; • gerenciar a comunicação no enlace. Estas quatro funções são fornecidas pelo nível de enlace do RM-OSI. A primeira função, as sub-funções a ela relacionadas, são agrupadas pelo IEEE 802 na camada Logical Link Control (LLC). As três restantes são tratadas em uma camada separada, chamada Medium Access Control (MAC), que podem, então ser otimizadas para as diferentes topologias de redes locais, mantendo uma interface única, a camada LLC, para os usuários da rede local. Em um nível físico mais baixo estão as funções normalmente associadas ao nível físico: codificação/decodificação de sinais, geração e remoção de preâmbulos para sincronização e transmissão/recepção de bits. Como no RM-OSI, essas funções foram atribuídas ao nível físico no modelo de referência elaborado pelo IEEE 802. A figura 4.1 apresenta a relação entre alguns dos principais padrões IEEE 802 e o RM-OSI. É importante ressaltar que já existem outros padrões IEEE 802.X, que já foram ou serão aqui citados, tais como IEEE 802.11 (FDDI) e IEEE 802.12 (100VGAnyLAN). O padrão IEEE 802.1 é um documento que descreve o relacionamento entre os diversos padrões IEEE 802 e o relacionamento deles com o modelo de referência OSI. Este documento contém também padrões para gerenciamento da rede e informações para ligação inter-redes. O padrão ANSI/IEEE 802.2 (ISO 8802/2) descreve a sub-camada superior do nível de enlace, que utiliza o protocolo Logical Link Control Protocol. Os outros padrões que aparecem na figura 4.1 especificam diferentes opções de nível físico e protocolos da sub-camada MAC para diferentes tecnologias de redes locais. São eles: • padrão IEEE 802.3 (ISO 8802/3), rede em barra utilizando CSMA/CD como método de acesso; • padrão IEEE 802.4 (ISO 8802/4), rede em barra utilizando passagem de permissão como método de acesso; OSI IEEE 802.1 LLC 802.2 ENLACE MAC FÍSICO 802.3 802.4 802.5 802.6 Figura 4.1 - Relação entre os padrões IEEE 802 e RM-OSI — 4.8 — CAP. 4 — AS REDES LOCAIS • • PROF. VITÓRIO BRUNO MAZZOLA padrão IEEE 802.5 (ISO 8802/5), rede em anel utilizando passagem de permissão como método de acesso; padrão IEEE 802.6 (ISO 8802/6), rede em barra utilizando o Distributed Queue Dual Bus (DQDB) como método de acesso. O padrão IEEE 802.4, denominado Token Bus, é o padrão para redes em barra com sinalização em banda larga utilizando a passagem de permissão como método de acesso ao meio de transmissão. Ele define o método de acesso passagem de permissão sobre uma topologia física barramento, simulando um anel lógico. Este padrão não é muito conhecido, porém ele oferece a opção de um método de acesso determinístico sobre uma topologia em barramento. O padrão IEEE 802.6, denominado DQDB, é o padrão para redes metropolitanas (MANs - Metropolitan Area Network). Segundo a definição do grupo IEEE 802.6, o propósito de uma rede metropolitana é prover serviços integrados, tais como texto, voz e vídeo, em uma grande área geográfica. DQDB é uma sub-rede que pode ser usada como uma parte componente de uma MAN. Tipicamente uma MAN consiste em sub-redes DQDB interconectadas. Nos capítulos posteriores serão feitas discussões detalhadas sobre os padrões IEEE 802.3 e IEEE 802.5, que são os mais utilizadas em redes locais. A seguir serão descritas, resumidamente, as principais funções de cada uma das camadas do padrão IEEE 802. 9.1. Camada Física Esta camada tem como função prover os serviços básicos de transmissão e recepção de bits através de conexões física. Assim, ela define as características elétricas (níveis de tensão, impedância, etc.), as características mecânicas (tipo de conectores, dimensões do suporte físico de transmissão, etc.) e as características funcionais e de procedimentos (tempo de duração de bit ou velocidade de transferência de bits, inicialização das funções de transmissão e recepção de bits, etc.) das conexões físicas. 9.2. Sub-camada de Controle de Acesso ao Meio A sub-camada de Controle de Acesso ao Meio (MAC) especifica os mecanismos que permitem gerenciar a comunicação a nível de enlace de dados. Em particular, a sub-camada MAC fornece os serviços que permitem disciplinar o compartilhamento de um meio de transmissão comum aos sistemas usuários da rede. As unidades de transferência de informação ao nível da sub-camada MAC correspondem aos quadros MAC . A existência da sub-camada MAC na arquitetura IEEE 802 reflete uma característica própria das redes locais, que é a necessidade de gerenciar enlaces de dados com origens e destinatários múltiplos num mesmo meio físico de transmissão, como no caso das topologias em anel e barramento. Além disso, a existência da sub-camada MAC permite o desenvolvimento da sub-camada superior (LLC) com um certo grau de independência da camada física, no que diz respeito à topologia e ao meio de transmissão propriamente dito. Por outro lado, a própria sub-camada MAC é bastante sensível a esses elementos. Os mecanismos de controle de acesso distribuído apresentam uma forte dependência quanto à topologia da sub-rede de comunicação. Um resultado das diferentes características topológicas é a existência de técnicas de controle de acesso exclusivas a uma determinada topologia. Alguns mecanismos de acesso podem ser implementados em topologias diferentes (barramento e anel) mas esta não é a regra geral. 9.3. Sub-camada de Controle de Enlace Lógico A sub-camada de Controle de Enlace Lógico (LLC) é a camada da arquitetura IEEE 802 que se encarrega de prover às camadas superiores os serviços que permitem uma comunicação confiável de seqüência de bits (quadros) entre os sistemas usuários da rede. A — 4.9 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA especificação da sub-camada LLC prevê a existência de três tipos de serviços básicos, fornecidos à camada superior. Um primeiro serviço oferecido pela sub-camada LLC permite que as unidades de informação sejam trocadas sem o estabelecimento prévio de uma conexão a nível de enlace de dados. Neste tipo de serviço não há, portanto, nem controle para recuperação de erros ou anomalias, nem controle da cadência de transferência das unidades de dados (controle de fluxo). É suposto que as camadas superiores possuam tais mecanismos de modo a tornar desnecessária sua duplicação nas camadas inferiores. Um segundo serviço fornecido pela sub-camada LLC consiste no estabelecimento de uma conexão a nível de enlace de dados, antes da fase de troca de dados propriamente dita, de modo a incorporar as funções de recuperação de erros, de seqüenciamento e de controle de fluxo. O terceiro refere-se a um serviço sem conexão com reconhecimento utilizado em aplicações que necessitam de segurança mas não suportam o overhead de estabelecimento de conexão. 10. ETHERNET E IEEE 802.3 Este capítulo tem por objetivo mostrar o padrão IEEE 802.3 e o principal produto que segue este padrão, a Ethernet. Este é um esquema que está no mercado desde os anos 70 e continua sendo um padrão respeitado até hoje. O produto Ethernet foi desenvolvida conjuntamente pelas empresas Xerox, Intel e Digital. O método de acesso ao meio de transmissão utilizado neste padrão é o CSMA/CD. Este método será descrito a seguir. 10.1. CSMA/CD A técnica CSMA/CD (Carrier Sense Multiple Access with Collision Detection) foi baseada na rede ALOHA no Hawai, que iniciou sua operação em 1970, e que consistia de uma forma de comunicação de um computador central e seus terminais espalhados pelas várias ilhas do arquipélago. Eram utilizadas duas freqüências de rádio: uma para difusão de mensagens do computador central para os terminais e outra para mensagens dos terminais para o computador. Uma vez que existe apenas um transmissor no primeiro canal, nenhuma dificuldade é encontrada. O problema aparece no segundo canal, onde todos os terminais transmitem em uma mesma freqüência. Esta situação é a mesma encontrada em uma rede com topologia em barramento. Uma rede com topologia em barramento apresenta as seguintes características: canal de transmissão eletricamente aberto, transmissão por difusão (nos dois sentidos) e estações de acesso passivas. Uma vez que o barramento é um canal de transmissão aberto, não existe a necessidade de se prover mecanismos para a retirada das mensagens transmitidas, o esvaziamento do meio é feito naturalmente. Isto dificulta a implantação de um serviço de resposta automática, mas as características inerentes a esta topologia permitem a implantação de técnicas de controle de acesso com funções totalmente distribuídas. Uma rede em barramento é comumente chamada de rede em difusão. Um sistema de difusão é aquele no qual uma mensagem transmitida no meio é ouvida, mais ou menos simultaneamente, por todos os nós de comunicação ligados à rede. No método CSMA/CD, uma estação só transmite sua mensagem após “escutar” o meio de transmissão e determinar que o mesmo não está sendo utilizado. Qualquer nó de comunicação pode ouvir qualquer mensagem transmitida, não importando se o destinatário é ele, outro nó, ou ambos. Caso a estação detecte o meio ocupado, ela deve aguardar até que o sinal desapareça para então iniciar a sua transmissão. Pode ocorrer que duas ou mais estações estejam aguardando que o meio fique desocupado e ao detectarem silêncio ambos transmitam suas mensagens. Isto ocasionará uma “colisão” de mensagens das estações ao transmitirem simultaneamente. Existe, então, a necessidade de se estabelecer uma política de compartilhamento deste meio de transmissão entre as várias estações que estão utilizando o barramento. — 4.10 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA Quando duas mensagens são transmitidas ao mesmo tempo, diz-se que elas colidiram e o resultado é que as informações de ambas são corrompidas ou perdidas. Os métodos de acesso para redes com topologia em barramento devem, portanto, atender situações como: evitar o máximo possível a ocorrência de colisões e no caso de ocorrência de colisão, as mensagens perdidas ou danificadas devem ser identificadas para posterior retransmissão. Uma vez que duas ou mais estações tenham transmitido simultaneamente ocasionando colisão de mensagens, um esquema de prioridade deve ser providenciado para evitar que ocorram novas colisões envolvendo as mesmas estações. A maneira de se evitar que a colisão só seja percebida quando uma resposta não for recebida, é “escutar” o meio de transmissão antes (carrier sense) e durante (collision detection) a transmissão da mensagem. Desta forma, a estação emissora poderá identificar se existe outro sinal misturado com o seu e, uma vez detectada a colisão, todas as estações envolvidas param de transmitir e tentam transmitir outra vez após um tempo de espera. Uma vez que a janela de transmissão é relativamente curta, o tempo perdido na transmissão é muito pequeno quando comparado com o tamanho médio das mensagens transmitidas. Para evitar que as mesmas mensagens colidam novamente, o tempo que cada estação aguarda para transmitir novamente é calculado de forma randômica o que não evita que a mensagem desta estação colida com a mensagem de uma outra. Neste caso, o procedimento se repete, mas o tempo de espera para uma nova tentativa é maior que o anterior, penalizando a estação que colide muitas vezes. Após um número específico de tentativas sem sucesso, a estação envia uma mensagem ao seu usuário indicando a impossibilidade de efetuar o serviço solicitado. À medida que a carga da rede cresce, cada equipamento tem a sua taxa de transmissão reduzida, desta forma, com a redução total da carga da rede, as transmissões vão se ajustando gradativamente. Em relação a definição do tamanho mínimo e máximo dos quadros MAC, várias considerações podem ser feitas. Quanto maior o tamanho do quadro maior será a eficiência na utilização do canal, por outro lado se ele for muito pequeno, para haver detecção de colisão, as mensagens devem ter um tamanho mínimo pré-estabelecido, uma vez que o tempo de propagação é finito. Existem outros fatores que tendem a limitar o tamanho do quadro que incluem a limitação do tamanho dos buffers de recepção e transmissão dos quadros e a necessidade de diminuir o retardo de transferência. Este método de acesso foi um dos escolhidos como padrão, e é de fato o método mais difundido em redes locais. Na prática, o método CSMA/CD é muito eficiente, apresentando uma ocupação do meio acima de 90%. O resultado é que o CSMA/CD tem sido escolhido para a maioria dos projetos de redes locais. O principal exemplo de utilização do CSMA/CD é dado pela rede Ethernet que é uma rede local comercializada pela Xerox e utilizada como base para muitos de seus produtos. 10.2. O padrão IEEE 802.3 O padrão IEEE 802.3 (ISO 8802/3) foi projetado para redes em barra utilizando CSMA/CD como método de acesso. O padrão provê a especificação necessária para redes em banda básica operando em 1 a 10 Mbps, e para redes em banda larga operando a 10 Mbps. Ao tratar de redes em banda básica a 10 Mbps, o padrão converge para a especificação da rede Ethernet. Nesta etapa serão detalhadas a sintaxe e a semântica do protocolo de controle de acesso ao meio. A figura 4.2 apresenta o formato do quadro MAC. O campo de preâmbulo possui sete octetos usados para sincronização do transmissor e receptor. Cada octeto é formado pela seqüência 10101010. O campo delimitador de início de quadro, SFD (Start Frame Delimiter), é composto da seqüência 10101011 e indica o início de um quadro. Para que as unidades de dados sejam adequadamente transmitidas e recebidas, cada estação conectada à rede deve possuir um endereço que o identifique de modo único. De um modo ainda mais geral, quando duas ou mais redes são interconectadas, deve-se — 4.11 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA garantir que os endereços dos dispositivos continuem identificando-os univocamente. Para atender a esses requisitos, o projeto IEEE 802 permite que sejam utilizadas duas formas de endereçamento. Na primeira delas é responsabilidade da organização que instala a rede atribuir endereços aos dispositivos nela conectados. Os endereços podem ter 16 ou 48 bits de comprimento. Os endereços manipulados dessa forma são denominados localmente administrados. A segunda forma de endereçamento utiliza endereços de 48 bits e um esquema de endereçamento universal. Neste esquema, blocos de endereços distintos são distribuídos aos fabricantes que responsabilizam-se pela atribuição de endereços aos produtos que fabricam. Esse esquema garante que não haja duplicação de endereços, mesmo quando redes distintas são interligadas. O uso do esquema universal simplifica o gerenciamento porém aumenta o overhead da transmissão. Os fornecedores de produtos de rede devem decidir se usarão uma ou ambas as formas, cabe aos usuários a escolha da forma que irão utilizar em suas redes. Os campos de endereço especificam o(s) endereço(s) de destino do quadro e o endereço da estação que originou o quadro, respectivamente. Cada campo de endereço contém 16 ou 48 bits, como já mencionado. No entanto, devem ter o mesmo comprimento para todas as estações em uma rede particular. O primeiro bit do campo de endereço de destino identifica o endereço como sendo individual (bit = 0) ou de grupo (bit = 1).O endereço de grupo com todos os outros bits restantes iguais a 1 é reservado para o grupo a que todas as estações pertencem, ou endereço de difusão. Um quadro enviado com endereço de difusão deve ser copiado por todas as estações. Qualquer outro grupo que não o de difusão deve ser definido por regras em níveis mais altos de protocolo. Para endereços de 48 bits, o segundo bit é usado para distinguir os endereços administrados localmente (bit = 1) dos administrados globalmente (bit = 0), isto é, endereços universais. O campo de comprimento possui dois octetos cujo valor indica o número de octetos de dados da camada LLC. O campo de dados da camada MAC contém uma seqüência de n octetos, n menor que o número máximo especificado na implementação particular. Conforme já mencionado, um tamanho mínimo de quadro é requerido para o funcionamento correto do método CSMA/CD. Assim, se necessário, o campo de dados deve ser estendido com a incorporação de bits extras (o campo PAD) antes do campo FCS. O campo FCS (Frame Check Sequence) contém um verificador de redundância cíclica (CRC - Cyclic Redundancy Check) de quatro octetos, cujo valor é computado a partir do campo de endereço de destino, inclusive, tomando como base o polinômio gerador: G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x +1 56 bits preâmbulo 8 bits SFD 16 ou 48 bits destinatário 16 ou 48 bits 16 bits remetente comprimento 368 bits - 12 Kbits dados LLC PAD 32 bits FCS Figura 4.2 - Formato do quadro MAC 802.3 11. A REDE LOCAL ETHERNET A rede local Ethernet foi otimizada para troca de dados a altas velocidades entre equipamentos processadores de informação dentro de áreas geográficas de tamanho moderado, permitindo maximizar as comunicações entre uma grande variedade de equipamentos oriundos de diversos fabricantes. A implementação desta rede seguiu as seguintes especificações: os dois níveis mais baixos das camadas do RM-OSI, ou seja, as camadas física e de enlace de dados, bem como as interfaces entre eles; a interface entre a camada de enlace de dados e as camadas de níveis mais altos da arquitetura do sistema; e duas interfaces na camada física que permitem a compatibilidade entre equipamentos utilizados em diferentes implementações da Ethernet. — 4.12 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA A camada física da Ethernet proporciona 10 Mbps em um canal cujo meio de transmissão é o cabo coaxial ou o par trançado. Esta especifica todas as características essenciais da Ethernet, tais como: codificação, temporização, níveis de voltagem e interfaces de compatibilidade. Executa também a recepção dos bits de preâmbulo para sincronismo dos quadros. A transmissão de uma mensagem é iniciada por uma requisição das camadas mais altas da estação. A estação deve passar os dados, endereço de origem e destino, e tipo de formato dos dados para o buffer de armazenamento da camada de enlace de dados, através de respectiva interface. A camada de enlace de dados LLC constrói um quadro, colocando cada componente da informação em seu respectivo campo e então anexa uma seqüência de checagem de quadro para detecção de erro na transmissão. Antes de transmitir um quadro, a camada de enlace de dados tenta evitar colisão avaliando o tráfego do canal pela monitoração do sinal de portadora da camada física. Neste exato instante a camada física está apta para detectar a presença de portadora ou não, nesse caso definida como um sinal elétrico em banda base que está presente no cabo coaxial quando temos um quadro sendo transmitido. A camada física sinaliza para a camada de enlace de dados quando há tráfego detectado no canal. Quando o canal está livre, a camada de enlace de dados passa o quadro a ser transmitido para a camada física através de um fluxo de bits serial. Porém, antes de enviar os bits do quadro, a camada física envia um preâmbulo codificado que permite aos receptores de todos os nós da rede sincronizar seus relógios. A camada física, então, começa a translação dos bits da mensagem em codificação de fase Manchester, gerando um sinal elétrico dentro do cabo coaxial, ou do par trançado, que representa os bits da mensagem. Assim, a camada física do nó transmissor monitora o canal durante todo o tempo da transmissão, ou seja, monitora o nível de energia (nível do sinal elétrico) do canal. Ela sabe de antemão qual é o nível ideal de energia de um canal durante a transmissão. Se acontecer uma colisão, teremos mais energia no canal, sendo logo detectada. Essa detecção de colisão do sinal só pode ser feita por um nó enquanto encontra-se no estado de transmissão. Quando a transmissão for completada sem contenção, a camada de enlace de dados informa às camadas mais altas, aguardando outras requisições de novas transmissões. Quando um nó começa a transmissão, as camadas físicas de todos os nós da rede “sentem” o sinal da portadora e alertam suas respectivas camadas de enlace de dados para que não haja nenhum conflito devido a tentativas de transmissão. Neste ponto, todos os demais nós da rede se transformam em nós receptores. A camada física de cada nó receptor sincroniza-se através dos bits do preâmbulo, recebe estes bits já codificados, e translada a fase codificada do sinal de volta para os dados binários, descartando o preâmbulo. O fluxo de bits é passado para a camada de enlace de dados dos nós de destino. O fluxo de bits é coletado até que o sinal de portadora desapareça, indicando o fim do quadro. A camada de enlace de dados checa o endereço de destino do quadro, logo que o fluxo de bits entra para determinar se está endereçado a este nó ou não. Se estiver, a mensagem é inspecionada para avaliar o alinhamento dos bits e, então é passada para as camadas de protocolos mais altas com uma indicação de sua condição. Se não, o fluxo de bits para a camada de enlace de dados é parado logo depois do preâmbulo e do endereço de destino, e assim, o quadro não é aceito. É possível que dois ou mais nós possam determinar que o canal esteja livre simultaneamente, tentando iniciar uma transmissão. Quando isso ocorre, suas transmissões se sobrepõem, interferindo uma na outra. O resultado denomina-se de colisão. Um nó pode experimentar uma colisão durante sua “janela de colisão” (intervalo de tempo antes que o sinal tenha tido tempo de viajar de um extremo a outro da rede, e voltar), também chamado de slot-time. Uma vez que o tempo da janela de colisão passou, é dito que o nó “obteve o canal”, desde que todos os demais nós detectaram o sinal de portadora neste intervalo de tempo, desistindo assim da transmissão. — 4.13 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA O quadro da Ethernet está especificado com um tamanho mínimo de 64 bytes, por uma razão: o slot-time é aproximadamente o mesmo tempo que leva para transmitir 64 bytes de dados a 10 Mbps sobre a configuração máxima da Ethernet (2,8 Km entre dois nós comunicantes). Assim, quando um dado nó está transmitindo uma mensagem, um outro nó que ainda não detectou o sinal de portadora também começa a transmitir irá ocorrer uma colisão no trajeto. Contudo, o primeiro nó ainda estará transmitindo o mesmo quadro inicial, pois quando ele sentir que houve uma colisão terá passado um slot-time. Portanto, essa é a única maneira do nó associar o sinal de colisão com o quadro que está sendo transmitindo. Poder ocorrer de o nó perceber o sinal de colisão após ter terminado a transmissão de sua mensagem. Neste caso, ele não associará a colisão com a sua transmissão, não retransmitindo o quadro. A esta altura, o quadro só poderá ser retransmitindo por uma requisição das camadas mais altas. Quando ocorre uma colisão durante a transmissão, a camada física do nó transmissor detecta o sinal de colisão. A camada de enlace de dados percebe isso e começa com os procedimentos de contenção. Primeiro, o quadro que está sendo transmitido permanece sua transmissão por um curto intervalo de tempo, denominado jam, para que a colisão seja percebida pelos demais nós que também estiverem transmitindo. Então, a camada de enlace de dados suspende a transmissão e planeja uma tentativa de retransmissão. O período de tempo que um nó espera antes de tentar uma nova transmissão é um múltiplo do slot-time (esse número é selecionado randomicamente por cada nó envolvido). Se mais algumas colisões ocorrerem, o nó irá proceder com uma nova tentativa dentro dos padrões da anterior. Eventualmente, a transmissão é completada com sucesso, ou a tentativa é abandonada por suposição que o canal está desvanecido ou que está com problemas de sobrecarga. Nos nós receptores, os bits de uma colisão são recebidos e decodificados pela camada física como se fossem bits de um quadro, pois o sinal de detecção de colisão não é reconhecido nos nós receptores. A camada de enlace de dados pode distinguir entre um quadro recebido fragmentado, como resultado de uma colisão, e um quadro válido, verificando simplesmente seu tamanho. As características básicas da rede Ethernet são descritas a seguir. Estes parâmetros são descritos com o objetivo de analisar algumas características consideradas relevantes, sem ser exaustivo no assunto. 11.1. Velocidade de Transmissão A Ethernet é considerada como uma rede local que apresenta alta velocidade de transmissão de sinais de dados, devido a combinação de mecanismo de controle de acesso CSMA/CD (proporcionando acesso distribuído a todos os nós), sinalização em banda de base e cabo coaxial de alta performance. Pode-se conectar até 1.024 nós na Ethernet, garantindo uma taxa de transferência de 10 Mbps, sendo que todos os nós apresentam oportunidades iguais de enviar seus quadros, desde que o canal esteja livre. Uma das principais características se traduz na difusão das mensagens sobre o meio físico de transmissão, dando oportunidade de todos os nós ouvirem as mensagens. 11.2. Desempenho A Ethernet não apresenta nenhuma instabilidade quando submetida a cargas pesadas. Mesmo nas horas de maior movimento, o mecanismo de acesso CSMA/CD proporciona capacidade plena distribuída aos nós. 11.3. Qualidade Existem certas implementações que controlam o funcionamento da rede, tornando-a mais segura: • falhas no cabo de transmissão podem ser localizadas através de um temporizador que é acionado quando um quadro é transmitido; e o tempo de cada colisão é anotado; se o defeito for no cabo, o tempo de colisão será constante, sendo assim possível localizar-se — 4.14 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA o ponto que apresenta defeito através de uma relação tempo/velocidade, associadas a fórmulas específicas; os nós e componentes defeituosos podem ser prevenidos para se auto-desligarem da rede em caso de suas transmissões ultrapassarem o tamanho permitido pela Ethernet; tem-se uma controladora monitorando continuamente os aspectos operacionais da rede; por exemplo, após cada transmissão o circuito sensor de colisão é testado. • • 11.4. Custo Os equipamentos da rede Ethernet apresentam um custo relativamente baixo em comparação com o que a rede pode proporcionar: compatibilidade de recursos; flexibilidade de instalação em vários tipos de lugares quer seja num edifício, num campus, num complexo industrial, etc; grande capacidade de incorporação de novos nós no sistema sem com isso perturbar o funcionamento da rede; e, simplicidade em sua configuração e na conexão, uma vez que os cabos podem correr dentro das paredes ou sobre o teto. 12. CONFIGURAÇÃO DA ETHERNET A configuração completa depende principalmente de tipo de cabo sendo utilizado. A tabela 4.1 define algumas características destas configurações. Tabela 4.1 - Configurações Ethernet Parâmetro 10Base-T 10Base-2 10Base-5 par trançado não blindado estrela (hub) cabo coaxial fino cabo coaxial grosso barramento barramento Conector utilizado RJ-45 Comprimento máximo do cabo 100 m conector T + BNC 185 m tranceiver + cabo + DB-15 500 m Comprimento máximo da rede 2500 m (usando um backbone coaxial) 1 925 m 2500m 30 100 não há 0,5 m 2,5 m Tipo de cabo Topologia Número de nós por segmento Distância mínima entre dois nós Técnica de sinalização banda base com codificação Manchester Velocidade 13. 10 Mbps FAST ETHERNET As redes Fast Ethernet representam uma evolução das redes Ethernet no que tange à taxa de transmissão, sendo padronizada através das normas IEEE 802.3u. O quadro Fast Ethernet é o próprio quadro Ethernet. São especificadas três configurações físicas diferentes para as redes Fast Ethernet, correspondentes aos padrões 100BaseTX, 100BaseFX e 100BaseT4. Estas são assim definidas: • 100BaseT4: baseia-se na utilização de um hub ao qual estão conectadas estações através de cabos de par trançado não blindado, com distância máxima de 100 m da estação até o hub; o clock interno é de 25 MHz; • 100BaseTX e 100BaseFX: baseiam-se na utilização de um hub ao qual estão conectadas estações através de cabos de par trançado ou fibra ótica, com — 4.15 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA distância máxima de 100m (TX) ou 400m (FX) da estação até o hub; o clock interno é de 125 MHz. 14. TOKEN RING E IEEE 802.5 Esta técnica é adotada com o padrão IEEE 802.5 e na prática constitui-se na principal opção de implementação do mecanismo de controle de acesso por ficha. A topologia em anel apresenta as seguintes características físicas: transmissão unidirecional e ponto a ponto, estações de acesso ativas, isto é, funcionam como repetidoras, e canal de transmissão fechado. Um mecanismo de controle de acesso para a sub-rede de comunicação estruturada em anel envolve a definição de procedimentos quanto à inserção de mensagem no anel, recepção de mensagem e remoção de mensagem do anel. Este mecanismo é baseado em uma mensagem de controle que, uma vez inicializada, circula entre todos os nós da rede, transportando o direito de transmissão no meio compartilhado. O procedimento de inserção de mensagem num anel com acesso controlado por ficha obedece às seguintes etapas: • a estação que deseja transmitir aguarda a chegada da ficha; • uma vez de posse da ficha, a estação transmite a sua mensagem; • ao final da transmissão, a estação devolve a ficha enviando-a ao próximo nó da rede. A restituição da ficha pode ser feita imediatamente após o término da transmissão da mensagem transmitida. Dependendo das dimensões do anel físico e da velocidade de transmissão usada, a forma de restituição da ficha pode permitir a existência de várias mensagens simultaneamente em trânsito no anel, denominada ficha múltipla, o que oferece um melhor desempenho em situações onde as mensagens são relativamente curtas. Note que o termo múltipla não se refere ao número de fichas e sim ao número de mensagens circulando no anel. Por exemplo, no caso em que o tempo de propagação da mensagem no anel é bem menor que o tempo de transmissão, o fim da transmissão ocorre antes do retorno do início da mensagem transmitida e, no caso de restituição da ficha ao final da transmissão, teremos mais de uma mensagem circulando no anel. A estratégia de restituir a ficha somente após o retorno da mensagem é conhecida como ficha simples e facilita a implantação de funções de supervisão e controle (recuperação de erros, reconhecimento, etc). Uma vez que o início da mensagem passa por todos os nós de comunicação antes da ficha, fica fácil implantar um esquema que avise a todas as estações, previamente, sobre a prioridade de acesso à ficha a ser restituída. A remoção da mensagem do anel é tarefa do nó de comunicação que originou a mensagem. Essa estratégia simplifica a implantação dos serviços baseados na difusão de mensagens e também dos serviços de controle de erros e reconhecimento. As funções de gerência e manutenção da ficha podem ser centralizadas ou distribuídas e devem atender situações tais como a perda ou duplicação da ficha. Um exemplo de token-ring são as redes locais FDDI (Fiber Distributed Data Interface), que se constitui de uma rede de alto desempenho que geralmente é utilizada como backbone para interconectar outras redes locais entre si. As redes FDDI serão vistas mais adiante neste capítulo. 14.1. O Padrão IEEE 802.5 ANSI/IEEE 802.5 (ISO 8802-5) é o padrão para redes em anel utilizando passagem de permissão como método de acesso. O padrão provê a especificação necessária para redes em banda básica operando a 4 ou 16 Mbps, utilizando como meio de transmissão o par trançado. O acesso ao meio físico é controlado pela passagem da permissão no anel. No método ficha simples (single token), depois da transmissão dos quadros, a estação verifica — 4.16 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA se seu endereço retornou no campo SA. Em caso negativo, a estação transmite 0s e 1s até que tenha retornado, só então a estação transmite a permissão para o próximo nó. O protocolo de acesso ao meio permite o uso de prioridades. Todo quadro transmitido, inclusive a permissão, tem um campo designando a prioridade corrente(PPP) e outro para a reserva de prioridade (RRR). Uma estação só pode transmitir um quadro se receber a permissão e se o seu quadro tiver prioridade maior ou igual à designada no campo PPP da permissão. Se a estação receber uma permissão com prioridade maior que a necessária para transmissão de suas mensagens ela faz uma reserva de permissão, através dos bits RRR, solicitando a diminuição da prioridade. É importante notar que o campo de prioridades é sempre verificado, em cada estação do anel, sempre no recebimento de uma permissão e também na passagem de uma mensagem para outro destinatário. O mecanismo de controle de prioridades é relativamente complexo e pode ser visto em detalhes na bibliografia recomendada. De forma a permitir uma maior eficiência na utilização do anel, uma opção multiple token (chamada early-token-release - ETR) foi adicionada ao padrão IEEE 802.5. Neste método é permitido que uma estação envie uma permissão livre assim que terminar de transmitir seus quadros, independente dela ter começado ou não a receber seus quadros de volta. Estações que implementam o mecanismo ETR são compatíveis com as que não possuem essa facilidade, podendo operar conjuntamente. Cada estação da rede possui funções de uma estação monitora de forma a recuperar o anel de vários tipos de erros tais como perda ou duplicação da permissão, sincronização no anel, criação da permissão. A versão atual do padrão IEEE 802.5, especifica como meio de transmissão o par trançado blindado operando a 4 ou 16 Mbps com no máximo 250 repetidores ligados ao anel; ou o par trançado comum operando a 4 Mbps com no máximo 250 repetidores ligados ao anel. Está sendo elaborada pelo IEEE uma revisão deste padrão que inclui o par trançado sem blindagem operando a 16 Mbps. Essa revisão inclui a definição de dois tipos de concentradores, um passivo e outro ativo, que permite a ligação de uma grupo de estações ao meio. A revisão especifica também o uso de um caminho redundante entre concentradores, através de um anel backup. A referência do padrão IEEE 802.5 de 1992 define uma rede token ring como sendo um sistema cuja topologia lógica é em anel e a topologia da fiação é uma estrela. Segundo esta topologia anel-estrela cada estação é conectada a uma TCU (Trunk Coupling Unit). A TCU tem como função prover os meios necessários para inserir uma estação no anel, ou retirá-la, funcionando como um relê de bypass. O concentrador, ponto central da topologia em estrela da fiação, contém um conjunto de TCUs. Os concentradores são ligados em série através de portas de entrada e saída, formando os anéis principal e de reserva. 15. CABEAMENTO ESTRUTURADO Atualmente, é consenso geral que um projeto bem feito do cabeamento em uma rede é o primeiro passo para garantir a implantação de uma rede com sucesso. A escolha correta do tipo de cabo para um segmento em um projeto de uma rede local é uma parte vital para o seu bom funcionamento. Considerando projetos de médio e grande porte, onde várias redes de diferentes topologias e métodos de acesso convivem interligadas, as opções de instalação se tornam a parte mais custosa do projeto. Esforços tem surgido no sentido de organizar e compilar as opções de instalação de forma a fornecer um conjunto básico de configurações para os tipos de instalações mais comuns. Essas configurações definem o que comumente tem sido chamado de cabeamento estruturado. Dentro deste contexto, vários órgãos de padronização, tais como ISO/IEC, EIA/TIA e IEEE, entre outros, além de algumas empresas privadas, têm se preocupado em desenvolver padronizações de sistemas de cabeamento estruturado. Estes sistemas — 4.17 — CAP. 4 — AS REDES LOCAIS PROF. VITÓRIO BRUNO MAZZOLA apresentam como principais vantagens a alta escalabilidade e disponibilidade, facilidade de manutenção e mobilização das estações, entre outras. Os sistemas de cabeamento estruturado são normalmente, organizados segundo uma estrutura hierárquica, que engloba: • • • • • tomada de comunicação: consiste de um espelho e conectores através dos quais os equipamentos dos usuários finais são conectados ao sistema de cabeamento de um prédio; quadros de distribuição: correspondem a sistemas a partir dos quais são distribuídas as tomadas de comunicação para equipamentos de rede ou para outros quadros de distribuição; os primeiros são denominados quadros de distribuição satélite e os segundos quadros de distribuição intermediários; sistema de distribuição horizontal: corresponde ao sistema de distribuição de cabeamento usado na conexão entre tomadas de comunicação e os quadros de distribuição ou entre dois quadros de distribuição, todos existentes em um mesmo andar de um prédio; sistema de distribuição vertical: refere-se ao sistema de distribuição de cabeamento usado na conexão de um quadro de distribuição predial e os quadros de distribuição intermediários, localizados em cada andar deste prédio; sistema de distribuição de campus: engloba o sistema de cabeamento empregado na interconexão do quadro de distribuição do campus e os quadros de distribuição de cada um de seus prédios. — 4.18 — Capítulo 5 RE D E S LO C A I S I N D U S T R I A I S 1. INTRODUÇÃO No capítulo anterior foram apresentados os principais resultados no que diz respeito as redes locais de computadores. A importância das arquiteturas de comunicação para redes locais é, sem dúvida, um resultado que trouxe contribuição significativa em todos os setores de atuação da sociedade, tendo permitido automatizar uma grande quantidade de processos antes realizados por técnicas tradicionais e ineficazes. O desenvolvimento das redes locais de computadores não ocorreu apenas na área da automação de escritório, mas também na automação industrial. Este capítulo vai apresentar os resultados obtidos nesta área. 2. NÍVEIS HIERÁRQUICOS DA INTEGRAÇÃO FABRIL A fabricação de produtos ou o fornecimento de um serviço da parte de uma empresa põe em jogo uma série de atividades e etapas, dedicadas à manutenção e ao aprimoramento do produto ou do serviço. A implementação destas etapas através de processos com maior ou menor grau de automatização fica a critério da empresa. A tendência de informatização crescente das empresas e outras organizações, por um lado, permite acelerar cada processo fazendo parte das atividades de fabricação de um produto ou do oferecimento de um serviço e, por outro lado, cria uma nova necessidade no que diz respeito ao modo como as informações serão trocadas. As redes locais industriais permitem levar em conta as particularidades de um processo de fabricação do ponto de vista das necessidades de comunicação, tais como o compartilhamento de recursos, evolutividade, gerenciamento da heterogeneidade e os diversos tipos de diálogo podendo ocorrer no ambiente industrial. Ainda, a nível de um processo de fabricação, certos requisitos tornam-se fundamentais, envolvendo principalmente os fatores econômicos que o cercam. A garantia de um tempo de resposta médio ou máximo, o débito de informação, a robustez (confiabilidade dos equipamentos e da informação), a flexibilidade (evolutividade e heterogeneidade dos equipamentos) são alguns exemplos destes requisitos. Nos últimos anos, um esforço considerável tem sido realizado no sentido de definir arquiteturas de comunicação que respondam às características e aos requisitos mencionados acima. O exemplo mais evidente de resultados deste esforço é a arquitetura MAP (Manufacturing Automation Protocol), definida por iniciativa da General Motors e baseada no modelo OSI. Por outro lado, considerando que as necessidades de comunicação em cada classe de atividades de uma empresa pode assumir diferente importância, outras propostas de arquiteturas podem ser consideradas, como por exemplo as arquiteturas da classe barramento de campo (fieldbus), mais dedicadas ao chão de fábrica, como o nome sugere. — 5.1 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA O objetivo desta parte do documento, além de apresentar algumas propostas de arquiteturas de redes locais industriais, édiscutir os principais aspectos relacionados com esta classe particular de redes. Dados os requisitos e características apresentados anteriormente, um ponto que deve ser levantado como conseqüência disto é a necessidade de descentralização das funções de comunicação a serem implementadas. Este aspecto pode ter importância fundamental na escolha das soluções de comunicação a serem adotadas a nível de uma indústria. As redes do tipo ponto-a-ponto, por exemplo, são um exemplo típico de centralização das funções de comunicação, uma vez que os equipamentos compondo os nós da rede fazem papel de comutadores das mensagens transmitidas entre dois nós que não estejam ligados diretamente. Soluções do tipo rede de difusão são largamente adotadas levando em conta as possibilidades de descentralização da comunicação. É preciso assumir a realidade de que não existe uma rede única que poderia corresponder às necessidades de todas as classes ou níveis de atividade existentes em uma fábrica, a solução sendo, de fato, a adoção de várias redes interconectadas, cada rede servindo de suporte à comunicação no contexto de uma ou diversas atividades. 3. AS REDES NA EMPRESA Já há algum tempo vem se verificando uma tendência para a descentralização da inteligência e da capacidade decisória dos componentes de sistemas de automação industrial. Estes sistemas são decompostos em diferentes níveis hierárquicos de automação, cujos elementos inteligentes são interligados entre si através de redes industriais, conforme mostrado na figura 5.1. A tendência desta estruturação hierárquica é se aproximar cada vez mais do processo, de forma a obter-se cada vez mais subsistemas independentes e dotados de uma inteligência local, sem no entanto perder as vantagens de uma supervisão e condução central do sistema como um todo. Esta descentralização traz consigo uma série de vantagens técnicas, tais como a diminuição da sobrecarga de processamento da unidade central, entre outras. Cada nível da hierarquia fabril é representado por um conjunto de ações e processamentos que possuem requisitos de comunicação diferentes. A característica predominante nos níveis hierárquicos inferiores é a transferência de mensagens curtas com alta freqüência, entre um número elevado de estações. Nos níveis hierárquicos superiores há a predominância de transferência de mensagens longas entre um número menor de estações e a uma freqüência consideravelmente mais baixa, este aspecto sendo ilustrado pela figura 5.2. Deste modo, não existe um sistema de comunicação único capaz de atender a todas as aplicações existentes na organização industrial, mas sim uma série de sub-redes locais adequada aos requisitos de comunicação de cada nível. As sub-redes serão conectadas à linha tronco ("Backbone") através de "Gateways", "Bridges" e "Routers" de modo que todas as estações possam ser acessadas, formando um sistema de comunicação coêso que atenda toda a fábrica, conforme os preceitos da filosofia CIM (Computer Integrated Manufacturing). 4. ASPECTOS DA COMUNICAÇÃO EM AMBIENTE INDUSTRIAL A maioria das redes de comunicação existentes no mercado procuraram atender a demanda existente na automação de escritórios. A grande maioria destas redes são baseadas no protocolo CSMA/CD (Carrier Sense Multiple Access with Collision Detection), com o qual se iniciaram os desenvolvimentos de redes locais (LANs) e que será estudado mais adiante. A comunicação de dados em ambiente industrial apresenta, no entanto, características e necessidades que tornam a maioria das redes para automação de escritório inadequadas. — 5.2 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Administração Corporativa SISTEMA DE COMUNICAÇÃO Planejamento (Factory) CAD, CAE, CAP, CAPP, CAQ, etc... MAP, TOP Área (Shop) MAP-EPA, Mini-MAP FMS Célula (Cell) FMC Fieldbus Subsistema (Subsystem) Torno, Manipulador, Centro de Usinagem, etc... Componente (Component) S A S A S A S A Fieldbus Tempo-Real Motores, Chaves, Relés, etc... Figura 5.1 - As redes de comunicação e o modelo CIM Tempo entre Vida Útil dos Administração Corporativa Transmissões Dados Planejamento Área Célula Subsistema Componente Número de Quantidade Estações de Quadros Figura 5.2 - Características da comunicação em CIM Algumas destas características são: • ambiente hostil para operação dos equipamentos (perturbações eletromagnéticas, elevadas temperaturas, sujeira, etc); • a troca de informações se dá, na maioria das vezes entre equipamentos e não entre um operador e o equipamento; • os tempos de resposta e a segurança dos dados são críticos em diversas situações; • uma grande quantidade de equipamentos pode estar conectada na rede. — 5.3 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS 5. PROF. VITÓRIO BRUNO MAZZOLA CARACTERÍSTICAS BÁSICAS DAS REDES INDUSTRIAIS Os seguintes aspectos tecnológicos básicos diferenciam as redes locais para aplicações industriais das demais redes: 5.1. Tempo de acesso ao meio físico Como foi dito na seção anterior, as redes de difusão apresentam aspectos interessantes que as tornam uma solução bastante adequada aos requisitos de comunicação industrial. Um problema importante na utilização das redes de difusão é o acesso ao meio, pois, uma vez que vários equipamentos deverão trocar informações num dado instante, a decisão de quem vai ter o direito de acesso ao meio para o envio de uma mensagem não é uma tarefa evidente, como será visto nesta seção. Do ponto de vista da programação distribuída, o meio de transmissão das redes locais constitui um recurso compartilhado entre as estações a ela conectadas. Os métodos de definição de direito de acesso utilizados nas redes locais são os denominados protocolos de acesso ao meio. Com relação ao seu comportamento temporal, podemos organizar os protocolos de acesso ao meio em duas principais classes: os protocolos determinísticos e os não determinísticos. Os protocolos de acesso determinísticos são caracterizados pela concessão do direito ao acesso independentemente das necessidades de transmissão de cada nó da estação. Dentre os protocolos conhecidos desta classe, podemos destacar o protocolo TDMA (Time Division Multiple Access), onde o acesso é dado a cada estação considerando faixas de tempo bem definidas. Este método apresenta um baixo desempenho, uma vez que muito tempo pode ser perdido no caso de estações que não tenham mensagens a transmitir. Outro exemplo de protocolos de acesso determinísticos são aqueles baseados na passagem de ficha (token passing), onde uma ficha correspondendo ao direito de transmissão é passada de estação a estação da rede. Ao receber a ficha, uma estação que não tenha mensagens a transmitir repassa a ficha à estação seguinte na lista de estações compondo a rede. Vamos analisar alguns destes protocolos mais adiante nesta seção. Os protocolos de acesso não determinísticos, podem ser também denominados protocolos de competição, uma vez que as estações querendo transmitir vão competir pelo meio de transmissão. Estes protocolos são mais adaptados às condições de transmissão da rede local. Um exemplo desta classe são os protocolos de tipo CSMA, cujas variações serão estudadas nos parágrafos a seguir. 5.2. Confiabilidade Em aplicações industriais onde são transmitidos muitos códigos de comando, leitura de medidores e comando de atuadores, um erro de um Bit qualquer pode ter conseqüências desastrosas. A transferência de programas para máquinas de Comando Numérico, por exemplo, exige um sistema altamente confiável, pois são transmitidos códigos de comando cuja mínima alteração pode produzir danos de elevado custo. Desta forma, redes industriais de comunicação tem que oferecer uma elevada confiabilidade. Para aumentar esta confiabilidade nas mensagens transmitidas, normalmente é usado um teste cíclico de redundância (CRC - Cyclical Redundance Check). Define-se como Distância de Hamming (Hd) de um CRC o número mínimo de Bits que devem estar alterados em uma mensagem para que o CRC não consiga detectar esta mudança. Em ambientes industriais é usualmente recomendada uma Distância de Hamming de pelo menos 4. Em sistemas que necessitem de uma operação contínua, pode ser utilizado um meio de transmissão e estações de controle redundantes. — 5.4 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS 5.3. PROF. VITÓRIO BRUNO MAZZOLA Requisitos do meio ambiente Devido às características do ambiente industrial, a presença de perturbações eletromagnéticas, provocadas principalmente pelos acionamentos de motores elétricos de grande porte ou outras fontes chaveadas (estações de solda, conversores estáticos,etc), não pode ser desprezada na escolha de uma rede de comunicação. Para a definição do meio físico de transmissão e do protocolo de comunicação, estas características devem ser consideradas. O meio de transmissão deve possuir uma boa resistência mecânica e deve estar elétricamente isolado. O meio físico a ser adotado não depende apenas de aspectos técnicos mas também (e muito especialmente no chão de fábrica) do aspecto de custo. Cabos coaxiais são menos afetados por perturbações eletromagnéticas do que o par trançado. No entanto, o custo do cabo coaxial é consideravelmente superior ao do par trançado. Futuramente, a adoção de fibras óticas poderá vir a ser a melhor solução tanto do ponto de vista técnico quanto econômico. Atualmente ainda há dificuldades na realização de bifurcações com este meio físico, necessárias para as conexões em T usadas em redes com topologia em barramento, de modo que as fibras óticas são mais utilizados em sistemas com topologia em estrela ou anel. A realização de bifurcações tem alcançado melhores resultados adotando acopladores ativos (com eletrônica adicional para conversão do sinal ótico em elétrico e vice-versa nos pontos de derivação), o que torna a solução antieconômica para o nível de chão de fábrica. Com fibras óticas, no entanto, pode-se trabalhar com freqüências da ordem de 100 MBaud, o que permitiria uma melhoria de performance do sistema. Diversos trabalhos de pesquisa vem sendo realizados no sentido de resolver os problemas técnicos existentes. A figura 5.3 apresenta uma comparação sumária entre os três tipos de meio. 5.4. Tipo de mensagens e volume de informações Nos níveis hierárquicos superiores de automação (por ex. a nível de planejamento) são freqüentemente trocados telegramas de vários KByte, que requerem tempos de transmissão de alguns segundos até vários minutos. Nas aplicações mais próximas ao processo, normalmente são enviadas mensagens curtas, tais como: Sensibilidade a perturbações Par Trançado (assíncrono) Par Trançado (síncrono) Cabo Coaxial Fibra Ótica Custo Distância Figura 5.3 - Meios de transmissão — 5.5 — Taxa de Transmissão CAP. 5 — R EDES LOCAIS I NDUSTRIAIS • • • • PROF. VITÓRIO BRUNO MAZZOLA ligar ou desligar uma unidade; fazer leitura de um sensor / medidor; alterar o estado de um atuador; verificar o estado de uma chave ou relé. Estas operações podem ser feitas normalmente com um único código acrescido dos respectivos dados, quando existirem. Como conseqüência, pode haver uma baixa taxa de transmissão de dados com um elevado número de mensagens transmitidas. Para dispositivos programáveis encontrados no ambiente industrial (CLPs, CNCs, RCs, etc), normalmente é necessário o envio de programas no inicio da produção de um lote. Estes programas raramente ultrapassam 10 KBytes em tamanho e dificilmente são utilizados mais de 3 programas por unidade de fabricação durante um turno de trabalho. 6. PROJETOS DE PADRONIZAÇÃO DE REDES INDUSTRIAIS As exigências de comunicação entre unidades para a integração flexível dos sistemas de automação, descritas nos itens anteriores, evidenciam a necessidade de uma especificação de redes locais para aplicações industriais diferente daquela adotada em automação de escritório. Existem diversas redes proprietárias para ambiente fabril, desenvolvidas por grandes empresas e que normalmente utilizam um protocolo específico desenvolvido pelo próprio fabricante. Estas redes não permitem a interligação de equipamentos de outros fabricantes. Desta forma o usuário fica na total dependência de um único fornecedor. A arquitetura das redes de comunicação industrial deve integrar sistemas heterogeneos de diferentes fabricantes, suportando tanto a operação de chão de fábrica quanto as funções de apoio à produção. A definição de padrões de protocolos de comunicação e a sua adoção por diferentes fabricantes deverá permitir a interconexão e até mesmo a intercambiabilidade das várias unidades de processamento. Neste caso, equipamentos produzidos por fabricantes diferentes podem ser facilmente incorporados à instalação, simplesmente conectando-os ao sistema de comunicação. Entre as diversas iniciativas para padronização para redes industriais, podemos destacar: Projeto PROWAY, Projeto MAP (incluindo MAP/EPA e MINI-MAP), projeto TOP e Projeto FIELDBUS. 6.1. Projeto PROWAY Em 1975 um grupo da IEC (International Electrotechnical Comission) iniciou seus trabalhos para a normalização de redes de comunicação para controle de processos. Destes trabalhos resultou a proposta PROWAY (Process Data Highway). O Proway passou por diversas fases (Proway A, B e C) em função dos trabalhos de padronização internacionais. Proway A e B utilizavam o protocolo HDLC da ISO na camada de enlace, adequando-se assim apenas a sistemas tipo mestre/escravos. Proway C adotou a técnica de token-passing. Sua arquitetura é composta de 4 camadas do modelo de referencia ISO/OSI, denominadas "Line" (camada física), "highway" (camada de enlace), "network" (camada de rede) e "application" (camada de aplicação). 6.2. Projeto MAP O projeto MAP ("Manufacturing Automation Protocol") foi uma iniciativa da General Motors, iniciada em 1980, com a finalidade de definir dentro do modelo OSI um ambiente de comunicação voltado para a automação da manufatura. MAP define mecanismos de comunicação entre equipamentos de chão de fábrica, tais como Robôs, CNCs, CLPs, terminais de coleta de dados, Computadores, etc. Esta proposta encontra boa aceitação a nível mundial por parte de usuários e fornecedores de bens de automação, mas ainda esta sendo questionada pelos altos custos de cada estação. — 5.6 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Para aplicações voltadas ao controle da manufatura com tempos críticos foi definida a versão MAP/EPA (Enhanced Performance Architecture) para conseguir tempo de resposta menores. A Versão MAP/EPA apresenta para algumas estações da rede a arquitetura MAP completa (7 camadas) e uma arquitetura simplificada com as camadas 1,2 e 7 do modelo OSI como caminho alternativo para satisfazer os requisitos de tempo. A versão mais simplificada é conhecida como MINI-MAP e implementa somente as camadas 1, 2 e 7 do modelo OSI. O projeto MAP será discutido mais detalhadamente mais adiante. 6.3. Projeto TOP Com objetivos semelhantes ao MAP, foi desenvolvido pela BOEING a partir de 1983 o projeto TOP ("Technical and Office Protocol"), voltado à redes para automação de áreas técnicas e administrativas. Também é baseado no modelo OSI de 7 camadas e tem como finalidade fornecer aos usuários os seguintes serviços: correio eletrônico, processamento de textos, acesso a base de dados, transferência de arquivos, CAD/CAM distribuído, troca de documentos, transações bancárias, entre outros. A partir de 1986 os projetos MAP e TOP passaram a ser coordenados conjuntamente, resultando no projeto MAP/TOP. 6.4. Projeto FIELDBUS O Fieldbus é uma solução de comunicação para os níveis hierárquicos mais baixos dentro da hierarquia fabril, interconectando os dispositivos primários de automação instalados na área de campo (Sensores, atuadores, chaves, etc) e os dispositivos de controle de nível imediatamente superior (CLPs, CNCs, etc). Ainda estão sendo definidos os padrões para o Fieldbus. Os principais grupos envolvidos nos trabalhos de padronização são: • Avaliadores: IEC, ISA, EUREKA, NEMA • Proponentes: PROFIBUS, FIP, ISA-SP50 O Fieldbus e suas principais propostas de padronização serão discutidos em detalhe mais adiante. 7. O PROJETO MAP O projeto MAP tem como mérito a apresentação de uma proposta concreta para a comunicação no ambiente de fábrica, estabelecendo as condições necessárias para a integração dos componentes de automação em um ambiente integrado segundo a filosofia CIM (Computer Integrated Manufacturing). Ao contrário do que se propunha inicialmente, hoje está claro que não existe uma solução única de rede que atenda aos requisitos de todos os níveis de comunicação em uma fábrica. O projeto MAP nasceu no início dos anos 80 por iniciativa da GM (General Motors). Na época, apenas 15% dos equipamentos programáveis de suas fábricas eram capazes de se comunicar entre si. Além disso, os custos de comunicação eram muito elevados, avaliados em 50% do custo total da automação, isto devido às conexões especiais necessárias entre cada equipamento. Ainda, cada nova instalação ou expansão no sistema existente estava associada a uma despesa não desprezível. Considerando que, na época, estava previsto que a quantidade de equipamentos programáveis deveria sofrer uma expansão de 400 a 500% num prazo de 5 anos, o problema de comunicação tornou-se, efetivamente, uma prioridade a nível da empresa. Diante do grave problema, a decisão deveria ser tomada no sentido de definir a solução, cujas opções eram as seguintes: — 5.7 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS • • • PROF. VITÓRIO BRUNO MAZZOLA continuar a produção utilizando máquinas programáveis isoladas (stand-alone) de uma variedade de fabricantes e solucionar o problema da maneira como vinha sendo feito; basear os processos de produção na aquisição de equipamentos de um único fabricante; desenvolver uma proposta padronizada que permitisse interconectar todos os equipamentos da planta. Dadas as perspectivas de evolução e o grande desenvolvimento dos equipamentos de automação, a primeira proposta era, naturalmente, inviável. Com relação à segunda proposta, era (e continua sendo) impossível encontrar um único fabricante capaz de fornecer todos os equipamentos necessários (robôs, máquinas de comando numérico, CLPs, sensores, etc) ao processo de fabricação. A solução viria, então, pela terceira opção, que foi o ponto de partida para o projeto MAP, através da criação de uma força tarefa reunindo profissionais das diversas divisões da GM, cujo objetivo inicial era investigar a possibilidade de utilização do modelo de referência OSI como base para a proposta padronizada da empresa. Um ano mais tarde, em 1981, a GM uniu-se a outras empresas -Digital Equipment Corporation (DEC), Hewlett-Packard (HP) e IBM -definindo a solução do problema baseada na utilização de uma arquitetura de comunicação para rede local baseada no modelo a sete camadas do OSI. Uma primeira preocupação deste grupo de trabalho foi a seleção de alguns dos padrões de protocolo definidos para o modelo OSI que pudessem ser adotados na arquitetura MAP. A partir dai o projeto foi ganhando corpo e adesões por parte de outras empresas, tornando-se uma realidade nos anos 90 e dando origem a outras propostas de arquiteturas de comunicação orientadas a outros níveis das atividades da empresa. 7.1. A arquitetura MAP Uma vez adotado o modelo OSI como referência para a arquitetura de comunicação, o problema era selecionar as propostas a serem implementadas a nível de cada camada. Para as camadas 1 e 2, foram selecionados, respectivamente, as normas IEEE 802.4 (barramento com ficha) e IEEE 802.2 (LLC). Do ponto de vista da camada Física, foi escolhido o suporte de comunicação em banda larga (broadband). A escolha foi baseada nas razões seguintes: • • • • possibilidade de definição de vários canais de comunicação sobre um mesmo suporte de comunicação, o que permitiria a coexistência de várias redes, minimizando as modificações de cablagem durante a transição para MAP; permitiria a troca de outros sinais, como voz e imagem para determinadas aplicações, tais como a supervisão, o circuito fechado de TV, a teleconferência, etc; broadband é parte da norma IEEE 802.4 e estava sob estudos suportar o padrão IEEE 802.3 (CSMA/CD); a GM já possuía muitas instalações operando em broadband. As razões que conduziram à escolha do barramento com ficha foram as seguintes: • • • • inicialmente, era o único protocolo suportado em broadband; muitos equipamentos programáveis já eram providos com o protocolo de enlace suportado por broadband e IEEE 802; a possibilidade de implementar um esquema de prioridades de mensagens; em caso de falhas físicas, mensagens de alta prioridade poderiam ser enviadas num tempo limitado. — 5.8 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Apesar das razões expostas acima para a escolha do barramento com ficha, esta foi uma escolha relativamente debatida, principalmente porque a arquitetura MAP é a única a adotá-la e os circuitos integrados implementando IEEE 802.4 são utilizados exclusivamente para esta arquitetura. Além disso, outras propostas tinham sido adotadas pelos grandes fabricantes: Ethernet (IEEE 802.3) no caso da DEC e IEEE 802.5 no caso da IBM. A nível da camada de Enlace, embora as funções associadas sejam principalmente a detecção e recuperação de erros, optou-se por um protocolo que não implementasse estes serviços, o LLC tipo 1, deixando estas funções a cargo dos níveis superiores (mais particularmente, o nível Transporte). O serviço de Rede é sem conexão, cada mensagem sendo roteada individualmente através da rede. A norma ISO 8348, adotada a este nível, permite definir um conjunto de regras de endereçamento através da rede. O protocolo de roteamento utilizado aqui foi definido pelo projeto MAP e é atualmente normalizado na ISO sob o número 9542. A nível do Transporte, foi adotada a classe 4 do protocolo de Transporte da ISO (TP4, ISO 8072/73), orientado à conexão, com controle de erros. O serviço de Transporte oferece, então, um canal de comunicação confiável, sem perdas, erros, nem duplicação de mensagens. TP4 assegura ainda as funções de fragmentação e montagem de mensagens, o que permite que as mensagens trocadas a este nível sejam de qualquer dimensão. A norma ISO 8326/27 foi adotada para a camada de Sessão, assegurando as funções de comunicação full-duplex e de resincronização. Na camada de Apresentação, os problemas de representação de dados são resolvidos com a adoção da sintaxe abstrata ASN.1, que serve de linguagem comum às diferentes formas de representação dos dados, características de cada equipamento. Dentre as funções oferecidas aos processos de aplicação, foram definidas, na camada de Aplicação, as seguintes normas: • • • • MMS, para a troca de mensagens entre equipamentos de produção (que será visto em detalhes mais a frente); FTAM, para o acesso e a transferência de arquivos; ROS, para a gestão de nomes (diretório); funções de gerenciamento de rede, para a gestão dos recursos, medição de desempenho e modificação dos parâmetros da rede. A figura 5.4 apresenta as escolhas efetuadas a nível do projeto MAP, incluindo as versões EPA e Mini-MAP. Como a partir da versão 3.0 ocorreu uma unificação dos projetos MAP e TOP, a figura apresenta também as normas adotadas para a arquitetura TOP. 7.2. A arquitetura MAP-EPA Dadas as necessidades específicas de cada nível hierárquico de uma empresa, verificou-se que a proposta MAP original não permitia cobrir todos os níveis considerados, sendo mais adequada aos níveis superiores. Uma razão principal disto é que, apesar da excelente qualidade dos serviços oferecidos, a arquitetura a sete camadas oferece um overhead que passa a ser indesejável nos níveis mais baixos das atividades de uma empresa. Uma primeira solução a este problema foi a definição de uma versão simplificada da arquitetura MAP, denominada MAP-EPA (Enhanced Performance Architecture). A figura 5.5 apresenta a proposta MAP-EPA. Esta proposta foi baseada na definição de duas pilhas de protocolos, a pilha normal Full-MAP e a pilha MAP-EPA, desprovida das camadas de Rede, Transporte, Sessão e Apresentação. Do ponto de vista das camadas baixas, o protocolo IEEE 802.4 continuava sendo adotado, porém sobre um suporte de transmissão em banda de base (baseband) a 5 Mbit/s. — 5.9 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS Espec. Camadas Aplicação PROF. VITÓRIO BRUNO MAZZOLA TOP MAP ACSE, FTAM VTP MAP-EPA MiniMAP MMS, FTAM, ROS Apresentação ISO 8822 - ASN.1 Sessão ISO 8326 e 8327 Transporte ISO 8072 e 8073 Classe 4 Rede ISO 8348 s/ conexão VAZIO Enlace Física LLC 802.2 Tipo1 MAC 802.3 CSMA/CD Banda Base (10 Mbps) LLC 802.2 Tipos 1 e 3 MAC 802.4 LLC 802.2 Tipo 1 MAC 802.4 Token Bus Banda Larga (10 Mbps) Banda Base (5 Mbps) Figura 5.4 - Especificação MAP/TOP 3.0 MAP EPA Aplicação Aplicações tempo-real Apresentação Sessão Transporte Rede Enlace LLC 802.2 Tipos 1 e 3 MAC 802.4 Token Bus Física Figura 5.5 - Arquitetura MAP-EPA Nesta arquitetura, um processo de aplicação tem a opção de enviar seus dados através da pilha normal ou, em casos onde o requisito seja um tempo de resposta rápida, pela pilha MAP-EPA. Evidentemente, o fato das camadas 3 a 6 estarem ausentes acarreta a perda dos serviços oferecidos por estas. 7.3. A arquitetura Mini-MAP Uma terceira opção relacionada com a norma MAP foi a arquitetura Mini-MAP, baseada igualmente na supressão das camadas 3 a 6 para eliminar o overhead dos protocolos daquelas camadas. A arquitetura Mini-MAP é composta unicamente do segmento simplificado de MAP-EPA, e foi assim definida para evitar o alto custo das pilhas de protocolos paralelas de MAP-EPA (figura 5.6). Esta nova proposta era dedicada aos níveis mais baixos, permitindo a comunicação em aplicações mais simples como, por exemplo, entre sensores inteligentes. — 5.10 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA O fato de não possuir a camada de Transporte fez introduzir um protocolo de Enlace mais sofisticado que o da proposta MAP, o LLC tipo 3, datagrama com reconhecimento. 7.4. Os serviços de mensagem industrial (MMS) MMS (Manufacturing Message Services) foi normalizado na ISO como sendo o conjunto de serviços de comunicação oferecido às aplicações industriais, particularmente para viabilizar, dentro do ambiente OSI, as interações entre equipamentos de produção programáveis. MMS é o resultado dos trabalhos realizados no contexto do projeto MAP, para a definição de um conjunto de serviços de comunicação orientados às aplicações industriais. A primeira proposta de MMS/RS-511 foi apresentada em junho de 1985, na forma de um documento organizado em duas partes: • • Manufacturing Message Services: Definição dos Serviços; Manufacturing Message Specification: Especificação do Protocolo. Atualmente, MMS tornou-se norma internacional, fazendo parte da camada de Aplicação da versão 3.0 de MAP, publicada em agosto de 1988. Os dois documentos mencionados acima apresentam, de forma geral, como os serviços e o protocolo podem ser aplicados no contexto da utilização de um equipamento de produção genérico, sem levar em conta as particularidades de uma classe de equipamentos específica. Para complementar a norma existente, outros documentos foram e estão sendo produzidos, denominados normas de acompanhamento ("Companion Standards"), cujo objetivo é levar em conta as especificidades de classes de equipamentos tais como os robôs, as máquinas de comando numérico, os sistemas de visão, os controladores lógicos programáveis e os sistemas de controle de processos. O objetivo de MMS é oferecer serviços de comunicação que permitam a um sistema aberto (no sentido OSI) acessar os recursos existentes em outros sistemas abertos conectados à rede de comunicação. Eles permitem cobrir grande parte das necessidades de comunicação entre sistemas de produção, como, por exemplo, o carregamento remoto de programas, o controle remoto de um equipamento, a elaboração de relatórios de produção, etc. Os programas escritos pelos programadores de aplicação vão acessar (direta ou indiretamente) as primitivas de serviço MMS, que vão manipular objetos virtuais representando os recursos reais disponíveis num equipamento de produção distante. Aplicação Conexão com LSAPs LLC Tipos 1 e 3 MAC 802.4 Banda Base (5 Mbps) Figura 5.6 - Arquitetura Mini-MAP — 5.11 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Os objetos MMS Os usuários dos serviços MMS são os processos de Aplicação (APs - Application Processes) executando num equipamento de produção ou num computador de supervisão. A comunicação entre dois APs através dos serviços MMS é realizada segundo um modelo Cliente-Servidor, onde o usuário Cliente é aquele que requisita operação sobre os recursos disponíveis num equipamento de produção distante, este sendo modelizado por um usuário Servidor. O objeto de base definido em MMS é o Dispositivo Virtual de Produção ou VMD (Virtual Manufacturing Device), que representa, no contexto dos serviços MMS, um equipamento real de produção. Todo processo de aplicação modelizado por um Servidor MMS possui, no mínimo, um objeto VMD (figura 5.7). O principal componente do VMD é a Função Executiva, responsável pela gestão de acesso aos diferentes recursos do equipamento considerado, tais como memória, processadores, portas de E/S, etc... O VMD define uma classe de objetos denominados domínios (Domains), que permitem reagrupar os programas e os dados necessários à execução do equipamento considerado. Estes programas e dados podem ser definidos de maneira estática ou dinâmica por meio dos serviços MMS. A execução de programas é gerenciada através de objetos denominados Invocação de Programa (Program Invocation), que podem, também, ser criados estática ou dinamicamente. Um operador humano pode se comunicar com um equipamento de produção, fazendo a entrada e saída de dados graças à definição de um objeto Estação Operador, sendo que um VMD pode gerenciar uma ou mais estações de operador. A norma prevê, ainda, objetos permitindo gerenciar a sincronização de processos e o acesso concorrente a recursos, que são os objetos Semáforos; para a detecção e o tratamento de eventos, os objetos Condição de Evento, Ação de Evento e Inscrição de Evento; e para a produção de relatórios de produção, os objetos Jornais. Foram definidos também objetos denominados variáveis (variables), que podem ser alocados dentro de um VMD. A cada classe de objetos MMS é associada uma classe de serviços responsáveis da sua manipulação, sob demanda de um usuário Cliente remoto. Os serviços MMS A norma MMS define 84 serviços, dos quais 3 não confirmados, organizados em 9 classes distintas. Os serviços de Gestão de Contexto são utilizados para o estabelecimento e a manutenção do diálogo entre usuários MMS, nenhum serviço podendo ser ativado sem que o contexto tenha sido estabelecido, suportado por uma associação. O serviço Initiate é o serviço definido para o estabelecimento da associação, este sendo mapeado diretamente sobre o serviço A_ASSOCIATE do ACSE. Esta classe de serviços reagrupa, ainda, serviços para a terminação negociada do contexto (Conclude), a liberação abrupta (Abort). Uma requisição de serviço pode ser anulada por um usuário MMS cliente, através da ativação do serviço Cancel. VMD ... ... Função Executiva Figura 5.7 - Estrutura geral de um VMD — 5.12 — ... Objetos MMS Estação Operador 1 Estação Operador N CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Ainda, o fornecedor de serviço MMS pode sinalizar a ocorrência de um erro de protocolo através do envio de uma primitiva de serviço (indicação) Reject, informando o tipo de erro detectado. Os serviços de Suporte de VMD permitem a um usuário Cliente MMS obter informações de estado sobre um objeto VMD, assim como sobre os objetos gerenciados por este. As informações possíveis de serem obtidas são: • • • Estado lógico do VMD (Status); Lista dos objetos do VMD (GetNameList); Características do equipamento de produção (Identify). Finalmente, é ainda possível modificar os identificadores dos objetos de um VMD, isto através do serviço Rename. Os serviços de Gestão de Domínio são utilizados para o carregamento e armazenamento à distância de programas e dados de um equipamento de produção. Estas operações são baseadas na realização de duas seqüências de serviços MMS, a primeira para o carregamento remoto, DownLoadSequence, a outra para a recuperação do conteúdo de domínios, UpLoadSequence. Um usuário MMS ativa a seqüência DownLoad para pedir a criação e o carregamento de informações para um domínio. Esta seqüência é caracterizada por três etapas: • • • inicialização da seqüência e criação de um domínio (InitiateDownLoadSequence); transferência das informações para o domínio (DownLoadSegment); terminação da seqüência (TerminateDownLoadSequence). Os serviços de Gestão de Programa permitem a um usuário MMS manipular, de maneira remota, os programas num VMD, para a criação, eliminação e controle de execução. As operações podendo ser efetuadas sobre um objeto Invocação de Programa são as seguintes: • • • criação e eliminação (CreateProgramInvocation e DeleteProgramInvocation); controle de execução de um programa (Start, Stop, Resume, Reset e Kill); obtenção de atributos (GetProgramInvocationAttributes). Os serviços de Acesso às Variáveis permitem a um cliente MMS definir e acessar variáveis definidas num VMD de um servidor MMS. O acesso às variáveis reais de um equipamento é possível graças àdefinição de um conjunto de objetos variáveis MMS, manipulados pelos 14 serviços definidos nesta classe. Os serviços Read e Write, por exemplo, permitem acessar, respectivamente em leitura e escrita, uma variável. Existem ainda serviços permitindo definir os diferentes objetos associados às variáveis, tais como DefineNamedVariable, DefineScatteredAccess, DeleteVariableAccess, DefineNamedVariableList, DeleteNamedVariableList, DefineNamedType e DeleteNamedType. Os serviços de Gestão de Semáforos permitem gerenciar o acesso concorrente aos recursos compartilháveis de um VMD. Os objetos associados a esta classe são os Semáforos, organizados em duas classes específicas: • • os Semáforos Banalizados (Token Semaphores), que gerenciam um número N de fichas de mesmo tipo; os Semáforos Etiquetados (Pool Semaphores), que gerenciam uma lista de fichas etiquetadas, cada uma associada a um recurso particular do VMD. Um usuário MMS pode requisitar o acesso a um recurso do VMD através do serviço TakeControl, indicando o semáforo responsável por aquele recurso. Um aspecto interessante desta classe de serviços é a existência de um modificador — 5.13 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA AttachToSemaphore, que permite condicionar a execução de um serviço MMS à posse de um semáforo. Esta classe oferece, ainda, serviços para a liberação, a criação e a obtenção de informações de estado sobre os objetos semáforo. Os serviços de Gestão da Estação de Operador implementam a comunicação, através de uma estação de operador, com um VMD. Eles permitem, particularmente, a entrada e a obtenção de dados relativos à execução do VMD considerado. Os serviços de Gestão de Eventos oferecem facilidades para um Cliente MMS definir e tratar a ocorrência de eventos num VMD. O tratamento de eventos é associado à definição de três objetos: • • • as Condições de Evento, que representam as précondições associadas a um dado eventos num VMD (modificação de uma variável, fim de execução de um programa, etc); as Ações de Evento, que representam o que deve ser feito quando um evento é detectado (execução de um serviço MMS, por exemplo); as Inscrições de Evento, que permitem associar uma Condição de Evento a uma ou mais Ações de Evento. Um usuário MMS é notificado da ocorrência de um evento através do serviço EventNotify, esta notificação podendo ser reconhecida pelo usuário através do serviço AcknowledgeEventNotification. A ocorrência de um evento pode servir a ativar a execução de um serviço MMS, isto sendo feito através do modificador AttachToEvent. Nesta classe, tem-se, ainda, serviços para a criação, destruição de objetos, obtenção de informações (estado, atributos, etc) dos objetos e modificação de atributos dos objetos de evento. Os serviços de Gestão de Jornais fornecem facilidades para o armazenamento e a recuperação, de maneira ordenada, a partir dos objetos Jornais, das informações e variáveis associadas a eventos, assim como de texto que pode servir como comentários ou explicações. Estes serviços são utilizados principalmente para a produção de relatórios sobre o funcionamento de um equipamento de produção. Ainda, a norma MMS prevê uma classe de serviços para o tratamento de arquivos, particularmente para pequenos serviços de criação, eliminação, etc. No caso de aplicações que requisitem serviços mais sofisticados para o acesso e a transferência de arquivos, a entidade de Aplicação deverá, então, ser composta do elemento de serviço de Aplicação FTAM, que oferece estes serviços. Os quadros a seguir apresentam uma síntese das diferentes classes de serviços do MMS. 8. REDES FIELDBUS A evolução dos microprocessadores conduziu a estruturação hierárquica fabril até o nível de simples componentes de automação, envolvendo elementos diretamente ligados ao processo a ser controlado ou supervisionado, tais como sensores, atuadores e controladores. Através da aplicação de microprocessadores em sistemas sensórios é possível realizar um pré-processamento do sinal diretamente no local de medição, diminuindo assim a probabilidade de deturpação do sinal por perturbações eletromagnéticas, às quais sinais analógicos são em geral muito suscetíveis. Além disto, a unidade que requer os dados do sensor é aliviada destas funções. O mesmo principio é aplicado aos atuadores, que passam a poder interpretar e executar comandos complexos advindos da unidade central. Uma vez que os sinais utilizados por tais componentes inteligentes já se encontram em forma digital, é conveniente definir sistemas de comunicação de dados também digitais para substituir as clássicas interfaces analógicas de corrente e tensão. As interfaces de corrente (4..20 mA) são bem mais difundidas em ambientes industriais, devido a menor suscetibilidade às interferências eletromagnéticas. — 5.14 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS Classe Gestão de Semáforos Estação Operador Gestão de Eventos Gestão de Jornal Gestão de Contexto Gestão de VMD PROF. VITÓRIO BRUNO MAZZOLA Primitivas de Serviço TakeControl RelinquishControl DefineSemaphore DeleteSemaphore ReportSemaphoreStatus ReportPoolSemaphoreStatus ReportSemaphoreEntryStatus Input Output DefineEventCondition DeleteEventCondition GetEventConditionAttribute ReportEventConditionStatus AlterEventConditionMonitoring TriggerEvent DefineEventAction DeleteEventAction GetEventActionAttributes ReportEventActionStatus DefineEventEnrollment DeleteEventEnrollment GetEventEnrollment ReportEventEnrollment AlterEventEnrollment EventNotification* AcknowledgeEventNotification GetAlarmSummary GetAlarmEnrollmentSummary AttachToEventModifier ReadJournal WriteJournal InitializeJournal ReportJournalStatus Initiate Conclude Abort* Cancel Reject* Status UnsolicitedStatus* GetNameList Identify Rename Comentários são encarregados da sincronização e do controle do acesso aos recursos de um VMD pelos processos de aplicação controlam a entrada e saída de informações via estações de operador permitem a definição e o tratamento de eventos via serviços MMS. A possibilidade de associar a execução de um serviço MMS àocorrência de um evento é um aspecto interessante, implementado pelo Modificador AttachToEvent permitem o salvamento de informações sobre a execução de um VMD, particularmente no que diz respeito à ocorrência de eventos e à afetação de variáveis. iniciação, liberação, abandono e rejeição de conexão com outro usuário MMS oferece serviços de VMD, particularmente informações sobre os objetos * serviços não confirmados — 5.15 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS Classe Gestão de Domínio Gestão de Programas Acesso a Variáveis PROF. VITÓRIO BRUNO MAZZOLA Primitivas de Serviço InitiateDownLoadSequence DownLoadSegment TerminateDownLoadSequence InitiateUpLoadSequence UpLoadSegment TerminateUpLoadSequence RequestDomainDownLoad RequestDomainUpLoad LoadDomainContent StoreDomainContent DeleteDomain GetDomainAttribute DomainFile CreateProgramInvocation DeleteProgramInvocation Start Stop Resume Reset Kill GetProgramInvocationAttributes Read Write InformationReport GetVariableAccessAttributes DeleteNamedVariable DefineScatteredAccessAttributes DeleteVariableAccess DefineNamedVariableList GetNamedVariableListAttributes DeleteNamedVariableList DefineNamedType GetNamedTypeAttributes DeleteNamedType Comentários permitem transferir informações, tais como códigos e dados de programa, para serem carregados num domínio de forma dinâmica: as seqüências DownLoad e UpLoad são atividades que permitem gerenciar as transferências entre Cliente e Servidor permitem que um usuário Cliente MMS gerencie a execução remota de programas num usuário Servidor permitem a definição e o acesso às variáveis de um VMD e estabelecer a relação entre as variáveis de um VMD (objetos) e as variáveis real de um equipamento de produção * serviços não confirmados Inicialmente foram definidas e grandemente difundidas interfaces digitais para interligação ponto-a-ponto, tipo RS 232 C que, no entanto, devido à utilização de sinal referenciado ao terra (v24) se mostram mais adequadas à utilização em aplicações de escritório. Para reduzir a influência das perturbações foram desenvolvidas interfaces com sinal diferencial (v11), tipo RS 422 e RS 423. Estas interfaces oferecem no entanto a desvantagem de que não permitem o acoplamento simultâneo de vários elementos inteligentes entre si. Para suprir esta necessidade foram desenvolvidas interfaces multiponto, adequadas a interconexão dos elementos em redes tipo barramento (bus), como por exemplo a RS 485. Esta tendência é mostrada na figura 5.8. Para uma rede aplicada à interligação de elementos simples a nível de chão de fábrica é utilizada a denominação genérica de "barramentos de campo", ou Fieldbus. O Fieldbus pode ser definido como uma linha de comunicação serial, digital, bidirecional (de acesso compartilhado) para a interligação dos dispositivos primários de automação (instrumentos de medição, atuação e controle final e outros pequenos dispositivos "inteligentes" com capacidade de processamento local) a um sistema integrado de automação e controle de processos. — 5.16 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA As principais vantagens e benefícios da utilização do Fieldbus em relação às conexões convencionais podem ser resumidas como segue: Vantagens econômicas • • • drástica redução da cablagem pela utilização de um meio físico compartilhado; redução do número de canais de comunicação com o processo; redução do tempo e complexidade do projeto de layout; Vantagens técnico-operacionais • • • facilidade de instalação e manutenção, pela manipulação de um menor número de cabos e conexões; facilidade de detecção, localização e identificação de falhas, através de funções de monitoração automática; maior modularidade no projeto e instalação, aumentando a flexibilidade de expansão de funções e módulos; Vantagens sistêmicas • • • • aumento da consistência e da confiabilidade da informação advinda dos instrumentos de campo, através da digitalização e pré-processamento; possibilidade de sincronização dos instantes de amostragem de Entrada/Saída; melhoria do desempenho global da aplicação pela descentralização do processamento; maior facilidade de interconexão entre níveis hierárquicos diferentes de automação; Vantagens mercadológicas • • redução dos custos de sistemas através da aquisição seletiva de dispositivos compatíveis de diferentes fornecedores, eliminando a dependência de somente um fornecedor; desacoplamento do software de supervisão da dependência de um fornecedor específico do Hardware; TENDÊNCIA Centralizado / Analógico Decentralizado / Digital Decentralizado / Multipontos Keyboard Keyboard Keyboard A D D RS 232C A RS 422 FIELDBUS MUX P P P P Sample/ Holder D 4..20 mA 0..10 v 0..10 v 4..20 mA A A C D P P D A A D C Amp. Potência Adaptador /Amp. X Y X sensores Y X atuador Y X Y sensores atuador inteligentes inteligente X Y Y X sensores atuador inteligentesinteligente Figura 5.8 - Tendências na interligação de sensores / atuadores. — 5.17 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Inicialmente se supunha que uma única rede iria cobrir todas as necessidades de interconexão no chão de fábrica. Notadamente a proposta MAP, acrescida das versões de maior performance e menor custo MAP/EPA e MINI-MAP se propunham também a integrar elementos de automação ao nível hierárquico de componente. No entanto, logo pode ser verificado que estas propostas eram demasiado caras e muito lentas para as aplicações típicas a nível hierárquico de componente. Enquanto os segmentos de banda base do MAP (MAP-EPA e Mini-MAP) permitem a realização de tempos de resposta de cerca de 100 ms, sistemas tipo Fieldbus se propõe a reduzir este tempo para a faixa de 1 a 10 ms, como requerido para o controle e supervisão de importantes grandezas envolvidas na automação, tais como velocidade, posição de eixos, torque, aceleração e força. Um aspecto essencial na definição de protocolos de comunicação para o Fieldbus é a redução a um mínimo estritamente necessário das informações adicionais incluídas nos telegramas, de forma a permitir uma adequada performance em tempo real. Estas simplificações em relação a sistemas tipo MAP e TOP são indispensáveis quando se pretende interligar componentes simples tais como sensores e atuadores. Para sistemas tipo Fieldbus são definidas, por questões de eficiência, somente as camadas 1, 2 e 7 do modelo de referência OSI. As funções das camadas 3 até 6 que são indispensáveis para a comunicação são aqui absorvidas pelas camadas 2 ou 7. O aspecto de custo também assume grande importância, uma vez que os dispositivos a serem interligados tem em geral custo inferior ao da própria interface MAP, como pode ser visto na tabela que segue. São requeridos aqui nós a um custo da ordem de U$ 50 ou inferior. Componente MAP Cabo Coaxial Controlador Demodulador Componente Ethernet / IBM Nó CSMA/CD Nó Token-Ring Preço médio U$ 2,5 / m U$ 5.000 U$ 15.000 Preço médio U$ 500 - 1500 U$ 750 - 1500 Elemento Campo CLP Controle Robô PC Sensor/Atuador I/O Binária Preço médio U$ 3.000 $20.000 U$ 2.000 U$ 50 a 1000 U$ 50 a 1000 O Fieldbus deve atender igualmente aos requisitos impostos pelos sistemas discretos (Manufatura) e os sistemas contínuos de produção (Controle de Processos). Podem-se considerar em principio três classes distintas de aplicação: • • • sistemas "Stand-Alone", nos quais as transações ocorrem somente entre dispositivos ligados em um mesmo segmento de rede. Aqui teríamos, por exemplo, sensores e atuadores ligados a um CNC dentro de uma máquina. sistemas em cascata, nos quais dispositivos conectados a segmentos distintos podem trocar informações por meio de um "bridge". Situação típica é a encontrada em um SDCD (Sistema Distribuído de Controle Digital). sistemas hierárquicos, nos quais o segmento Fieldbus esta interligado via "gateway" a uma rede interligando dispositivos de um nível hierárquico superior da automação fabril. É o tipo de situação encontrado em uma estrutura CIM. O fluxo de dados nestas aplicações pode se dar em dois sentidos: • no sentido vertical, entre níveis hierárquicos diferentes, de modo a permitir a supervisão do sistema. Para esta forma de comunicação deverão ser oferecidos serviços de instalação, start-up, parametrização da aplicação, visualização de dados para supervisão, etc. Estes serviços não são críticos no tempo. — 5.18 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS • PROF. VITÓRIO BRUNO MAZZOLA no sentido horizontal, entre elementos do mesmo nível, compondo um sistema distribuído. Os serviços oferecidos para este tipo de comunicação se destinam basicamente àatualização e consumo de dados e a checagem de "status". A execução destes serviços é crítica no tempo. Em função do tipo de aplicações que se propõe a atender, um conjunto de requisitos básicos são impostos ao Fieldbus: • • • • necessidade de elevado desempenho para atender as aplicações com requisitos de tempo críticos; método e meio de transmissão simples e de preço acessível. Os sistemas tipo Fieldbus utilizam transmissão tipo Baseband. Como meio de transmissão adota-se o par trançado; necessidade de consistência de dados; necessidade de serviços compatíveis com redes dos níveis hierárquicos superiores. Em geral, se procura uma compatibilidade com os serviços oferecidos pelo MMS; Diversos fabricantes de sistemas de comunicação industriais tem desenvolvidos suas próprias soluções para o Fieldbus que, no entanto, não apresentam todos os requisitos necessários às diversas aplicações na área de chão de fábrica. Para suprir esta deficiência, vários esforços nacionais e internacionais tem sido feitos no sentido de definir uma norma universalmente aceita para o Fieldbus, conforme mostrado na figura 5.9. Dentre os sistemas Fieldbus atualmente em discussão, os mais fortes candidatos à normalização são o PROFIBUS (Process Fieldbus, proposta alemã) e o FIP (Factory Instrumentation Protocol, proposta francesa). Nos Estados Unidos foi definido o grupo de estudos SP-50 da ISA (Intrumentation Society of America), que deverá apresentar brevemente uma proposta de normalização americana e que leva em consideração partes das propostas FIP e PROFIBUS bem como as propostas das firmas Faxboro e Rosemount / Philips. Todas estas propostas serão examinadas pela comissão SC65C/WG6 da IEC (International Electrotechnical Comission) para a elaboração de uma norma internacional. As expectativas são de que a passagem da norma americana elaborada pela ISA SP-50 para a norma internacional da IEC deverá representar um passo meramente formal. ESPRIT CNMA/ Fieldbus PROFIBUS D Sistemas Fieldbus p/ Processos deFabricação Norma nacional em abril/91 Siemens ISA SP-50 Foxboro USA IEC SC65C Norma em preparação Rosemount Norma em 199? variantes tipo SINEC L2 MIL 1553 eF outros... FIP Norma nacional início 1988 F EUREKA Fieldbus Desenvolvimento e teste de um Fieldbus para Processos Unitários Figura 5.9 - Atividades de Normalização do Fieldbus. — 5.19 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Processador Central Cont. Atuador Processo Sensor Fieldbus Processador Central Cont. Atuador Processo Sensor Figura 5.10 - Malha Fechada de Controle por Fieldbus. Ao lado das questões de normalização permanecem ainda abertas à discussão questões referentes ao espectro de aplicações a ser atendido pelo Fieldbus. Por um lado é desejada uma boa compatibilidade e interconectabilidade com os níveis hierárquicos superiores de automação, por outro devem ser considerados os requisitos técnicos e econômicos para a conexão de componentes inteligentes simples e de baixo custo. Enquanto soluções que permitam uma compatibilidade com a definição da camada de aplicação adotada no sistema MAP através da definição de Subsets do MMS são nitidamente favorizadas, permanece aberta a questão da adequação de tais sistemas para o acoplamento direto de sensores e atuadores em processos com dinâmica elevada, como é o caso de sistemas de controle em malha fechada na fabricação. A forma de estruturação física de uma tal malha de controle com Fieldbus é mostrada na figura 5.10. Nos itens seguintes apresentaremos as principais características dos sistemas Fieldbus atualmente propostos para padronização internacional. 8.1. A Proposta FIP (Factory Instrumentation Protocol) O projeto FIP foi elaborado por um conjunto de empresas européias (Telemecanique,CEGELEC, CGEE Alsthom), órgãos do governo francês e centros de pesquisa conglomerados em torno do chamado "Club FIP". A proposta procurou levar em consideração as restrições de tempo real impostas por um grande número de aplicações a nível de chão de fábrica. Definiu-se um modelo de transmissão "produtor-consumidor", que difere das soluções mais usualmente encontradas em redes locais. Para este fieldbus existem "chips" integrados que implementam as funções das três camadas (FIPART, FULLFIP). A camada Física FIP oferece opcionalmente como meios de transmissão a fibra ótica e o par trançado (blindado ou não). Para o par trançado são previstas três velocidades de transmissão de dados: • S1: 31.25 Kbps, distância até 2000 m; • S2: 1 Mbps, distância até 500 m, par trançado blindado; • S3: 2.5 Mbps, distância até 200 m, par trançado blindado. — 5.20 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA A velocidade padrão é a S2. As velocidades S1 e S3 são utilizadas apenas para aplicações especiais. Para uso com fibra ótica é prevista uma velocidade adicional de 5 Mbps. Os bits a serem enviados são codificados em Manchester, que permite o envio simultâneo do sinal de sincronização e dos dados propriamente ditos. A camada física do FIP suporta segmentos com comprimento de até 2000 m e até 256 estações. O barramento principal pode ser decomposto em vários segmentos, que são ligados a este por meio de "taps". Os segmentos podem ser interligados por meio de repetidores, que fortalecem e reconstituem o sinal. A camada física oferece os seguintes serviços de comunicação: • PHY_data_request: pedido de transmissão de dados; • PHY_data_indication: indicação de serviço concluído; Além disso, a camada física oferece serviços de gerenciamento, que são: • • • • PHY_Reset: reinicialização do nível físico; PHY_SetValue: ajuste de parâmetros da camada física; PHY_ReadValue: leitura de parâmetros ajustados; PHY_Event: comunicação de eventos do nível físico. A camada de Enlace A camada de enlace do FIP não faz uma distinção formal entre subcamadas LLC e MAC, como proposto na norma IEEE 802. O método de acesso ao meio da rede FIP é baseado na difusão ("Broadcasting"). A difusão é organizada por uma entidade centralizada denominada "árbitro de barramento". O projeto FIP baseou-se no fato de que, nas redes industriais, uma informação gerada em um determinado ponto pode interessar a várias outras estações (por exemplo, o dado gerado por um sensor de temperatura pode interessar ao controlador, ao atuador e ao terminal de vídeo do operador, simultaneamente). A maioria dos dados transmitidos pelo barramento érepresentada por objetos (variáveis). Cada objeto é representado por um "nome" único no sistema. Um objeto é, por definição, elaborado por um único transmissor (produtor) e levado em conta por qualquer número de receptores (consumidores). Devido ao uso da difusão, os endereços de transmissores e receptores não precisam ser conhecidos pelas aplicações. A comunicação transcorre da seguinte forma (figura 5.11): • • • Em uma primeira fase, o árbitro difunde na rede o nome da variável (objeto) a ser transmitida (quadro de identificação); O produtor da variável difunde, em seguida, a informação ligada ao identificador (quadro de dados); todos os consumidores interessados passam a copia-la na fase final. Cada estação é completamente autônoma. O único requisito imposto às estações é o de difundir, por solicitação do árbitro de barramento, a variável ou variáveis por elas produzidas. Naturalmente, as estações devem também aceitar as variáveis que lhe são enviadas. A varredura das variáveis periódicas é feita a partir de uma lista implementada no árbitro na fase de inicialização e que, em geral, não é alterada posteriormente. A transmissão de mensagens é feita conforme a norma IEEE 802.2, LLC tipos 1 (sem conexão) e 3 (com reconhecimento). Até 24.000 objetos (variáveis) são identificáveis e podem ser trocados de forma cíclica utilizando uma tabela configurável. O formato do quadro do FIP é mostrado na figura 5.12, onde: — 5.21 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS • • • • • • PROF. VITÓRIO BRUNO MAZZOLA PRE: preâmbulo, utilizado para sincronização entre emissor e receptores. Compõese de um caractere de 16 bits com alterações dos bits adjacentes de 1 para 0; FSD/FED: delimitadores de inicio e fim de quadro, respectivamente. São codificados de forma a não serem confundidos com dados; EB: Bits de equalização, que operam como bits de interface entre os delimitadores e os dados codificados em Manchester II; Controle: define tipo de quadro, podendo ser quadro de identificação de informação ou de envio de informação (6 bits); Dados: pode conter um identificador representando o endereço lógico de uma variável, o valor de uma variável, uma mensagem, o reconhecimento de uma mensagem ou uma lista de identificadores; FCS: o controle de erros é feito utilizando a técnica polinomial, permitindo uma distância de Hamming de 4 e adotando o polinômio gerador proposto pela CCITT. Os serviços oferecidos pela camada de enlace são apresentados na tabela abaixo. Foram especificadas quatro classes de serviços: • • • • atualização cíclica de dados; atualização não periódica de dados; transferência de mensagem com ACK; transferência de mensagem sem ACK. Maior importância foi atribuída aos serviços cíclicos, de forma que não houve preocupação com uma otimização das demais classes. ID_DAT Árbitro C P C RP_DAT Árbitro C P C Figura 5.11 - Método de acesso ao meio do FIP. a) Árbitro difunde identificador. b) Produtor difunde dados pedidos. PRE FSD EB DFS EB FSS FED FES PRE — Preâmbulo FSD — Frame Start Delimiter EB — Equalization Bit DFS — Data Frame Sequence (Controle, Dados, FCS) FSS — Frame Start Sequence FED — Frame End Delimiter FES — Frame End Sequence Figura 5.12 - Formato do quadro do FIP — 5.22 — EB CAP. 5 — R EDES LOCAIS I NDUSTRIAIS Classe Atualização cíclica de dados Atualização não periódica de dados Transmissão de mensagem com ACK Transmissão de mensagem sem ACK PROF. VITÓRIO BRUNO MAZZOLA Primitiva de serviço L_PUT.req/cnf L_SENT.ind L_GET.req/cnf L_RECEIVED.ind L_PARAM.req/cnf L_MESSAGE_ACK.req/ind/cnf L_MESSAGE.req/ind Comentários atualiza dados sinaliza envio busca de dados sinaliza recepção requisita um dado com reconhecimento sem reconhecimento A Camada de Aplicação O projeto FIP propõe, a nível da camada de aplicação, um sub-conjunto do MMS apresentado no projeto MAP, definindo serviços de mensagem industrial que não interferem com o tráfego de tempo real. Além disso, foi definida uma segunda família de serviços, denominada MPS ("Message Periodic/Aperiodic Services"), apresentada na tabela a seguir. Classe Leitura de variáveis Escrita de variáveis Leitura do tipo de variável Acesso à listas de variáveis Serviços de sincronização Primitiva de serviço A_READ.req/cnf A_READFAR.ind A_WRITE.req/cnf A_WRITEFAR.ind A_GETOBJECT_DESCRIPTION.req/cnf A_READLIST.req/cnf A_WRITELIST.req/cnf A_SEND.ind A_RECEIVE.ind Comentários lê nomes de variáveis, estruturas, status, valores escreve especificação, valor, status lê especificação lê e escreve atributos, valores sincronização local e remota Funções de gerenciamento da rede O projeto FIP definiu uma série de funções de gerenciamento de rede, que permitem coordenar as várias fases do ciclo de vida da mesma. Para inicializar a rede é preciso: • • Configurar a rede (definição de parâmetros, identificadores e listas de objetos, gerar tabelas de varredura); Implementar e testar a configuração. Durante a operação da rede, é necessário realizar sua manutenção, que inclui: • • • • 8.2. Atualização das listas de objetos; Atualização das tabelas de varredura; Gerenciamento das operações de partida e parada; Detecção e correção de falhas; A proposta PROFIBUS (PROcess FIeld BUS) O PROFIBUS (Process Field Bus) foi desenvolvido na Alemanha, inicialmente pela Siemens em conjunto com a Bosch e Klockner-Moeller em 1987. Em 1988 tornou-se um "Trial Use Standard" no contexto da norma DIN (DIN V 19245, parte 1), que define as camadas Física e Enlace. Posteriormente, um grupo de 13 empresas e 5 centros de pesquisa propuseram alterações nas camadas Física e Enlace e definiram a camada de Aplicação (norma DIN V 19245, parte 2). O PROFIBUS representa a proposta alemã para a padronização internacional do fieldbus. Esta proposta é atualmente apoiada por cerca de 110 empresas européias e internacionais (Siemens, ABB, AEG, Bosch, entre outras). — 5.23 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Como nas demais redes Fieldbus para aplicações industriais, para atender aos requisitos de tempo de resposta, o PROFIBUS implementa o modelo de referência ISO/OSI reduzido a três camadas (1, 2 e 7), descritas a seguir. A camada física A camada física do PROFIBUS baseia-se no padrão EIA RS-485 (EIA - Eletronic Insdustries Association), topologia barramento, utilizando como meio um par trançado blindado (130 Ohms). Permite a interligação de até 32 elementos (estações ativas, passivas ou repetidoras) por segmento. São permitidos até 4 segmentos, totalizando assim um máximo de 122 estações. A codificação utilizada é a NRZ, podendo ser implementada com uma USART simples (assíncrona). As taxas suportadas são 9.6, 19.2 e 93.75 kbps para distâncias até 1200 m, 187.5 kbps para distâncias até 600 m e 500 kbps até 200 m. A camada física oferece duas primitivas de serviço acessíveis à camada de enlace: PHY_DATA.request (requisição de envio de dados) e PHY_DATA.indication (indicação da presença de dados). A camada de enlace A exemplo da norma IEEE 802, o PROFIBUS define duas subcamadas para a camada de Enlace de Dados: a subcamada de controle de acesso ao meio (MAC) e a subcamada de controle de ligação lógica (LLC). Na subcamada MAC, o PROFIBUS combina dois métodos determinísticos de acesso ao meio: as estações ditas "ativas" encontram-se em um anel lógico, no qual o direito de acesso ao meio é repassado ciclicamente por passagem de token (baseado na especificação IEEE 802.4), enquanto as estações ditas "passivas" comportam-se como escravas, isto é, só tem acesso ao meio por requisição da estação ativa detentora do token. O PROFIBUS representa assim uma combinação dos métodos "Master/Slave" e "TokenPassing" (figura 5.13). O token só é repassado entre as estações ativas. Estações ativas podem entrar e saír do anel lógico de forma dinâmica, como previsto na norma IEEE 802.4. O token é repassado na ordem ascendente de endereços, seguindo uma lista de estações ativas (LAS, List of Active Stations). Esta lista é gerada na inicialização e atualizada sempre que uma estação entra ou sai do anel lógico. O PROFIBUS prevê uma série de quadros diferentes, agrupados em duas classes, uma para transmissão entre estações mais complexas (quadros longos) e outra para dispositivos de campo simples (quadros curtos). Os quadros previstos incluem: • quadro longo sem campo de dados; • quadro longo com campo de dados fixo; • quadro longo com campo de dados variável; • quadro curto sem campo de dados; • quadro curto com campo de dados; • quadro curto de passagem de token. Cada quadro é formado por vários caracteres UART. Um caracter UART é composto de 11 bits: 1 bit de inicio ("start bit"), 8 bits de dados, 1 bit de paridade e 1 bit de finalização ("stop bit"). Em particular tem-se os seguintes campos em cada quadro: • • • • • • • SD: Start Delimiter (delimitador de inicio de quadro); DA: Destination Address (Endereço de destino do quadro); SA: Source Address (Endereço de origem do quadro); FC: Frame Control (Controle de quadro); DATA_UNIT: Dados propriamente ditos; FCS: Frame Check Sequence (seqüência de checagem de erros); ED: End Delimiter (Delimitador de fim de quadro). — 5.24 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA O protocolo implementado a nível da camada de enlace é denominado FDL ("Fieldbus Data Link"), que oferece serviços de administração do token, de atualização das estações e de transferência de dados. Estes últimos são apresentados na tabela abaixo. A troca de dados é feita em ciclos compostos por um "send-request" de parte da estação ativa e seguida por um "ack-response" de parte de uma estação passiva ou de outra estação ativa. anel lógico Mestre 1 Mestre 2 token Escravo 1 Escravo 2 Escravo 3 Escravo N Figura 5.13 - Método de acesso ao meio do PROFIBUS Classe SDN (Send Data with No Acknowledge) SDA (Send Data with Acknowledge) RDR (Request Data with Reply) CRDR (Cyclic Request Data with Reply) CSRD (Cyclic Send and Request Data) SRD (Send and Request Data) Primitiva de serviço FDL_DATA FDL_DATA_ACK FDL_REPLY FDL_REPLY_UPDATE FDL_CYC_REPLY FDL_CYC_DEACT FDL_REPLY FDL_REPLY_UPDATE FDL_SEND_UPDATE FDL_CYC_DATA_REPLY FDL_CYC_DEACT FDL_DATA_REPLY FDL_DATA_UPDATE FDL_DATA_REPLY FDL_REPLY_UPDATE Comentários envio de dados sem reconhecimento envio de dados com reconhecimento requisição de dados com reconhecimento estação local requisita ciclicamente dados ao usuário remoto. estação local envia ciclicamente e requisita simultaneamente dados de resposta. estação local envia e requisita dados. A camada de Aplicação Na camada de aplicação foi definido um subset do MMS (ISO 9506), utilizando primitivas de serviços apropriadas para atender os aspectos específicos do barramento de campo. A Camada de Aplicação está dividida em três subcamadas: • Fieldbus Message Specification (FMS), que é o protocolo propriamente dito, derivado do MMS; — 5.25 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS • • PROF. VITÓRIO BRUNO MAZZOLA Lower Layer Interface (LLI), responsável pela interface com a camada de Enlace, mapeando os serviços FMS e FMA (Fieldbus Management) em serviços correspondentes do FDL; Application Layer Interface (ALI), responsável pela interface com as aplicações do usuário. A ALI opera como solicitador de serviços("Cliente") a um Dispositivo Virtual de Campo (VFD, Virtual Field Device), que opera como fornecedor de serviços ("Servidor"). O VFD é equivalente ao VMD (Virtual Manufacturing Device) do MMS usado em MAP, constituindo uma representação abstrata de várias classes de dispositivos reais. As classes de onjetos definidas são: Variáveis, Domínios, Alarmes, Listas de Variáveis e Invocações de Programa. Todos os objetos da rede são cadastrados em um dicionário de dados, denominado OV (Objekt Verzeichniss). Cada estação contem uma cópia total ou parcial do OV. São definidos serviços com e sem conexão, cíclicos e acíclicos, entre estações ativas e entre estas e estações passivas. Os serviços sem conexão são usados para "Broadcast" e "Multicast" (difusão de quadros entre todas as estações ou entre certos agrupamentos pré-definidos de estações). Os serviços com conexão são usados para garantir uma troca de dados confiável. A tabela a seguir apresenta uma visão geral dos serviços oferecidos, que podem ser decompostos em três classes: serviços de Aplicação, serviços de Adminstração e serviços de Gerenciamento de Rede. Em relação ao MMS, tem-se como novidade os serviços Phy_Read e Phy_Write, que permitem acesso direto a strings de octetos para os quais não se tenha uma descrição no OV. 8.3. A proposta ISA SP-50 Os projetos FIP e PROFIBUS contribuíram grandemente para o projeto SP-50 (Standards & Practices 50), em elaboração na ISA (instrumentation Society of America), que deverá tornar-se a proposta definitiva para o fieldbus padronizado. Os trabalhos de padronização ainda estão em andamento. A ISA adotou a terminologia da CCITT, na qual um elemento de comunicação é composto de duas partes: • DTE (Data Terminal Equipment), que aqui inclui as funcionalidades das camadas de aplicação, de enlace e a parte da camada física independente do meio de transmissão adotado; • DCE (Data Communication Equipment), que aqui inclui as partes da camada física que dependem do meio. A camada Física A camada física da ISA SP-50 se compõe de três subcamadas (figura 5.14): • Subcamada DIS (Data Independent Sublayer): atua como interface com a camada de enlace, recebendo pedidos de serviço desta e repassando os dados recebidos (DTE); • Subcamada MDS (Medium Dependent Sublayer): codifica os dados a enviar para um formato compatível com o meio físico a ser adotado. Por enquanto, somente foi especificada a subcamada MDS para o par trançado, onde se adota a codificação tipo Manchester bifásico (DCE); — 5.26 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA • Subcamada MAU (Medium Attachment Unit): descreve o transceptor propriamente dito para o meio físico (DCE). Para a camada física foram inicialmente propostos dois tipos de meio: Classe Serviços de Acesso a variáveis Serviços de Acesso a Domínios Serviços de Invocação de Programas Serviços de Notificação de Eventos Primitivas de serviço READ WRITE INFORMATION_REPORT PHY_WRITE PHY_READ DEFINE_VARIABLE_LIST DELETE_VARIABLE_LIST INITIATE_DOWNLOAD_SEQUENCE DOWNLOAD_SEGMENT TERMINATE_DOWNLOAD_SEQUENCE INITIATE_UPLOAD_SEQUENCE UPLOAD_SEGMENT TERMINATE_UPLOAD_SEQUENCE REQUEST_DOMAIN_DOWNLOAD REQUEST_DOMAIN_UPLOAD CREATE_PROGRAM INVOCATION_DELETE_PROGRAM INVOCATION_START INVOCATION_STOP INVOCATION_RESUME INVOCATION_RESET ALTER_EVENT_COND._MONITORING EVENT_NOTIFICATION ACK_EVENT_NOTIFICATION Serviços de Leitura de Status STATUS UNSOLICITED_STATUS STATUS_IDENTIFY Serviços de Gerenciamento de Dicionário de Objetos GET_OV PUT_OV INITIATE_PUT_OV TERMINATE_PUT_OV Serviços de Gerenciamento de Contexto • INITIATE REJECT ABORT Comentários leitura e escrita de variáveis contidas em dispositivos servidores transferência de dados ou programas de dispositivo cliente para dispositivo servidor e vice-versa partida, parada, retorno da execução, retorno ao estado inicial e deleção de programas servidor notifica cliente a ocorrência de um evento (alarme) informações acerca do estado dos dispositivos servidores descrição de todos os objetos na rede (nomes, endereços, tipos de dados, etc) estabelecimento e encerramento de associação entre dois dispositivos e a rejeição de mensagens recebidas meio H1, para aplicações de baixo desempenho em controle de processos tradicional, usando par trançado, com taxa de transmissão de 31,25 Kbps e que é também utilizado para a alimentação dos dispositivos de campo. As topologias propostas são barramento e estrela; — 5.27 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS • PROF. VITÓRIO BRUNO MAZZOLA meio H2, para processos de controle de alta velocidade, com taxa de transmissão de 1 Mbps, topologia em barramento e distância máxima de 750 m com 30 estações. Propostas alternativas utilizando fibra ótica e sinais de rádio estão sendo estudadas. A camada de Enlace A camada de Enlace oferece quatro classes de funções, a serem implementados nas estações de acordo com as necessidades: • • • • funções de "Responder": estação só transmite dados em resposta a uma solicitação (estação "escrava"); funções de "Initiator": estação pode se apoderar do direito de acesso ao meio (token), podendo enviar e requisitar dados a outras estações por iniciativa própria; funções de "Linkmaster": inclui as funções de responder e initiator, mas a estação pode exercer o papel de escalonador de enlace, administrando o token e gerenciando o tempo interno do sistema (semelhante ao papel do árbitro de barramento do FIP); funções de "Bridge": estação capaz de interligar entidades de enlace diferentes; Se há mais de uma estação com as funcionalidades de um "Link-master" no sistema, estas disputam entre si na inicialização o papel de escalonador de enlace (árbitro). A estação vencedora échamada LAS (Link Active Scheduler). Existem, para isto, três tipos de token (figura 5.15): • • • Token de escalonamento: disputado na inicialização por todas as estações Linkmaster, define a estação LAS. Token circulado: distribuído pela estação LAS às demais estações com funcionalidade de Linkmaster, que formam um anel lógico conforme a norma IEEE 802.4. Token delegado: enviado pela estação LAS a uma estação qualquer por solicitação desta ou para atender às necessidades de um serviço de comunicação escalonado pela LAS. Funcionalmente, a camada de Enlace está subdividida em quatro subcamadas, conforme mostrado na figura 5.16: Camada de Enlace DIS (Data Independent Sublayer) MDS (Medium Dependent Sublayer) MAU (Medium Attachment Unit) Figura 5.14 - A camada física do SP-50. — 5.28 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA LAS Estação qualquer LM Token de Escalonamento Token Delegado Token Circulado LM LM Figura 5.15 - Operação dos tokens no SP-50. • • • • Subcamada de acesso a Enlace: estabelece a interface com a camada física, gerencia o token e serviços de resposta imediata; Subcamada de escalonamento de Enlace: providencia as funções de escalonamento de atividades na própria entidade de enlace. Esta subcamada é mais complexa em estações com as funcionalidades de Linkmaster e que podem assumir a função de LAS; Subcamada de gerenciamento de conexões: executam todas as funções referentes ao estabelecimento e rompimento de conexões; Subcamada de gerenciamento de Ponte: só existe em estações com funcionalidades de Bridge. A camada de enlace oferece quatro classes de serviços às entidades da camada de aplicação: • • • • Serviços de gerenciamento de Buffers e filas: através deles, usuários da camada de enlace podem alocar permanentemente buffers ou filas com profundidade especificada, a serem usados posteriormente para a transferência de dados; Serviços de transferência de dados com conexão: permitem o estabelecimento de uma conexão e o envio de dados entre estações, garantindo serviços altamente confiáveis; Serviços de transferência de dados sem conexão: permitem o envio de dados sem o estabelecimento prévio de uma conexão e que, apesar da menor confiabilidade, são úteis no envio de telegramas de difusão (multicast e broadcast); Serviços de escalonamento de transações: permitem programar o árbitro de barramento (LAS), definindo a seqüência de passagem de token (escalonamento). A camada de Aplicação A camada de aplicação do SP-50 ainda se encontra em discussão e procura conjugar as idéias básicas do MMS, para aplicações sem restrições temporais, com serviços tipo READ/WRITE inspirados no FIP e que atendem o tráfego cíclico e acíclico com requisitos de tempo real "duro". A camada de aplicação prevê, em sua fase atual, os seguintes conjuntos de serviços: • Serviços MCSE (Message Common Service Element): estabelece e interrompe conexões entre processos de aplicação (Correspondem aos serviços ACSE da ISO). — 5.29 — CAP. 5 — R EDES LOCAIS I NDUSTRIAIS PROF. VITÓRIO BRUNO MAZZOLA Camada de Aplicação Subcamada de Gerenciamento de Ponte Subcamada de Gerenciamento de Conexões Subcamada de Escalonamento Subcamada de Acesso a Enlace Camada Física Figura 5.16 - A camada de Enlace do SP-50. • • Serviços IMSE (Industrial Message Service Element): serviços semelhantes aos oferecidos pelo MMS do projeto MAP. Serviços DDM (Distributed Database Maintenance): Serviços de acesso à bases de dados distribuídas. Camada do Usuário Uma proposta inovadora no SP-50 é a definição de uma camada do usuário, situada acima da camada de aplicação, destinada a aliviar o programador de detalhes de acesso ao sistema de comunicação e a oferecer serviços adequados a diversos tipos diferentes de aplicações (a semelhança dos "companion standards" propostos no projeto MAP). Os trabalhos atuais estão restritos a definição de funções para aplicações em controle de processos, agrupadas na chamada PCUL ("Process Control User Layer"). Outros trabalhos deverão atender as áreas de automação da manufatura, controle predial, eletrônica embarcada (automóveis), aplicações domésticas, entre outras. Serviços de Gerenciamento de rede Além das funcionalidades das camadas já vistas, a proposta SP-50 inclui um conjunto de funções de gerenciamento de rede, como: • • • Gerenciamento de configuração de rede: carregamento, inicialização de endereços, configuração de comunicação e aplicação, partida, etc; Controle de operação: ferramentas de sincronização, escalonamento, etc; Monitoração de desempenho: detecção, diagnose e recuperação de erros, avaliação e otimização de desempenho, etc. Uma vez definido um padrão internacionalmente aceito, o Fieldbus deverá revolucionar o setor de instrumentação. Esta tecnologia permite que a inteligência seja totalmente distribuída pelo campo e favorece o surgimento de dispositivos com capacidades locais de processamento cada vez mais sofisticadas. A integração total dos equipamentos permitirá alterações nos procedimentos de operação das plantas industriais. O Fieldbus deverá também propiciar a intercambiabilidade a nível de sensores, atuadores, transmissores e controladores, trazendo ao usuário uma maior flexibilidade na compra de produtos e abrindo espaço para novos fabricantes. — 5.30 — Capítulo 6 INTERCONEXÃO 1. DE REDES INTRODUÇÃO O problema da interconexão aparece no momento em que dois usuários que necessitam dialogar não estão conectados necessariamente à mesma subrede. Um exemplo típico deste problema é encontrado nas propostas de comunicação em automação industrial. Como é sabido, tanto as empresas como as arquiteturas de comunicação de dados obedecem, geralmente a uma organização hierárquica. As fábricas podem ser divididas em células, enquanto o setor administrativo pode ser dividido em departamentos, sessões, divisões, coordenadorias. Estas divisões são normalmente baseadas no estabelecimento de critérios funcionais, tendo as funções de cada divisão significado especial na empresa. As razões que podem conduzir a sistemas integrando diferentes subredes podem ser de naturezas as mais diversas: • é muito mais econômico interligar computadores geograficamente próximos através de uma rede local e compartilhar uma interface única com uma rede externa do que conectá-los, cada um deles a esta mesma rede externa; • é tecnologicamente limitante a interconexão (via uma rede local) de um grande número de computadores separados por grandes distâncias; por exemplo, os diversos computadores localizados em diferentes prédios de um campus de universidade... neste caso, é mais interessante interligar os computadores de cada prédio por uma rede local sendo que as diversas redes locais serão interconectadas; • o desempenho e a confiabilidade de um sistema podem ser fortemente aumentados se, ao invés de interligar um grande número de estações por uma única rede, esta for particionada em duas ou mais redes; cada rede local associaria aquelas estações que possuam maior tráfego entre elas, diminuindo assim o tráfego no suporte de transmissão, sendo que elementos de interconexão das diversas redes garantiriam a comunicação entre as estações conectadas a diferentes redes; • é funcionalmente mais interessante interligar estações que realizem trabalhos pertencentes a atividades compatíveis por redes locais adequadas ao perfil destas atividades; as diferentes redes associadas a cada nível de atividade continuariam a permitir a comunicação entre estações pertencentes a diferentes atividades através dos elementos de interconexão. O problema da interconexão é derivado de três questões importantes: — 6.1 — CAP. 6 — I NTERCONEXÃO DE REDES PROF. VITÓRIO BRUNO MAZZOLA • a primeira está relacionada à função de roteamento, dado que, dois equipamentos envolvidos num diálogo podem não pertencer à mesma subrede; • a segunda está relacionada com a possibilidade (bastante realista) de que duas subredes interconectadas não implementem o mesmo protocolo, o que representa um problema não trivial a ser resolvido; • a terceira está relacionada com a hipótese de que as duas subredes a serem interconectadas não sejam baseadas na mesma arquitetura de protocolos; por exemplo, uma das subredes é não-OSI. O objetivo desta seção é discutir os principais aspectos associados à interconexão de subredes, abordando, desde a forma como a interconexão é vista via modelo OSI, até a resolução das questões apresentadas acima. 2. ASPECTOS DA CONECTIVIDADE Retornando às duas questões levantadas acima, uma série de pontos técnicos devem ser resolvidos para possibilitar a interconexão de redes. Vamos discutir alguns destes pontos a seguir. 2.1. Endereçamento A função essencial de uma rede de computadores é permitir a troca de informações entre os equipamentos a ela conectados. Dada a possibilidade de interligação de equipamentos heterogêneos, torna-se necessária a definição de uma política de representação dos nomes e endereços dos processos, que sejam reconhecidos em qualquer ponto da rede. Uma forma de fazê-lo é permitir que os usuários possam ser identificados por nomes (ou cadeias de caracteres). Isto significa que os nós da rede devem manter tabelas que efetuem o mapeamento entre os nomes dos processos usuários da rede e os seus endereços. Entretanto, quando duas ou mais subredes são interconectadas, os padrões de endereçamento podem ser distintos e um meio de identificar (de maneira transparente) os processos situados nas diferentes subredes deve ser implementado. A política adotada para resolver esta questão é aquela do endereçamento hierárquico, como por exemplo a definida pelo CCITT, onde cada endereço apresenta três componentes: um código de país (3 dígitos), um código da rede (1 dígito) e um campo para o endereço dentro da rede (10 dígitos). Isto significa que cada país pode definir até 10 redes, cada rede tendo 10 dígitos para definir seus endereços, o formato dependendo de cada rede. 2.2. Encaminhamento das mensagens Este aspecto está diretamente ligado às funções de roteamento implementadas na camada de Rede. A questão colocada aqui está relacionada com a forma de encaminhamento de uma mensagem quando esta é trocada entre dois equipamentos situados em subredes distantes. Um aspecto a ser ressaltado aqui é o problema de roteamento, já abordado anteriormente (camada de Rede), sendo que alguns dos algoritmos de roteamento foram lá apresentados. 2.3. A fragmentação de mensagens Este é um outro problema importante, dado que diferentes subredes podem trabalhar com tamanhos distintos de mensagens (os tamanhos máximos). É óbvio que uma solução seria limitar o tamanho máximo das mensagens podendo transitar em todas as subredes como sendo o menor tamanho máximo de todas as subredes... mas esta é uma solução pouco eficiente. — 6.2 — CAP. 6 — I NTERCONEXÃO DE REDES PROF. VITÓRIO BRUNO MAZZOLA A solução mais interessante é a seguinte... quando uma mensagem deve transitar entre diferentes subredes, se ela ultrapassa o tamanho máximo da subrede pela qual ela vai transitar, esta é decomposta em várias mensagens (ou fragmentos), cujas dimensões serão adaptadas às limitações da subrede considerada. É evidente que, caso estes fragmentos sejam enviados a uma nova subrede que suporte o tamanho máximo da subrede de origem, estes poderão ser reagrupados para recompor a mensagem original. Estes são alguns dos pontos a serem discutidos no momento em que um elemento deve ser projetado para a interconexão de duas subredes. Outros pontos não menos importantes são: o controle de erros, o tipo de serviço (orientado conexão ou não), o nível da interconexão, o controle de fluxo, o controle de congestionamento, a segurança, a tarifação de serviços. 3. A INTERCONEXÃO SEGUNDO O MODELO OSI Antes de estudarmos os elementos responsáveis da interconexão de redes, vamos analisar a abordagem do modelo OSI no que diz respeito a este problema particular. Segundo o que foi estabelecido no modelo OSI no que diz respeito à interconexão, a camada de Rede, que assume a resolução destes problemas, pode ser subdividida em três subcamadas, como mostra a figura 6.1: a subcamada de acesso à subrede, a subcamada de adaptação da subrede e a subcamada de interconexão. A primeira subcamada, representada pelos níveis 3a na figura 6.1, é responsável do gerenciamento do protocolo da subrede considerada, assumindo a recepção e o envio dos pacotes de controle e implementando as funções de base da camada de Rede. A segunda subcamada, representada por 3b em 6.1, é responsável de todas as adaptações necessárias entre as subredes interconectadas. Finalmente, a terceira subcamada, 3c em 6.1, é a que implementa efetivamente a interconexão das subredes responsabilizando-se pelo roteamento entre as subredes. As diferenças entre as subredes interconectadas podem ser de diferentes naturezas. No caso de subredes conformes ao modelo OSI, a interconexão é feita apenas através da transmissão, via subcamada de interconexão dos pacotes às subcamadas de acesso à subrede da subrede considerada. Neste caso, a função da subcamada de adaptação é inexistente, esta camada sendo então vazia. Por outro lado, se uma rede não-OSI deve ser interconectada a uma baseada no modelo OSI, as adaptações deverão ser implementadas, isto sendo função daquela subcamada. A tarefa de roteamento de subrede a subrede é similar àquela a nível de uma única subrede, o que significa que as técnicas apresentadas na seção 3 podem ser utilizadas. sistema A sistema B 4a7 4a7 relay 3c 3b 3a 3c' 3b' 3a' 2 3c' 3b 3b' 3a' 3a 2 2 1 1 1 2 1 subrede 2 subrede 1 Figura 6.1 - Estrutura interna da camada de rede do ponto de vista da interconexão, segundo o OSI. — 6.3 — CAP. 6 — I NTERCONEXÃO DE REDES 4. PROF. VITÓRIO BRUNO MAZZOLA AS DIFERENTES POSSIBILIDADES DE INTERCONEXÃO A figura 6.2 ilustra diferentes possibilidades de interconexão de redes (locais ou de longa distância). Em cada caso, é necessário introduzir um elemento intermediário ou relay, responsável das adaptações de protocolo que sejam necessárias, podendo ser uma ponte (ou bridge) ou passarela (gateway), dependendo do tipo de interconexão. Saindo um pouco do contexto do modelo OSI, no caso mais geral, a tarefa efetuada pelos relays pode ser implementada em qualquer camada, os quatro tipos de relays mais comuns sendo: • os repetidores (repeaters), implementados no nível físico, que permitem unicamente amplificar e retransmitir os sinais elétricos representando os bits de dados entre dois segmentos de cabo; • as pontes (bridges), implementadas no nível enlace, que efetuam o armazenamento e retransmissão dos quadros entre redes locais; a retransmissão do quadro pode ser caracterizada por algumas modificações nos formatos dos quadros, se necessário; • os roteadores (routers), implementados no nível rede, que retransmitem pacotes entre duas redes; • os gateways (gateways), implementados ao nível aplicação, cuja tarefa é bem mais complexa que as dos elementos anteriores, utilizados para a interconexão de subredes incompatíveis até mesmo do ponto de vista da arquitetura (redes OSI x redes não-OSI). Apresentaremos, a seguir, algumas características importantes das pontes, roteadores e gateways, elementos dos mais utilizados na tarefa de interconexão de redes. 5. AS PONTES (BRIDGES) Se duas subredes apresentam compatibilidade em relação à camada de enlace de dados, uma ponte pode ser utilizada para interconectá-las. Uma ponte é um equipamento inteligente (baseado em microprocessador) conectado a duas subredes ou entre uma subrede e a backbone. Dado que as duas redes estão conectadas à ponte utilizam a mesma política de endereçamento na camada 2 do modelo OSI, ela examina os endereços de ambas as redes para definir que mensagens devem ser passadas de uma rede à outra. LAN G LAN B LAN G WAN G G WAN LAN-LAN WAN-WAN B BRIDGE LAN-WAN LAN-WAN-LAN G GATEWAY Figura 6.2 - Possibilidades de interconexão de redes. — 6.4 — CAP. 6 — I NTERCONEXÃO DE REDES PROF. VITÓRIO BRUNO MAZZOLA As pontes são bidirecionais por natureza, o que significa que elas são responsáveis do encaminhamento de todos os pacotes emitidos ao nível das duas redes. A figura 6.3 ilustra a forma de interconexão através de uma ponte. A operação de uma ponte é baseada na manutenção de uma tabela contendo os endereços dos equipamentos compondo a rede à qual ela está associada. Quando um pacote é recebido, esta examina o conteúdo do campo “endereço do destinatário” para verificar se ele está endereçado a um equipamento desta rede ou não. Em caso positivo, o pacote é encaminhado ao equipamento considerado. Caso contrário, este será despachado para uma ponte associada a uma outra subrede, sendo que, esta, por sua vez, realizará o mesmo tipo de verificação, através de consulta à sua tabela. Normalmente, as pontes implementam um algoritmo de "aprendizagem", utilizado para inicializar a tabela de endereçamento existente em cada uma delas. Do ponto de vista do desempenho, as pontes são elementos de interconexão que apresentam um tempo de resposta relativamente mais curto, uma vez que, em grande parte de sua operação, os pacotes não sofrem nenhum processo de reformatação para serem despachados. Um caso bastante comum encontrado nas empresas é a necessidade de interconexão de redes Ethernet com as redes do tipo Token Ring (Anel com Ficha). Um primeiro problema a resolver, neste caso, é a grande diferença estrutural dos pacotes utilizados por cada um destes tipos de rede. Uma rede Ethernet utiliza pacotes cujo tamanho não deve ultrapassar os 1.500 bytes; uma rede Token Ring a 4 Mbit/s pode transmitir pacotes de até 4.000 bytes. Uma ponte orientada à interconexão destes dois tipos de rede deve, então, oferecer a possibilidade de segmentação dos pacotes de grandes dimensões das redes Token Ring em pacotes menores da Ethernet. Dado que, no modelo OSI, a independência de redes é uma das características enfatizadas, é bem possível que as duas subredes utilizem suportes de transmissão (camada física) distintos. Um exemplo disto é a possibilidade do estabelecimento de interconexões por pontes nas arquiteturas MAP/TOP. Por utilizar a mesma camada de enlace (IEEE 802.2), as duas arquiteturas podem ser interconectadas, apesar de uma (MAP) utilizar o suporte de transmissão em banda larga e a outra (TOP) utilizar banda básica. Camada 7 SUBREDE A SUBREDE B Camada 7 Camada 6 Camada 6 Camada 5 Camada 5 Camada 4 Camada 4 Camada 3 Camada 3 PONTE Camada 2 Camada 2 Camada 2 Camada 2 Camada 1 Camada 1 Camada 1 Camada 1 SUBREDE A PONTE SUBREDE B Figura 6.3 - Ponte interconectando duas sub-redes (nível Enlace). — 6.5 — CAP. 6 — I NTERCONEXÃO DE REDES PROF. VITÓRIO BRUNO MAZZOLA Na filosofia do modelo OSI, uma ponte pode interconectar duas redes quaisquer, desde que estas sejam totalmente compatíveis em suas camadas de enlace de dados (principalmente, no endereçamento). Ainda deste ponto de vista, dois usuários finais não precisam tomar conhecimento da existência de uma ponte na rede; esta é vista como um equipamento "observador" nas redes às quais ela está conectada. Sua função é monitorar todo pacote que circula em cada uma das redes à qual ela está associada. 6. OS ROTEADORES (ROUTERS) Como foi dito acima, as pontes são equipamentos que permitem interconectar as subredes, duas a duas. Apesar de sua grande utilidade neste caso bastante comum, as pontes apresentam limitações que impedem outras maneiras também importantes de interconexão. Os roteadores são elementos operando ao nível de Rede, que se utilizam do endereçamento definido a este nível para transferir e rotear as mensagens de uma rede a outra. Ao contrário das pontes que interligam as subredes duas a duas, os roteadores podem interligar duas ou mais subredes, sendo que a escolha de que linha utilizar é feita com base na execução de um algoritmo de roteamento, como já discutido anteriormente (camada de Rede). A política de endereçamento implementada a nível da camada de Rede é bastante similar à codificação de números telefônicos numa rede de telefonia. Se alguém, por exemplo, quer fazer uma chamada telefônica de Florianópolis para Paris, ele deve discar inicialmente (após o código de discagem direta internacional) o código do país (no caso, 33 para a França), em seguida, o código da cidade (1, para Paris) e, finalmente, o número do telefone da pessoa com quem ele vai querer dialogar. No modelo OSI, o esquema de endereçamento é definido de forma a cobrir os múltiplos formatos de endereçamento de rede (ver parte relativa à camada de Rede). Camada 7 SUBREDE A SUBREDE B Camada 7 Camada 6 Camada 6 Camada 5 Camada 5 Camada 4 Camada 4 ROTEADOR Camada 3 Camada 3 Camada 3 Camada 3 Camada 2 Camada 2 Camada 2 Camada 2 Camada 1 Camada 1 Camada 1 Camada 1 SUBREDE B SUBREDE A ROTEADOR SUBREDE C SUBREDE D Figura 6.4 - Roteador interligando duas subredes. — 6.6 — CAP. 6 — I NTERCONEXÃO DE REDES PROF. VITÓRIO BRUNO MAZZOLA Uma das desvantagens das pontes que é o fato de que, todo pacote transitando ao longo das subredes é recebido por cada uma das estações conectadas a estas subredes, implicando, em condições normais, num aumento considerável de tráfego. Ainda, a possibilidade de um congestionamento não está muito distante uma vez que uma interface de rede em pane poderá despejar uma grande quantidade de pacotes incompatíveis na rede. Ao contrário das pontes, um roteador não tem necessidade de analisar todos os pacotes circulando na rede. Isto significa que, no caso dos roteadores, o problema descrito acima pode ser evitado pois eles seriam capazes de bloquear aqueles pacotes que não obedecessem a um determinado perfil. É um equipamento bastante poderoso, dado que ele pode interconectar um número relativamente grande de redes, de uma forma transparente ao usuário do serviço. Em aplicações onde haja necessidade de interligação de mais de duas subredes, um roteador deverá certamente o elemento escolhido para realizar a conexão (em lugar de uma ponte). Em aplicações industriais, por exemplo, um bom número de empresas se caracteriza por possuir suas usinas, fornecedores, depósitos, lojas de venda, etc... em locais geograficamente dispersos. A fim de trocar informações entre estes setores, a conexão das diversas redes locais a uma rede de longa distância pode ser viabilizada através de um roteador. Um papel importante desempenhado pelos roteadores está na interconexão de redes heterogêneas. Quando um pacote pertencente a uma subrede implementando um protocolo X deve ser encaminhado a uma subrede implementando um protocolo Y, o roteador deverá realizar as conversões de formato necessárias para que o pacote seja encaminhado respeitando os requisitos impostos pelo protocolo Y. A interconexão entre subredes através de um roteador é ilustrada na figura 6.4. 7. AS PASSARELAS (GATEWAYS) Os gateways são os elementos de interconexão de concepção mais complexa. A sua importância no que diz respeito às necessidades de interconexão das redes é o fato de que nem todas as redes de comunicação implantadas e em funcionamento atualmente foram construídas com base no modelo OSI, muitas soluções "proprietárias" e "padrões de fato" sendo adotados na forma de redes locais. Isto significa que está longe do incomum a necessidade de interligação de redes baseadas no modelo OSI com redes não-OSI. Isto requer, então, a construção de um equipamento de interconexão que seja capaz de compatibilizar as diferenças estruturais e de protocolo existentes entre as duas redes. Este equipamento é o gateway. REDE MAP (OSI) GATEWAY REDE SNA TRADUTOR Aplicação Aplicação Apresentação Usuário Usuário Apresentação serviços NAU serviços NAU Fluxo Dados Fluxo Dados Transporte Controle Transmissão Controle Transmissão Rede Rede Controle Caminho Controle Caminho Enlace Enlace Controle Enlace Controle Enlace Física Física Ligação Física Ligação Física Sessão Sessão Transporte Figura 6.5 - Interconexão baseada em gateway. — 6.7 — CAP. 6 — I NTERCONEXÃO DE REDES PROF. VITÓRIO BRUNO MAZZOLA Os gateways são elementos que devem possuir duas pilhas de protocolos, um sendo baseado na arquitetura a 7 camadas do modelo OSI e o outro, baseado na arquitetura proprietária considerada. Normalmente, os gateways são construídos com uma orientação a uma dada aplicação, como, por exemplo, a interconexão entre uma rede proprietária e uma rede MAP. Outro exemplo disto é a interconexão de uma rede SNA (rede proprietária da IBM) na qual um mainframe IBM está interconectado com uma rede MAP. O gateway a ser construído para realizar esta conexão deveria possuir as 7 camadas (OSI-like) definida pela arquitetura MAP, um programa de aplicação para realizar a transferência de arquivos, e um conjunto de protocolos necessários para a comunicação dentro da rede SNA. — 6.8 — Capítulo 7 ENGENHARIA 1. DE P ROTOCOLOS INTRODUÇÃO A concepção de uma arquitetura de comunicação consiste basicamente do projeto e implementação das entidades de protocolo associadas a cada uma de suas camadas, de modo que estas ofereçam completamente os serviços para os quais elas foram definidas. Esta tarefa deve levar em conta a adoção de uma metodologia que permita produzir o software necessário, uma metodologia podendo ser caracterizada pelos mais diversos aspectos: as diferentes etapas a serem realizadas, os conceitos fundamentais, as técnicas existentes, as ferramentas suportando as diferentes etapas, etc_ À concepção realizada sob tais condições, ou seja, com a utiização de um metodologia orientada ao problema dos protocolos, chamamos Engenharia de Protocolos, que pode ser vista como uma aplicação dos conceitos e métodos da Engenharia de Software à concepção de protocolos de comunicação. Neste documento, serão apresentados os principais conceitos da Engenharia de Protocolos, particularmente, as principais etapas da concepção de uma entidade de protocolo, as diferentes técnicas orientadas a cada etapa, as ferramentas existentes para a concepção dos protocolos. 2. AS ETAPAS DE CONCEPÇÃO DOS PROTOCOLOS DE COMUNICAÇÃO O objetivo da concepção de uma camada de protocolos é gerar um programa concretizando uma entidade de protocolos que ofereça os serviços requeridos para o nível considerado. A concepção deve ser realizada, seguindo um conjunto de procedimentos, ou etapas, que permitam atingir este objetivo num menor tempo e com um maior grau de confiabilidade e de «conformidade», esta segunda característica sendo definida mais à frente. A concepção de uma camada de protocolo segue os mesmos procedimentos definidos pelas técnicas de Engenharia de Programação, onde as principais etapas são: • a etapa de análise de requisitos, onde são levantados todos os pontos relativos ao problema a ser resolvido, o resultado deste levantamento sendo a realização de uma especificação funcional; • a etapa de projeto, caracterizada pela realização de uma especificação detalhada, descrevendo, se possível, de maneira não ambígua, o comportamento de cada componente do software a ser realizado e as suas interações para a resolução dos problemas levantados na primeira etapa; • a etapa de implementação, que consiste na geração e implantação do código executável, o software devendo ser o mais fiel possível do que foi definido na especificação detalhada; — 7.1 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA • a etapa de manutenção do software, onde atualizações podem ser introduzidas de modo a se obter novas versões, mais eficientes e mais completas do programa. A figura 7.1 ilustra estas etapas e as possíveis interações durante o processo de desenvolvimento do programa. A concepção dos protocolos, no entanto, representa um caso particular da concepção de um programa distribuído, apresentando especificidades que devem ser levadas em conta em cada etapa do processo, técnicas e ferramentas tendo sido definidas para esta classe de problemas. A Engenharia de Protocolos tornou-se um tema de pesquisa bastante amplo, os principais trabalhos desenvolvidos estando orientados à definição de técnicas de especificação de protocolos, à definição de metodologias de validação (simulação e verificação) de protocolos, à implementação de camadas de protocolos a partir de especificações formais, à geração de sequências e métodos de teste de protocolos. As seções que seguem apresentarão os principais elementos de cada uma das atividades relacionadas à concepção dos protocolos de comunicação, particularmente no que diz respeito à especificação, validação, implementação e testes de protocolos. 3. A ESPECIFICAÇÃO DE PROTOCOLOS DE COMUNICAÇÃO Os protocolos de comunicação são definidos e apresentados pelas organizações de normalização, na forma de documentos (normas) definindo os principais aspectos relacionados ao funcionamento do protocolo, o formato das unidades de dados, os serviços oferecidos, etc_ especificação informal dos requisitos realização da especificação funcional ANÁLISE DE REQUISITOS validação da especificação funcional especificação funcional realização da especificação detalhada validação da especificação detalhada definição de sequências de teste sequências de teste PROJETO especificação detalhada geração do código de implementação teste do código de implementação validação do código de implementação código de implementação IMPLEMENTAÇÃO Figura 7.1 - As atividades de desenvolvimento do software. — 7.2 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA Estes aspectos, na grande maioria dos documentos (com raras exceções), são apresentados em linguagem natural, podendo conduzir, muitas vezes a implementações diferentes e incoerentes de uma mesma norma. A importância da etapa de especificação está no fato de que, uma vez que ela vai servir de referência para a etapa de geração do código de implementação, ela deve eliminar, por um lado, a totalidade ou grande parte das ambigüidades que possam surgir no que diz respeito aos pontos de funcionamento do protocolo, isto sendo possível graças à utilização de técnicas apropriadas de especificação. 3.1. Aspectos da especificação dos protocolos de comunicação Como foi visto nas partes precedentes do documento, os protocolos de comunicação são organizados segundo uma estrutura hierárquica de diferentes camadas. A especificação dos protocolos, deve levar em conta, num primeiro tempo, os seguintes aspectos: • o serviço a ser oferecido por uma dada camada de protocolos, levando em conta as propriedades locais do ponto de vista de um único ponto de acesso a serviço (SAP), assim como as propriedades globais, levando em conta a existência de vários SAPs; • o protocolo a ser implementado pelas entidades de protocolo de uma dada camada, principalmente o comportamento interno das entidades; • a interface, através da qual o serviço é oferecido num ponto de acesso ao serviço particular. A figura 7.2 ilustra os aspectos apresentados acima. Em 7.2(a), a camada de protocolo é vista como uma caixa preta, cujos serviços serão acessados através dos SAPs; em 7.2(b), o comportamento de uma entidade de protocolo, vista inicialmente como uma caixa preta, será o ponto abordado. Do ponto de vista das interações de usuários e fornecedores de serviço, deve-se levar em conta ainda as primitivas de serviço, caracterizadas por parâmetros que podem incluir informações de controle e dados de usuário e as unidades de dados de protocolo ou PDUs , trocadas entre entidades de protocolos pares. É importante lembrar aqui que, de fato, as PDUs não são trocadas diretamente entre duas entidades de protocolo de um mesmo nível, mas conduzidas através das primitivas de serviço das camadas inferiores. A figura 7.3 ilustra este aspecto, a parte superior da entidade representando a PDU propriamente dita, a parte inferior representando o seu mapeamento nas primitivas de serviço da camada inferior. pontos de acesso ao serviço (SAPs) entidade de protocolo CAMADA DE PROTOCOLO (a) (b) Figura 7.2 - (a) especificação do serviço oferecido por uma camada; (b) especificação do comportamento de uma entidade de protocolo. — 7.3 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA PDUs entidade de protocolo camada inferior Figura 7.3 - Relação entre PDUs e primitivas de serviço. Um exemplo da representação destes aspectos pode ser visto na figura 7.4, onde uma especificação da camada de Transporte do modelo OSI é proposta. Pode-se notar as duas entidades de Transporte que oferecem o serviço de Transporte através dos pontos de acesso a serviço, respectivamente TSAP1 e TSAP2. Estas entidades trocam suas PDUs utilizando o serviço de Rede, oferecido pela camada inferior nos pontos de acesso a serviço correspondentes, respectivamente, NSAP1 e NSAP2. As possíveis interações entre usuários da camada de Transporte, entidades de Transporte e a camada de rede podem ser expressas na forma de um diagrama de tempo como mostra a figura 7.5. Os pontos apresentados até aqui representam aspectos arquiteturais da especificação, os aspectos de comportamento devendo também ser levados em conta. Os aspectos de comportamento a serem levados em conta no momento de uma especificação são: • o sequenciamento temporal das interações, de modo a definir a ordem na qual as operações devem ser efetuadas, incluindo também os diferentes tipos de interações (primitivas de serviço, PDUs) e as regras de ordenação associadas a cada tipo; ainda, devem ser levadas em conta as questões de envio ou recepção de uma interação; TSAP1 TSAP2 ENTIDADE DE TRANSPORTE 1 ENTIDADE DE TRANSPORTE 2 NSAP1 NSAP2 SERVIÇO DE REDE Figura 7.4 - Exemplo de uma arquitetura de comunicação oferecendo um serviço de Transporte. — 7.4 — CAP. 7 — ENGENHARIA DE PROTOCOLOS TSAP1 PROF. VITÓRIO BRUNO MAZZOLA NSAP2 NSAP1 TSAP2 TCON.req CR TCON.ind TCON.rsp CC DATA (SDU) TCON.cnf DT DT DATA (SDU) AK Figura 7.5 - Diagrama de tempo ilustrando as diferentes interações para o exemplo da figura anterior. • os possíveis valores dos parâmetros de uma interação, que vai permitir tipos e valores a serem associados a cada um dos parâmetros de uma primitiva de serviço ou PDU; • as regras de interpretação e seleção de valores dos parâmetros das interações, que permite definir o significado de cada parâmetro de uma primitiva de serviço ou PDU; assim como o comportamento a ser assumido por uma entidade em função de valores de determinados parâmetros; • a codificação das PDUs, definindo a estrutura de dados que vai permitir representálas; • as propriedades do protocolo, que permitirão definir que regras devem ser satisfeitas pelas entidades para que o protocolo progrida; ou ainda, propriedades de tempo real, que permitem associar medidas quantitativas sobre o protocolo (desempenho). Resumindo, a especificação de um protocolo de comunicação deve levar em conta estas duas classes de características: as estruturais, que permitem definir a composição de uma camada em termos de entidades de protocolo e as suas interações; e as de comportamento, que permitem conhecer o comportamento de uma entidade e como ela vai provocar e reagir perante os diferentes eventos relacionados ao funcionamento do protocolo. A representação destas características pode ser feita segundo diferentes técnicas e modelos, uma descrição de algumas delas sendo apresentada na seção que segue. 3.2. Técnicas de especificação de protocolos Muitas especificações de protocolos de comunicação, particularmente aqueles definidos nos órgãos de normalização, utilizam a linguagem natural para expressar os aspectos apresentados na seção anterior. A razão deste aspecto é o fato de que a linguagem natural é o meio mais próximo de conduzir a informação ao leitor de um tal documento. No entanto, para fins de desenvolvimento de um protocolo, é mais interessante que a etapa de especificação seja suportada por um modelo que permita expressar, de maneira mais formal, os mecanismos a serem implantados a nível de uma entidade de protocolo, isto pelas duas razões seguintes: • a linguagem natural pode conduzir à geração de implementações contendo ambigüidades ou incoerências e não permitem a realização de validação e testes; — 7.5 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA • não permite automatizar o processo de desenvolvimento do protocolo, seja para a validação, a implementação ou o teste pois elas não podem ser suportadas por ferramentas automatizadas. Os trabalhos de pesquisa no sentido de definir e aplicar modelos para a especificação de protocolos de comunicação iniciaram há muitos anos atrás, mesmo antes da definição do modelo OSI. Estes conduziram à definição de diversos modelos e técnicas, mais ou menos poderosos na definição, mais ou menos adequados à representação de um subconjunto dos aspectos apresentados na seção 3.1. Exemplos destas técnicas são as máquinas de estado finito, as gramáticas formais, as redes de Petri, os cálculos algébricos, os tipos abstratos de dados, a lógica temporal e as técnicas de descrição formal. Algumas destas técnicas poderiam ser organizadas segundo o modelo matemático sobre o qual são fundadas. Algumas técnicas de descrição formal, por exemplo, combinam o modelo de máquinas de estado finito com o poder de expressão de manipulação de dados das linguagens de programação de alto nível (Estelle, por exemplo). A seção que segue apresenta, através de um exemplo simples, a utilização de algumas das técnicas citadas acima para a especificação dos protocolos de comunicação. 3.3. Um exemplo de especificação de protocolo de comunicação A figura 7.6 apresenta a arquitetura de um protocolo de comunicação a ser considerado na seção. O protocolo define uma relação mestre-escravo (ou cliente-servidor) entre uma entidade fonte e uma entidade destino comunicando-se em half duplex. O comportamento das duas entidades, fonte e destino é apresentado, na forma de fluxogramas na figura 7.7. Como se pode ver na figura, o par de mensagens pedido envio e pronto p/ recepção é relacionado à fase de controle; o par envio dado e dado consumido é relacionado à fase de dados. Ainda, os eventos diretamente relacionados ao protocolo são as chegadas das mensagens pronto p/ recepção e dado consumido. O evento dado a enviar é considerado como interno à entidade fonte, portanto, fora do retângulo pontilhado da figura 7.6. O par de fluxogramas da figura 7.7 não deixa de ser um modelo do protocolo analizado. Nos parágrafos a seguir, vamos introduzir e aplicar duas das técnicas conhecidas para a especificação do protocolo exemplo: as máquinas de estado finito e as redes de Petri. O modelo de máquina de estado finito é baseado sobre uma 5-tupla <X,I,O,N,M> , onde: FONTE DESTINO Figura 7.6 - Arquitetura do exemplo de protocolo de comunicação. — 7.6 — CAP. 7 — ENGENHARIA DE PROTOCOLOS não PROF. VITÓRIO BRUNO MAZZOLA dado a enviar ? sim obtém dado pronto notifica destino PEDIDO ENVIO pedido envio ? não sim prepara recepção não destino pronto ? PRONTO P/ RECEPÇÃO notifica fonte sim envio dado notifica destino ENVIO DADO chegada dado ? não sim leitura dado não dado recebido ? DADO CONSUMIDO notifica fonte sim FONTE DESTINO Figura 7.7 - Representação das entidades de protocolo (fluxograma). X é um conjunto finito de estados; I é um conjunto finito de entradas; O é um conjunto finito de saídas; N é uma função de transição de estado M é uma função de saída (N: I x X → X) (M: X x I → O) As funções N e M permitem expressar o comportamento da máquina de estados em função dos eventos de entrada. Se, de um dado estado, um ou mais eventos de entrada ocorrem, estas funções vão permitir, respectivamente, gerar o novo estado da máquina e as saídas (se for o caso) correspondentes ao evento. No modelo, além de eventos de entrada e saída, que pertenceriam, respectivamente, aos conjuntos I e O, deve-se considerar, como elementos do conjunto I, a ocorrência de eventos internos para permitir especificar a ocorrência de eventos não especificados a nível do sistema a representar (no caso, o protocolo), mas que podem ser importantes para o seu comportamento. Uma máquina de estados finitos pode ser representada segundo diversos métodos, dentre os quais o diagrama de transição de estado. A figura 7.8 apresenta os dois diagramas de estado gerados para o protocolo sob análise. — 7.7 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA OCIOSO Ei1 OCIOSO !pedido envio PRONTO P/ ENVIO ?pedido envio !pronto p/ recepção ?pronto p/ recepção RECEPÇÃO ENVIO Ei2 ?envio dado !envio dado CONSUMO DADO Ei ESPERA ACK !dado consumido ?dado consumido FONTE DESTINO Figura 7.8 - Máquinas de estado finito para as entidades fonte e destino do protocolo considerado. Estes foram construídos com base nos fluxogramas da figura 7.7 e obedecendo aos seguintes critérios: • para a entidade fonte, foram considerados dois eventos internos: Ei1 e Ei2, respectivamente para representar a chegada de um dado a enviar e o fim da transmissão do dado; • para a entidade destino, foi considerado um evento interno, Ei, que representa o final da recepção de um dado. A máquina de estados que representa a entidade fonte é composta de 4 estados (ocioso, pronto p/ envio, envio e espera ack). A entidade destino é representada por uma máquina de estados composta dos estados ocioso, recepção e consumo dado. Outros estados poderiam ainda ser definidos no modelo, como por exemplo, na entidade fonte, poderia-se introduzir um estado preparando dado entre os estados ocioso e pronto p/ envio. Isto, porém, corresponderia não unicamente à representação do protocolo mas também à detalhes da implementação da entidade. A rede de Petri é o modelo também bastante utilizado para a representação dos aspectos ligados aos protocolos de comunicação. Este modelo é baseado na definição de lugares (representando condições) e transições (representando eventos) conectados através de arcos direcionados (por flechas). Os lugares sendo conectados a por um arco dirigido para uma transição são ditos lugares de entrada da transição. Os lugares conectados às transições através de arcos direcionados para eles são denominados os lugares de saída da transição. O estado de uma rede de Petri é definido como sendo a posição de elementos, denominados ficha (em inglês, token), no interior dos lugares. Num dado instante, um lugar pode conter zero, uma ou mais fichas. A figura 7.9(a) mostra a representação gráfica das definições relacionadas ao modelo. De uma forma geral, a execução de uma rede de Petri obedece a um conjunto de regras denominadas regras de tiro das transições, que são as seguintes: — 7.8 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA lugares de entrada ficha transição lugares de saída (a) (b) Figura 7.9 - Princípio das redes de Petri: (a) antes do tiro; (b) depois do tiro. • uma transição é dita habilitada (ou sensibilizada) se cada um dos seus lugares de entrada possui pelo menos uma ficha; • o tiro de uma transição consiste da remoção de uma ficha de cada lugar de entrada e a adição de uma ficha em cada lugar de saída da transição; • o tiro de uma transição toma um tempo nulo, mas pode não ocorrer imediatamente. Matematicamente, uma rede de Petri pode ser representada por uma 4-tupla C = (P,T,I,O), onde: P é o conjunto de lugares (condições) T é o conjunto das trasições (eventos) I é a função entrada O é a função saída P = {p1, p2, _, pN} T = {t1, t2, _, tN} I(tk )= {pi, pj, _} O(tk )= {pm , pn, _} A figura 7.10 mostra as redes de Petri obtidas para o protocolo considerado. Da mesma forma que para o modelo de máquinas de estados finitos, os eventos internos são representados: • o evento interno Ei1 (entidade fonte) é aqui representado pela chegada de uma ficha no lugar B; • o evento interno Ei2 (entidade fonte) é representado pelo tiro da transição t3; • o evento Ei (entidade destino) é representado por pela transição representando uma interação com o ambiente. A distribuição das fichas ao longo dos lugares de uma rede de Petri (que, como foi dito anteriormente, define o estado da rede) é denominada marcação. A partir de uma marcação inicial é possível construir (manualmente ou automaticamente) o conjunto das marcações acessíveis desta. A este conjunto, que pode ser também ser representado graficamente, dá-se o nome de grafo de marcações. A análise do grafo de marcações é um elemento importante na verificação de propriedades de uma rede de Petri, permitindo analizar os principais aspectos do comportamento do sistema (no caso, o protocolo de comunicação) modelizado. No caso do protocolo considerado, a marcação inicial da rede corresponde a uma ficha no lugar A e outra no lugar A’. 3.4. Especificação do serviço de comunicação O exemplo considerado na seção anterior levou em conta a existência de um serviço de comunicação (ou um meio de transmissão) perfeito, sem perda de mensagens, duplicação, erros, etc_ — 7.9 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA A B t1 1 ta A' B' D tb C 2 t2 E t3 3 tc D' C' E' F' G td F 4 t4 FONTE DESTINO Figura 7.10 - Representação em rede de Petri do protocolo considerado. Dependendo do nível do protocolo a especificar, no entanto, pode ser necessário levar em conta a possibilidade de tais eventos ocorrerem. Assim, a incorporação destes aspectos relativos ao funcionamento do suporte de comunicação utilizado para a troca de informação entre duas entidades de protocolo pode tornar-se um aspecto importante na análise do protocolo. Considerando o exemplo da seção anterior, a introdução do comportamento do serviço de comunicação (meio de transmissão, neste caso), a estrutura da especificação teria de ser revista, assumindo o aspecto apresentado na figura 7.11. No que diz respeito à especificação do comportamento, esta deve levar em conta as diferentes ações sob as quais as mensagens consideradas seriam sujeitas, como por exemplo, um atraso variável de transmissão, uma perda de mensagem, a duplicação de uma mensagem, etc_ Numa especificação em máquinas de estado finito, por exemplo, determinados aspectos do comportamento do meio de transmissão podem ser expressos através de eventos internos, como já introduzidos no exemplo da seção 3.3. A figura 7.12 ilustra a especificação, em máquinas de estado de dois modelos de meio de transmissão. Em 7.12(a) é apresentada a modelização de um meio de transmissão perfeito, sem perdas e sem duplicação, onde cada mensagem m recebida é entregue corretamente ao seu destinatário. No modelo apresentado, os caracteres ? e ! acompanhando o identificador m da mensagem indicam, respectivamente, a recepção e o envio de m. Já em 7.12(b) é apresentado um meio de transmissão com possibilidade de perdas, a perda do dado sendo representada por um evento interno (etiqueta τ). — 7.10 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA FONTE DESTINO MEIO DE TRANSMISSÃO Figura 7.11 - Introdução dos aspectos de comportamento relativos ao meio no protocolo considerado. 3.5. Outras técnicas de especificação Os modelos utilizados na seção 3.3 permitem especificar e, particularmente, analizar o comportamento dos protocolos de comunicação de maneira eficiente, particularmente para a representação dos eventos e estados relacionados ao comportamento. No entanto, uma vez que a complexidade do protocolo a representar aumenta, a especificação através destas duas técnicas atinge uma dimensão tal, que torna-se difícil a representação de todos os aspectos do comportamento do protocolo. Devido a este ponto, novas técnicas, baseadas nestes modelos, obtidas pela introdução de extensões ou a combinação com outros modelos, foram definidas e aplicadas à especificação de protocolos, dentre as quais: • as redes de Petri coloridas, que constituem uma extensão das redes de Petri ordinária, onde «cores» podem ser associadas às fichas; isto permite aumentar o poder de expressão da rede, extendendo as regras de tiro, mas simplificando a estrutura da rede construída; • as redes de Petri temporais, que permitem associar um intervalo de tempo (t1,t2) às transições, de modo a tornar possível a representação de mecanismos de temporização, como por exemplo, os mecanismos de timeout nos protocolos baseados na retransmissão de dados; • as técnicas de descrição formal baseadas nas máquinas de estados finitos, como Estelle (ISO) e SDL (CCITT) que introduzem a possibilidade da representação e manipulação de estruturas de dados complexas. 4. A VALIDAÇÃO DE PROTOCOLOS DE COMUNICAÇÃO 4.1. As diferentes facetas da validação de um protocolo de comunicação Como foi mostrado na figura 7.1, o desenvolvimento de um programa é caracterizado por atividades orientadas em dois sentidos opostos (caracterizados, lá, pelas flechas dirigidas para baixo ou para cima): as atividades de síntese, caracterizadas pelas etapas de elaboração dos diferentes níveis de especificação ou da geração do código executável; as atividades de análise ou validação associadas às diferentes fases do desenvolvimento. Sendo assim, é importante levantar os diferentes aspectos da validação de um programa, no caso particular, de um protocolo de comunicação, para bem posicionar as técnicas que serão comentadas nesta seção: — 7.11 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA • o aspecto da validação do protocolo de comunicação está relacionado à investigação se um serviço especificado corresponde ou satisfaz às necessidades do usuário ou da aplicação considerada. Esta validação pode ser concretizada através da análise de um modelo ou protótipo que permita ao usuário determinar se era bem o comportamento esperado. • a investigação de que o protocolo definido permite, efetivamente oferecer o serviço especificado. Este ponto é realmente importante, particularmente no processo de padronização de novos pares de serviços e protocolos, ou na etapa de projeto de um protocolo proprietário. • o teste de uma implementação de uma camada de protocolo para determinar se, efetivamente, ela corresponde àquilo que foi estabelecido nas etapas anteriores de análise de requisitos e especificação. Como podemos, ver, o termo validação atinge uma dimensão bastante abrangente no que diz respeito às etapas de desenvolvimento de um protocolo de comunicação. Nesta seção, vamos limitar o significado da palavra validação associando-o ao segundo ponto levantado, ou seja, aquele relacionado à determinação de que o comportamento das entidades de protocolo especificadas permite oferecer o serviço requerido pelo usuário. Por outro lado, não vamos abandonar o terceiro aspecto, o teste de implementação, também importante, dedicando a este uma seção, mais adiante, no documento. 4.2. Análise estática x análise dinâmica A tarefa de validação de uma especificação de um protocolo de comunicação pode representar um grau de dificuldade relativamente elevado, particularmente devido às características de concorrência e não determinismo, intrínsecas às entidades de protocolos. O interesse da utilização de modelos e métodos formais para especificar protocolos de comunicação reside, principalmente, na possibilidade de implementação de técnicas de validação eficientes. Uma primeira classificação no que diz respeito às técnicas de validação de uma especificação de protocolo pode ser caracterizada na forma como os aspectos do funcionamento das entidades de protocolo são analizados. Sob este ponto de vista, podemos destacar as duas classes seguintes de validação: • análise estática, onde o funcionamento do protocolo é validado através de uma inspeção detalhada da sua especificação formal (texto da especificação, representação gráfica, modelo matemático, _); esta classe de validação permite detectar e corrigir uma série de erros, como erros de sintaxe e semântica, regras de escôpo, conformidade de tipos, etc_, que pode ser automatizada em muitos casos, é similar ao trabalho efetuado pelos tradutores (compiladores) para as linguagens de programação; • análise dinâmica, onde é levado em conta o comportamento do sistema especificado num determinado ambiente de execução; evidentemente, esta classe de validação pode tornar-se muito mais complexa do que as técnicas de análise estática, principalmente devido aos diferentes aspectos dinâmicos relacionados ao comportamento do protocolo; ela permite, porém, detectar tipos de erros que são impossíveis de serem detectados na análise estática. — 7.12 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA ESPERA DADO !m ESPERA DADO !m ?m DADO RECEBIDO τ ?m DADO RECEBIDO (a) (b) Figura 7.12 - Representação em máquinas de estados finitos do meio de transmissão: (a) perfeito; (b) com perda de mensagens. 4.3. Análise dinâmica: simulação x verificação Dentro do universo das técnicas de validação por análise dinâmica, podemos destacar subclasses, isto sob o ponto de vista de como é realizada a exploração do comportamento do protocolo de comunicação. Desta forma, podemos destacar os métodos exaustivos (ou de verificação) e os não exaustivos (ou de simulação). Os métodos exaustivos são assim denominados pelo fato de explorarem completamente o comportamento do sistema especificado, ou seja, todas as possibilidades de execução do protocolo de comunicação (eventos, possíveis valores de parâmetros, etc_). Naturalmente, estes métodos são bastante difíceis de serem implementados principalmente devido à grande quantidade de pontos que devem ser examinados, pontos estes, relativos à execução da especificação. Entretanto, os métodos de análise exaustiva permitem obter bons resultados quando aplicados sobre especificações simplificadas ou abstratas do protocolo (neste caso, como garantir a exaustividade?). Exemplos desta classe de técnicas de análise são: • a análise de alcançabilidade, baseada na construção de um grafo de alcançabilidade do sistema especificado através de modelos baseados em máquinas de estados finitos, redes de Petri, etc_; • a verificação de programas e asserções, no caso da utilização de gramáticas formais ou álgebras de processos. Os métodos não exaustivos ou de simulação realizam uma validação parcial, onde apenas determinados aspectos do comportamento do protocolo podem ser analizados. São métodos que podem ser aplicados sem problemas a especificações de porte real, uma vez que uma seleção pode ser efetuada no que diz respeito aos aspectos a analizar. Uma questão que se coloca aí é relacionada à que método é o mais eficiente ou que método escolher para a realização de uma validação eficiente. Não é uma questão fácil a ser respondida. Pode-se, porém colocar o problema do seguinte ponto de vista: no caso de especificações de pequeno porte ou especificações abstratas de um protocolo de comunicação, as técnicas exaustivas permitem explorar totalmente as possibilidades de comportamento da especificação, apresentando resultados menos bons (quando algum resultado pode ser obtido!) no caso de grandes especificações (neste caso, o que é uma especificação de pequeno porte e uma especificação de grande porte_como é possível medí-las?), as técnicas de simulação sendo, então, mais adequadas a esta classe de especificações. Mas, ainda, por que impor uma escolha com relação à utilização de um método ou outro? Por que não os dois? Por que não utilizá-los de maneira complementar? São — 7.13 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA questões que podem ser colocadas e que poderiam ajudar a responder a uma necessidade de validação crescente no domínio dos protocolos e sistemas distribuídos. Ou então, por que não uma técnica híbrida? Por que não juntar as vantagens de uma simulação com as potencialidades (as características de exaustividade) de uma análise de alcançabilidade, por exemplo? Muitos dos trabalhos realizados hoje, no campo da validação de protocolos de comunicação orientam-se à resposta a estas questões. 4.4. A validação de protocolos de comunicação (o que validar?) Como foi determinado na seção 4.1, o sentido dado aqui ao termo validação é associado à investigação de que a especificação de um protocolo de comunicação permite o oferecimento do serviço requerido. A figura 7.13 retrata este aspecto, de modo que o resultado da validação deve basear-se numa comparação entre a especificação do serviço requerido e aquele oferecido pela especificação do protocolo de comunicação. A essência da especificação de um protocolo, como já levantado na seção 3, é o comportamento das entidades de protocolo e do meio de transmissão, na forma das possíveis sequências de eventos associados à execução de cada elemento e às interações dos diferentes elementos. A especificação dos serviços pode ser expressas na forma de propriedades que, uma vez verificadas, permitem demonstrar que o serviço oferecido pela camada de protocolo vai corresponder, efetivamente, ao serviço requerido. Uma primeira classe de propriedades a serem verificadas deve permitir garantir que eventos prejudiciais não devem ocorrer durante o funcionamento do protocolo — um exemplo destes eventos são aqueles que possam conduzir a um estado de bloqueio. A esta classe de propriedades, dá-se o nome de propriedades de segurança (safety properties). A segunda classe de propriedades, as propriedades de progressão (liveness properties), deve permitir garantir que uma vez que o protocolo evolui, ele realiza tarefas úteis, como, por exemplo, a transmissão de uma mensagem. 4.5. Análise de alcançabilidade Como vimos na seção 3, uma boa parte dos modelos utilizados para a especificação dos protocolos de comunicação é baseada sobre o formalismo dos sistemas de transição (máquinas de estados finitos, redes de Petri, Estelle, _). Uma técnica das mais aplicadas à validação de protocolos especificados segundo este modelo é a análise de alcançabilidade, cujos primeiros trabalhos foram realizados sobre as máquinas de estado finito. primitivas de serviço primitivas de serviço especificação do protocolo N entidade N entidade N oferece especificação do serviço N serviço N-1 Figura 7.13 - Princípio da validação de um protocolo de comunicação. — 7.14 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA A construção do grafo de alcançabilidade visa dar uma visão de todas as possíveis sequências de eventos podendo ocorrer num protocolo especificado por um sistema de transições. Um aspecto importante desta atividade, é o fato que, uma tal especificação pode ser caracterizada pela existência de diversos componentes, cada um representando um elemento importante da camada ou da arquitetura considerada. Sendo assim, o paralelismo existente na especificação deve ser considerado, a operação que vai permitir representar este aspecto sendo a composição paralela. A figura 7.14 mostra o exemplo de uma especificação de um serviço de Enlace, utilizando o modelo de máquinas de estado finito. Este serviço é representado sob a forma de duas filas de capacidade 1, para construir uma fila de capacidade 2. Os processos envolvidos podem efetuar as seguintes operações: 1 aceitar uma mensagem 0 ou 1 na porta a; 2 sincronizar-se na porta c como resultado de um dos pares de eventos <c?0;c!0> ou <c?1;c!1>; 3 emitir a primeira mensagem na porta b, e reinicializar ou aceitar a segunda mensagem na porta a; 4 emitir a primeira mensagem na porta b e sincronizar na porta c para a emissão da segunda mensagem; 5 emitir a segunda mensagem na porta b e reinicializar ou aceitar a terceira mensagem na porta a. Utilizando os operadores de composição paralela existentes para os sistemas de transição, o espaço de estados global pode ser construído. O resultado é mostrado na figura 7.15. Como se pode ver, a porta c não é representada nesta figura. Isto porque, como os eventos ocorrendo na porta c, são unicamente relacionados com os dois processos representando cada uma das filas, estes são considerados eventos internos, não aparecendo nem mesmo na descrição do comportamento da composição paralela. Estes são representados pela etiqueta τ. O estado inicial do espaço de estados é representado, lá, pela etiqueta ( • , • ). Os possÍveis comportamentos descritos nos parágrafos de 1 a 5 podem ser relacionados às seguintes transições de estado: 1 ( •,• ) → ( 0,• ) e ( •,• ) → ( 1,• ) 2 os arcos etiquetados por τ; 3 ( •,0 ) → ( •,• ) e ( •,1 ) → ( •,• ) ou ( •,0 ) → ( 0,0 ), ( •,0 ) → ( 1,0 ), ( •,1 ) → ( 1,1 ) e ( •,1 ) → ( 0,1 ) 4 ( 1,0 ) → ( 1,• ) → ( •,1 ) ou ( 0,1 ) → ( 0,• ) → ( •,0 ) ou ( 0,0 ) → ( 0,• ) → ( •,0 ) ou ( 1,1 ) → ( 1,• ) → ( •,1 ) 5 ( •,0 ) → ( •,• ) ou ( •,0 ) → ( 1,0 ) ou ( •,0 ) → ( 0,0 ) e ( •,1 ) → ( •,• ) ou ( •,1 ) → ( 1,1 ) ou ( •,1 ) → ( 0,1 ) a c!0 b c!1 0 b!0 1 a?0 c c a?1 b!1 1 0 c?0 c?1 Figura 7.14 - Especificação de um canal com fila de mensagem de capacidade 2. — 7.15 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA a b a?0 ·,1 0,1 τ b!1 b!1 a?0 ·,· 0,· a?1 1,1 b!1 a?1 1,· τ b!0 b!0 b!0 0,0 a?0 ·,0 a?1 1,0 Figura 7.15 - Grafo de alcançabilidade gerado para a especificação da figura 7.14. O exemplo considerado apresenta um nível de complexidade bastante baixo, o que permite efetuar a composição paralela e a análise do comportamento global sem a utilização ferramentas automatizadas. No entanto, no caso de especificações de protocolos de porte realista, esta análise vai requerer a aplicação de algoritmos de geração do grafo de alcançabilidade dentro do contexto de uma ferramenta de validação. Ainda assim, o processo de verificação da especificação de um protocolo através de uma ferramenta automatizada pode não apresentar um resultado bem adaptado à análise devido ao grande número de estados e caminhos possíveis entre os estados. Existem várias técnicas que permitem resolver este problema, uma delas sendo a da verificação por abstração. 4.6. A verificação por abstração A verificação por abstração é baseada na construção do grafo de alcançabilidade e a sua posterior redução (obtenção de um autômato quociente) através da aplicação de princípios de equivalência entre processos. O autômato quociente obtido a partir do grafo de alcançabilidade vai oferecer uma visão abstrata do sistema, graças à eliminação de grande parte dos eventos, considerados irrelevantes à análise em curso. A análise de comportamento torna-se, então mais simples (ou possível) de ser realizada pela obtenção de um autômato comportando um número muito menor de estados que aquele do grafo de alcançabilidade a partir do qual ele foi gerado. A aplicação da verificação por abstração é baseada na definição de duas classes de eventos associadas ao comportamento de um processo: • os eventos externos ou observáveis, caracterizando normalmente as interações do processo com o seu ambiente (usuários da camada de protocolo, o suporte de transmissão, etc_); • os eventos internos, caracterizando ou os eventos expontâneos dos processos, ou as interações entre componentes do processo (com relação ao exemplo apresentado anteriormente, as interações realizadas na porta c são consideradas τ eventos internos — na composição paralela, eles foram etiquetados por ). A diferença entre estas duas classes de evento se traduz a nível do autômato quociente. Os eventos observáveis aparecendo no grafo de alcaçabilidade são, normalmente repassados ao autômato quociente, representados na forma de transições etiquetadas. Já — 7.16 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA os eventos internos podem, ou desaparecer, ou aparecer na forma de transições «invisíveis» (etiquetados por τ) no autômato quociente. Diferentes relações de equivalência podem ser consideradas, onde cada relação vai permitir obter uma visão distinta do comportamento do sistema a verificar, entre elas: a equivalência de rastro (ou de linguagem), a equivalência observacional e a equivalência de teste. A equivalência de rastro é baseada na análise de comportamento de um processo em função das possíveis sequências de eventos observáveis que ele é capaz de oferecer. A aplicação desta relação sobre um grafo de alcançabilidade se traduz, de um lado pela eliminação de todos os eventos internos ou invisíveis e, por outro lado, da manutenção de apenas uma instância de um mesmo evento observável associada a um mesmo estado. Esta relação pode ser ilustrada com o auxílio dos pares de processos representados na figura 7.16, todos equivalentes segundo esta relação. 4.7. Exemplo de verificação de um protocolo: o bit alternado O protocolo do bit alternado representa um protocolo de enlace, utilizado principalmente para ilustrar procedimentos de especificação e validação de protocolos. As características do protocolo são as seguintes: • o receptor deve enviar reconhecimento das mensagens recebidas corretamente (as mensagens incorretas podendo ser detectadas com o auxílio de códigos de detecção de erros — CRC, por exemplo); • as mensagens são numeradas sequencialmente para o controle de perdas; o emissor vai retransmitir uma mesma mensagem periodicamente (mecanismo de timeout) até que ele receba o reconhecimento com o número de sequência da mensagem corespondente; • quando um reconhecimento da mensagem enviada é recebido, o emissor incrementa o seu estado e para o próximo número de sequência a considerar; • uma vez que os reconhecimentos podem também ser perdidos, o receptor deve retransmitir os reconhecimentos (pelo mesmo mecanismo de retransmissão) até que uma mensagem contendo o próximo número de sequência seja recebida; • o protocolo é do tipo «envia-espera», de modo que apenas dois números de sequência (0 e 1) podem ser definidos para as mensagens e os reconhecimentos (assim, um bit alternando entre 0 e 1 — vem daí o nome do protocolo — permite implementar o sequenciamento das mensagens). A figura 7.17 representa a especificação, em máquinas de estado finito do protocolo considerado. As portas c e d são utilizadas, para o envio das mensagens geradas pelo emissor (a partir da recepção de uma mensagem m na porta a). As portas e e f são utilizadas para o envio dos reconhecimentos ao emissor, quando da recepção de uma mensagem de sequência correta. A a B a a C 1 1 1 a a E a 3 b b 4 3 b b a a b b c 5 6 c 4 a a 3 4 b 1 1 2 a 2 3 2 a F a a 2 t 1 a a a D 2 2 c c 6 3 b 5 b a 3 4 c 4 5 b c 7 b c b c Figura 7.16 : Ilustração da equivalência de traço. — 7.17 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA Para efeito de simplificação, o comportamento dos canais é representado por eventos representando simultaneamente, a recepção de uma mensagem no canal numa porta e a sua reemissão na porta correspondente. Os eventos c?0 e c?1, f?0 e f?1, representam, respectiva-mente, as perdas das mensagens e dos reconhecimentos no meio. Os estados r e s representam, respectivamente, a recepção de uma mensagem na porta d e a recepção de uma mensagem na porta a. O grafo de acessibilidade gerado para esta especificação é apresentado na figura τ 7.18. As transições etiquetadas por representam as perdas e retransmissões de mensagens e de reconhecimentos (para facilitar o entendimento do grafo, as portas associadas aos eventos internos foram também especificadas). Como se pode verificar o protocolo especificado não apresenta situações de bloqueio (deadlocks). Por outro lado, os diversos loops presentes no grafo de acessibilidade podem indicar situações de não progresso do protocolo. Os loops representam as retransmissões provocadas pela expiração do mecanismo de timeout associado. a b c!0 a? c d c?1/d!1 b! b! f?0 e?0 e e f f r f?1/e!1 d?1 f!1 f?1 Emissor d?0 d?1 f?0/e!0 a? d?0 d?1 e?0 e?0 r d c?1 e?1 c!1 d?0 c e?1 s f!0 c?0/d!0 s e?1 f!1 c?0 Meio f!0 Receptor Figura 7.17 - Especificação do protocolo bit alternado em máquinas de estado finito. a b a?m τ b!m τ τ fe(1) τ τ s cd(0) τ τ fe(1) b!m τ r b!m s τ fe(0) τ τ cd(1) τ τ r fe(0) a?m τ τ b!m τ Figura 7.18 - Grafo de alcançabilidade gerado para a especificação da figura 7.17. — 7.18 — CAP. 7 — ENGENHARIA DE PROTOCOLOS 5. PROF. VITÓRIO BRUNO MAZZOLA A IMPLEMENTAÇÃO DOS PROTOCOLOS DE COMUNICAÇÃO Esta seção descreve as linhas gerais relativas à obtenção de um programa executável implementando o protocolo a partir de uma especificação formal baseada numa das técnicas de descrição existentes. Como foi observado nas duas seções precedentes, a especificação de um protocolo de comunicação para análise do comportamento não deve levar em conta unicamente os aspectos relativos ao comportamento das entidades de protocolo envolvidas, mas também, os aspectos relativos ao comportamento do ambiente no qual elas vão executar. No caso particular dos protocolos de comunicação, o ambiente de execução consiste dos usuários do serviço oferecido (as entidades de protocolo da camada superior) e do serviço oferecido pela camada inferior (serviço de rede, de enlace, meio de transmissão, etc_). Sendo assim, podemos definir, numa especificação de uma camada de protocolo, duas porções distintas: • a parte independente de máquina, relativa à descrição do comportamento e das interfaces associadas às entidades de protocolos em desenvolvimento; • a parte dependente de máquina, que só pode ser refinada no momento da integração do programa executável no sistema alvo; a nível de especificação, esta parte deve ser descrita, da forma mais abstrata possível, mas tentando traduzir, de forma fiel os possíveis comportamentos do ambiente no qual as entidades vão executar. O processo de implementação de uma camada de protocolo a partir de uma especificação formal é caracterizado, geralmente por um processo semiautomatizado, onde aqueles aspectos dependentes de máquina devem ser substituídos, normalmente de maneira «artesanal» pelos aspectos reais do sistema (suporte de comunicação disponível, estruturas de dados a considerar, _). Isto corresponde, normalmente, à transformação da especificação de validação em uma especificação orientada à implementação, que leva em conta as substituições mencionadas. A partir desta nova especificação, ferramentas de tradução vão permitir gerar, um programa em linguagem de programação de alto nível (C, Pascal, _), que será compilado e integrado ao ambiente de execução. Atualmente, um extenso conjunto de ferramentas está disponível para a geração de código a partir de especificação formal de protocolos, particularmente a partir de especificações baseadas nas técnicas de descrição formal como Estelle e LOTOS. 6. O TESTE DE PROTOCOLOS DE COMUNICAÇÃO Na etapa de testes aplicados sobre uma especificação, dois principais aspectos devem ser abordados: • o primeiro aspecto diz respeito à verificação se uma dada implementação corresponde efetivamente à especificação do serviço como foi estabelecido no documento de normalização; • o segundo aspecto, diz respeito à verificação se uma implementação executa corretamente no contexto de um sistema de comunicação heterogêneo, objetivo essencial da definição do modelo de referência OSI. A atividade de teste que permite assegurar o primeiro aspecto é denominada o teste de conformidade do protocolo, o segundo aspecto sendo coberto pelos testes de interoperabilidade. O teste de uma implementação é caracterizado normalmente pela análise do comportamento da especificação em função de todas as possíveis interações ocorrendo nas suas interfaces (primitivas de serviço, por exemplo). A determinação de todas as — 7.19 — CAP. 7 — ENGENHARIA DE PROTOCOLOS PROF. VITÓRIO BRUNO MAZZOLA possíveis interações podendo intervir nas interfaces de uma implementação de protocolo é denominada a geração de sequência de testes. A tendência dos trabalhos realizados no domínio da Engenharia de Protocolos vai no sentido principalmente do desenvolvimento da primeira classe de testes. Dentro desta perspectiva, os trabalhos visam, fundamentalmente: • à definição de métodos de testes de implementação, a técnica podendo variar em relação a como a implementação é submetida; • à definição de sequências de testes a nível dos organismos de normalização; • à definição de blocos de conformidade a serem utilizados como referência no momento da realização de testes; • à definição de técnicas para a representação de sequências de teste, um resultado importante obtido a nível da ISO, sendo o formalismo TTCN (Tree and Tabular Combined Notation); • à geração de sequências de teste na etapa de projeto (como mostrado em 7.1), isto podendo ser automatizado por métodos e ferramentas de software; trabalhos têm sido realizados nesta área para permitir a geração das sequências de teste a partir de especificações formais em máquinas de estados finitos, Estelle e Lotos, alguns dos quais permitem obter a representação da sequência de testes segundo a notação TTCN. 7. CONCLUSÃO Nesta parte do documento foram analizados os principais pontos relativos ao desenvolvimento de protocolos de comunicação, fazendo uma distinção entre as diferentes etapas deste desenvolvimento, particularmente a especificação, a validação, a implementação e os testes. Maior ênfase foi dada às duas primeiras etapas, a bibliografia especializada podendo servir como base para o aprofundamento dos conhecimentos em qualquer das etapas citadas. Um ponto fundamental porém, não aprofundado nesta parte do documento foi a importância das técnicas de descrição formal normalizadas na ISO e no CCITT, Estelle e Lotos de um lado e SDL do outro. Este aspecto será aprofundado na parte seguinte, sendo que vamos estudar detalhadamente os mecanismos oferecidos pela Técnica de Descrição Formal Estelle e a utilização destes e das ferramentas associadas para a concepção dos protocolos de comunicação. — 7.20 — Capítulo 8 REDES 1. DE P1 a P2 PETRI b P3 c INTRODUÇÃO As Redes de Petri foram introduzidas em 1962, a partir de uma tese de doutorado desenvolvida na Alemanha por Carl Adam Petri. Traduzido para o português, o título de sua tese corresponderia a “Comunicação com Autômatos” e o objetivo era o estabelecimento de um modelo matemático que permitisse expressar os aspectos de comunicação num sistema computacional. A partir de 1968, o interesse deste modelo motivou o aparecimento de trabalhos os mais diversos para a representação de problemas computacionais, consolidando o modelo, que passou a ser conhecido como Redes de Petri na modelagem e análise de programas das mais diversas naturezas. As primeiras aplicações das Redes de Petri foram realizadas sobre sistemas de produção, para a representação de tarefas de montagem e a geração de planos, através de um grande número de pesquisas realizadas na França, aproveitando as experiências utilizando o Grafcet, uma linguagem de programação de controladores programáveis. Na continuidade dos estudos sobre as Redes de Petri, diversos trabalhos mostraram sua utilidade para a modelagem e análise dos problemas inerentes aos protocolos de comunicação e extensões e modelos foram desenvolvidos a partir daí. O objetivo deste capítulo é apresentar os principais conceitos associados às Redes de Petri e como estas podem ser utilizada para o desenvolvimento de modelos e análise dos problemas intrínsecos aos protocolos de comunicação. 2. REDES DE PETRI — DEFINIÇÃO BÁSICA 2.1. Elementos de uma rede de Petri Matematicamente, uma Rede de Petri é definida com um quádruplo R = <P,T,Pre,Post> Onde: • • • • P, é um conjunto finito de lugares; T, é um conjunto finito de transições; Pre, é uma aplicação incidência precedente; Post, é uma aplicação incidência posterior. Graficamente, os elementos de uma Rede de Petri podem ser ilustrados como mostrado na figura 8.1. — 8.1 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA a c P2 3 P1 P3 3 b d Figura 8.1 — Ilustração dos elementos de uma Rede de Petri. Utiliza-se também a notacão: C = Post - Pre 2.2. Marcação de uma Rede de Petri Uma Rede de Petri marcada é representada matematicamente por uma dupla N = <R,M> Onde: • • R, é uma Rede de Petri; M, é uma marcação inicial, sendo uma aplicação do tipo M:P → N M(p) é o número de marcas, ou fichas contidas no lugar p. 2.3. Grafo e notações matriciais Como se pode verificar na figura 8.1, as Redes de Petri podem ser expressas graficamente por um grafo onde se observam dois tipos de nó: os lugares e as transições. Um arco conecta um lugar p a uma transição t se e somente se Pre(p,t) ≠ 0. Um arco conecta uma transição t a um lugar p se e somente se Post(p,t) ≠ 0. Os valores não nulos de Pre e Post são associados aos arcos como rótulos. Quando um arco não possui rótulo, o valor default é 1. A marcação M pode ser representada por um vetor que tem por dimensão o número de lugares; Pre, Post e C podem ser representados por matrizes cujo númeroo de linhas é igual ao número de lugares e o número de colunas é igual ao número de transições. Para o exemplo da figura 8.1, pode-se obter as seguintes notações: • P = {p1,p2,p3} • T = {a,b,c,d} • 0 1 0 0 Pr e = 1 0 3 0 0 0 0 1 — 8.2 — CAP. 8 — R EDES DE PETRI 2.4. PROF. VITÓRIO BRUNO MAZZOLA • 1 0 0 0 Post = 0 1 0 3 0 0 1 0 • 1 −1 0 0 C = − 1 1 − 3 3 0 0 1 − 1 • 0 M = 3 0 Definições e regras de disparo 2.4.1. Rede de Petri Pura Uma Rede de Petri é definida como pura, se para todas as transições, não existe nenhum lugar que esteja, ao mesmo tempo, na entrada e na saída, ou seja, a rede não possui nenhuma malha elementar. A Rede de Petri da figura 8.1 é uma Rede de Petri Pura, enquanto que a rede da figura 8.2 não apresenta esta propriedade. 2.4.2. Transição Habilitada Uma transição t é dita habilitada se e somente se: ∀p ∈ P M(p) ≥ Pre(p,t) Ou seja, todos os lugares de entrada da transição considerada devem possuir, no mínimo, o número de fichas correspondentes ao peso do arco que liga o lugar à transição. Por exemplo, para a rede da figura 8.1, considerando a marcação inicial igual a: 0 M = 3 0 as transições habilitadas são a e c, porque 0 Pr e(•,a ) = 1 e Pr e(•, c ) = 0 e, portanto, 0 3 0 M(p) > Pre(•,a) e M(p) > Pre(•,c) 2.4.3. Disparo de uma Transição Se t é uma transição habilitada a partir da marcação M, o disparo de t origina uma nova marcação M‘ de forma que: ∀p ∈ P M’(p) = M(p) – Pre(p,t) + Post(p,t) — 8.3 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA a c P2 3 P1 P3 e 3 b d Figura 8.2 — Exemplo de uma Rede de Petri não pura. Por exemplo, na rede da figura 8.1, após o disparo da transição a, considerando a marcação inicial M, obtém-se a seguinte marcação M’: 0 0 1 M ' = 3 − 1 + 0 = 0 0 0 1 2 0 2.4.4. Conflito e Paralelismo O conflito em Redes de Petri pode ser definido em dois níveis: o conflito estrutural e o conflito efetivo. O conflito estrutural refere-se àquele estabelecido em função da estrutura (layout) da própria rede. Duas transições t1 e t2 encontram-se em conflito estrutural se existe pelo menos um lugar de entrada comum entre as duas. ∃p Pre(p,t1).Pre(p,t2) ≠ 0 O conflito efetivo está relacionado a questões circunstancial de disparo das transições. Duas transições t1 e t2 encontram-se em conflito efetivo se elas encontram-se em conflito estrutural e se: M ≥ Pre(•,t1) M ≥ Pre(•,t2) O paralelismo é visto igualmente nos mesmo níveis que o conflito. Duas transições, t1 e t2 encontram-se em paralelismo estrutural se: (Pre(•,t1))T x Pre(•,t2) = 0 Ou seja, elas não possuem nenhum lugar de entrada em comum. Duas transições, t1 e t2 estão em paralelismo efetivo se elas possuem paralelismo estrutural e se: M ≥ Pre(•,t1) M ≥ Pre(•,t2) Para o exemplo da figura 8.1, as transições a e c estão em conflito estrutural, pois Pre(p2,a).Pre(p2,c) = 3 e as transições b e d estão em paralelismo estrutural. Para a marcação inicial da rede considerada, a e c estão em conflito efetivo. Por outro lado, se for considerada a marcação M’ descrita abaixo, pode-se dizer que as transições b e d são efetivamente paralelas. — 8.4 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA 1 M ' = 0 1 2.4.4. Seqüência de Disparo numa Rede de Petri ta tb Se M 0 → M1 e M 1 → M 2 pode-se dizer que a seqüência “ta tb” é disparável a partir de M 0, o que pode ser notado como: ta tb M 0 →M2 Seja s um vetor cujos componentes s (t ) são os números de ocorrências das transições t numa seqüência de disparo s, este vetor é denominado vetor característico de s e sua dimensão é igual ao número de transições da Rede de Petri. Tomando como exemplo a Rede de Petri da figura 8.1, tem-se, por exemplo, a seqüência “s = a a b”: 0 1 2 1 3 → 2 → 1 → 2 a a b 0 0 0 0 e 2 1 a a b= 0 0 As evoluções da marcação de uma Rede de Petri podem ser dadas pela equação: M’ = M – Pre. s + Post. s A mesma equação pode ser escrita como sendo: M’ = M + C. s com M ≥ 0, s ≥ 0 Esta equação é denominada equação fundamental de uma Rede de Petri. É importante notar que não basta encontrar um vetor que satisfaça a equação acima para garantir que existe uma seqüência de disparo da marcação M à marcação M’. É preciso também que a marcação inicial seja tal que as transições serão efetivamente habilidatas para cada marcação intermediária. Tomando como exemplo a Rede de Petri da figura 8.3, se: 1 0 M = 0 0 − 1 − 1 1 1 1 −1 0 0 C = 0 1 −1 0 1 − 1 0 0 — 8.5 — 1 1 abcd = 1 1 CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA P1 a P2 b P3 c P4 d Figura 8.3 — Exemplo de seqüência inválida. No entanto, analisando-se a rede, observa-se que a seqüência abcd não é válida, pois, após o disparo de a, a transição b, fica desabilitada. Portanto, não se pode escrever: abcd M → M 2.4.5. Conjunto das Marcações Acessíveis O conjunto das marcações acessíveis A(R;M 0) de uma Rede de Petri marcada é o conjunto de marcações que se pode atingir a partir da marcação inicial M 0 por uma seqüência de disparo. A notação utilizada para isto é: s A(R;M 0) = { M i , ∃ s M 0 → Mi } Considerando que este conjunto é finito, é possível representá-lo sob a forma de um grafo G A(R;M 0). Este grafo terá por vértices o conjunto das marcações acessíveis A(R;M 0), um arco orientado conecta dois nós M i e M j se existe uma transição t disparável que permita t passar da marcação M i a M j , ou seja: M i → Mj Em geral os arcos do grafo são etiquetados pelas transições correspondentes, o que caracteriza o grafo de marcações como a máquina de estados equivalente da Rede de Petri. A figura 8.4 ilustra o grafo de marcações obtido para a Rede de Petri da figura 8.1. 3. PROPRIEDADES DAS REDES DE PETRI Um modelo descrito na forma de uma Rede de Petri pode oferecer importantes informações relacionadas ao problema ou sistema para o qual o mesmo foi construído. As propriedades que podem ser observadas num modelo em Rede de Petri podem estar ou não associadas à marcação inicial da mesma. No caso de propriedades associadas à marcação inicial, não é evidente que conclusões poderão ser obtidas facilmente, uma vez que nem sempre o conjunto de marcações acessíveis é finito. — 8.6 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA 0 3 0 a b c d 1 2 0 a 0 0 1 b 2 1 0 a b 3 0 0 Figura 8.4 — Grafo de marcação para a Rede de Petri da figura 8.1. Por outro lado, no caso de propriedades que não dependem da marcação (as propriedades estruturais), podem permitir a obtenção de resultados importantes, a partir da resolução de sistemas de equações lineares. 3.1. Rede de Petri K-limitada (Limitação) Esta definição está associada à definição de lugar k-limitado e binário. 3.1.1. Lugar K-limitado e Binário Um lugar p de uma rede marcada é dito k-limitado se e somente se: ∀M’ ∈ A(R;M 0) M’ ≤ k Se k = 1, diz-se que o lugar é binário (ou salvo). Considerando a Rede de Petri da figura 8.1, pode-se verificar que para a marcação inicial considerada desde o início, o lugar P3 é salvo, enquanto os lugares P1 e P2 são 3-limitados. 3.1.2. Rede de Petri marcada K-limitada e salva Uma Rede de Petri marcada N é dita k-limitada se e somente se todos os lugares são k-limitados. Uma Rede de Petri marcada é dita salva se e somente se todos os seus lugares são salvos (binários). A Rede de Petri da figura 8.1 é 3-limitada para a marcação inicial que foi considerada desde o início deste capítulo (3 fichas no lugar P2). Se a marcação inicial fosse de apenas uma ficha em P2, a Rede de Petri seria salva, observando que, para esta marcação, as transições c e d jamais seriam habilitadas. Por outro lado, se considerarmos a Rede de Petri da figura 8.5, para a marcação inicial indicada na figura, a cada vez que a seqüência de transições a b ocorre, uma ficha é gerada no lugar P3. Sendo assim, a Rede de Petri considerada não é limitada porque o lugar P3 não é limitado. Se aprofundarmos a análise desta rede, vamos concluir que os lugares P1 e P2 também não são limitados. — 8.7 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA P1 a P2 P3 b c Figura 8.5 — Uma Rede de Petri não limitada. Esta propriedade de limitação pode ter interpretações diversas, dependendo, é claro, do sistema representado na rede. Por exemplo, no caso do modelo de um protocolo de comunicação, a produção de fichas num lugar pode significar o aparecimento de mensagens numa entidade que não tem capacidade de dar vazão a estas. Portanto, em grande parte dos modelos construídos com base nas Redes de Petri, a verificação desta propriedade é um bom sinal para o sistema. Sendo assim, diz-se que esta é uma boa propriedade. 3.2. Rede de Petri Viva (Vivacidade) A vivacidade de uma Rede de Petri é uma propriedade relacionada à marcação e às transições da rede. 3.2.1. Transição Quase-Viva Uma transição t de uma Rede de Petri Marcada N com: N = <R,M 0> é dita quase-viva se e somente se existe uma seqüência de disparo s tal que: s t M0 → M' e M' → Pode-se, ainda, escrever esta condição por: st M 0 → 3.2.2. Transição Viva Uma transição t de uma Rede de Petri Marcada N com: N = <R,M 0> é dita viva se e somente se: — 8.8 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA st ∀M’ ∈ A(R;M 0) ∃ s M → Traduzindo em texto, pode-se dizer que uma transição é quase-viva se existe uma seqüência de transições a partir da marcação inicial que vai conduzir a seu disparo. Uma transição será dita viva quando, para qualquer marcação da Rede de Petri existir uma seqüência de transições que vai conduzir a seu tiro. 3.2.3. Rede de Petri Viva Uma Rede de Petri Marcada N = <R,M 0> é dita viva se e somente se todas as suas transições forem vivas. Para a Rede de Petri Marcada da figura 8.6, por exemplo, o Grafo de Marcação para a marcação inicial indicada na figura é mostrado na figura 8.7. Analisando o grafo, pode-se concluir que a transição d é quase-viva, mas não-viva, pois ela só é disparada uma vez, já que, uma vez disparada, a evolução da Rede de Petri fica “presa” no sub-grafo da direita. Já, as transições a, b, c, e e f são vivas, pois elas aparecem no subgrafo da direita e, observando o grafo, veremos que será possível, a partir de qualquer marcação, encontrar uma seqüência de disparo que conduza a estas. Com relação a esta propriedade, pode-se dizer: • • • para a verificação desta propriedade, é verificado sempre uma Rede de Petri Marcada; a verificação desta propriedade garante que, para a marcação inicial considerada, sua estrutura não permite a existência de loops no sistema; uma Rede de Petri Viva garante ainda a ausência de uma parte morta (inatingível) no sistema. P1 a P2 b c P3 e P4 d f Figura 8.6 — Transição quase-viva e não viva. — 8.9 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA d 3 4 1 e f e f a 3 1 3 c b 1 4 f a d 4 c 2 a e 2 3 b 3 3 e b e b 1 1 c 2 4 a f c 1 2 c 4 4 f a 2 2 Figura 8.7 — Grafo de Marcação contendo uma transição quase-viva. Analisando exemplos de Redes de Petri anteriormente apresentadas, pode-se observar que a Rede de Petri da figura 8.1 é viva, enquanto a da figura 8.6 não é. 3.3. Rede de Petri Reinicializável A vivacidade de uma Rede de Petri Marcada N = <R,M 0> é reinicializável se e somente se seu grafo de marcação for fortemente conexo, ou melhor, st ∀M’ ∈ A(R;M 0) ∃ s M ' → M0 A maior parte dos sistemas, incluindo-se nesta classe os protocolos de comunicação, possuem comportamento repetitivo e, portanto, suas Redes de Petri serão reinicializáveis. Tomando como exemplo a Rede de Petri da figura 8.8, cujo grafo de marcação está apresentado na figura 8.9, pode-se verificar que ela não é reinicializável, pois não existe nenhuma seqüência que permita retornar à marcação inicial. Por outro lado, é importante verificar que ela é viva, uma vez que sempre é possível disparar as transições a, b e c. 3.4. Invariantes de Lugar e Componentes Conservativas Esta é uma das propriedades relacionadas à estrutura da Rede de Petri, independente da marcação. Para ilustrar o significado desta propriedade, será utilizado um exemplo de Rede de Petri, cuja estrutura está apresentada na figura 8.10. Considerando esta estrutura e observando os lugares P1 e P2 e as transições a e b, pode-se verificar que a soma das marcações considerando estes dois lugares e os disparos das duas transições citadas se mantém constante, ou melhor, M(P1) + M(P2) = 1. Mesmo considerando os disparos de outras transições da Rede, observaremos que não ocorrerão mudanças nesta soma. Pode-se afirmar, então que, para todas as marcações da rede, M(P1) + M(P2) = M 0(P1) + M 0(P2) ∀M’ ∈ A(R;M 0) Com base nisto, o par de lugares P1 e P2 é chamado uma componente conservativa e a forma linear M(P1) + M(P2) é denominada um invariante de lugar. Pode-se — 8.10 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA definir um invariante linear de lugar como uma função linear das marcações cujo valor é uma constante, dependendo apenas da marcação inicial da rede. Os invariantes de lugar correspondem a uma restrição em termos de estados e eventos do sistema que serão verificadas em qualquer circunstância. Uma componente conservativa corresponde à solução da equação fT.C = 0 e C = Post – Pre e f é a função linear que define a componente. Do ponto de vista gráfico, uma componente conservativa define uma sub-rede de Petri composta pelos lugares cuja componente de f é diferente de zero e as transições de entrada e saída destes lugares. Se f é solução da equação citada acima, então, fT.M = fT. M 0 ∀M ∈ A(R;M 0) é o invariante linear de lugar correspondente. 3.5. Invariantes de Transição e Componentes Repetitivas Tomando novamente a Rede de Petri da figura 8.10, pode-se verificar que o disparo da seqüência c d gera a mesma marcação. A sub-rede que será observada agora é a formada pelos lugares P3, P4 e P5, com as transições c e d. Esta sub-rede é dita ser uma componente repetitiva estacionária. Um invariante de transição é uma seqüência de disparos de transições que não provoca modificações na marcação da rede. A presença de um invariante de transições no modelo de um sistema pode indicar a existência de uma seqüência cíclica de eventos que pode ser repetida indefinidamente. Toda solução da equação C. s = 0 constitui uma componente repetitiva estacionária. Uma componente repetitiva estacionária define uma subrede onde só são consideradas as transições para as quais as componentes do vetor s são diferentes de 0, com seus lugares de entrada e de saída. A componente repetitiva estacionária não depende da marcação inicial, mas a existência de um invariante linear de transição depende. P1 a P2 c P3 P4 b Figura 8.8 — Rede de Petri não reinicializável. c 14 a 24 b 13 a 23 Figura 8.9 — Grafo de Marcação da Rede de Petri da figura 8.8. — 8.11 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA 3 a c P2 P1 P3 P4 P5 d b 3 Figura 8.10 — Rede de Petri com invariante de lugar. 4. REPRESENTAÇÃO DE DADOS E DE ASPECTOS TEMPORAIS As Redes de Petri são úteis para efetuar a modelagem de qualquer tipo de aplicação que apresente riqueza em termos de paralelismo, comunicação, competição por recursos e outras características típicas dos sistemas distribuídos. Nesta família de aplicações, encontram-se os protocolos de comunicação, tema central desta disciplina. Assim como as demais aplicações distribuídas, os protocolos de comunicação requerem um modelo que possibilite expressar os aspectos de processamento e as restrições temporais. Apesar de poderoso, o modelo original das Redes de Petri não foi concebido para expressar, de forma explícita estes aspectos e, por esta razão, outros modelos (ou extensões ao modelo original) foram desenvolvidos. 4.1. Interpretação das Redes de Petri 4.1.1. Lugares, transições e fichas Na construção de modelos utilizando técnicas formais, é importante que se tenha condições de dar um significado físico aos diversos elementos sintáticos da notação utilizada. Sendo assim, interpretar um modelo descrito em Redes de Petri ou um resultado de análise, é fundamental dar um sentido aos conceitos de lugares, transições e fichas. É evidente que o significado específico de cada uma destas entidades será fortemente dependente do sistema sob estudo. No entanto, pode-se dar significados mais genéricos a estes elementos. Sob esta ótica, os lugares podem ser interpretados como atividades de um sistema a eventos discretos. Áreas de estoque num sistema de produção, condições lógicas num sistema seqüencial, procedimentos a serem executados num sistema operacional, são alguns exemplos de elementos que podem ser representados por lugares num modelo a base de Redes de Petri. Às transições, geralmente, são associados eventos considerados instantâneos num sistema, que possuem duração nula ou desprezível na escala de tempo fundamental do sistema. O clique de um mouse, a usinagem de uma peça, o envio de uma mensagem, a ativação de um processo são alguns exemplos disto. É possível também associar atividades ou procedimentos às transições, principalmente quando, do ponto de vista do sistema estas sejam consideradas atômicas ou indivisíveis. Neste caso, as transições podem ser consideradas simplificações de um trecho de Rede de Petri caracterizado por uma transição de início, um lugar representando a atividade ou procedimento e uma transição de fim, como ilustrado na figura 8.11. — 8.12 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA Finalmente, as fichas podem ser interpretadas como objetos físicos (por exemplo, peças ou ferramentas num sistema de fabricação), informações, estruturas de dados ou recursos do sistema. Estas entidades são submetidas a eventos (disparos de transição) que as fazem mudar de estado (passar de um lugar para o outro na Rede de Petri). 4.1.2. Interação com Dados e Ambiente Quando se considera um sistema capaz de realizar o tratamento de informação ou de objetos físicos, este tratamento deve ser especificado. Por esta razão, além do título do tratamento, é, muitas vezes, necessário, explicitar como este tratamento é realizado, seja a nível das transições, seja a nível dos lugares. Na primeira situação, considera-se que o tratamento será realizado de forma instantânea e ininterrupta, no momento do disparo da transição. Na segunda situação, considera-se que seja uma atividade de tratamento que toma certo tempo para ser realizada, tempo este que envolve a duração da permanência da ficha no lugar considerado. No seu modelo original, uma Rede de Petri permite descrever o fluxo dos tratamentos a serem realizados, ou melhor, a estrutura de controle do sistema sob estudo. Entretando, nem sempre determinados tratamento são imediatamente realizados a partir do momento em que o tratamento precedente foi finalizado. Ainda, a sua realização ou não pode estar associada a condições verificadas sobre as estruturas de dados do sistema (condições do tipo if, por exemplo). Estas situações podem ser representadas por um trecho de Rede de Petri, caracterizado por diversos lugares e transições que irão expressar as restrições associadas ao tratamento. Do ponto de vista da teoria das Redes de Petri, tais condições representam situações de conflito, onde o disparo das próximas transições depende da verificação de propriedades associadas às estruturas de dados do sistema. Por exemplo, num protocolo de comunicação, a ação a ser tomada por uma entidade de protocolo depende fortemente dos campos da PDU recebida. No caso de sistemas que interagem com o ambiente, podem existir condições suplementares de disparo associadas às transições (ou aos lugares). Estas ações (tratamentos particulares) e estas condições estarão relacionadas a dados ou eventos externos, como sensores, atuadores, recebimentos ou envios de mensagem. Os relógios de tempo real podem também representar um aspecto importante no comportamento dos sistemas e o tempo intervem de forma explícita. P1 P1 P2 t P3 P2 t1 Atividade Atividade t2 P4 P3 P4 Figura 8.11 — Associação de uma atividade a uma transição. — 8.13 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA 4.1.3. Controle, Dados e Ambiente Para que se possa realizar o modelo de um sistema aberto (um sistema que se comunique freqüentemente com o ambiente), é importante que e Rede de Petri possa ser estruturada em duas partes, que permitam explicitar os elementos que compõem o sistema sob estudos e aqueles que caracterizam o ambiente. Além disso, é importante explicitar as partes da rede que estão associadas ao controle e aquela que representa os aspectos relacionados aos dados do sistema. Além dos dados internos, pode ser importante representar o tempo e os dados trocados com o ambiente. 4.1.4. Representação Explícita do Tempo A representação explícita do tempo pode ser feita a partir de variáveis booleanas que serão associadas a condições e ações associadas às transições. Os valores destas variáveis são, obviamente, dependentes do tempo. Consideremos mon(θ) uma variável booleana dependente do tempo. Se é atribuído a ela o valor 0, ela pode reassumir o valor 1 após um determinado período de tempo (um monoestável). Vamos supor que no momento do disparo de uma transição t1, esta variável seja colocada a 0. Se uma dada transição t2 que fica sensibilizada imediatamente após o disparo de t1 tem, associada a ela a condição mon(θ) = 1, então, o intervalo de tempo entre o disparo de t1 e o disparo de t2 será igual a θ. 4.2. Análise de Redes de Petri Interpretadas 4.2.1. Resultados É importante notar que uma Rede de Petri ordinária descreve apenas a parte controle de um sistema. Neste caso, a marcação da Rede de Petri vai fornecer apenas informações sobre o estado de controle do sistema. Numa Rede de Petri interpretada, o estado do sistema será descrito pela marcação associada ao estado dos dados. Sendo assim, numa Rede de Petri interpretada: Estado do Sistema = Marcação + Estado dos Dados Estado dos Dados = Estado das Variáveis Internas + Tempo Por outro lado, é preciso observar que a evolução da marcação numa Rede de Petri interpretada vai estar relacionada a restrições da evolução da marcação de uma Rede de Petri ordinária. Por esta razão, pode-se dizer que o conjunto das marcações acessíveis de uma Rede de Petri interpretada é um subconjunto daquele das marcações acessíveis de uma Rede de Petri ordinária. Entretanto, para que uma transição possa ser disparada numa Rede de Petri interpretada, é preciso que ela possa ser disparada na Rede de Petri ordinária. Mas, a interpretação pode levar ao fato de que uma transição que é disparável numa Rede de Petri ordinária pode, num dado instante não ser disparável numa Rede de Petri interpretada, em função das restrições impostas no modelo (por exemplo, a progressão do tempo, o valor de uma variável, etc...). Sendo assim, do ponto de vista de análise de uma Rede de Petri, é importante observar as seguintes relações. Rede de Petri Autônoma k-limitada para M f invariante de lugar Rede de Petri Interpretada k-limitada para estado f invariante de lugar — 8.14 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA Por outro lado: Rede de Petri Autônoma Viva Reinicializável 4.3. Rede de Petri Interpretada (≠) Viva (≠) Reinicializável Outros Modelos de Redes de Petri As Redes de Petri Interpretadas permitem expressar, de forma bastante precisa, a parte controle de um sistema ou protocolo de comunicação. Por outro lado, a representação da parte dados não é o forte deste modelo. Em razão disto, muitos trabalhos foram desenvolvidos em torno das Redes de Petri com o objetivo de oferecer um mecanismo de estruturação que permita isolar dados locais e dados globais. Nas seções seguintes, serão apresentados os modelos de Redes de Petri Coloridas, as Redes de Petri Predicados-Transições, as Redes de Petri Temporais e as Redes de Petri Temporizadas. 5. REDES DE PETRI COLORIDAS 5.1. Características do Modelo A separação entre o que é a parte dados e a parte controle num sistema não é necessariamente evidente, sendo, na maior parte das vezes tomada pelo desenvolvedor no momento da Análise de Requisitos e do Projeto do Sistema. No limite, toda a parte controle do sistema pode ser integrada às condições de execução dos tratamentos e ser representada estruturalmente por uma Rede de Petri. Por outro lado, se o desenvolvedor atribui muito do comportamento à parte controle, o modelo em Rede de Petri pode tornar-se extremamente complexo e de difícil representação e análise. Uma técnica que permite expressar sistemas complexos por modelos relativamente simples é, quando possível, replicar conjuntos de processos similares (com a mesma estrutura de controle) numa única componente conservativa. O inconveniente desta técnica é a perda do aspecto individualidade comportamental que cada processo pode apresentar, levando em conta, principalmente, a parte dados a que cada processo pode estar sujeito. A idéia de individualizar as fichas numa Rede de Petri permite replicar os comportamentos de vários processos por uma única estrutura de Rede sem correr o risco de perder informação sobre sua individualidade. Vamos tomar como exemplo a Rede de Petri da figura 8.12, que descreve um problema clássico de algoritmo distribuído, no caso o problema dos leitores e escritores. No exemplo, são representados 3 leitores e 1 escritor. Não é difícil observar que os três leitores apresentam estrutura comportamental idêntica e, utilizando esta identidade, é possível replicar seus lugares e suas transições numa única estrutura. O resultado desta replicação é mostrado na figura 8.13. A grande vantagem desta estratégia é a obtenção de um modelo mais simples para construção e para análise. Por outro lado, perde-se informação, pois quando um leitor evolui, é impossível conhecer sua identidade. 5.2. Associando «Cores» às Fichas Uma forma de diferenciar as fichas numa Rede de Petri é associar a elas «cores», que são expressas na forma de números inteiros ou de conjunto de etiquetas. Conseqüentemente, associa-se cada lugar um conjunto de cores de fichas que podem posicionar-se nele. Ainda, associa-se a cada transição um conjunto de cores que corresponde às possibilidades de disparos da transição. No caso mais simples, quando todos os processos possuem rigorosamente a mesma estrutura de controle, o conjunto de cores para os lugares e para as transições são — 8.15 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA os mesmos, sendo que as cores serão, usualmente, associadas às diferentes instâncias de processos. 11 d1 21 a1 12 d2 13 d3 22 a2 1E dE 23 2E a3 aE 3 31 f1 32 f2 33 3E 3 f3 fE Figura 8.12 — Rede de Petri representando o problema dos leitores x escritores. 1L 1E dL dE 2L 2E aL aE 3 3L 3E 3 fL fE Figura 8.13 — Problema dos leitores x escritores com replicação dos leitores. peça PI peça ini máquina id US MA máquina fim Figura 8.14 — Exemplo de Rede de Petri Colorida. — 8.16 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA No caso do problema dos leitores e escritores, por exemplo, os processos correspondem à identidade dos leitores, o que implica que os lugares 1L, 2L e 3L e as transições dL, aL e fL podem ter associado o conjunto (L1,L2,L3). Por outro lado, quando os lugares são comuns a diversos processos, é necessário introduzir o conceito de «cores compostas». A Rede de Petri da figura 8.14 ilustra o modelo de uma linha de montagem composta por duas máquinas e dois tipos de peças a serem usinadas. O lugar PI possue as cores pi1 e pi2 que correspondem aos nomes das peças, o lugar MA as cores ma1 e ma2 que são os nomes das máquinas e o lugar US vai conter as cores pi1.ma1, pi1.ma2, pi2.ma1 e pi2.ma2 que correspondem às diversas operações possíveis, e que serão denotadas u11, u12, u21 e u22. 5.2. Associando Funções aos Arcos Numa Rede de Petri Colorida, os arcos não são mais representados por números inteiros, mas devem ser especificadas as ações que deverão ser realizadas considerando cada cor possível num lugar. Cada arco deverá ter, então, associado a ele, uma matriz cujas linhas serão as possibilidades de disparo da transição e as colunas as possíveis cores das fichas nos lugares. Retomando o exemplo da figura 8.14, pode-se verificar que, no caso do arco que conecta o lugar PI à transição ini e o arco que conecta MA a ini, serão descritos por: pi1 pi2 ma1 ma2 u11 1 0 u11 1 0 u22 1 0 u22 0 1 u21 0 1 u21 1 0 u22 0 1 u22 0 1 5.3. Definição Formal de uma Rede de Petri Colorida Uma Rede de Petri Colorida associada a uma marcação inicial é um hexupla dada por: NC = <P,t,Cor,Csc,W,M0> Onde: • • • • • P, é um conjunto finito de lugares; T, é um conjunto finito de transições; Cor , é um conjunto finito de cores; Csc , é uma função subconjunto de cores associada a cada lugar e a cada transição; W, é a função de incidência (equivalente a C = Pre – Post); cada elemento de W corresponde a uma função do tipo: W(p,t) : Csc (t) x Csc (p) → Ν1 • M 0, é a marcação inicial para cada lugar e para cada cor possível neste lugar: M 0(p) : Csc (p) → Ν 1 Ν é o conjunto dos naturais. — 8.17 — CAP. 8 — R EDES DE PETRI 5.4. PROF. VITÓRIO BRUNO MAZZOLA Exemplo Retomando o exemplo da figura 8.14, teremos: • • • • • Cor = {pi1,pi2,ma1,ma2,u11,u12,u21,u22} Csc(PI) = {pi1,pi2} Csc(MA) = {ma1,ma2} Csc(US) = Csc(ini) = Csc(fim) = {u11,u12,u21,u22} as funções definidas para W são: § § § • a matriz W fica: § • id(uij) = uij máquina(uij) = maj peça(uij) = pii peça − peça W = id − id − máquina máquina a marcação inicial M 0: § 1 1 0 0 0 0 0 0 M 0 = 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 6. REDES DE PETRI PREDICADOS-TRANSIÇÕES 6.1. Variáveis Nas Redes de Petri Coloridas, o poder de expressão é reforçado pela substituição dos números inteiros da matriz de incidência de uma Rede de Petri Ordinária por funções. Nas Redes de Petri Predicados-Transições, as transições de uma Rede de Petri Ordinária são consideradas como regras num sistema de lógica proposicional e o poder de expressão é reforçado pela substituição das transições por regras de uma lógica de primeira ordem, onde variáveis são consideradas. Uma regra (ou transição) descreve um conjunto de eventos e não mais um único evento. O conjunto de eventos é descrito pelo conjunto das possíveis substituições das variáveis por valores. Desta forma, em lugar de regras do tipo... SE pelo menos uma peça e pelo menos uma máquina, FAZER usinagem teremos regras do tipo... SE uma peça <x> e uma máquina <y>, FAZER usinagem <u> As variáveis <x>, <y> e <u> assumirão valores num conjunto de constantes descrevendo as peças em espera na usinagem e as máquinas livres. Estas constantes assumem um papel análogo ao das cores numa Rede de Petri Colorida. As variáveis são associadas aos arcos da Rede de Petri, em lugar das funções definidas nas Redes de Petri — 8.18 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA Coloridas. Para o exemplo considerado anteriormente, a Rede de Petri PredicadosTransições que o representa está ilustrado na figura 8.15. Numa Rede de Petri Predicados-Transições não se tem a necessidade de definir a priori que fichas deverão estar presentes nos lugares como se faz no caso das Redes de Petri Coloridas (ver o exemplo descrito pela figura 4.6). Isto é definido pelas próprias regras associadas aos arcos, ou seja, uma vez que se conhece os possíveis valores a serem assumidos pelas variáveis, a cada vez que a transição for disparada, basta avaliar os valores de cada variável para se conhecer em que condições ela foi disparada. O mecanismo de substituição das variáveis por constantes no momento do disparo de uma transição é denominado unificação. Quando o mecanismo de unificação produz mais de uma solução, considera-se a ocorrência de um conflito. O espaço de conflito compreende todas as transições habilitadas para uma dada marcação e, para cada transição, o conjunto de substituições possíveis. Para permitir a escolha das fichas e transições a serem disparadas, associa-se condições suplementares de disparo (por exemplo, especificar que determinadas máquinas só podem manipular algumas peças), como no caso das Redes de Petri Interpretadas. Entretando, estas condições influem apenas nas constantes a serem associadas às fichas, ou melhor, sobre as constantes que substituem as variáveis no momento do disparo das transições. As condições são escritas como funções das variáveis associadas aos arcos de entrada e de saída da transição. 6.2. Noção de n-upla de Constantes e Variáveis No momento do disparo da transição ini, toma-se uma constante representando uma peça no lugar PI, uma outra representando uma máquina no lugar MA e coloca-se no lugar US uma constante que representa a relação temporária entre a peça e a máquina. No momento do disparo da transição fim, o contrário é efetivado. Em lugar de codificar este relacionamento temporário de duas informações, pode-se justapor numa lista (como se fosse um record de Pascal), exceto que existirá uma relação temporária no momento do disparo da transição. Desta forma, estabelece-se uma relação dinâmica entre as constantes. Estas listas de constantes serão denominadas n-uplas. Desta forma, no lugar US, a constante u12 será substituída pela n-upla <pi1,ma1>. A marcação não será mais uma distribuição de constantes nos lugares mas uma distribuição de n-uplas de constantes. A figura 8.16 apresenta a Rede de Petri Predicados-Transições para o exemplo do sistema de produção utilizado para ilustrar os diversos modelos aqui apresentados. 6.3. Definição Formal das Redes de Petri Predicados-Transições Uma Rede de Petri Predicados-Transições inicialmente marcada é uma tripla: NPT = <R,A,M0> Onde: • • R, é uma Rede de Petri Ordinária <P,T,C>, C = Post - Pre; A, é a anotação de N, A = <Const,V,Atc,Ata,Ac>: • Const , é um conjunto de constantes (o conjunto dos N, por exemplo); • V, é um conjunto de variáveis formais que serão substituídas por constantes de Const no momento do disparo das instruções; • Atc, é uma aplicação: Atc :T → Lc(Const,V) associando a cada transição uma condição sob a forma de predicado, utilizando constantes e variáveis formais; — 8.19 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA <x> PI ini <y> <u> MA US <u> <x> <y> fim Figura 8.15 — Exemplo de Rede de Petri Predicados-Transições. <x> PI <x> ini <x,y> <y> MA US <x,y> fim <y> Figura 8.16 —Rede de Petri Predicados-Transições fazendo uso n-uplas. • • 6.4. Ata, é uma aplicação: Ata :T → La(Const,V) associando a cada transição uma ação sob a forma de predicado, utilizando constantes e variáveis formais; • Ac, é uma aplicação associando a cada arco (elemtno de C) uma soma formal de n-uplas de elementos de V de tal forma que o módulo (soma de todos os elementos) seja igual ao peso do arco correspondente; M 0, é a marcação inicial para cada lugar associando uma soma formal de n-uplas de constantes de Const. Exemplo Na definição das Redes de Petri Predicados-Transições aparece a noção de rede subjascente, obtida a partir da substituição das variáveis por um peso unitário que permite explodir as n-uplas. A figura 8.17 representa a rede subjascente da figura 8.16. Este modelo define, de fato, a estrutura de controle do sistema representado, uma vez que a Rede de Petri Predicados-Transições é uma forma estruturada de expressar o conjunto controle/dados de um sistema. Com este exemplo, tem-se: • • • Const = {pi1,pi2,ma1,ma2} V = {x,y} neste exemplo, não foram definidas nem condições, nem ações — 8.20 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA ini 2 PI US MA 2 fim Figura 8.17 —Rede subjascente para a rede da figura 8.16. ini PI -<x> Ac = US <x,y> MA -<y> 7. fim <x> -<x,y> <y> PI M0 = US MA <pi1>+<pi2> 0 <ma1+ma2> REDES DE PETRI TEMPORIZADAS Uma Rede de Petri Ordinária descreve uma relação de causalidade entre eventos. Um evento a é a causa de b, a sempre precede b, a e b são ordenados no tempo. O tempo é levado em conta apenas de maneira qualitativa. Entretanto, a consideração do tempo de forma quantitativa é um requisito importante na descrição de muitos sistemas de software, principalmente no caso de aplicações distribuídas e protocolos de comunicação. Numa Rede de Petri Temporizada, o tempo é diretamente associado à Rede de Petri, integrando-se à parte controle do sistema. 7.1. Associando o Tempo aos Lugares Como foi visto no início deste capítulo, os lugares representam as atividades. Sendo assim, a associação de tempo aos lugares objetiva descrever a duração da atividade. Podese considerar que um lugar com uma duração associada pode ser descrito por uma seqüência lugar-transição-lugar, onde o primeiro lugar corresponde à atividade em curso, a transição representa o evento passagem do tempo e outro lugar corresponde a uma espera pelo final da atividade (sincronização com outras atividades). Esta correspondência é ilustrada na figura 8.18. 7.2. Associando o Tempo às Transições Esta associação tem sentido quando se considera a transição como uma atividade e não como um evento instantâneo. Uma atividade deve ser vista como uma ocorrência ininterruptível sob a ótica do comportamento global do sistema sob análise. Pode-se considerar que esta transição pode ser expressa por uma seqüência transição-lugar-transição, na qual a primeira transição corresponde a um evento instantâneo de início de atividade, o lugar corresponde à atividade em curso e a última transição corresponde a outro evento instantâneo de fim de atividade. Esta equivalência é ilustrada na figura 8.19. — 8.21 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA t1 t1 duração duração p indisponível p p disponível t2 t2 Figura 8.18 —Tempo associado a um lugar. O disparo da primeira transição seguindo o lugar p1 corresponde à reserva de fichas (as fichas reservadas não podem mais ser utilizadas para o disparo de outra transição senão a transição t). Após o disparo da segunda transição, as fichas são, finalmente, liberadas. Neste caso, da mesma forma que no caso anterior, existem fichas que desaparecem ou que tornam-se indisponíveis durante um certo intervalo de tempo e, em seguida, reaparecem na marcação. Comparando-se as duas figuras, observa-se que as duas abordagens são equivalentes. 7.3. Definição Formal Uma Rede de Petri Temporizada é um par Nt = <N,θf> com:. • • N é uma Rede de Petri <P,T,Pre,Post> com uma marcação inicial M 0; θf é a função duração de disparo: θf : T → ℜ+ , que a cada transição estabelece a correspondência entre um número racional positivo descrevendo a duração do disparo. 8. REDES DE PETRI TEMPORAIS 8.1. Representando Timeouts Alguns mecanismos implicam na colocação em disponibilidade das fichas num determinado instante. A figura 8.20 apresenta um caso típico onde este tipo de mecanismo é implementado. O lugar rotulado espera permita a recepção (disparo da transição fim1) na ocorrência de um evento (condição verdadeira) sob a forma de uma ficha no lugar condição. Mas, se a ficha não estiver posicionada ao final de um tempo θ, então um alarme é ativado (disparo da transição fim2). Um tempo de atividade associado à transição espera atrasaria o disparo da transição fim1 mesmo com a existência de uma ficha no lugar condição. Um tempo de atividade associado à transição fim2 faria com que a ficha no lugar espera fosse imediatamente absorvido de forma irreversível e que o alarme fosse então disparado após o intervalo de tempo θ mesmo se uma nova ficha chega no lugar condição. A solução é a introdução de uma duração de habilitação θs(t) a cada transição. Uma transição t só pode disparar se ela fica habilitada durante o intervalo θs(t). A diferença com relação as durações de disparo é que durante este intervalo as fichas estão disponíveis nos lugares de entrada de t e podem eventualmente ser utilizadas por uma transição em conflito com t. — 8.22 — CAP. 8 — R EDES DE PETRI PROF. VITÓRIO BRUNO MAZZOLA Se reconsideramos o exemplo apresentado acima, basta associar uma duração θs à transição fim2 igual ao valor do tempo de espera e a fim1 uma duração de sensibilização imediata. p1 reserva p/ t p1 duração t p2 t p2 Figura 8.19 —Tempo associado a uma transição. condição espera fim2 [θ,θ] alarme fim1 [0,0] seqüência normal Figura 8.20 —Exemplo de Redes de Petri Temporais. O domínio principal de utilização deste modelo (a validação de protocolos de comunicação) fez com que, desde o início, foi definida uma duração imprecisa de sensibilização de t sob a forma de um intervalo i(t) = [θs,min(t), θs,max(t)]. A transição t só pode ser disparada após o tempo θs,min(t) e não poderá mais ser disparada após a passagem do tempo θs,max(t). Todos os valores dentro do intervalo definido serão valores possíveis para disparo de t. 8.2. Definição Formal Uma Rede de Petri Temporal é um par Ntl = <N,I> onde: • • N é uma Rede de Petri <P,T,Pre,Post> com uma marcação inicial M 0; I é uma função que a cada transição t associa um intervalo fechado racional i(t) = [θs,min(t), θs,max(t)], que descreve uma duração de sensibilização. — 8.23 — CAP. 8 — R EDES DE PETRI 8.3. PROF. VITÓRIO BRUNO MAZZOLA Comparação com outros modelos As Redes de Petri Temporais são mais genéricas que as Redes de Petri Temporizadas, porque elas permitem a descrição de timeouts que aqueles modelos não permitem. Por outro lado, para passar de uma Rede Temporizada a uma Rede Temporal, basta substituir cada transição t do primeiro par por uma seqüência [t1,t2] com: • θs,min(t1) = θs,max(t1) = 0 e θs,min(t2) = θs,max(t2) = θ(t) Por outro lado, pode-se dizer que uma Rede de Petri Ordinária é uma Rede de Petri Temporal onde todas as transições possuem intervalos de sensibilização igual a [0,∞]. 9. CONCLUSÃO Neste capítulo foram apresentados os principais conceitos associados às Redes de Petri e a suas extensões. Como pôde ser observado, os mecanismos presentes neste formalismo permitem expressar de forma bastante precisa os relativos a um vasto leque de aplicações, incluindo os sistemas de produção, software distribuído, sistemas operacionais, interfaces homem máquina e protocolos de comunicação, entre outras. O poder de expressão dos diversos modelos de Redes de Petri permitem representar e obter informações interessantes nas etapas iniciais da concepção de sistemas e, por isso, sua aplicação à área dos protocolos de comunicação foi uma conseqüência inevitável. No capítulo que segue, serão descritos alguns resultados da aplicação deste formalismo à área dos protocolos de comunicação. — 8.24 — Capítulo 9 A T É C N I C A E STELLE 1. INTRODUÇÃO No capítulo 7, foram apresentados os principais aspectos relativos à concepção dos protocolos de comunicação, do ponto de vista das etapas do desenvolvimento e das técnicas associadas a cada uma das etapas. As técnicas de descrição formal, que serão apresentadas nesta seção, desempenham um papel importante na Engenharia de Protocolos. Estas técnicas são baseadas principalmente em modelos já citados na parte anterior do documento (máquinas de estados finitos, álgebra de processos), apresentando fatores importantes para a representação dos aspectos relativos à estruturação de uma camada de protocolo e ao comportamento das entidades de protocolo compondo a camada. Esta parte do documento pretende dar uma breve introdução às técnicas de descrição formal, dando ênfase à técnica Estelle, padronizada na ISO e aos trabalhos realizados em torno desta técnica. 2. AS TÉCNICAS DE DESCRIÇÃO FORMAL PADRONIZADAS Como já foi citado, a complexidade dos mecanismos a implementar no contexto de um sistema distribuído, e, particularmente, no projeto das entidades de protocolo, requer a utilização de modelos que permitam representar, de maneira precisa e não ambígua, o paralelismo e a comunicação. Esta foi a principal motivação da definição das Técnicas de Descrição Formal (ou FDT, Formal Description Techniques) para a especificação dos protocolos e serviços do modelo OSI. Os principais resultados deste esforço foram Estelle e LOTOS, padronizadas pela ISO (International Standardization Organization) e a técnica SDL, definida no CCITT (Comité Consultatif International Télégraphique et Téléphonique). LOTOS (Language Of Temporal Ordering Specification) é uma técnica baseada na álgebra de processos para a representação dos comportamentos paralelos. Uma especificação LOTOS é composta de unidades executáveis denominadas processos, que sincronizam-se através de portas de comunicação. A versão completa de LOTOS inclui uma linguagem de descrição de tipos abstratos de dados, denominada ACT ONE, de forma que dois ou mais processos sincronizando-se em portas de comunicação podem também trocar valores representados neste formalismo. Um grande número de trabalhos foi desenvolvido sobre LOTOS desde a sua definição, particularmente para a definição de metodologias e ferramentas de concepção e a aplicação de LOTOS à especificação de protocolos de comunicação. SDL (Specification and Description Language) é uma linguagem de especificação baseada no formalismo das máquinas de estados finitos comunicantes. Uma especificação SDL é definida como sendo um sistema, este podendo ser decomposto em diversos blocos que se executam concorrentemente e comunicam através de troca de mensagens, — 8.1 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA denominadas sinais. O mecanismo de comunicação adotado aí é assíncrono (filas FIFO). Do ponto de vista da estruturação de uma especificação SDL, um bloco pode, por sua vez, ser decomposto em diversos blocos e assim por diante_ a decomposição feita no nível mais baixo sendo em termos de processos. Similarmente a LOTOS, SDL representa os dados através do formalismo de dados abstratos. Uma característica original de SDL é o fato de que ela é definida segundo duas sintaxes de linguagem, uma versão textual (denominada SDL/PR, SDL Phrase Representation) e uma versão gráfica (SDL/GR, SDL Graphical Representation). No que diz respeito a esta técnica, diversas ferramentas foram realizadas para a concepção de protocolos de comunicação e programas distribuídos, particularmente, editores gráficos, simuladores, verificadores e geradores de código (SDL → C, SDL → ADA, etc_). No que diz respeito à técnica de descrição formal Estelle, a seção seguinte será dedicada à apresentação, mais detalhada dos seus aspectos sintáticos e semânticos. 3. A TÉCNICA DE DESCRIÇÃO FORMAL ESTELLE Estelle, Extended State Transition Language, é uma técnica de descrição formal definida e padronizada pela ISO para a especificação formal de protocolos de comunicação e sistemas distribuídos. O formalismo no qual se baseia esta técnica é aquele das máquinas de estados extendidas, sendo que a representação e a manipulação de dados é possível pela introdução de um subconjunto da linguagem Pascal à Estelle. Nas seções que seguem apresentaremos, sucessivamente, os principais mecanismos de Estelle, as experiências realizadas em torno desta técnica e um exemplo de aplicação ao domínio dos protocolos. 3.1 Arquitetura de uma Especificação Estelle Uma especificação Estelle é composta de elementos sequenciais não determinísticos chamados instâncias de módulo (module instances). Estes comunicam-se por um mecanismo de troca de mensagens, ou interações (interactions), que são enviadas e recebidas através de interfaces (ou portas) chamadas pontos de interação (interaction points). A figura 9.1 ilustra estes conceitos. Da mesma forma que uma especificação pode ser decomposta em módulos, como é mostrado na figura 9.2, um módulo pode, por sua vez, ser decomposto em outros módulos, estes em outros módulos, e assim por diante, o que dá um caractére hierárquico a uma especificação. Se um determinado módulo é decomposto em outros módulos, diz-se que estes são módulos filhos do módulo considerado; este, por sua vez, é considerado o módulo pai daqueles módulos. A figura 9.2 mostra a decomposição do módulo A2 da figura 9.1 em dois módulos, A21 e A22. Seguindo a terminologia, A21 e A22 são módulos filhos de A2, que é considerado o módulo pai destes dois módulos. Esta definição será posta em evidência quando formos comentar os princípios de escalonamento envolvidos na execução de uma especificação Estelle. A arquitetura de uma especificação Estelle pode ser modificada em tempo de execução, tanto do ponto de vista da sua composição em termos de módulos, como das ligações entre os módulos existentes. Veremos mais tarde como isto é implementado. Do ponto de vista sintático, uma especificação Estelle é assim definida: specification <id_especificação> [<atributo>] [default <disciplina_fila>] [timescale <unidade_tempo>] _ end. Nas definições sintáticas da técnica Estelle realizadas neste documento, a seguinte notação será adotada: • expressões em negrito correspondem a palavras reservadas da linguagem; — 9.2 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA • expressões colocadas entre “<“ e “>“ correspondem a partes da especificação (identificadores, parâmetros, _) a serem definidos pelo usuário; • expressões colocadas entre “[“ e “]” correspondem a comandos opcionais da especificação; • os “_” correspondem a partes (instruções, blocos de instrução, declarações, etc_) existentes, mas irrelevantes para a definição considerada. Na declaração Estelle mostrada acima, o comando opcional default permite definir a disciplina de filas a ser adotada por default na especificação. As disciplinas de fila serão definidas posteriormente neste documento. O comando (também opcional) timescale permite definir a unidade de tempo adotada para propósitos de temporização (ver definição da cláusula delay). 3.2. Os Módulos Estelle Um módulo é um objeto a partir do qual são derivados os componentes executáveis de uma especificação Estelle — as instâncias de módulo. As características de um módulo Estelle são obtidas graças a duas definições que são o tipo de módulo (module header) e o corpo de módulo (module body), estes conceitos sendo ilustrados pela figura 9.3. especificação A0 A1 A2 instância de módulo ponto de interação A3 Figura 9.1 - Conceitos associados a uma especificação Estelle. A2 A21 A21 e A22 são módulos filhos do módulo A2 A22 Figura 9.2 - Ilustração da decomposição de um módulo Estelle. — 9.3 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA O tipo de módulo permite definir as interfaces de acesso ao módulo, seja do ponto de vista das mensagens — interações — que podem ser trocadas com os demais módulos, como do ponto de vista das variáveis acessíveis externamente — as variáveis exportadas. As variáveis exportadas de um módulo A são aquelas variáveis visíveis ao módulo imediatamente superior na hierarquia (o módulo pai). Assim, este módulo terá direito de acesso à leitura e escrita sobre todas as variáveis de A que tenham sido declaradas como variáveis exportadas. Na sua forma mais geral, um tipo de módulo é declarado da seguinte forma em Estelle: module <id_tipo_módulo> <atributo>; ip <lista_de_pontos_de_interação> export <lista_de_variáveis_exportadas> end; O corpo de módulo é o objeto que permite declarar o comportamento interno de um módulo, através da definição de uma máquina de estados extendida. Vários corpos de módulo podem ser associados a um mesmo tipo de módulo, o que significa que é possível definir módulos apresentando a mesma interface mas com comportamentos internos distintos. A declaração de um corpo de módulo é feita da seguinte maneira: body <id_corpo> for <id_tipo_módulo>; ... end; , onde id_tipo_módulo designa o tipo do módulo ao qual o corpo estará associado. 3.3. A Comunicação entre Instâncias de Módulo As instâncias de módulo em Estelle comunicam-se graças à definição de canais bidirecionais que efetuam a ligação entre seus pontos de interações. Uma fila de política FIFO (First-In-First-Out) é associada a cada uma das extremidades de um canal, de modo que uma mensagem enviada por um módulo é armazenada na fila associada à extremidade oposta àquela do canal por onde esta foi enviada, caracterizando, assim, um mecanismo de comunicação assíncrona. A tipo de módulo B módulo corpo de módulo Z Figura 9.3 - Definição de módulos e instâncias de módulos. — 9.4 — instâncias de módulo CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA Isto significa que não existe um compromisso estabelecido entre a emissão e a recepção de uma mensagem; não existindo também bloqueio ao envio de uma mensagem se o módulo receptor não se encontra pronto para consumí-la. Em Estelle, um canal é declarado da forma: channel <id_canal> (r1,r2); by r1 : <lista_interações_r1> by r2 : <lista_interações_r2> Nesta declaração, além do identificador do canal (id_canal), devem ser declaradas as diferentes interações que serão enviadas pelas duas extremidades do mesmo. Isto é feito considerando os dois sentidos, formalizados aqui através dos papéis (role), simbolizados nesta declaração por r1 e r2. Estes não são identificadores reservados, mas podem ser definidos pelo usuário conforme o significado do canal dentro da especificação — por exemplo, usuário e fornecedor, mestre e escravo, produtor e consumidor, etc_ As interações definidas na declaração dos canais permitem definir diferentes tipos ou classes de mensagens sendo trocadas entre duas ou mais instâncias de módulos. A declaração das interações não implica, porém, na declaração de valores associados. Para a definição de valores, devem ser associados parâmetros (variáveis Pascal) às interações, como é mostrado no exemplo abaixo: channel C1 (cliente,servidor); by cliente : pedido; servico(tipo:integer); by servidor : resposta(resultado:boolean); A declaração de canal serve de base para a declaração dos pontos de interação que vão definir as interfaces de cada tipo de módulo, e que são feitas da maneira seguinte: ip <id_ip> : <id_canal>(r); Assim, além do identificador do canal (id_canal), deve-se também definir o sentido r ao qual será associado o ponto de interação identificado por id_ip. Isto vai permitir a definição das interações que poderão ser emitidas pelo módulo que possui o ponto de interação declarado. Cabe aqui a ilustração destes conceitos atraves de um exemplo simples. Vamos supor um trecho de uma especificação formal em Estelle, onde as seguintes declarações são definidas: specification exemplo1; _ _ channel C1 (mestre,escravo); by mestre : ordem_inicio; pedido_status; by escravo : resposta_serviço; info_status; module tipo_cliente; ip A : C1(mestre); end; module tipo_servidor; ip B : C1(escravo); end; _ _ end. — 9.5 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA Como podemos ver, os dois sentidos definidos na declaração do canal C1 são mestre e escravo, aos quais estão associadas as interações ordem_inicio, pedido_status e resposta_serviço, info_status, respectivamente. Assim, se considerarmos as declarações dos módulos tipo_cliente e tipo_servidor, notamos que os pontos de interação A e B fazem referência à declaração do canal C1, definindo, respectivamente, os papéis mestre e escravo. Isto significa que as instâncias de módulo derivadas do tipo de módulo tipo_cliente poderiam enviar, através do ponto de interações A, as interações ordem_inicio e pedido_status e poderiam receber, por este ponto, as interações resposta_serviço e info_status. Analogamente, as instâncias de módulo derivadas do tipo de módulo tipo_servidor poderiam enviar, através do ponto de interações B, as interações resposta_serviço e info_status e poderiam receber, por este ponto, as interações ordem_inicio e pedido_status. No caso de módulos que possuam n pontos de interações similares, a declaração pode ser feita segundo um vetor ou um vetor de pontos de interação: ip <id_ip> : ARRAY[1..n] OF <id_canal>(r); Neste caso, da mesma forma que um elemento de uma matriz definida na linguagem Pascal, o ponto de interação deverá ser designado pelo seu identificador, acompanhado do índice correspondente no vetor. A figura 9.4 ilustra o caso de um módulo possuindo 6 pontos de interação similares. A associação de filas FIFO aos pontos de interação obedece a duas políticas distintas: • na primeira, a fila individual (individual queue), uma fila é associada a cada ponto de interação; • na segunda, a fila comum ou global (common queue) a fila é compartilhada por diversos pontos de interação. Embora as duas políticas possam coexistir no contexto de uma mesma especificação Estelle, a sua definição é obrigatória no contexto da declaração dos pontos de interação, isto podendo ser feito de duas maneiras: • explícita, na declaração do ponto de interação (Ex.: ip A : F_D (fonte) individual queue; ); • implícita, através da cláusula default (Ex.: default individual queue;). module tipo_A; ip a : ARRAY[1..6] OF Ca(r1); end; a[1] a[2] a[3] a[4] a[5] a[6] A Figura 9.4 - Módulo definindo 6 pontos de interação similares. — 9.6 — CAP. 9 — A TÉCNICA ESTELLE 3.4. PROF. VITÓRIO BRUNO MAZZOLA Exemplo 1 - O protocolo mestre-escravo A figura 9.5 representa o exemplo mostrado na seção 3 da parte anterior do documento (figura 10.11). Como, em Estelle, os canais são bidirecionais, representamos por um único canal a comunicação nas duas direções consideradas. Os pontos de interação F e D representam, respectivamente, as portas de comunicação das entidades fonte e destino com o meio de comunicação. Estes pontos de interação são conectados, respectivamente, aos pontos A e B do módulo representando o meio. Desta forma, a declaração dos objetos Estelle representando a arquitetura mostrada na figura 9.5 fica como mostrado a seguir. Esta especificação apresenta unicamente a declaração dos objetos representando cada elemento da especificação, particularmente, os canais, as interações, e os tipos de módulos (e seus respectivos pontos de interação) que definirão a estrutura da especificação. specification mestre_escravo systemactivity; _ _ channel F_D (fonte,destino) by fonte : pedido_envio; dado; by destino : pronto_recepção; dado_consumido; module tipo_fonte activity; ip F : F_D(fonte); end; { tipo_fonte } module tipo_destino activity; ip D : F_D(destino); end; { tipo_destino } module tipo_meio activity; ip A : F_D(destino); B : F_D(fonte); end; { tipo_meio } _ _ end. { mestre_escravo } MESTRE_ESCRAVO FONTE DESTINO F D A B MEIO Figura 9.5 - Estrutura da especificação do protocolo mestre-escravo. — 9.7 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA A estrutura da especificação só será concretizada através da execução de instruções de estruturação, presentes numa parte de inicialização da especificação. 3.5. Instruções de estruturação de uma especificação O nível de superior de uma especificação Estelle é caracterizado, geralmente por duas partes distintas — a parte declaração e a parte inicialização. A parte declaração caracteriza as declarações dos objetos Pascal (tipos, variáveis, funções e procedimentos) e dos objetos Estelle (canais, tipos de módulo, corpos de módulo, pontos de interação, etc_) como apresentados nas seções anteriores. Os objetos Pascal são declarados em Estelle de maneira análoga a um programa naquela linguagem de programação (type, var, function e procedure). Esta parte contém, ainda, a declaração das variáveis módulo que permitem referenciar as instâncias de módulo que vão compor a especificação. As variáveis módulo são declaradas de maneira análoga às variáveis Pascal, utilizando a cláusula modvar, sendo que os tipos associados às variáveis módulo devem ser os identificadores designados nas declarações dos tipos de módulo da especificação. Podemos representar, sintaticamente, a declaração de variáveis módulo da seguinte forma: modvar <id_varmod1> <id_varmod2> _ <id_varmod3> : <id_tipo1>; : <id_tipo2>; : <id_tipoN>; Podemos utilizar, como exemplo, duas variáveis especificando os módulos entidades fonte e destino e do módulo representando o meio de comunicação da especificação baseada na figura 9.5. Deste modo, a declaração destas variáveis módulo ficaria. modvar fonte destino meio : tipo_fonte; : tipo_destino; : tipo_destino; No caso de várias instâncias de módulo baseadas num mesmo tipo de módulo, as variáveis podem ser declaradas na forma de um vetor Pascal, sendo que a referência a cada instância será feita de forma indexada. O exemplo abaixo ilustra esta forma de declaração: modvar A : ARRAY[1..MAX] OF tipo_fonte; A referência às instâncias de módulo geradas a partir desta declaração será, então, feita da seguinte forma — A[1], A[2], _, A[MAX]. A parte de inicialização é a parte que vai dar «vida» a uma especificação Estelle. Ela é caracterizada pela expressão Estelle initialize seguida de um bloco begin_end (como na linguagem Pascal) cujas instruções vão permitir inicializar os objetos Pascal (particularmente as variáveis) e os objetos Estelle. No que diz respeito aos objetos Estelle, esta parte permite: • inicializar (criar) as instâncias de módulo; • inicializar a arquitetura da especificação efetuando as ligações dos pontos de interação de cada instância de módulo criada para compor a especificação. — 9.8 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA A criação das instâncias de módulo é feita através do comando init que vai permitir inicializar uma variável módulo com um corpo de módulo declarado na especificação. O formato geral deste comando é: init <id_varmod> with <id_corpo>; A necessidade da especificação do corpo no momento da criação da instância de módulo se justifica pela possibilidade de atribuição de diferentes comportamentos a um mesmo tipo de módulo. Naturalmente, apenas um corpo de módulo que tenha sido declarado para o tipo de módulo que gerou a variável módulo pode ser especificado na sua criação. No que diz respeito ao estabelecimento das ligações entre pontos de interação das instâncias de módulo, dois comandos são disponíveis: • o primeiro, connect, permite ligar dois pontos de interação de instâncias de módulo localizadas no mesmo nível hierárquico; • o segundo, attach, permite ligar um ponto de interação de uma dada instância de módulo a um ponto de interação de uma instância de módulo filha da primeira instância considerada. Do ponto de vista sintático, estes comandos apresentam-se da seguinte forma: connect <id_varmod1>.<id_ip> to <id_varmod2>.<id_ip>; e attach <id_ip> to <id_varmod2>.<id_ip>; Como podemos ver, no caso do comando attach, não é necessário especificar uma das instâncias, pois ela é conhecida implicitamente (é a instância na qual o comando está sendo realizado). Os seguintes comentários podem ainda ser feitos com relação aos comandos de estruturação de Estelle: 1 Os comandos connect e attach só podem ser executados sobre um par de instâncias de módulo que tenha sido previamente inicalizado por comandos init; 2 Os comandos connect e attach só podem ser efetuados sobre dois pontos de interação declarados a partir de um mesmo tipo de canal; ainda, no caso do connect os pontos de interação devem ter papéis complementares (opostos); no caso do attach os dois pontos de interação devem ter o mesmo papel; 3 Os comandos podem ser utilizados também durante a execução das transições Estelle (como será definido mais adiante) caracterizando o aspecto dinâmico de uma especificação Estelle (instâncias de módulo podem ser criadas e ligadas em execução); 4 Finalmente, são definidas em Estelle instruções complementares (inversas) a estas três, respectivamente release, disconnect e dettach. Para ilustrar a utilização destes comandos, vamos retomar o exemplo ilustrado pela figura 9.5, completando a especificação do ponto de vista das declarações e inicializações dos objetos. Esta é mostrada a seguir. 3.6. A descrição do comportamento dos módulos (declaração do corpo) Como já foi mencionado, o objeto que permite declarar a máquina de estados representando o comportamento de um módulo é o corpo de módulo (module body). — 9.9 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA specification mestre_escravo systemactivity; default individual queue; { #### PARTE DECLARACAO #### } channel F_D (fonte,destino) by fonte : pedido_envio; dado; by destino : pronto_recepção; dado_consumido; module tipo_fonte activity; ip F : F_D(fonte); end; { tipo_fonte } module tipo_destino activity; ip D : F_D(destino); end; { tipo_destino } module tipo_meio activity; ip A : F_D(destino); B : F_D(fonte); end; { tipo_meio } body corpo_fonte for tipo_fonte; _ end; { corpo_fonte } body corpo_destino for tipo_destino; _ end; { corpo_destino } body corpo_meio for tipo_meio; _ end; { corpo_meio } modvar fonte destino meio { : tipo_fonte; : tipo_destino; : tipo_meio; #### PARTE INICIALIZACAO #### } initialize begin init fonte with corpo_fonte; init destino with corpo_destino; init meio with corpo_meio; connect fonte.F to meio.A; connect destino.D to meio.B; end; end. { mestre_escravo } O objeto corpo de módulo é composto de três partes de base: a parte declaração, análoga à da especificação, apresentada anteriormente, a parte inicialização, também similar à da especificação e a parte transição que permite efetivamente descrever o comportamento do módulo através de um conjunto de transições de uma máquina de estados. — 9.10 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA Na parte declaração de um corpo de módulo, além da declaração dos objetos já mencionados anteriormente (tipos, variáveis, funções e procedimentos Pascal, canais, tipos de módulo e corpos de módulo das instâncias de módulo filhas, _), declara-se ainda, quando for o caso (esta declaração é opcional), os estados globais (major states) da máquina de estados considerada. Isto é feito através do comando Estelle, state cuja sintaxe geral é: state id_estado1, id_estado2, _, id_estadoN; Para o exemplo considerado na figura 9.5, a declaração dos estados globais para a instância de módulo fonte ficaria, então: state ocioso,pronto_envio,envio, espera_ack; A parte inicialização, além da inicialização das variáveis Pascal e objetos Estelle (instâncias de módulo e ligações), deve permitir definir o estado global inicial da máquina de estados que representa o comportamento do módulo. Isto é feito associando-se a cláusula to à expressão initialize que marca o início da parte inicialização da seguinte forma: initialize to <id_estado_inicial>; begin _ end; , sendo que id_estado_inicial deve ser um dos identificadores de estado global declarados previamente através do comando state. A parte transição permite definir o conjunto das transições que vai descrever o comportamento dos módulos. Uma transição é caracterizada de três partes principais: a parte pré-condições, a parte de pós-condições e a parte ação. A definição de uma ou mais transições deve ser caracterizada pela definição de uma cláusula trans. A parte pré-condições permite definir quais são as condições a serem satisfeitas para que a transição seja considerada em condições de executar. As pré-condições são definidas através de cláusulas Estelle, que são: from permite definir em que estado global deve encontrar-se o módulo para que a transição esteja em condições de executar. SINTAXE from <id_estado> EXEMPLO from ocioso when permite definir a recepção de uma dada interação sobre um ponto de interação para que a esteja em condições de executar. SINTAXE when <id_ip>.interação EXEMPLO when D.dado no caso desta cláusula, a condição é satisfeita se a interação especificada encontrase no topo da fila FIFO associada ao ponto de interação considerado. Em caso, positivo, se a transição é executada, a interação é retirada do topo da fila, caracterizando a recepção de uma mensagem. Uma transição que não contenha uma cláusula when na sua parte de précondições é dita uma transição expontânea, uma vez que esta não depende da recepção de — 9.11 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA uma interação para executar (depende apenas de aspectos internos do módulo considerado). provided permite testar uma condição na forma de uma expressão booleana, envolvendo variáveis Pascal do módulo ou mesmo, no caso de uma transição contendo uma cláusula when, parâmetros da interação especificada naquela cláusula. SINTAXE EXEMPLO provided <exp_booleana> provided dado_lido* ou provided otherwise *dado lido é uma variável booleana! priority permite associar um nível de prioridade de modo a modificar a política de escalonamento entre as transições de um mesmo módulo. SINTAXE priority <inteiro> EXEMPLO priority 1 delay permite associar um intervalo de tempo para fins de representação de mecanismos de temporização (timeout, por exemplo). A semântica de tempo associada a esta cláusula será explicada mais adiante. A cláusula delay não pode ser utilizada numa transição onde a cláusula when esteja presente. Em outras palavras, esta só pode ser utilizada em transições expontâneas, como definido anteriormente. SINTAXE delay (T1,T2) EXEMPLO delay (1,5) A parte pós-condições permite definir o estado global que será assumido pelo módulo após a execução da transição considerada. A cláusula de pós-condição definida em Estelle é a cláusula to cuja sintaxe e exemplo de utilização são dados abaixo: SINTAXE to <id_estado> ou to same EXEMPLOS to espera_ack to same A parte ação de uma transição Estelle é caracterizada por um bloco begin_end em cujo interior podem ser declaradas instruções Pascal (com restrições) e instruções Estelle. A parte ação de uma transição Estelle é considerada um bloco atômico e indivisível, ou seja, uma vez iniciada, ela não pode ter a sua execução interrompida. Dentre as instruções Estelle podendo constituir a parte ação de uma transição, além dos comandos init, connect, attach, release, disconnect e dettach, podemos citar o comando output, que permite expressar o envio (não bloqueante) de uma interação através de um ponto de interação, a sintaxe e um exemplo de utilização sendo dados a seguir. SINTAXE output <id_ip>.interação EXEMPLOS output F.dado Convém, aqui, invocar os conceitos de instâncias de módulo ativas e inativas. Uma instância de módulo é dita inativa se a sua parte transição é vazia. Caso contrário, ela é dita ser uma instância de módulo ativa. — 9.12 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA Além das instruções acima, Estelle oferece, ainda, algumas facilidades de especificação, como, por exemplo: • os comandos all e any; • a fatorização (nesting) de transições; • a nomeação de transições. Os comandos all e any permitem simplicar uma sequência de comandos Pascal e Estelle que deva ser feita de maneira repetitiva. Ambos são declarado de forma similar a uma malha for do Pascal, com uma diferença fundamental. O acesso aos valores estabelecidos no intervalo considerado é feito de maneira aleatória e não de maneira ordenada. Exemplos da utilização destes dois comandos são mostrados a seguir: • Comando all all i : 1..n do begin _ sequência de instruções _ end; • Comando any (manipulação de vetores de pontos de interação) any i : 1..n do when ip_id[i].interação A fatorização de transições permite simplificar a apresentação da especificação, regrupando, a diferentes níveis, cláusulas comuns a diferentes transições. Por exemplo, considerar o trecho de especificação abaixo: trans from ocioso when D.pedido_envio to pronto_recepcao begin output D.pronto_rec end; from ocioso when D.dado to same begin end; Como podemos ver, a cláusula «from ocioso» é comum às duas transições. Assim, elas podem ser fatoradas da seguinte forma: trans from ocioso when D.pedido_envio to pronto_recepcao — 9.13 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA begin output D.pronto_rec end; when D.dado to same begin end; Finalmente, a nomeação das transições permite enriquecer o poder de documentação de uma especificação Estelle, através da cláusula name. O exemplo a seguir ilustra a utilização desta cláusula. trans from ocioso when D.pedido_envio to pronto_recepcao name aviso_dado: begin output D.pronto_rec end; Para ilustrar a descrição do comportamento em Estelle, vamos especificar o comportamento da instância de módulo fonte do protocolo mestre-escravo definido na parte anterior do documento. Para isto, podemos tomar como ponto de partida, a especificação em máquinas de estados finitos daquela entidade, apresentada, aqui, na figura 9.6. A especificação Estelle fica, então, da seguinte forma: body corpo_fonte for tipo_fonte; state ocioso,pronto_envio,envio,espera_ack; initialize to ocioso begin end; trans from ocioso when U.mensagem to pronto_envio begin output F.pedido_envio; end; from pronto_envio when F.pronto_rec to envio begin { preparacao do dado a enviar } end; trans from envio to espera_ack begin output F.envio_dado; end; — 9.14 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA trans from espera_ack when F.ack to ocioso begin end; end; { corpo_fonte } Como podemos notar na especificação, foi considerado aí, um ponto de interação U, através do qual é recebido o dado a ser enviado. Isto significa que a instância de módulo que representa esta entidade é conectada, através deste ponto de interação, a uma instância de módulo que representa o usuário do serviço oferecido. 3.7. Aspectos da execução de uma especificação Estelle A execução de uma especificação Estelle leva em consideração um conjunto de regras semânticas que cobrem diferentes aspectos da definição desta técnica, da estruturação da especificação aos atributos que permitem definir a semântica de paralelismo a ser considerada. Um primeiro aspecto importante a ser levado em conta é o não determinismo implícito na seleção das transições a serem executadas num dado instante. Uma transição pode ser executada se ela está sensibilizada, ou seja, todas as suas cláusulas de précondição são satisfeitas. A nível de uma mesma instância de módulo, diversas transições podem estar sensibilizadas num dado instante, sendo que apenas uma delas pode ser executada por vez, podendo inclusive modificar o conjunto das transições sensibilizadas para aquela instância de módulo. Neste caso, a escolha da seleção a executar é feita de forma não determinista (é impossível prever qual delas será executada em circunstâncias semelhantes). Outro ponto importante das regras de execução de uma especificação Estelle é a chamada prioridade pai-filho. A prioridade pai-filho determina que, no caso em que uma instância de módulo ativa contenha pelo menos uma transição sensibilizada, independente do estado de sensibilização das transições das instâncias de módulo filhas, será sempre uma transição da instância de módulo considerada que vai ser executada. OCIOSO Ei1 !pedido envio PRONTO P/ ENVIO ?pronto p/ recepção ENVIO Ei2 !envio dado ESPERA ACK ?dado consumido Figura 9.6 - Máquina de estados finitos representando a entidade fonte do exemplo considerado. — 9.15 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA Isto significa que a forma como a especificação é estruturada tem grande influência na maneira como as transições das diferentes instâncias de módulo vão se relacionar no que diz respeito à sua seleção para execução. Um terceiro ponto diz respeito às diferentes semânticas de paralelismo podendo ser representadas em Estelle, isto sendo função dos atributos associados, de um lado, à especificação e, do outro lado, às instâncias de módulo que a compõem. Estelle permite definir quatro classes de atributos que vão desempenhar um papel importante na representação do paralelismo entre as instâncias de módulo de uma especificação. Os atributos são systemactivity, systemprocess, activity e process. Os atributos prefixados por system permitem definir subsistemas no contexto de uma especificação, dentro dos quais a semântica de paralelismo considerada pode ser diferente. As regras de utilização destes atributos são descritas nos parágrafos que seguem: • todo módulo ativo deve ter um atributo associado; • os atributos systemactivity e systemprocess podem ser associados a um módulo para definir um subsistema dentro de uma especificação Estelle; • os atributos systemactivity e systemprocess não podem ser associados a módulos filhos de módulos atribuídos; • a especificação pode definir um subsistema único, através da associação de um dos dois atributos system (systemactivity ou systemprocess); • módulos com atributo process ou systemprocess podem ser estruturados unicamente em módulos atribuídos por process e activity; • módulos atribuídos por systemactivity ou activity podem ser estruturados unicamente em módulos atribuídos por activity. A figura 9.7 permite ilustrar o papel dos atributos na definição do paralelismo entre as instâncias de módulo de uma especificação Estelle, onde um módulo atribuído systemactivity é estruturado em dois módulos activity. Os identificadores entre colchetes representam as transições sensibilizadas em cada instância de módulo. Em 9.7(a), observa-se as transições T1 (systemactivity), T2 e T3 (systemactivity da esquerda) e T4 (activity da direita). Neste caso, a prioridade pai-filho é levada em conta e a transição selecionada para execução será, invariavelmente, T1. Já em 9.7(b), T1 não está sensibilizada, de modo que a seleção deverá ser feita a nível das instâncias de módulo activity. Neste caso, a seleção é não detertminista, apenas uma transição sendo selecionada para execução, ou seja, T2 ou T3 ou T4. A figura 9.8 ilustra, de maneira análoga, a política para as instâncias atribuídas systemprocess e process. Em 9.8(a), temos sensibilizadas as transições T5 (systemprocess), T6 e T7 (process da esquerda) e T8 (process da direita). Neste caso, vale, ainda a prioridade pai-filho e a transição T5 será selecionada para execução. [T1] Systemactivity activity activity activity [T4] [T2,T3] Systemactivity [--] activity [T4] [T2,T3] Execução de T2 ou T3 ou T4 Execução de T1 (a) (b) Figura 9.7 - Comportamento paralelo no caso de um módulo atribuído systemactivity. — 9.16 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA Já, em 9.8(b), como T5 não está sensibilizada, a seleção é feita no nível das instâncias process. Estes atributos impõem uma sincronização implícita entre ações de processos num mesmo sistema. Desta forma, será escolhida, em cada instância, uma transição, que será sincronizada com as demais, selecionadas a nível das demais instâncias. Para o exemplo, isto significa que serão executadas T6 e T8 ou T7 e T8. 3.8. A semântica do tempo em Estelle A técnica Estelle não prevê um mecanismo de representação do tempo que permita associar uma duração à execução de uma especificação. O tempo relativo à execução da parte ação de uma transição é considerado nulo para efeito de análise. Por outro lado, a definição da cláusula delay, associada a uma transição permite representar mecanismos de temporização interessantes, como os mecanismos de timeout. Como já foi apresentado, a cláusula delay é definida como uma das cláusulas de pré-condição de uma transição Estelle, podendo ser associada unicamente a transições expontâneas (que não têm associadas a elas uma cláusula when). Esta cláusula, quando associada a uma transição Estelle, permite associar um intervalo de tempo, cujos limites são Tmín e Tmáx, definidos como segue: • Tmín é o tempo mínimo que deve ser decorrido entre a sensibilização de uma transição e a sua execução; • Tmáx é o tempo máximo que pode decorrer a partir do instante que a transição foi sensibilizada para que a transição (se continuar sensibilizada) executar. A cláusula delay pode ser especificada na forma delay(Tmín,Tmáx) , onde Tmáx _ Tmín, ou ainda delay(T) , onde Tmín = Tmáx = T. [T5] Systemprocess process process Execução de T5 process process [T8] [T6,T7] Systemprocess [--] [T8] [T6,T7] Execução de (T6 et T8) v (T7 e T8) (a) (b) Figura 9.8 - Comportamento paralelo no caso de um módulo atribuído systemprocess. — 9.17 — CAP. 9 — A TÉCNICA ESTELLE 4. PROF. VITÓRIO BRUNO MAZZOLA OS TRABALHOS REALIZADOS EM TORNO DE ESTELLE O interesse da técnica Estelle motivou a realização de um conjunto de projetos em torno de vários temas visando o seu desenvolvimento para uma futura utilização em escala industrial. Os aspectos abordados nestes projetos envolviam três principais pontos de vista: • a definição de uma semântica formal para Estelle; • a realização de ferramentas de suporte à concepção para Estelle; • a definição de metodologias e a realização de especificações formais no domínio dos protocolos de comunicação e outros mais. Esta seção visa a apresentar alguns dos importantes resultados em torno destes aspectos, particularmente no que diz respeito à definição de uma semântica formal para Estelle, que culminou na definição de uma versão mais poderosa, denominada Estelle* e no que diz respeito ao desenvolvimento de ferramentas de concepção para Estelle (e Estelle*). 4.1. A técnica Estelle* Os trabalhos realizados no sentido de definir uma semântica formal para a técnica Estelle, permitiram, por outro lado, encontrar algumas limitações no que diz respeito à representação de alguns mecanismos a serem implantados a nível dos protocolos de comunicação da ISO. Dois importantes aspectos foram os seguintes: • a existência de um mecanismo único de comunicação, assíncrono, o que, de certo modo podia gerar alguns problemas de representação no que diz respeito à comunicação entre entidades de protocolo situados en diferentes camadas; • a forma de representação do paralelismo utilizando os atributos systemprocess e process (apresentados na seção 3.7) e a imposição da prioridade pai-filho para a seleção da transição a executar, o que, na maior parte dos casos, situa-se longe da realidade quando se considera entidades executando em diferentes sistemas. Estes dois principais pontos foram privilegiados na definição da técnica Estelle*, que introduz, de um lado, extensões no que diz respeito aos mecanismos de comunicação e, do outro lado, simplificações no que diz respeito à representação do paralelismo. O resultado disto é um ganho em termos de poder de expressão que simplifica o trabalho do usuário da técnica, permitindo representar aspectos de comportamento dos protocolos de comunicação. Estelle* introduz um mecanismo síncrono de comunicação, denominado rendezvous, onde duas instâncias de módulo devem sincronizar para que a troca de mensagem ocorra e que as transições associadas executem. Este mecanismo é caracterizado, em Estelle*, pela definição de duas novas cláusulas a serem associadas à parte de précondições das transições, denominadas cláusulas de sincronização. Sintaticamente, estas cláusulas são especificadas da maneira seguinte: <id_ip>?<interação> { sincronização em recepção } e <id_ip>!<interação> { sincronização em emissão } As condições para que duas instâncias de módulo, A e B sejam sincronizadas via rendez-vous são: — 9.18 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA • A contém uma transição tendo uma cláusula de sincronização em emissão e B uma cláusula de sincronização em recepção ou vice-versa; • os pontos de interação referenciados pelas duas cláusulas devem estar ligados por um canal; • as duas cláusulas devem fazer referência à mesma interação; • as duas transições, em A e B, respectivamente, devem estar sensibilizadas e serem selecionadas no processo de execução. Quando a sincronização ocorre, as partes ação das duas transições são executadas «simultaneamente», podendo ocorrer passagem de valores se a interação referenciada tem parâmetros associados a ela. Os pontos de interação sobre os quais uma sincronização deverá ocorrer devem ser declarados com uma nova política de fila, no queue, introduzida em função do referido mecanismo de comunicação. Isto significa a impossibilidade de coexistência, num mesmo ponto de interação, dos dois mecanismos de comunicação. Por outro lado, estes podem (e devem!) coexistir numa especificação Estelle*. As duas transições Estelle* abaixo, consideradas em duas diferentes instâncias de módulo ilustram a utilização deste mecanismo. Os pontos de interação F e D são declarados com política no queue e são supostos estar conectados. _ trans from espera_ack F?ack to ocioso begin end; _ _ trans from dado_consumido D!ack to ocioso begin end; _ Com relação à associação dos atributos à especificação e aos módulos e à política de seleção da transição a ser executada, duas simplificações foram propostas em Estelle*: • a primeira, diz respeito à supressão dos atributos systemprocess e process e à adoção, de forma rígida, do atributo systemactivity associado à especificação e o atributo activity associados aos módulos componentes, o que, sob determinadas condições, aproxima-se bastante da representação mais geral do paralelismo entre sistemas; • a segunda, a supressão da prioridade pai-filho como política de seleção da transição a ser executada, o que é uma das condições mencionadas acima. 4.2. Algumas ferramentas Estelle Os mecanismos de representação oferecidos por técnicas como Estelle, LOTOS e SDL tornam evidente a sua adoção no contexto da concepção dos protocolos de comunicação e das aplicações distribuídas. Entretanto, a existência de ferramentas — 9.19 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA coerentes para a automatização das diferentes etapas da concepção de um tal sistema são essenciais para a escolha de uma destas técnicas dentre as disponíveis. O interesse da adoção de uma técnica de concepção como Estelle é traduzida pelo grande número de trabalhos consagrados ao desenvolvimento de ferramentas de suporte à concepção. Vamos apresentar, nesta seção, duas das diversas ferramentas desenvolvidas neste contexto, as quais, utilizadas de maneira complementar, permitem cobrir a quase totalidade das etapas de concepção de um protocolo de comunicação, como apresentado na parte anterior deste documento. As duas ferramentas, ESTIM e EWS, foram desenvolvidas dentro do contexto de projetos do programa europeu ESPRIT, respectivamente os projetos SEDOS (Software Environment for the Design of Open Distributed System) e Sedos/Estelle/Demonstrator. ESTIM (Estelle SimulaTor based on an Interpretative Machine) foi desenvolvida no LAAS/CNRS (Toulouse - França), no contexto do projeto SEDOS. Ela apresenta facilidades para a validação de especificações formais em Estelle. A ferramenta foi escrita em ML e suporta principalmente os mecanismos definidos para Estelle*, descrita anteriormente. No que diz respeito à simulação, ESTIM suporta dois modos de pilotagem de uma sessão de simulação: • uma simulação passo-a-passo, na qual o usuário escolhe, no conjunto das transições sensibilizadas, qual transição deverá executar; este modo permite a definição e a condução de cenários de simulação, permitindo validar muitos aspectos do sistema especificado; por outro lado, ele exige a presença do usuário da ferramenta durante toda a sessão de simulação; • uma simulação automática, na qual o usuário define um número N de transições a serem executadas, a escolha, neste, caso, sendo aleatória, a ferramenta sendo encarregada desta tarefa; neste caso, a sessão é encerrada quando, ou o número de transições requisitadas foi executado, ou uma situação de bloqueio (deadlock) foi encontrada. Durante uma sessão de simulação, ESTIM permite o acesso a todos os objetos, Pascal e Estelle, compondo a especificação — variáveis, conteúdos de filas FIFO, estados globais, etc_ — possibilitando a fácil identificação de erros de especificação. Ainda, ele permite o acesso a informações estatísticas sobre a sessão de simulação, como, por exemplo, a lista das transições já executadas, a lista das transições que não foram executadas, instâncias de módulo criadas, e outras informações mais. ESTIM implementa igualmente uma técnica de verificação, através da construção de um grafo de alcançabilidade a partir da especificação Estelle* considerada. Este grafo é reduzido através da interface de ESTIM com ferramentas dedicadas (PIPN, ALDEBARAN, etc_) que implementam técnicas de redução por equivalência de processos. Deste modo, o grafo obtido (autômato equivalente) pode ser analizado para a verificação das propriedades do protocolo. O modo de utilização de ESTIM em verificação será apresentado mais adiante neste documento. A figura 9.9 apresenta um esquema das funcionalidades desta ferramenta. EWS (Estelle Work Station) foi desenvolvida no contexto do projeto Sedos Estelle Demonstrator, oferecendo facilidades para a edição (editor orientado à sintaxe), simulação (motor de simulação) e implementação (gerador de código e motor de implementação). A estrutura da ferramenta é mostrada à figura 9.10. O editor da ferramenta EWS permite a entrada de texto Estelle, sem erros de sintaxe, os erros sendo notificados e corrigidos durante a digitação do texto. Ele permite ainda realizar a formatação de texto digitado em outro editor (emacs, por exemplo). Um outro ponto interessante deste editor é a seleção de diversas vistas da especificação Estelle (apenas transições, apenas cabeçalhos Estelle, apenas corpos de módulo, etc_). — 9.20 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA O tradutor EWS traduz uma especificação Estelle na forma de uma estrutura mais apropriada à representação dos diferentes objetos Estelle. A esta estrutura de dados é dado o nome de forma intermediária que foi definida num espírito de expansão da ferramenta ou da sua interligação com outras ferramentas em desenvolvimento. O tradutor produz um diagnóstico completo dos erros de sintaxe, e uma referência cruzada da especificação. O gerador de código de EWS permite gerar, a partir de uma especificação Estelle, um programa fonte em linguagem C que poderá, em seguida, ser compilado e linkado a bibliotecas especiais de Estelle. O código C pode ser gerado dentro de dois objetivos — para simulação ou para execução num ambiente de implementação. O motor de simulação permite uma execução interativa da especificação Estelle, dando acesso às diversas opções e objetos da técnica. De modo similar à ferramenta ESTIM, o simulador EWS permite conduzir a simulação em dois modos: passo-à-passo e automático. Um aspecto interessante do simulador é o seu acoplamento a uma interface gráfica, que permite, inclusive, acompanhar o ponto sendo simulado através da visualização da listagem da especificação Estelle. O motor de implementação, finalmente, oferece uma biblioteca de rotinas necessárias à gestão da execução do código executável gerado a partir da especificação Estelle. Embora o código executável possa ser gerado sobre qualquer tipo de máquina, EWS já vem dotada de um conjunto de rotinas orientadas ao sistema UNIX. As duas ferramentas são operacionais e executam sobre estações de trabalho do tipo SUN. Fonte Estelle* Erros Estelle* GENESTIM Construções não suportadas Árvore abstrata ML ESTIM VERIFICAÇÃO Grafo de Alcançabilidade SIMULAÇÃO Traços e Cenários PIPN ou ALDEBARAN Autômato quociente (projeção) Figura 9.9 - Funcionalidades da ferramenta ESTIM. — 9.21 — CAP. 9 — A TÉCNICA ESTELLE PROF. VITÓRIO BRUNO MAZZOLA Fonte Estelle Editor orientado à sintaxe Fonte Estelle sem Erros de Sintaxe Mensagens de erro Tradutor Forma intermediária Gerador de Código Código executável Código instrumentado Motor de Implementação Simulador Traços e Cenários Figura 9.10 - Estrutura da ferramenta EWS. — 9.22 — Capítulo 10 E STADO 1. DA ARTE EM REDES INTRODUÇÃO Apesar de que em muitas instituições a palavra rede de comunicação assuma o tradicional significado da rede telefônica, em boa parte delas as comunicações entre computadores vem se tornando uma realidade (que o digam os felizes distribuidores de redes locais para microcomputadores). No entanto, apesar dos grandes resultados obtidos e concretizados na forma de produtos para a interconexão de sistemas, como as redes locais de microcomputadores, os sistemas operacionais de rede, etc..., a tecnologia resta em evolução, motivando a continuidade de trabalhos de pesquisa e desenvolvimento em redes de comunicação, no sentido de superar as limitações dos produtos atuais, mas também com o objetivo de oferecer novas possibilidades de interconexão e transmissão, visando o aparecimento de novas aplicações, algumas das quais eram consideradas fantasias de ficção científica há poucos anos atrás. O objetivo deste capítulo é, sem a pretensão de esgotar o assunto, apresentar alguns temas e resultados dos desenvolvimentos em redes de comunicação. Nas seções 2 e 3 apresentaremos duas concepções em termos de redes de comunicação, as redes ISDN — redes digitais de serviços integrados, e a rede FDDI, baseada em fibra ótica. Finalmente, na seção 4 serão mencionados e discutidos alguns dos temas de pesquisa em desenvolvimento nas instituições nacionais e internacionais. 2. A REDE DIGITAL DE SERVIÇOS INTEGRADOS - ISDN A rede telefônica vem, após muito tempo, servindo de suporte às comunicações no mundo inteiro. A rede; que foi concebida inicialmente para transmitir o sinal analógico de voz é inadequada para o transporte de outras naturezas de informação, tais como dados, imagens, etc... Por outro lado, as diversas necessidades em termos de serviços de comunicação expressas pelos usuários terminaram por conduzir a estudos de um novo conceito em termos de comunicação, que deverá substituir a tradicional rede telefônica por um sistema baseado na transmissão digital. A este novo sistema, é dado o nome de Rede Digital de Serviços Integrados, conhecido também pela sigla ISDN (Integrated Services Digital Network). O ISDN tem por objetivo oferecer serviços de comunicação capazes de suportar as atuais necessidades das aplicações que requerem o transporte de sinais de voz (como o serviço telefônico) mas também integrando novos serviços que viabilizem a transmissão de outras naturezas de informação. —10.1 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA Os trabalhos sendo conduzidos em torno do ISDN são coordenados, a nível internacional, pelo CCITT, sendo que as primeiras normas foram editadas em 1984, tendo sido revisadas em 1988. 2.1. Conceitos de base do ISDN A principal característica do ISDN, como definida pelo CCITT, é a capacidade de “assegurar, a nível de uma mesma rede, uma larga gama de possibilidades de aplicações telefônicas ou não. Um elemento chave da integração de serviços nas ISDN é o fornecimento de um conjunto de serviços com o auxílio de um número limitado de tipos de conexões e interfaces usuário-rede polivalentes”. Esta definição, do CCITT, evidencia os pontos mais importantes sendo tratados pelos trabalhos conduzidos em ISDN: • a conectividade digital, que permite assegurar que, independente da natureza da informação (dados, voz, imagem, etc...), a rede suporte o transporte de um ponto a outro, de usuário a usuário, na forma digital, utilizando recursos homogêneos de tratamento para a transmissão e comutação; • a modelização dos serviços ISDN, que é baseada no modelo de referência OSI, definindo uma organização das funções relativas aos serviços de comunicação num número limitado de elementos homogêneos e hierarquizados, sendo que as interações entre os níveis adjacentes é realizada através de primitivas de serviço; • a polivalência da interface usuário-rede, que prevê a possibilidade de dispor, numa interface comum, de uma grande variedade de serviços, tais como a telefonia, a troca de dados informatizados, o intercâmbio de imagens, etc... • um modo de endereçamento integrado, com base no modo de endereçamento utilizado em telefonia onde um endereço é composto de um indicativo do país, um indicativo nacional e um número de assinante; em adição, um esquema de subendereçamento permite a distinção de diferentes equipamentos conectados à instalação de um assinante. 2.2. Serviços oferecidos pelas ISDN Apesar de que o grande atrativo das ISDN é o oferecimento de um conjunto de novos serviços de comunicação, o oferecimento do serviço de transporte de voz continua a ser um aspecto de grande importância. A organização dos serviços em camadas como sugere o modelo OSI permite a definição de duas diferentes categorias de serviços: os serviços de suporte e os teleserviços. Os serviços de suporte são aqueles providos pelas camadas baixas (camadas de 1 a 3) e que permitem garantir o envio da informação de um ponto a outro, superando as imperfeições e problemas que advindos du suporte de comunicação e do ambiente. Os teleserviços são aqueles providos pelas camadas mais altas (de 4 a 7), cujo conjunto de protocolos permite colocar, à disposição do usuário, as diferentes facilidades sugeridas pelo ISDN. Ainda, para garantir a compatibilidade com os serviços atualmente existentes, será, muito provavelmente necessária a existência de funções de conversão de protocolos, estas podendo residir nos terminais, nos próprios equipamentos ou na rede. O CCITT define, assim três tipos de serviço: os serviços de suporte, os teleserviços e os complementos de serviços. Os serviços de suporte são aqueles diretamente relacionados à transmissão entre assinantes e às características de acesso e utilização da rede. São caracterizados por um certo número de atributos associados à taxa de transmissão, o modo de transmissão, as possibilidades de transferência (voz, dados, imagens, etc...), o estabelecimento da — 10.2 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA comunicação (sob demanda, reservado, etc...), a configuração da rede (ponto a ponto, multiponto), a qualidade de serviço, etc... Os teleserviços correspondem, em termos de aplicação, à associação de um terminal particular com um ou vários serviços de suporte. Estes são, de forma similar aos serviços de suporte, especificados por atributos, sendo que, desta vez, os atributos referemse a outros aspectos mais ligados aos usuários, tais como, o tipo de informação manuseada pelo usuário (som, imagem, vídeo, dados, etc...), os protocolos adotados nas camadas 4 a 7, etc... Os complementos de serviços expressam os acessórios que permitem modificar ou adaptar as funções providas nas redes atuais. Um exemplo típico de serviço a ser fornecido pelas ISDN é aquele de um aparelho de telefone moderno, dotado de múltiplas teclas de função que permitam, por simples pressão do usuário, estabelecer contato com um outro assinante presente numa lista previamente construída. É também possível, visualizar, na tela do aparelho telefônico, enquanto a chamada está sendo realizada, o número, o nome e endereço do assinante que está sendo contactado. Um outro exemplo interessante é transferência de chamadas para qualquer lugar do mundo, contatos múltiplos, conferências, etc... Ainda, é possível que o usuário, dado que a voz é digitalizada, tenha condições de deixar registrado qualquer recado para posterior consulta (é evidente que este serviço é possível hoje com as secretárias eletrônicas, mas, se este serviço for uma facilidade existente a nível de rede, para que comprar secretária eletrônica???). Um outro aspecto interessante das redes ISDN é a facilidade com a qual aparelhos telefônicos e informáticos poderão interagir, uma vez que estes vão possuir características similares. Podemos ainda enumerar outros aspectos de importância previstas no RNIS e que constituem-se hoje em áreas importantes de trabalhos de pesquisa em todo o mundo: • o conceito de de grupo fechado de usuários, onde todo usuário pertencente ao grupo tem a possibilidade de entrar em comunicação com qualquer outro membro deste; por outro lado, usuários que não pertençam ao grupo estão proibidos de ter acesso a informações trocadas entre os membros; • o videotexto, que permite o oferecimento de um serviço de acesso interativo a bases de dados a partir de um terminal (catálogo telefônico, páginas amarelas, serviço metereológico, informações sobre a situação de tráfego de estradas, compras via rede, acesso a extrato e saldo de contas bancárias, e muitas outras aplicações incluindo aplicações de lazer como jogos eletrônicos e até correio sentimental); • a telemedida, que pode permitir à concessionária de energia elétrica o acesso via rede aos medidores de energia, eliminando a necessidade da utilização de pessoas para esta finalidade; • o telealarme, que permite a chamada automática dos bombeiros ou ambulâncias na ocorrência de uma situação de emergência (incêndio, ataque cardíaco, etc...); • o envio de documentos via rede, já existente através dos serviços de fax. 2.3. A implementação das ISDN É claro que a implementação de redes deste tipo deverá tomar um tempo considerável, considerando principalmente os grandes investimentos que deverão ser feitos para transformar a rede telefônica atual numa rede totalmente digital. As duas tecnologias, analógica e digital, deverão coexistir durante diversos anos, num contexto de cooperação, o que permitiu definir diversos aspectos da forma final das ISDN. Abaixo são apresentados alguns pontos que permitirão mostrar as dificuldades que deverão ser contornadas (em relação ao sistema atual) para viabilizar a instalação das ISDN. — 10.3 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA Um primeiro ponto diz respeito à transmissão dos sinais de controle na rede telefônica. Nestas, estes sinais são transmitidos dentro de uma faixa de freqüência de 4 kHz, sendo que as combinações destes sinais são denominadas sinalização na faixa. Esta forma de implementação apresenta alguns inconvenientes, principalmente a possibilidade de surgimento de interferências entre os sinais de telefone e os de sinalização. Uma solução interessante a este ponto é a chamada sinalização fora de faixa, onde uma rede independente é utilizada para conduzir os sinais de controle da comunicação. Esta técnica, além de contornar os problemas de interferência entre sinais de telefone e de sinalização, permitiu ainda aumentar a possibilidade de aplicações nas redes telefônicas, como por exemplo, a coleta de dados relativos ao consumo dos assinantes, a fatura detalhada, o acesso a bases de dados, o acompanhamento de operações de supervisão e manutenção, etc... A primeira tarefa na definição das ISDN foi a padronização da interface usuário-rede. A segunda etapa, mais lenta será a substituição dos centros de distribuição atuais pelos centros digitais, capazes de oferecer aos usuários a interface de acesso a ISDN. Neste estágio, os usuários poderão utilizar os serviços ISDN, independentemente da sua natureza. Uma terceira etapa, será a total substituição das redes de transmissão e dos centros de comutação pelas redes de transmissão e comutação integradas. A figura 10.1, a seguir, ilustra estas duas últimas etapas. 2.4. Aspectos arquiteturais de ISDN A idéia principal da ISDN é o oferecimento direto ao usuário de uma interface digital que assegure a transmissão de fluxos de informação binária de qualquer natureza: voz, dados informáticos, som, imagens, etc... Esta ligação digital deve suportar diversos canais de comunicação independentes e multiplexados. Duas formas de ligações foram definidas: a primeira, com pequena faixa passante, destinada principalmente ao grande público e que vai oferecer um pequeno número de canais, e a segunda, destinada a empresas e grandes “consumidores” que deverá ser capaz de oferecer um grande número de canais. A figura 10.2 ilustra uma configuração mínima para um assinante particular, onde pode-se verificar os diferentes elementos da instalação: a interface de rede, ou NT1 (para Network Termination 1, como definido pelo CCITT), que é conectada ao centro ISDN de distribuição mais próximo, sendo que o cabo utilizado é o mesmo que aquele da rede telefônica tradicional. A NT1 possui uma interface de acesso, à qual pode ser ser conectado um barramento passivo (multiponto), onde o assinante poderá ligar até oito equipamentos independentes, tais como: aparelhos telefônicos, aparelhos de fax, computadores, terminais ISDN, etc... Para o assinante, a fronteira entre a sua instalação e a rede ISDN é o conector NT1. Na sua forma atual, a NT1 é mais que uma simples caixa de conexão, uma vez que ela contém um conjunto de circuitos eletrónicos destinados a cooperar com o sistema de gerenciamento da rede ISDN, ao estabelecimento e à liberação de conexões, às operações de verificação e manutenção dos meios de transmissão e à coleta de informações relativas ao desempenho efetivo da rede. Cada terminal conectado ao barramento é dotado de um endereço único a fim de permitir a sua seleção, sendo que a forma mais básica de realizar a afetação dos endereços é a utilização de um contactor mecânico e o acionamento de manual para a conexão de um equipamento particular. Uma outra solução, mais interessante, é a atribuição de endereços pela própria NT1 a cada vez que um novo equipamento é ativado no barramento do assinante. — 10.4 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA interface ISDN interface ISDN REDE COMUTAÇÃO DE CIRCUITOS acesso ISDN acesso ISDN REDE DE SINALIZAÇÃO REDE A COMUTAÇÃO DE PACOTES Terminal ISDN interface ISDN acesso ISDN Terminal ISDN interface ISDN REDE ISDN acesso ISDN Terminal ISDN Terminal ISDN Figura 10.1 - As duas últimas etapas da implantação da ISDN: a instalação dos centros digitais; a instalação da rede ISDN integrada. NT1 equipamentos ISDN CENTRO DE DISTRIBUIÇÃO Figura 10.2 - Instalação básica para um assinante particular. A interface digital é dotada ainda de uma função de resolução de conflitos sobre o barramento do assinante, provocados pela tentativa de envio simultâneo por parte dos diversos equipamentos conectados. Para isto, a NT1 opera como um árbitro do barramento, definindo, em caso de conflito, que equipamento terá o direito de acesso ao barramento. Considerando o modelo OSI, a interface digital oferece serviços relacionados à camada física, definindo as especificações mecânicas e elétricas da interface, mas não existe nenhuma preocupação com o significado dos quadros transmitidos. Para os usuários considerados grandes consumidores, porém, a configuração apresentada na figura 10.2 não é adequada, uma vez que estes apresentam uma maior demanda em termos de possíveis conversações a serem tratadas de forma simultânea. Para isto, a utilização de uma simples NT1 não é a solução ideal, pois esta não é concebida para suportar grandes volumes de conversações. Sendo assim, foi definida uma outra categoria de interface, a interface digital de assinante, ou NT2 (Network Termination 2), que é conectada como mostra a figura 10.3. Uma NT2 fornece serviços relacionados às camadas de 1 a 3 do modelo OSI, podendo ser mais ou menos complexas, segundo a instalação considerada, e permite a conexão de equipamentos mais diversos, tais como os aparelhos telefônicos RNIS, os terminais RNIS, etc..., podendo ainda suportar a conexão de equipamentos não compatíveis RNIS ou mesmo redes locais previamente instaladas na empresa. Evidentemente, para a conexão desta última classe de equipamentos, será necessária a existencia de uma passarela de interconexão, dedicada a realizar as conversões de protocolos necessárias à conexão, são os adaptadores de terminais, ou TA. 2.5. Interfaces de acesso ISDN O termo interface interpretado no mundo ISDN difere um pouco daquele empregado quando nos referimos ao modelo OSI. No mundo OSI, uma interface é vista como o meio de interação entre duas camadas adjacentes compondo a arquitetura de comunicação. Já no mundo ISDN, a interface é vista como as relações entre a rede e os equipamentos do assinante. As figuras 10.4 (a) e (b) ilustram esta diferença. — 10.5 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA Terminal ISDN Telefone ISDN NT2 CENTRO DE DISTRIBUIÇÃO NT1 TA Terminal Não-ISDN TA Rede Local Figura 10.3 - Configuração da instalação para um grande consumidor (empresa). A ISDN é estruturada de forma compatível com o modelo OSI, ou seja, em camadas funcionais, sendo que a camada física da rede define os aspectos mecânicos, elétricos, funcionais e procedurais da interface. A ISDN utiliza um conector mecânico a contatos deslizantes, conformes à norma ISO IS 8877, composto de 8 pinos. Dois pinos dedicados à transmissão dos sinais, dois outros à recepção e os quatro pinos restantes são destinadas à alimentação elétrica dos terminais NT1 e NT2. A rede oferece diversos canais de comunicação multiplexados, sendo que estes foram organizados em canais típicos, definidos, cada tipo, por uma letra. São os seguintes: • • • • • • A: uma linha telefônica analógica oferecendo 4 kHz de banda passante; B: um canal digital a 64 kbit/s para voz digitalizada ou dados; C: um canal a 8 ou 16 kbit/s; D: um canal a 16 ou 64 kbit/s para a sinalização fora de faixa; E: um canal a 64 kbit/s para a sinalização interna; H: canais digitais com taxas de transmissão de 384, 1536 ou 1920 kbit/s. Do ponto de vista do fornecimento ao usuário, o CCITT definiu algumas possíveis combinações destes canais, não estando previstas outras combinações: • acesso de base: 2B + D • acessos primários: 30B + D (Europa) e 23B + D (USA e Japão) • acesso híbrido: A + C • instalação do assinante interfaces interface (a) equipamentos da rede ISDN (b) Figura 10.4 - Ilustração do conceito de interface: (a) segundo o modelo OSI; (b) segundo ISDN. — 10.6 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA A primeira combinação é destinada aos assinantes particulares e às pequenas empresas, sendo que os canais B podem ser utilizados como canal para a transmissão de dados digitais por pacotes ou como linhas telefônicas digitais, sendo que a sinalização relativa a estes canais é transmitida sobre o canal D, de modo que a totalidade da capacidade de transmissão dos canais B é disponível aos assinantes. No acesso de base, a taxa de transmissão do canal D é de 16 kbit/s. Os pedidos de conexão transmitidos sobre o canal D são representados na forma de mensagens codificadas em caracteres. Uma mensagem típica especifica o canal B a ser utilizado (B1 ou B2), o endereço ISDN do assinante a ser contactado e outras indicações relacionadas às opções sobre a natureza da chamada. A segunda combinação é destinada principalmente às empresas, oferecendo 30 ou 23 canais B (dependendo se a rede é na Europa ou USA e Japão) e um canal D. Já a terceira combinação é destinada à utilização de aparelhos telefônicos analógicos (graças ao fornecimento de um canal A) e para o envio de dados ou voz digital, graças ao fornecimento de um canal C digital. 2.6. Outros pontos relativos a ISDN O grande objetivo das ISDN é a substituição global das redes telefônicas analógicas atualmente instaladas por um sistema digital capaz de suportar o tráfico telefônico clássico, mas também o transporte de outras formas de informação, como as imagens, os dados, etc... Desta forma, qualquer assinante em qualquer lugar do mundo terá, à sua disposição, uma possibilidade de comunicação unificada por intermédio de interfaces padronizadas. O acesso de base ISDN é padronizado internacionalmente, existindo pequenas variações de implementação no que concerne o acesso primário. Uma grande vantagem da padronização das interfaces será a necessidade do fornecimento, por parte dos fabricantes de uma grande quantidade de equipamentos (terminais, aparelhos telefônicos, etc...) compatíveis ISDN, o que permitirá sua obtenção a baixos custos. Por outro lado, os trabalhos de padronização dos aspectos relativos a ISDN deverá tomar ainda algum tempo, enquanto a tecnologia evolui de forma assombrosa, o que significa que as soluções adotadas para a rede ISDN poderão, no momento estar em atraso com as soluções existentes no mercado. Em todo caso, as redes ISDN deverão vir a ser a segunda rede de comunicação de âmbito mundial, após a rede telefônica, sendo que, atualmente, um grande número de países estão trabalhando no seu desenvolvimento. A interconexão das redes ISDN a nível de países já está se iniciando, sendo que algumas das conexões internacionais (particularmente entre Europa e Estados Unidos) foram iniciadas no início dos anos 90. Resta saber quando se poderá contar com esta tecnologia a nível de Brasil. 3. A REDE FDDI A rede FDDI (Fiber Distributed Data Interface) é uma rede estruturada em malha ou anel que utiliza a fibra ótica como suporte de transmissão. É um padrão ANSI, com controle de acesso ao meio controlado por ficha, apresentando alto desempenho no que concerne a transmissão de dados. A taxa de transmissão nominal atinge os 100 Mbit/s, podendo abranger distancias de 200 km, permitindo a conexão de até 1000 estações, o que faz com que a rede FDDI possa ser utilizada em conjunto ou em substituição a redes locais baseadas nas normas IEEE. No entanto, a alta taxa de transmissão atingida permite que esta seja utilizada como uma rede localizada num nível hierárquico acima das redes locais tradicionais, servindo de meio de transporte entre as diversas redes locais, como sugere a configuração ilustrada na figura 10.5. — 10.7 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA BARRAMENTO COM FICHA (TOKEN BUS) computador ANEL COM FICHA (TOKEN RING) ETHERNET REDE FDDI gateway ETHERNET Figura 10.5 - Rede FDDI sendo utilizada em conjunto com redes locais tradicionais. A rede FDDI-II, versão mais recente da rede FDDI, foi concebida para levar em conta o tráfego de dados variáveis, particularmente os dados informáticos, os dados com restrições temporais rigorosas (por exemplo, a voz digitalizada) e os dados vindos de redes tipo ISDN. A rede FDDI é baseada na existência de duas malhas de fibra ótica, sendo que a transmissão numa malha é feita num sentido e na outra malha em sentido inverso, como ilustra a figura 10.6(a). Esta estrutura permite obter um maior grau de confiabilidade da rede, uma vez que, se uma das malhas é interrompida acidentalmente, a segunda pode ser utilizada como suporte de transmissão. Ainda, se as duas malhas vêm a ser interrompidas num mesmo ponto, estas podem ser reconfiguradas de modo a compor uma nova e única malha, como está ilustrado na figura 10.6(b). A norma ANSI que especifica a rede FDDI define duas categorias de estações a serem conectadas às redes FDDI: • as estações de classe A, que são conectadas às duas malhas; • as estações de classe B, de menor custo, que são conectadas unicamente a uma malha. A escolha sobre qual estação conectar, de classe A ou B, é feita em função do grau de confiabilidade desejado e, evidentemente, dos investimentos que se pode fazer. De todo modo, uma mesma rede FDDI pode suportar as duas classes de estações simultaneamente. A transmissão de bits na camada física segue a técnica de códigos de grupo, denominado 4B/5B. Esta técnica é baseada na associação, a cada 4 bits, de uma palavra de 5 bits chamada símbolo. Esta codificação é caracterizada pelo fato de que existirão no máximo dois zeros consecutivos em cada símbolo, sendo que a técnica de codificação utilizada é o NRZI. A vantagem desta técnica de transmissão é a redução do débito binário real sobre a fibra. No que diz respeito ao controle de acesso ao meio, a rede FDDI é fundada na norma IEEE 802.5, na qual uma estação interessada em realizar um envio deve, antes, tomar posse de uma ficha que representa o direito de emissão sobre o suporte. Uma vez de posse da ficha, a estação tem o direito de enviar um quadro, sendo porém forçada a retirá-lo quando ele lhe retorna. A diferença básica entre o protocolo FDDI e o 802.5 diz respeito à emissão da ficha. — 10.8 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA (a) (b) Figura 10.6 - (a) Rede FDDI; (b) Reconfiguração da rede em caso de interrupção. Na versão IEEE, uma estação não pode recolocar a ficha em circulação até que o quadro emitido chegue em sua totalidade. No protocolo FDDI, devido ao grande número de estações podendo estar conectadas (1000) e à grande distancia sendo atingida por esta rede (200 quilômetros), a espera pelo retorno do quadro introduziria um atraso considerável prejudicando o desempenho da rede. Por esta razão, neste protocolo, a ficha é enviada imediatamente após o envio do quadro. Isto significa que, num anel de dimensões relativamente grandes, diversos quadros podem estar circulando simultaneamente. A estrutura dos quadros é similar àquela do protocolo IEEE, sendo que o protocolo FDDI permite, além dos quadros normais, o envio de quadros especiais, denominadas tramas síncronas. São quadros comportando mensagens que apresentam restrições temporais críticas. 4. A PESQUISA EM REDES DE COMUNICAÇÃO — ESTADO DA ARTE As redes de comunicação estão assumindo um papel de importância cada vez maior em nossas vidas, seja do ponto de vista profissional (muito mais evidente), seja do ponto de vista doméstico (não demoraremos a sentir também esta evidencia). A área tecnológica esta em constante evolução, comportando-se como um sistema a realimentação positiva: para cada solução obtida vão surgindo novas necessidades particularmente em função da abertura de possibilidade de novas aplicações. Isto é uma realidade principalmente na área da informática. Quem está habituado a utilizar computadores por pelo menos dez anos pode ser testemunha da crescente evolução ocorrida neste período no que diz respeito às arquiteturas de computadores. E, apesar disto...quem se dá por satisfeito??? Na área das redes de comunicação, o perfil é semelhante; embora grandes resultados tenham sido obtidos nos últimos anos, novas necessidades vão aparecendo e motivando a continuidade dos trabalhos de pesquisa na área. Vamos tentar, sem, evidentemente conseguir esgotar o assunto, discutir brevemente alguns temas de pesquisa em realização na área das redes de comunicação. 4.1. A Engenharia de Protocolos de Comunicação Como foi mostrado nos capítulos 2 e 3, o desenvolvimento de uma arquitetura de comunicação é baseada na implementação de um conjunto considerável de protocolos de comunicação que, respeitando o que é definido nas normas, operam no sentido de oferecer os serviços definidos para cada camada compondo a arquitetura. Apesar da proposta de arquitetura de comunicação em várias camadas, adotada pela totalidade das propostas de redes de comunicação, os protocolos de comunicação a nível — 10.9 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA de cada camada constituem-se num grau de dificuldade considerável pela grande quantidade de problemas que estes devem tratar. Isto significa que a concepção de protocolos de comunicação é uma tarefa longe do trivial, necessitando ser desenvolvida com base numa política de disciplina que evoque as normas definidas pela engenharia de programação. O nome de Engenharia de Protocolos surge então, como uma forma de particularização pela aplicação das normas da Engenharia de Programação à concepção dos protocolos de comunicação. Um grande número de trabalhos tem sido realizados nesta área, particularmente nos seguintes temas: • estudo e definição de modelos e metodologias de desenvolvimento de protocolos; • desenvolvimento de ferramentas automatizadas para a construção de protocolos de comunicação; • desenvolvimento de técnicas de validação de software para protocolos de comunicação; • desenvolvimento de metodologias e técnicas para o teste de implementações de protocolos; • etc... 4.2. Sistemas multimídia Um outro aspecto importante no domínio das redes de comunicação e que vem surgindo como uma palavra que traduz o futuro das comunicações via rede é o suporte a aplicações multimídia. Por aplicação multimídia entende-se as aplicações informáticas que envolvem o tratamento de diversos tipos de informação, além dos tradicionais dados informáticos: imagem, sinais de áudio e vídeo, etc... A possibilidade de suporte à transmissão destes tipos de informação abre as portas para um conjunto bastante importante de aplicações, como, por exemplo: • • • • • • as teleconferências; a manutenção remota; a troca de diagnósticos médicos ou mesmo cirurgias a distancia; a realidade virtual; o videofone; etc... É evidente que a existência, num mesmo sistema de dados de naturezas tão distintas impõem dificuldades a serem contornadas, para algumas das quais as soluções já existem sendo que outras ainda representam uma incógnita. Um dos problemas a ser enfrentado, evidentemente, é a questão das taxas de transmissão disponíveis nas redes de comunicação. As redes atuais estão em condições de suportar a demanda das aplicações multimídia, dado o grande volume de informação que deverá trafegar na rede? Outra questão são os protocolos de comunicação. Aqueles protocolos desenvolvidos para o suporte ao transporte de dados informáticos estariam adaptados para a transmissão de outros tipos de informação? E as interações entre diversas mídias, como serão tratadas? Por exemplo, quando imagem e som são transmitidos via rede, quem vai assumir a tarefa de tratar a sincronização entre os dois tipos de informação? São questões que alguns trabalhos sendo realizados não deverão tardar a responder. 4.3. As redes de comunicação industriais As redes de comunicação têm servido, já há vários anos, como meio de integração das diferentes atividades de uma empresa. Alguns resultados importantes foram obtidos, motivados pelas próprias necessidades das empresas na interconexão de seus — 10.10 — CAP. 10 — ESTADO DA ARTE EM REDES PROF. VITÓRIO BRUNO MAZZOLA equipamentos. Podemos ressaltar aí os trabalhos iniciados pela General Motors e que resultaram na definição da arquitetura MAP como proposta de padrão de comunicação para a interconexão de equipamentos de produção programáveis. No entanto, a continuidade dos trabalhos neste domínio permitiu verificar que a arquitetura MAP não era adequada para todos os níveis de atividades dentro da empresa, particularmente os níveis hierárquicos mais baixos, onde as trocas de mensagens são realizadas com freqüência relativamente elevada, com restrições temporais críticas, sendo que o atraso ou a não chegada de uma mensagem em tempo hábil pode comprometer o bom funcionamento de um processo de fabricação. Isto motivou o aparecimento de novas propostas de arquiteturas de comunicação, mais adaptadas para estes níveis: os chamados Barramentos de Campo (Fieldbus). Diversas propostas resultaram dos trabalhos realizados, algumas das quais já existentes na forma de produtos. 4.4. As redes de comunicação domésticas Mais recentemente, principalmente nos países mais desenvolvidos, o uso dos computadores transcendeu a fronteira das instituições para atingir também os lares. Cada vez mais pessoas tornam-se possuidoras de computadores pessoais, principalmente devido às constantes quedas de preço destes equipamentos. Em muitos países, os computadores são vendidos até mesmo em supermercados, ao lado dos equipamentos eletrodomésticos. Teriam os computadores sido transformados em eletrodomésticos ou os eletrodomésticos em computadores? A verdade é que muitos eletrodomésticos de hoje (e sem dúvida a totalidade dos de amanhã), são dotados de um ou vários processadores, constituindo-se numa máquina programável. Se é possível hoje conectar computadores a nível de uma escola, uma empresa ou repartição pública por meio de uma rede de comunicação, por que não fazer o mesmo numa residência? Esta idéia motivou o aparecimento de um novo conceito, o dos sistemas de comunicação domésticos (ou home systems), que sugere a interconexão dos diversos equipamentos presentes numa casa através de uma rede que vai permitir a comunicação entre um dado equipamento com os demais instalados na casa ou com o exterior. Diversos projetos de pesquisa estão em realização, principalmente nos Estados Unidos, Japão e Europa, com objetivo de definir padrões de protocolos para atenderem a esta classe de sistemas, assim como de especificar e desenvolver equipamentos compatíveis com estes padrões. — 10.11 — BIBLIOGRAFIA COMER, D.; STEVENS, D. L. “Internetworking with TCP/IP”, Ed. Prentice-Hall, New York, 1993. GIOZZA, W. F. et alli. Redes Locais de Computadores - Tecnologia e Aplicações, McGraw-Hill, São Paulo, 1986. RUDNIANSKI, M. Architecture de Réseaux: le modèle ISO - Rôle et Fonctionnalités, Editests, Paris, 1986. SOARES, L. F. G.; LEMOS, G.; COLCHER, S. “Redes de Computadores: Das LANs, MANs e VANs às Redes ATM”, 2ª Edição. Ed. Campus, Rio de Janeiro, 1997. TANENBAUM, A. S. “Redes de Computadores”, 3ª edição, Ed. Prentice Hall, New York, 1996. — B.1 —