2008, Edgard Jamhour Exercício QoS Linux Edgard Jamhour
2008, 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. rede 1rede 2 A C ipG1e ipA B ipB empresa provedor 500 Kbps 1000 Kbps G2 G1 ipG1i ipG2e ipG2i ipC G3
2008, Edgard Jamhour Configuração do Cenário AB EMPRESA (eth2) ipA G1G1 Empresa: rede: $EQ.0/24 ipA: $EQ.2/24 ipB: $EQ.3/24 ipG1i: $EQ.1/24 ipB LINK (eth3) ipG1iipG1e G2G2 ipG2eipG2i PROVEDOR (eth0) C ipB Link ipG2e: 10.0.$EQ.1/30 ipG2i: 10.0.$EQ.2/30 Provedor: Rede: /8 ipG2i: $EQ.1/24 ipC: $EQ.2/24
2008, Edgard Jamhour Configuracao de Rede (COMANDOS) #!/bin/bash -x echo “Entre com o número da equipe“ read Equipe #VARIAVEIS ifE=eth2 ifL=eth3 ifP=eth0 #EMPRESA RE= $Equipe.0/24 ipA= $Equipe.2/24 ipB= $Equipe.3/24 ipG1i= $Equipe.1 #LINK ipG1e=10.0.$Equipe.1 ipG2e=10.0.$Equipe.2 #PROVEDOR ipG2i=20.33.$Equipe.1 ipC=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" exit fi >> chmod +x confrede.sh >> confrede.sh 1
2008, Edgard Jamhour 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 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 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 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 UPLOADtráfego de DOWLOAD policiamento Classe PRIO 2 Marcar AF12 (D)/AF 22(U) Classe PRIO 1 Marcar AF11(D)/AF21 (U) DESCARTAR 0 kbs 1000 kbps capacidade do link $ifL$ifP 500 kbs
2008, Edgard Jamhour Regras 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 X drop tráfego download tráfego excedente Transmite como AF11 Transmite como AF12
2008, Edgard Jamhour Regras 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 X drop tráfego upload tráfego excedente Transmite como AF21 Transmite como AF22
2008, Edgard Jamhour Script para o Provedor (Download) #!/bin/bash -x echo "Entre com o Numero da Equipe" read Equipe #VARIAVEIS ifE=eth2 ifL=eth3 ifP=eth0 #EMPRESA RE= $Equipe.0/24 ipA= $Equipe.2 ipB= $Equipe.3 #Limpa a configuração anterior tc qdisc del root dev $ifL
2008, Edgard Jamhour 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 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 Empresa A empresa deseja controlar o aproveitamento do seu link, criando uma árvore HTB com as seguintes características. LINK 1000 Kbps TCP 300 Kbps 1000 Kbps UDP 100 Kbps 400 Kbps Default 100 Kbps 400 Kbps E Kbps 800 Kbps E Kbps 200 Kbps class 1:1 class 1:111 class 1:12class 1:13class 1:11 class 1:112
2008, Edgard Jamhour Exemplo de Script para a Empresa (UpLoad) #!/bin/bash -x echo "Entre com o Numero da Equipe" read Equipe #VARIAVEIS ifE=eth2 ifL=eth3 ifP=eth0 #EMPRESA RE= $Equipe.0/24 ipA= $Equipe.2/24 ipB= $Equipe.3/24 ipG1i= $Equipe.1 # 0 - Limpa a configuracao anterior tc qdisc del root dev $ifL
2008, Edgard Jamhour 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 TCP tc class add dev $ifL parent 1:0 classid 1:11 htb rate 300kbit ceil 1000kbit tc class add dev $ifL parent 1:0 classid 1:111 htb rate 200kbit ceil 800kbit tc class add dev $ifL parent 1:0 classid 1:112 htb rate 100kbit ceil 200kbit # classe para UDP tc 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 10 tc qdisc add dev $ifL parent 1:112 handle 3:0 pfifo limit 10 tc qdisc add dev $ifL parent 1:12 handle 4:0 pfifo limit 10 tc qdisc add dev $ifL parent 1:13 handle 5:0 pfifo limit 10
2008, Edgard Jamhour Exemplo de Script para a Empresa (UpLoad) # 4 - Cria os filtros #filtro para TCP no computador A tc 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 B tc 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 UDP tc 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áfego tc filter add dev $ifL parent 1:0 protocol ip prio 3 u32 \ match ip protocol 0x0 0x0 \ flowid 1:13
2008, Edgard Jamhour PARTE 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 adicionais Reinicializar a configuração de rede service network restart Apagar rotas acumuladas read rota route -n | grep $rota if [ $? eq 0 ]; then route del $rota fi