DYNAMIPS: SIMULADOR DE REDES

agosto 03, 2008
Después de varios meses queriendo instalar Dynamips y GNS3 en Ubuntu, por fin tuve tiempo para hacerlo el día de ayer. Para los que no tienen mucho conocimiento del tema, dynamips es un emulador de equipos CISCO mientras que dynagen es el generador de las configuracions de las redes a simular. Por otro lado tenemos GNS3, que es el simulador gráfico el cual trabaja junto con dynamips y dynagen. Además es importante hacer saber que estos simuladores también pueden ser instalados en Windows.

Luego de pasearme por varios blogs donde mostraban la forma para instalarlos y además de varios errores que obtuve al hacer los intentos correspondientes, encontré la forma, a mi parecer, más óptima para este objetivo. Cabe recalcar que esta instalación la realicé en ladistribución Ubuntu 7.10 pero debido a que no se utiliza ningún repositorio ni el famoso sudo apt-get install, me parece que no habrá problema en seguir este mismo procedimiento en otras distribuciones de linux, aunque eso ya se lo dejo a Uds. esperando además sus comentarios sobre sus experiencias.

Es cierto que dynagen y dynamips se encuentran dentro de los repositorios de Ubuntu; por lo tanto, la primera pregunta que debería surgir es la siguiente: "¿por qué si, teniendo Ubuntu, no se utiliza un simple sudo apt-get install dynagen?". Bueno, después de haberlo intentado, me di con la sorpresa de que al ejecutar este comando también se tiene que instalar necesariamente dynamips lo cual ocasiona un problema debido a que, más adelante, nos aparecerá un error donde se menciona que la versión de dynagen instalada debe trabajar con dynamips 0.2.8 y que la instalada es la versión 0.2.7. Luego intenté instalar dynamips 0.2.8 pero al tratar de hacer un link con el comando ln no sirvió de mucho ya que la versión 0.2.7 instalada anteriormente ya tenía un hard link el cual no podía ser modificado fácilmente.

NOTA: para mayores referencias sobre el comando ln les recomiendo usar man ln y además visitar la siguiente página: http://www.unixcommand.org/ln/


INSTALACIÓN PASO A PASO

A continuación les muestro los pasos que seguí para la instalación. La ubicación del primer directorio creado queda a su criterio y de la forma cómo manejan sus ficheros. Los demás directorios han sido elegidos de esa forma para que los ficheros ejecutables no generen ningún problemas con las rutas.

El primer paso a seguir es el de crear un directorio donde se descargarán todos los programas necesarios:

sudo mkdir /opt/GNS3/
cd /opt/GNS3/

Luego descargamos dynamips y configuramos para poder ejecutarlo:

wget http://www.ipflow.utc.fr/dynamips/dynamips-0.2.8-RC2-x86.bin
sudo chmod +x dynamips-0.2.8-RC2-x86.bin
sudo ln -s dynamips-0.2.8-RC2-x86.bin dynamips

El siguiente paso es instalar dynagen:

wget http://ovh.dl.sourceforge.net/sourceforge/dyna-gen/dynagen-0.10.1.tar.gz
tar xfvz dynagen-0.10.1.tar.gz
sudo mv dynagen-0.10.1 /usr/local/
sudo ln -s /usr/local/dynagen-0.10.1/dynagen /usr/local/bin/

Ahora tenemos que descargar GNS3 e instalarlo:

wget http://pfe.epitech.net/frs/download.php/597/GNS3-0.3.2-src.tar.gz
tar xzvf GNS3-0.3.2-src.tar.gz && rm GNS3-0.3.2-src.tar.gz
sudo chown -R username.username /opt/GNS3

Por último creamos un directorio donde se guardarán los logs y configuraciones de las NVRAM, RAM, etc. de los equipos utilizados y otro directorio donde guardaremos los IOS images que se utilizarán más adelante.

sudo mkdir Cache
sudo mkdir IOS


EJECUCIÓN Y CONFIGURACIÓN DE GNS3

Luego del proceso de instalación se deben realizar algunas configuraciones para poder utilizar GNS3 sin ningún problema.

Abrimos un terminal de linux para poder abrir GNS3 y luego descargamos un IOS image. Estos IOS images son necesarios para poder simular al router y todos los comandos que vienen con el IOS. Para conseguirlos intenten con LimeWire o Emule o en todo caso en algunos laboratorios ya que estos son los IOS originales de Cisco y estoy seguro que alguna persona gustosamente los compartirá por Internet. Todo esto hace la simulación más real (recalcando que es una emulación y no una simulación).

