[ Introducción ] [
Caso-Estudio
] [ Instalación ] [ Configuración base ] [
Alias ] [ NAT
] [ Reglas ] [ DNS ] [ DHCP
] [ Caudal ] [ OpenVPN ] [ Portal
]
[ OpenVPN sin DHCP
] [ spamd ]
El regulador de caudal ALTQ (Alternate Queuing) forma parte de Packet Filter (PF), originario de OpenBSD. Packet Filter (PF) está presente como estándar en FreeBSD desde noviembre del 2004. pfSense es una distribución basada en FreeBSD.
ALTQ es un conjunto de herramientas de calidad de servicio (QoS) que permiten montar colas de tráfico, asignando caudales y prioridades. ALTQ dispone de distintos modelos de funcionamiento.
pfSense emplea colas HFSC (Hierarchical Fair Service Curve) con funcionalidades ACK, RED (Random Early Detection) y ECN (Explicit Congestion Notification).
Cada cola HFSC (Hierarchical Fair Service Curve) tiene los siguientes parámetros encargados de garantizar su caudal:
UpperLimit: Caudal máximo para la cola. Nunca tendrá más tráfico que el indicado.
RealTime: Caudal mínimo para la cola. Independientemente del tráfico que se tenga en la interfase se garantiza este caudal.
LinkShare: HFSC calcula el caudal sobrante en la interfase teniendo en cuenta que se cumplan los caudales mínimos (RealTime) de cada cola. Este sobrante de caudal se reparte entonces entre las colas, en función de su valor LinkShare. Por ejemplo, si se tienen dos colas con un 50% en LinkShare y se satura la conexión, ambas colas presentarán el mismo exceso de tráfico. Por contra, si una de las dos colas no necesita caudal sobrante, la otra lo cogerá todo.
m1: Caudal inicial a tener en d milisegundos.
d: Milisegundos que se tardará en tener el caudal m1.
m2: Caudal final a tener. Los parámetros m1, d y m2 modelan la curva (arranque) de la cola.
BandWidth: Por comodidad, se indica este parámetro que, de hecho, corresponde al valor m2 de LinkShare. Si ponemos un valor en m2 de LinkShare el que esté en BandWidth no sirve para nada. Se recomienda no hacerlo.
En las ventanas que pfSense tiene para las colas estos parámetros se presentan en forma de tabla, excepto BandWidth que figura como primer parámetro de la cola:
m1 | d | m2 | |
UpperLimit | |||
RealTime | |||
LinkShare |
ALTQ
es algo complejo de configurar y ajustar, por lo que pfSense incorpora un
asistente y herramientas de monitorización de las colas.
[Firewall] [Traffic Shaper]
[Wizard]
Colas creadas por el asistente
Ajuste del regulador de caudal
La otra solución para controlar P2P
La primera vez que entramos aquí se ejecutará el asistente ...
¡Atención! Cuando ya tengamos configurado Traffic Shaper la simple entrada al asistente desmonta toda la configuración de Traffic Shaper. Si hacemos clic sobre el logotipo de pfSense se cancela la acción.
Hacemos clic sobre el botón para continuar con el asistente ...
Ahora tendremos que indicar:
La interfase de dentro (inside) y la velocidad de bajada (download) de la ADSL en kbit/s.
La interfase de fuera (outside) y la velocidad de subida (upload) de la ADSL en kbit/s.
Si se puede medir la ADSL empleando una herramienta como MRTG, mejor. En el caso expuesto se ha podido comprobar con MRTG que "la cosa" no da para más de 1.300/250 kbit/s.
Hacemos ...
A continuación se nos pide si queremos un tratamiento especial para comunicaciones de voz sobre IP. Como que no es nuestro caso, nos saltamos la pantalla con ...
Ahora es el momento de ocuparse de las conexiones P2P. Marcamos aquí las dos primeras casillas, la de habilitar un tráfico menor para las aplicaciones P2P (Enable) y la de considerar P2P todo aquello que no esté previsto (p2pCatchAll):
Le damos a para continuar ..
La siguiente pantalla del asistente permite otorgar tráfico prioritario a varios juegos. Hacemos de nuevo ...
Ahora se nos pedirá si deseamos activar el control de prioridades para el resto de tráfico. Lo activamos, con lo que todos los tipos de tráfico configurables (en esta ventana) tomarán la prioridad por defecto (Default priority). Una vez hecho esto le damos de nuevo a ...
Y tendremos la pantalla final del asistente ...
Aquí se dice simplemente que la activación de las colas afectará sólo a las nuevas conexiones y que si se quiere que se aplique a todas habrá que reiniciar la tabla de estados (con posible pérdida de conexiones), yendo a [Diagnostics] [States] [Reset States].
Una vez hayamos hecho clic en el botón veremos cómo se recargan las reglas (ahora hay muchas y toman su tiempo):
Y cuando termina se ofrece la posibilidad de ir directamente a ver el estado de las colas creadas (Queue Status):
El asistente habrá creado las siguientes colas, con los siguientes caudales, prioridades y curvas de tráfico:
Colas-hijas de qwanRoot (Cola-madre de WAN) | Colas-hijas de qAlumnesRoot (Cola-madre de Alumnes) | |||||||||||||||||||||||||
Caudal | Prioridad | Curva | Caudal | Prioridad | Curva | |||||||||||||||||||||
qwandef es la cola por defecto (la mayoría del tráfico). | 1 % | 1 |
|
qAlumnesdef es la cola por defecto (la mayoría del tráfico). | 1 % | 1 |
|
|||||||||||||||||||
qwanacks es la cola de acuse de recibo (ACK). No puede haber pérdidas (drops), ya que ello cortaría/ralentizaría las conexiones. | 25 % | 7 |
|
qAlumnesacks es la cola de acuse de recibo (ACK). No puede haber pérdidas (drops), ya que ello cortaría/ralentizaría las conexiones. | 25 % | 7 |
|
|||||||||||||||||||
qP2PUp es la cola de subida a Internet empleando aplicaciones P2P (Emule, Ares, ...) | 1 % | 1 |
|
qP2PDown es la cola de bajada de Internet empleando aplicaciones P2P (Emule, Ares, ...) | 1 % | 1 |
|
|||||||||||||||||||
qOthersUpH es la cola de otras subidas a Internet con prioridad alta (High). ¡No la necesitamos! | 25 % | 4 |
|
qOthersDownH es la cola de otras bajadas de Internet con prioridad alta (High). ¡No la necesitamos! | 25 % | 4 |
|
|||||||||||||||||||
qOthersUpL es la cola de otras subidas a Internet con prioridad baja (Low). ¡No la necesitamos! | 1 % | 2 |
|
qOthersDownL es la cola de otras bajadas de Internet con prioridad baja (Low). ¡No la necesitamos! | 1 % | 2 |
|
Podremos ver con más detalle qué ha hecho el asistente yendo a [Firewall][Trafic Shaper] y mirando:
[Queues], que son las colas creadas.
[Rules], que son las reglas que determinan a qué cola va a parar un determinado tipo de tráfico.
Observemos que las colas qOthers no las necesitamos porqué hemos dejado todos los protocolos que no son P2P en Default priority, con lo que van todos por qwandef y qAlumnesdef.
Yendo a [Status][Queues] del cortafuegos podremos ver gráficos en tiempo real (pfSense utiliza RRDtool como herramienta estadística) y estadísticas que nos dicen:
pps, paquetes por segundo.
b/s o kb/s (bits por segundo o quilobits por segundo).
borrows, paquetes (ancho de banda) tomados de la cola-madre. No aplicable en nuestro caso, ya que sólo existe una madre para todas las colas de subida o de bajada.
suspends, paquetes cancelados (¿?). No he visto ninguno aún y no sé demasiado que son. No he encontrado una documentación clara sobre este aspecto.
drops, paquetes descartados. Es lo que interesa que haya en las colas de menos prioridad y que no debe estar nunca en las colas ACK.
Yendo a [Firewall] [Traffic Shaper] [Queues] dejamos las colas de la siguiente forma, después de bastantes pruebas:
Colas-hijas de qwanRoot (Cola-madre de WAN) | Colas-hijas de qAlumnesRoot (Cola-madre de Alumnes) | |||||||||||||||||||||||||
Caudal | Prioridad | Curva | Caudal | Prioridad | Curva | |||||||||||||||||||||
qwandef | 79 % | 3 |
|
qAlumnesdef | 84 % | 3 |
|
|||||||||||||||||||
qwanacks | 20 % | 7 |
|
qAlumnesacks | 15 % | 7 |
|
|||||||||||||||||||
qP2PUp | 1 kb/s | 1 |
|
qP2PDown | 1 kb/s | 1 |
|
Los cambios hechos son suficientes para garantizar que no hay pérdidas de paquetes en ninguna cola, salvo en las de P2P, que es lo que nos interesa.
La otra solución para controlar los accesos P2P
La otra solución para evitar las conexiones P2P es adoptar reglas de cortafuegos y no usar ALTQ.
Para hacer esto desactivaremos Traffic Shaper en [Firewall][Traffic Shaper] y definiremos primero los siguientes alias:
Y a continuación, en la interfase de Alumnes, donde nuestra última regla es:
cambiaremos esta regla por las siguientes:
Con esto autorizaremos sólo la navegación por Internet, FTP, la actualización de la fecha/hora de los ordenadores de la red y las herramientas ICMP (PING y otras). Los puertos de 8000 a 8100 son empleados normalmente para streaming (audio y/o vídeo) o como puertos alternativos en servidores web.
Evidentemente esta solución es más segura que emplear ALTQ pero también es mucho más restrictiva.
Autor: Josep Pujadas i Jubany
© 2007. Todos los derechos reservados