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