Skip to content
  • Vladimír Čunát's avatar
    1853a8c1
    client-subnet WIP: mainly cache changes · 1853a8c1
    Vladimír Čunát authored
    Status: all deckard tests succeed (non-ECS).
    
    Design plan:
    
    - It was decided to deviate from rfc7871, as full
    implementation would be potentially very cache-hungry
    (there are very many meaningful IP prefixes).
    Instead, a geo DB will be used to partition IPs into discrete
    categories.  That's what the authoritative NSs use AFAIK.
    
    - For now the granularity would be a country, as used by
    https://www.maxmind.com/en/geoip2-databases
    
    - Cache deduplicates equal records for different locations.
    That's implemented by splitting the mapping into two:
    usual key + location -> hash, and usual key + hash -> RRdata.
    Timestamp and TTL of the RRset is stored in the first part,
    and the stored RRs have TTLs zeroed.
    (All this forced changes in lib/cache.h API.)
    1853a8c1
    client-subnet WIP: mainly cache changes
    Vladimír Čunát authored
    Status: all deckard tests succeed (non-ECS).
    
    Design plan:
    
    - It was decided to deviate from rfc7871, as full
    implementation would be potentially very cache-hungry
    (there are very many meaningful IP prefixes).
    Instead, a geo DB will be used to partition IPs into discrete
    categories.  That's what the authoritative NSs use AFAIK.
    
    - For now the granularity would be a country, as used by
    https://www.maxmind.com/en/geoip2-databases
    
    - Cache deduplicates equal records for different locations.
    That's implemented by splitting the mapping into two:
    usual key + location -> hash, and usual key + hash -> RRdata.
    Timestamp and TTL of the RRset is stored in the first part,
    and the stored RRs have TTLs zeroed.
    (All this forced changes in lib/cache.h API.)
Loading