Exercício QoS Linux
-
Upload
cairo-hicks -
Category
Documents
-
view
11 -
download
0
description
Transcript of Exercício QoS Linux
2008, Edgard Jamhour
ExercícioExercícioQoS LinuxQoS Linux
Edgard Jamhour
2008, Edgard Jamhour
CenárioCenário
• Uma empresa tem um SLA com o provedor, definindo um link com 500 Kbps garantindo, com rajadas eventuais de 1000 Kbps.
rede 1 rede 2
AC
ipG1eipA
B ipB
empresa provedor
500 Kbps1000 Kbps
G2G1
ipG1i
ipG2e
ipG2i
ipC
G3
2008, Edgard Jamhour
Configuração do CenárioConfiguração do Cenário
A B
EMPRESA (eth2)
ipA
G1
Empresa:
rede: 192.168.$EQ.0/24 ipA: 192.168.$EQ.2/24 ipB: 192.168.$EQ.3/24 ipG1i: 192.168.$EQ.1/24
ipB
LINK (eth3)
ipG1i ipG1e
G2
ipG2e ipG2i
PROVEDOR (eth0)
C
ipB
Link
ipG2e: 10.0.$EQ.1/30ipG2i: 10.0.$EQ.2/30
Provedor:
Rede: 20.0.0.0/8ipG2i: 20.10.$EQ.1/24ipC: 20.10.$EQ.2/24
2008, Edgard Jamhour
Configuracao de Rede (COMANDOS)Configuracao de Rede (COMANDOS)
#!/bin/bash -x
echo “Entre com o número da equipe“read Equipe
#VARIAVEISifE=eth2ifL=eth3ifP=eth0
#EMPRESARE=192.168.$Equipe.0/24ipA=192.168.$Equipe.2/24ipB=192.168.$Equipe.3/24ipG1i=192.168.$Equipe.1
#LINKipG1e=10.0.$Equipe.1ipG2e=10.0.$Equipe.2
#PROVEDORipG2i=20.33.$Equipe.1ipC=20.33.$Equipe.2/8
if [ $# -eq 0 ]; then echo "Digite a opcao apos o script" echo "1=A, 2=B, 3=G1, 4=G2, 5=C" exitfi
>> chmod +x confrede.sh>> confrede.sh 1
2008, Edgard Jamhour
Configuracao de Rede (COMANDOS)Configuracao de Rede (COMANDOS)
if [ $1 -eq 1 ]; then
echo "Configurando o host A" ifconfig $ifE $ipA route add default gw $ipG1i
elif [ $1 -eq 2 ]; then
echo "Configurando o host B" ifconfig $ifE $ipB route add default gw $ipG1i
elif [ $1 -eq 3 ]; then
echo "Configurando G1" ifconfig $ifE $ipG1i/24 ifconfig $ifL $ipG1e/30 route add default gw $ipG2e sysctl -w net.ipv4.ip_forward=1
elif [ $1 -eq 4 ]; then echo "Configurando G2" ifconfig $ifE $ipG2e/30 ifconfig $ifP $ipG2i/8 route add default gw 20.0.0.1 route add -net $RE gw $ipG1e sysctl -w net.ipv4.ip_forward=1
elif [ $1 -eq 5 ]; then echo "Configurando C" ifconfig $ifP $ipC route add -net $RE gw $ipG2i
else echo "Opcao Invalida"fi
2008, Edgard Jamhour
PARTE 1PARTE 1
• 1) Crie o cenário de rede conforme indicado
• 2) Verifique se existe conectividade entre os hosts A e C
• 3) Verifique se existe conectividade entre os hosts B e C
2008, Edgard Jamhour
Regras para o ProvedorRegras para o Provedor
• O provedor irá aplicar as regras de policiamento para o tráfego recebido ou destinado a empresa, de modo a garantir que o tráfego não será excedido.
G2
tráfego de UPLOAD tráfego de DOWLOAD
policiamento policiamento
Classe PRIO 2Marcar AF12 (D)/AF 22(U)
Classe PRIO 1Marcar AF11(D)/AF21 (U)
DESCARTAR
0 kbs
1000 kbps
capacidade do link
$ifL $ifP
500 kbs
2008, Edgard Jamhour
Regras para DownLoadRegras para DownLoad
• Token Bucket 1:– taxa média até 500Kbps = 62.5Kbytes/s– Balde de 62.5Kbytes (suporta uma rajada de 1Mbps por um 1s)
• Token Bucket 2:– Taxa média de 500Kbps a 1000Kbps
balde 1(62,5kbytes)
rate 500 kbps
balde 2(62,5kbytes)
rate 500 kbps
Xdrop
tráfego download
tráfego excedente
Transmite como AF11 Transmite como AF12
2008, Edgard Jamhour
Regras para UpLoadRegras para UpLoad
• Token Bucket 1:– taxa média até 500Kbps = 62.5Kbytes/s– balde: 62.5Kbytes (suporta uma rajada de 1Mbps por um 1s)
• Token Bucket 2:– Taxa média de 500Kbps a 1000Kbps
balde 1(62,5kbytes)
rate 500 kbps
balde 2(62,5kbytes)
rate 500 kbps
Xdrop
tráfego upload
tráfego excedente
Transmite como AF21 Transmite como AF22
2008, Edgard Jamhour
Script para o Provedor (Download)Script para o Provedor (Download)
#!/bin/bash -x
echo "Entre com o Numero da Equipe"read Equipe
#VARIAVEIS
ifE=eth2ifL=eth3ifP=eth0
#EMPRESA
RE=192.168.$Equipe.0/24ipA=192.168.$Equipe.2ipB=192.168.$Equipe.3
#Limpa a configuração anteriortc qdisc del root dev $ifL
2008, Edgard Jamhour
Script para o Provedor (Download)Script para o Provedor (Download)
#cria as classes 1:1, 1:2, 1:3 e 1:4
tc qdisc add dev $ifL root handle 1:0 dsmark indices 4
# confira a classe 1:1 para marcar AF11
tc class change dev $ifL classid 1:1 dsmark mask 0x0 value 0x28
# confira a classe 1:1 para marcar AF12
tc class change dev $ifL classid 1:2 dsmark mask 0x0 value 0x30
# cria os filtros com policiamento
tc filter add dev $ifL parent 1:0 protocol ip prio 1 u32 \ match ip dst $RE \ police rate 500kbit burst 62.5k continue flowid 1:1
tc filter add dev $ifL parent 1:0 protocol ip prio 2 u32 \ match ip dst $RE \ police rate 500kbit burst 62.5k drop flowid 1:2
2008, Edgard Jamhour
PARTE 2PARTE 2
• 1) Crie um script para fazer o controle de upload, fazendo as marcações AF21 e AF22
• 2) Configure os scripts de donwload e upload no roteador G2
• 3) Efetue um download de A para C, e verifique o efeito da marcação dos pacotes com o TCP dump ( A captura dos pacotes precisa se iniciada antes do download)
– tcpdump –i $ifL –vv > provdown.txt– tcpdump –i $ifP –vv > provup.txt
• 4) Verifique as estatísticas geradas pelo roteador ( As estatísicas devem ser tomadas após o término do download)
– tc –s show filters dev $ifL > sprovup.txt– tc –s show filters dev $ifP > sprovdown.txt
• 4) Entregar todos os arquivos txt gerados no passo 3 e 4 (entrega por equipe)
2008, Edgard Jamhour
Regras para a EmpresaRegras para a Empresa
• A empresa deseja controlar o aproveitamento do seu link, criando uma árvore HTB com as seguintes características.
LINK1000 Kbps
TCP300 Kbps
1000 Kbps
UDP100 Kbps400 Kbps
Default100 Kbps400 Kbps
192.168.E.2200 Kbps800 Kbps
192.168.E.3100 Kbps200 Kbps
class 1:1
class 1:111
class 1:12 class 1:13class 1:11
class 1:112
2008, Edgard Jamhour
Exemplo de Script para a Empresa (UpLoad)Exemplo de Script para a Empresa (UpLoad)
#!/bin/bash -x
echo "Entre com o Numero da Equipe"read Equipe
#VARIAVEISifE=eth2ifL=eth3ifP=eth0
#EMPRESARE=192.168.$Equipe.0/24ipA=192.168.$Equipe.2/24ipB=192.168.$Equipe.3/24ipG1i=192.168.$Equipe.1
# 0 - Limpa a configuracao anterior
tc qdisc del root dev $ifL
2008, Edgard Jamhour
Exemplo de Script para a Empresa (UpLoad)Exemplo de Script para a Empresa (UpLoad)
# 1 - Cria a qdisc principal
tc qdisc add dev $ifL root handle 1:0 htb
#2 - Crias as classes
tc class add dev $ifL parent 1:0 classid 1:1 htb rate 1Mbit
# classe para TCPtc class add dev $ifL parent 1:0 classid 1:11 htb rate 300kbit ceil 1000kbittc class add dev $ifL parent 1:0 classid 1:111 htb rate 200kbit ceil 800kbittc class add dev $ifL parent 1:0 classid 1:112 htb rate 100kbit ceil 200kbit
# classe para UDPtc class add dev $ifL parent 1:0 classid 1:12 htb rate 100kbit ceil 400kbit
# 3 - Cria as qdiscs para as classes filhas
tc qdisc add dev $ifL parent 1:111 handle 2:0 pfifo limit 10tc qdisc add dev $ifL parent 1:112 handle 3:0 pfifo limit 10tc qdisc add dev $ifL parent 1:12 handle 4:0 pfifo limit 10tc qdisc add dev $ifL parent 1:13 handle 5:0 pfifo limit 10
2008, Edgard Jamhour
Exemplo de Script para a Empresa (UpLoad)Exemplo de Script para a Empresa (UpLoad)
# 4 - Cria os filtros
#filtro para TCP no computador Atc filter add dev $ifL parent 1:0 protocol ip prio 1 u32 \ match ip protocol 0x06 0xff \ match ip src $ipA \ flowid 1:111
#filtro para TCP no computador Btc filter add dev $ifL parent 1:0 protocol ip prio 1 u32 \ match ip protocol 0x06 0xff \ match ip src $ipB \ flowid 1:112
#filtro para UDPtc filter add dev $ifL parent 1:0 protocol ip prio 2 u32 \ match ip protocol 0x11 0xff \ flowid 1:12
#filtro para outros tipos de tráfegotc filter add dev $ifL parent 1:0 protocol ip prio 3 u32 \ match ip protocol 0x0 0x0 \ flowid 1:13
2008, Edgard Jamhour
PARTE 3PARTE 3
• 1) Crie um script para fazer o controle de download
• 2) Configure os scripts no roteador da empresa (G1)
• 3) Efetue um download de C para A e verifique as estatísticas geradas pelo roteador ( As estatísticas devem ser tomadas após o término do download)
– tc –s show filters dev $ifL > sempup.txt– tc –s show filters dev $ifE > sempdown.txt
• 4) Efetue um download de C para B e verifique as estatísticas geradas pelo roteador ( As estatísicas devem ser tomadas após o término do download)
– tc –s show filters dev $ifL > sempup.txt– tc –s show filters dev $ifE > sempdown.txt
• 4) Entregar todos os arquivos txt gerados nos passos 3 e 4 (entrega por equipe)
2008, Edgard Jamhour
Comandos adicionaisComandos adicionais
• Reinicializar a configuração de redeservice network restart
• Apagar rotas acumuladasread rota
route -n | grep $rota
if [ $? eq 0 ]; then
route del $rota
fi