Package net.i2p.router.networkdb.kademlia

The network database, including implementation of floodfills. Database lookups, stores, exploration, and replies. Management of locally-generated RouterInfos and Leasesets.

  • Interface Summary 
    Interface Description
    DataStore  
  • Class Summary 
    Class Description
    BlindCache
    Cache of blinding data.
    ExpireLeasesJob
    Periodically search through all leases to find expired ones, failing those keys and firing up a new search for each (in case we want it later, might as well preemptively fetch it)
    ExpireRoutersJob
    Go through the routing table pick routers that are out of date, but don't expire routers we're actively connected to.
    ExploreJob
    Search for a particular key iteratively until we either find a value, we run out of peers, or the bucket the key belongs in has sufficient values in it.
    ExploreKeySelectorJob Deprecated.
    unused, see comments in KNDF
    FloodfillDatabaseLookupMessageHandler
    Build a HandleDatabaseLookupMessageJob whenever a DatabaseLookupMessage arrives
    FloodfillDatabaseStoreMessageHandler
    Create a HandleDatabaseStoreMessageJob whenever a DatabaseStoreMessage arrives
    FloodfillMonitorJob
    Simple job to monitor the floodfill pool.
    FloodfillNetworkDatabaseFacade
    The network database
    FloodfillPeerSelector
    This is where we implement semi-Kademlia with the floodfills, by selecting floodfills closest to a given key for searches and stores.
    FloodfillRouterInfoFloodJob
    Job to flood nearby floodfill routers with our RI.
    FloodfillStoreJob
    This extends StoreJob to fire off a FloodfillVerifyStoreJob after success.
    FloodfillVerifyStoreJob
    Send a netDb lookup to a floodfill peer - If it is found, great, but if they reply back saying they don't know it, queue up a store of the key to a random floodfill peer again (via FloodfillStoreJob)
    FloodOnlyLookupMatchJob  
    FloodOnlyLookupSelector
    Mostly replaced by IterativeLookupSelector
    FloodOnlyLookupTimeoutJob
    This is the timeout for the whole search.
    FloodOnlySearchJob
    Uunused directly, replaced by IterativeSearchJob, but still extended by SingleSearchJob.
    FloodSearchJob
    Try sending a search to some floodfill peers, but if we don't get a successful match within half the allowed lookup time, give up and start querying through the normal (kademlia) channels.
    FloodThrottler
    Count how often we have recently flooded a key This offers basic DOS protection but is not a complete solution.
    HandleFloodfillDatabaseLookupMessageJob
    Handle a lookup for a key received from a remote peer.
    HandleFloodfillDatabaseStoreMessageJob
    Receive DatabaseStoreMessage data and store it in the local net db
    IterativeFollowupJob
    Ask a single peer for a single key.
    IterativeLookupJob
    Ask the peer who sent us the DSRM for the RouterInfos...
    IterativeLookupSelector
    Slightly modified version of FloodOnlyLookupSelector.
    IterativeSearchJob
    A traditional Kademlia search that continues to search when the initial lookup fails, by iteratively searching the closer-to-the-key peers returned by the query in a DSRM.
    IterativeTimeoutJob
    This is the timeout for a single lookup, not for the whole search.
    KademliaNetworkDatabaseFacade
    Kademlia based version of the network database.
    LocalHash
    Pull the caching used only by KBucketImpl out of Hash and put it here.
    LookupThrottler
    Count how often we have recently received a lookup request with the reply specified to go to a peer/TunnelId pair.
    MessageWrapper
    Method and class for garlic encrypting outbound netdb traffic, and sending keys and tags for others to encrypt inbound netdb traffic, including management of the ElGamal/AES tags.
    MessageWrapper.OneTimeSession
    A single key and tag, for receiving a single message.
    MessageWrapper.WrappedMessage
    Wrapper so that we can keep track of the key and tags for later notification to the SKM
    NegativeLookupCache
    Track lookup fails
    PeerSelector
    Mostly unused, see overrides in FloodfillPeerSelector
    PersistentDataStore
    Write out keys to disk when we get them and periodically read ones we don't know about into memory, with newly read routers are also added to the routing table.
    RefreshRoutersJob
    Go through all the routers once, after startup, and refetch their router infos.
    RepublishLeaseSetJob
    Run periodically for each locally created leaseSet to cause it to be republished if the client is still connected.
    SearchJob
    Search for a particular key iteratively until we either find a value or we run out of peers Note that this is rarely if ever used directly, and is primary used by the ExploreJob extension.
    SearchMessageSelector
    Check to see the message is a reply from the peer regarding the current search
    SearchReplyJob  
    SearchState
    Data related to a particular search
    SearchUpdateReplyFoundJob
    Called after a match to a db search is found Used only by SearchJob which is only used by ExploreJob
    SingleLookupJob
    Ask the peer who sent us the DSRM for the RouterInfos...
    SingleSearchJob
    Ask a single peer for a single key.
    StartExplorersJob
    Fire off search jobs for random keys from the explore pool, up to MAX_PER_RUN at a time.
    StoreJob
    Stores through this always request a reply.
    StoreMessageSelector
    Check to see the message is a reply from the peer regarding the current store
    StoreState
    Tracks the state of a StoreJob
    TransientDataStore
    Stores in-memory only.
  • Exception Summary 
    Exception Description
    UnsupportedCryptoException
    Signature verification failed because the sig type is unknown or unavailable.