{"id":592,"date":"2013-07-06T17:28:54","date_gmt":"2013-07-06T20:28:54","guid":{"rendered":"http:\/\/www.maurom.com\/blog\/?p=592"},"modified":"2013-07-07T11:56:54","modified_gmt":"2013-07-07T14:56:54","slug":"instalacion-ipfwdummynet-en-debian-wheezy","status":"publish","type":"post","link":"https:\/\/maurom.com\/blog\/2013\/07\/06\/instalacion-ipfwdummynet-en-debian-wheezy\/","title":{"rendered":"Instalaci\u00f3n de ipfw\/dummynet en Debian Wheezy"},"content":{"rendered":"<h3>\u00bfdummynet? \u00bfqu\u00e9 es dummynet?<\/h3>\n<p>Seg\u00fan <a href=\"http:\/\/info.iet.unipi.it\/~luigi\/dummynet\/\">su sitio web<\/a>: \u201c<a href=\"http:\/\/info.iet.unipi.it\/~luigi\/dummynet\/\"><strong>dummynet<\/strong><\/a> es una herramienta de simulaci\u00f3n de redes en vivo dise\u00f1ada originalmente para probar protocolos de red, y que desde entonces se utiliza para una variedad de aplicaciones entre las que se incluye el manejo de ancho de banda. Simula\/impone limitaciones de encolado y ancho de banda, retrasos, p\u00e9rdida de paquetes y otros efectos. Implementa tambi\u00e9n\u00a0varios algoritmos de planificaci\u00f3n. dummynet puede\u00a0utilizarse en el mismo equipo donde se ejecuta la aplicaci\u00f3n a probar o en cajas externas que act\u00faan como enrutadores o puentes.<\/p>\n<p>La selecci\u00f3n de tr\u00e1fico se realiza mediante el firewall <strong>ipfw<\/strong>, que es la interfaz de usuario principal para dummynet. ipfw permite seleccionar con precisi\u00f3n el tr\u00e1fico y la direcci\u00f3n a trabajar, simplificando su configuraci\u00f3n y uso.\u201d<\/p>\n<p>Para m\u00e1s informaci\u00f3n los dirijo al completo art\u00edculo <a href=\"http:\/\/info.iet.unipi.it\/~luigi\/papers\/20091201-dummynet.pdf\">Dummynet Revisited<\/a> de los autores Marta Carbone y Luigi Rizzo.<\/p>\n<h3>Procedimiento<\/h3>\n<p>Con la colaboraci\u00f3n de varios compa\u00f1eros de trabajo surgi\u00f3 la siguiente receta para construirlo en Debian Wheezy (en este caso para amd64, pero es similar en i386). No es la \u00fanica ni la mejor manera, pero es una que funciona. Si alguno encuentra una mejor, ser\u00e1 bienvenida.<\/p>\n<ol>\n<li>Bajar la versi\u00f3n de <em>ipfw<\/em> compatible con kernels 3.x (20130607 o superior) y descomprimirla\n<pre>wget <a href=\"http:\/\/info.iet.unipi.it\/~luigi\/doc\/20130607-ipfw3.tgz\">http:\/\/info.iet.unipi.it\/~luigi\/doc\/20130607-ipfw3.tgz<\/a>\r\ntar xvzf 20130607-ipfw3.tgz<\/pre>\n<\/li>\n<li>Instalar los paquetes necesarios para Debian\n<pre>apt-get install build-essential linux-headers-`uname -r` linux-source-3.2<\/pre>\n<\/li>\n<li>Desempaquetar el c\u00f3digo fuente completo del kernel linux. Esto requiere al menos 700 MB de espacio en disco libres, as\u00ed que est\u00e9n preparados.\n<pre>cd \/usr\/src\r\ntar xvjf linux-source-3.2.tar.bz2<\/pre>\n<\/li>\n<li>Copiar la configuraci\u00f3n del kernel que se est\u00e1 ejecutando y las versiones de los m\u00f3dulos instalados\n<pre>cd \/usr\/src\/linux-source-3.2\r\ncp -v \/boot\/config-`uname -r` .config\r\ncp -v \/usr\/src\/linux-headers-`uname -r`\/Module.symvers .<\/pre>\n<\/li>\n<li>Preparar el entorno de compilaci\u00f3n del kernel\n<pre>cd \/usr\/src\/linux-source-3.2\r\nmake prepare\r\nmake scripts<\/pre>\n<\/li>\n<li>Compilar <em>ipfw<\/em> indicando la ruta a los fuentes del kernel\n<pre>cd \/ruta\/a\/ipfw3-2012\r\nmake KSRC=\/usr\/src\/linux-source-3.2<\/pre>\n<\/li>\n<li>Si no tir\u00f3 errores, probar la carga y descarga del modulo <em>ipfw_mod<\/em>\n<pre>insmod kipfw-mod\/ipfw_mod.ko\r\ndmesg\r\nrmmod ipfw_mod<\/pre>\n<\/li>\n<li>(Opcional) Instalar los binarios de <em>ipfw<\/em> y el modulo del kernel\n<pre>mkdir \/lib\/modules\/`uname -r`\/updates\r\ncp -v kipfw-mod\/ipfw_mod.ko \/lib\/modules\/`uname -r`\/updates\r\ndepmod\r\ncp -v ipfw\/ipfw \/usr\/local\/sbin\r\nchmod +x \/usr\/local\/sbin\/ipfw<\/pre>\n<\/li>\n<li>(Opcional) Verificar la instalaci\u00f3n del modulo y agregarlo para cada inicio del equipo\n<pre>modprobe ipfw_mod\r\ndmesg\r\necho ipfw_mod &gt;&gt; \/etc\/modules<\/pre>\n<\/li>\n<li>Listo!<\/li>\n<\/ol>\n<p>Dejo un breve script para los haraganes que, como yo, prefieren ejecutar todo el procedimiento de un saque: <strong><a href=\"\/files\/build-ipfw.sh\">build-ipfw.sh<\/a><\/strong><\/p>\n<p>Suerte y saludos!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfdummynet? \u00bfqu\u00e9 es dummynet? Seg\u00fan su sitio web: \u201cdummynet es una herramienta de simulaci\u00f3n de redes en vivo dise\u00f1ada originalmente para probar protocolos de red, y que desde entonces se utiliza para una variedad de aplicaciones entre las que se incluye el manejo de ancho de banda. Simula\/impone limitaciones de encolado y ancho de banda, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5,3,6],"_links":{"self":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/592"}],"collection":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/comments?post=592"}],"version-history":[{"count":0,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/592\/revisions"}],"wp:attachment":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/media?parent=592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/categories?post=592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/tags?post=592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}