Delegation03
Status: Final
Purpose
- Check how large a synthesized maximal referral response is relative to the 512-byte non-EDNS UDP payload limit and the 1232-byte EDNS payload size, and grade it accordingly.
Preconditions And Inputs
- Preconditions:
- A
zone.Zoneobject is available.
- A
- Required inputs:
- Parent zone object from
z.Parent(ctx). - Delegation NS names from
z.GlueNames(ctx). - Delegation addressed NS from
GlueNameservers.
- Parent zone object from
- Profile/config knobs that affect behavior:
- No direct profile knob in this testcase.
- Size thresholds are fixed by
constants.UDPPayloadLimit(512) andconstants.EDNSUDPPayloadDNSSECDefault(1232).
Algorithm And Decision Flow
- Emit
TEST_CASE_START. - Build a maximally long qname under the tested zone apex.
- Build a DNS message with question
<max-length-name> IN NS. - Add NS records for all names from
z.GlueNamesinto the authority section. - Get parent zone from
z.Parent(ctx); if parent is missing, return an error. - Read delegation addressed NS from
GlueNameservers. - If IPv4 delegation NS list is non-empty and all names are in-bailiwick of parent:
- Add one
Aglue record to additional section, using the first IPv4 nameserver.
- Add one
- If IPv6 delegation NS list is non-empty and all names are in-bailiwick of parent:
- Add one
AAAAglue record to additional section, using the first IPv6 nameserver.
- Add one
- Pack wire format with compression enabled and measure packet size.
- Emit one of:
REFERRAL_SIZE_TOO_LARGEwhen packed size> 1232.REFERRAL_SIZE_LARGEwhen packed size> 512and<= 1232.REFERRAL_SIZE_OKotherwise (packed size<= 512).
- Emit
TEST_CASE_END.
Synthetic Referral Build and Size Check (steps 2-11)
Emitted Tags (Possible Set)
| Tag | Emitted when |
|---|---|
REFERRAL_SIZE_OK | Synthesized packed referral size is within the 512-byte non-EDNS UDP limit. |
REFERRAL_SIZE_LARGE | Synthesized packed referral size exceeds 512 bytes but fits within the 1232-byte EDNS payload size. |
REFERRAL_SIZE_TOO_LARGE | Synthesized packed referral size exceeds the 1232-byte EDNS payload size. |
TEST_CASE_END | Testcase completion marker is emitted. |
TEST_CASE_START | Testcase start marker is emitted. |
Tag Arguments
| Tag | Argument key | Type | Meaning |
|---|---|---|---|
REFERRAL_SIZE_OK | size | int | Packed referral size in bytes. |
REFERRAL_SIZE_LARGE | size | int | Packed referral size in bytes. |
REFERRAL_SIZE_TOO_LARGE | size | int | Packed referral size in bytes. |
TEST_CASE_END | testcase | string | Testcase display name (Delegation03). |
TEST_CASE_START | testcase | string | Testcase display name (Delegation03). |
Severity Levels Per Tag
| Tag | Level | Notes |
|---|---|---|
REFERRAL_SIZE_OK | INFO | Default from share/profile.json (test_levels.DELEGATION). |
REFERRAL_SIZE_LARGE | NOTICE | Default from share/profile.json (test_levels.DELEGATION). |
REFERRAL_SIZE_TOO_LARGE | WARNING | Default from share/profile.json (test_levels.DELEGATION). |
TEST_CASE_END | DEBUG | Default from share/profile.json (test_levels.DELEGATION). |
TEST_CASE_START | DEBUG | Default from share/profile.json (test_levels.DELEGATION). |
Differences From Upstream
- Differences (Upstream vs Gonemaster):
- Upstream: describes adding one A/AAAA record with any address when conditions are met. Gonemaster: adds one record using the first available NS address from
GlueNameserversfor each family. - Upstream: does not describe testcase boundary debug markers. Gonemaster: emits
TEST_CASE_STARTandTEST_CASE_END.
- Upstream: describes adding one A/AAAA record with any address when conditions are met. Gonemaster: adds one record using the first available NS address from
- Potential upstream report:
no
Edge Cases And Limitations
- This testcase does not send network queries; it evaluates synthesized packet size only.
- When a family has any out-of-bailiwick NS name relative to parent, no additional-section record is added for that family.
- A missing parent zone object is treated as a hard error instead of a logged result tag.