Class ParticipatingThrottler

  • class ParticipatingThrottler
    extends Object
    Count how often we have accepted a tunnel with the peer as the previous or next hop. We limit each peer to a percentage of all participating tunnels, subject to minimum and maximum values for the limit. This offers basic protection against simple attacks but is not a complete solution, as by design, we don't know the originator of a tunnel request. This also effectively limits the number of tunnels between any given pair of routers, which probably isn't a bad thing. Note that the actual limits will be higher than specified by up to 1 / LIFETIME_PORTION because the counter window resets. Note that the counts are of previous + next hops, so the total will be higher than the participating tunnel count, and will also grow as the network uses more 3-hop tunnels.
    • Constructor Detail

      • ParticipatingThrottler

        ParticipatingThrottler​(RouterContext ctx)
    • Method Detail

      • shouldThrottle

        boolean shouldThrottle​(Hash h)
        increments before checking