[FUG-BR] Packet loss com Layer2

Renata Dias renatchinha em gmail.com
Sexta Janeiro 8 15:14:44 BRST 2010


    Realmente, quando o servidor era i386 o HZ estava em 1000, mas de
qualquer forma recompilei o kernel dessa AMD64 passando o HZ pra 1000 e não
adiantou nada.

    Como o Patrick disse, deve ter mesmo alguma regra precisando de uma
"atenção" extra... o estranho é que antes de trocar a maquina não tinha esse
problema..

   Bom... mas solucionei adicionando regra de allow para tudo que for layer2
depois das regras de bloqueio dos MACs indesejados, restando assim somente o
tr4afego "not layer2" para as demais regras do firewall...


Obrigada!

2010/1/7 Patrick Tracanelli <eksffa em freebsdbrasil.com.br>

> Danilo Egea escreveu:
>  > 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 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
> >>>
> >>>
> >>
> >>
> > 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...
> >
>
> Renata, alguma outra regra esta causando essa latencia. Normalmente
> regras de pipe, divert, queue, count com keep-state, altq, netgraph,
> ngtee, são os principais candidatos a merecer um "not layer2" ja que
> voce so precisa filtrar isso em camada 3 ou superior. Fora essas avalie
> o restante do seu firewall, provavelmente tem alguma outra regra que
> merece um "not layer2" por ai.
>
>
>
> --
> Patrick Tracanelli
>
> FreeBSD Brasil LTDA.
> Tel.: (31) 3516-0800
> 316601 em sip.freebsdbrasil.com.br
> http://www.freebsdbrasil.com.br
> "Long live Hanin Elias, Kim Deal!"
>
> -------------------------
> 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