CENTRO UNIVERSITÁRIO POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
ENGENHARIA DA COMPUTAÇÃO
ROTEADOR/FIREWALL EMBARCADO
Helton Luiz Marques
Monografia apresentada à disciplina de Projeto Final como requisito parcial à conclusão
do Curso de Engenharia da Computação, orientado pelo Prof. Alessandro Brawerman.
UNICENP/NCET Curitiba
2007
TERMO DE APROVAÇÃO
Helton Luiz Marques
Roteador /Firewall Embarcado Monografia aprovada como requisito parcial à conclusão do curso de Engenharia da Computação
do Centro Universitário Positivo, pela seguinte banca examinadora:
Prof. Alessandro Brawerman (Orientador) Prof. Alessandro Zimmer Prof. Mauricio Perretto
Curitiba, 1 de novembro de 2007.
AGRADECIMENTOS Gostaria de agradecer primeiramente a Deus por me dar a competência de executar este projeto e
o conhecimento necessário para sua conclusão. Não menos importante, agradecer meus pais e
minha noiva que, com amor incondicional e compreensão me ajudaram na conclusão dessa
etapa.
Agradeço a todos os professores da faculdade pelos ensinamentos, orientações, dedicação e
empenho que demonstraram durante essa longa jornada.
A todos os meus amigos que de forma direta ou indireta me ajudaram na conclusão deste projeto
e na minha formação acadêmica.
RESUMO
O projeto consiste em desenvolver um Roteador/Firewall Embarcado que serão implementados
em hardware através de uma interface microcontrolada RISC 8 bits, onde o algoritmo de
roteamento, bloqueio de pacotes e interface com os módulos Ethernet serão desenvolvidos
diretamente no firmware do microcontrolador, proporcionando maior velocidade no
processamento das informações, e uma maior segurança aos dados da rede local, tornando o
sistema mais confiável, pois sendo o equipamento independente de um sistema operacional,
torna-o invulnerável a vírus, com baixo consumo de energia, mesmo operando em regime de
alta disponibilidade.
Palavras chave:
Firewall, Roteador, TCP/IP, LAN, Ethernet, Microcontroladores, Algoritmos de Roteamento, ARP, Firmware.
Router/Firewall Embedded
ABSTRACT This project consists in developing a Router/Firewall Embedded that’s implemented in hardware
through RISC 8 bits microcontroller interface, where the routing algorithm, blocked packets and
interface with Ethernet Modules, will be development directly on firmware of microcontroller,
giving the system more speed to process information and more security in data on the local
network, therefore being the independent equipment of an operational system, and virus immune,
with low consumption of energy, exactly operating in regimen of high availability.
Key words:
Firewall, Router, TCP/IP, LAN, Ethernet, Microcontrollers, Routing Algorithms, ARP, Firmware.
SUMÁRIO
SUMÁRIO ..................................................................................................................................................................... 17
1. LISTA DE FIGURAS .......................................................................................................................................... 19
2. LISTA DE TABELAS .......................................................................................................................................... 20
3. LISTA DE SIGLAS .............................................................................................................................................. 21
4. LISTA DE SÍMBOLOS ....................................................................................................................................... 22
1. CAPÍTULO 1 - INTRODUÇÃO ............................................................................................................................ 12
1.1.1. MOTIVAÇÃO DESENVOLVIMENTO .............................................................................................................. 12 1.1.2. METAS A SEREM ALCANÇADAS ................................................................................................................... 12
2. CAPÍTULO 2 – FUNDAMENTAÇÃO TEÓRICA .............................................................................................. 14
2.1.1. INTERNET .................................................................................................................................................... 14 2.1.2. HISTÓRICO .................................................................................................................................................. 14 2.1.3. ARQUITETURA INTERNET ............................................................................................................................ 15 2.1.4. PROTOCOLO INTERNET ............................................................................................................................... 18 2.1.5. PROTOCOLO ETHERNET .............................................................................................................................. 18 2.1.6. PROTOCOLO ARP (ADDRESS RESOLUTION PROTOCOL) ............................................................................... 22 2.1.7. PROTOCOLO ICMP (INTERNET CONTROL MESSAGE PROTOCOL) ................................................................. 22 2.1.8. ROTEAMENTO IP E FIREWALL ...................................................................................................................... 23 2.1.9. CABEÇALHOS .............................................................................................................................................. 24 2.1.10. CABEÇALHO DO PROTOCOLO ETHERNET .................................................................................................... 24 2.1.11. CABEÇALHO ARP ....................................................................................................................................... 25 2.1.12. CABEÇALHO IP............................................................................................................................................ 26 2.1.13. CABEÇALHO ICMP ..................................................................................................................................... 27 2.1.14. CABEÇALHO TCP ........................................................................................................................................ 28 2.1.15. CABEÇALHO UDP ....................................................................................................................................... 30 2.1.16. MICROCONTROLADOR ................................................................................................................................ 30 2.1.17. DIPOSITIVOS DE LÓGICA PROGRAMÁVEL .................................................................................................... 30 2.1.18. CONTROLADOR ETHERNET ......................................................................................................................... 31
3. CAPÍTULO 3 - ESPECIFICAÇÃO DO PROJETO ............................................................................................ 31
3.1.1. ANÁLISE DE CONTEXTO .............................................................................................................................. 32 3.1.1.1. DESCRIÇÃO DO OBJETO DO DESENVOLVIMENTO ................................................................................... 32 3.1.2. DESCRIÇÃO DO HARDWARE ........................................................................................................................ 33 3.1.2.1. ARQUITETURA AVR ............................................................................................................................... 33 3.1.2.2. MEMÓRIA SRAM (RAM ESTÁTICA) ...................................................................................................... 34 3.1.2.3. TEMPORIZAÇÃO DE UMA RAM ESTÁTICA .............................................................................................. 35 3.1.2.3.1. CICLO DE LEITURA .................................................................................................................................. 35 3.1.2.3.2. CICLO DE ESCRITA .................................................................................................................................. 36 3.1.2.4. MULTIPLEXAÇÃO DE ENDEREÇOS .......................................................................................................... 37 3.1.2.5. CONTROLADOR DE REDE ........................................................................................................................ 41 3.1.2.6. INTERFACE SERIAL ................................................................................................................................. 43 3.1.2.7. MÓDULO REAL TIME CLOCK E MEMÓRIA PARA LOG. .............................................................................. 44 3.1.2.8. FONTE ALIMENTAÇÃO CHAVEADA......................................................................................................... 46 3.1.3. DESCRIÇÃO DE SOFTWARE ......................................................................................................................... 47 3.1.3.1. AMBIENTE E LINGUAGEM DE DESENVOLVIMENTO ................................................................................. 47 3.1.3.2. ESTRUTURA DE DADOS ........................................................................................................................... 47 3.1.3.3. ESTRUTURA ETHERNET ........................................................................................................................... 50 3.1.3.4. ESTRUTURA ARP .................................................................................................................................... 50 3.1.3.5. ESTRUTURA IP ........................................................................................................................................ 50 3.1.3.6. ESTRUTURA ICMP .................................................................................................................................. 51 3.1.3.7. ESTRUTURA TCP .................................................................................................................................... 51 3.1.3.8. ESTRUTURA UDP .................................................................................................................................... 51
3.1.3.9. ESTRUTURA DE DADOS FIREWALL .......................................................................................................... 51 3.1.3.10. ESTRUTURA MODULE ............................................................................................................................. 52 3.1.3.11. ESTRUTURA INTERVAL ........................................................................................................................... 52 3.1.3.12. ESTRUTURA PORTS ................................................................................................................................. 52 3.1.3.13. ESTRUTURA FIREWALL ........................................................................................................................... 52 3.1.3.14. ALGORITMO FIREWALL........................................................................................................................... 53 3.1.3.15. ROTEAMENTO ......................................................................................................................................... 55 3.1.4. VIABILIDADE SÓCIA ECONÔMICA ............................................................................................................... 55
4. CAPÍTULO 4 - DESENVOLVIMENTO E IMPLEMENTAÇÃO .................................................................... 56
4.1.1. FIRMWARE .................................................................................................................................................. 56 4.1.2. HARDWARE: ................................................................................................................................................ 60 4.1.3. DIMENSÕES MECÂNICAS ............................................................................................................................. 65
5. CAPÍTULO 5 - VALIDAÇÃO E RESULTADOS .............................................................................................. 66
5.1.1. 1° TESTE DE FUNCIONAMENTO ................................................................................................................... 69 5.1.2. 2° TESTE DE FUNCIONAMENTO ................................................................................................................... 70 5.1.3. 3° TESTE DE FUNCIONAMENTO ................................................................................................................... 71
6. CAPITULO 6 – CONCLUSÃO .............................................................................................................................. 72
7. CAPITULO 7 - REFERENCIAS BIBLIOGRAFICAS ....................................................................................... 74
8. ANEXO – ESQUEMÁTICO- CPU ........................................................................................................................ 75
9. ANEXO – ESQUEMÁTICO- ETHERNET .......................................................................................................... 76
10. ANEXO – ESQUEMÁTICO- FONTE................................................................................................................. 77
1. LISTA DE FIGURAS
Figura 2.1- Modelo OSI x. Modelo Internet ................................................................................. 15 Figura 2.2 – Relação da Ethernet com o modelo de referência OSI ............................................. 18 Figura 2.3 – Encapsulamento nos diversos níveis do protocolo. .................................................. 23 Figura 2.4 – Cabeçalho Ethernet IEEE 802.3 ............................................................................... 23 Figura 2.5 – Cabeçalho ARP ......................................................................................................... 24 Figura 2.6 – Cabeçalho IP ............................................................................................................. 25 Figura 2.7 – Cabeçalho ICMP ....................................................................................................... 27 Figura 2.8 – Cabeçalho TCP ......................................................................................................... 28 Figura 2.9 – Cabeçalho UDP ......................................................................................................... 29 Figura 3.1 – Componente do Projeto ............................................................................................ 31 Figura 3.2 - Arquitetura interna de um microcontrolador AVR. .................................................. 33 Figura 3.3 – Ciclo de leitura de uma RAM estática ...................................................................... 34 Figura 3.4 – Ciclo de escrita de uma RAM estática ...................................................................... 35 Figura 3.5 – Demultiplexador de 8 saídas utilizando o 74LS138 ................................................. 37 Figura 3.6 – Esquema elétrico interno ao CPLD .......................................................................... 38 Figura 3.7 – Layout dos pinos do Atmega64. ............................................................................... 39 Figura 3.8 – Fila Circular do RTL8019AS ................................................................................... 41 Figura 3.9 – Layout dos pinos do RTL8019AS ............................................................................ 42 Figura 3.10 - Esquema elétrico do CI MAX202 ........................................................................... 43 Figura 3.11 – Diagrama em bloco do Real Time Clock ................................................................ 43 Figura 3.12 – Forma de onda para leitura de dados ...................................................................... 44 Figura 3.13 – Forma de onda para escrita dos dados. ................................................................... 44 Figura 3.14 – Diagrama em bloco da memória AT24C64. ........................................................... 45 Figura 3.15 – Diagrama em blocos do LM2576 ........................................................................... 46 Figura 3.16 – Esquema elétrico da fonte chaveada. ...................................................................... 46 Figura 3.17 – Diagrama em blocos das estruturas. ....................................................................... 48 Figura 4.1 – Diagrama em blocos do firmware ............................................................................... 55 Figura 4.2 – Tela do desenvolvimento do firmware. .................................................................... 58 Figura 4.3 – Desenvolvimento do esquema elétrico ..................................................................... 59 Figura 4.4 – Layout da placa desenvolvimento das trilhas no bottom layer. ................................ 60 Figura 4.5 – Layout da placa desenvolvimento das trilhas no top layer. ...................................... 61 Figura 4.6 – Layout da placa completo. ........................................................................................ 62 Figura 4.7 – Placa montada com todos os componentes. .............................................................. 63 Figura 4.8 – Dimensões da placa .................................................................................................. 64 Figura 5.1 – Arquitetura para homologação. ................................................................................. 65 Figura 5.2 – Wireshark em ação .................................................................................................... 66 Figura 5.3 – Comunicando-se com putty ...................................................................................... 67
2. LISTA DE TABELAS
Tabela 3.1 – Tabela Verdade 74138 .............................................................................................. 38 Tabela 3.2 – Tabela de memória de acesso aos dispositivos do barramento. ............................... 39 Tabela 5.1 – Regra do 1° teste ....................................................................................................... 69 Tabela 5.2 – Regra do 2° teste ....................................................................................................... 71 Tabela 5.3 – Regra do 3° teste ....................................................................................................... 71
3. LISTA DE SIGLAS
API – Application Programming Interface
ARP – Address Resolution Protocol
AVR – Advanced Virtual Risc
CISC – Complex Instruction Set Computer
CMOS – Complementary Metal Oxide Semiconductor
CPLD – Complex Programmable Logic Device
CRC – Cyclic Redundancy Check
CSMA/CD – Carrier Sense Multiple Access with Collision Detect
FPGA – Field Programmable Gate Array
ICMP – Internet Control Message Protocol
IP- Internet Protocol
LAN – Local Area Network
LED – Light Emitter Diode
MAN – Metropolitan Area Network
NAT – Network Address Translation
OSI – Open Systems Interconnection
OSPF – Open Shortest Path First
PC – Personal Computer
RAM – Random Access Memory
RIP- Routing Information Protocol
RISC – Reduced Instruction Set Computer
SPI – Serial Peripheral Interface
TCP – Transmission Control Protocol
UDP – User Datagram Protocol
TTL – Transistor Transistor Logic
WAN – Wide Area Network
4. LISTA DE SÍMBOLOS
Ω - ohm
Hz – Hertz.
MHz – Mega Hertz.
K – Kilo (103) unidade.
A – Ampere.
µ – Micro (10-6).
V – Volts.
12
1. CAPÍTULO 1 - INTRODUÇÃO
Atualmente, com a Internet difundida em larga escala, é essencial que a segurança dos dados não
seja somente um privilégio e sim imprescindível a todos que estão conectados na grande rede.
Este projeto tem como intuito desenvolver um equipamento de baixo custo, que no nível de
pacotes, traz segurança na comunicação entre uma rede de computadores local e a Internet. O
equipamento é também imune a vírus e independente de sistema operacional, pois é
implementado em hardware, utilizando um firmware específico para aplicação de roteamento e
bloqueio dos pacotes de comunicação padrão Ethernet.
O projeto consiste ainda em fazer um estudo aprofundado nas arquiteturas de redes embarcadas
que hoje, mesmo que não seja percebido pela grande maioria estão presentes em quase todos os
lugares, como hubs, switches e servidores de impressão.
1.1.1. Motivação Desenvolvimento
O desenvolvimento de interfaces de controle de rede embarcadas é algo de grande
complexidade e também impacto no mercado de tecnologia, pois apenas empresas de
grande porte como CISCO, PLANET e HP têm uma grande parcela do mercado.
O intuito desse projeto é quebrar esta complexidade e demonstrar através de ferramentas
simples e de baixo custo o funcionamento de um roteamento e bloqueio de pacotes em
redes padrão Ethernet, demonstrando também a vantagem de utilizar um hardware
específico para isto, independente de sistema operacional, complexas configurações e
com baixo consumo de energia.
1.1.2. Metas a serem alcançadas
O projeto consiste em desenvolver um roteador com firewall embutido em hardware. Isto
é, encaminhar pacotes entre duas redes distintas, utilizando algoritmos de roteamento
básico e aplicando regras de proteção e bloqueio nos pacotes.
O hardware microcontrolado, constituído de um microcontrolador RISC de 8 bits, e um
CPLD que faz a interface com uma memória RAM e os controladores de rede Ethernet, e
13
também uma interface serial para comunicação com o computador, uma memória
EEPROM para armazenamento dos logs e configuração do equipamento e um real time
clock como relógio.
Não é de intuito no desenvolvimento do projeto a implementação do protocolo NAT
(Network Translation Protocol), pois este protocolo está fora do escopo de pesquisa aqui
proposto.
14
2. CAPÍTULO 2 – FUNDAMENTAÇÃO TEÓRICA
Antes de analisar tecnicamente todo o projeto, é necessária a revisão de alguns conceitos e
princípios sobre os quais este projeto é constituído. Como este projeto une a utilização de duas
tecnologias, os padrões de comunicação do Protocolo Internet e dispositivos embarcados, a
revisão teórica também está separada em duas partes.
Na primeira parte, é apresentado um breve histórico sobre a Internet, os Protocolos Internet (IP),
Ethernet, ARP, ICMP, roteamento IP e firewall.
A segunda parte irá esclarecer quais dispositivos foram usados no hardware e quais suas funções
no projeto.
2.1.1. Internet
Nos dias atuais quando falamos em Internet pensa-se imediatamente na rede mundial de
computadores, inclusive na idéia errônea de que esta é uma única rede. Porém, o termo
Internet possui origens de significados mais abrangentes.
Para uma melhor compreensão do potencial de interconexão a que este projeto se propõe,
é necessário primeiro entender o real significado do termo Internet e por conseqüência
toda a sua aplicabilidade. (COMMER, 1998).
2.1.2. Histórico
Em meados de 1960 os primeiros terminais deixaram o centro de processamento de dados
para serem instalados à distância, surgindo assim à necessidade de conectá-los ao
computador principal, este era o início das tecnologias de teleprocessamento. Nesta
mesma década, o governo norte-americano através do Departamento de Defesa, deu
início a suas pesquisas quanto à aplicabilidade das tecnologias de redes de computadores,
resultando na primeira versão da rede ARPA em 1972, inicializando a utilização da
tecnologia de comutação de pacotes (CARVALHO, 1997).
Durante a década de 70, muitas universidades dos EUA foram conectadas à rede ARPA,
assim como outras instituições de pesquisa. Na década de 80, houve um grande
15
crescimento das redes locais de computadores, impulsionada pelas soluções de baixo
custo, baseadas em mini e microcomputadores. Neste contexto, cada fabricante de
tecnologia de redes ditava as regras de comunicação em sua rede e criava seus próprios
protocolos e suas próprias soluções de comunicação.
Porém, com isto surgiu um novo problema. Os usuários destas redes isoladas sentiam a
necessidade de obter acessos às informações e recursos disponíveis em outras redes. Era
impossível se imaginar o estabelecimento de uma rede global única, baseada em uma
única tecnologia de hardware, já que cada tecnologia existente possuía características
próprias onde atendiam melhor a uma ou outra necessidade, fazendo com que um grupo
optasse por uma solução que atenda melhor ao seu perfil e que viesse de encontro aos
seus anseios em particular.
Com intuito de interligar redes heterogêneas, baseadas em hardwares e sistemas
operacionais diferentes, e espalhadas geograficamente, no início da década de 80, teve
início um projeto, utilizando-se como espinha dorsal o potencial instalado da rede ARPA,
tinha início a Internet.
2.1.3. Arquitetura Internet
Embora muita confusão se faça entre a arquitetura OSI e a arquitetura Internet, estas são
arquiteturas distintas. A arquitetura OSI ainda é muito utilizada e citada quando se
estudam as tecnologias de redes e as abordagens baseadas em camadas.
Porém, esta parece ter sido abandonada, dando-se preferência à arquitetura
Internet. A arquitetura OSI foi criada pelo ISO visando à padronização de uma
arquitetura de redes baseadas em sistemas abertos.
A Figura 2.1 demonstra a diferença entre o modelo OSI e o modelo Internet.
16
Figura 2.1- Modelo OSI x. Modelo Internet
O modelo OSI da Figura 2.1 é dividido em sete camadas hierárquicas, ou seja, cada
camada usa as funções da própria camada ou da camada anterior, para esconder a
complexidade e transparecer as operações para o usuário, seja ele um programa ou outra
camada.
• Camada Física: define as características técnicas dos dispositivos elétricos (físicos)
do sistema. Contém os equipamentos de cabeamento ou outros canais de
comunicação que se comunicam diretamente como controlador de interface de rede.
Suas principais funções são: recepção de dados em nível de bits; definir a
características elétricas e mecânicas do meio, taxa de transferência; controle de acesso
ao meio; confirmação e retransmissão de quadros e controle da quantidade e
velocidade de transmissão de informações na rede.
• Camada de Enlace: detecta e corrige erros que possam acontecer no nível físico. É
responsável pela transmissão e recepção (delimitação) de quadros e pelo controle de
fluxo, e estabelece um protocolo de comunicação entre sistemas diretamente
conectados.
• Camada de Rede: responsável pelo endereçamento dos pacotes, convertendo
endereços lógicos em endereços físicos, de forma que os pacotes consigam chegar
corretamente ao destino. Essa camada também determina a rota que os pacotes irão
7 - Aplicação
6- Apresentação
5 - Sessão
4 - Transporte
3 - Rede
2 - Enlace
1 – Física
4 - Aplicação
3 - Transporte
2 - Rede
1 - Fisica
Modelo OSI Modelo Internet
17
seguir para atingir o destino, baseada em fatores como condições de tráfego da rede e
prioridades.
• Camada de Transporte: responsável por pegar os dados enviados pela camada de
Sessão e dividi-los em pacotes que serão transmitidos para a camada de Rede. No
receptor, a camada de Transporte é responsável por pegar os pacotes recebidos da
camada de Rede, remontar o dado original e assim enviá-lo à camada de Sessão,
incluindo o controle de fluxo, ordenação dos pacotes e a correção de erros,
tipicamente enviando para o transmissor uma informação de recebimento, informando
que o pacote foi recebido com sucesso. O objetivo final da camada de transporte é
proporcionar serviço eficiente, confiável e de baixo custo.
• Camada de Sessão: permite que duas aplicações em computadores diferentes
estabeleçam uma sessão de comunicação, onde nesta sessão, estas aplicações definem
como será feita a transmissão de dados e coloca marcações nos dados que estão sendo
transmitidos. Se porventura a rede falhar, os computadores reiniciam a transmissão
dos dados a partir da última marcação recebida pelo computador receptor.
• Camada de Apresentação: converte o formato do dado recebido pela camada de
Aplicação em um formato comum a ser usado na transmissão desses dados, ou seja,
um formato entendido pelo protocolo usado. Um exemplo comum é a conversão do
padrão de caracteres (código de página) quando, por exemplo, o dispositivo
transmissor usa um padrão diferente do ASCII, por exemplo. Pode ter outros usos,
como compressão de dados e criptografia.
• Camada de Aplicação: interface entre o protocolo de comunicação e o aplicativo que
pediu ou receberá a informação através da rede.
As quatro camadas do modelo Internet englobam várias camadas do modelo OSI, como
por exemplo, a camada de Aplicação que engloba a camada de Aplicação, Apresentação e
Sessão. As funções das camadas do modelo Internet são equivalentes as camadas da
camada OSI que ela engloba.
18
Um fato curioso é que quando finalmente a especificação do modelo OSI foi concluída e
apresentada ao público o modelo Internet já se encontrava em operação, o que talvez
explique a não adoção do modelo OSI.
Como o modelo Internet vem se apresentando flexível e robusto o suficiente para atender
às demandas que surgiram nestes últimos 20 anos, com poucas e pequenas adaptações,
tornou-se o padrão na maioria das redes utilizadas no mundo.
2.1.4. Protocolo Internet
A Internet não é uma rede de computadores, mas a interconexão de várias redes de
computadores, as quais não precisam necessariamente ser baseadas na mesma tecnologia
de hardware e sistema operacional.
Este feito deve-se ao Protocolo Internet (IP-Internet Protocol), o qual resolve o problema
de interligação entre as redes, baseando-se em gateways para fazer a passagem de pacotes
de um meio de rede para outro. Por não definir protocolos ou padrões para as camadas de
rede e de enlace, a arquitetura Internet é portável para qualquer plataforma, bastando que
seus protocolos básicos sejam implementados na mesma.
2.1.5. Protocolo Ethernet
O protocolo Ethernet está relacionado às duas camadas mais inferiores do modelo OSI,
conforme demonstra a Figura 2.2. Ele foi apresentado pela primeira vez em 1976 por
Robert Metcalfe que na época trabalhava para a Xerox Palo Alto Research Center
(PARC). Atualmente é o padrão mais usado no mundo para LAN (Local Area Network) e
supera em vendas as outras tecnologias com uma grande margem. (SPURGEON, 2000).
O sistema consiste na utilização de um canal de comunicação compartilhado entre as
partes envolvidas. Cada uma delas deve monitorar o meio físico antes de transmitir para
verificar se ele não está sendo usado. Caso ocorra colisão, ou seja, dois dispositivos
transmitirem ao mesmo tempo, o sistema deve detectá-la e retransmitir a informação em
um tempo escolhido aleatoriamente. Esse algoritmo é chamado Carrier Sense Multiple
Access/Collision Detect (CSMA/CD).
19
Figura 2.2 – Relação da Ethernet com o modelo de referência OSI
O sistema Ethernet é constituído basicamente de quatro componentes:
• O quadro (frame), formado por um conjunto de bytes organizados por um padrão e
que é utilizado para trafegar os dados na rede;
• O protocolo de controle de acesso à mídia (media access control protocol), que
consiste em um conjunto de regras embutidas em cada interface Ethernet, permitindo
que vários computadores acessem o meio compartilhado de forma adequada;
• Os componentes de sinalização (signaling components), que são dispositivos
eletrônicos que enviam e recebem sinais sobre o canal Ethernet;
• O meio físico (physical medium), formado por cabos e outros hardwares usados para
transmitir o sinal digital entre os computadores ligados à rede.
Na constituição do sistema Ethernet, o principal componente é o frame (Figura 2.4), os
demais componentes servem apenas para carregar os frames de um dispositivo a outro
(SPURGEON, 2000). A seção 2.1.9 traz uma descrição mais detalhada de cada
componente do quadro Ethernet. No modo half-duplex, utilizado originalmente, um
sistema de entrega em broadcast é utilizado, de modo que os pacotes são capturados por
todos os dispositivos conectados a rede.
Atualmente, muitos dispositivos são conectados por diretamente a porta de um switch e
não compartilham o meio físico com outros dispositivos, podendo operar em modo full-
duplex.
Camada 7 Aplicação
Camada 6 Apresentação
Camada 5 Seção
Camada 4 Transporte
Camada 3 Rede
Camada 2 Enlace
Camada 1 Física
Subcamada (LLC) Controle de Ligação Lógica
Subcamada (MAC) Controle de Acesso a Mídia
SubcamadaSinalização Física
Especificação da Mídia
E T H E R N E T
20
O modo de operação half-duplex, descrito no padrão Ethernet original, utiliza o protocolo
Media Access Control (MAC) que consiste em um conjunto de regras usadas para arbitrar
o acesso à mídia compartilhada.
Cada frame Ethernet é enviado por meio do canal de sinal compartilhado e todas as
interfaces ligadas ao canal capturam os bits do sinal e interpretam o segundo campo do
frame apresentado na Figura 2.4, o qual contém o endereço de destino. A interface
compara esse endereço com o seu endereço unicast de 48 bits, ou com algum endereço
multicast, desde que esteja habilitada a reconhecer tal endereço. As interfaces de rede que
reconhecerem o endereço continuam com o processo de leitura do frame enquanto as
demais o descartam.
Um endereço unicast único é atribuído a cada interface Ethernet em sua fabricação.
Endereços multicast permitem que um único frame Ethernet seja recebido por um grupo
de estações. Um caso especial de endereço multicast é conhecido como endereço de
broadcast, o qual possui todos os 48 bits em nível lógico 1. Todas as interfaces de rede
capturam os pacotes enviados com esse destino e encaminham para o software de rede do
computador.
Após a transmissão de um frame, todas as estações da rede que possuem informações
aguardando para serem enviadas podem competir igualmente pela oportunidade de enviar
o próximo frame. Isso torna o acesso ao meio compartilhado justo para que nenhuma
estação bloqueie o canal de comunicação definitivamente. O algoritmo CSMA/CD
embutido em cada interface de rede Ethernet é responsável por esse controle.
A parte do protocolo denominada carrier sense verifica se cada interface precisa aguardar
até que não haja sinal no canal antes de transmitir. Se outra interface está transmitindo há
um sinal no canal, o que define a condição é chamada de carrier. Todas as outras
interfaces devem aguardar até que o sinal cesse e o meio volte a ficar ocioso antes de
tentar transmitir.
Com multiple access, todas as interfaces têm a mesma prioridade ao transmitirem um
frame na rede e todas elas podem tentar acessar o canal ao mesmo tempo. Caso duas ou
mais interfaces comecem a transmitir simultaneamente elas detectam a colisão do sinal
21
(collision detect). Cada uma delas escolhe um tempo aleatório de retransmissão antes de
fazer uma nova tentativa, em um processo chamado back off. A colisão é absolutamente
comum ao sistema Ethernet e o tempo aleatório de retransmissão serve para evitar que os
frames colidam novamente na retransmissão.
Para que o sistema MAC funcione corretamente é necessário que cada interface consiga
responder a qualquer outra em um tempo estritamente controlado. O tempo de sinal
Ethernet é baseado na quantidade de tempo gasto para que o sinal trafegue de um lado ao
outro da rede e volte. Esse tempo é denominado round-trip time. No modo half-duplex
esse tempo máximo deve ser rigidamente controlado para garantir que todas as estações
da rede consigam receber os sinais de todas as outras no tempo necessário para o sistema
MAC.
Aumentar o tamanho de um segmento de rede significa aumentar o tempo que um sinal
precisa para percorrê-lo. As especificações da Ethernet incluem tamanhos máximos de
segmentos e quantidades máximas e repetidores utilizados em uma rede e variam de
acordo com o tipo de mídia utilizado (cabo coaxial, cabo par-trançado, fibra ótica). Isso
garante que o round-trip time correto seja mantido.
O sistema Ethernet foi desenvolvido para ser facilmente expandido de acordo com as
necessidades do local. Para facilitar a extensão dos sistemas Ethernet half-duplex foram
desenvolvidos os chamados repeater hubs ou simplesmente hubs que são equipamentos
com diversas portas Ethernet. Cada porta do hub liga um segmento de rede Ethernet aos
outros formando uma única LAN, também chamado domínio de colisão.
Outro tipo de hub é o chamado switching hub ou simplesmente switch. Esse equipamento
usa o endereço de destino de 48 bits do sistema Ethernet para tomar decisões no
encaminhamento do frame de uma porta a outra. Cada porta do switch provê uma
conexão para uma mídia Ethernet que funciona como uma LAN (Local Area Network)
completamente separada.
Enquanto um hub apenas conecta segmentos de uma mesma LAN Ethernet, um switch
interliga diferentes LANs. As regras para cálculo do round-trip time de cada LAN
aplicam-se até a porta do switch, permitindo então que sejam interligadas diversas LANs
mantendo as especificações.
22
Em resumo, o protocolo denominado Media Access Control (MAC) é o responsável por
permitir que cada estação da rede possa competir pelo meio físico de maneira equilibrada.
Uma vez que não há um controle central, cada estação precisa operar de forma
independente utilizando o mesmo protocolo MAC, que funciona como um conjunto de
regras da Ethernet. (SPURGEON, 2000).
2.1.6. Protocolo ARP (Address Resolution Protocol)
O protocolo de resolução de endereços ARP é normalmente empregado nas redes
baseadas em Ethernet. É o responsável pela tradução do endereço lógico (IP) para o
endereço físico único de 32 bits contidos em controladores Ethernet (MAC Address).
Sempre que uma estação deseja enviar uma mensagem para outra, ela envia em
broadcast, utilizando o protocolo ARP, perguntando quem é o ‘dono’ do endereço IP
desejado. A mensagem é enviada em broadcast e todas as estações conectadas a esta rede
vão receber esta mensagem e tratar. A estação que possuir em seu mapa de endereços o
IP solicitado retorna uma mensagem para a solicitante, informando o seu endereço MAC
(MOKAREL, 2005).
2.1.7. Protocolo ICMP (Internet Control Message Protocol)
O protocolo de controle de mensagem provê o mecanismo usado na informação de
problemas e no auxílio do seu diagnóstico e correção. Ele é usado em diversas situações,
como por exemplo, quando um datagrama não consegue alcançar seu destino, quando um
roteador não possui capacidade para armazenar o datagrama antes de retransmiti-lo ou
quando um gateway deseja recomendar uma rota mais curta.
Apesar de ser suportado pelo IP, o protocolo ICMP é considerado parte integrante da
camada de Rede e em nenhum momento uma mensagem ICMP pode ser gerada para
reportar o erro de outra mensagem ICMP, do contrário, poderíamos ter a criação de loops
infinitos.
23
2.1.8. Roteamento IP e Firewall
Primeiramente é necessário entender a diferença entre encaminhamento e roteamento. O
encaminhamento consiste em pegar um pacote, observar seu endereço de destino,
consultar uma tabela e enviar o pacote numa direção determinada pela tabela. O
roteamento é o processo pelo quais as tabelas de encaminhamento são construídas.
Observa-se também que o encaminhamento é um processo relativamente bem definido,
realizado localmente num nó, ao passo que o roteamento depende de complexos
algoritmos distribuídos que têm evoluído continuamente através da história das redes.
(Peterson, Davie, 2004).
Basicamente, o roteamento IP foi desenvolvido para encaminhar pacotes de redes
distintas, e um simples algoritmo foi elaborado como base desse roteamento
Um firewall é um roteador especialmente programado, localizado entre um site e o resto
da rede. Ele é um roteador no sentido de que conecta duas ou mais redes físicas e
encaminha pacotes de uma rede para outra, mas também filtra os pacotes que passam
através dele. Por exemplo, ele poderia descartar (em vez de encaminhar) todos os pacotes
que chegam para um determinado IP ou para uma porta TCP em particular. Isso é util se
você não deseja que os usuários externos acessem um determinado host ou serviço em
sua rede local. Um firewall também pode filtrar pacotes baseados no endereço IP de
origem.(Peterson, Davie, 2004).
1. Quando uma Requisição ARP é recebida, enviar uma resposta ARP padrão.2. Quando um datagrama no broadcast é recebido, seguem-se uns dos passos a
seguir: a. Verificar se o destino está na rede local (mais especificamente, se a rede
local da interface está de ativa). Se não, ignora-se o datagrama, caso ele não requer roteamento.
b. Verificar se o destino está na rede local da outra interface. Se não, ignora-se o datagrama, caso não saiba como encontrar o destino.
c. Verificar se o endereço IP de destino está contido em na tabela de roteamento ARP (caso conheça o endereço MAC de destino ou não). Se não, então:
i. Bufferizar o datagrama e envia uma Requisição ARP para o destino e
ii. Receber a resposta ARP. Que caso não ocorra, descartar o datagrama a ser roteado.
3. Enviar o datagrama para o destino
24
2.1.9. Cabeçalhos
Iniciando pela camada de Aplicação que gera os dados a serem transmitidos, cada
camada inclui seu próprio cabeçalho na mensagem, o que é também conhecido como
encapsulamento.
Na recepção da informação, cada camada é responsável por tratar e retirar da mensagem
o seu cabeçalho. Isso está exemplificado na Figura 2.3.
Figura 2.3 – Encapsulamento nos diversos níveis do protocolo.
2.1.10. Cabeçalho do protocolo Ethernet
Os frames que trafegam pela Ethernet possuem um encapsulamento que é mostrado na
Figura 2.4.
Figura 2.4 – Cabeçalho Ethernet IEEE 802.3 Em que :
Tipo/Tamanho Endereço Origem Endereço DestinoPreâmbulo
64 bits 48 bits 48 bits 16 bits
Dados da Aplicação
Dados da Aplicação
Dados da Aplicação
Dados da Aplicação
Cabeçalho
Cabeçalho
Cabeçalho
Cabeçalho
CabeçalhoCabeçalho
Camada de Aplicação
Camada de Transporte
Camada de Rede
Camada de Física
EnvioRecepção
25
• Preâmbulo: constituído de uma seqüência de 64 bits com a função de iniciar o
processo de comunicação. Essa sequência de bits é usada para ajustes dos
circuitos, principalmente ao sincronismo do PLL.
• Endereço Destino: o endereço físico (MAC address) do receptor do pacote.
• Endereço Origem: o endereço físico (MAC address) do remetente do pacote.
• Tipo/Tamanho: normalmente informa o tipo do protocolo de nível ais alto
transportado por esse pacote. Em alguns casos ele contém informação sobre o
tamanho.
2.1.11. Cabeçalho ARP
O cabeçalho ARP, que é analisado na camada de Rede, tem o formato representado na
Figura 2.5.
Figura 2.5 – Cabeçalho ARP Em que:
• Protocolo Físico: endereço de hardware a ser utilizado
• Protocolo Lógico: protocolo a ser utilizado
• Tamanho Físico: Número de octetos em um endereço de hardware
• Tamanho Lógico: Número de octetos em um endereço de protocolo
• Opcode: Espeficia se a mensagem é uma requisição(valor 1) ou uma
resposta(valor 2)
• Endereço Físico Origem : Endereço Físico de origem da mensagem
• Endereço Lógico Origem: Endereço Lógico de origem da mensagem
• Endereço Físico Alvo: Endereço Físico de destino da mensagem
• Endereço Alvo Lógico:Endereço Lógico de destino da mensagem
• CRC: a seqüência de bits responsável pela verificação da integridade do quadro. É
gerado pela aplicação de um polinômio-padrão aos bits que compõem o quadro
Protocolo Físico
Protocolo Lógico
16 bits 16 bits 8 bits 8 bits 16 bits
Tamanho Físico
Tamanho Lógico Opcode (request/reply)
Endereço Físico Origem
Endereço Logico Origem
48 bits 32 bits 48 bits 32 bits 32 bits
Endereço Físico alvo
Endereço Lógico Alvo
CRC (request/reply)
26
Vhl Tos
8 bits 8 bits 16 bits 16 bits 16 bits
Len id IP offset
Time to Live Protocolo
8 bits 8 bits 16 bits 32 bits 32 bits
Checksum Endereço Lógico Fonte
Endereço lógico Alvo
Para que o fluxo de mensagens se torne menor, e o desempenho na rede seja mais
eficiente , o algoritmo ARP extrai e salva as informações em uma pequena tabela de
relacionamento onde encontra-se endereço Físico e Lógico do alvo, armazenado em
memória volátil (RAM). O ARP administra a tabela como um cache – uma entrada é
substituída sempre que uma resposta chega, e a entrada mais antiga é removida sempre
que se esgota o espaço na tabela ou depois de uma entrada não ser atualizada por um
longo período de tempo ( por exemplo, 20 minutos ).
Sempre que o ARP executa a alocação do endereços na memória, ele procura na cache
antes de usar a rede. Se a amarração está presente, o ARP usa a alocação sem transmissão
de uma requisição. Se a alocação não está presente na cache, o ARP difunde por
broadcast uma requisição, espera por um resposta, atualiza o cache e então procede para
usar a alocação.(COMMER, 2001)
2.1.12. Cabeçalho IP
O cabeçalho IP, que é analisado na camada de Rede, tem o formato representado na
Figura 2.6.
Figura 2.6 – Cabeçalho IP Em que:
• Version (VHL): indica a versão do protocolo, e também o comprimento do
cabeçalho Internet, que define o número de palavras de 32 bits que compõem o
cabeçalho.
• Tos: Type of Service, contém a qualidade do serviço desejado. Esses valores são
abstratos e usados como guia para seleção de prioridade. Muitas redes oferecem
esse tipo de serviço.
27
• Len: É o tamanho total do datagrama, medido em octetos, incluindo o cabeçalho
Internet e os dados. O datagrama pode conter 65.535 octetos, porém este número
é impraticável. O tamanho máximo normalmente empregado é de 576 octetos, o
que dá um bloco de dados de 512 octetos mais 64 octetos do cabeçalho.
• Id: esse número é colocado pelo remetente para orientar o receptor na
reconstrução de datagramas fragmentados.
• IP Offset: indica o ponto em que o datagrrama pertence a uma mensagem
fragmentada. Ele é medido em múltiplos de 8 octetos, ou seja, 64 bits. O primeiro
fragmento de uma mensagem é sempre zero. Indica também o conjunto de flags
onde:
Bit 0 : reservado
Bit 1: 0 = pode fragmentar, 1 = não fragmentar
Bit 2: 0 = último fragmento, 1 = mais fragmentos.
• Time to live: esse campo indica o tempo máximo que um datagrama pode
permanecer na rede, evitando que loops infinitos sejam criados. O tempo de vida é
dado em segundos, porém cada nó da rede deve decrementar o tempo em pelo
menos uma unidade. Se esse campo atingir o valor zero, o datagrama é destruído.
• Protocolo: contém o protocolo utilizado na camada superior( transporte ). Os 3
protocolos analisados no projeto foram:
1-ICMP: Internet Control Message Protocol
6-TCP: Transmission Control Protocol
17-UDP: User Datagram Protocol
• Checksum:é o checksum do cabeçalho IP. Uma vez que o cabeçalho é alterado em
cada nó, o checksum também deve ser recalculado.
• Endereço Lógico Fonte: o endereço IP de origem, de quem está enviando o
datagrama.
• Endereço Lógico Alvo: o endereço IP de destino, de quem deverá receber o
datagrama.
2.1.13. Cabeçalho ICMP
O cabeçalho ICMP, que é analisado na camada de Transporte, tem o formato
representado na Figura 2.7.
28
Type Code
8 bits 8 bits 16 bits 16 bits 16 bits
Checksum id Sequence Number
Figura 2.7 – Cabeçalho ICMP Em que:
• Type: é o tipo de mensagem ICMP. Os valores variam de 0 a 16, e representam:
o 0: Echo Reply
o 3: Destination Unreachable
o 4: Source Quench
o 5: Redirect
o 8: Echo
o 11: Time Exceeded
o 12 : Parameter Problem
o 13: Timestamp
o 14: Timestamp Reply
o 15: Information Request
o 16: Information Reply
• Code: varia de mensagem para mensagem
• Checksum: é calculado usando todos os bits do ICMP iniciando pelo campo type.
Esse campo garante a integridade dos dados ICMP transportados.
• ID: identificador que auxilia na checagem da resposta.
• Sequence number: número sequencial para identificar a resposta de cada
mensagem.
2.1.14. Cabeçalho TCP
O cabeçalho TCP, que é analisado na camada de Transporte, tem o formato representado
na Figura 2.8.
29
Porta Fonte Porta Alvo
16 bits 16 bits 32 bits 32 bits 8 bits
Sequence Number
Acknowledge Number
TCP offset
Flags Flow Control
8 bits 16 bits 16 bits 16 bits 32 bits
Checksum Urgent Data Pointer
Options
Figura 2.8 – Cabeçalho TCP Em que:
• Porta Fonte: número da porta de origem
• Porta Alvo: número da porta de destino
• Sequence number: o número de seqüência do primeiro octeto de dado dessa
mensagem ( exceto quando o bit SYN está habilitado). Quando o bit SYN está
habilitado, esse campo indica o ISN (Initial Sequence Number) e o primeiro
octeto de dados passa a ser ISN+1.
• Acknowledge number: quando o bit ACK está habilitado, esse campo contém o
valor da próxima seqüência de números que o remetente da mensagem espera
receber; confirmando todos os que estiverem antes deles.
• TCP offset: aponta o início dos dados transportados. Esse valor é dado em
múltiplos de 32 bits.
• Flags: São 6 bits de controle, da esquerda para a direita.
• URG: Urgent Pointer
• ACK: Acknowledgment
• PSH: Função PUSH
• RST: Reset a conexão
• SYN: Seqüência de números para sincronização
• FIN: Fim dos dados.
• Flow Control: Informação do tamanho da janela de recepção
• Checksum: cálculo para verificação de erro na mensagem transmitida.
• Urgent Data Pointer: aponta para dados urgentes dentro da mensagem. Esse
parâmetro só é tratado quando o bit URG está habilitado.
• Options: pode existir carregando algumas opções no final do cabeçalho TCP,
sempre ocupando um espaço múltiplo de 8 bits.
30
Porta Fonte Porta Alvo
16 bits 16 bits 16 bits 16 bits
Len Checksum
2.1.15. Cabeçalho UDP
O cabeçalho UDP, que é analisado na camada de Transporte, tem o formato representado
na Figura 2.9.
Figura 2.9 – Cabeçalho UDP
Em que:
• Porta Fonte: número da porta de origem
• Porta Alvo: número da porta de destino
• Len: É o tamanho total do datagrama.
• Checksum: cálculo para verificação de erro na mensagem transmitida.
2.1.16. Microcontrolador
Um microcontrolador é um computador programável, em um chip otimizado para
controlar dispositivos eletrônicos. É uma espécie de microprocessador, com memória e
interfaces de E/S (Entrada e Saída) integrados, enfatizando a autosuficiência em
constante com um microprocessador de propósito geral, o mesmo tipo usado nos PCs,
que requer chips adicionais para prover as funções necessárias(Schunk, 2001).
2.1.17. Dipositivos de lógica programável
Dispositivos de lógica programável ou simplesmente PLD’s (Programmable Logic
Devices) ao contrário de microcontroladores e DSP’s (Digital Signal Processor) não são
programados com instruções a serem executadas em uma determinada ordem. Ao invés
disso estes dispositivos tem seu hardware reconfigurado através da conexão ou
desconexão eletrônica de partes do circuito(TOCCI,2003).
Com estes dispositivos pode-se implementar os mesmos circuitos digitais, para os quais
seriam necessários vários CI’s específicos e um considerável espaço físico, em um único
chip(TOOCI, 2003). Os CPLDs são dispositivos que combinam vários circuitos PLDs em
31
um único chip. Neste caso, a inserção de uma lógica de controle de barramento, com um
latch e um multiplexador de endereço para acesso do microcontrolador aos Controladores
Ethernet e a memória RAM externa.
2.1.18. Controlador Ethernet
Um controlador Ethernet, também conhecido como PHY, executa a função da camada
física do modelo Internet, onde irá receber quadros de dados, retirar os cabeçalhos
adicionados e encaminhar os pacotes recebidos para a camada de Rede.
O RTL8019AS é um Controlador Ethernet, com interface com barramento ISA Full-
Duplex com função Plug and Play. Ele é compatível com o padrão IEEE 802.3, para
operar com aplicações de 10 Mbps (10BASE-T). É responsável pela camada física,
capturando os frames que trafegam na rede local, detectando colisão e retransmitindo
automaticamente os pacotes após um intervalo específico de tempo. Seu funcionamento
será abordado no capítulo 3.1.2.5.
3. CAPÍTULO 3 - ESPECIFICAÇÃO DO PROJETO
Neste capítulo tem-se a especificação dos principais componentes do projeto. A funcionalidade
macro do Roteador/Firewall Embarcado em uma rede de pequeno porte e o diagrama em blocos
está representada na Figura 3.1:
32
Figura 3.1 – Componente do Projeto
3.1.1. Análise de Contexto
3.1.1.1.Descrição do Objeto do Desenvolvimento
O objeto do desenvolvimento consiste em uma interface microcontrolada (Atmega64)
com duas interfaces de rede (interface #1 e interface #2), que regule o tráfego da rede,
entre redes distintas e bloqueie a transmissão e/ou recepção de dados nocivos ou não
autorizados de uma rede a outra. Apesar de se tratar de um conceito geralmente
relacionado à proteção de um sistema de dados contra invasões, o projeto em questão
não possui capacidade de analisar toda a extensão do modelo Internet, ficando
geralmente restrito a camada de Transporte. Os sistemas de firewall são classificados
como Filtro de Pacotes e Proxy Firewall, sendo que o último fica fora do escopo do
projeto. O firewall do tipo Filtro de Pacotes analisa individualmente os pacotes à
medida que estes são transmitidos da camada de enlace para a camada de Rede.
33
As regras podem ser formadas estabelecendo os endereços de rede (origem e destino)
e as portas IP envolvidas na conexão. A principal desvantagem desse tipo de
tecnologia é a falta de controle de estado do pacote, o que permite que agentes
maliciosos possam produzir pacotes simulados para serem injetados na sessão.
3.1.2. Descrição do Hardware
3.1.2.1.Arquitetura AVR
A família AVR de microcontroladores da ATMEL é integrada com tecnologia CMOS
High-Speed e possuem arquitetura RISC de 8 bits com conceito Harvard, tendo,
portanto barramentos de programa e memória separados, oferecendo alto
desempenho, aliado a um baixo consumo de energia.
Possuem 130 instruções, sendo que a maioria delas executadas em único período de
clock. Podendo chegar a 16MIPS com o clock máximo de 16MHz, sendo que os
chips da linha ATmega podem ser encontrados com clock de até 20MHz.
Possuem internamente, 32 registradores de uso geral de 8 bits cada, que podem ser
acessados em um único ciclo de clock. Seis desses 32 registradores podem formar
três registradores de 16 bits, que são usados como ponteiros para endereçamento
indireto da memória de dados. Um destes ponteiros de endereços também é usado
como ponteiro de endereço de tabelas de constantes na memória de programa. Estes
registros de 16 bits são chamados registro-X, registro-Y e registro-Z.
A ULA (Unidade Lógica Aritmética) suporta funções aritméticas e lógicas entre
registradores e entre constantes e registradores.
Os primeiros 64 bytes de endereço da RAM interna são usados como espaço de
memória de entrada/saída. É neste espaço de memória que estão localizados os
registradores de controle, os temporizadores/contadores e outros periféricos.
Uma grande vantagem de usar a arquitetura AVR é que além dela ser projetada
buscando eficiência com a linguagem de programação C, possui também uma grande
34
quantidade de softwares de desenvolvimento no mercado e muitos deles gratuitos
(LANARI, 2006).
A Figura 3.2 mostra a arquitetura interna do microcontrolador AVR, e como é a
comunicação entre os módulos e a ULA. Note que há um barramento de 8 bits, com
o qual todos os módulos se comunicam.
Figura 3.2 - Arquitetura interna de um microcontrolador AVR.
3.1.2.2.Memória SRAM (RAM Estática)
Devido à pequena quantidade de memória embutida no microcontrolador, apenas
4096 bytes, é necessário a utilização de uma memória SRAM externa, para
armazenamento dos dados, filas circulares para comunicação serial, e recepção dos
pacotes nas duas interfaces controladores de rede.
Este tipo de memória armazena os dados enquanto for mantida a alimentação. Suas
células são compostas de flip-flops, e por isso seu conteúdo não é perdido enquanto
35
houver alimentação. Nos índices 3.1.2.3.1 está especificado como é feito a leitura e
escritas nos dados da memória SRAM.
3.1.2.3.Temporização de uma RAM Estática
Este projeto utiliza uma memória RAM como memória principal e essa memória, que
deve ser rápida o suficiente para responder ao comando de leitura e escrita que o
microcontrolador está constantemente realizando, o tempo em que a memória fornece
os dados é de 70 ns.
3.1.2.3.1. Ciclo de Leitura
O ciclo de leitura é mostrado na Figura 3.3.
Figura 3.3 – Ciclo de leitura de uma RAM estática Onde:
• Trc: intervalo de duração do ciclo de leitura;
• Tacc: tempo de acesso à RAM;
• Tco: tempo que a saída da RAM leva para sair de alta impedância e ter um
dado válido;
• Tod: tempo decorrido entre a desabilitação da RAM e o instante que as saídas
da RAM vão para alta impedância.
Durante o ciclo de leitura, o microcontrolador coloca um endereço no barramento
de endereços ligado à RAM. Este endereço corresponde à posição de memória
que deve ser lida.
36
O microcontrolador sinaliza a operação de leitura através de um nível ALTO na
entrada R/W. O microcontrolador habilita a memória colocando a entrada CS em
nível BAIXO. A RAM responde a isso colocando o conteúdo da posição
endereçada nas saídas de dados. Depois disso a memória é desabilitada (CS nível
ALTO) e suas saídas ficam em tri-state (alta impedância).
3.1.2.3.2. Ciclo de Escrita
O ciclo de escrita é mostrado na Figura 3.4
Figura 3.4 – Ciclo de escrita de uma RAM estática Onde:
• Twc: intervalo de duração do ciclo de escrita;
• Tas: tempo para estabilização do barramento de endereços, antes de habilitar a
RAM;
• Tah: intervalo necessário para que o barramento de endereços permaneça
estável;
• Tw: tempo de escrita, onde CS e R/W ficam em nível BAIXO;
• Tds: tempo que os dados devem ser mantidos na entrada antes da desabilitação
do CS e R/W;
• Tdh: tempo que os dados devem ser mantidos na entrada depois da
desabilitação de CS e R/W.
37
No ciclo de escrita, o microcontrolador coloca um endereço estável no barramento
de endereços. Nesse endereço o dado deve ser escrito. Ele coloca o dado a ser
armazenado no barramento de dados.
O microcontrolador sinaliza a operação de escrita, colocando nível BAIXO na
entrada R/W. O microcontrolador habilita a memória colocando a entrada CS em
nível BAIXO. O dado é transferido para a posição de memória indicada pelo
endereço. A memória é, então, desabilitada (CS é ALTO) e suas saídas ficam em
tri-state. A capacidade da memória utilizada neste projeto será de 32 Kbytes.
3.1.2.4.Multiplexação de Endereços
Como os dispositivos de Controle Ethernet e a memória RAM encontram-se no
mesmo barramento de endereços, é necessário que se utilize a multiplexação de
endereços neste barramento para que cada dispositivo seja acessado individualmente
num determinado intervalo de tempo.
Analogamente, utilizando à lógica TTL (transistor-transistor logic), poderíamos
utilizar dois componentes; o primeiro o 74373, que é um registrador de oito bits de
entrada paralela e saída paralela que contém oito flip-flops tipo D com saídas tri-state,
para fornecer o endereçamento de A0 a A7. Os registradores têm como principal
característica a capacidade de armazenar informações e também transferir essas
informações para outros registradores. Isso é bastante interessante, já que o
armazenamento e a transferência de dados são as principais características dos
sistemas digitais. Outro componente da família TTL é o Demultiplexador, ou
distribuidores de dados, 74138, que recebe uma única entrada e a distribui para a
saída determinada pelas entradas de seleção. (TAUB, 1984).
Na Figura 3.5 está o esquema elétrico do 74LS138, indicando, quais os códigos de
seleção de 3 bits (0 a 255), e os pinos de seleção de dados E1, E2 e E3. Na Tabela
3.1, mostra a tabela verdade do 74LS138 e o comportamento das saídas relacionado
os pinos de entrada.
38
Figura 3.5 – Demultiplexador de 8 saídas utilizando o 74LS138
Tabela 3.1 – Tabela Verdade 74138
Todos estes 2 dispositivos, 74138 e 74373, foram “embutidos” em um dispositivo lógico
programável (CPLD), que além de trazer uma maior imunidade a ruídos, também tem
uma maior velocidade no tráfego dos dados e suporte a I/OS (inputs e outputs) 5 Volts e
3,3 Volts.
A Figura 3.6 mostra o diagrama esquemático desenvolvido internamente na CPLD,
utilizando o software Quartus II (Copyright © 1995-2007 Altera Corporation), onde os
pinos D0 a D7 são os barramentos de dados conectados aos pinos de dados da memória
SRAM e os controladores de Rede, assim como os pinos de endereçamento A0 a A7 e
A13 a A15, que fazem a seleção dos dados e quais dispositivos acessarem num
determinado intervalo de tempo.
Os pinos de /RD e /WR são utilizados para controle de leitura ou escrita no barramento e
ambos são controlados pelo microcontrolador, utilizando instruções específicas.
39
O mapa de memória encontra-se na Tabela 3.2, indicando em qual endereço de memória
encontra-se cada dispositivo no barramento e sua capacidade de dados.
VCCALE INPUT
/CS1OUTPUT
/CS2OUTPUT
VCCD0 BIDIR
VCCD1 BIDIR
VCCD2 BIDIR
VCCD3 BIDIR
VCCD4 BIDIR
VCCD5 BIDIR
VCCD6 BIDIR
VCCD7 BIDIR
VCCA0BIDIR
VCCA1BIDIR
VCCA2BIDIR
VCCA3BIDIR
VCCA4BIDIR
VCCA5BIDIR
VCCA6BIDIR
VCCA7BIDIR
VCCA15 BIDIR
VCCA14 BIDIR
VCCA13 BIDIR
VCC/WR BIDIR
VCC/RD BIDIR
D LATCH
D1
D3
D6
D7
D2
G
D4
D5
D8
OEN
Q3
Q6
Q7
Q2
Q8
Q4
Q5
Q174373
inst
3:8 DECODER
A
B
G1
C
G2AN
G2BN
Y0N
Y1N
Y2N
Y3N
Y4N
Y5N
Y6N
Y7N
74138
inst1
GND
AN
D2
inst
17
Figura 3.6 – Esquema elétrico interno ao CPLD
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Dispositivo Capacidade
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62C256 32.768 bytes
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 x x x x x x x 0 0 0 0 0 RTL8019AS
#1 interface -
1 0 0 0 x x x x x x x 1 1 1 1 1
1 0 0 1 x x x x x x x 0 0 0 0 0 RTL8019AS
#2 interface -
1 0 0 1 x x x x x x x 1 1 1 1 1
Tabela 3.2 – Tabela de memória de acesso aos dispositivos do barramento.
A interface do microcontrolador com a SRAM externa e também com controladores de
rede consiste em:
• Port A: Barramento multiplexado entre a parte baixa do barramento de endereço e
o barramento de dados.
• Port C: Parte Alta do Barramento de endereços.
• Pino ALE: Address Latch Enable – Habilitação do latch de endereços.
40
• Pinos /RD e /WR: Sinais de controle de leitura e escrita.
A SRAM de dados externa é habilitada quando o bit SRE – bit de habilitação da SRAM
externa no registrador de controle do microcontrolador, o MCUCR- é habilitado e as
definições de direção do registrador DDRA serão anuladas.
Quando o pino ALE vai do nível de tensão ALTO (5V) para o nível de tensão BAIXO
(0V), um endereço válido está no Port A. O pino ALE se mantém em BAIXO durante a
transferência de dados. Os pinos /RD e /WR são ativados apenas durante o acesso à
SRAM externa. Tipicamente, a SRAM externa é acessada em três ciclos de clock. Se um
estado de espera (WAIT STATE) for necessário, o bit SRW no registrador MCUCR deve
ser habilitado.
Note que a Port A só é um barramento de dados em um ciclo. Assim que o acesso aos
dados termina, Port A volta a ser o barramento baixo de endereços, por isso a necessidade
da utilização de um latch(74373), para armazenar o último dos bits no barramento de
endereços de A0 a A7.
Na Figura 3.7 está o layout dos pinos do Atmega64, indicando quais os pinos da PortA,
PortC, ALE, /RD e /WR
Figura 3.7 – Layout dos pinos do Atmega64.
41
3.1.2.5.Controlador de Rede
Serão utilizados dois controladores de rede 10MBits. Este controlador, NE2000-
compatível, possui um modo de operação de 8 bits que simplifica a interação com um
microcontrolador e também um buffer interno de 8 Kbytes, no modo de 8 bits que
armazenam os pacotes recebidos na rede até que sejam resgatados através de uma
interrupção externa ao microcontrolador.
A comunicação do microcontrolador com os dois controladores de rede é similar a
comunicação com a memória SRAM, alterando apenas o pino de seleção, que no caso
do RTL8019AS, para utilização é o pino AEN (pino 34), que em nível baixo, libera o
barramento ora para escrita (WR em nível BAIXO) ora para leitura (RD em nível
BAIXO).
Nos anexos A e B estão os esquemáticos contendo toda a interface entre o
microcontrolador AVR (Atmega64) com a memória RAM, os dois controladores
Ethernet RTL8019AS e o CPLD que faz todo o controle do barramento de dados e
endereçamento.
As interfaces controladores de Rede, são dois RTL8019AS, que fazem a interface
direta com a redes Ethernet, ligado diretamente na camada de Rede e Enlace do
modelo OSI.
Para atender a demanda de captura de pacotes, para uma velocidade de 10Mbps, o
RTL8019AS contém duas interfaces DMA internas que controlam duas filas
circulares do tipo FIFO (First In First Out), que em português significa primeiro a
entrar, primeiro a sair, onde os dados recebidos vão sendo colocados na fila e
retirados (ou processados) por ordem de chegada. Ele utiliza seu DMA interno para
manipular e mover os dados entre sua FIFO (First In First Out) e seu buffer de
memória interna de 8KBytes. A Figura 3.8 mostra a representação da fila circular
desse controlador.
42
Figura 3.8 – Fila Circular do RTL8019AS
A principal vantagem do RTL8019AS é a sua interface paralela de 8 bits, tornando fácil a
comunicação com dispositivos como microcontroladores e FPGAs. Ele possui 8 bits de
comunicação de dados (D0 a D7), 5 pinos de endereçamento (A0 a A4), 2 pinos para
seleção da direção do barramento de dados (READ, WRITE) e 1 pino de habilitação do
controlador (AEN) .
Internamente, o RTL8019AS possui um conjunto de registradores e uma área de memória
volátil. O RTL8019AS é controlado a partir desses registradores que são alcançados
selecionando o endereço correspondente no barramento de endereços nos pinos A0 e A4.
Então, o valor do registrador pode ser lido ou escrito, de acordo com o valor dos pinos de
direção(READ, WRITE, ENABLE), no barramento de dados (D0 a D7).
Na Figura 3.9, está o layout dos pinos do RTL8019AS, onde mostra os pinos de dados,
direção e habilitação.
43
Figura 3.9 – Layout dos pinos do RTL8019AS
3.1.2.6.Interface Serial
A interface serial é utilizada para debug do firmware e interface entre o usuário e o
equipamento, que conectado diretamente na porta serial de um microcomputador e
utilizando um software de comunicação serial do tipo HyperTerminal ou Putty, há a
interação do usuário com o equipamento.
A Figura 3.10 mostra o esquema elétrico do dispositivo MAX202, responsável pela
conversão dos sinais no nível TTL dos pinos RXD e TXD do microcontrolador, para
o nível RS232.
44
Figura 3.10 - Esquema elétrico do CI MAX202
3.1.2.7.Módulo Real Time Clock e memória para log.
O equipamento é constituído de um módulo Real Time Clock que internamente
contêm um calendário completo, provendo ao sistema segundos, minutos, hora, dia,
mês e ano. Os dias do mês de cada ano são ajustados automaticamente. O HT1381 é
desenvolvido para baixo consumo de energia, podendo operar em dois modos: um é
no modo 12 horas com indicação de AM/PM, e outro no modo de 24 horas.
A Figura 3.11 mostra o diagrama em bloco do Real Time Clock HT1381, mostrando
os pinos de comunicação com o microcontrolador I/O, SCLK e /REST, e também os
pinos de seu oscilador externo a cristal de 32.768KHz.
Figura 3.11 – Diagrama em bloco do Real Time Clock
45
O formato de comunicação entre o microcontrolador e o dispositivo é através da
comunicação SPI (Serial Peripheral Interface) criado pela Motorola, para diminuir o
número de pinos de comunicação entre dispositivos, porém sem perda de velocidade.
As formas de onda de comunicação podem ser vistos nas Figuras 3.12 e 3.13, onde
indicam a leitura e a escrita dos dados no dispositivo respectivamente.
Figura 3.12 – Forma de onda para leitura de dados
Figura 3.13 – Forma de onda para escrita dos dados.
A memória utilizada para armazenamento do log, isto é, um histórico das últimas ações
ocorridas no equipamento, é uma memória serial de 8192 palavras de 8 bits. A memória é
do tipo não volátil, isto é, não perde suas informações após a falta de energia. A
comunicação entre o microcontrolador e o dispositivo é através da comunicação I2C.
Ela é análoga a comunicação SPI, porém de propriedade da Philips. Além disso, a
velocidade de comunicação é muito menor, porém mais segura devido a vários
procedimentos de confirmação de leitura ou escrita dos dados e também a análise atual do
barramento.
A Figura 3.14 traz o diagrama em bloco da memória AT24C64, utilizada para
armazenamento do log.
46
Figura 3.14 – Diagrama em bloco da memória AT24C64.
3.1.2.8.Fonte Alimentação Chaveada
A fonte chaveada é constituída de um LM2576-5V que, regula a tensão de entrada
que pode variar de 40VDC a 9VDC, para 5VDC na saída. Utilizando a tecnologia
Step-Down, isto é, chaveando a tensão de entrada, dissipando o mínimo de calor,
fornecendo baixa tensão, mesmo com um grande valor de tensão na entrada, com alta
corrente, nominalmente até 3 Amperes.
A Figura 3.15 mostra o diagrama em blocos, indicando onde é feito o chaveamento
da tensão e a utilização de uma fonte de corrente para suprir o consumo de corrente.
47
Figura 3.15 – Diagrama em blocos do LM2576
Na Figura 3.16, encontra-se o esquema elétrico para a fonte projetada para o consumo
de 1,5 Amperes, e com uma ponte de diodos na entrada para proteção de curto ou
inversão de polaridade.
Figura 3.16 – Esquema elétrico da fonte chaveada.
3.1.3. Descrição de Software
3.1.3.1.Ambiente e Linguagem de desenvolvimento
A linguagem utilizada para o desenvolvimento do software foi o C e o ambiente de
desenvolvimento utilizado foi o WINAVR, que é um toolkit que traz diversas
ferramentas GNU para desenvolvimento de software para essa arquitetura, como o
compilador GCC, linker e assembler.
3.1.3.2.Estrutura de dados
Uma estrutura de dados em linguagem C (struct) agrupa várias variáveis numa só.
Funciona como uma ficha pessoal que tenha nome, telefone e endereço. Nesse caso,
todas as informações relacionadas aos cabeçalhos dos protocolos relacionados no
48
modelo Internet. A estrutura, então, serve para agrupar um conjunto de dados não
similares, formando um novo tipo de dados.
Há uma particularidade na utilização dessas estruturas nesse projeto, pois elas
serviram apenas como ponteiro para um setor definido previamente de memória, isso
é, foram criados 2 ponteiros para cada estrutura, indicando qual interface de rede está
tendo dados lidos ou escritos.
Cada estrutura guarda o endereço de memória dos 2 buffers de memória de tamanho
de 1518 bytes, que é o tamanho máximo de um frame ethernet, fazendo que a
manipulação e abstração dos dados em tempo real fossem mais dinâmicas, reduzindo
o tamanho de uso de memória para dados e código. A Figura 3.17 demonstra como é
feito a utilização de estruturas e os ponteiros, relacionando também a qual camada do
modelo Internet cada estrutura pertence.
50
struct eth_ip{ unsigned char addr[4];
}; struct eth_addr{
unsigned char addr[6]; }; struct eth_hdr{
struct eth_addr dst; /* endereço fisico alvo */ struct eth_addr src; /* endereço fisico origem */
unsigned short type; /* comprimento / tipo do pacote*/ };
struct arp_hdr{ struct eth_hdr ethhdr; /* cabeçalho ethernet */ unsigned int hwtype; /* tipo do hardware */ unsigned int protocol; /* protocol type */ unsigned char hwlen; /* tamanho físico*/ unsigned char protolen; /* tamanho lógico */ unsigned int opcode; /* ARP opcode */ struct eth_addr shwaddr; /* endereco físico origem */ struct eth_ip sipaddr; /* endereco logico origem */ struct eth_addr dhwaddr; /* endereco fisico alvo*/ struct eth_ip dipaddr; /* endereco logico alvo */ };
struct ethip_hdr{ struct eth_hdr ethhdr; /* cabecalho ethernet */ unsigned char vhl; /* version and header len*/ unsigned char tos; /* Quality of IP service */ unsigned char len[2]; /* total len of IP datagram */ unsigned char ipid[2]; /* Identification value */ unsigned char ipoffset[2]; /* flags and fragment offset */ unsigned char ttl; /* time to live */ unsigned char proto; /* protocol usado */ unsigned int ipchksum; /* checksum */ struct eth_ip srcip; /* endereco logico origem*/
struct eth_ip dstip; /* endereco logico alvo */ };
Abaixo a relação das estruturas, e o significado de cada variável.
3.1.3.3.Estrutura Ethernet
3.1.3.4.Estrutura ARP
3.1.3.5.Estrutura IP
51
struct icmp_hdr{ struct ethip_hdr iphdr; /* cabecalho IP */
unsigned char type; /* tipo da mensagem */ unsigned char icode; /* codigo da mensagem */ unsigned int icmpchksum; /* Checksum */ unsigned int id; /* Identifier( possibily unused ) */ unsigned int seqno; /* Sequence number */ };
struct tcp_hdr{ struct ethip_hdr iphdr; /* IP Header */ unsigned int srcport; /* source port */ unsigned int dstport; /* destination port */ unsigned char seqno[4]; /* sequence number */ unsigned char ackno[4]; /* ack number */ unsigned char tcpoffset; /* tcp header len */ unsigned char flags; /* option flags */ unsigned char wnd[2]; /* flow control credit */ unsigned int tcpchksum; /* tcp checksum */ unsigned char urgp[2]; /* urgent data pointer */ unsigned char optdata[4]; };
struct udp_hdr{ struct ethip_hdr iphdr; /* cabecalho IP */ unsigned int srcport; /* porta origem */ unsigned int dstport; /* porta alvo */
unsigned int udplen; /* comprimento do datagrama */ unsigned int udpchksum; /* checksum */
};
3.1.3.6.Estrutura ICMP
3.1.3.7.Estrutura TCP
3.1.3.8.Estrutura UDP
3.1.3.9.Estrutura de dados firewall
A estrutura de dados relacionada ao firewall traz a especificação de todos os dados
que é analisada em tempo real, ela é constituída de outras três estruturas:
• Module: traz análise de endereço IP de entrada ou saída, análise de MAC de
entrada ou saída e análise de um range de endereços IPs.
• Interval: intervalo de horário e minuto, que dentro da estrutura do firewall, é
relacionado aos sete dias da semana.
52
struct module{ unsigned char enable_all; /* flag para analise de interface */ unsigned char ip_enable; /* flag para análise de ip */ struct eth_ip ip; /* endereco ip de análise*/ unsigned char mac_enable; /* flag para análise do mac */ struct eth_addr mac; /* endereco mac de análise */ unsigned char range_enable; /* flag de análise de range */ unsigned char start; /* endereco ip inicio */ unsigned char stop; /* endereco ip fim */ };
struct interval{ unsigned char minute; unsigned char hour; };
struct ports{ unsigned char enable_all; /* enable all ports*/ unsigned char sentido; /* define o sentido */ unsigned char port_redirection; /* flag redirecionamento de porta */ unsigned char range_enable; /* flag de range de porta */ unsigned short start; /* porta inicio */ unsigned short stop; /* porta fim */ unsigned char index; /* index para diversas portas */ unsigned short number[10]; /* qtd de portas por conexão */ };
• Ports: traz a análise do sentido em que a porta pertence (src ou dst),
redirecionamento de porta, por exemplo, para todo pacote que tenha como
destino a porta 80, redirecioná-lo a porta 8080; também há a análise de range
de portas que variam de 1 a 10 portas para o mesmo endereço IP.
3.1.3.10. Estrutura Module
3.1.3.11. Estrutura Interval
3.1.3.12. Estrutura Ports
3.1.3.13. Estrutura firewall
A estrutura firewall traz consigo duas estruturas do tipo module, que analisam o
endereço IP e o endereço MAC, e uma estrutura do tipo port, para análise das portas;
estão relacionados também os protocolos (ICMP,TCP ou UDP), a ação de bloqueio
53
struct firewall{ struct module src; struct module dst; struct ports port; unsigned char proto; /* protocol used in data area */ unsigned char action; /* accept / drop */ unsigned char global; /* global rule */ unsigned char ip_sentido; /* sentido do redirecionamento ip*/ unsigned char ip_redirection; /* flag redirecionamento de ip */
unsigned char time_enable; /* flag que habilita/desabilitada por horario */
struct interval start; struct interval stop; unsigned char weekdays[7]; };
ou aceitação do pacote, o sentido e o endereço IP para redirecionamento. Por
exemplo, para todo IP de destino 192.168.0.20, redirecioná-lo ao endereço
192.168.0.254, isso é muito útil onde se trabalha com servidores específicos de e-
mail, servidor Proxy.
Há análise de hora e minuto de cada dia da semana, que para cada dia da semana,
define-se um horário de início e fim da ação de cada regra.
3.1.3.14. Algoritmo Firewall
O algoritmo é responsável pela análise de todo datagrama que é recebido pela
interface ethernet, comparando de forma linear, isto é, procurando se o datagrama
pertence a cada regra pré-definida no equipamento. Caso o datagrama não pertença a
nenhuma das 32 regras, o datagrama é descartado.
Na figura 3.18, está o diagrama em blocos do fluxo que segue o algoritmo do
firewall, onde primeiramente é feito a análise do datagrama, verificando se é um
pacote do tipo broadcast e se pertence à rede.
Ao entrar nas tabelas de 32 regras o pacote, iniciando, caso esteja habilitado, é
analisado o endereço MAC, caso não seja válido a procura é feita em outra regra, até
atingir a última regra. As outras regras seguem o mesmo funcionamento, comparando
endereço IP, intervalo de tempo, protocolo e porta de comunicação.
54
Caso o pacote seja aprovado nessas regras, o pacote é redirecionado, caso contrário o
pacote é descartado.
Figura 3.18 – Fluxo do Algoritmo Firewall
55
3.1.3.15. Roteamento
O algoritmo de roteamento é responsável por analisar cada datagrama recebido por
uma das interfaces ethernet, e seguir os seguintes passos:
• Verificar se é um pacote do tipo broadcast, caso seja, ignorá-lo.
• Caso o pacote seja uma requisição ARP, o endereço IP e MAC é armazenado
numa tabela de roteamento, e é enviada a resposta a quem solicitou a tradução
do endereço.
• Caso contrário, o pacote não é do tipo ARP, e sim do tipo IP, fazer a busca na
tabela de firewall para bloquear ou liberar o pacote.
• Verificar qual interface o datagrama pertence, caso o pacote seja para a outra
interface, recalcular o checksum do datagrama, copiá-lo para a área de
memória da outra interface e enviá-lo.
Figura 3.19 – Fluxo do algoritmo de Roteamento
3.1.4. Viabilidade Sócia Econômica
Na tabela 3.3 há um descritivo do custo do projeto, quantificando todos os componentes
utilizados e também o custo de fabricação, montagem e desenvolvimento.
56
Descritivo Quantidade Custo Total
Componentes 1 R$ 122,08 R$ 122,08
Fabricação Placas 1 R$ 209,23 R$ 209,23
Mão de Obra Direta 220 R$ 10,00 R$ 2.200,00
Total R$ 2531,31
FONTE: Mercado local (Curitiba-PR)
O que pode ser analisado a partir da tabela de custo, que para o valor da mão obra direta,
dilui-se drasticamente quando se há uma produção em volume desse equipamento, até
mesmo na compra dos componentes, fabricação e montagem das placas, que em média,
para um volume de aproximadamente 100 placas, teria uma redução de 50% do valor por
placa.
4. CAPÍTULO 4 - DESENVOLVIMENTO E IMPLEMENTAÇÃO
A implementação desse projeto teve como objetivo criar um sistema de fácil utilização pelo
usuário, alto desempenho e baixo consumo, portanto todas as funcionalidades do hardware
derivam do firmware embutido no microcontrolador.
4.1.1. Firmware
Assim como o hardware é divido em blocos, o firmware também é divido em blocos que
pode ser visualizado na figura 4.1, que indica qual o nível de integração com o fluxo
principal do programa (main), e os outros blocos.
57
Figura 4.1 – Diagrama em blocos do firmware
Cada bloco é responsável pelo nome que foi lhe dado, porém alguns adquirem tarefas
mais específicas, conforme descrito abaixo:
• I2C: protocolo de comunicação entre dispositivos, formulado e proprietário da
Philips, responsável pela serialização dos dados que serão lidos e escritos na
memória de log, e manipulação dos pinos do microcontrolador.
• AT24C64: utilizando funções do I2C, fornece uma interface para os outros blocos
para a leitura e escrita de dados no formato de dados simples ou buffers.
• CONFIG: traz toda a configuração do módulo que pode ser alterada pelo usuário
como endereço IP, máscara de rede e endereço de gateway de cada interface,
também fornecendo uma interface para os outros blocos de leitura e escrita dessas
informações.
• SPI: protocolo de comunicação entre dispositivos, responsável pela serialização
dos dados que serão lidos e escritos no relógio HT1380, e manipulação dos pinos
do microcontrolador.
• HT1380: utilizando funções do SPI, fornece uma interface para os outros blocos a
leitura e escrita de dados no formato de dados simples ou buffers, responsável pela
leitura e escrita de data e hora.
58
• LOG: armazena todos os eventos ocorridos em outros blocos como IP e
FIREWALL, indicando a data e hora que um determinado pacote foi bloqueado e
a qual endereço IP ele pertencia e para qual endereço IP era seu destino, as
informações dessas tabelas são salvas utilizando o bloco AT24C64.
• USART: módulo de comunicação serial, que configura os registradores do
microcontrolador para utilização dos pinos TX e RX para comunicação com o
computador através de uma interface serial assíncrona. Este bloco também é
responsável pela bufferização dos dados de entrada e saída, utilizando filas
circulares do tipo FIFO (first in first out).
• SHELL: interpretador de comandos vindos pela porta serial, responsável pela
integração do usuário com o equipamento.
• PROTOCOL: assim como o bloco SHELL, o PROTOCOL também é um
interpretador de comandos vindos pela porta serial, porém, com formatos e
informações mais específicas para integração com o software de configuração do
equipamento.
• TIMER: responsável pela configuração dos registradores do timer do
microcontrolador, configurado de forma a cada 10 ms é gerado uma interrupção
por software. Dessa forma temos um tempo relativo para cada processo,
multiplicado por 10 ms.
• WDT: watchdog timer, ou em português, o cão de guarda, responsável pela
monitoração de todo os sistema, caso uma determinada função ou parte do
software consumir mais que 1 segundo do processador, travando-o, o watchdog
timer automaticamente gera uma interrupção e força o microcontrolador a gerar
um reset, reinicializando o microcontrolador e todo o sistema.
• RTL8019: interface de comunicação direta com o dispositivo de controlador de
rede Ethernet de mesmo nome, inicializando registradores, lendo e escrevendo os
pacotes do tipo Ethernet. O endereço MAC de cada interface é configurado
diretamente nesse módulo escrevendo diretamente nos registradores responsáveis.
59
• NIC: interface com o RTL8019, essa interface é responsável pela virtualização do
módulo de controle Ethernet, pois a utilizando, é possível substituir o controlador
Ethernet, sem gerar a recodificação de todo o código, apenas uma pequena parte
do arquivo NIC, por volta de 1% de todo o código.
• FIREWALL: contêm a tabela de regras do firewall, e o algoritmo de análise dessas
regras.
• ICMP: responsável pela análise dos pacotes do tipo ICMP, neste bloco é gerado a
resposta de cada requisição desse tipo de protocolo.
• ETHERNET: traz algumas funções de uso geral, e inicialização dos pacotes de
1518 bytes de cada interface.
• IP: faz o controle de todo os pacotes vindos das interfaces, e que passaram pelo
bloco FIREWALL, fazendo o roteamento deles.
• ARP: armazena toda a tabela de relacionamento de endereços IP em endereços
MAC, gerando também a resposta de cada requisição desse tipo de protocolo.
• MAIN: bloco principal que chama as funções de inicialização de todos os outros
blocos e também a integração entre eles.
Todos estes blocos foram desenvolvidos utilizando o editor de texto Programmers
Notepad, que vem junto do pacote de instalação do WINAVR.
60
Figura 4.2 – Tela do desenvolvimento do firmware.
4.1.2. Hardware:
Após a especificação e aquisição dos blocos do hardware e seus componentes, foi
elaborado o esquema elétrico e layout da placa para fabricação.
Na figura 4.3, está à utilização do software EAGLE – Easily Applicable Graphical
Layout Editor, para desenvolvimento do esquema elétrico da placa.
61
Figura 4.3 – Desenvolvimento do esquema elétrico
Após o desenvolvimento do esquema elétrico, é necessário o posicionamento dos
componentes na placa e o desenvolvimento das trilhas por onde passam a corrente
elétrica que alimentam os circuitos.
Na figura 4.4, mostra-se o desenvolvimento do layout da placa e o desenvolvimento das
trilhas pertencente ao bottom layer, isto é, na parte de baixo da placa.
62
Figura 4.4 – Layout da placa desenvolvimento das trilhas no bottom layer.
Na figura 4.5, mostra-se o desenvolvimento do layout da placa e o desenvolvimento das
trilhas pertencente ao top layer , isto é, na parte de cima da placa.
63
Figura 4.5 – Layout da placa desenvolvimento das trilhas no top layer.
Na Figura 4.6, o desenvolvimento completo do layout já com todas as trilhas
desenvolvidas, já analisando todos os erros, serigrafia e posição dos componentes.
64
Figura 4.6 – Layout da placa completo.
A partir desse ponto com todos os componentes posicionados e o layout da placa
finalizado, a placa é fabricada em empresas especializadas, devido à grande quantidade
de trilhas e também a complexidade da placa que exige furos metalizados e máscara para
proteção contra oxidação, deixando o trabalho mais profissional.
Na Figura 4.7, mostra como a placa ficou após a fabricação, montada e com os
componentes já soldados na placa.
65
Figura 4.7 – Placa montada com todos os componentes.
4.1.3. Dimensões mecânicas
Na figura 4.8, é possível ver as dimensões da placa em milímetros, e ter uma idéia de que
a placa é compacta, não sendo necessário um rack, ou um espaço muito grande para
adequar a placa.
66
Figura 4.8 – Dimensões da placa
5. CAPÍTULO 5 - VALIDAÇÃO E RESULTADOS
Para validar e obter os resultados do desse projeto foi montado uma pequena estrutura de rede,
onde constavam dois computadores, em redes distintas e o Roteador/Firewall provendo a
conexão entre essas duas redes, A figura 5.1 ilustra melhor como foi feito a homologação do
equipamento.
67
Figura 5.1 – Arquitetura para homologação.
Para a análise dos pacotes em tempo real, foi instalado no Servidor o software Wireshark,
(http://www.wireshark.org/) ele é um programa que verifica os pacotes transmitidos pelo
dispositivo de comunicação (placa de rede, placa de fax modem, etc.) do computador.
O objetivo deste tipo de software, também conhecido como sniffer, é detectar problemas de rede,
conexões suspeitas, auxiliar no desenvolvimento de aplicativos e qualquer outra atividade
relacionada à rede Ethernet, capturando os pacotes, descrevendo-os passo a passo.
O programa analisa o tráfego de pacotes recebidos e organiza-os por protocolo. Todo o tráfego
de entrada e saída é analisado e mostrado em uma lista de fácil navegação. Este programa é
recomendado para profissionais de informática, especificamente administradores de redes, e para
fins educativos.
68
Figura 5.2 – Wireshark em ação
O teste do hardware como memória, Real Time Clock, RAM e Controladores de Rede foi
implementado e é realizado na inicialização do firmware, conforme é vista na Figura 5.3, em que
a placa através de uma interface serial, a uma velocidade padrão de 9600 bps e 8 bits por pacote,
comunica-se com software putty (http://www.chiark.greenend.org.uk/~sgtatham/putty).
69
Figura 5.3 – Comunicando-se com putty.
5.1.1. 1° Teste de funcionamento
O primeiro teste gerou-se uma regra no firewall, que liberasse todas as portas e
protocolos entre o notebook e o servidor. A regra pode ser vista na Tabela 5.1, em que
indica que há uma regra global, que ela representa aceitar todos os pacotes em ambas as
interfaces, sem análise de horário. Neste caso, os tráfegos dos pacotes sempre seguem o
melhor caso, pois o delay é mínimo.
Global Action Time Enable
True Accept False
Tabela 5.1 – Regra do 1° teste.
Esta regra serve para adquirir o tempo de roteamento do pacote do tipo IP na porta 80
(HTTP), até o destino, sendo o tempo adquirido foi de 580 us. O intervalo de tempo entre
um computador e outro fica a cargo de cada máquina, e a cada processo em que o sistema
operacional da respectiva máquina está trabalhando no momento, porém ao chegar os
70
No Source Destination Protocol Info 01 10.1.1.2 192.168.0.2 TCP 1324 > 80 [SYN] Seq=0 Len=0 MSS=1460 Ethernet II, Src: 00:0f:20:29:e4:7c, Dst: 00:11:d8:58:da:f6 Internet Protocol, Src: 10.1.1.2, Dst: 192.168.0.2 Transmission Control Protocol, Src Port: 1324, Dst Port: 80, Seq: 0, Len: 0 No. Source Destination Protocol Info 02 192.168.0.2 10.1.1.2 TCP 80 > 1324 [SYN, ACK] Seq=0 Ack=1 Win=5840
Len=0 MSS=1460 Ethernet II, Src: 00:11:d8:58:da:f6, Dst: 00:50:c2:5d:60:a1 Internet Protocol, Src: 192.168.0.2, Dst: 10.1.1.2 Transmission Control Protocol, Src Port: 80, Dst Port: 1324, Seq: 0, Ack: 1, Len: 0
pacotes no equipamento, com essa latência para o melhor caso de 580us, esse tempo não
chega a ser significativo.
O trafego dos pacotes capturados pelo software Wireshark no computador servidor, traz o
fluxo entre dois pacotes que tem como destino no servidor da porta 80 e protocolo TCP.
5.1.2. 2° Teste de funcionamento
O segundo teste gerou-se uma regra no firewall, que liberasse a porta 80 (HTTP) entre o
notebook e o servidor, sendo essa regra a última das 32 regras (regra 31), as regras
anteriores teriam IPs aleatórios, pertencentes às redes e diferentes dos endereços 10.1.1.2,
192.168.0.2, 10.1.1.1 e 192.168.0.1. A regra pode ser vista na Tabela 5.2, em que indica
que a regra global foi desabilitada e que deve aceitar os pacotes em ambas as interfaces
com análise de horário, analisando também endereço de fonte e alvo, porta e protocolo.
Neste caso, os tráfegos dos pacotes sempre seguem o pior caso, pois o delay é até
considerável, sendo o tempo adquirido foi de 1450 us, sendo o tempo de procura na
tabela de regras do Firewall de 870us e o tempo de roteamento de 580us.
Global Action Time Enable Weekday Intervalo IP Source IP Dst Protocol PortFalse Accept True D, S, T, Q, Q, S, S 08:00 - 23:00 10.1.1.31 192.168.0.31 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:01 10.1.1.30 192.168.0.30 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:02 10.1.1.29 192.168.0.29 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:03 10.1.1.28 192.168.0.28 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:04 10.1.1.27 192.168.0.27 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:05 10.1.1.26 192.168.0.26 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:06 10.1.1.25 192.168.0.25 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:07 10.1.1.24 192.168.0.24 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:08 10.1.1.23 192.168.0.23 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:09 10.1.1.22 192.168.0.22 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:10 10.1.1.21 192.168.0.21 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:11 10.1.1.20 192.168.0.20 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:12 10.1.1.19 192.168.0.19 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:13 10.1.1.18 192.168.0.18 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:14 10.1.1.17 192.168.0.17 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:15 10.1.1.16 192.168.0.16 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:16 10.1.1.15 192.168.0.15 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:17 10.1.1.14 192.168.0.14 TCP 80
71
False Accept True D, S, T, Q, Q, S, S 08:00 - 23:18 10.1.1.13 192.168.0.13 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:19 10.1.1.12 192.168.0.12 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:20 10.1.1.11 192.168.0.11 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:21 10.1.1.10 192.168.0.10 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:22 10.1.1.9 192.168.0.9 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:23 10.1.1.8 192.168.0.8 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:24 10.1.1.7 192.168.0.7 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:25 10.1.1.6 192.168.0.6 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:26 10.1.1.5 192.168.0.5 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:27 10.1.1.4 192.168.0.4 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:28 10.1.1.3 192.168.0.3 TCP 80 False Accept True D, S, T, Q, Q, S, S 08:00 - 23:29 10.1.1.2 192.168.0.2 TCP 80
Tabela 5.2 – Regra do 2° teste.
5.1.3. 3° Teste de funcionamento
O terceiro teste gerou-se uma regra no firewall, que liberasse a porta 80 (HTTP) entre o
notebook e o servidor, sendo essa regra a primeira das 32 regras. A regra pode ser vista
na tabela 5.3, em que indica que a regra global foi desabilitada e que aceitar os pacotes
em ambas as interfaces com análise de horário, analisando também endereço de fonte e
alvo, porta e protocolo. Nesse caso, foi possível o tempo de busca entre as regras que é de
28us, que foi o tempo de procura da tabela de regras do firewall de 32 posições,
contabilizando com o tempo de roteamento de 580 us, teremos um tempo total de 608 us.
Global Action Time Enable Weekday Intervalo IP Source IP Dst Protocol PortFalse Accept True D, S, T, Q, Q, S, S 08:00 - 23:00 10.1.1.2 192.168.0.2 TCP 80
Tabela 5.3 – Regra do 3° teste.
Analisando os resultados apresentados acima, para um processador rodando a
14,7456MHz, onde cada instrução roda a aproximadamente 68 ns, levando em conta que
o microcontrolador é um RISC, e cada instrução é executada a cada ciclo de clock; e o
tempo de busca na tabela de regras do firewall e de roteamento é de 608 us, teremos o
consumo de 8.950 ciclos de clock, e conseqüentemente 8.000 instruções
aproximadamente para cada datagrama que seja liberado por uma regra de firewall e
roteamento, consumindo em média 120 mA de corrente a 12Volts. Esse intervalo de
tempo e também o consumo de energia são satisfatórios, pois não é gerado latência na
rede, obviamente seria necessário o teste de desempenho em uma rede maior de
aproximadamente 16 máquinas, para se ter um resultado significativo, e verificar se há
perda de algum pacote.
72
Porém, teoricamente, o equipamento teria a mesma performance, pois os pacotes são
bufferizados pelos Controladores de Rede e tratados em tempo real pelo equipamento.
6. CAPITULO 6 – CONCLUSÃO
A idéia básica de desenvolver um roteador com firewall embutido em hardware foi atingido com
êxito, e o algoritmos implementados geraram um funcionamento adequado para aquilo que foi
proposto que era o roteamento de pacotes, com baixa latência na rede e também a análise em
tempo real do pacote aplicando regras de firewall.
O hardware microcontrolado, constituído de um microcontrolador RISC de 8 bits, que pode ser
facilmente substituído por um microcontrolador de 32 bits de baixo custo, garantiu a meta de um
poder de processamento e baixo consumo.
O CPLD que deve um papel importante no layout da placa, economizando espaço e garantido os
níveis de tensão e velocidade entre os dispositivos, deixa para aplicações futuras, a capacidade
de gerenciar uma quantidade ainda maior de Controladores de Rede.
O projeto demonstrou que a partir desse simples firmware que controla pacotes ethernet, ip,
regras do firewall e roteamento, é possível utilizá-lo, com pequnas alterações, em arquiteturas
microcontroladas mais novas, com diversos dispositivos já embutidos como memória de
armazenamento (EEPROM) e memória de dados (RAM), ganhando desempenho, elevando-se o
clock, com menos consumo de energia, sendo possível alimentar o hardware por uma bateria por
vários dias, a custo igual ou menor do que foi desenvolvido.
Neste projeto onde a utilização da linguagem de programação C, e também alguns recursos de
engenharia de software, como virtualização, programação em módulos e estruturas, tornou o
projeto dinâmico, em que, com pouco trabalho, é possível a implementação de novos módulos
como servidor de DHCP , e também com a criação de regras simples, há a possibilidade de
direcionar o projeto para aplicações específicas, como VOIP (voz sobre IP), redirecionamento
de IP’s e portas, a tarifação de pacotes ethernet e ligações VOIP, considerando que cada ligação
VOIP acessa um range de portas específicas, por determinados horários.
O conteúdo da maioria das disciplinas ministradas no curso de Engenharia da Computacão,
foram utilizados como base no desenvolvimento do projeto, como arquitetura e organização de
73
computadores, fundamentos de computação e programação, microprocessadores e
teleinformática. Conceitos esses que durante o desenvolvimento do projeto foram fundamentais
para o funcionamento e um nível de qualidade próximos ao de mercado.
O estudo também dos protocolos de Rede, também é um tópico a ser observado, que, para
aplicações futuras, é possível o desenvolvimento de uma pequena pilha TCP/IP com controle de
Firewall e roteamento de pacotes.
A falha do projeto foi na falta de interação com usuário, pois as regras foram implementadas
diretamente no firmware, pois a comunicação através de um pequeno software de configuração
elaborado em C++, foi prejudicada pelo mau funcionamento da porta serial RS232 de
comunicação do computador em que estava desenvolvendo-se o aplicativo. Para uma
implementação futura, a configuração através de um SHELL via protocolo TELNET, ou uma
pagina web.
74
7. CAPITULO 7 - REFERENCIAS BIBLIOGRAFICAS
MOKARZEL, M.P.; CARNEIRO, K.P.M.C. Internet Embedded: TCP/IP para
Microcontroladores. 1. ed. São Paulo, Érica, 2004.
SPURGEON, Charles.;Ethernet: The Definitive Guide. 1. O’Reilly and Associates, 2000.
CARVALHO, T.C.M.B., org. Arquitetura de redes de computadores OSI e TCP/IP.2.ed. São
Paulo, Makron Books, 1997.
(Peterson, Davie), Larry L. Peterson, Bruce S. Davie.; Computer Networks: A Systems Approach, 2004.
COMER, D. Interligação em rede com TCP/IP . 3. ed. Rio de Janeiro, Campus, 1998.
TOCCI, R.J. Sistemas digitais: princípios e aplicações. 8. ed. São Paulo, Prentice Hall, 2003.
BENTHAM, JEREMY.; TCP/IP Lean, Web Servers for Embedded Systems. Second Edition,
CMP Books, Lawrence Kansas.2002.
LANARI, A. P.; MARTINS A.S.; Cotta L.C.. Desenvolvimento com microcontroladores Atmel
AVR. Junho, 2006.
TAUB, H.; Circuitos Digitais e Microprocessadores. São Paulo: McGraw-Hill, 1984.
Top Related