Consistency02 (consistency02)

Status: Final

Purpose

  • Check SOA RNAME consistency across nameservers for the tested zone.

Preconditions And Inputs

  • Preconditions:
    • A zone.Zone object is available.
  • Required inputs:
    • Nameserver list from methods.Method4 and methods.Method5.
    • SOA answers from queried nameservers.
  • Profile/config knobs that affect behavior:
    • net.ipv4 and net.ipv6: disabled transports are skipped per nameserver.
    • resolver.defaults.parallel: per-nameserver query task parallelism.

Algorithm And Decision Flow

  1. Emit TEST_CASE_START.
  2. Build deduplicated nameserver list from Method4+Method5 by ns.String().
  3. For each nameserver (parallelized):
    • If transport is disabled, emit IPV4_DISABLED or IPV6_DISABLED for rrtype SOA and skip.
    • Query SOA for zone apex.
    • No response message -> emit NO_RESPONSE.
    • Response without usable SOA record -> emit NO_RESPONSE_SOA_QUERY.
    • Otherwise extract lowercase SOA RNAME and store it for that nameserver.
  4. If exactly one RNAME value exists, emit ONE_SOA_RNAME.
  5. If multiple RNAME values exist:
    • Emit MULTIPLE_SOA_RNAMES.
    • Emit SOA_RNAME once per observed RNAME with associated servers.
  6. Emit TEST_CASE_END.

Emitted Tags (Possible Set)

TagEmitted when
IPV4_DISABLEDIPv4 transport is disabled for a queried nameserver/rrtype.
IPV6_DISABLEDIPv6 transport is disabled for a queried nameserver/rrtype.
MULTIPLE_SOA_RNAMESAt least two distinct SOA RNAME values were observed.
NO_RESPONSESOA query had no response message from a nameserver.
NO_RESPONSE_SOA_QUERYResponse did not contain a usable SOA record for zone apex.
ONE_SOA_RNAMEExactly one SOA RNAME value was observed.
SOA_RNAMEA specific SOA RNAME value and associated nameservers are reported.
TEST_CASE_ENDTestcase completion marker is emitted.
TEST_CASE_STARTTestcase start marker is emitted.

Tag Arguments

TagArgument keyTypeMeaning
IPV4_DISABLEDnsstringNameserver identity (ns name only; use address for IP) skipped on IPv4.
IPV4_DISABLEDaddressstringNameserver IP address for the same endpoint.
IPV4_DISABLEDrrtypestringrrtype skipped (SOA).
IPV6_DISABLEDnsstringNameserver identity (ns name only; use address for IP) skipped on IPv6.
IPV6_DISABLEDaddressstringNameserver IP address for the same endpoint.
IPV6_DISABLEDrrtypestringrrtype skipped (SOA).
MULTIPLE_SOA_RNAMEScountintNumber of distinct RNAME values observed.
NO_RESPONSEnsstringNameserver identity (ns name only; use address for IP) with no response.
NO_RESPONSEaddressstringNameserver IP address for the same endpoint.
NO_RESPONSE_SOA_QUERYnsstringNameserver identity (ns name only; use address for IP) without usable SOA answer.
NO_RESPONSE_SOA_QUERYaddressstringNameserver IP address for the same endpoint.
ONE_SOA_RNAMErnamestringThe single observed SOA RNAME value.
SOA_RNAMErnamestringOne observed SOA RNAME value.
SOA_RNAMEserversarray<object>Structured nameserver identities ({ns,address} object) serving that RNAME.
TEST_CASE_ENDtestcasestringTestcase display name (Consistency02).
TEST_CASE_STARTtestcasestringTestcase display name (Consistency02).

Severity Levels Per Tag

TagLevelNotes
IPV4_DISABLEDDEBUGDefault from share/profile.json (test_levels.CONSISTENCY).
IPV6_DISABLEDDEBUGDefault from share/profile.json (test_levels.CONSISTENCY).
MULTIPLE_SOA_RNAMESNOTICEDefault from share/profile.json (test_levels.CONSISTENCY).
NO_RESPONSEDEBUGDefault from share/profile.json (test_levels.CONSISTENCY).
NO_RESPONSE_SOA_QUERYDEBUGDefault from share/profile.json (test_levels.CONSISTENCY).
ONE_SOA_RNAMEINFODefault from share/profile.json (test_levels.CONSISTENCY).
SOA_RNAMEINFODefault from share/profile.json (test_levels.CONSISTENCY).
TEST_CASE_ENDDEBUGDefault from share/profile.json (test_levels.CONSISTENCY).
TEST_CASE_STARTDEBUGDefault from share/profile.json (test_levels.CONSISTENCY).

Differences From Upstream

  • Upstream reference: consistency02.md
  • Differences (Upstream vs Gonemaster):
    • Upstream: does not explicitly define this detail. Gonemaster: emits SOA_RNAME detail entries for each observed RNAME value.
    • Upstream: does not explicitly define this detail. Gonemaster: Per-query transport debug tags (IPV4_DISABLED, IPV6_DISABLED) are emitted when transport is disabled.
  • Potential upstream report:
    • no

Edge Cases And Limitations

  • If no usable SOA RNAME is obtained, neither ONE_SOA_RNAME nor MULTIPLE_SOA_RNAMES is emitted.
  • SOA_RNAME servers ordering follows nameserver processing order.