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