Ave Petrus - Cosas que hago / que me interesan

jueves, enero 24, 2008

Como controlar la velocidad de conexion a Internet

El problema
En el colegio para el cual trabajo tenemos una conexion Internet relativamente lenta (512/256kbps) para la red de estudiantes, pero que tiene una cuota mensual de uso ilimitada (hasta ahora nunca hemos usado mas de 70GB en el mes). En horas pico la conexion se comparte entre 30 PCs y como resultado el servicio es comparable a dial-up (linea telefonica).
Ya convenci al hombre del $$$ para que nos pasemos a una conexion mas rapida (ADSL2+ que promete un maximo de 8/1.5Mbps) y que viene con una cuota mensual de 100GB. El acepto pero con la condicion de que le implemente un mecanismo para controlar la velocidad de acceso a Internet dependiendo de la hora del dia. Es decir que en la mañanas cuando los PCs se utilizan en clase usemos la velocidad maxima, pero que en las tardes la velocidad se reduzca a un 25% cuando se permite el uso de los salones de computadores para correo electronico, chats, IM (Mensajeria Instantanea), etc. El objetivo es evitar que el uso en las tardes utilice la cuota disponible de manera que las clases no se vean afectadas.

En busqueda de alternativas
Algunos consejos que recibi en Groklaw (www.groklaw.net) mi blog favorito son:
  • Google for traffic shaping router linux throttle
  • www.ipcop.org: look for the online manual and look up 'traffic shaping'
  • Firewall with IP tables and QoS: e.g. smoothwall with qos and adzapper


La solucion

La estrategia a usar es colocar un firewall entre la red de estudiantes y el Internet. Un firewall capaz de controlar la velocidad del trafico entrante y saliente. Este tipo de control es posible con QoS (Quality of Service), una serie de mecanismos para controlar el flujo de datos en una red con base en prioridades.

Smoothwall. Es un Linux distro que implementa un firewall con bajos requerimientos de hardware y herramientas de configuracion sencillas. La version actual utilizada es Smoothwall Express 3.0.
Website: http://www.smoothwall.org/

Hardware. Un PC armado con partes extras 256MB RAM, CPU 1.7MHz, 80GB HDD y 3 tarjetas de red.

Interfaces. La configuracion del firewall requiere al menos dos interfaces: Verde y Roja. La interfaz Roja es el Internet / WAN y la interfaz Verde es la LAN que se esta protegiendo (en este caso controlando). Smoothwall tambien usa el concepto de interfaces Naranja y Purpura para la Zona Desmilitarizada y red Inhalambricas respectivamente.

Instalacion. Se quema la imagen .iso de Smoothwall Express en CD (la ultima version se puede bajar del website; yo tenia una imagen que vino con la revista Linux Format Dic 2007). Es importante tener en cuenta que la instalacion borra cualquier contenido previo en el disco duro.
La instalacion es sencilla, solo hay que iniciar el PC con el CD de instalacion y seguir las instrucciones en la pantalla. Los unicos comentarios son:
  • Passwords. El instalador pregunta por dos passwords: root password (super-usuario en Linux) y admin password (se necesita para administrar Smoothwall desde la interfaz grafica).
  • Interfaces. Hay que entrar la configuracionde red para las interfaces (al menos la Roja y la Verde). Por ejemplo: ROJA (Internet): IP 192.168.0.98 / 255.255.255.0; VERDE (LAN): IP 192.168.2.100 / 255.255.255.0, DHCP enabled.
Una vez que la instalacion termina, Smoothwall se puede configurar usando un web browser desde un PC que este en la zona VERDE (a traves del puerto 81). Por ejemplo: http://192.168.2.100:81

Configuracion Basica. La primera recomendacion es echarle un vistazo a las secciones de la interfaz grafica y asignar valores adecuados para parametros obvios, como por ejemplo asignar zona horaria / fecha / hora, habilitar accesso remoto a traves de ssh, etc. A proposito ssh funciona a traves del puerto 222 en vez del puerto estandar 22.

A continuacion veremos la interfaz para configurar QoS y como hice para cambiar los parametros dependiendo de la hora del dia.

Configuracion de QoS

