Opniões - AVR Ethernet Gateway/Firewall

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

Opniões - AVR Ethernet Gateway/Firewall

Mensagempor helton » 19 Mar 2007 17:36

Boa tarde pessoal...
Para projeto final da faculdade , vou desenvolver um firewall/gateway ethernet, com 2 interfaces 10Mbps( RTL8019AS ) + Atmega64 + 64K RAM + FPGA ( mapeamento, etc... )...

Em relação a pilha TCP/IP ( uIP ) e aplicações de regras do firewall, não tenho duvida do que eu tenho que fazer.
Agora...estou me matando para estudar como fazer o roteamento entre as duas interfaces. Graças a Deus eu não preciso implementar NAT , se não estaria morto.
Gostaria das opniões dos caros colegas em relação a este projeto...e se alguém já se aventurou por estas praias...

agradeço a atenção e até mais...
Helton Marques
"Priorize as Prioridades"
helton
Byte
 
Mensagens: 146
Registrado em: 16 Out 2006 09:18
Localização: São José-SC

Mensagempor EDSONCAN » 19 Mar 2007 17:56

Parabens Helton Marques.

Isso esta mais para pos-graduação do que graduação.

Se eu fosse voce simplificava o problema e partia para um arquitetura ARM (Kit da Cirrus ou um Philips) rodando um uCLinux, ou um PC embedded, mas admiro sua coragem.


Edson
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Mensagempor helton » 11 Mai 2007 14:43

Bem...a placa do firewall/gateway ficou pronta e já está fazendo lo led piscar...

Imagem
Helton Marques
"Priorize as Prioridades"
helton
Byte
 
Mensagens: 146
Registrado em: 16 Out 2006 09:18
Localização: São José-SC

Mensagempor msamsoniuk » 22 Mai 2007 12:53

ficou muito bacana a sua placa.

eu acho q o roteamento nao tem segredo, tudo o que vc tem a fazer eh procurar o endereco destino em uma tabela de roteamento. nao sei qual o nivel de detalhamento de rota que vc quer e como esta a implementacao, mas pode ser tanto algo simples (verifica de qual interface veio e manda pela outra) ou algo mais elaborado (com suporte a networks e sub-networks).

se vc quer algo mais detalhado, sua tabela de rotas deve conter a network, netmask, gateway, interface e metric. entao, sabendo o ip destino do pacote, vc varre a tabela procurando o destino que melhor se encaixa ao que vc quer, ou seja, o ip destino deve estar dentro da faixa de ips valido para uma network/netmask. se vc tiver mais de uma rota com a mesma network/netmask, existe a metrica para avaliar qual delas tem precedencia. no caso dos roteadores cisco, por exemplo, colocar rotas com a mesma metrica faz com que o roteador sorteie o trafego entre as interfaces com a mesma metrica (balanceando o trafego). colocar metricas diferentes faz com que o trafego saia pela metrica menor, exceto quando a interface estiver down por algum problema, entao ela pega a proxima metrica disponivel.

por ex, para balancear trafego em um roteador cisco:

ip route 192.168.0.0 255.255.0.0 serial0 metric 1
ip route 192.168.0.0 255.255.0.0 serial1 metric 1

para priorizar pela serial0 e ter um backup na serial1:

ip route 192.168.0.0 255.255.0.0 serial0 metric 1
ip route 192.168.0.0 255.255.0.0 serial1 metric 2

a interface na tabela indica por qual interface vc vai mandar o pacote, mas isso nao eh toda a informacao: se o ip destino nao for diretamente alcancavel, vc precisa rotear ele atraves de outro router, por isso vc tem uma entrada para um gateway. note que tanto enviando diretamente para o ip destino (quando ele esta na mesma rede) quanto mandando para um gateway (quando o ip destino esta em outra rede), vc precisa consultar a tabela arp: para o ip destino vc indica o mac address do ip destino, para o gateway, vc mantem o ip destino no header e coloca o mac address do gateway.

por ex, para um host na mesma rede:

ip route 192.168.0.0 255.255.0.0 ethernet0

para um host em outra rede:

ip route 172.16.0.0 255.255.0.0 192.168.1.1

note que 192.168.1.1 esta na rede local (ethernet0), mas para chegar ateh 172.16.0.0/16 vc precisa mandar os pacotes para 192.168.1.1, q eh o gateway para essa rede.

e finalmente as sub-redes: pode ocorrer casos onde vc tenha rotas para uma rede e uma sub-rede na mesma tabela. por exemplo

ip route 192.168.0.0 255.255.0.0 ethernet0
ip route 192.168.2.0 255.255.255.0 serial0

a rede classe B 192.168.0.0 esta na ethernet, mas tem uma sub-rede menor, composta pela classe C 192.168.2.0 e roteada para a serial0. uma boa ideia eh ordenar a tabela pelas netmasks, da menor para a maior, entao sub-ordenar por network e entao por metric. assim vc pega a primeira rota jah corretamente, mesmo em casos mais complexos:

ip route 192.168.2.0 255.255.255.0 serial0 metric 1
ip route 192.168.2.0 255.255.255.0 serial1 metric 2
ip route 192.168.0.0 255.255.0.0 ethernet0
ip route 0.0.0.0 0.0.0.0 192.168.1.1 metric 1
ip route 0.0.0.0 0.0.0.0 192.168.1.2 metric 2

se vc ir para o 192.168.2.1, ele vai pegar corretamente a primeira rota e com a menor metrica. se essa interface nao estiver disponivel, ele vai para a metrica 2. se vc for para o 192.168.1.1, ele vai pela ethernet, se vc for para qq endereco ele vai por uma das metricas disponiveis na sequencia: 0.0.0.0 0.0.0.0 corresponde a maior netmask possivel, portanto eh o gateway default.

bom, eh soh uma ideia. se vcs tiverem tempo livre, acho q imitar o lider de mercado (cisco) seria uma boa ideia ;)

eu jah fiz projetos similares com o mc68302 e mpc860, que possuem bom suporte on-chip a ring-buffers, entao estou curioso em saber qual a performance de trafego das suas interfaces, isto eh, como vc esta movendo os dados pela memoria e entre as interfaces, pois suponho que o AVR nao tem um bus externo largo e nao possui dezenas de canais de dma.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04


Voltar para AVR

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x