Podcast Z

Podcast Z #6: Proyecto X - DNS como base de datos distribuida mundial


Listen Later

Usar el DNS como un sistema de cacheo mundial. https://podcast.jcea.es/podcastz/6

Notas:

  • 00:30: El proyecto es confidencial, pero quiero exponer algunas técnicas que pueden
  • ser útiles para otros programadores.

  • 02:50: El programa requiere actualizarse constantemente de forma automática.
  • 04:30: El usuario solo instala manualmente un "descargador".
  • 05:50: Descripción del proceso de actualización.
  • 06:30: Firma digital, imprescindible cuando hay actualizaciones constantes a través de
  • redes no confiables.

  • 08:00: En la primera versión del proyecto, el programa se descargaba en cada ejecución (20KBytes).
  • 09:00: Pero esto no escala cuando el número de usuarios crece, o el tamaño del fichero crece.
  • 13:30: Usar el DNS para comprobar las versiones, utilizándolo de caché. A nivel mundial
  • y de forma simple.

  • 15:20: Cuando un ordenador pide a su ISP que haga una petición de DNS, dicho ISP cachea
  • el resultado y está disponible para otros clientes. Y el tiempo de cacheo es configurable en el servidor
    origen.

  • 17:30: Problema: sin instalar librerías adicionales, Python tiene una capacidad de interacción
  • con el DNS muy limitada. Hay que buscarse la vida.

  • 19:30: En vez de decir a través del DNS qué versión es la más moderna, lo que hacemos es
  • permitir que el cliente confirme si su versión es la última o no. Comprobamos si el registro
    "HASH_MD5.md5.DOMINIO" existe o no.

  • 22:40: Ojo con los ISPs puñeteros que resuelven a sus propias IPs las resoluciones DNS inexistentes.
  • Solución: Comprobamos que la IP resuelta sea la esperada.

  • 25:00: Firma digital por El Gamal.
  • 27:20: El actualizador no hace más descargar la versión actual (con todas las verificaciones)
  • y luego le pasa el control. Actualizar el actualizador es "complicado" :).
    ...more
    View all episodesView all episodes
    Download on the App Store

    Podcast ZBy Jesús Cea & Pablo Lobariñas