9.4. Terminologia
Para entender adequadamente as configurações mais complicadas antes são necessárias explicar alguns conceitos. Por causa da complexidade e da relativa juventude do assunto, um monte de palavras diferentes são usadas quando na realidade significam à mesma coisa para as pessoas.
Os conceitos seguintes são baseados imprecisamente no ‘draft-ietf-diffserv-model-06.txt’, Um Modelo de Gerenciamento Informal para Roteadores Diffserv. Ele pode ser atualmente encontrado em http://www.ietf.org/internet-drafts/draft-ietf-diffserv-model-06.txt.
Leia-o para as definições estritas dos termos usados.
Queueing Discipline (qdisc)
Um algoritmo que gerencia a fila de um dispositivo, tanto entrante (ingress) quanto sainte (egress).
root qdisc
O root qdisc é a disciplina de enfileiramento (qdisc) associada ao dispositivo.
Classless qdisc
É uma disciplina de enfileiramento (qdisc) sem subdivisões internas configuráveis.
Classful qdisc
Uma qdisc classful contém múltiplas classes. Algumas dessas classes contêm uma qdisc adicional que pode ser novamente classful, mas não precisa ser. De acordo com a definição estrita, pfifo_fast *é* classful, pelo fato dele contem três bandas que são classes de fato. No entanto, da perspectiva da configuração do usuário, ela é classless porque as classes não podem ser manipuladas com a ferramenta tc.
Classes
Uma qdisc classful pode possuir muitas classes, cada qual é interna a qdisc. Uma classe, na seqüência, pode ter várias classes adicionadas a ela. Assim uma classe pode ter uma qdisc como pai ou uma outra classe. Uma classe folha é uma classe sem classes filhas. Essa classe tem 1 qdisc vinculada a ela. Essa qdisc é responsável por enviar os dados a partir dessa classe. Quando você criar uma classe, uma qdisc fifo é vinculada a ela. Quando você adiciona uma classe filha, essa qdisc é removida. Para uma classe folha, essa qdsic fifo pode ser substituída por uma outra qdisc mais apropriada. Você simplesmente pode substituir essa qdisc fifo por uma qdisc classful e assim você pode adicionar classes extras.
Classifier
Cada qdisc classful precisa determinar por qual classe ela precisa enviar um pacote. Isso é feito usando o classificador.
Filter
A classificação pode ser executada usando filtros. Um filtro contém um número de condições que se for correspondido, executa o filtro correspondente.
Scheduling
Uma qdisc pode, com a ajuda de um classificador, decidir que alguns pacotes precisam prosseguir antes de outros. Esse processo é chamado Scheduling (Escalonamento), e é executado, por exemplo, pela qdisc pfifo mencionada anteriormente. Escalonamento é também chamado ‘reordenação’, mas isso é algo que confunde.
Shaping
O processo de atrasar pacotes antes que eles prossigam para gerar confirmação de tráfego a uma taxa máxima configurada. Shapping (podar/aparar o tráfego) é executado no egress. Coloquialmente, descartar pacotes para deixar o tráfego lento é também chamado de Shaping normalmente.
Policing
Atrasar ou descartar pacotes a fim de gerar tráfego constante superior uma largura de banda configurada. No Linux, policiamento pode descartar somente um pacote e não atrasá-lo – não há qualquer ‘fila ingress’.
Work-Conserving
Uma qdisc work-conserving sempre entrega um pacote se algum estiver disponível. Em outras palavras, ele nunca atrasa um pacote se o adaptador de rede estiver pronto para enviar algum (no caso de uma qdisc egress).
non-Work-Conserving
Algumas filas, como por exemplo, a Token Bucket Filter (TBF), pode precisar reter a transmissão de um pacote por certo tempo a fim de limitar a largura de banda. Isso significa que elas às vezes recusam passar um pacote, mesmo que eles tenham algum disponível.
Agora que temos nossa terminologia correta, vamos ver onde todas essas coisas se encaixam.
Programas do Espaço de Usuário
^
|
+-----------------+---------------------------------------+
| Y |
| +-------> IP Stack |
| | | |
| | Y |
| | Y |
| ^ | |
| | /-----------> Forwarding -> |
| ^ / | |
| |/ Y |
| | | |
| ^ Y /-qdisc1-\ |
| | Egress /--qdisc2--\ |
--->->Ingress Classifier ---qdisc3-----+-->
| Qdisc \--qdisc4--/ |
| \-qdiscN-/ |
| |
+---------------------------------------------------------+
Obrigado ao Jamal Hadi Salim por essa representação ASCII.
O grande bloco representa o kernel. A seta mais esquerda representa o tráfego entrando em sua máquina a partir da rede. Ele então alimenta o Qdisc Ingress que pode aplicar Filtros a um pacote, e decide descartá-lo. Isso é chamado ‘Policing’.
Isso acontece em um estágio muito anterior, antes de ele ter visto muitas coisas do kernel. Portanto, é um lugar muito bom para descartar tráfego muito cedo, sem consumir muitos ciclos de CPU.
Se for permitido ao pacote continuar, ele pode ser destinado a uma aplicação local, caso em que ele entra na pila IP a fim de ser processado, e é entregue a um programa do espaço de usuário. O pacote pode ser também encaminhado sem ser entregue a uma aplicação, caso em que ele é destinado para egress. Programas do espaço de usuário também podem entregar dados, que são então analisados e encaminhados ao Classificador Egress.
Ali é investigado e enfileirado em quaisquer das qdiscs. No caso padrão não configurado, existe somente uma qdisc egress instalada, o pfifo_fast, que sempre recebe o pacote. Essa parte é chamada de ‘enfileiramento’.
O pacote agora está na qdisc, esperando o kernel requisitá-lo para transmissão na interface de rede. Essa parte é chamada de ‘des-enfileiramento’.
Essa figura também considera somente o caso de existir só um adaptador de rede – as setas que entram e deixam o kernel não devem ser tomadas assim tão literalmente. Cada adaptador de rede possui iscas tanto no ingress quanto no egress.
Bert Hubert (Netherlabs BV)
bert.hubert@netherlabs.nl
Thomas Graf (Autor de Seção)
tgraf@suug.ch
Gregory Maxwell (Autor de Seção)
greg@linuxpower.cx
Remco van Mook (Autor de Seção)
remco@virtu.nl
Martijn van Oosterhout (Autor de Seção)
kleptog@cupid.suninternet.com
Paul B Schroeder (Autor de Seção)
paulsch@us.ibm.com
Jasper Spaans (Autor de Seção)
jasper@spaans.ds9a.nl
Pedro Larroy (Autor de Seção)
piotr@member.fsf.org
Nenhum comentário:
Postar um comentário