The Eviction Decision

Kademlia Routing Table Bucket Eviction Architecture

State Evaluation: STEP 0 / IDLE
Ready to evaluate incoming node
LAYER 01: INCOMING NODE LAYER 02: K-BUCKET STACK (RECENCY ORDER) LAYER 03: EVICTION DECISION TREE THIS FIELD MAY NEVER UPDATE NEW CONTACT ID: 0x8F3A..4B ADDR: 192.168.1.42 PORT: 8080 STATUS: UNCHECKED NODE #0 [FRONT]: 0x12A4..E9 SR: 95% AGE: 2M AGO 32ms avg NODE #1: 0x7B9C..11 SR: 88% AGE: 6M AGO 48ms avg NODE #2: 0x3D5E..F8 SR: 92% AGE: 11M AGO 61ms avg NODE #3 [TAIL]: 0x9E2F..03 SR: 75% AGE: 14M AGO 118ms avg ... 16 ADDITIONAL NODES IN STACK ... TIER 1: LOW SUCCESS RATE COND: success_rate < 0.5 ACTION: EVICT IMMEDIATELY (NO PING) Bypasses verification ping loop TIER 2: STALE NODE EVICTION COND: last_seen > 15 MIN ACTION: EVICT OLDEST INACTIVE NODE Replaces dead tail node directly TIER 3: DEFAULT FALLBACK PING COND: ELSE (All bucket nodes healthy) ACTION: PING FRONT → REPLACEMENT Newcomer queued in Replacement Cache REPLACEMENT CACHE [HOLDING AREA]
⚠️ DEFECT DETECTED IN TIER 1 EVALUATION
Tier 1 depends on ResponseStats that, in the current codebase, may never be written back to the bucket during standard ping cycles. As a result, low success rates go unrecorded and Tier 1 rarely triggers in production.