Controle de banda com o Wondershaper
CAPA
A fila anda
A modelagem de tráfego auxilia na otimização da largura
da banda e mantém o fluxo de dados. O Wondershaper
disponibiliza essa complexa tecnologia a usuários normais.
por Christoph Langner
E
m qualquer rede, quando
vários usuários dependem da
mesma conexão à Internet,
um grande número de uploads pode
afetar seriamente a velocidade de
download. Imagine alguém fazendo
upload de toda sua coleção de fotos
das férias ou executando um cliente
peer-to-peer como o eDonkey ou o
BitTorrent. Todo esse upload compromete a diversão dos demais usuários
que desejam simplesmente navegar
na Web. A prática do traffic shaping
consiste justamente em “moldar” o
tráfego de forma a alocar para cada
conexão a banda necessária, ao mesmo tempo evitando que uma única
conexão (ou protocolo, ou cliente)
torne toda a comunicação por rede
desagradável nessa rede. O Wondershaper [1] é o software de traffic shaping que será explorado neste artigo.
Muitos pacotes de serviço de Internet oferecem taxas de upload mais
lentas que as de download. As linhas
ADSL, por exemplo, têm taxas de
upload de dados entre dez e 20 vezes mais lentas que as de download.
Em muitos ambientes, essa assimetria da taxa de transmissão de dados
não é um problema, pois a maioria
dos usuários faz mais downloads que
uploads. Porém, se o canal de upload
ficar muito tempo sobrecarregado, o
de download também sofrerá.
Para compreender o porquê disso
tudo, é importante saber como fun-
Linux Magazine #63 | Fevereiro de 2010
ciona o Protocolo de Controle de
Transmissão (TCP – Transmission
Control Protocol). O TCP precisa
que o recebedor de um pacote de
dados confirme que esse pacote chegou em bom estado, e a fonte não
envia o próximo pacote até receber
essa confirmação. Quando o canal
de upload está sobrecarregado, o
pacote SYN/ACK precisa ficar esperando na fila de pacotes para ser
transmitido. Isso impede que a fonte envie mais pacotes de dados até
que o pacote SYN/ACK tenha sido
transmitido e recebido.
O traffic shaping [2] manipula a
ordem de envio dos pacotes de dados.
A maioria das distribuições Linux
tem as ferramentas necessárias na
forma de um programa de espaço
de usuário chamado Tc (do inglês
traffic control – controle de tráfego).
Infelizmente, o Tc é tão complexo
que é necessário escrever um script
para dividir o tráfego da rede em
classes e configurar prioridades individuais. O Wondershaper [1] reduz
substancialmente a complexidade
do traffic shaping.
O script do Wondershaper atribui
classes ao tráfego de rede, dando preferência a pacotes de dados de aplicativos interativos, como VoIP ou TV
via Internet. Ao priorizar o tráfego
de acordo com a classe, o Wondershaper evita atrasos que seriam vistos
pelos usuários como interferências
nas comunicações por voz ou imagens. Se a linha estiver ocupada, o
Wondershaper envia os pacotes que
podem esperar para ser transmitidos
– tais como transferências de arqui-
Quadro 1: Opções
O Wondershaper possui várias opções de configuração para ajustar o fluxo
de tráfego:
NOPRIOHOSTSRC: atribui baixa prioridade aos pacotes vindos de determinadas máquinas ou máscaras de rede da LAN;
NOPRIOHOSTDST: atribui baixa prioridade aos pacotes destinados a máquinas
ou máscaras de rede da Internet;
NOPRIOPORTSRC: atribui baixa prioridade aos pacotes vindos de certas portas de rede;
NOPRIOPORTDST: atribui baixa prioridade aos pacotes destinados a certas
portas de máquinas na Internet.
Confira a documentação no site do Wondershaper para mais informações
sobre as opções de ajuste de tráfego em sua rede.
37
CAPA | Wondershaper
Logicamente, o
Wondershaper é um
01 $ route -n
script que opera em um
02 Tabela de Roteamento IP do Kernel
sistema Linux. O ce03 Destino
Roteador
MáscaraGen.
Opções Métrica Ref Uso Iface
04 88.66.0.1
0.0.0.0
255.255.255.255 UH
202
0
0 ppp0
nário mais comum é
05 192.168.0.0 0.0.0.0
255.255,255,0
U
0
0
0 eth0
empregar o Wondersha06 169,254,0,0 0,0,0,0
255,255,0,0
UG
202
0
0 eth0
per em uma máquina
07 0,0,0,0
0,0,0,0
0.0.0.0
UG
202
0
0 eth0
Linux operando como
08
09 $ ping 88.66.0.1
roteador e firewall, co10 PING 88.66.0.1 (88.66.0.1) 56(84) bytes of data.
nectada a uma pequena
11 64 bytes from 88.66.0.1: icmp_seq=1 ttl=255 time=594 ms
rede com uma linha
12 [...]
dedicada de Internet.
Além disso, o Wondervos por FTP – para o fim da fila. Os rede do provedor, quase sempre estão shaper pode ser usado em um dispoengenheiros de rede chamam isso de fora do alcance dos usuários. O Won- sitivo como o Linksys WRT54GL [3]
“qualidade de serviço” ou QoS (do dershaper elimina o problema de falta com um firmware alternativo como
de acesso à fila de upload operando o OpenWrt [4] ou o DD-WRT [5].
inglês “quality of service”).
apenas na taxa de transferência de dados disponível. Se o fluxo de pacotes
Os provedores de acesso à Internet permanecer abaixo da taxa fornecida Para iniciar o Wondershaper, baixe
tentam otimizar seus serviços com pelo provedor, a fila não irá aumen- o pacote disponível na página do
downloads rápidos e usam grandes tar no equipamento do provedor e, projeto [1] e descompacte-o em um
filas de upload e download para me- essencialmente, irá do roteador do diretório à sua escolha. O Wonderlhorar a segurança e reduzir a perda provedor para o seu roteador, onde shaper é um script, portanto, não
de pacotes. Segundo a documenta- você tem um controle maior.
precisa de instalação.
ção do Wondershaper, “Essas longas
No arquivo Readme que vem junto
Antes de começar a configuração,
filas (...) prejudicam a interatividade. com o script Wondershaper, o desen- verifique o tempo de resposta do ping
Um comando deve, primeiro, seguir volvedor Bert Hubert diz que a tarefa para verificar se as configurações do
pela fila upstream, que pode ter uma de gerenciar a velocidade de down- Wondershaper estão surtindo efeito.
duração de segundos, e chegar a load “...é um tanto complicada, pois O teste somente trará bons resultados
seu destino remoto. Depois, ele é não se pode realmente influenciar a quando o nível máximo de tráfego de
recebido, o que resulta na entrega velocidade com que a Internet nos upload for atingido; para provocar esta
de um pacote que enfrentará a fila envia dados. No entanto, podemos situação, faça upload de um arquivo
downstream, localizada no provedor, descartar pacotes que estejam vindo grande para seu servidor ou envie um
antes de chegar a seu computador”. muito rapidamente, o que gera uma email com um arquivo anexo bem
A chave para moldar e priorizar diminuição da velocidade do TCP/ pesado. Enquanto isso, envie pings
tráfego de rede é ter certo controle IP para a taxa que desejamos. Como para seu gateway e monitore o temsobre as filas de upload e download, não queremos descartar tráfego des- po de resposta (listagem 1). O IP do
mas, como essas filas se localizam na necessariamente, configuramos um gateway e a interface de rede usada
tamanho de “rajada” para altas velo- para acessar a Internet são facilmente
cidades. Depois que isso é feito, a fila obtidos com o comando route -n.
downstream é totalmente eliminada
Um tempo de resposta de 10
(exceto para rajadas curtas)...”.
milissegundos é comum quando
Com essas técnicas, o Wonder- a linha está livre, porém, o tempo
shaper é capaz de:
aumentará para 500 ms se o canal
controlar a prioridade de pacotes de upload estiver ocupado. Págiupstream ao assumir a respon- nas web levarão mais tempo para
sabilidade pela fila e
atualizar e o VoIP ficará impraticá limitar a velocidade de down- vel. Ao habilitar o Wondershaper,
load para otimizar a porção de certifique-se de usar o dispositivo de
Figura 1O Wondershaper auxilia a velocidade de download a enfrentar um
recursos do sistema alocada para rede correto (ppp0, eth0 ou outro).
upload.
download e upload.
Os exemplos deste artigo utilizam
Listagem 1: route e ping
Como funciona
38
Primeiros passos
http://www.linuxmagazine.com.br
Wondershaper | CAPA
a interface ppp0. O script é iniciado
com o seguinte comando:
$ sudo wondershaper interface
download upload
As taxas de transferência são especificadas em kilobits por segundo
(kbps). Então, para usar a interface
ppp0 num link com taxa de download
de 2 Mbps e taxa de upload de 500
kbps, o comando seria:
$ sudo wondershaper ppp0 2000 500
Em seguida, teste o ping outra vez.
Caso o tempo de ping não melhore,
reduza novamente o valor do upload até que o tempo de resposta seja
aceitável. Nos nossos testes com um
link de 16 Mbps, as configurações
começaram a funcionar com 15000
Kbps de download e 600 Kbps de
upload (listagem 2). Com essa configuração, conseguimos navegar pela
Web apesar do canal de upload estar
sobrecarregado.
Início automático
Para informar o Wondershaper que
ele deve iniciar automaticamente
quando uma conexão DSL for estabelecida, é necessário adicionar o
seguinte comando ao arquivo /etc/
ppp/ip-up.local:
# Set Wondershaper
wondershaper ppp0 15000 600
Listagem 2: Em busca do equilíbrio
01
02
03
04
05
06
07
08
09
10
$ sudo wondershaper ppp0 15000 900
$ ping 88.66.0.1
PING 88.66.0.1 (88.66.0.1) 56(84) bytes of data.
64 bytes from 88.66.0.1: icmp_seq=2 ttl=255 time=520 ms
[...]
$ sudo wondershaper ppp0 15000 600
$ ping 88.66.0.1
PING 88.66.0.1 (88.66.0.1) 56(84) bytes of data.
64 bytes from 88.66.0.1: icmp_seq=1 ttl=255 time=7.25 ms
[...]
Listagem 3: Arquivo /etc/network/interfaces
01
02
03
04
05
# Interface de rede primária
auto eth0
iface eth0 inet dhcp
up /sbin/wondershaper eth0 15000 600
down /sbin/wondershaper clear eth0
Speedtest.net [6]. No cenário do nosso
teste, os downloads eram impossíveis
antes de realizar traffic shaping; apesar
da linha de 16 Mbps, a velocidade de
download caía para 0,28 Mbps. Depois
que o Wondershaper foi iniciado, o
valor saltou para 7,50 Mbps (figura 1).
Mesmo quando a linha estava livre, a
velocidade de download aumentou
ligeiramente, apenas diminuindo um
pouco a velocidade de upload.
Conclusões
Não se deve acreditar que o Wondershaper vai fazer milagres e liberar um
canal de upload sobrecarregado, mas
ele é eficiente e evita que uploads
afetem a velocidade de download.
Essa capacidade faz do Wondershaper uma ferramenta extremamente
útil para qualquer ambiente onde
muitos usuários compartilham uma
conexão à Internet. n
Mais informações
[1]Wondershaper: http://lartc.org/wondershaper/
[2]Traffic shaping na Wikipédia:
http://pt.wikipedia.org/wiki/Traffic_shaping
[3]Linksys WT54GL:
http://www.linksysbycisco.com/LATAM/pt/products/WRT54GL
Outra maneira de fazer isso é
modificar o arquivo /etc/network/
interfaces, usando os comandos up
e down para iniciar o Wondershaper.
Na listagem 3, o script manipula a
largura da banda para a interface eth0.
Veja o arquivo Readme e a página de
manual para mais dicas.
Gostou do artigo?
Eficácia
Queremos ouvir sua opinião. Fale conosco em
[email protected]
Para testar se os seus controles de largura de banda são eficazes, faça um
teste rápido como o oferecido pelo site
Linux Magazine #63 | Fevereiro de 2010
[4]OpenWrt: http://openwrt.org
[5]DD-WRT: http://www.dd-wrt.com/dd-wrtv3/index.php
[6]Speed test: http://speedtest.net
Este artigo no nosso site:
http://lnm.com.br/article/3290
39
Download

A fila anda