35 votos

¿Alguien realmente entiende cómo HFSC programación en Linux/BSD funciona?

He leído el original SIGCOMM '97 PostScript de papel sobre HFSC, es muy técnico, pero entiendo el concepto básico. En lugar de dar un servicio lineal de la curva (como con casi todos los otros algoritmo de programación), se puede especificar un convexo o cóncavo servicio de la curva y por lo tanto es posible desacoplar el ancho de banda y retardo. Sin embargo, aunque en este trabajo se menciona a la clase de algoritmos de programación que se usa (en tiempo real y link-share), siempre se menciona sólo UNA curva por la clase de programación (la separación se realiza mediante la especificación de esta curva, sólo una de las curvas, es necesario para que).

Ahora HFSC, se ha implementado para BSD (OpenBSD, FreeBSD, etc.) el uso de la ALTQ programación de marco y se ha implementado de Linux utilizando el TC programación de marco (parte de iproute2). Ambas implementaciones añadido dos adicionales servicio de curvas, que fueron NO en el original en papel! Un servicio en tiempo real de la curva y un límite superior de servicio de la curva. De nuevo, por favor, tenga en cuenta que el documento original menciona dos algoritmos de programación (en tiempo real y link-share), pero en la que el papel de ambos trabajan con un solo servicio de la curva. Nunca han existido dos independientes, servicio de curvas para uno como que actualmente se encuentra en BSD y Linux.

Peor aún, alguna versión de ALTQ parece agregar una cola de prioridad para HSFC (no hay tal cosa como prioritarias en el documento original). He encontrado varios BSD HowTo de mencionar este establecimiento de prioridades (aunque la página man de la última ALTQ liberación no conoce tal parámetro para HSFC, por lo que, oficialmente aún no existe).

Todo esto hace que el HFSC programación aún más complejo que el algoritmo descrito en el documento original y hay un montón de tutoriales en Internet que a menudo se contradicen entre sí, los que dicen lo contrario de la otra. Esta es probablemente la razón principal por la que nadie parece entender cómo HFSC programación realmente funciona. Antes de que pueda preguntar a mis preguntas, tenemos un ejemplo de la instalación de algún tipo. Voy a usar una muy sencilla, como se ve en la imagen de abajo:

alt text

