[FUG-BR] RES: RES: IPFW com ALTQ

Otacílio de Araújo Ramos Neto otacilio.neto em ee.ufcg.edu.br
Quarta Agosto 19 22:13:00 BRT 2009


2009/8/19 Danilo Egea <daniloegea em yahoo.com.br>

> Danilo Egea wrote:
> > Thiago Gomes wrote:
> >
> >> faz em forma de artigo o site esta necessitando.. faz um tempao um novo
> >> artigo nao é publicado.
> >>
> >> 2009/8/19 Danilo Egea <daniloegea em yahoo.com.br>:
> >>
> >>
> >>> Welkson Renny de Medeiros wrote:
> >>>
> >>>
> >>>> Danilo Egea escreveu:
> >>>>
> >>>>
> >>>>
> >>>>> Welkson Renny de Medeiros wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>> Então, eu encontrei 2 patches bem antigos pra freebsd (4 e 6) que
> fazem
> >>>>>>> isso, um atraves de sysctl e um atraves do ipfw, mas pelo visto não
> >>>>>>> foram encorporados no sistema. =/
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> Se for esse patch abaixo que você está falando pelo menos tem uma
> >>>>>> vantagem, foi desenvolvido por Araújo que participa do FUG =)
> >>>>>> http://code.google.com/p/exports/wiki/ToSWorkAround
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>> Não era esse, com esse sao 3 hehe
> >>>>>
> >>>>> esse ->
> >>>>>
> http://lists.freebsd.org/pipermail/freebsd-bugs/2006-August/019858.html
> >>>>>
> >>>>> o outro eu nao achei mais...
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>> Legal! =) provavelmente esse resolve.. lá nos testes fala em FREEBSD
> 7...
> >>>>
> >>>> Qualquer novidade posta pra gente.
> >>>>
> >>>> Abraço,
> >>>>
> >>>>
> >>>>
> >>>>
> >>> Eu tentei aplicar o patch num freebsd 7.2, mas ele jah nao funciona
> mais.
> >>>
> >>> Bem, virei a madrugada trabalhando num programa que le pacotes do ifpw
> >>> via sockets divert e altera o campo ToS deles para 00, esta funcionando
> >>> aparentemente.
> >>> Se alguém se interessar eu mando ele pra lista com as instrucoes. Mas
> ja
> >>> vou avisando, aprendi usar sockets divert nessa madrugada UHauA e meus
> >>> conhecimentos em raw sockets nao sao os melhores.
> >>>
> >>> abraços!
> >>>
> >>>
> >> -------------------------
> >> Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >>
> >>
> >>
> > Então, é que o programinha que eu fiz eh meio porco sabe UAHuha, preciso
> > fazer ele receber parametros e virar daemon, mas o que eu precisava ele
> > já está fazendo.
> > Quando ele estiver mais esbelto eu faço um artigo.
> >
> >
> Houston we have a problem.
>
> Bem, não sou exímio conhecedor das profundesas do tcp/ip, tive um
> pequeno (grande?) problema. Seguinte, localmente (trafego local) o
> programinha que eu fiz altera o valor do campo ToS dos pacotes e o
> pacote vai embora normal, fiz os teste com uma maquina virtual linux no
> qemu. Dai fazendo um teste num gateway, ele alterava o campo mas o
> pacote nao ia pra frente, só ai fui me atentar para o fato de o checksum
> do pacote ser alterado, implementei alguns algoritmos de calculo de
> checksum que encontrei na net, quando nao ha alteracao no pacote ele
> calcula certo, quando eu mudo o tos o sistema nao aceita o pacote.
>
> A pergunta é a seguinte, é possível alterar o checksum dos pacotes em
> user mode e repassa-los ao kernel de uma maneira que funcione? Ou isso
> só pode ser feito em kernel mode?
>
>
Eh possível sim, você vai ter que faze um divert do pacote para o seu
programa e calcular  o checksum e entrar com o pacote no kernel novamente. A
conta do checksum do IP é fácil (tem até no RFC),  mas a do TCP eh um osso,
principalmente porque tem um tal de "cabeçalho virtual" que  é um nó para
montar. Principalmente porque a ordem dos bytes na rede é contrária a ordem
dos bytes no PC. Ai você tem que ter muito cuidado quando monta as coisas no
PC. Depois disso focê faz a conta. Para mim pessoalmente foi fogo, passei
três noites/madrugadas brigando com esse negocio antes de ficar pronto.


Mais detalhes sobre a lista de discussão freebsd