[FUG-BR] Packet loss com Layer2

Danilo Egea daniloegea em yahoo.com.br
Quinta Janeiro 7 11:54:35 BRST 2010


On 01/07/10 11:13, Renata Dias wrote:
> Oi Nilson,
>
> 1) Mesmas regras de firewall, fiz o backup de uma maquina pra outra.
> 2) Mesmo trafego de rede, pois só troquei o servidor antigo pelo novo.. a
> rede é a mesma.
> 3) A WAN é ligada direto com a EBT e a LAN é onde está o switch e os
> clientes.
> 4) Não.
>
> Quanto a configuração de hardware... eu troquei um Desk Server Quad Core por
> esse servidor HP Proliant ML350 G6 !
> A placa da WAN é uma Intel(R) PRO/1000 e a LAN é a onboard do servidor (HP
> NC326i Dual Port PCI-E Gigabit).... não é realtek.
>
> Meu questionamento é se as regras da forma como enviei abaixo causariam
> alguma perda de informação no meu caso que faço o controle de banda dos
> clientes por este servidor.
>
> Com a regra "allow ip from any to any layer2" os clientes voltam a responder
> com 0ms e 0% de perdas... como se a sysctl net.link.ether.ipfw estivesse
> desativada...
>
> Obrigada.
>
> 2010/1/7 Nilson<nilson at forge.com.br>
>
>    
>> 2010/1/6 Renata Dias<renatchinha at gmail.com>:
>>      
>>> Certo, mas eu tinha esse mesmo sistema (router, ipfw e layer2) em um
>>>        
>> outro
>>      
>>> servidor i386. Quando reinstalei nesse amd64 me deparei com essas perdas.
>>>        
>> Creio que o fato de ser AMD64 nao muda nada, então lhe pergunto:
>> 1) Eram as mesmas regras de firewall? (com pequenas mudanças...)
>> 2) O trafego na rede era semelhante?
>> 3) Ambos as redes usam SWITCHES?
>> 4) Sua interface LAN está em modo promisquo?
>>
>>
>>      
>>> Como eu não faço o controle de MAC de meus clientes por este servidor,
>>> talvez eu possa modificar meu firewall para que fique da seguinte forma:
>>>
>>> 1550 allow layer2 not mac-type ip // Libera todos os frames que não forem
>>>        
>> do
>>      
>>> tipo IP
>>> 1607 deny log all from any to any in via bge0 MAC any 00:12:17:34:eb:a0
>>> layer2 // Bloqueia esse MAC indesejado
>>> 1608 deny log all from any to any in via bge0 MAC any 00:12:0e:a1:38:47
>>> layer2 // Bloqueia esse MAC indesejado
>>> 1650 allow layer2 // Libera tudo que for layer2 - seria a mesma coisa de
>>>        
>> não
>>      
>>> ter o net.link.ether.ipfw ativado, correto??
>>>
>>>
>>> // Controle de banda dos clientes como está atualmente
>>> // Cliente 1
>>> 20040 pipe 20040 ip from any to 200.200.200.243 out via bge0 not layer2
>>> 20041 pipe 20041 ip from 200.200.200.243 to any in via bge0 not layer2
>>> 20045 allow ip from any to 200.200.200.243
>>> 20046 allow ip from 200.200.200.243 to any
>>>
>>> Ou então, como ja liberei layer2 na regra 1650 é lógico que só sobrou
>>> pacotes "not layer2", então poderia ficar assim tbm:
>>>
>>> // Cliente 1
>>> 20040 pipe 20040 ip from any to 200.200.200.243 out via bge0
>>> 20041 pipe 20041 ip from 200.200.200.243 to any in via bge0
>>> 20045 allow ip from any to 200.200.200.243
>>> 20046 allow ip from 200.200.200.243 to any
>>>
>>>
>>> Alguém discorda do meu raciocínio? Será que dessa forma eu vou prejudicar
>>>        
>> a
>>      
>>> rede de alguma forma? O controle de banda nas regras pipe sofrerão alguma
>>> deficiencia? A banda será controlada corretamente?
>>>
>>>        
>> Dados insuficientes para uma afirmação conclusiva, mas olhando
>> apenas esses pedaços do firewall que nos enviaste, eu fico
>> tensionado a discordar.
>>
>> Existem varias formas de desenhar um firewall e em geral
>> em pequenas redes isso pouco importa em termos de
>> performance, pois o hardware que você estará usando como
>> router (aquele PC velhinho que ninguem mais queria usar
>> na empresa) é muito poderoso com FreeBSD, e dá
>> conta com sobra para tratar aqueles 100 packets por
>> segundo num link de uns 2Mbps.
>>
>> Mas quando você tem um trafego alto, torna-se evidente
>> que o design vai fazer diferença e terás que usar hardware
>> adequado para dar conta do recado.
>>
>> Quanto ao hardware, um detalhe da sua configuração me
>> chamou a atenção e lhe sugiro uma troca: inverter as
>> interfaces de rede, pois você está usando uma Broadcom
>> (muito boa) para a rede roteável, onde o trafego é
>> muito menor e sem lixo ARP, enquanto usas uma realtek
>> (muito ruim) para a rede interna onde em relação a iface
>> externa o trafego deve ser mais que o dobro, com todo
>> aquele lixo ARP, broadcasts, netbios, virus, muitos
>> pacotes que serão bloqueados no firewall, e talvez
>> um proxy com cache.
>>
>> Bom, continuando com o firewall, tens que lembrar
>> que como você faz NAT, todos os pacotes (não todos,
>> tem aqueles que foram bloqueados e tals, mas vou
>> generalizar pra simplificar a história) IP tem que
>> passar pelo firewall 2 vezes: quando ele chega
>> pela LAN (in) e quando ele está saindo para a
>> WAN (out). Quando você habilita a camada 2 no fw,
>> cada pacote passa 4 vezes pelo seu ipfw:
>> L2 (in) ->  L3 (in) ->  **NAT** ->  L3 (out) ->  L2 (out)
>>
>> Partindo desse ponto de vista, nos meus firewalls
>> (principalmente nos HEAVYs) gosto de dividir as
>> checagens de cada tipo de trafego em blocos
>> separados, fazendo com que os pacotes sejam
>> checkados apenas pelas regras que lhes são
>> pertinentes, e não por todas as regras existentes,
>> segue um exemplo simples para lhe dar uma boa
>> idéia disso que falei:
>>
>> # INICIO, REGRAS GERAIS QUE VC QUEIRA,
>> # E OS "DIVISORES":
>> ipfw blablabla...
>> ipfw blablabla...
>> ipfw blablabla...
>>
>> # DIVISORES:
>> # pacotes entrando L2
>> ipfw add 2001 skipto 10000 all from any to any layer2 in
>>
>> # pacotes entrando L3
>> ipfw add 2002 skipto 20000 all from any to any not layer2 in
>>
>> # pacotes saindo L3
>> ipfw add 2003 skipto 30000 all from any to any not layer2 out
>>
>> # pacotes saindo L2
>> ipfw add 2004 skipto 40000 all from any to any layer2 out
>>
>> # se algo não bateu em nenhuma dessas, kill it!
>> ipfw add 2005 deny all from any to any
>>
>> # 10.000 ->  trate a partir daqui suas regras de L2 in,
>> # e entao mande pro final do firewall
>> ipfw add 10000 blablabla...
>> ipfw add skipto 65000 all from any to any
>>
>> # 20.000 ->  trate a partir daqui suas regras de L3 in, e skito final
>> ipfw add 20000 blablabla...
>> ipfw add skipto 65000 all from any to any
>>
>> # e assim por diante até que finalmente:
>>
>> ipfw add 65000 allow all from any to any
>>
>> --------------------------
>>
>> Isso foi apenas um exemplo, dependendo da sua
>> necessidade ou imaginação você poderia subdividi-lo
>> muito mais, como fazer essa mesma divisao por interfaces,
>> um bloco exclusivo para os pipes (dummynet), e o que
>> mais você quiser inventar.
>>
>> []s
>> Nilson
>>   -------------------------
>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>
>>      
>
>
>    
Olá Renata,

será que a causa do problema não é a frequência do timer que você 
definiu em 2000Hz?
A MAN do dummynet recomenda fortemente usar hz=1000...

ignore se falei besteira :D

abraços...

-- 
Danilo Egêa Gondolfo
Email/MSN - daniloegea at yahoo.com.br
Skype - daniloegea
Twitter - http://twitter.com/daniloegea
Blog - http://daniloegea.wordpress.com

__________________________________________________
Faça ligações para outros computadores com o novo Yahoo! Messenger 
http://br.beta.messenger.yahoo.com/ 



Mais detalhes sobre a lista de discussão freebsd