Olá amigos, na minha primeira dica no Viva o
Linux vou mostrar uma forma de fazer controle de banda utilizando o modem
Dlink DSL 2640T. Este modem é muito utilizado por clientes Oi Velox, pois é o que vem com a promoção Oi Wi-fi. Trata-se de um modem com roteador sem fio.
Ao adquirir este modem pesquisei na internet os recursos do mesmo e fiquei bem interessado no controle de banda (Qos), pois a internet em casa é compartilhada com 3 pessoas e às vezes fica impossível navegar por causa dos programas p2p.
Assim que adquiri o modem parti para a configuração. Ele vem com um CD de instalação que faz umas perguntas básicas e configura todo o sistema. Depois de configurado eu fiquei com o seguinte cenário:
1) velocidade de conexão contrata com a OI Velox: 1M
2) máquinas que utilizam a conexão: 3 notebooks com rede Wi-Fi e endereços IP fixos definidos pelo servidor DHCP.
Bom, a idéia do controle de banda era dividir a conexão em partes iguais (340k para cada máquina) de forma que quando a rede estivesse ociosa, fosse possível uma máquina utilizar o limite da conexão.
Depois de perder 2 dias tentando configurar o controle de banda via interface web do modem e não obtendo sucesso, resolvi entrar em contato com o suporte técnico da DLink.
Aí veio a minha decepção: o atendente me informou como controlar banda para as 4 portas ethernet. Falei com ele que já sabia fazer isso com a rede cabeada, mas na verdade o que eu queria era fazer um controle de banda para rede sem fio. A resposta foi curta e grossa:
"Não tem como fazer controle de banda para rede sem fio, o modem não dá suporte"
Decepção total, pois um dos principais motivos da compra deste modem foi o controle de banda, e também em momento algum era informado essa situação de controle de banda apenas para rede cabeada.
Antes de desistir resolvi dar uma estudada no modem e para minha surpresa descobri que ele utiliza uma versão do Linux conhecida como
MontaVista. Aí acendeu aquela luzinha em cima da minha cabeça:
"Se roda o Linux, basta fazer controle de banda como se faz no próprio Linux!"
Aí vem a pergunta:
- Como fazer?
Abaixo a resposta:
1 - acesse o modem via telnet (ao contrário do que os atendentes da Dlink falam, não é necessário acessar via rede cabeada; pode ser via rede sem fio mesmo). No Ubuntu 8.04 abra um terminal e digite: "telnet". No Windows XP clique em iniciar > executar, digite cmd e depois telnet.
2 - digite o (letra Ô) para abrir uma conexão e quando solicitado digite o endereço ip do modem. Para descobrir o endereço ip do modem no Ubuntu 8.04, abra um terminal e digite "ifconfig". Verifique nas opções do adaptador de rede sem fio o gateway, este é o endereço do modem. No Windows XP clique em Iniciar > Executar, digite cmd e ipconfig /all. Verifique nas opções do adaptador de rede sem fio o gateway, este é o endereço do modem.
3 - digite, quando solicitado, o login e a senha. Este login e senha podem variar. Nos modens vendidos pela Oi o login é
TMAR#DLKT20060313 e a senha é
DLKT20060313. Caso esta senha não funcione, verifique no manual do seu modem qual é a senha correta.
4 - depois de acessar o terminal do Linux você já pode configurar normalmente o controle de banda utilizando o TC. Vou dar um exemplo abaixo para a minha rede:
tc qdisc del dev wlan0 root
tc qdisc add dev wlan0 root handle 1: htb
tc qdisc add dev wlan0 parent 1: classid 1:1 rate 340kbit ceil 1024kbit
tc qdisc add dev wlan0 parent 1: classid 1:2 rate 340kbit ceil 1024kbit
tc qdisc add dev wlan0 parent 1: classid 1:3 rate 340kbit ceil 1024kbit
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.1 flowid 1:1
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.2 flowid 1:2
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.3 flowid 1:3
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.1 flowid 1:1
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.2 flowid 1:2
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.3 flowid 1:3
Este script fará o controle de banda conforme descrito acima. Vale lembrar que é necessário configurar o modem para o servidor DHCP definir ips fixos para as 3 máquinas através do mac address.
Outro fato importante é que o controle de banda neste modem não acontece de imediato, então para testar é bom você colocar dois downloads grandes nas máquinas para dar um tempo para o controle entrar em ação.
É isso aí...
Abraços,
Renato
ah, uma dúvida: como eu faria se eu tivesse dois usuários na interface wlan0 e um na eth0? teria como definir regras pra dividir igualitariamente a banda entre os três, mesmo estando em interfaces de rede diferentes?
outra coisa, teria como definir prioridades para protocolos, tipo dar preferência a HTTP em relação aos demais? eu nunca mexi com QoS via HTB, mas acho que seria algo como:
# Cria Sub-classes para Dividir o Uso da Banda de um Usuário "HTTP 50%, Resto 50%"
tc class add dev wlan0 parent 1:1 classid 1:11 htb rate 170kbit ceil 1024kbit
tc class add dev wlan0 parent 1:1 classid 1:12 htb rate 170kbit ceil 1024kbit
# Filtra os Pacotes, aplicando os Rótulos de Protocolo (downstream)
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.1 match ip dport 80 0xffff flowid 1:11
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.1 flowid 1:12
# Filtra os Pacotes, aplicando os Rótulos de Protocolo (upstream)
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.1 match ip sport 80 0xffff flowid 1:11
tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.1 flowid 1:12
OBS.: cheguei a isso lendo o tutorial sobre controle de banda com o HTB em
http://br-linux.org/tutoriais/001794.html , mas nem sei se é isso mesmo... se alguém tiver experiência com HTB, teria como disponibilizar um script para esse fim???