Aquí hay algunas preguntas que no puedo responder porque los tutoriales se contradicen unas a otras:

  1. ¿Para qué necesito una curva en tiempo real? Suponiendo que en A1, A2, B1, B2 son todos de 128 kbit/s link-compartir (sin curva en tiempo real, ya sea para uno), luego cada una de esas recibirá 128 kbit/s si la root tiene 512 kbit/s a distribuir (y a y B son ambos de 256 kbit/s de curso), derecho? Por qué iba yo además de dar A1 y B1 de una curva en tiempo real con 128 kbit/s? ¿Qué puede ser esto? Para dar a los dos de mayor prioridad? Según el original en papel se les puede dar una mayor prioridad por medio de una curva, que es lo que HFSC es sobre todo, después de todo. Por dar clases de una curva de [256kbit/s 20ms 128kbit/s] ambos tienen el doble de la prioridad que en A2 y B2 automáticamente (todavía sólo llegar 128 kbit/s en promedio)

  2. ¿El tiempo real del ancho de banda para el recuento de enlace-compartir el ancho de banda? E. g. si A1 y B1 ambos sólo han 64kbit/s en tiempo real y de 64kbit/s link-compartir el ancho de banda, ¿eso significa que una vez que se sirve a 64kbit/s en tiempo real a través, de sus vínculos-compartir requisito es satisfecho (a fin de obtener el exceso de ancho de banda, pero vamos a ignorar que por un segundo) o significa que conseguir otro de 64 kbit/s a través de enlace-compartir? Cada clase tiene un ancho de banda de la "exigencia" de tiempo real plus link-compartir? O ¿una clase sólo tiene un nivel de exigencia superior de la curva en tiempo real si el enlace de compartir la curva es mayor que la de la curva en tiempo real (actual enlace de compartir requisito especificado es igual a link-compartir requisito de menos de banda en tiempo real ya que nos proporciona esta clase)?

  3. Es el límite superior de la curva de aplicar a tiempo real también, sólo para vincular-compartir, o tal vez a ambos? Algunos tutoriales decir de una manera, algunos dicen que de la otra manera. Algunos incluso afirman límite superior es el máximo de tiempo real del ancho de banda + enlace-compartir el ancho de banda? ¿Qué es la verdad?

  4. Suponiendo A2 y B2 son de 128 kbit/s, ¿hace alguna diferencia si A1 y B1 son de 128 kbit/s link-compartir sólo, o de 64 kbit/s en tiempo real y 128 kbit/s link-compartir, y si es así, ¿qué diferencia?

  5. Si yo uso los separados de la curva en tiempo real para aumentar las prioridades de las clases, ¿por qué me necesita "curvas"? Por qué no es en tiempo real un valor fijo y el enlace compartir también un valor fijo? ¿Por qué son ambas curvas? La necesidad de las curvas es claro en el documento original, porque no es sólo un atributo de la clase por clase. Pero ahora, después de tres atributos (real-time, link-compartir y límite superior) ¿para qué necesito todavía curvas en cada uno de ellos? ¿Para qué quiero las curvas de la forma (no el promedio de ancho de banda, pero sus pendientes) a ser diferentes en tiempo real y el enlace compartir el tráfico?

  6. De acuerdo a la escasa documentación disponible, en tiempo real de la curva de valores son totalmente ignorados por las clases internas (clase a y B), que solo se aplican a las clases de hoja (A1, A2, B1, B2). Si eso es cierto, ¿por qué el ALTQ HFSC de configuración de ejemplo (búsqueda de 3.3 configuración de Ejemplo) conjunto de curvas de tiempo real en el interior de las clases y afirma que las establece la tasa garantizada de aquellos interior de las clases? No es que completamente inútil? (nota: pshare establece el enlace compartido curva en ALTQ y rallar la curva en tiempo real; se puede ver que esta en el párrafo anterior, la configuración de ejemplo).

  7. Algunos tutoriales decir la suma de todas las curvas de tiempo real no puede ser mayor que el 80% de la velocidad de la línea, otros dicen que no debe ser mayor que 70% de la velocidad de la línea. Cual es el adecuado o son tal vez de tanto mal?

  8. Un tutorial dice que se olvide toda la teoría. No importa cómo funcionan realmente las cosas (programadores y ancho de banda de distribución), imaginar las tres curvas de acuerdo a la siguiente "simplificado mente modelo": el tiempo real es el ancho de banda garantizado de que esta clase de siempre. enlace-compartir es el ancho de banda que esta clase quiere llegar a ser plenamente satisfecho, pero la satisfacción no puede ser garantizada. En caso de que haya exceso de ancho de banda, la clase puede incluso llegan a ofrecer más ancho de banda que se necesita para estar satisfechos, pero nunca podrá usar más de límite superior, dice. Para que todo esto funcione, la suma de todos los tiempo real anchos de banda no puede estar por encima de xx% de la velocidad de la línea (ver la pregunta anterior, el porcentaje varía). Pregunta: Es esto más o menos precisa o una total incomprensión de HSFC?

  9. Y si la hipótesis anterior es muy precisa, donde es el establecimiento de prioridades en ese modelo? E. g. cada clase puede tener una banda en tiempo real (garantizado), un enlace compartido de ancho de banda (no garantizado) y un tal vez, un límite superior, pero todavía algunas clases tienen mayor prioridad que las otras clases. En ese caso yo todavía debe priorizar, de alguna manera, incluso entre los de tráfico en tiempo real de las clases. Iba yo a priorizar por la pendiente de las curvas? Y si es así, que la curva? La curva en tiempo real? El enlace de compartir la curva? El límite superior de la curva? Todos ellos? Iba yo a dar a todos ellos la misma pendiente o cada uno diferente y cómo encontrar el derecho de la pendiente?

Todavía no he perdido la esperanza de que existe al menos una mano llena de gente en este mundo que realmente entiende HFSC y son capaces de responder a todas estas preguntas con precisión. Y hacerlo sin contradecirse el uno al otro en las respuestas sería muy bueno ;-)

5voto

Bruno Gysels Puntos 71

Puede definir las curvas con diferentes nombres:

  • rt, curva en tiempo real, ancho de banda y retardo de garantía.
  • ls, link-compartir la curva de ancho de banda, retardo/compartir (basado en la configuración de vecino hojas)
  • ul, el límite superior de la curva, el máximo ancho de banda y retardo se puede alcanzar.

¿Para qué necesito una curva en tiempo real? Suponiendo Que En A1, A2, B1, B2 son todos de 128 kbit/s link-compartir (sin curva en tiempo real, ya sea para uno), luego cada una de esas recibirá 128 kbit/s si la root tiene 512 kbit/s a distribuir (y a y B son ambos de 256 kbit/s de curso), derecho? Por qué me podría además dar A1 y B1 de una curva en tiempo real con 128 kbit/s? ¿Qué puede ser esto? Para dar a los dos de mayor prioridad? Según el original en papel se les puede dar una mayor prioridad en el uso de una curva, que es lo que HFSC es sobre todo, después de todo. Por dar tanto clases de una curva de [256kbit/s 20ms 128kbit/s] ambos tienen el doble de los la prioridad de la A2 y B2 automáticamente (todavía sólo llegar 128 kbit/s en promedio)

