Protocolos de comunicação
Sumário:
1 Camadas de Protocolo
O modelo OSI (Open Systems Interconnection) é um modelo de referência baseado em uma proposta da ISO (International Standards Organization) para padronização dos protocolos utilizados em redes. Ele consiste em sete camadas e foi projetado seguindo os seguintes princípios de [1,2]:
- Criação de uma camada sempre que uma nova abstração é necessária [1].
- Cada camada possui uma função bem definida [1].
- Seleção das funções de cada camada com o objetivo de estabelecer protocolos internacionalmente padronizados [1].
- Os limites entre as camadas devem ser escolhidos de forma a minimizar o fluxo de informações através das interfaces [1].
- O número de camadas deve ser grande o suficiente para evitar a necessidade de agrupar funções distintas na mesma camada por necessidade, mas também deve ser pequeno o suficiente para evitar que a arquitetura se torne complicada [1].
O modelo OSI (Figura 1) foi desenvolvido para permitir a conexão de sistemas abertos, ou seja, sistemas que podem se comunicar com outros sistemas [1].
Figura 1 – Ilustração do modelo OSI [2].
A camada de aplicação tem como função o registro de requisições. Aqui, um protocolo como o HTTP — protocolo base da World Wide Web — carrega informações do webserver e as passa para as camadas abaixo (de uma maneira que as informações sejam interpretáveis) [4].
A camada de transporte é responsável pela comunicação fim-a-fim, em outras palavras, aplicações dessa camada só se comunicam com seu receptor. São dois os principais protocolos dessa camada. Um deles é o TCP (Transmission Control Protocol), que é um protocolo orientado à conexão — o que significa que a transmissão dos dados só acontece se antes for estabelecida uma conexão (que é fechada após a transmissão dos dados), e que garante que os dados são entregues e livres de erro — e é adequado ao envio de informações que devem ser recebidas de forma confiável, como uma página web e um e-mail. O outro é o UDP (User Datagram Protocol), que envia os pacotes sem nenhum tipo de retransmissão (não garantindo assim que todas as informações serão recebidas e que não haverá erros), e que é adequado para comunicações sensíveis ao tempo, em que descartar pacotes é melhor do que esperar, como o live streaming [4].
Na camada de rede, um protocolo como o IP (Internet Protocol) coloca os pacotes na rota de destino correta. O responsável por esse processo são os roteadores — dispositivos que implementam apenas as três camadas mais baixas da pilha de protocolos —, que fazem isso ao inspecionar o endereço IP de destino [4].
A camada de enlace, gerencia a transmissão dos pacotes de um dispositivo ao outro, garantindo que ele seja re-transmitindo adiante caso ainda não tenha chegado ao seu destino final [4]. Exemplo: Ethernet.
Por fim, a camada física lida com detalhes mais finos da comunicação, como a tensão do sinal transmitido [4].
Em todos os níveis da transmissão um protocolo recebe um pacote de dados proveniente do protocolo que se encontra na camada acima na forma de uma unidade de serviço de dados, ou SDU (Service Data Unit). Ele processa o pacote, adiciona um cabeçalho que descreve o processamento realizado e gera o resultado na forma de uma unidade de dados de protocolo, ou PDU (Protocol Data Unit). Esse processo se repete em todos os níveis do modelo OSI, onde a recém gerada PDU servirá como o SDU da próxima camada. Isso continua até que o pacote atinja a camada mais baixa de todas, momento em que ele é transmitido. O receptor inverte todas essas operações, usando os cabeçalhos que foram definidos durante a transmissão, de modo a desfazer o processamento feito pelo transmissor [4].
2 Pilha TCP/IP
O ARPANET (Advanced Research Projects Agency Network), uma rede de pesquisa financiada pelo Departamento de Defesa dos Estados Unidos, foi um marco importante na história das redes de computadores. Inicialmente, conectava universidades e instituições governamentais por meio de linhas telefônicas alugadas. Com o tempo, a adição de redes via satélite e rádio apresentou desafios de interoperabilidade com os protocolos existentes, levando à necessidade de uma nova arquitetura de referência [1,2].
Essa arquitetura resultou no Modelo de Referência TCP/IP (Figura 2), nomeado após seus principais protocolos. Criado por Vinton Cerf e Robert Kahn, o TCP/IP foi descrito em 1974 e posteriormente refinado e padronizado pela comunidade da internet. O modelo foi projetado para permitir a conexão contínua de múltiplas redes, oferecendo uma base sólida para o funcionamento da internet como a conhecemos hoje [1,2].
Além de promover a conectividade entre redes, o TCP/IP também foi desenvolvido com foco na resiliência. O Departamento de Defesa tinha a preocupação de que a rede pudesse sobreviver a possíveis ataques e falhas de hardware sem interromper as comunicações em andamento. Dessa forma, mesmo que parte da infraestrutura fosse danificada, as conexões permaneceriam intactas, desde que as máquinas de origem e destino estivessem funcionando [1,2].
Uma característica importante do TCP/IP é sua flexibilidade para atender a diferentes requisitos de aplicativos. Desde a transferência de arquivos até a transmissão de voz em tempo real, o modelo foi projetado para acomodar uma ampla variedade de necessidades, tornando-se a base para a comunicação eficiente na internet [1,2].
Figura 2 – Ilustração do modelo OSI vs. TCP/IP [2].
3 SCTPLB e SCTP
SCTPLB (Stream Control Transmission Protocol Load Balancer), é uma solução de balanceamento de carga projetada para lidar com o protocolo SCTP (Stream Control Transmission Protocol). O SCTP é um protocolo de transporte orientado a conexão que oferece recursos avançados em relação ao TCP (Transmission Control Protocol), como suporte a múltiplas streams e controle de congestionamento [1].
O SCTPLB é uma implementação de balanceamento de carga específica para o protocolo SCTP, que distribui o tráfego entre múltiplos servidores ou destinos finais. Ele atua como um intermediário entre os clientes SCTP e os servidores SCTP, garantindo uma distribuição equilibrada das conexões e cargas de trabalho [1].
Uma das principais finalidades do SCTPLB é melhorar a escalabilidade e a disponibilidade dos serviços SCTP. Ele pode ser usado em cenários onde há um grande número de conexões SCTP e a carga precisa ser distribuída de forma eficiente para garantir o desempenho e a capacidade de resposta dos servidores [1].
O SCTPLB funciona interceptando as conexões SCTP dos clientes e redirecionando-as para os servidores de destino. Ele realiza a distribuição de carga com base em diferentes algoritmos, como round-robin (cada servidor recebe uma conexão sequencialmente), balanceamento de carga ponderado (atribui pesos diferentes a servidores com capacidades diferentes) ou algoritmos baseados em métricas de desempenho, como latência ou carga atual dos servidores [1].
Além do balanceamento de carga, o SCTPLB também pode oferecer recursos adicionais, como monitoramento de servidores, detecção de falhas e failover. Ele pode verificar periodicamente o estado dos servidores e remover ou adicionar servidores à configuração do balanceador de carga com base em seu status. Isso ajuda a garantir que apenas servidores saudáveis recebam o tráfego SCTP e melhora a resiliência do sistema [1,3].
4 L2TP
L2TP, em português Protocolo de Tunelamento de Camada 2, é um protocolo de túnel que fornece um método de encapsulamento para frames do tipo PPP, permitindo assim a transmissão de dados do tipo L2 através de uma rede IP, ou L3 [4]. Foi definido inicialmente na RFC (Request for Comments) 2661 [5], de agosto de 1999, e é baseado em dois protocolos de túnel mais antigos: o L2F (Layer 2 Forwarding Protocol) da Cisco, e o PPTP (Point-to-Point Tunnelling Protocol) da Microsoft [4]. É bastante utilizado na implementação de VPN (Virtual Private Network), quase sempre em conjunto com IPsec – já que o L2TP não oferece nenhum tipo de criptografia ou confiabilidade por si só [4].
Uma nova versão do protocolo, chamada de L2TPv3 (Layer 2 Tunnelling Protocol version 3), definida na RFC 3931 [6], datada de março de 2005, foi criada com objetivo de fornecer recursos de segurança adicionais, encapsulamento melhorado e a capacidade de conduzir outros enlaces de dados além do PPP, como por exemplo frames do tipo Ethernet [4].
O túnel L2TP é estabelecido através do encapsulamento de um frame L2TP dentro de um pacote do tipo UDP, que é então encapsulado dentro de um pacote do tipo IP. O endereço de origem e destino desse pacote IP são os responsáveis por definir os endpoints da conexão a ser criada. Uma vez que um túnel é estabelecido, o tráfego de dados é bidirecional [4,7].
O protocolo L2TP separa os frames de dados e de controle. Os frames de dados são manuseados pelo driver do Kernel, enquanto os frames de controles são manuseados no espaço do usuário. Os frames de controle L2TP transportam mensagem entre clientes e servidores e são utilizados para configurar/desmontar túneis e sessões [4,7].
Cada túnel é implementado utilizando um soquete UDP ou L2TPIP. Cada sessão L2TP cria interfaces de rede que seguem a nomenclatura l2tpethN. Para cada túnel e para cada sessão que utilize o túnel são atribuídos, respectivamente, um tunnel_id e session_id exclusivos. Esses ids são usados pelo driver L2TP para a tomada de decisões de como lidar com os pacotes [4,7].
5 Protocolos de Ethernet Industrial
O termo “Ethernet Industrial” se refere a uma série de expansões feitas ao padrão Ethernet — definido no IEEE 802.3 — com objetivo de adequá-lo ao uso na indústria; a fim de se permitir a comunicação em tempo real entre controladores, máquinas e sensores [4,8].
Atualmente, são vários os protocolos industriais baseados no Ethernet, dentre os quais pode-se citar: EtherCAT, Sercos III, Ethernet/IP, PROFINET7, CC-Link IE Field e Modbus TCP [9]. Esses protocolos são, portanto, conhecidos como protocolos Ethernet Industrial. Em comparação com protocolos usualmente utilizados em redes, estes têm necessidades específicas [4,8]:
- Encaminhamento na camada 2 (sem endereço IP), usualmente feito através do endereço MAC ou VLANs;
- Transmissão de dados determinística, com tempos de resposta e taxas de dados garantidos;
- Tempos de ciclo de comunicação curtos e ciclos de comunicação simultâneos com tempo variante;
- Proteção contra falha de componentes;
- Sincronização altamente precisa.
Os protocolos Ethernet Industrial foram divididos em três classes, que variam em relação ao desempenho e em parâmetros de implementação, como a necessidade de comunicação em tempo real e o custo. Normalmente, o desempenho da rede melhora da Classe A para a Classe B, e assim sucessivamente. A divisão das classes, bem como sua organização em relação ao modelo OSI, pode ser vista na Figura 3 [4].
Figura 3 – Classificação dos protocolos Ethernet Industrial [9].
A Classe A utiliza hardware Ethernet comercial e a pilha TCP/IP para comunicação. Alguns dos protocolos presentes nessa classe são: Ethernet/IP, Modbus TCP e Fieldbus [4,9].
A Classe B também faz uso de hardware Ethernet comercial padrão, mas não emprega a pilha TCP/IP na comunicação. Ao invés disso, ela implementa um protocolo de dados dedicado que é transmitido diretamente dentro do frame Ethernet. Protocolos pertencentes a esta classe são: PROFINET RT, POWERLINK e EtherCAT Automation Protocol (EAP) [4,9].
A Classe C é a mais performática de todas pois emprega hardware dedicado até a camada 2. Como exemplo de protocolos pertencentes a esta classe, têm-se: EtherCAT, PROFINET IRT, Sercos III e CC-Link IE [4,9].
A rede industrial Ethernet não é otimizada apenas para as necessidades da comunicação em tempo real, ela também foi pensada para ser de fácil utilização em maquinários. Isso é possível por oferecer uma configuração simples e monitoramento de diagnóstico da rede, a fim de reduzir os tempos de configuração dos equipamentos e o tempo de inatividade em caso de falhas. Normalmente, as máquinas industriais operam 24 horas por dia, 7 dias por semana, o que requer 100% de disponibilidade de rede [4].
Referências:
[1] Liao, Douglas. Implementação de QoS em rede 5G através do Network Slicing. 2023. 75 f. TCC (Graduação) – Curso de Engenharia de Controle e Automação, Departamento de Engenharia de Controle, Automação e Computação, Universidade Federal de Santa Catarina. Campus Blumenau, Blumenau, 2023. Disponível em: https://repositorio.ufsc.br/handle/123456789/248721. Acesso em: 13 jul. 2023.
[2] TANENBAUM, Andrew S. Computer networks. 4. ed. [S.l.]: Prentice Hall, 2002. ISBN 0130661023; 9780130661029.
[3] ROMMER, S. et al. 5G Core Networks: Powering Digitalization. [S.l.]: Academic Press, 2019.
[4] BARETTA, José Luis Maziero. Encapsulamento de protocolos Ethernet Industrial utilizando a rede 5G. 2022. 74 f. TCC (Graduação) – Curso de Engenharia de Controle e Automação, Departamento de Engenharia de Controle, Automação e Computação, Universidade Federal de Santa Catarina. Campus Blumenau, Blumenau, 2022. Disponível em: https://repositorio.ufsc.br/handle/123456789/243552. Acesso em: 01 abr. 2023.
[5] IETF. Layer Two Tunneling Protocol “L2TP”. [S.l.: s.n.]. Disponível em: https://www.rfc-editor.org/rfc/rfc2661. Acesso em: 03 nov. 2022.
[6] IETF. Layer Two Tunneling Protocol – Version 3 (L2TPv3). [S.l.: s.n.]. Disponível em: https://www.rfc-editor.org/rfc/rfc3931. Acesso em: 03 nov. 2022.
[7] KERNEL.ORG. L2TP. [S.l.: s.n.]. Disponível em: https://www.kernel.org/doc/html/v5.8/networking/l2tp.htm. Acesso em: 03 nov. 2022.
[8] SIEMENS. Industrial Communication – SIMATIC NET Industrial Ethernet Networking Manual, 2008.
[9] 5G ACIA. Integration of Industrial Ethernet Networks with 5G Networks, 2019.