[FUG-BR] Packet loss com Layer2

Renata Dias renatchinha em gmail.com
Quinta Janeiro 7 11:13:29 BRST 2010


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 em forge.com.br>

> 2010/1/6 Renata Dias <renatchinha em 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
>



-- 
Renata Dias


Mais detalhes sobre a lista de discussão freebsd