Smoothwall tiene una seccion dedicada a QoS en la interfaz graphica via web. Los parametros que controlan QoS se encuentran en la pantalla "Networking / qos".



Parametros. Nos interesa controlar el parametro “Download Speed” (por ejemplo, 4Mbps para velocidad completa y 512Kbps para velocidad reducida); y quizas seria bueno darle a "Gaming" una prioridad lenta ("slow"). La velocidad de uploads (“External Upload speed”) tambien la deberiamos asignar a un valor bajo, por ejemplo 128Kbps).

Salvar (Save). Una vez que los parametros se hayan cambiado, es necesario hacer click en el boton “Save” para ver los cambios aplicados a QoS.

Pruebas de Velocidad. Una forma facil de probar la velocidad de la conexion a Internet en la red VERDE es utilizar alguna de las herramientas gratis disponibles en la web, por ejemplo "Speed Tests" en el website DSLreports. Los test requieren ya sea Java o Flash instalados como plug-ins en el browser. Yo utilice la herramienta flash:
http://www.dslreports.com/speedtest?flash=1



Otros test incluyen empezar a bajar un archivo grande (>100MB) y tomar nota de la velocidad de download reportada por el browser (hay que convertir KB/sec en Kbps). Tambien se probo mostrar un video en YouTube y las diferencias son significativas.

Enseguida vamos a cubrir como cambiar los parametros de QoS dependiendo de la hora del dia mediante el uso de un cron.

Controlar QoS parametros con un cron

Forum. De aqui en adelante pude continuar rapidamente gracias a la informacion que encontre en el forum de la comunidad de Smoothwall (http://community.smoothwall.org/forum/). Estuve buscando un mecanismo para cambiar los parametros de QoS desde la linea de comandos (shell) en vez de la interfaz web. No encontre la respuesta exacta, pero lei un post del creador del modulo QoS donde explicaba los parametros de configuracion.

El archivo que se debe cambiar es: /var/smoothwall/traffic/settings
El script que aplica los cambios en los parametros es: /usr/bin/smoothwall/trafficloader.pl

Lo que hice a continuacion fue asignar los parametros de QoS para velocidad normal y sacarle una copia al archivo de configuracion. Luego asigne los parametros de QoS para velocidad reducida y le saque otra copia al archivo de configuracion.

Entonces cree dos scripts: slow.sh y fast.sh que simplemente reemplazan el archivo de configuracion con la copia apropiada y luego corre el script que aplica los cambios.

Cron. El paso final es correr los scripts slow.sh y fast.sh en el momendo adecuado cada dia. Las clases estan disponibles de 8:45AM a 1:30PM y de 5PM a 8:45PM. Este paso es sencillo utilizando un cron en Linux.
El cron permite correr un comando a una hora en particular. En Smoothwall lo unico que se requiere es editar el archivo /etc/crontab con un editor de texto (por ejemplo vi). Como medida de precaucion la ultima linea del archivo crontab debe ser una linea en blanco.

Las siguientes son las lineas que adicione al crontab:
# Slow Down the Internet Connection (1:30PM, 9PM)
30 13 * * * root /var/smoothwall/traffic/slow.sh >/dev/null
0 21 * * * root /var/smoothwall/traffic/slow.sh >/dev/null

# Speed Up the Internet Connection (5PM, 8:45AM)
0 17 * * * root /var/smoothwall/traffic/fast.sh >/dev/null
45 8 * * * root /var/smoothwall/traffic/fast.sh >/dev/null

Listo!! Se alcanzo la meta.
Existe otro detalle que necesito averiguar y es que puedo hacer para distribuir la carga si llegado el caso tengo dos conexiones a Internet disponibles. Ya les contare...

viernes, mayo 12, 2006

Lista de correo sistemas88

Ya tenemos lista de correo para el evento: sistemas88@yahoogroups.com
Y ademas un sitio en yahoo groups: http://groups.yahoo.com/group/sistemas88

Hasta ahora tenemos 8 miembros confirmados: Jairo Lord Boyano, Causita, Carlos Alfaro, Laura Panu, Hermen Ilich Ilianov, Martha Lucia, Nelson Picante y su editor Petrus. La primera tanda de invitaciones se le envio a aproximadamente 20 direcciones de e-mail que tenia en mi libreta de direcciones. Si tienen mas direcciones de gente para contactar, por favor envienla a la lista de correo. Igualmente, si tienen fotos de los que estan y de los que faltan por favor envienlas para ir armando una galeria.

Alguien tiene de casualidad la foto en blanco y negro que nos tomamos antes de que los mas acelerados se graduaran? (si, Raul, Claudia, etc. es con ustedes).

martes, mayo 09, 2006

20 años de Sistemas 88

Hola Muchachos,

Que lástima que me perdí el intercambio de comentarios de los dias anteriores. La verdad llevaba dos semanas sin leer mi correo de yahoo :)

Eso de los 20 años me cayó como un baldado de agua fría (en invierno!!) Yo pensé que apenas habian pasado un par de añitos nada más desde que Mochovich nos bautizó con sus metas volantes y Marta Vitalia nos cautivó (ehem, perdon Jairo) con esos tales algoritmos. Y mejor ni hablemos de Maria Kopitko porque me pongo a hablar en Polaco de las reacciones físico-químicas que se dan entre tantos primiparos.

Por supuesto que mi humilde blog nos puede servir como punto de encuentro. De hecho no he vuelto a escribir nada desde Diciembre del año pasado, y esta es una buena oportunidad para retomar la idea.

Echenle un vistazo a http://avepetrus.blogspot.com y alli pueden dejar sus comentarios.

La primera pregunta es donde nos encontramos? Pareciera que Bucaramanga tiene la ventaja geografica para la mayoria, pero no descartemos las opciones mencionadas:
  • Bucaramanga: Pedro, Jairo?
  • Cuba
  • Canada
  • Madrid: Jaime
  • San Andres
  • Otras: Miami, Mexico
A mi la verdad me agrada tambien la idea de San Andrés y de Cuba (aunque talvez no sea de la conveniencia general).

La otra pregunta es, que vamos a hacer además de tratar por ené-sima vez de lograr un acercamiento entre Causita y Aquimín? La celebración debe durar varios dias y deberíamos alquilar o prestar un sitio como campestre no les parece?

No se cuales seran las "amigas" que Jairo tendrá en mente (estas leyendo Claire?), pero Sistemas 88 ha sido como la Creciente del Binomio de Oro que se desbordó y cargó con otros códigos anteriores y posteriores. Asi que si echaron al agua con nosotros, pues bienvenidos!!

De ese triángulo de amor y dolor entre Claudia, el macho Camacho y la tal Monica, hasta ahora me vengo a enterar. Y Raul como siempre atento a la jugada pero sin involucrarse mucho en esas historias de los Industriales. eso me hace acordar que definitivamente Sandra se merece el monumento a la perseverancia... casi 20 años esperando por el anillo!!

Bueno, tambien podemos empezar por crear una lista de correo. Apenas la tenga una escribo otro mensaje en el blog con las instrucciones para que se suscriban.

Un abrazo para todos...

sábado, diciembre 10, 2005

Respuesta a mis comentarios sobre Creative Commons

David Gil, autor del blog devolucion.info ha contestado mis comentarios de la semana pasada de una forma muy inteligente y con cierto aire académico que le da gran altura a este tipo de discusiones. Ojalá todas los intercambios de opiniones fueran asi de civilizados.
El detalle que captó mi atención inmediatamente es que David considera el arte una forma de conocimiento (y por ende similar al software).

"Mi posición, en resumen, es que tanto los programas de ordenador como las obras de arte son conocimiento y el conocimiento debe ser libre. El software se compone de algoritmos matemáticos que unidos de manera apropiada nos ofrecen una utilidad. Las obras de arte se componen de sonidos, palabras y colores que también unidos convenientemente nos enriquecen y desarrollan nuestra manera de ser y nuestra cultura."

Es una idea muy interesante, y tengo que pensar un poco más antes de contestar. A primera vista no me parece que el arte sea conocimiento, y sin embargo no veo una delimitación obvia de en donde termina el primero y empieza el segundo.

domingo, diciembre 04, 2005

Comparando Creative Commons con GPL (Software Libre)

