xref: /netbsd-src/external/bsd/unbound/dist/testdata/subnet_global_prefetch_with_client_ecs.crpl (revision 91f7d55fb697b5e0475da4718fa34c3a3ebeac85)
1; Check if the prefetch option works properly for messages stored in the global
2; cache for ECS clients. The prefetch query needs to result in an ECS
3; outgoing query using the client's ECS data.
4
5server:
6	trust-anchor-signaling: no
7	target-fetch-policy: "0 0 0 0 0"
8	send-client-subnet: 1.2.3.4
9	max-client-subnet-ipv4: 21
10	module-config: "subnetcache iterator"
11	verbosity: 3
12	access-control: 127.0.0.1 allow_snoop
13	qname-minimisation: no
14	minimal-responses: no
15	prefetch: yes
16
17stub-zone:
18	name: "."
19	stub-addr: 193.0.14.129 	# K.ROOT-SERVERS.NET.
20CONFIG_END
21
22SCENARIO_BEGIN Test prefetch option for global cache with ECS enabled and ECS client
23
24; K.ROOT-SERVERS.NET.
25RANGE_BEGIN 0 100
26	ADDRESS 193.0.14.129
27	ENTRY_BEGIN
28		MATCH opcode qtype qname ednsdata
29		ADJUST copy_id
30		REPLY QR NOERROR
31		SECTION QUESTION
32			. IN NS
33		SECTION ANSWER
34			. IN NS	K.ROOT-SERVERS.NET.
35		SECTION ADDITIONAL
36			K.ROOT-SERVERS.NET.	IN	A	193.0.14.129
37	ENTRY_END
38
39	ENTRY_BEGIN
40		MATCH opcode qtype qname
41		ADJUST copy_id
42		REPLY QR NOERROR
43		SECTION QUESTION
44			www.example.com. IN A
45		SECTION AUTHORITY
46			com.	IN NS	a.gtld-servers.net.
47		SECTION ADDITIONAL
48			a.gtld-servers.net.	IN 	A	192.5.6.30
49	ENTRY_END
50RANGE_END
51
52; a.gtld-servers.net.
53RANGE_BEGIN 0 100
54	ADDRESS 192.5.6.30
55	ENTRY_BEGIN
56		MATCH opcode qtype qname ednsdata
57		ADJUST copy_id
58		REPLY QR NOERROR
59		SECTION QUESTION
60			com. IN NS
61		SECTION ANSWER
62			com.    IN NS   a.gtld-servers.net.
63		SECTION ADDITIONAL
64			a.gtld-servers.net.     IN      A       192.5.6.30
65	ENTRY_END
66
67	ENTRY_BEGIN
68		MATCH opcode qtype qname
69		ADJUST copy_id
70		REPLY QR NOERROR
71		SECTION QUESTION
72			www.example.com. IN A
73		SECTION AUTHORITY
74			example.com.	IN NS	ns.example.com.
75		SECTION ADDITIONAL
76			ns.example.com.		IN 	A	1.2.3.4
77	ENTRY_END
78RANGE_END
79
80; ns.example.com.
81RANGE_BEGIN 0 10
82	ADDRESS 1.2.3.4
83	ENTRY_BEGIN
84		MATCH opcode qtype qname
85		ADJUST copy_id
86		REPLY QR NOERROR
87		SECTION QUESTION
88			example.com. IN NS
89		SECTION ANSWER
90			example.com.    IN NS   ns.example.com.
91		SECTION ADDITIONAL
92			ns.example.com.         IN      A       1.2.3.4
93	ENTRY_END
94
95	; response to query of interest
96	ENTRY_BEGIN
97		MATCH opcode qtype qname
98		ADJUST copy_id
99		REPLY QR NOERROR
100		SECTION QUESTION
101			www.example.com. IN A
102		SECTION ANSWER
103			www.example.com. 10 IN A	10.20.30.40
104		SECTION AUTHORITY
105			example.com.	IN NS	ns.example.com.
106		SECTION ADDITIONAL
107			ns.example.com.		IN 	A	1.2.3.4
108	ENTRY_END
109RANGE_END
110
111; ns.example.com.
112RANGE_BEGIN 11 100
113	ADDRESS 1.2.3.4
114	ENTRY_BEGIN
115		MATCH opcode qtype qname
116		ADJUST copy_id
117		REPLY QR NOERROR
118		SECTION QUESTION
119			example.com. IN NS
120		SECTION ANSWER
121			example.com.    IN NS   ns.example.com.
122		SECTION ADDITIONAL
123			ns.example.com.         IN      A       1.2.3.4
124	ENTRY_END
125
126	; response to query of interest
127	ENTRY_BEGIN
128		MATCH opcode qtype qname ednsdata
129		ADJUST copy_id copy_ednsdata_assume_clientsubnet
130		REPLY QR NOERROR
131		SECTION QUESTION
132			www.example.com. IN A
133		SECTION ANSWER
134			www.example.com. 10 IN A	10.20.30.40
135		SECTION AUTHORITY
136			example.com.	IN NS	ns.example.com.
137		SECTION ADDITIONAL
138			HEX_EDNSDATA_BEGIN
139						; client is 127.0.0.1
140				00 08 		; OPC
141				00 05 		; option length
142				00 01 		; Family
143				08 00 		; source mask, scopemask
144				7f		; address
145			HEX_EDNSDATA_END
146			ns.example.com.		IN 	A	1.2.3.4
147	ENTRY_END
148RANGE_END
149
150STEP 1 QUERY
151ENTRY_BEGIN
152REPLY RD
153SECTION QUESTION
154www.example.com. IN A
155ENTRY_END
156
157; This answer should be in the global cache
158STEP 2 CHECK_ANSWER
159ENTRY_BEGIN
160MATCH all
161REPLY QR RD RA NOERROR
162SECTION QUESTION
163www.example.com.	IN A
164SECTION ANSWER
165www.example.com.	IN A	10.20.30.40
166SECTION AUTHORITY
167example.com.		IN NS	ns.example.com.
168SECTION ADDITIONAL
169ns.example.com.		IN A	1.2.3.4
170ENTRY_END
171
172; Try to trigger a prefetch
173STEP 3 TIME_PASSES ELAPSE 9
174
175STEP 11 QUERY
176ENTRY_BEGIN
177REPLY RD DO
178SECTION QUESTION
179www.example.com. IN A
180SECTION ADDITIONAL
181HEX_EDNSDATA_BEGIN
182	00 08 00 05	; OPC, optlen
183	00 01 08 00	; ip4, source 8, scope 0
184	7f   		; 127.0.0.0/8
185HEX_EDNSDATA_END
186ENTRY_END
187
188; This record came from the global cache and a prefetch was triggered
189STEP 12 CHECK_ANSWER
190ENTRY_BEGIN
191MATCH all ttl
192REPLY QR RD RA DO NOERROR
193SECTION QUESTION
194www.example.com.		IN A
195SECTION ANSWER
196www.example.com.	1	IN A	10.20.30.40
197SECTION AUTHORITY
198example.com.		3591	IN NS	ns.example.com.
199SECTION ADDITIONAL
200ns.example.com.		3591	IN A	1.2.3.4
201ENTRY_END
202
203; Allow time to pass so that the global cache record is expired
204STEP 13 TIME_PASSES ELAPSE 2
205
206; Query again to verify that the record was prefetched and stored in the ECS
207; cache (because the server replied with ECS this time)
208STEP 14 QUERY
209ENTRY_BEGIN
210REPLY RD DO
211SECTION QUESTION
212www.example.com. IN A
213SECTION ADDITIONAL
214HEX_EDNSDATA_BEGIN
215	00 08 00 05	; OPC, optlen
216	00 01 08 00	; ip4, source 8, scope 0
217	7f   		; 127.0.0.0/8
218HEX_EDNSDATA_END
219ENTRY_END
220
221; This record came from the ECS cache
222STEP 15 CHECK_ANSWER
223ENTRY_BEGIN
224MATCH all ttl
225REPLY QR RD RA DO NOERROR
226SECTION QUESTION
227www.example.com.		IN A
228SECTION ANSWER
229www.example.com.	8	IN A	10.20.30.40
230SECTION AUTHORITY
231example.com.		3598	IN NS	ns.example.com.
232SECTION ADDITIONAL
233HEX_EDNSDATA_BEGIN
234	00 08 00 05	; OPC, optlen
235	00 01 08 08	; ip4, source 8, scope 0
236	7f		; 127.0.0.0/8
237HEX_EDNSDATA_END
238ns.example.com.		3598	IN A	1.2.3.4
239ENTRY_END
240
241SCENARIO_END
242