Skip to content

Instantly share code, notes, and snippets.

@defvol
Last active July 11, 2017 05:36
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save defvol/4ef366f9c8913a0779554ff1f2d17847 to your computer and use it in GitHub Desktop.
Save defvol/4ef366f9c8913a0779554ff1f2d17847 to your computer and use it in GitHub Desktop.
Distribuye datos abiertos por BitTorrent

Distribuye datos abiertos por BitTorrent

TL;DR para asegurar disponibilidad de los datos abiertos, necesitamos descentralizar su distribución.

¿qué es BitTorrent?

En lugar de que miles de personas intenten bajar grandes conjuntos de datos de un servidor malconfigurado de gobierno, con BitTorrent los datos pueden ser distribuidos y compartidos en pequeños fragmentos y entre diferentes consumidores (y los mismos servidores originales).

La alta disponibilidad se asegura porque los datos tienen múltiples réplicas y la carga de la red se distribuye entre múltiples usuarios.

Plan

  • Activar un par de seeders en servidores de gobierno y organizaciones con capacidad de cómputo para la banda (p. ej. INEGI, UNAM). Descargan el espejo y comienzan a ser seeders.
  • Distribuye archivos .torrent para cada dataset en portales como datos.gob.mx, datamx.io.
  • Cada vez que se utilicen clientes de BitTorrent para descargar datasets, la red obtendrá mayor capacidad de transferencia y replicabilidad.

Opcional

  • Tener un espejo de todos los datasets en un servicio de alta disponibilidad como Amazon S3. Conveniente para activar seeders rápidamente.
  • Instalar trackers en servidores externos a gobierno o utilizar uno ya disponible. El prototipo puede funcionar sin trackers (ver trackerless).

Algunas herramientas disponibles

Referencias:

@urkonn
Copy link

urkonn commented Aug 25, 2016

también se ve interesante https://github.com/preston/bittorious

@defvol
Copy link
Author

defvol commented Aug 25, 2016

@urkonn gracias por la referencia; se me hace que ese proyecto está muy inflado con features innecesarios como user management y monitoreo, realmente se necesita eso?

@defvol
Copy link
Author

defvol commented Aug 26, 2016

Prueba de concepto para hacknight
cc @ricalanis, @MrOutis

previo

  • bajar 3 datasets de buen tamaño

1) dat workflow

  • activar seed con dat de estos datasets - instrucciones: http://docs.dat-data.com/dat
  • mantener en este gist la lista de hashes de los datasets
  • probar que un tercero pueda bajar alguna de estos archivos con dat

2) classic

  • hacer el .torrent y registrarlo en algun tracker publico
  • descargar bases con diferentes clientes
    • dat cli
    • webtorrent-desktop
    • vuze
    • transmission

l337

@defvol
Copy link
Author

defvol commented Aug 26, 2016

dat workflow

instalar

➜  npm install -g dat

compartir

➜  mkdir data-dir
➜  cd data-dir
➜  wget una-base-de-datos.csv
➜  dat .
Sharing /Users/rodowi/d/dat-data

Share Link: 3c0f0b1b8ab9bd434032a03d4ece04927929412053005d68428d88824f7c6704
The Share Link is secret and only those you share it with will be able to get the files

[=============================>] Added 1 items (9.64 MB/9.64 MB)

Waiting for connections. Watching for updates...

descargar

cd data-dir
dat 12345678901234567890

resultados

dataset share link
Profeco: precios al consumidor 3c0f0b1b8ab9bd434032a03d4ece04927929412053005d68428d88824f7c6704
Listas de miembros de partidos politicos ba9363e4c4f9ea29da93d0ca0adc77eb33551ddc1c740ef556ca89bd7f4054b5

@defvol
Copy link
Author

defvol commented Aug 26, 2016

maxogden/torrent

previo

➜  npm install -g torrent

compartir

➜  mkdir data-dir
➜  cd data-dir
➜  wget una-base-de-datos.csv
➜  cd ..
➜  torrent create data-dir/ -o una-base-de-datos.torrent --tracker http://algun-tracker/announce
➜  torrent seed una-base-de-datos.torrent

demo

➜  torrent create red-nacional-de-caminos/ -o red-nacional-de-caminos.torrent --tracker udp://tracker.coppersurfer.tk:6969 --tracker udp://tracker.opentrackr.org:1337
➜  torrent seed red-nacional-de-caminos.torrent
Verified files successfully!
Seeding red-nacional-de-caminos.torrent
Connected to 0/0 peers
Uploaded 0 B (0 B)
...
Connected to 0/1 peers
Uploaded 157.09 MB (439.09 kB)

clientes probados

  • transmission
  • maxogden/torrent

trackers abiertos
https://openbittorrent.com/

Copy link

ghost commented Aug 26, 2016

bito

Copy link

ghost commented Aug 26, 2016

Para asegurarnos de la integridad de los archivos, se pueden usar checksums como las siguientes:

    PGP signature
    MD5: 82af67a203af580b8d689a020ff3e50b
    SHA1: 6db5a9e46267ba7ec4d9ae79d141e5a6d9d3cf88

@defvol
Copy link
Author

defvol commented Aug 26, 2016

Siguientes pasos para demo v2

  • seleccionar un top-10 de datasets
  • hacer espejo de top-10 de datasets
  • generar .torrents (usar trackers existentes)
  • generar checksums de los datasets
  • patrocinar un main seed por un rato
  • agregar archivos torrents y checksums a datos.gob.mx
  • promover la descarga con torrents
  • documentar guía para el usuario

@defvol
Copy link
Author

defvol commented Sep 17, 2016

UPDATE: trackerless mejor, con magnet links y DHT

@defvol
Copy link
Author

defvol commented Sep 23, 2016

El servicio S3 de Amazon Web Services soporta BitTorrent http://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment