Consistency06 (consistency06)

Status: Final

Purpose

  • Check SOA MNAME 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 MNAME and store it for that nameserver.
  4. If exactly one MNAME value exists, emit ONE_SOA_MNAME.
  5. If multiple MNAME values exist:
    • Emit MULTIPLE_SOA_MNAMES.
    • Emit SOA_MNAME once per observed MNAME 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_MNAMESAt least two distinct SOA MNAME 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_MNAMEExactly one SOA MNAME value was observed.
SOA_MNAMEA specific SOA MNAME 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_MNAMEScountintNumber of distinct MNAME 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_MNAMEmnamestringThe single observed SOA MNAME value.
SOA_MNAMEmnamestringOne observed SOA MNAME value.
SOA_MNAMEserversarray<object>Structured nameserver identities ({ns,address} object) serving that MNAME.
TEST_CASE_ENDtestcasestringTestcase display name (Consistency06).
TEST_CASE_STARTtestcasestringTestcase display name (Consistency06).

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_MNAMESNOTICEDefault 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_MNAMEINFODefault from share/profile.json (test_levels.CONSISTENCY).
SOA_MNAMEINFODefault 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: consistency06.md
  • Differences (Upstream vs Gonemaster):
    • Upstream: does not explicitly define this detail. Gonemaster: emits SOA_MNAME detail entries for each observed MNAME 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 MNAME is obtained, neither ONE_SOA_MNAME nor MULTIPLE_SOA_MNAMES is emitted.
  • SOA_MNAME servers ordering follows nameserver processing order.