Cuando usted hace una definición en HFSC con tasas de sólo, se ajusta automáticamente el 'dmax' a 0. Lo que básicamente significa que no tiene en cuenta la demora. Una buena HFSC de configuración debe incluir tanto el ancho de banda Y el retardo de los límites que desea utilizar para su clase, de lo contrario, el algoritmo no puede averiguar exactamente cómo es el nivel de prioridad de una clase deben obtener.

Cada vez que le dé los paquetes de prioridad, otros paquetes tienen que ser disminuido en prioridad. Basado en el 'dmax' y 'tasa' los valores de todas las clases serán de multiplexado con el uso de virtual temporizadores. Consulte tc-hfsc(7) para más información.

¿El tiempo real del ancho de banda para el recuento de enlace-compartir el ancho de banda? E. g. si A1 y B1 ambos sólo han 64kbit/s en tiempo real y de 64kbit/s enlace-compartir el ancho de banda, ¿eso significa que una vez que se sirve a 64kbit/s a través de en tiempo real, su vínculo compartir requisito es satisfecho (ellos podría obtener el exceso de ancho de banda, pero vamos a ignorar que por un segundo) o no que significa que obtener otra de 64 kbit/s a través de enlace-compartir? Lo hace cada la clase tiene un ancho de banda de la "exigencia" de tiempo real plus link-compartir? O hace una clase sólo tiene un nivel de exigencia superior de la curva en tiempo real si el enlace de compartir la curva es mayor que la de la curva en tiempo real (actual enlace-compartir requisito especificado es igual a link-compartir requisito de menos en tiempo real del ancho de banda ya que nos proporciona esta clase)?

Si el flujo es no pasarse de los límites del enlace compartido definición de la clase, entonces la curva en tiempo real no se utiliza nunca. La definición de una curva en tiempo real, en este caso, permite por ejemplo: para garantizar una cierta 'dmax'.

Si el enlace de compartir las definiciones son impecables, entonces no necesita curvas de tiempo real. Sólo se podía definir el servicio curvas (sc), pero que haría que su configuración de trabajar más duro.

Es el límite superior de la curva de aplicar a tiempo real también, sólo para vincular-compartir, o tal vez a ambos? Algunos tutoriales decir de una manera, algunos dicen que de la otra manera. Algunos incluso afirman límite superior es el máximo de tiempo real del ancho de banda + enlace-compartir el ancho de banda? ¿Qué es la verdad?

El límite superior de la curva de la clase se aplica a link-compartir sólo, cuando se define un límite superior de la curva DEBE definir un enlace compartido de la curva. Sin embargo, el límite superior de la curva de clases para los padres todavía se aplican.

Suponiendo A2 y B2 son de 128 kbit/s, ¿hace alguna diferencia si A1 y B1 son de 128 kbit/s link-compartir sólo, o de 64 kbit/s en tiempo real y 128 kbit/s link-compartir, y si es así, ¿qué diferencia?

Hay una ligera diferencia, por ejemplo, si A2 = 0 kbits/s y B2 = 256 kbits/s. Luego de la virtual-tiempo para A2 estará en su máximo. Cuando los paquetes son clasificados en A2, que será inmediatamente procesados. Sin embargo, la curva en tiempo real de B2, asegurarse de que es capaz de transmitir al menos 64 kbit/s

Si yo uso el separar la curva en tiempo real para aumentar las prioridades de las clases, ¿por qué me necesita "curvas"? Por qué no es en tiempo real plana el valor y el enlace compartir también un valor fijo? ¿Por qué son ambas curvas? La necesidad para las curvas es claro en el documento original, porque sólo hay uno atributo de esa clase por clase. Pero ahora, después de tres atributos (real-time, link-compartir y límite superior) ¿para qué necesito todavía las curvas en cada uno de ellos? ¿Para qué quiero las curvas de la forma (no promedio el ancho de banda, pero sus pendientes) a ser diferentes en tiempo real y enlace-compartir el tráfico?

Curvas de tiempo Real no compartir el tráfico entre el prójimo hojas, link-compartir las curvas de hacer.