cd /opt/GNS3/
wget ..../c3640-ik9o3s-mz.124-13a.bin
unzip -p c3640-ik9o3s-mz.124-13a.bin > c3640-ik9o3s-mz.124-13a.image

Para abrir GNS3:

cd /opt/GNS3/
./gns3 &

Con lo que se obtendrá la siguiente:

GNS3


Luego procedemos a editar las rutas donde GNS3 encontrará dynamips y donde almacenará los logs y configuraciones de los equipos. Para esto ingresamos a

Edit>Preferences

y cambiamos los valores de Executable path, Working directory y Terminal command como se muestra en la siguiente imagen:

Preferences


Por ultimo, debemos agregar la ruta de los IOS images a utilizar. Ingresamos a

Edit>IOS images and hypervisors

y agregamos los IOS en el campo image file y luego hacemos click en el botón Save.

IOS mages


A continuación les dejo un pequeño video donde se muestran estas últimas configuraciones además de una simulación:



Bueno, espero que les sirva de mucho esta pequeña guía de instalación ya que, a pesar de ser un poco tediosa, resulta beneficiosa debido a las ventajas de estos simuladores los cuales son más reales debido a la utilización de IOS originales con lo que se puede utilizar todos los comandos a diferencia de otros simuladores como el Packet Tracer.


REFERENCIAS
GNS3: www.gns3.net/
Dyangen: dynagen.org/
Emuladores Cisco: cesarcabrera.info/blog/?p=220

Palabras claves: Dynamips, Dynagen, GNS3

AYUDA:Mostrar imagen en JSP desde MySQL

noviembre 01, 2007
Hola:
Estoy realizando un proyecto para la universidad. Bueno, la duda que tengo es: como puedo mostrar una imagen que tengo almacenada como Blob en una base de datos de MySQL?. Lo he intentado, y al parecer,segun lo que he investigado y revisado en algunas paginas,deberia estar correcto. Al correr la aplicacion, no sale ningun error,al parecer es un error logico, asi que por favor quisiera que me ayuden. A continuacion les dejo parte del codigo para que entiendan un poco la logica que estoy utilizando.

La tabla se llama letras y tiene tres campos:idletras(int),nombre(varchar) y imagen(blob).
Dentro de la aplicacion existe una clase BImagen que representa a una fila de la tabla.

Luego,se tiene la clase DImagen,el cual realiza la conexion a la base de datos y obtiene los datos requeridos.Esta clase tiene tres metodos.El primero es setBImagen(BImagen bean,ResultSet rs),el cual setea un BImagen a partir de un ResultSet (resultado del query en MySQL).
El segundo metodo es listaImagen,el cual retorna un ArrayList:

public ArrayList listaImagen() throws SQLException, IOException {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList lista = new ArrayList(0);
Connection conn = null;
Random random=new Random();//permite obtener un numero aleatorio
try
{//conexion mediante un pool de conexiones
conn =ConnectionPool.getInstance().getConnection();
String sql = "select * from letras";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
//rs_imagen es un ResultSet estatico para esta clase
this.rs_dimagen=rs;
BImagen bean = null;
//Solo se necesitan 5 imagenes aleatorias
for(int i=1;i<=total_letras;i++)//devuelve 5 imagenes
{ //la variable azar es un random entre 1 y 26
int azar=random.nextInt(25)+1;
System.out.println(azar);
rs.absolute(azar);
bean = new BImagen();
setBImagen(bean,rs);
lista.add(bean);
}
rs.close();
pstmt.close();
}
finally{
if(rs!=null){rs.close(); rs = null; }
if(pstmt!=null){ pstmt.close(); pstmt = null; }
if(conn!=null){ conn.close(); conn = null; }
}
return lista;
}
Y el tercer metodo es getBImagen(String idletras) que devuelve un BImagen segun su id.

Luego se tienen dos servlets.
El primero es SCaptchar, el cual es el que se llama para poder mostrar los datos pedidos. Este solo se encarga de obtener un ArrayList para poder mostrar los datos de cada BImagen del arreglo, enviandolo al JSP listImagenes.jsp

El segundo servlet es SImagen,el cual se encarga de mostrar la imagen segun el "idletras" enviado desde el JSP.
protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException
{
response.setContentType("image/jpeg");
try
{
byte[] datos=null;
ServletOutputStream out=response.getOutputStream();
DImagen dimagen=new DImagen();
String idletras=request.getParameter("idletras");
//obtengo un BImagen segun su id
BImagen bimagen=dimagen.getBImagen(idletras);

Blob blobimagen=bimagen.getImagen();//imagen en blob
datos=new byte[(int)blobimagen.length()];
datos=blobimagen.getBytes(1,(int)blobimagen.length());
out.write(datos);//obtengo la imagen en el servletoutputstream
out.flush();
out.close();

}catch(SQLException sqle){throw new IOException(sqle.getMessage());}
}

