# Marabunta (informática)

Marabunta es una aplicación peer-to-peer anónima totalmente distribuida. Su principal objetivo es luchar contra la censura en Internet y asegurar la libertad de expresión. Es una plataforma P2P de intercambio de información de forma anónima entre nodos basado en los algoritmos de comunicación que podríamos denominar: "Orden y Caos" los cuales se dan en organizaciones sociales masivas como las marabuntas de hormigas.
El proyecto nace en el seno de la Universidad de Zaragoza, España, desarrollado y promovido por los alumnos de la facultad de Ingeniería Informática, aunque desde el primer momento grupos de desarrollo y usuarios de otros muchos lugares se mostraron interesados debido a la importancia y a la finalidad del proyecto. El software está disponible solo en español pero la página web se encuentra en español e inglés. Marabunta es publicado bajo los términos de la licencia GPL.

## Motivación del proyecto

Marabunta es la implementación real de las ideas que se exponen dentro del marco del proyecto de Redes Libres APEIRON Archivado el 20 de febrero de 2009 en Wayback Machine. y su creación se ha visto motivada por las siguientes ideas:
* Evitar la censura: Permite la comunicación entre personas sin el uso de servidores centrales, lo que la hace inmune a los ataques de censura, los cuales a día de hoy son practicados por multitud de gobiernos y corporaciones controladoras de las comunicaciones.
* Anonimato: Permite la comunicación anónima, por lo que podemos conocer los contenidos de los mensajes sin conocer el origen de los mismos.
* Motivación y desarrollo: Marabunta es el primer proyecto de este tipo desarrollado en España, como ya hemos comentado se fundó en Aragón, pero Marabunta es un proyecto pensado para ser usado en todo el mundo, especialmente en los países donde la gente se ve privada de su derecho a la libertad de expresión, debido a la fragilidad de los modelos de red centralizados.
Marabunta rompe con todo eso y propone una nueva forma de comunicación: anónima, descentralizada, sin servidores y que no es sensible a la censura.

## Características

Su primer servicio es el intercambio de mensajes de texto. Podría entenderse como una plataforma de distribución de "telegramas", donde cada máquina que forma parte de la red participa como cliente y como servidor.
* Como cliente: Se encarga de enviar sus mensajes, buscar nodos activos por la red...
* Como servidor: Se encarga de encaminar las peticiones del resto de los nodos "hermanos", tanto para el envío de mensajes como a la hora de ayudar a otros nodos a aumentar el número de nodos conocidos, haciendo el reenvío de peticiones...
Tiene cuatro Listas de Distribución de Mensajes, de forma que solo recibimos los mensajes enviados a las listas que nos interesen
* General, Tecnología, Filosofía y Política
Permite filtrar contenidos de forma que solo se muestren los mensajes que contienen ciertos patrones que estemos buscando. Esto es especialmente útil cuando buscamos un tipo de información específica ya que Marabunta se encarga de seleccionar solo los mensajes potencialmente interesantes.

### Conexiones

Todo el tráfico generado es UDP/IP lo que hace que, al no establecerse conexión entre los nodos, el tráfico de la red sea más fluido y se aprovechan las capacidades de redundancia operacional de cada uno de los nodos. Además el tráfico UDP incrementa el anonimato en la red dado que no es necesario validar la existencia de la máquina origen a la hora de la recepción de un datagrama.

### Implementación

Marabunta está programado en C++ sobre las bibliotecas QT4, debido a que estas permiten la compilación de los programas en los 3 entornos principales: GNU Linux, Mac OS X y Windows. El código fuente está liberado bajo la GPL.

#### Reenvío de puertos en NATS

Las conexiones que se realizan son todas mediante el protocolo UDP/IP, por lo que los nodos que se encuentren detrás de un NAT con una IP privada han de establecer una ruta de reenvío de puertos, de forma que el router sepa a que puerto de que nodo de los de la Red interna ha de redirigir el datagrama que le llega.
Este mecanismo se tendrá que establecer en la mayoría de equipos de los que dan conexión a Internet mediante ADSL, no obstante es bastante probable que las máquinas dedicadas a crear redes privadas a gran escala como conexiones inalámbricas creen estas rutas de entrada salida automáticamente y Marabunta funcione.