Controle de Tráfego em Provedores de Serviço de Internet
Carlos Alexandre Zimmermann
Tereza Cristina M. B. Carvalho
Escola Politécnica da Universidade de São Paulo
Lab. Arquitetura e Redes de Computadores
Escola Politécnica da Universidade de São Paulo
[email protected]
[email protected]
Resumo
Os Provedores de Serviço de Internet estão
sujeitos a volatilidade da demanda e a incerteza da
capacidade de resposta. Estas características da
carga e do sistema tornam difícil a manutenção da
qualidade de serviço em sistemas de alta demanda.
Este trabalho apresenta uma proposta de controle
automático do fluxo de dados para aumento da
eficiência, diminuição dos tempos de resposta e
economia de recursos em sites com resposta
dinâmica.
1. Introdução
A manutenção de qualidade de serviço em
Provedores de Serviço de Internet (ISP - Internet
Service Provider) é um desafio aos profissionais da área
de infraestrutura de tecnologia. Com o aumento da
demanda é importante que os sistemas sejam cada vez
mais eficientes possibilitando qualidade de serviço a
baixo custo. Este estudo foi motivado pela dificuldade
encontrada na análise e controle de desempenho de
ISP’s. Em especial para os sistemas que possuem
necessidades críticas de desempenho.
O trabalho está organizado da seguinte forma. No
próximo capítulo caracterizamos o problema de
desempenho em ISP´s. No capítulo 3, são apresentados
os fundamentos para a solução do problema descrito no
capítulo anterior. No capítulo 4 descrevemos a solução
baseada no controle tráfego. O capítulo 5 é dedicado à
experimentos e a discussão dos resultados.
2. Desempenho em Provedores de Serviço
2.1. Contexto
Apesar da evolução continua da tecnologia dos
sistemas computacionais distribuídos, muitos dos
protocolos utilizados na internet continuam os mesmos
do seu início, basicamente HTTP sobre TCP/IP. O
protocolo HTTP, utilizado na comunicação entre
browser e ISP, inicialmente transportava páginas HTML
estáticas. Mas com o aumento da demanda e surgimento
de novas necessidades acabou sendo empregado na
distribuição não apenas de documentos, mas também de
aplicações.
Percebe-se que a construção de páginas dinâmicas
aumentou a complexidade do ISP. E, portanto, aumentou
a complexidade da análise e do controle de desempenho
do sistema. Existem algumas tentativas de análise e
controle com elementos entre os servidores da rede
interna. No entanto, essas soluções não são genéricas,
uma vez que os servidores de aplicações e as bases de
dados não possuem padrão definido. Cada sistema
propõe a sua solução, que pode ser uma mistura de
tecnologias, inviabilizando a análise de forma genérica.
Este estudo propõe uma solução genérica, para análise e
controle das métricas de desempenho do ISP, através
dos Servidores HTTP. Estes servidores estão presentes
em qualquer site, os mais comuns: Apache Server (67%
do mercado [18]), Microsoft IIS (21%) e Netscape
Enterprise (3%).
Estes servidores possuem
funcionalidades e interface similar além de
comunicação padronizada.
Nestes sistemas verifica-se alternância de momentos
de sobrecarga e de abundância de recursos. Portanto,
existe campo para a otimização dos processos
envolvidos. O desafio está em analisar e controlar
sistemas com variação abruptas na oferta e demanda de
serviço. Estas variações ocorrem devido a diversos
fatores do sistema e da carga que são de difícil
modelagem.
2.2. Servidores HTTP
O Servidor HTTP (SH) é a porta de entrada de um
ISP. As requisições são tratadas de acordo com o tipo
de documento. Documentos estáticos, como páginas
HTML e imagens, são simplesmente recuperados do
disco rígido e enviados ao requisitante. Caso seja uma
chamada a um serviço a página deverá ser construída de
forma dinâmica. Existem inúmeras formas de
tratamento do conteúdo dinâmico. Em sistemas de alto
desempenho, esta tarefa é repassada a servidores de
aplicações
e
bases
de
dados
dedicados.
Independentemente de como estes servidores são
requisitados, há uma latência. Este tempo de reposta é a
métrica que utilizaremos para determina a qualidade de
serviço do ISP.
Um dos problemas em relação à análise de
desempenho deste tipo de sistema é a dificuldade em se
determinar, quantitativamente e qualitativamente, os
parâmetros que afetam o desempenho do sistema. Sem
esta análise fica difícil determinar de forma criteriosa a
quantidade de recursos necessários para a obtenção de
um determinado tempo de resposta.
Observa-se, no entanto, que a definição do parâmetro
a ser controlado é outro problema. Nos trabalhos
estudados os parâmetros de controle e as técnicas de
monitoração e atuação não são genéricos. Resolvendose o problema de apenas um determinado tipo de SH em
determinas plataformas.
Os sistemas também carecem de controles globais.
Ao invés disso o que existe são controles atuando
individualmente em cada camada de rede. O protocolo
TCP, por exemplo, apesar de possuir controle de fluxo
e congestionamento não possui inteligência global. Ou
seja, um controle que a partir do conhecimento do
comportamento do sistema tente evitar o
congestionamento. Desta forma os roteadores precisam
de mais memória para seus buffers e os enlaces físicos
sofrem sobrecargas que poderiam ser minimizadas. Há,
portanto, um desbalanceamento entre a capacidade de
oferta do sistema e da rede com a demanda gerada pelos
usuários. Em sistemas de alta demanda esta falta de
equilíbrio causa significativo desperdício de recursos.
O ponto de equilíbrio dificilmente será alcançado, mas
pode ser perseguido se o sistema for controlado com
inteligência global.
2.3. Trabalhos Relacionados
A teoria de filas desenvolveu um ferramental
matemático muito poderoso para a análise de processos
distribuídos [1]. Contudo a maioria dos conceitos parte
do principio que os processos e a carga são
Markovianos. Ou seja, tempos de chegada com
distribuição Poisson e tempos de serviço com
distribuição Exponencial. Estas características de filas
M/M/1 não ocorrem em sistemas de internet. Estes são
mais parecidos com sistemas G/G/n, sem distribuição
específica, que limitam o estudo de forma analítica e
forçam a simulação e a prototipação [2-4].
Alguns trabalhos recentes fixam o tempo de resposta
e controlam a alocação de recursos para o SH. Em [6,7]
são propostos modelos preditores com malha de
controle feedfoward. Nestes trabalhos, foram
encontradas dificuldades na determinação das taxas de
chegada e de serviço que podem variar abruptamente.
Mas a principal limitação é a forma de controle dos
recursos de um servidor. No caso deles, o teste foi
realizado em um servidor Apache, controlando-se a
quota de processamento. Mas esse é um caso
específico, em outros SH´s e plataformas não é possível
controlar a quota de processamento de forma
determinística. Uma técnica interessante e que foi o
caminho adotado neste trabalho é o controle da outra
ponta, ou seja, da taxa de chegada de requisições e da
disciplina de serviço através de algoritmos de
agendamento. O EDF (Earliest Deadline First)
apresentado em [5] propõe um algoritmo para o regime
de fila em que o elemento mais próximo do limite de
tempo de resposta teórico é disparado. Em [8] a variante
PSCED (Packet Scheduled Control Earliest Deadline
First) discute a discretização do EDF.
3. Fundamentos Teóricos
Nesta seção são abordados tópicos que são os
fundamentos matemáticos e conceituais para a proposta
de controle de tráfego. A abordagem foca o que é
utilizado nos próximos capítulos. Não há a intensão de
se aprofundar nestes temas. As provas matemáticas
podem ser encontradas em [8] e [9].
3.1. Álgebra MIN-PLUS e Cálculo de Rede
Nos ISP’s tratamos parâmetros que variam
abruptamente. Um valor pontual, como uma amostra do
parâmetro é pouco representativa. Precisamos análisar
um conjunto de amostras. Então estes parâmetros
podem ser melhor análisados quando tratados como
curvas. Ou seja, funções acumulativas dos parâmetros. A
álgebra MIN-PLUS é um ferramental matemático para
tratamento de curvas. Entenda-se por curvas as funções
no tempo para as quais dados quaisquer t2 > t1 temos
f(t2) ≥ f(t1). Ou seja, funções que nunca decrescem.
Por exemplo, dado o parâmetro número de requisições
por segundo. Uma amostragem em um minuto não é
representativa. Podemos então análisar a curva do
número de requisições até um determinado instante. O
Cálculo de Rede [9] estuda a relação entre as curvas de
parâmetros dos sistemas em rede. No capítulo 4
faremos uso destas relações. Para miaores detalhes e
formalização veja as referências [8 - 13].
3.2. Protocolo TCP
Nesta seção são descritos alguns detalhes do
protocolo TCP ([14] e [16]) e dos algoritmos de
controle padronizados (RFC 2581 [15]) necessários
para o entendimento da solução proposta.
O segmento TCP possui a estrutura mostrada na
Figura 1. Pode ter tamanho variado, limitado de acordo
com as características da rede.
PORTA ORIGEM
PORTA DESTINO
NÚMERO DE SEQUÊNCIA
OFFSET
NÚMERO DE RECONHECIMENTO
FLAGS
JANELA DE RECEPÇÃO
CHECKSUM
DADOS URGENTES
OPÇÕES (TAM VARIÁVEL)
DADOS DE APLICAÇÃO (TAM VARIÁVEL)
0
32
Figura 1. Estrutura do segmento TCP.
O campo JANELA DE RECEPÇÃO (rwnd) informa
ao emissor a capacidade do buffer receptor. O emissor
deve assegurar que a quantidade de dados em transito
(dt) não seja superior a janela rwnd. São considerados
dados em transito os segmentos para os quais ainda não
houve reconhecimento (ACK) por parte do receptor.
Esta janela, no entanto, não é suficiente para garantir
que não haja saturação dos enlaces de rede e dos buffers
nos equipamentos intermediários. Por isso foram
criados os controles de fluxo e congestionamento.
Estes controles determinam a janela de envio ou janela
de congestionamento (cwnd), que é uma variável de
sessão do emissor. A janela de transmissão utilizada é a
menor entre a janela de recepção rwnd e a janela de
congestionamento cwnd. Em condições normais, sem
erro e perda de dados, a velocidade de transmissão é
controlada pelos algoritmos Slow Start e Congestion
Avoidance. Eles trabalham juntos para determinar o
tamanho da janela de congestionamento.
3.2.1. Modelagem de latência. Posteriormente,
neste trabalho, será determinada a curva de serviço β u ,
que representa a resposta da conexão de um
determinado usuário através da internet. Nesta sessão
será feita a modelagem de latência, ou tempo de
transmissão para determinarmos a curva de serviço.
Dada a curva de serviço β u= ru.[t– du]+, podemos
aferir os parâmetros – taxa de transmissão ru e retardo
du, através da análise da seqüência de segmentos TCP. A
transmissão de dados começa com o estabelecimento
da conexão. Nesta fase são enviados segmentos de
controle (sem dados) e pode-se amostrar o RTT (Round
Trip Time), ou tempo entre o envio de um segmento e a
recepção do ACK. Devido a variação rápida dos valores
amostrados do RTT o protocolo TCP utiliza estimativa
por média móvel exponencial (EWMA - Exponential
Weighted Moving Average). Por este método a cada
amostra atualiza-se a estimativa de média e desvio
padrão, conforme segue:
Esta estimativa é eficiente, pois diminui o peso das
amostras mais antigas. Quanto maior o fator p
(tipicamente igual a 0,1) mais rápido as estimas antigas
são descartadas. A média EWMA também é utilizada
nos controles de fluxo e congestionamento para estimar
o tempo ótimo de retransmissão de segmentos.
Figura 2. Diagrama seqüência de segmentos TCP.
Na Figura 2 temos a seqüência simplificada de
conexão e requisição. Neste exemplo temos a fase de
conexão, onde são passados segmentos de controle. E a
fase de requisição com passagem de segmentos de
dados completos (MSS bytes).
Na fase de conexão, o tempo entre o envio do
segmento de controle e o recebimento do ACK é 1
RTT. O retardo de transmissão d u é determinado como a
metade do valor estimado RTT. Enquanto que nos
períodos de envio de dados o tempo transcorrido entre
o envio do segmento e a recepção do ACK é igual a RTT
+ MTU/r. Ou seja, temos os parâmetros de βu
conforme segue:
Tem-se então a taxa de envio ru (em bytes/s) e a
latência du (em segundos). Está definida, portanto, a
curva de serviço β u.
4. Controle de Tráfego
Pretendemos controlar o tráfego no ISP
determinando quando e como responder às requisições.
Em sistemas elétricos, mecânicos, hidraulicos entre
outros, existe o conceito de casamento de impedância.
Significa que há um ponto de equilibrio entre o sistema
e a carga que otimiza a transferência de energia. Quando
há casamento de impedância o sistema trabalha no ápice
da eficiência, ou seja, com perda mínima de energia. No
caso de sistemas de internet as coisas não são tão
simples. Trata-se de um mundo discretizado onde os
componentes e a carga são dificilmente modelados com
resultados satisfatórios.
Ao requisitar um serviço através da internet o usuário
envia uma requisição HTTP GET ou POST a um
Servidor HTTP que é a porta de entrada do sistema. A
subrede do SH é ideal para hospedar um proxy de
monitoração e controle. Pois concentra a interface
entre a rede externa e a interna. Quando o SH verifica
que a chamada deve ser tratada de forma dinâmica esta
tarefa é repassada a servidores de aplicação.
Independentemente de como estes servidores são
requisitados, para a contrução de uma página dinâmica,
nos importa conhecer a curva de resposta do sistema de
cada serviço. Na Figura 3 a curva de resposta Rs(t) do
serviço s, representa a resposta (bytes em função do
tempo) do conjunto de recursos que geram a página
dinâmica requisitada pelo usuário u (requisição γs,u).
Figura 3. Sistema internet simplificado recebendo a requisição
γs,u do usuário u ao serviço s.
Cada um dos serviços de um sistema representa um
conjunto de recursos de hardware e software diferentes
que conseguem dar vazão a um determinado número de
requisições simultâneas. Além do qual fomar-se-ão
filas de atendimento em algum ponto do sistema. O que
afeta o desempenho do conjunto e se reflete em
aumento do tempo de resposta.
Assim como a rede interna, a externa também possue
suas limitações de resposta. A internet é o gargalo de
comunicação. Impõem limitações de taxa de
transferência e latência que devido a sua natureza
heterogênea podem variar muito de um usuário para
outro. Temos, por exemplo, usuários conectados por
banda larga e outros por linha discada, backbones
rápidos em locais de boa infra-estrutura e sub-redes
sobrecarregadas em outros.
Inicialmente a inserção de um cache de saída pode
melhorar a eficiência do sistema. Cada resposta de um
determiando serviço possui uma parte criada
dinamicamente “única” e uma parte comum a todas as
respostas. Se pudermos adiantar a parte comum
(estática) teremos um ganho em relação ao tempo de
resposta.
4.1. Controle de Antecipação
A partir da existencia do cache de saída podemos
realizar o controle de fluxo. Na Figura 4 temos a malha
de controle do proxy para antecipação da parte estática
na taxa de transferência adequada a banda do usuário.
Dada a requisição γs,u do usuário u para o serviço s, o
sistema responde com tempo de resposta drs. Se esta
resposta for gerada dinamicamente a parte estática é
separada da dinâmica e armazanada no cache. Caso este
serviço já tenha sido requisitado antes então já deve
existir uma cópia desta. A partir da existência de uma
cópia “confiável” pode-se antecipar a parte estática Re s.
A curva de resposta Rds apresentada ao Moderador é
a parte dinâmica filtrada da resposta do serviço. Que
pode ser enviada assim que ficar pronta.
enlace com a rede pública recebe dados acima da
capacidade de envio e sobrecarrega os buffers dos
roteadores. Isso é tratado pelo controle de fluxo e
congestionamento do TCP. Mas pode ser evitado
através do controle de envio proposto adiante.
O bloco Identificador funciona como sniffer
capturando os dados no segmento de rede dos
Servidores HTTP. Através da análise das requisições e
respostas HTTP pode-se determinar o tempo de
resposta e a página gerada. Estas informações são
guardadas em uma base de dados formando um cache de
respostas HTTP. No caso de páginas estáticas a resposta
do Servidor HTTP é rápida e não há a necessidade de
antecipar nada. Já no caso de páginas dinâmicas, sempre
há um retardo devido ao processamento e montagem.
Neste tempo de processamento estão incluidos os
períodos de requisições a servidores de aplicações,
bases de dados e mainframes.
O bloco Filtro tem a função de separar a parte
dinâmica e estática da resposta HTTP e armazená-las no
cache. A parte estática é enviada ao Moderador. Depois
de algumas requisições, a um mesmo serviço, é possível
determinar qual a parte dinâmica e qual a parte estáticas
da resposta. Alternativamente o início e o fim do trecho
dinâmico podem ser indicados por tags. Por exemplo, o
site www.yourdictionary.com disponibiliza um serviço
de tradução Inglês-Português (Figura 5). A página
gerada é composta do cabeçalho e do código HTML,
conforme exemplificado abaixo:
<html>
<head>
…
<title>Search Results</title>
</head>
<body BACKGROUND="images/bckgrndyd.jpg>
…
<table class="blue_border" width="90%" cellpadding="2">
<tr><th
valign="top"
align="left">Terms</th><th
valign="top" align="left">Translations</th></tr>
<!- - IniDin - - >
<tr>
<td
align="left"
valign="top"><b>1.
<a
href
=
"?text=smoothing&service=ep">smoothing</a> [n.]</b></td>
…
<!- - FimDin - - >
</table>
…
</body>
</html>
Figura 4. Diagrama de controle.
Devido a limitações da rede interna e da internet os
dados enviados pelo sistema Rs,u são recebidos pelo
usuário com outra curva Ru caracterizada por uma taxa e
um retardo específico de cada usuário (conexão). Como
o gargalo de comunicação é a internet a taxa de
transferência da rede interna ao backbone é maior que a
do backbone ao browser do usuário. Então a banda do
Figura 5. Exemplo: serviço de tradução do site
www.yourdictionary.com.
Neste exemplo, a maior parte do HTML e seus
componentes, como a imagem bckgrndyd.jpg, podem
ser antecipadas enquanto a parte dinâmica, tradução, é
realizada. Esta antecipação será mais efetiva quanto
maior a carga estática e menor a taxa de transferência
do usuário requisitante. Alguns elementos que
aumentam a carga estática são: imagens, applets,
arquivos de estilo (CSS) entre outros.
Na prática esta antecipação é realizada substituindose o trecho dinâmico por uma chamada ao próprio site
conforme segue:
os instantes de início de envio da parte estática tes,u e
dinâmica tds,u (Figura 7):
• para dps < de s,u
• para dps > de s,u
<!- - IniDin - - >
<frame src = "http://site/ParteDin?ID=3167&delay=8” alt =
"Aguarde…">
<!- - FimDin - - >
Esta chamada é feita pelo browser assim que a linha
de código chegar. E quando retornar ao sistema, não
será atendida pelo Servidor HTTP e sim pelo proxy.
Este irá responder enviando apenas a parte dinâmica da
página.
4.2. Determinação dos Instantes de Envio e
Processamento
Apenas com o controle de antecipação já é possível
obter um ganho no tempo de resposta. Na Figura 6 a
parte dinâmica é enviada logo após a parte estática.
No entanto o envio da parte estática assim que a
requisição é recebida pode nem sempre ser a melhor
solução para sistemas de alta demanda. Esta
determinação deve ser feita com base no taxa de
transferência e no tamanho da parte estática. A taxa de
transferência para o usuário u é estimada (β u). E o
tamanho da parte estática é obtido do cache.
A existência do cache torna possível o
“agendamento” do inicio de processamento e de inicio
de transmissão. Além de permitir o controle da taxa de
envio para adequar a curva de saída Ru à curva de
resposta β u.
Figura 6. Otimização da banda e diminuição do tempo de
resposta total: T2< T1. (a) Curva de resposta sem controle (T1).
(b) Curva de resposta com antecipação e controle de fluxo (T2).
No bloco Moderador estão as funcionalidades para
determinação da curva de serviço de comunicação com
o usuário e para o controle da taxa de envio.
Determinamos a curva de resposta através de estimativa
do RTT dos segmentos TCP enviados. Uma vez
conhecida a curva de serviço de comunicação com o
usuário u pode-se estimar a duração do envio de uma
determinada resposta de s,u. Sendo Le s o tamanho
conhecido da parte estática do serviço s, tem-se:
Com base nesta estimativa, e na estimativa do tempo
de processamento dps do serviço s, podemos determinar
Figura 7. Faixas de tempos de envio da parte estática e
dinâmica. (a) dp s < de s,u (b) dps > de s,u
A determinação do instante de início de
processamento pode diminuir o número de usuários
simultâneos no sistema e liberar recursos para terminar
os serviços em andamento. A existência de muitos
usuários no sistema pode afetar o desempenho devido a
concorrência no acesso a recursos como rede, disco
rígido e processador. Para os serviços com “pouca
variação” no tempo de resposta podemos utilizar a
seguinte expressão:
, então:
• quando dps < de s,u => 0 ≤ tps ≤ de s,u - dps ;
• quando dps > de s,u => tps = 0 .
Já a determinação dos isntântes de envio pode ser
usada para otimizar a banda de transmissão. Podemos
pensar em algoritmos de agendamento de envio. No
entanto deixaremos este tópico para trabalhos futuros.
Vamos considerar os seguintes tempos:
• tes,u = 0 , envio da parte estática assim que a
requisição chegar;
• tds,u = max{dp s , de s,u}, envio da parte dinâmica
assim que ficar pronta, após o envio da parte
estática;
Ao invés da ação pontual de determinar os instantes
de envio ótimos, optamos por iniciar o envio o quanto
antes e controlar a taxa de transmissão. Este controle
feito em malha fechada pode trazer melhores
resultados, diante das incertezas do comportamento da
rede.
4.3. Controle de Taxa de Transmissão
O emissor TCP normalmente tentará enviar os dados
na maior taxa possível. Como, com base nos dados do
cache, conhecemos o tamanho da parte estática Le s e a
duração do processamento da parte dinâmica dps,
podemos determinar a taxa de envio ótima:
, onde du é a latência de transmissão,
característica que não pode ser alterada.
Esta é a taxa de transferência mínima necessária para
o envio da parte estática antes que a parte dinâmica
fique pronta. Taxas maiores iriam sobrecarregar o
enlace de saída da rede desnecessariamente. Para obter
esta taxa será necessário manipular as janelas de
controle do emissor TCP. A janela de recepção (rwnd) é
preferível em relação à janela de congestionamento
(cwnd), pois ela não interfere nos algoritmos de
controle de fluxo e congestionamento. A pergunta é
como calcular o tamanho da janela Wu para que a curva
de serviço da internet se aproxime de βwu = c u.[du – t]+.
O diagrama da Figura 8 mostra o processo de
transmissão em controle de malha fechada. O
moderador não pode controlar a curva de envio Rs,u pois
os dados são transmitidos pelo emissor TCP (o SH). A
não ser que fosse reescrito um emissor TCP para este
fim. O que acarretaria em perda de generalidade e
aplicabilidade do proxy. Em vez disso o Moderador
pode modificar a janela informada pelo receptor TCP (o
browser).
ru). Mas quando ru é tal que ru.du > W então βwu >= β u e
c u = W u/du.
Figura 9. Curva de serviço βwu para: (a) ru.du <= W u; (b) ru.d u > W u
Ou seja, devemos modificar a janela de recepção tal
que rwnd(t) = min{ [c u.du - Rs,u(t)]+ , rwnd(t) } e o
emissor TCP utilizará a menor entre Wu e cwnd. Desta
forma a taxa de transmissão é modificada utilizando as
variáveis de controle do próprio protocolo TCP.
5. Avaliação do Controle de Tráfego
Figura 8. Diagrama de controle da taxa de transferência do
serviço s ao usuário u.
Modificando a janela do receptor percebida pelo
emissor podemos atuar na taxa de emissão. O controle
realizado pelo moderador deve ser tal que:
ou
Então, aplicando o Teorema 4.3.1 de [8], a máxima
solução é a convolução entre Rs e o fechamento subaditivo de Ru + W, ou seja,
(1)
Não conhecemos o mapeamento de Rs,u em Ru mas
sabemos que Ru é limitado por β u (conhecido) :
(2)
Então, substituindo (2) em (1):
Ou, substituindo (1) em (2):
Então, dada a curva de serviço da rede (internet) βu =
ru.[du – t]+ e limitando a janela de envio a Wu, temos a
curva de serviço da malha fechada βwu = c u.[du – t]+.
A Figura 9 mostra o efeito do controle da janela na
taxa de transferência. Para βu com taxa de transferência
ru tal que ru.du <= W não há atuação e βwu = βu (ou cu =
Para verificar o ganho com a utilização do contrle de
tráfego recorremos aos logs dos Servidores HTTP de
um sistema real. Trata-se do log de requisições do IIS
(Internet Information Service ) de um sistema de
Internet Banking. A partir destes dados reais vamos
averiguar o ganho caso o cache fosse inserido.
Para cada requisição o IIS realiza diversos registros
como: date (data da requisição), time (tempo da
requisição), c-ip (IP do cliente (browser), s-ip (IP do
servidor), cs-uri-stem (trecho da URI sem o domínio
início e a query ), cs-uri-query (query, trecho da URI
com parâmetros GET), sc-bytes (bytes recebidos), csbytes (bytes enviados), time -taken (tempo para
processamento) e cs(Referer) (referência). Este último
campo permite rastrear qual requisição originou outra.
Por exemplo, ao requisitar uma página que possua
imagens ao IIS, o browser recebe primeiro a página
HTML. Que então indica as imagens que devem ser
requisitadas. Neste caso a requisição à página HTML
não possui referência, ou seja ‘Referer’ nulo. Mas as
requisições às imagens fazem referência no log à página
anterior. Denominamos de ‘requisições primárias’ as
chamadas às páginas e aos serviços. E de requisições
secundárias as chamadas aos arquivos complementares
como imagens, javscripts, CSS, etc…
Podemos estimar o tamanho da parte estática e
dinâmica considerando, por simplificação, que a parte
estática é composta apenas pelos arquivos secundários e
que todo o código HTML da requisição primária é
construído de forma dinâmica. A Tabela 1 mostra um
trecho do log com a vinculação, através do campo ‘ref
Pri’, das partes secundárias às partes primárias de cada
requisição. Com base neste vínculo, determinamos os
tamanhos (em kb) das partes primárias (‘tam Pri’) e das
partes secundárias (‘tam Sec’).
Tabela 1. Trecho do log e análise para determinação da parte
estática (tamanho em bytes).
time
req
00:01:54
00:01:54
00:01:55
00:03:20
00:03:24
00:03:38
107
108
109
117
118
119
cs-uri-stem
ref Pri tam Pri
/scripts/comunic_owb.dll
tam
Sec
0
12038
1416
/rie/imagens/bul_tit_sessao.gif
107
0
0
/rie/imagens/bul_ret_verdec.gif
107
0
0
/scripts/comunic_owb.dll
0
476
930
/owb/images/setaazul.gif
119
0
0
/owb/images/amarelo.gif
119
0
0
Tabela 4. Comparativo com e sem cache (tempos em
segundos).
time
00:01:54
00:02:17
00:03:20
00:03:53
00:03:53
00:03:55
O cache proposto deve antecipar a parte estática da
requisição. Nesta avaliação fomos obrigados a fazer
uma simplificação por falta de dados da composição das
páginas HTML. Portanto, consideramos que a parte
estática é composta apenas pelos arquivos secundários e
que todo o código HTML da requisição primária é
construído de forma dinâmica.
Com base no tamanho da parte estática e com a taxa
de transferência média para um dado usuário podemos
estimar os tempos de envio. Vamos considerar que a
curva de resposta da rede para todos os usuários é:
β(t) = 32000.t , ou seja, taxa de transmissão r=32 kb/s
e latência de transmissão d = 0 (simplificação).
Na Tabela 2 estimamos o tempo de resposta. Sem o
cache, a parte secundária só é requisitada após a parte
primária ser processada e enviada.
req
tempo
resp s/
CACHE
tempo
resp c/
CACHE
107
110
117
122
123
133
0,623
0,731
0,903
2,445
0,471
0,766
0,579
0,528
0,874
2,149
0,328
0,406
dif
-0,044
-0,203
-0,029
-0,296
-0,144
-0,360
%
-7,098
-27,759
-3,219
-12,105
-30,536
-47,036
Percebe-se uma diferença significativa , mas para
validar a comparação fizemos os mesmos cálculos com
uma massa maior de dados. Tomamos 30 min do log,
aproximadamente 2500 requisições (260 requisições
primárias). As Figuras 10 e 11 mostram o ganho do
tempo de resposta.
Figura 10. Gráfico de Ganho, em segundos, do tempo de
resposta por re quisição.
Tabela 2. Análise do tempo de resposta sem cache (tempos
em segundos).
time req
00:01:54
00:02:17
00:03:20
00:03:53
00:03:53
00:03:55
tam tam
Pri Sec
dur
envio
Pri
107 12038 1416
110 912 15994
117 476
930
122 479 68299
123 1488 4607
133 989 11535
inst resp inst min inst resp
dur
inst cheg
inst
envio
Pri usu
envio Sec usu
req
envio Pri
Sec
U
Sec
U
temp
resp
0,376
0,044
114,000
114,203
114,579
114,579
114,623
0,623
0,029
0,015
0,015
0,047
0,031
0,500
0,029
2,134
0,144
0,360
137,000
200,000
233,000
233,000
235,000
137,203
200,859
233,296
233,281
235,375
137,232
200,874
233,311
233,328
235,406
137,232
200,874
233,311
233,328
235,406
137,731
200,903
235,445
233,471
235,766
0,731
0,903
2,445
0,471
0,766
Figura 11. Gráfico de Ganho, proporcional, do tempo de
resposta por requisição.
Com a inserção do cache a parte secundária é
enviada de imediato (sem esperar o processamento da
parte primária - ‘dur proc’). Na Tabela 3, podemos notar
diminuição dos tempos de resposta.
Tabela 3. Análise do tempo de resposta com cache (tempos
em segundos).
time
req
tam tam
Pri Sec
dur
envio
Pri
dur
envio
Sec
inst
cheg
req
inst
min
envio
Sec
inst
resp
Sec
usu U
inst
min
envio
Pri
inst
resp
Pri usu
U
temp
resp
00:01:54
107 12038
1416
0,376
0,044 114,000 114,000 114,044 114,203 114,579
0,579
00:02:17
110
912
15994
0,029
0,500 137,000 137,000 137,500 137,500 137,528
0,528
00:03:20
117
476
930
0,015
0,029 200,000 200,000 200,029 200,859 200,874
0,874
00:03:53
122
479
68299
0,015
2,134 233,000 233,000 235,134 235,134 235,149
2,149
00:03:53
123 1488
4607
0,047
0,144 233,000 233,000 233,144 233,281 233,328
0,328
00:03:55
133
11535
0,031
0,360 235,000 235,000 235,360 235,375 235,406
0,406
989
Na Tabela 4 comparamos os tempos de resposta das
Tabelas 2 e 3 .
A diminuição do tempo de resposta foi em média de
17,4%, chegando a 50%. Em servidores de alta
demanda, com dezenas de requisições por segundo,
estas diferenças porcentuais são muito significativas,
podendo trazer redução nos custos de infra-estrutura
além de aumento da qualidade de serviço. O ganho
obtido com a antecipação será mais efetivo quanto
maior a carga estática e menor a taxa de transferência
do usuário requisitante.
6. Conclusões
Apesar do crescente interesse nesta área ainda é
complexo modelar sistemas de internet. Pois o sistema
e a carga são governados por eventos de distribuição de
probabilidades indeterminados. O que torna difícil
controlar o desempenho para manutenção de tempos de
resposta baixos. Também existe a dificuldade de
determinação de parâmetros de desempenho genéricos,
entre servidores e plataformas diferentes.
O Controle de Tráfego determina quando transmitir,
como transmitir e que tipo de requisição e resposta
deve ser transmitida. Com a inserção de um cache para
antecipação da parte dinâmica obtemos alguns
parâmetros de controle independentes da plataforma e
da tecnologia dos servidores. Estes parâmetros são: a
taxa de transmissão dos dados, o instante de início
transmissão e o instante de início de processamento.
Controlando estes parâmetros é possível aumentar a
eficiência do ISP. O tempo de resposta é reduzido pela
ação antecipatória do cache. A banda de transmissão
utilizada é reduzida pelo controle da taxa de
transferência e do intante de envio. E o processamento
dos servidores também é reduzido pelo controle do
instante de início de processamento. Este conjunto de
ações controla o tráfego no Servidor HTTP balanceando
a oferta e a demanda do sistema.
6.1. Contribuições do Trabalho
A utilização do controle proposto contribui para a
melhoria da qualidade de serviço dos sistemas de alto
desempenho. E propicía redução de custos de infraestrutura.
6.2. Trabalhos Futuros
Trabalhos futuros podem se valer dos algoritimos
apresentados para a elaboração de uma ferramenta de
gerênciamento de desempenho. Na Figura 12 temos a
tela de modelagem da ferramenta que está sendo
dedenvolvida. Os componentes hardware e software
monitorados são considerados servidores de filas.
[5] V. Sivaraman and F. Chiussi, “End-to-End Statistical Delay
Guarantees using Earliest Deadline First Packet Scheduling”, in
Proc. of GlobeCom, Rio de Janeiro, Brazil, Dec. 1999, pp. 13071312.
[6] L. Sha, X. Liu, Y. Lu and T. Abdelzaher, “Queueing model
based network server performance control”, in 23th IEEE RealTime System Symposium, 2003.
[7] L. Sha, X. Liu, Y. Lu, T. Abdelzaher and C. Lu, “Feedback
Control with Queueing-Theoretic Prediction for Relative Delay
Guaranteees in Web Servers”, in 9th IEEE Real-Time and
Embedded Technology and Applications Symposium, 2003.
[8] Jean-Yves Le Boudec and Patric Thiran, Network Calculus:
A theory of Deterministic Queueing Systems for the Internet,
Springer-Verlag, Berlin – Germany, 2001.
[9] D. Starobinski, J. Karpovsky and L. A. Zakrevsky,
“Application of Network Calculus to General Topologies Using
Turn-Prohibition”,
IEEE/ACM
TRANSACTIONS
ON
NETWORKING Vol. 2 - N.3, Jun. 2003.
[10] C.S. Chang, “On deterministic traffic regulator and service
guarantee: A systematic aproach by filtering”, IEEE
Transactions on Information Theory, Aug. 1998, pp. 1096-1107.
[11] R. Arawal and R. Rajan, “Performance bounds for
guaranteed and adaptive services”, IBM Technical Report RC
20649, Dec. 1996.
[12] J. Naudts, “Toward real-time meassurement of trafic
control parameters”, Computer Networks, 2000, pp. 34:157-167.
[13] F. Baccelli, G. Cohen, G. J. Olsder and J. P. Quadrat
“Synchronization and Linearity, An Algebra for Discrete Event
Systems”, John Wiley and Sons, 1992.
[14] Information Sciences Institute (USC), “Transmission
Control protocol”, Network Working Group RFC 793, EUA, Sep.
1981.
[15] M.Allman, V.Paxson and W.Stevens, “TCP Congestion
Control”, Network Working Group RFC-2581, EUA, Apr. 1999.
[16] G.McKinney, “TCP/IP State Transition Diagram”, Network
Working Group RFC-793, EUA, Feb. 2002.
[17] ITU-T Recomendação I.311, B-ISDN General Networks
Aspects, Genebra, 1991.
[18] Server Watch statistics (indicated by ISOC site), at
http://www.serverwatch.com/stats/netcraft/article.php/3349231 ,
May 2004.
Figura 12. Ferramenta de monitoração e análise do sistema.
7. Referências Bibliográficas
[1] R. Jain, The Art of Computer Systems Performance
Analysis: Techniques for Experimental Design, Measuremente,
Simulation and Modeling, Wiley-Interscience, New York - NY,
April 1991.
[2] J. Lehoczky, “Real-Time Queueing Theory”, in 17th IEEE
Real-Time systems Symposium, 1996.
[3] J. Lehoczky, “Real-Time Queueing Network Theory”, in 18th
IEEE Real-Time systems Symposium, 1997.
[4] J. Lehoczky, “Using Real-Time Queueing Network Theory
To Control Lateness In Real-Time Systems”, ACM
SIGMETRICS’ 97, 1997, pages 158-168.
Download

Controle de Tráfego em Provedores de Serviço de Internet