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