Exercício QoS Linux

18
2008, Edgard Jamhour Exercício Exercício QoS Linux QoS Linux Edgard Jamhour

description

Exercício QoS Linux. Edgard Jamhour. Cenário. Uma empresa tem um SLA com o provedor, definindo um link com 500 Kbps garantindo, com rajadas eventuais de 1000 Kbps. provedor. empresa. ipB. B. rede 1. rede 2. G3. ipG2i. ipG1i. G1. G2. C. ipA. A. ipG1e. ipC. ipG2e. 500 Kbps - PowerPoint PPT Presentation

Transcript of Exercício QoS Linux

Page 1: Exercício QoS Linux

2008, Edgard Jamhour

ExercícioExercícioQoS LinuxQoS Linux

Edgard Jamhour

Page 2: Exercício QoS Linux

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

Page 3: Exercício QoS Linux

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

Page 4: Exercício QoS Linux

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

Page 5: Exercício QoS Linux

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

Page 6: Exercício QoS Linux

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

Page 7: Exercício QoS Linux

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

Page 8: Exercício QoS Linux

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

Page 9: Exercício QoS Linux

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

Page 10: Exercício QoS Linux

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

Page 11: Exercício QoS Linux

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

Page 12: Exercício QoS Linux

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)

Page 13: Exercício QoS Linux

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

Page 14: Exercício QoS Linux

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

Page 15: Exercício QoS Linux

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

Page 16: Exercício QoS Linux

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

Page 17: Exercício QoS Linux

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)

Page 18: Exercício QoS Linux

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