Hoy escribi un comentario en un blog (Devolucion.info) en la que comparo la licencia del Software Libre (GPL) con la licencia "libre" para trabajos creativos (Creative Commons). Los autores del blog tienen una idea de libertad para el arte, que a mi modo de ver tratan de asimilar con el software, aunque son cosas completamente diferentes.

Esto fue lo que escribi:

Creo que el software y la musica cada una tiene un ciclo de vida diferente, lo cual crea una tendencia a que las "licencias" para uso y distribucion sean diferentes:

1. En la mayoria de los casos, una cancion o partitura es fundamentalmente el producto de un artista individual, mientras que un producto de software para que sea valioso, necesita de la contribucion de muchos (programacion, pruebas, etc.) Comparen la primera version del Linux kernel con la obra inedita de un cantoautor desconocido.

2. La mejor licencia del software libre (GPL) garantiza que el valor del software se mantiene o aumenta al requerir que las mejoras sean hechas publicas. Un trabajo original de arte no se "enriquece" cuando se cambia, sino que se transforma en otra obra. Aun cuando la nueva obra sea hecha publica, esta no enriquece la obra del autor original (aunque si crea una mayor variedad para el publico).

3. El software libre garantiza que el codigo fuente (algo que normalmente es mantenido en secreto), sea hecho publico con permiso del autor para modificarlo. Con una obra de arte no hay tales secretos. Cualquiera con un buen oido musical puede repetir la melodia original. Si tu escuchas la letra de una cancion, la puedes repetir de memoria al cabo de un rato.

4. Creo que los artistas, al igual que los programadores de software libre tienen derecho a recibir una remuneracion apropiada por enriquecer a la sociedad como un todo. El problema para los artistas esta en la mafia que en este momento tiene el monopolio de la distribucion, no en las libertades que se otorgan al oyente. En el caso del software el problema de la libertad esta en las restriciones antisociales de las licencias comerciales que tratan de restringir el impulso natural del ser humano de compartir y mejorar. Con la musica, los artistan podrian recibir sus ingresos por presentaciones en vivo, publicidad, videos, donaciones, etc. La musica en si misma deja de ser el producto y pasa a ser un medio de promocion del artista (el verdadero "producto"). Igual que en la industria informatica, el software deja de ser el producto, y este lugar lo toma el soporte, entrenamiento, servicios en general.

5. Yo definiria musica libre como musica que el oyente puede modificar en cualquier forma que quiera para uso personal. Puedes cambiar la letra, reproducir la melodia con guitarra o flauta, cantarla en una fiesta con tu amigos, etc. En que momento tu libertad perjudica al artista original? Cuando tu cambias los terminos de distribucion que el artista desea para su obra. Generalmente un artista no desea que su obra sea presentada por otro artista. Para muchos artistas, sus obras son como sus propios hijos... las quieren que se mantengan tal y como fueron concebidas. Yo seria un padre orgulloso si todo el mundo conociera a mis hijos y los admiraran, pero no me alegraria mucho si alguien mas le tinturara el cabello y los presentara como suyos (aun cuando, dijera al comienzo... el padre de estos muchachos es fulano de tal, pero yo los transforme en la maravilla que uds. ven aqui). Yo diria, mejor ve y haz tus propios hijos.

6. Una obra de arte genial talvez inspire una generacion de artistas, pero incontables modificaciones de una obra de arte genial, en mi opinion limitaria la creacion mas que promocionarla. Un ritmo musical se puede enriquecer de otros y crear algo admirable. Esas restricciones para inspirar a otros no existen actualmente, aunque el abominable fantasma de las patentes se asoma por todas partes como una nube negra que nos amenaza a todos. Se imaginan una patente en, no se... el flamenco?

7. En resumen, yo creo que la idea de Creative Commons esta bien pensada para trabajos creativos. Basicamente facilitan la difusion en medios digitales, sin tener que pedir permiso explicito al autor (por ejemplo para usar la musica o fotografia en un blog), pero permiten al autor mantener el control de lo que es importante para ellos (para algunos es el derecho exclusivo de obtener un beneficio economico, para otros el derecho a mantener la obra original sin cambios).

