| Made possible by PowerDNS | ||
|---|---|---|
| Anterior | Capítulo 9. Disciplinas de colas (qdiscs) para gestión del ancho de banda | Siguiente |
Para entender correctamente configuraciones más complicadas se necesita explicar primero algunos conceptos. Debido a la complejidad y la relativa novedad de este tema, la gente usa un montón de términos diferentes cuando en realidad quieren decir lo mismo.
Lo que sigue se basa remotamente en draft-ietf-diffserv-model-06.txt, Un modelo informal de gestión para routers Diffserv. Actualmente lo puede encontrar en http://www.ietf.org/internet-drafts/draft-ietf-diffserv-model-06.txt.
Léalo para ver las definiciones estrictas de los términos usados.
Un algoritmo que controla la cola de un dispositivo, sea de entrada (ingress) o de salida (egress).
Una qdisc sin subdivisiones internas configurables.
Una qdisc con clases contiene múltiples clases. Cada una de ellas contiene otra qdisc, que a su vez puede ser con clases, pero no tiene por qué. De acuerdo con la definición estricta, pfifo_fast *es* con clases, porque contiene tres bandas que son, en realidad, clases. Sin embargo, desde la perspectiva de configuración del usuario, no tiene clases ya que las clases no se pueden tocar con la herramienta tc.
Una qdisc con clases puede tener muchas clases, cada una de las cuales es interna a ella, pudiendo a su vez contener cada clase qdisc reales.
Cada qdisc con clases necesita determinar a qué clase necesita enviar un paquete. Esto se hace usando el clasificador.
La clasificación se puede realizar usando filtros. Un filtro contiene varias condiciones que pueden ser cumplidas.
Una qdisc puede, con la ayuda de un clasificador, decidir que algunos paquetes necesitan salir antes que otros. Este proceso se denomina Scheduling, y lo realiza por ejemplo la qdisc qfifo_fast anteriormente mencionada. El Scheduling también se denomina «reordenamiento», pero esto es confuso.
El proceso de retrasar paquetes antes de que salgan para hacer que el tráfico sea conforme a una tasa máxima configurada. El Shapping se realiza durante la salida («egress»). Coloquialmente, al descarte de paquetes para ralentizar el tráfico también se le suele denominar Shapping.
Retrasar o descartar paquetes para que el tráfico se mantenga por debajo de un ancho de banda configurado. En Linux, el «policing» sólo puede descartar paquetes, no retrasarlo (no hay una «cola de ingreso» - ingress queue).
Una qdisc conservativa de trabajo (work-conserving) siempre distribuye paquetes si los hay disponibles. En otras palabras, nunca retrasa un paquete si el adaptador de red está preparado para enviarlo (en el caso de una qdisc de salida - egress).
Algunas colas, como la Token Bucket Filter, por ejemplo, pueden necesitar retrasar un paquete durante un cierto tiempo para limitar el ancho de banda. Esto significa que algunas veces rechazarán enviar un paquete, incluso aunque los haya disponibles.
Ahora que conocemos la terminología, veamos dónde están todas estas cosas.
Programas en espacio de usuario
^
|
+---------------+-----------------------------------------+
| Y |
| -------> Pila IP |
| | | |
| | Y |
| | Y |
| ^ | |
| | / ----------> Reenvío -> |
| ^ / | |
| |/ Y |
| | | |
| ^ Y /-qdisc1-\ |
| | Clasificador de /--qdisc2--\ |
--->-> Qdisc de Salida (Egress) ---qdisc3---- | ->
| Entrada (Ingress) \__qdisc4__/ |
| \-qdiscN_/ |
| |
+----------------------------------------------------------+
Gracias a Jamal Hadi Salim por esta representación ASCII.El gran bloque representa al núcleo. La flecha de la izquierda es el tráfico entrando en la máquina desde la red. Entonces se le pasa a la Qdisc de Entrada que puede aplicar filtros a los paquetes, y decidir descartarlos. A esto se le llama «Policing».
Esto ocurre en una etapa muy temprana, antes de que se haya visto mucho del núcleo. Por tanto, es un buen lugar para descartar tráfico sin consumir mucho tiempo de CPU.
Si se le permite continuar al paquete, puede estar destinado a una aplicación local, en cuyo caso entra en la pila IP para ser procesado, y se envía a un programa en espacio de usuario. El paquete también puede ser reenviado sin pasar por una aplicación, en cuyo caso se destina a la salida (egress). Los programas de espacio de usuario también pueden distribuir datos, que serán examinados y reenviados por el Clasificador de Salida.
Ahí es observado y encolado por cualquiera de varias qdisc. En el caso por defecto, sin configurar, sólo hay instalada una qdisc de salida, pfifo_fast, que siempre recibe el paquete. A esto se le llama «encolado» (enqueueing).
Ahora el paquete está en la qdisc, esperando a que el núcleo pida que sea retransmitido por la interfaz de salida. A esto se le llama «desencolado».
Esta figura también funciona en el caso de que haya un único adaptador de red (las flechas de entrada y salida al núcleo no se deben tomar demasiado literalmente). Cada adaptador de red tiene ranuras tanto para entrada como para salida.