Priorização e Reserva de banda

Marconi Pereira marconipp at hotmail.com
Fri Aug 3 11:11:55 -03 2007


Amigos,

já vi que aqui eu posso conseguir uma ajuda de alto nível.

Possuo um link de 28Mb via Embratel que entra num Tellabs EdgeNode 6310. 
Dele, vai por fast ethernet prum openBSD que funciona basicamente como um 
router. Eu antes tinha um router Cisco com priority-queue ligado e que 
resolvia todos os meus problemas de priorização de pacotes. Mas, como fiz 
upgrade de banda e não tinha dinheiro para acompanhar com um router mais 
potente, optou-se por um unix.
Nossa característica de tráfego é SMTP. Nós enviamos toneladas e toneladas 
de email por dia. São gigas e gigas por dia. O inbound é pífio, não tenho 
problema com download, meu problema tá no upload. A primeira coisa que eu 
queria entender é por que o overhead de SMTP é alto? Até agora eu não achei 
nenhuma explicação clara para isso. Todo mundo fala mas ninguém explica.

Além disso, tenho vários webservers e também temos a nossa navegação interna 
e emails administrativos. Nosso problema atual é justamente esse: nós damos 
DoS em nós mesmos. Quando sai email a rodo, a nossa indisponibilidade fica 
terrível.

Foi contratada, então, essa consultoria que socou esse unix com PF e ALTQ. 
Eu não saco absolutamente nada de mundo unix e fico meio perdido, portanto, 
recorro aos gurus daqui para lançar um pouco de luz nas trevas.
A priori, eu queria que esse bicho funcionasse como um cisco no 
priority-queue, mas o bicho não se comportou como um cisco. A priorização do 
cisco era absurda, a gente não tinha indisponibilidade. Ele simplesmente 
enfileirava os pacotes com mais alta prioridade mesmo com o link no talo e 
tudo funcionava perfeitamente. A idéia básica é: o link tá ocioso? pode 
arrebentar, pode consumir tudo o que quiser em SMTP. Se houver algum outro 
uso diferente de SMTP, ultrapassa na frente, não importa o que seja nem qual 
o tamanho. Era isso que o Cisco fazia.

A config mais próxima que melhorou um pouquinho a nossa indisponibilidade 
aqui foi com CBQ (reserva de banda). O cara tentou de todas as formas 
implementar priority-queue cisco like (inclusive vendeu isso) mas, no final, 
entubamos.

Essa é a config de priority-queue que não funciona a contento nem por um 
decreto. Se vocês puderem dar uma olhada e ver o que tem de errado nesse 
troço, agradeço muito! (Eu observo que a aplicação dessa filtragem é feita 
na interface WAN que é 100Mbps, mas o link tem 28Mbps. Esse troço não tá 
inundando o Tellabs?)


# Variaveis (Macros)

# Informacoes da Interface Wan
wif="fxp0"
wip="200.255.248.10"
wmask="255.255.255.252"

# Interface Lan
eif="xl0"
eip="200.214.72.222"
enmask="255.255.255.224"

allproto ="{ tcp, udp, gre }"

netbios = "{ 135, 137, 138, 139, 445 }"
# Definicao de tables


altaprioridade = "{ 200.214.72.249, 200.214.72.239, 200.214.72.237, 
200.214.72.131, 200.214.72.227 }"
mediaalta = "{ 200.214.72.245, \
200.244.55.194, 200.214.72.230, \
200.244.121.203, 200.244.55.198, 200.214.72.227, \
200.244.55.197, 200.244.55.199, 200.244.121.250, 200.244.121.201, \
200.214.72.252 }"

mediaprioridade = "{ 200.244.121.0/28 }"

table <rfc1918> { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 }

office = "{ 200.244.121.0/24, 200.214.72.128/25, 200.244.55.192/26 }"

smtp_proto = "{ 200.244.121.211, 200.244.121.212, 200.244.121.213, \
200.244.121.214, 200.244.121.215, 200.244.121.216, 200.244.121.217, \
200.244.121.218, 200.244.121.219 }"
# Definicao do sistema de QoS (Altq)

altq on $wif priq bandwidth 100Mb queue { altpri medaltpri medpri baxpri }
queue altpri priority 14 qlimit 100 priq(default)
queue medaltpri priority 5 priq(red)
queue medpri priority 4 priq(red)
queue baxpri priority 3 qlimit 2 priq(red)

