Mecanismos de Escalonamento

Propaganda
Mecanismos de Escalonamento
1.1 Mecanismos de escalonamento
O algoritmo de escalonamento decide qual o próximo pacote que será servido na fila de
espera. Este algoritmo é um dos mecanismos responsáveis por distribuir a largura de banda
da ligação pelos diferentes fluxos (atribuindo a cada fluxo a largura de banda que foi
pedida e aceite).
Um algoritmo de escalonamento pode ser do tipo work-conserving ou non-workconserving. No primeiro caso, o servidor “trabalha” sempre, isto é, havendo pacotes em
espera, eles serão sempre transmitidos. No segundo caso, um nó só pode transmitir um
pacote quando este se torna elegível, isto é, quando o tempo necessário para ele se manter
em espera termina. Se no nó apenas se encontrarem pacotes não elegíveis em espera, então
o servidor manter-se-á inactivo. Este tipo de algoritmos de escalonamento foi projectado
para aplicações que não toleram variações no atraso de transmissão. A desvantagem óbvia
destes algoritmos é o desperdício de largura de banda durante os períodos em que apenas
existem pacotes não elegíveis em espera.
A classificação destes algoritmos de escalonamento pode ser efectuada de acordo
com os princípios que definem a ordem de envio dos pacotes [Santiago02]: por ordem de
chegada, de uma forma estrita, de uma forma rotativa, por aproximação ao sistema de
fluídos, e em tempos pré-definidos.
1.1.1 Ordem de chegada
O algoritmo de escalonamento que serve os pacotes por ordem de chegada é o FIFO (First
In First Out). Este algoritmo é muito simples de implementar mas não permite
diferenciação de QdS, assim como não garante a existência de limites máximos nos
atrasos. Os fluxos de tráfego que recebem um serviço melhor são os que geram mais
tráfego.
1.1.2 Forma estrita
Neste algoritmo, o escalonador é constituído por várias filas de espera, cada uma com uma
prioridade diferente. Os fluxos são classificados em diferentes níveis de prioridade e
associados a uma determinada fila de espera de acordo com a sua prioridade. Este
algoritmo serve o tráfego por ordem de prioridade. O tráfego de prioridade mais elevada é
servido sempre antes do tráfego com prioridade inferior. Este algoritmo é simples de
implementar e permite diferenciação de QdS. No entanto, se não existir nenhum
mecanismo de controle de admissão dos fluxos com maior prioridade, uma grande
quantidade de pacotes de elevada prioridade pode impedir completamente o serviço de
pacotes com menor prioridade (este fenómeno é usualmente denominado de starvation).
Este mecanismo de prioridade simples deve ser usado apenas para tráfego que exija
garantias muito estritas de QdS.
1.1.3 Forma rotativa
Nestes algoritmos, o escalonador é constituído por várias filas de espera com a mesma
prioridade e os fluxos são associados a uma determinada fila de espera de acordo com a
sua classificação. Estes algoritmos seleccionam o tráfego de uma forma rotativa. No
algoritmo mais simples, Round Robin (RR), o sistema selecciona um pacote de cada fila de
espera de uma forma rotativa. Este algoritmo é também muito simples mas favorece os
fluxos que contêm pacotes com maior comprimento, pois o pacote é servido
independentemente do seu comprimento. Existem algumas variantes deste sistema que
permitem utilizar pacotes de tamanho variável sem prejudicar os mais pequenos, e ainda,
atribuir uma largura de banda pesada a cada fila de espera. De entre esses mecanismos
destacam-se o Weighted Round Robin (WRR) e o Deficit Round Robin (DRR).
1.1.4 Aproximação do sistema de fluídos
Este conjunto de algoritmos pressupõe também a existência de escalonadores com várias
filas de espera, e distribui a largura de banda pelas diversas filas de espera de uma forma
pesada ou de uma forma equitativa (Fair Queuing) mas sem a noção de rotatividade. Estes
algoritmos tentam emular, num sistema de pacotes, o sistema de fluídos denominado de
Generalized Processor Sharing (GPS).
Qualidade de Serviço em Redes IP
1.1.4.1 GPS
No GPS o tráfego é considerado como sendo infinitamente divisível. Esta característica
permite considerar que as várias filas de espera são servidas simultaneamente. Cada fila de
espera utiliza, em cada instante, uma percentagem da capacidade da ligação que é
proporcional a um peso que lhe é atribuído. Considere-se que Γ é o conjunto de filas de
espera, e Γ’ ⊆ Γ é o conjunto das filas de espera não vazias durante o intervalo de tempo
(τ,t). Assume-se que a taxa de serviço é C, e que a cada fila de espera i é associado um
peso φi. Numa disciplina GPS, em qualquer intervalo (τ,t) a fila de espera i recebe uma
taxa mínima garantida proporcional ao seu peso dada por Cφ i / ∑ j∈G ' φ j . Além disso, a
uma fila i que tenha continuamente tráfego para transmitir é garantida uma taxa mínima
proporcional ao seu peso, dada por
ci =
φi
∑ j∈G φ j
C
(1)
1.1.4.2 WFQ
O algoritmo WFQ (Weighted Fair Queuing), também denominado de Packet Generalized
Processor Sharing (PGPS) tenta emular, numa rede de pacotes, o sistema GPS. No WFQ,
um pacote é servido pela mesma ordem que seria servido se o servidor estivesse a executar
a disciplina GPS.
No WFQ é necessário calcular o instante em que o pacote deixaria o servidor num
sistema GPS. Os pacotes vão posteriormente ser servidos por ordem destes instantes de
partida. No caso geral, sendo Fi k o instante de partida do pacote k pertencente à fila de
espera i,
[
]
Fi k = max Fi k −1 ,V (t ) +
lik
φi
(2)
em que lik é o comprimento do pacote k pertencente à fila de espera i e V(t) é o chamado
round number.
O cálculo da função V(t) é bastante complexo, sendo difícil a sua implementação em
routers de elevado débito. Existem outros algoritmos de escalonamento que são variantes
do WFQ, os quais são menos complexos e utilizados na maior parte das implementações.
De entre os algoritmos destacam-se o Self-Clocking Fair Queuing (SCFQ) e o Virtual
Clock (VC).
1.1.4.3 SCFQ
O SCFQ propõe uma aproximação simples para calcular o instante de partida no
correspondente sistema GPS. Quando um pacote chega a uma fila de espera vazia, o SCFQ
usa como V(t) o instante de partida do pacote que está nesse momento em serviço (Factual).
O instante de partida é então dado por
[
]
Fi k = max Fi k −1 , Factual +
lik
φi
(3)
Este algoritmo é de fácil implementação em redes de elevado débito, mas pode em
alguns casos específicos, não ser justo em pequenos intervalos de tempo.
1.1.4.4 VC
O VC tenta emular um sistema TDM (Time Division Multiplexing). No VC, a função V(t) é
substituída pelo instante de chegada do pacote, se a fila de espera se encontrar vazia. A
reserva de uma taxa de serviço para cada fila de espera é efectuada por um valor Ei,
acordado previamente entre as fontes de tráfego e o servidor, que representa o valor
esperado para os intervalos entre chegadas à fila de espera i. O servidor atende as filas de
espera por ordem do tempo virtual baseado no parâmetro Ei. O tempo virtual é o instante
em que o pacote seria transmitido se essa transmissão fosse TDM. O tempo virtual do
pacote k na fila de espera i é dado pela seguinte expressão:
[
]
VTi k = max VTi k −1 ,Tempo + Ei
(4)
em que Tempo é o instante de chegada do pacote k à fila de espera i.
A implementação deste algoritmo é bastante simples. Além disso, prova-se que uma
rede com servidores VC pode oferecer as mesmas garantias de atraso a um fluxo que uma
rede com servidores WFQ. No entanto, em determinadas situações, o VC pode não ser uma
disciplina justa: o VC tem o problema de punir os fluxos que, durante algum tempo, são
servidos a uma taxa superior à taxa previamente acordada e definida pelo parâmetro Ei.
Qualidade de Serviço em Redes IP
1.1.5 Tempos pré-definidos
Este conjunto de algoritmos é do tipo non-work conserving. A cada pacote é associado um
tempo elegível e um tempo limite. Os pacotes só podem ser servidos depois de o instante
de tempo actual exceder o tempo elegível do pacote. Deste modo, garante-se que todos os
pacotes de um mesmo fluxo têm aproximadamente o mesmo atraso. O escalonador ordena
os pacotes elegíveis para transmitir com base nos seus tempos limite. Os algoritmos de
escalonamento apresentados nesta secção são o Jitter-Virtual Clock (JVC) e o Core-JitterVirtual Clock (CJVC).
1.1.5.1 JVC
No JVC, o tempo elegível do pacote k da fila de espera i no nó j é dado por:
TEi1, j = TCi1, j
(5)
[
TEik, j = max TCik, j + TSLki , j −1 , TLki ,−j1
]
(6)
em que TCik, j é o tempo de chegada do pacote ao nó j, TSLki , j −1 é a diferença entre o tempo
limite e o instante em que o pacote foi transmitido no nó anterior, e TLki ,−j1 é o tempo limite
do pacote anterior. Note-se que o parâmetro TSLki , j −1 não é do conhecimento do nó j, e por
isso este parâmetro tem de ser marcado no pacote k.
O tempo limite do pacote no nó j é dado por
TLki , j = TEik, j +
lik
ci
(7)
Este algoritmo tenta minorar a variação no atraso dos pacotes. Se um pacote for
transmitido muito tempo antes do tempo limite num determinado nó, ele vai ter de esperar
algum tempo no nó seguinte para compensar esse facto. Prova-se que uma rede com JVC
fornece as mesmas garantias de atraso que uma rede com VC, por isso o JVC fornece as
mesmas garantias que o WFQ.
Download