1. kresd/lib/layer/iteration

1.1. 返答処理試案

DNS/返答の処理 : DNS/1/RCODE

1.2. NXDomain (RCODE)

NXDOMAINが一種類、NoError返答が四種類だ。

1.3. NoError aa off

NoError返答のうちのひとつはdelegationでaa offのはずだ。 

hintsからの返事がここに含まれるのかもしれない。 -- ToshinoriMaeno 2016-05-02 23:13:16

1.4. NoError aa on

Answer Section がない場合:NODATA と呼ばれる。--> Nagative Caching

1.5. Answer Section

Answer Sectionがある場合: 二種類ある。(aa on ?)

  1. query name は CNAME であった。照会名を変えて、続行する必要がある。
  2. query name, query type に適合する返答があった。
    • 適合する返答(RRSet)を受け取る。

Authoriy Sectionがついている(NSレコードなどがある)場合でも、無視すべきである。

2. resolve

answer section を処理する前にauthorityを調べている意味が分からない。

DJBも言っているように、返答の種類を判別するのは面倒だ。

3. process_authority

process_authorityをちょっと書きなおしてみた。

NXDomain: AA offのときだけ、DNS/1/delegationを処理するのが正しい。

NoErrorではAA on を確認して、authority (SOA) を処理する。

4. delegation

検査不十分な気がする。 ownerが一致していることを見ていなかったので、追加してみた。

不整合を発見したら、その場で打ち切り。

-- ToshinoriMaeno 2016-04-29 02:57:11

どこでどういう検査をするかというのは、全体の構造が見えていないと、決めるのはむずかしい。

NXDOMAINに付随するSOAの処理がおかしい。

-- ToshinoriMaeno 2016-04-29 05:05:44

5. co.jp

おかしな動き。

[plan] plan 'co.jp.' type 'A'
kr_zonecut_find_cached cojp
kr_zonecut_find_cached jp
[resl]   ns_fetch_cut ret 0
[resl]   NT check; cojp cut jp
[resl]   peekpkt cojp ret -116
[resl]   zone_cut_check -> ns_fetch_cut = 0
[resl]   => querying: '203.119.40.1' score: 11 zone cut: 'jp.' m12n: 'Co.JP.' type: 'A'
[iter]   AA terminate resolution chain
[iter]   <= rcode: NOERROR
[iter]   <= finalize NXD/NODATA
[ rc ]   stash auth answer 
[ pc ]   => pktcache_stash entry
[ pc ]   => pktcache_stash NXDOMAIN
[ pc ]   => pktcache_stash answer
[ pc ]   => answer cached for TTL=900
[resl]   <= server: '203.119.40.1' rtt: 6 ms
[resl] finished: 4, queries: 1, mempool: 32800 B

[plan] plan 'co.jp.' type 'A'
[ pc ]   => satisfied from cache
[iter]   AA terminate resolution chain
[iter]   <= rcode: NOERROR
[iter]   <= finalize NXD/NODATA
[ pc ]   => pktcache_stash entry
[resl] finished: 4, queries: 1, mempool: 32800 B