block in quick log on $wif proto tcp from any to $office port 1433 flags 
S/SA label "BloqueiodeAcessoaoMSSQL"
block in quick log on $wif proto udp from any to $office port 1433 label 
"BloqueiodeAcessoaoMSSQL"
block in quick log on $wif proto tcp from any to $office port 1434 flags 
S/SA label "BloqueiodeAcessoaoMSSQL"
block in quick log on $wif proto udp from any to $office port 1434 label 
"BloqueiodeAcessoaoMSSQL"
block in quick log on $wif proto tcp from any to $office port $netbios label 
"BloqueiodeAcessoprotocoloNetbios"
block in quick log on $wif proto udp from any to $office port $netbios label 
"BloqueiodeAcessoprotocoloNetbios"

pass in on $eif proto tcp from any to any port != smtp queue altpri
pass in on $eif proto tcp from 200.214.72.249 to any queue altpri
pass in on $eif proto tcp from 200.244.121.203 to any queue altpri
pass in on $eif proto tcp from any to any port smtp queue baxpri



A config que funciona hoje de forma muito ruim, mas melhor do que o 
priority-queue, é essa que usa CBQ (reserva):

# Variaveis (Macros)

# Informacoes da Interface Wan
wif="fxp0"
wip="200.255.248.10"
wmask="255.255.255.252"

# Interface Lan
eif="xl0"
eip="200.214.72.222"
emask="255.255.255.224"

allproto ="{ tcp, udp, gre }"

netbios = "{ 135, 137, 138, 139, 445 }"
# Definicao de tables

table <altaprioridade> { 200.214.72.249, 200.214.72.239, 200.214.72.237, 
200.214.72.131 }
table <mediaalta>  { 200.214.72.245, \
200.244.55.194, 200.214.72.230, \
200.244.121.203, 200.244.55.198, 200.214.72.227, \
200.244.55.197, 200.244.55.199, 200.244.121.250, 200.244.121.201, \
200.214.72.252 }

table <mediaprioridade> { 200.244.121.0/28 }

table <rfc1918> { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 }

table <unear> { 200.244.121.0/24, 200.214.72.128/25, 200.244.55.192/26 }

table <smtp_proto> { 200.244.121.211, 200.244.121.212, 200.244.121.213, \
200.244.121.214, 200.244.121.215, 200.244.121.216, 200.244.121.217, \
200.244.121.218, 200.244.121.219, 200.244.121.220, 200.244.121.221, \
200.244.121.222, 200.244.121.223, 200.244.121.224, 200.244.121.225, \
200.244.121.226, 200.244.121.227 }

# Definicao do sistema de QoS (Altq)


altq on $wif cbq bandwidth 25000Kb queue { std office smtp_proto }

queue std bandwidth 2500Kb cbq(default) priority 2
queue office bandwidth 5500Kb cbq(borrow) priority 7
queue smtp_proto bandwidth 17000Kb priority 1

# Definicao das regras de filtragem a aplicacao do QoS

antispoof log quick for $wif inet
# block in quick log on $wif proto tcp from any to any flags S/SAFR
block in quick log on $wif proto $allproto from <rfc1918> to any label 
"rfc1918"
block drop in inet6 all

### Aplicacao das regras de QoS

pass in on $eif proto tcp from any to any port != smtp queue office
pass in on $eif from 200.214.72.131 to any queue office
pass in on $eif proto tcp from 200.214.72.249 port smtp queue office
pass in on $eif proto tcp from 200.244.121.203 port smtp queue office
pass in on $eif proto tcp from 200.244.55.194 port smtp queue office
pass in on $eif proto tcp from 200.244.55.197 port smtp queue office
pass in on $eif proto tcp from any to any port smtp queue smtp_proto

block in quick log on $wif proto tcp from any to <office> port 1433 label 
"Bloqueio de Acesso ao MSSQL"
block in quick log on $wif proto udp from any to <office> port 1433 label 
"Bloqueio de Acesso ao MSSQL"

block in quick log on $wif proto tcp from any to <office> port $netbios 
label "Bloqueio de Acesso protocolo Netbios"
block in quick log on $wif proto udp from any to <office> port $netbios 
label "Bloqueio de Acesso protocolo Netbios"


Agradeço a todos que puderem dar uma luz nisso.
Obrigado,
Marconi

_________________________________________________________________
Booking a flight? Know when to buy with airfare predictions on MSN Travel. 
http://travel.msn.com/Articles/aboutfarecast.aspx&ocid=T001MSN25A07001




More information about the gter mailing list