Bienvenidos

Bienvenidos al libro digital de Micro Outsourcing, aquí encontraras una serie de artículos preparados por nuestros profesionales con base a nuestras experiencias y conocimientos, con el compromiso de aclarar tus inquietudes y solucionar los problemas que se presentan a diario en el campo informático.

lunes, 17 de enero de 2011

Segmentacion de Ancho de Banda

Antecedentes.

En muchas empresas, cyber, o lugares con acceso a Internet sucede el fenómeno, cuando un usuario quiere ingresar a la Web y realizar ciertas tareas (transacciones en linea, revisar correos, paginas de consulta, etc.) se encuentra que la navegación se torna muy lenta y se pregunta ¿qué esta pasando?. Sorpresa que en el mismo lugar otros usuarios están descargando programas, música, vídeos, etc. Y por estos y mas motivos segmentar el ancho de banda para los usuarios es una buena elección.

Objetivos.

El objetivo de aplicar segmentación de ancho de banda por paquetes, es asignar a los usuarios y parte de la red un mínimo y máximo del ancho de banda (Kb). Con esto evitamos el abuso de los usuarios al momento de navegar en la red y nos aseguramos que la red no se congestione.

Los Requerimientos.

Para realizar esta configuración necesitamos:
  • Tener instalado y funcionando el Shorewall
  • Realizar un script el cual contendrá la programación.
Diagrama Conceptual.

En estos diagrama se muestra un esquema como quedara segmentada nuestra red.

Diagrama cola TC WAN.



Diagrama cola TC LAN


Manos a la obra.

Paso 1.
En esta parte declaramos nuestras variables.

OK="\033[1;0m [ \033[00;32mOK \033[1;0m]\033[0m" e
cho -e "Generacion de colas: $OK"
### Interfaces ###
DEVWAN="eth0" #WAN
DEVLAN="eth1" #LANTC=/sbin/tc


Paso 2.
Aqui indicamos que se realice un flush de politicas existentes

tc qdisc del root dev $DEVWAN
tc qdisc del root dev $DEVLAN

echo OK hasta aqui


Paso 3.
Declaramos a los padres del árbol de la WAN

####PADRES WAN
$TC qdisc add dev $DEVWAN root handle 1: htb default 1 r2q 10
$TC class add dev $DEVWAN parent 1: classid 1:1 htb rate 1000Kbit ceil 1000kbit
$TC class add dev $DEVWAN parent 1:100 classid 1:100 htb rate 1000Kbit ceil 1000Kbit


Nota:
root: la raíz del árbol

parent: el padre
classid: el hijo

htb: tipo de cola

rate: especifica el mínimo Kb

ceil: especifica el máximo Kb


Paso 4.

Definimos a los hijos del árbol WAN.

#HIJOS-WAN
$TC class add dev $DEVWAN parent 1:100 classid 1:201 htb rate 100Kbit ceil 100Kbit prio 0
$TC class add dev $DEVWAN parent 1:100 classid 1:301 htb rate 4Kbit ceil 4Kbit prio 0
$TC class add dev $DEVWAN parent 1:100 classid 1:401 htb rate 10Kbit ceil 800Kbit prio 0
$TC class add dev $DEVWAN parent 1:100 classid 1:501 htb rate 500Kbit ceil 500Kbit prio 0


Paso 5.
En esta parte enlazamos las direcciones IP con las marcas de los paquetes, que seran definidos aqui y en el tcrules del shorewall.

#REGISTRAR-WAN
$TC filter add dev $DEVWAN protocol ip parent 1: handle 201 fw classid 1:201
$TC filter add dev $DEVWAN protocol ip parent 1: handle 301 fw classid 1:301
$TC filter add dev $DEVWAN protocol ip parent 1: handle 401 fw classid 1:401
$TC filter add dev $DEVWAN protocol ip parent 1: handle 501 fw classid 1:501


handle: cabecera
Paso 6.
Realizamos los pasos del 3-5 pero para la red LAN


####$DEVLAN
$TC qdisc add dev $DEVLAN root handle 2: htb default 1 r2q 10
$TC class add dev $DEVLAN parent 2: classid 2:100 htb rate 10Mbit ceil 100Mbit
$TC class add dev $DEVLAN parent 2:100 classid 2:1 htb rate 10Mbit ceil 100Mbit #HIJOS-LAN
$TC class add dev $DEVLAN parent 2:100 classid 2:201 htb rate 100Kbit ceil 100Kbit prio 0
$TC class add dev $DEVLAN parent 2:100 classid 2:301 htb rate 4Kbit ceil 4Kbit prio 0
$TC class add dev $DEVLAN parent 2:100 classid 2:401 htb rate 600Kbit ceil 800Kbit prio 0
$TC class add dev $DEVLAN parent 2:100 classid 2:501 htb rate 500Kbit ceil 500Kbit prio 0
#REGISTRAR-LAN
$TC filter add dev $DEVLAN protocol ip parent 2: handle 201 fw classid 2:201
$TC filter add dev $DEVLAN protocol ip parent 2: handle 301 fw classid 2:301
$TC filter add dev $DEVLAN protocol ip parent 2: handle 401 fw classid 2:401
$TC filter add dev $DEVLAN protocol ip parent 2: handle 501 fw classid 2:501 ####FINSCRIPT


Nota: Todo dentro de un mismo script.
-------------------------------------------------------------------------------------------------
Paso 7.
En este punto editamos el archivo "tcrules" ubicado en:


# vi /etc/shorewall/tcrules



Grabamos dentro del vi ":wq".

Paso 8.
Una vez grabado reiniciamos el servicio.


# service shorewall restart


Paso 9.
Ejecutamos nuestro script.


# ./archivo


Pruebas.

Para verificar que la cola TC de la red WAN fue creada.

# tc -s -d qdisc show dev eth0


Para verificar que la cola TC de la red LAN fue creada.

# tc -s -d qdisc show dev eth1


Recomendaciones.

  • Antes de ejecutar el script verificar que este en texto unix (#dos2unix ).
  • Dar permisos de ejecución al script.
  • Verificar que el shorewall este funcionando correctamente.
  • Realizar un diagrama de como quedara segmentada nuestra red.


2 comentarios:

  1. Hola John, estuve poniendo en practica tu articulo y encontré unas observaciones, primero.- el comando (TC) esta en mayusculas cuando funciona en minuscula (tc).
    Segundo.- hay que convertir el script creado con dos2unix.
    Tercero.- en el archivo tcrules las marcas no funcionaron desde el 301, por lo que tuve que cambiar el script y quitarles el 0 a todas las marcas quedando el 301 como 31 y sucesivamente.

    ResponderEliminar
  2. Gracias por el articulo me esta funcionando perfecto.

    ResponderEliminar