Yo no creo que haya que luchar contra el copyright en si mismo, sino contra los excesos que las legislaciones en años recientes. En el caso del software, el copyright es un aliado, porque permite al autor tener control de su obra, y gracias a ese mismo control puede preservar libertades para otros. Sin el copyright, grandes empresas de software se podrian robar el trabajo de esos autores de software. El GPL es el trabajo de un genio porque utiliza una definicion legal que ha sido ratificada en todo el mundo. En una sociedad utopica, donde la propiedad privada no existiera y cada miembro aportara lo mejor de si para el bien comun, no habria necesidad de ningun copyright, pero mientras tanto tenemos que vivir en esta realidad.

A proposito, lo que el copyright necesita para hacerlo mas justo es disminuir el tiempo en vez de aumentarlo y crear mas excepciones para casos en donde prime el bien comun. Ah, y no deberia permitirse la compra y venta de copyrights. Y las patentes deberian abolirse como las aberraciones que son.

Que opinas? Te parece una postura razonable?

domingo, noviembre 27, 2005

Migracion Windows XP ==> SUSE 10 (IE6 and MS-Outlook dual booting)

Finalmente estoy migrando Sistema Operativo en mi PC en el trabajo (de Windows XP a SUSE Linux 10).
La instalacion de SUSE no tuvo contratiempos excepto porque necesito un monitor mejor, que tenga una resolucion nativa de 1280x1024.

Los principales contratiempos de la migración son:
1. Necesito Internet Explorer 6 para acceder una aplicación web que solo corre en ese browser. Ademas necesito Word y Excel, pues la aplicación genera reportes en esos dos programas.
2. Tengo montones de e-mails, contactos y notas en MS-Outlook, y pasarlos a otro programa no es una opcion inmediata. Necesito un correo que sea facil de leer en Windows y en Linux, en caso de que tenga que mantener los dos sistemas al tiempo. Thunderbird es un buen candidato, pero tiene la desventaja que solo maneja el e-mail (le falta integrar calendario, notas, contactos, etc.; ademas que los mensajes no se pueden editar… eso me gusta de Outlook). Evolution solo esta disponible en Linux y tengo que “cacharrear” un rato antes de que pueda encontrar la información igual de rapido que en Outlook.

La solucion para los dos problemas de arriba sera:
1. Instalar CrossOver Office
2. Instalar MS-Office (completo incluye Word, Excel, Outlook)
3. instalar Internet Explorer
4. Configurar MS-Outlook en Linux y Windows para que usen el mismo mailbox (.pst), pero diferentes archivos de configuración (.srs y .FAV)

CrossOver Office Professional se puede comprar y bajar en el website de CodeWeavers (US$46 con descuento educativo).
1. Como root, se corre el script install-crossover-pro-5.0.0.sh. El instalador adiciona un menú llamado CrossOver, el cual contiene una opcion para instalar software.
2. Es preferible que cada usuario instale el software porque no siempre los programas estan disenados correctamente para acceso multiusuario. Ademas CrossOver Office simula un ambiente Windows 98. Desde el menú se ejecuta el wizard, y el proceso es igual que para instalar MS-Office en Windows usando un CD. Para instalar IE6 hay una opcion en el wizard que conecta al website de Microsoft para hacer el download.
3. CrossOver simula que el PC reinicia después de las instalaciones (algo muy comun en Windows). Al final adiciona un menú llamado Windows Applications que contiene los programas instalados. Incluso crea un icono de IE en el Desktop.
4. Lo unico que requirió un esfuerzo adicional fue configurar Outlook para acceso dual. Primero desde Linux…
a) Copiar los archivos .pst en una partición FAT32 visible desde Windows (F:\pduran\outlook) y Linux (/windows/fat32/pduran/Outlook)
b) Correr por primera vez Outlook en Linux. Los archivos de configuración y carpetas pst se crean en el mismo directorio ~home/. cxoffice/win98/drive_c/Windows/Application Data/Microsoft/Outlook
c) Borrar el archivo Outlook.pst creado al correr Outlook por primera vez y mover los archivos de configuración (.srs y .FAV) al directorio Outlook comun (/windows/fat32/pduran/Outlook)
d) Borrar el folder Outlook mencionado en (b) y crear un enlace simbolico (shortcut) al directorio comun del mismo nombre ln –s /windows/fat32/pduran/Outlook
e) Correr Outlook de nuevo y asegurarse que los folders y shorcuts estan en orden.
f) Adicionar el folder de Contactos para que aparezca en la libreta de direcciones, y seleccionarlo como default.
5. Y luego desde Windows….
a) Correr Outlook en Windows y cambiar la ubicación de Personal Folders. Instrucciones en la base de Microsoft soporte (articulo 291636). Options: Change existing e-mail accounts, New Outlook Datafie, Type of Storage (pst), Deliver mail to new location
b) Igual que (f) en Linux, adicionar lista de contactos al address book.
Listo !!