De acuerdo a la escasa documentación disponible, en tiempo real de la curva de los valores son totalmente ignorados por las clases internas (clase a y B), que son sólo se aplica a la hoja de clases (A1, A2, B1, B2). Si eso es cierto, ¿por qué ¿el ALTQ HFSC de configuración de ejemplo (búsqueda de 3.3 Muestra de configuración) conjunto de curvas de tiempo real en el interior de las clases y de las reclamaciones que aquellos que establezca la tasa garantizada de aquellos interior de las clases? No es que completamente inútil? (nota: pshare establece el enlace compartido curva en ALTQ y rallar la curva en tiempo real; se puede ver que esta en el párrafo anterior el ejemplo de configuración).

Es cierto que las curvas de tiempo real son ignorados por las clases internas, que solo se aplican a las clases de hoja. Sin embargo, el verdadero curvas de tiempo definidos en los interiores de las clases se toman en cuenta para los cálculos en la hoja de clases.

Algunos tutoriales decir la suma de todas las curvas de tiempo real no puede ser mayor que el 80% de la velocidad de la línea, otros dicen que no debe ser mayor que 70% de la velocidad de la línea. Cual es el adecuado o son tal vez de tanto mal?

Lo que quieren decir es: no se puede priorizar todo el tráfico ... cada vez que le dé los paquetes de prioridad, otros paquetes tienen que ser disminuido en prioridad. Si el exceso de garantía, el algoritmo se convierte en inútil. Definir la clase que la ganancia de la asignación de prioridades y definir las clases que pueden sufrir.

Un tutorial dice que se olvide toda la teoría. No importa cómo funcionan realmente las cosas (programadores y ancho de banda de distribución), imaginar las tres curvas de acuerdo a la siguiente "simplificado mente modelo": el tiempo real es el ancho de banda garantizado de que esta clase de siempre. enlace-compartir es el ancho de banda que esta clase quiere llegar a ser plenamente satisfecho, pero la satisfacción no puede ser garantizada. En caso de que exista el exceso de ancho de banda, la clase puede incluso llegan a ofrecer más ancho de banda que es necesario estar satisfechos, pero nunca podrá usar más de límite superior dice. Para que todo esto funcione, la suma de todos los tiempo real anchos de banda no puede estar por encima de xx% de la velocidad de la línea (ver la pregunta anterior, el porcentaje varía). Pregunta: Es esto más o menos precisa o un total incomprensión de HSFC?

Este es correcta.

Y si la hipótesis anterior es muy precisa, donde es el establecimiento de prioridades en que modelo? E. g. cada clase puede tener una banda en tiempo real (garantizado), un enlace compartido de ancho de banda (no garantizado) y tal vez un límite superior, pero todavía algunas clases tienen una mayor prioridad a las necesidades de otras clases. En ese caso yo todavía debe priorizar, de alguna manera, incluso entre el tráfico en tiempo real de las clases. Iba yo a priorizar por el la pendiente de las curvas? Y si es así, que la curva? La curva en tiempo real? El enlace-compartir la curva? El límite superior de la curva? Todos ellos? Daría todo de ellos la misma pendiente o cada uno diferente y cómo encontrar el a la derecha de la pendiente?

La diferencia entre por ejemplo, HFSC y HTB es que HFSC le permitirá definir exactamente cuánto priorisation desee. Usted puede hacer esto por definir el mínimo y máximo de los límites con el 'dmax de valor.

2voto

Mecki Puntos 318

Por fin una guía que parece explicar la mayor parte de las inconsistencias y también cómo la implementación actual es diferente de la original en papel:

http://manpages.ubuntu.com/manpages/precise/man7/tc-hfsc.7.html

De acuerdo a esta guía, muchas guías y otros mensajes en el foro sobre HFSC son totalmente absurdo; sólo muestra lo complicado que HFSC es, como muchas personas que parecen ser expertos y pretender entender completamente HFSC, en realidad, tienen sólo un conocimiento parcial y de hacer declaraciones falsas basado en la incomprensión del concepto y de cómo todos los ajustes de jugar juntos.

Creo que, finalmente, dar seguimiento a HFSC. Si usted puede conseguir su HFSC instalación de derecho, puede ser la mejor QoS se puede obtener, pero las posibilidades de que usted completamente en desorden, son muy superiores a las posibilidades de que usted tenga éxito.

1voto

PazEr80 Puntos 23

Si no eres capaz de conseguir un asimiento de los autores originales, a continuación, me gustaría probar esta a continuación:

  1. ir a la fuente del núcleo de linux árbol y encontrar C archivos que se implemente el "TC programación de marco"
  2. Mira encabezado y encontrar el autor de código.
  3. E-Mail programadores de la "TC programación de marco", pidiéndoles para la literatura en su aplicación.

También pruebe a comprobar otros más recientes documentos que citan este. Puede haber nuevos documentos que son una continuación de la investigación en esta área y pueden incluir más información acerca de las preguntas que se están haciendo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: