1 ; config options 2 server: 3 target-fetch-policy: "0 0 0 0 0" 4 qname-minimisation: no 5 minimal-responses: yes 6 serve-expired: yes 7 serve-expired-client-timeout: 0 8 serve-expired-reply-ttl: 123 9 ;module-config: "subnetcache validator cachedb iterator" 10 module-config: "validator cachedb iterator" 11 ede: yes 12 ede-serve-expired: yes 13 14 cachedb: 15 backend: "testframe" 16 secret-seed: "testvalue" 17 cachedb-check-when-serve-expired: yes 18 19 stub-zone: 20 name: "." 21 stub-addr: 193.0.14.129 22 CONFIG_END 23 24 SCENARIO_BEGIN Test cachedb, validator and serve expired. 25 26 ; K.ROOT-SERVERS.NET. 27 RANGE_BEGIN 0 400 28 ADDRESS 193.0.14.129 29 ENTRY_BEGIN 30 MATCH opcode qtype qname 31 ADJUST copy_id 32 REPLY QR NOERROR 33 SECTION QUESTION 34 . IN NS 35 SECTION ANSWER 36 . IN NS K.ROOT-SERVERS.NET. 37 SECTION ADDITIONAL 38 K.ROOT-SERVERS.NET. IN A 193.0.14.129 39 ENTRY_END 40 41 ENTRY_BEGIN 42 MATCH opcode subdomain 43 ADJUST copy_id copy_query 44 REPLY QR NOERROR 45 SECTION QUESTION 46 com. IN NS 47 SECTION AUTHORITY 48 com. IN NS a.gtld-servers.net. 49 SECTION ADDITIONAL 50 a.gtld-servers.net. IN A 192.5.6.30 51 ENTRY_END 52 RANGE_END 53 54 ; a.gtld-servers.net. 55 RANGE_BEGIN 0 400 56 ADDRESS 192.5.6.30 57 ENTRY_BEGIN 58 MATCH opcode subdomain 59 ADJUST copy_id copy_query 60 REPLY QR NOERROR 61 SECTION QUESTION 62 example.com. IN NS 63 SECTION AUTHORITY 64 example.com. IN NS ns2.example.com. 65 SECTION ADDITIONAL 66 ns2.example.com. IN A 1.2.3.5 67 ENTRY_END 68 69 ENTRY_BEGIN 70 MATCH opcode subdomain 71 ADJUST copy_id copy_query 72 REPLY QR NOERROR 73 SECTION QUESTION 74 foo.com. IN NS 75 SECTION AUTHORITY 76 foo.com. IN NS ns.example.com. 77 ENTRY_END 78 RANGE_END 79 80 ; ns2.example.com. 81 RANGE_BEGIN 0 400 82 ADDRESS 1.2.3.5 83 ENTRY_BEGIN 84 MATCH opcode qname qtype 85 REPLY QR AA NOERROR 86 SECTION QUESTION 87 www.example.com. IN A 88 SECTION ANSWER 89 www.example.com. 200 IN A 1.2.3.4 90 ENTRY_END 91 92 ENTRY_BEGIN 93 MATCH opcode qname qtype 94 REPLY QR AA NOERROR 95 SECTION QUESTION 96 www2.example.com. IN A 97 SECTION ANSWER 98 ; TTL lower than serve-expired-reply-ttl on purpose 99 www2.example.com. 100 IN A 1.2.3.5 100 ENTRY_END 101 RANGE_END 102 103 ; Get an entry in cache, to make it expired. 104 STEP 1 QUERY 105 ENTRY_BEGIN 106 REPLY RD 107 SECTION QUESTION 108 www.example.com. IN A 109 ENTRY_END 110 111 ; get the answer for it 112 STEP 10 CHECK_ANSWER 113 ENTRY_BEGIN 114 MATCH all 115 REPLY QR RD RA NOERROR 116 SECTION QUESTION 117 www.example.com. IN A 118 SECTION ANSWER 119 www.example.com. 200 IN A 1.2.3.4 120 ENTRY_END 121 122 ; Get another query in cache to make it expired. 123 STEP 20 QUERY 124 ENTRY_BEGIN 125 REPLY RD 126 SECTION QUESTION 127 www2.example.com. IN A 128 ENTRY_END 129 130 ; get the answer for it 131 STEP 30 CHECK_ANSWER 132 ENTRY_BEGIN 133 MATCH all 134 REPLY QR RD RA NOERROR 135 SECTION QUESTION 136 www2.example.com. IN A 137 SECTION ANSWER 138 www2.example.com. 100 IN A 1.2.3.5 139 ENTRY_END 140 141 ; it is now expired 142 STEP 40 TIME_PASSES ELAPSE 200 143 144 ; cache is expired, and cachedb is expired. 145 ; The expired reply, from cachedb, needs a validation status, 146 ; because the validator module set that validation is needed. 147 STEP 50 QUERY 148 ENTRY_BEGIN 149 REPLY RD DO 150 SECTION QUESTION 151 www2.example.com. IN A 152 ENTRY_END 153 154 STEP 60 CHECK_ANSWER 155 ENTRY_BEGIN 156 MATCH all ttl ede=3 157 REPLY QR RD RA DO NOERROR 158 SECTION QUESTION 159 www2.example.com. IN A 160 SECTION ANSWER 161 www2.example.com. 100 IN A 1.2.3.5 162 ENTRY_END 163 164 ; cache is expired, cachedb has no answer 165 STEP 70 QUERY 166 ENTRY_BEGIN 167 REPLY RD DO 168 SECTION QUESTION 169 www.example.com. IN A 170 ENTRY_END 171 172 STEP 80 CHECK_ANSWER 173 ENTRY_BEGIN 174 MATCH all ttl ede=3 175 REPLY QR RD RA DO NOERROR 176 SECTION QUESTION 177 www.example.com. IN A 178 SECTION ANSWER 179 www.example.com. 123 IN A 1.2.3.4 180 ENTRY_END 181 182 STEP 90 TRAFFIC 183 ; the entry should be refreshed in cache now. 184 ; cache is valid and cachedb is valid. 185 STEP 100 QUERY 186 ENTRY_BEGIN 187 REPLY RD 188 SECTION QUESTION 189 www.example.com. IN A 190 ENTRY_END 191 192 STEP 110 CHECK_ANSWER 193 ENTRY_BEGIN 194 MATCH all ttl 195 REPLY QR RD RA NOERROR 196 SECTION QUESTION 197 www.example.com. IN A 198 SECTION ANSWER 199 www.example.com. 200 IN A 1.2.3.4 200 ENTRY_END 201 202 ; flush the entry from cache 203 STEP 120 FLUSH_MESSAGE www.example.com. IN A 204 205 ; cache has no answer, cachedb valid 206 STEP 130 QUERY 207 ENTRY_BEGIN 208 REPLY RD 209 SECTION QUESTION 210 www.example.com. IN A 211 ENTRY_END 212 213 STEP 140 CHECK_ANSWER 214 ENTRY_BEGIN 215 MATCH all ttl 216 REPLY QR RD RA NOERROR 217 SECTION QUESTION 218 www.example.com. IN A 219 SECTION ANSWER 220 www.example.com. 200 IN A 1.2.3.4 221 ENTRY_END 222 223 ; it is now expired 224 STEP 150 TIME_PASSES ELAPSE 200 225 ; flush the entry from cache 226 STEP 160 FLUSH_MESSAGE www.example.com. IN A 227 228 ; cache has no answer, cachedb is expired 229 ; but it needs to be validated. 230 STEP 170 QUERY 231 ENTRY_BEGIN 232 REPLY RD DO 233 SECTION QUESTION 234 www.example.com. IN A 235 ENTRY_END 236 237 STEP 180 CHECK_ANSWER 238 ENTRY_BEGIN 239 MATCH all ttl 240 ;ede=3 241 REPLY QR RD RA DO NOERROR 242 SECTION QUESTION 243 www.example.com. IN A 244 SECTION ANSWER 245 ;www.example.com. 123 IN A 1.2.3.4 246 www.example.com. 200 IN A 1.2.3.4 247 ENTRY_END 248 249 STEP 190 TRAFFIC 250 ; the expired message is updated. 251 252 ; cache is valid, cachedb is valid 253 STEP 200 QUERY 254 ENTRY_BEGIN 255 REPLY RD 256 SECTION QUESTION 257 www.example.com. IN A 258 ENTRY_END 259 260 STEP 210 CHECK_ANSWER 261 ENTRY_BEGIN 262 MATCH all ttl 263 REPLY QR RD RA NOERROR 264 SECTION QUESTION 265 www.example.com. IN A 266 SECTION ANSWER 267 www.example.com. 200 IN A 1.2.3.4 268 ENTRY_END 269 270 ; expire the entry in cache 271 STEP 220 EXPIRE_MESSAGE www.example.com. IN A 272 273 ; cache is expired, cachedb valid 274 STEP 230 QUERY 275 ENTRY_BEGIN 276 REPLY RD 277 SECTION QUESTION 278 www.example.com. IN A 279 ENTRY_END 280 281 STEP 240 CHECK_ANSWER 282 ENTRY_BEGIN 283 MATCH all ttl 284 REPLY QR RD RA NOERROR 285 SECTION QUESTION 286 www.example.com. IN A 287 SECTION ANSWER 288 www.example.com. 200 IN A 1.2.3.4 289 ENTRY_END 290 291 ; it is now expired 292 STEP 250 TIME_PASSES ELAPSE 200 293 ; expire the entry in cache 294 STEP 260 EXPIRE_MESSAGE www.example.com. IN A 295 296 ; cache is expired, cachedb is expired 297 STEP 270 QUERY 298 ENTRY_BEGIN 299 REPLY RD DO 300 SECTION QUESTION 301 www.example.com. IN A 302 ENTRY_END 303 304 ; but it needs to be validated 305 STEP 280 CHECK_ANSWER 306 ENTRY_BEGIN 307 MATCH all ttl 308 ;ede=3 309 REPLY QR RD RA DO NOERROR 310 SECTION QUESTION 311 www.example.com. IN A 312 SECTION ANSWER 313 ;www.example.com. 123 IN A 1.2.3.4 314 www.example.com. 200 IN A 1.2.3.4 315 ENTRY_END 316 317 STEP 290 TRAFFIC 318 ; the expired message is updated. 319 320 ; cache is valid, cachedb is valid 321 STEP 300 QUERY 322 ENTRY_BEGIN 323 REPLY RD 324 SECTION QUESTION 325 www.example.com. IN A 326 ENTRY_END 327 328 STEP 310 CHECK_ANSWER 329 ENTRY_BEGIN 330 MATCH all ttl 331 REPLY QR RD RA NOERROR 332 SECTION QUESTION 333 www.example.com. IN A 334 SECTION ANSWER 335 www.example.com. 200 IN A 1.2.3.4 336 ENTRY_END 337 338 SCENARIO_END 339