1. kresd/Marek/2016-04-18
1.1. Feature request
Use negative caching information to detect some kind of poison.
1.2. Senario
1st query: dig nonexist.go.jp
- NOERROR response for go.jp NS is cached in somewhere. (pktcache)
2nd query: dig xxx.ddnonexist.go.jp
- kresd knows go.jp NS does not exist. (How: I want to know.) So, query is sent to jp NS.
- Usually jp NS responds NXDOMAIN.
If we get go.jp delegation response, we know it is a poison.
- Reason : we know that go.jp does not have NS record. (somewhere in cache)
1.3. patch
I looked into the process_authory function (in lib/layer/iteration.c)
- and found the place where to insert the patch above.
Problem is what should be the patch. (e.g. How do I use pktcache_peek)
Regards, -- ToshinoriMaeno 2016-04-18 11:51:39
=> querying: '203.119.40.1' score: 11 zone cut: 'jp.' m12n: 'go.Jp.' type: 'NS' [iter] <= rcode: NOERROR [iter] <= found cut, retrying with non-minimized name [ pc ] => answer cached for TTL=900 [resl] <= server: '203.119.40.1' rtt: 6 ms [resl] => querying: '203.119.40.1' score: 11 zone cut: 'jp.' m12n: 'NONexist.Go.jP.' type: 'A' [iter] <= rcode: NXDOMAIN [ pc ] => answer cached for TTL=900 [resl] <= server: '203.119.40.1' rtt: 5 ms [resl] finished: 4, queries: 2, mempool: 32800 B
[plan] plan 'xxx.ddnonexist.go.jp.' type 'A' [resl] => querying: '203.119.40.1' score: 11 zone cut: 'jp.' m12n: 'xxx.DdNoNExIST.go.jP.' type: 'A' [iter] <= rcode: NXDOMAIN [ pc ] => answer cached for TTL=900 [resl] <= server: '203.119.40.1' rtt: 6 ms [resl] finished: 4, queries: 1, mempool: 32800 B