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