Ah, a proposito, cuando se cierra Outlook siempre se presenta uno de esos errores de Windows. Simplemente cierre sin reiniciar Outlook y en el menú de CrossOver hay una opcion para Terminar las aplicaciones windows (todas a la vez). El problema parece ser un archivo temporal que no se libera, pero parece que no es grave.

Hay otra cantidad de cosas por considerar, como las impresoras, generar archivos en formato PDF, etc. Sera otro dia !!!

lunes, noviembre 21, 2005

MS-Windows desde Linux con VMware Player

Hoy instale el programa VMware Player disponible gratis para plataformas Windows y Linux entre otras. VMware desarrolla tecnologias de virtualizacion, que permiten correr computadores virtuales (MV) dentro de computadores reales. Hay muchos usos para esta tecnologia, pero el que me interesa en este momento es correr MS-Windows como una MV dentro de Linux.
La idea es que asi puedo utilizar el proxy server recien instalado (hoy) como una estacion de trabajo Windows.
He creado MVs anteriormente para mostrarle a los estudiantes como instalar diferentes Sistemas Operativos sin los preparativos y trabajo que necesitarian si usara PCs reales. Para ello hay que disponer de VMWare Workstation (version Linux o Windows da igual). La maquina virtual una vez creada consta basicamente de dos grupos de archivos: discos virtuales (.vmdk) y archivos de configuracion (.vmx y demas).
El truco para usar la misma maquina virtual desde Windows o desde Linux es mantener los archivos de configuracion separados de los discos virtuales, de esta forma si la MV se abre desde windows, los archivos de configuracion apuntan a directorios como C:\My Files y si se abre desde Linux los directorios son por el estilo de /home/myfiles. Los nombres de los dispositivos tambien son diferentes. Claro que eso implica tener dos versiones de VMware Workstation: para Windows y para Linux. Lo bueno es que una vez creados, se pueden mover los archivos a otro computador y abrir la MV con el VMware player. Por lo tanto solo se necesitan licencias para crear las MVs, pero no para ejecutarlas (es decir, aparte de cualquier licencia que se necesite dentro de la VM, por ejemplo Windows XP). Hay varias MVs disponibles gratis, creadas como demos por Oracle, RedHat, MySQL y una interesante que es una MV pequena con Ubuntu linux y Mozilla Firefox para navegar por Internet de manera segura.

Receta para controlar downloads con Squid

1. Instalar squid en SUSE (YAST, Install and Remove software)
2. Modificar el archivo de configuracion /etc/squid/squid.conf
-----------------------------------------------------
http_port 8080
reply_body_max_size 5000000
acl MEDIA urlpath_regex -i \.exe$ \.mp3$ \.mov$ \.avi$ \.mpg$ \.rm$
http_access deny MEDIA
http_access allow all
-----------------------------------------------------
El puerto 8080 es mas facil de recordar que 3128 (default)
5000000 bytes (4.5MB) es el limite maximo de un download
No se pueden descargar archivos con las extensiones exe, mp3, mov, avi, mpg y rm
Se le permite acceso al proxy para todo el mundo
3. Habilitar el servicio squid (YAST, System) al arrancar Linux
4. Cambiar los settings de conexion en el web browser para utilizar el proxy (direccion IP del proxy server y puerto 8080).

Hay otras opciones de configuracion para mejorar, como el tamano del cache en disco y en memoria, el tamano de los objetos en el cache, etc; pero con esto ya se puede tener un control basico. Hay otros settings que se necesitan para controlar streaming y otra opcion diferente en vez de restringir la descarga de archivos multimedia, es reducir la velocidad de descarga para ese tipo de archivos (por ejemplo a 52kbps).