Consistency06 (consistency06)
Status: Final
Purpose
- Check SOA MNAME consistency across nameservers for the tested zone.
Preconditions And Inputs
- Preconditions:
- A
zone.Zoneobject is available.
- A
- Required inputs:
- Nameserver list from
methods.Method4andmethods.Method5. - SOA answers from queried nameservers.
- Nameserver list from
- Profile/config knobs that affect behavior:
net.ipv4andnet.ipv6: disabled transports are skipped per nameserver.resolver.defaults.parallel: per-nameserver query task parallelism.
Algorithm And Decision Flow
- Emit
TEST_CASE_START. - Build deduplicated nameserver list from Method4+Method5 by
ns.String(). - For each nameserver (parallelized):
- If transport is disabled, emit
IPV4_DISABLEDorIPV6_DISABLEDfor rrtypeSOAand 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.
- If transport is disabled, emit
- If exactly one MNAME value exists, emit
ONE_SOA_MNAME. - If multiple MNAME values exist:
- Emit
MULTIPLE_SOA_MNAMES. - Emit
SOA_MNAMEonce per observed MNAME with associatedservers.
- Emit
- Emit
TEST_CASE_END.
Emitted Tags (Possible Set)
| Tag | Emitted when |
|---|---|
IPV4_DISABLED | IPv4 transport is disabled for a queried nameserver/rrtype. |
IPV6_DISABLED | IPv6 transport is disabled for a queried nameserver/rrtype. |
MULTIPLE_SOA_MNAMES | At least two distinct SOA MNAME values were observed. |
NO_RESPONSE | SOA query had no response message from a nameserver. |
NO_RESPONSE_SOA_QUERY | Response did not contain a usable SOA record for zone apex. |
ONE_SOA_MNAME | Exactly one SOA MNAME value was observed. |
SOA_MNAME | A specific SOA MNAME value and associated nameservers are reported. |
TEST_CASE_END | Testcase completion marker is emitted. |
TEST_CASE_START | Testcase start marker is emitted. |
Tag Arguments
| Tag | Argument key | Type | Meaning |
|---|---|---|---|
IPV4_DISABLED | ns | string | Nameserver identity (ns name only; use address for IP) skipped on IPv4. |
IPV4_DISABLED | address | string | Nameserver IP address for the same endpoint. |
IPV4_DISABLED | rrtype | string | rrtype skipped (SOA). |
IPV6_DISABLED | ns | string | Nameserver identity (ns name only; use address for IP) skipped on IPv6. |
IPV6_DISABLED | address | string | Nameserver IP address for the same endpoint. |
IPV6_DISABLED | rrtype | string | rrtype skipped (SOA). |
MULTIPLE_SOA_MNAMES | count | int | Number of distinct MNAME values observed. |
NO_RESPONSE | ns | string | Nameserver identity (ns name only; use address for IP) with no response. |
NO_RESPONSE | address | string | Nameserver IP address for the same endpoint. |
NO_RESPONSE_SOA_QUERY | ns | string | Nameserver identity (ns name only; use address for IP) without usable SOA answer. |
NO_RESPONSE_SOA_QUERY | address | string | Nameserver IP address for the same endpoint. |
ONE_SOA_MNAME | mname | string | The single observed SOA MNAME value. |
SOA_MNAME | mname | string | One observed SOA MNAME value. |
SOA_MNAME | servers | array<object> | Structured nameserver identities ({ns,address} object) serving that MNAME. |
TEST_CASE_END | testcase | string | Testcase display name (Consistency06). |
TEST_CASE_START | testcase | string | Testcase display name (Consistency06). |
Severity Levels Per Tag
| Tag | Level | Notes |
|---|---|---|
IPV4_DISABLED | DEBUG | Default from share/profile.json (test_levels.CONSISTENCY). |
IPV6_DISABLED | DEBUG | Default from share/profile.json (test_levels.CONSISTENCY). |
MULTIPLE_SOA_MNAMES | NOTICE | Default from share/profile.json (test_levels.CONSISTENCY). |
NO_RESPONSE | DEBUG | Default from share/profile.json (test_levels.CONSISTENCY). |
NO_RESPONSE_SOA_QUERY | DEBUG | Default from share/profile.json (test_levels.CONSISTENCY). |
ONE_SOA_MNAME | INFO | Default from share/profile.json (test_levels.CONSISTENCY). |
SOA_MNAME | INFO | Default from share/profile.json (test_levels.CONSISTENCY). |
TEST_CASE_END | DEBUG | Default from share/profile.json (test_levels.CONSISTENCY). |
TEST_CASE_START | DEBUG | Default 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_MNAMEdetail 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.
- Upstream: does not explicitly define this detail. Gonemaster: emits
- Potential upstream report:
no
Edge Cases And Limitations
- If no usable SOA MNAME is obtained, neither
ONE_SOA_MNAMEnorMULTIPLE_SOA_MNAMESis emitted. SOA_MNAMEserversordering follows nameserver processing order.