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