Siguiente: Cambios en los parámetros
Subir: Solución adoptada
Anterior: Esquema utilizado
  Índice General
Al iniciar la pasarela se ha sustituido el script que incluía Nocat por un script
llamado inicio_QoS que crea las siguientes clases:
- Root Down. Es la clase raíz de la interfaz interna. De esta clase colgarán
todas las clases definidas en esta interfaz. El ancho de banda asignado a esta clase es el total
del enlace.
El script inicio_QoS toma los valores del archivo de configuración de Nocat,
donde se ha creado una directiva llamada MaxBandWidhtDown.
- Root Up. Esta es la clase raiz para el caudal de subida, al igual que para la bajada toma
los valores del archivo de configuración.
- Default Down. Es la primera clase hijo de Root Down y también toma los valores del archivo
de configuración de nocat. Está definida para recoger todo el tráfico que no sea asignado a ninguna clase.
A esta clase se le asigna como tasa garantizada
MinBandWidthDown y como máximo alcanzable el total MaxBandWidthDown.
- Default Up. Es la clase por defecto para la subida. En principio es la única que se define
y por tanto todo el tráfico de subida pertenecerá a esta clase. Los valores serán
MinBandWidthUp para la tasa garantizada y MaxBandWidthUp para el máximo alcanzable.
Una vez definidas estas clases inicialmente, sólo nos queda que cada vez que un usuario se conecta
se cree una nueva clase con sus parámetros correspondientes.
Para crear y borrar las clases se ha creado un script qos.fw
al que hay que pasarle los siguientes
parámetros: un identificador de clase, la dirección IP del usuario, el ancho de banda mínimo, el ancho de banda máximo
y la prioridad. Todos los parámetros son obligatorios
en el caso de que estemos creando una clase y sólo el identificador de clase para borrarla.
Este script se encarga de crear la clase correspondiente de un usuario, de asignarle una disciplina de colas HTB con
los parámetros pasados y de asignar a esa clase todo el tráfico cuyo destino
sea la dirección IP del usuario. Al borrar sigue los pasos
inversos: borra el filtro para asignar el tráfico, luego borra la disciplina de colas y por último
borra la clase.
Ya hemos visto lo que hace el script qos.fw,
pero no sabemos cómo pasarle los parámetros. Para pasarle los parámetros
se ha usado el mensaje encriptado que devuelve el servidor de autenticación
a la pasarela. Dentro de este mensaje introducimos los parámetros: id_cola, rate, ceil y prio que son
identificador de clase, ancho de banda mínimo, ancho de banda máximo y prioridad respectivamente.
Para asignar el id_cola de una conexión se pensó en primer lugar en utilizar
un campo de la tabla activacion donde el administrador insertara el identificador con un valor entre
3 y 655353.11, pero
esta solución restringía el número de usuarios activados para un servidor a 65532. Este
valor, a priori, no sabemos si será suficiente o no, pero en cualquier caso se puede usar otro método
mucho más eficiente. La otra opción, que finalmente ha sido la adoptada, es asignar los identificadores
dinámicamente. Para ello se ha creado una ''pila'' de la que cogemos un identificador cuando un
usuario se conecta, y lo volvemos a meter en la pila cuando un usuario se desconecta. De esta manera,
la limitación impuesta al sistema es mucho menor, ya que limitamos a que haya 65532 usuarios conectados
a la vez que dependan del mismo servidor de autenticación. Para guardar el id_cola de cada conexión y así poder borrar
la clase cuando se desconecte utilizamos el campo de la tabla conexion id_cola. Como pila
se usa un nueva tabla que incluimos en ControlNocat llamada id_cola que tiene un solo campo
y es iniciada con los valores de 3 a 65535 en hexadecimal. Para extraer de la pila seleccionamos un valor
de una fila y después la borramos, y para volver a meter en la pila introducimos otra vez el valor en la tabla.
Los parámetros de caudal y prioridad están guardados en la tabla grupos en los campos
caudal_min, caudal_max y prioridad. La tabla grupos se usa para definir todos los grupos que habrá en
el sistema. Los campos que incluye la tabla grupos son los siguientes:
----------------------- -----------cod_grupo VARCHAR(20)
tarifacion ENUM(''pdiaria'',''pmensual'',''pospago'',''bono'',''prepago'')
tarifa FLOAT(4)
inicio DATETIME
fin DATETIME
bono TIME
caudal_min INT
caudal_max INT
cod_politica VARCHAR(3)
prioridad VARCHAR(1)
comentarios VARCHAR(250)
Para meter los parámetros en el mensaje encriptado, dentro
del script login.cgi3.12 que es el que autentica al usuario cada
minuto, se inserta una función llamada consultaQoS que se incluye en el módulo ControlNocat.pm.
Esta función consulta los parámetros caudal_min, caudal_max y prioridad en la tabla grupos y consulta bien el
id_cola de la tabla conexiones si el usuario estaba activo, o bien saca un nuevo id_cola de la tabla
de id_cola que será asignado a ese usuario. De esta forma a cada minuto se envía un mensaje
encriptado con los valores del servidor de autenticación, esto nos sirve para poder cambiar
los datos dinámicamente durante una conexión.
Figura 3.9:
Proceso de conexión
|
Figura 3.10:
Proceso de renovación del popup
|
Figura 3.11:
Proceso de salida del sistema
|
Siguiente: Cambios en los parámetros
Subir: Solución adoptada
Anterior: Esquema utilizado
  Índice General
Jesús Martín
2003-09-16