Tuesday, July 29, 2008

Kad v8

GonoszTopi ported Kademlia version 8, which will be intregrated into our next release. I quote the Changelog:

  • Kad now ignores multiple IDs pointing to one IP in routing request answers

  • When calculating the total user count, Kad now uses (if available) the real number of firewalled clients for the calculation instead a fixed value. This will take more effect when 0.49+ nodes become common

  • Kad no longer tries to add UDP firewalled (and therefore mostly unreachable) nodes into its routing table, reducing overhead and increasing reliability [Idea: Netfinity]

  • Optimized the Kad packettracking code to only track packets which we check later, to save resources

  • Fixed a bug which let Kad sometimes assume a Kad2 contact to be Kad1 after probing for both versions

  • Did first small step in dropping Kad1 support by not probing unknown Kad contacts for Kad1 anymore to save overhead. Kad1 clients will nevertheless still be work for now.

  • Several changes were made to Kad in order to defy routing attacks researched by University of Minnesota guys [Peng Wang, James Tyra, Eric Chan-Tin, Tyson Malchow, Denis Foo Kune, Nicholas Hopper, Yongdae Kim], in particular:
    • Kad contacts will only be able to update themself in others routing tables if they provide the proper key (supported by 0.49a+ nodes) in order to make it impossible to hijack them

    • Kad uses now a three-way-handshake (or for older version a similar check) for new contacts, making sure they do not use a spoofed IP

    • Unverified contacts are not used for routing tasks

    • When reading a nodes.dat without any verified contacts (possible an old file version), aMule will assume all contacts to be verified to avoid slowing down the connecting process



No comments: