74
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

ROTEADOR/FIREWALL EMBARCADO - up.edu.br · PDF fileMonografia aprovada como requisito parcial à conclusão do curso de Engenharia da ... Esquema elétrico da fonte chaveada. ... Layout

  • Upload
    vokhue

  • View
    221

  • Download
    3

Embed Size (px)

Citation preview

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.

49

Figura 3.17 – Diagrama em blocos das estruturas.

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.