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