[IRC-DEV] Sobre UDB.
MrIRC
internet.relay.chat at gmail.com
Thu Mar 31 12:59:54 CEST 2005
Hace unos cuantos días que intento escribir esto pero no lo acabo haciendo.
He estado estudiando el protocolo de las UDB (Unreal Data Base) de
Trocotronic, y encuentro un fallo en el protocolo de sincronización.
Por lo que yo entiendo, el sistema se basa en que uno de los nodos va a
estar siempre al día. De este modo, cuando las horas no coinciden, se
agregan las lineas faltantes y si los hash fallan, se elimina la base
antigua y se recupera de la nueva.
Problemas:
- Si se actualizan dos nodos durante un split, se perderán los datos del
penúltimo en actualizarse. Desaparecen el el limbo, debido a que se eliminan
las bases de datos. Debería poderse actualizar por bloques, de manera que se
combinasen los datos. Las zonas distintas deberían agregarse, escogiendo la
del último en actualizarse. Al respecto sería útil que al final de cada
campo se situara un valor del momento de la última modificación. Como
recurso "basto" estaría copiar toda la base de datos del servidor remoto y
enviar seguidamente un OPT (aumentando sus funcionalidades) que eliminase
los registros duplicados (según la prioridad, la fecha de cada servidor).
Problemas de esto: los registros borrados durante un split volverían a
crearse.
- La actuación de los servidores depende de la fecha GMT en que se informa
se realizó la última OPTimización. Un servidor mal implementado o con la
fecha mal (borrado de la BIOS, etc.) desde el que se envíe OPT, establecería
esa fecha de modificación en todos los servidores. Si algún servidor estaba
caído/en split, etc. Sustituirá todos los datos de la red por los suyos
propios (anticuados). Solución: Ningún servidor debería aceptar un OPT con
una hora menor que la que tiene actualmente.
Enviado por: Trocotronic.
> Bueno pues ya que me das cuerda, voy a exponer un proyecto que hace
> bastantes meses llevo manteniendo.
> Es para UnrealIRCd y se nombra UDB (Unreal Data Base).
(...)
> Otro tema muy dispar es el protocolo o método de propagación. No me
> extenderé mucho pero consta de varios comandos todos emitidos por el
> comando irc DB:
>
> - INF: información de un bloque.
> - RES: resumen de un bloque.
> - INS: inserción de un bloque.
> - DEL: eliminación de un bloque.
> - OPT: optimización de un bloque.
> - ERR: error en el último comando recibido.
>
> No me voy a extender mucho más pero, por si alguien le interesa, puede
> encontrar todo esto en http://www.rallados.net/trabajos.php?item=udb , con
> los fuentes y el esquema del protocolo.
More information about the IRC-Dev
mailing list