En el listImagenes.jsp se tiene lo siguiente:
...
jsp:useBean id="letras_list" scope="request" type="ArrayList"/
....
% for(BImagen bean:letras_list){ %
tr
td %=bean.getIdletras()% /td
td %=bean.getNombre()% /td
td
%=bean.getImagen()%
/td
td img src="servlet/com.servlet.SImagen?idletras= %=bean.geIdletrasString()% " width="50" height="80"/ /td
/tr
%}%
....


Al parecer el error esta a la hora de llamar al servlet SImagen desde el JSP, aunque segun lo investigado, estaria bien. He revisado muchas veces el servlet SImagen y no se que es lo que esta mal.
Debo recalcar que el servlet que se llama al comienzo de la aplicacion es SCaptchar. Este servlet si funciona a la perfeccion ya que si se muestran los datos de cada BImagen asi que por lo pronto, no es ningun problema de conexion ni descarga de datos. El unico problema esta al obtener la imagen.

Espero su ayuda.

Gracias

Por fin!!!...un día de tranquilidad

octubre 11, 2007
Disculpen el tiempo que demoré en publicar este segundo post. Como dije en el anterior, la mayoría del tiempo lo iba a invertir en el proyecto que mencioné, aunque obviamente no fue lo único que requería de mi tiempo ya que están los demás cursos y el tiempo que compartía con una persona en especial. Como pueden ver por el titulo de este post, este ha sido uno de los pocos días en los que me encuentro en mi casa en un día de ocio, aunque ya se acercan los parciales.

Bueno, lo del proyecto va por buen camino. Ya tuvimos las dos primeras presentaciones y aunque ha habido algunas descoordinaciones y una que otra discusión, creo que va bien.
El proyecto consiste en la realización de un sistema de blog (para los que no saben, algo así como el Blog PUCP) donde un usuario puede registrarse y publicar artículos e imágenes y a la vez puede recibir comentarios. Este proyecto va a ser realizado por un grupo de 22 personas que está dividido en cinco módulos. Cada módulo se encarga de implementar diferentes funcionalidades del sistema. Estos son independientes entre sí pero a la vez trabajan en forma conjunta e integral para poder brindar el servicio. Se tiene el módulo encargado de la Seguridad y Conexión al sistema, del cual soy jefe de módulo; el módulo de Artículos, que se encarga de la entrada y modificación de estos; el módulo de Búsqueda, que le permite al usuario buscar diferentes blogs o artículos; el módulo de Diseño, que se encarga de toda la presentación web del sistema; y el módulo de Comentarios, que maneja los comentarios dejados por los usuarios.

Hasta ahora, los jefes de módulo hemos tenido muchas reuniones en las cuales hemos ido coordinando y acordando el diseño del sistema, funcionalidades y fijando fechas de entrega. Igualmente, cada módulo se ha estado reuniendo para poder dividirse el trabajo.
Por ahora, ya está definido el diseño de la página, el cual nos tomó más tiempo de lo pensado ya que cambiamos un par de veces los colores y la distribución debido a que algunas cosas no convencían a gran parte del grupo. Si bien tomó más tiempo y una amanecida a última hora, debo decir que el resultado fue bueno y grato, especialmente porque es trabajo nuestro y por el tiempo y las ganas que estamos invirtiendo en él.
En mi módulo, el que está encargado de la Seguridad y Conexión, ya hemos implementado hasta el momento, el pool de conexiones, el cual permite la conexión al sistema por múltiples usuarios al mismo tiempo.
Todo será desarrollado en JSP y por lo tanto, en JAVA, así que si a alguien le puedo servir de ayuda, con mucho gusto intentaré ayudar.
Olvidé decir que el nombre del proyecto es "La Voz del Mudo", en honor al mudo, integrante del módulo de Búsqueda.

Mi primer Post

septiembre 03, 2007
Este es el primer articulo de mi primer blog.
El origen de este blog resulta un poco inesperado ya que resultó ser algo obligatorio debido al proyecto que nos dejaron en el curso Software para Telecomunicaciones 2 (SW2). El proyecto consiste en la administración de un sistema de blogs, así que ya imaginarán el por qué de la obligatoriedad de este; aunque debo admitir, que hace mucho, estuve siendo tentado por la necesidad de tener un espacio propio donde publicar lo que creyera interesante, así que al final, de una u otra manera, terminé publicando uno.
Los primeros artículos que iré publicando serán referentes al avance del proyecto y la división de este, ya que por ahora es lo que me ocupará más tiempo en lo que se refiere a trabajos de la universidad.