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 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 07 ; option length 142 00 01 ; Family 143 15 00 ; source mask, scopemask 144 7f 00 00 ; 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 (because no ECS from upstream) 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 178SECTION QUESTION 179www.example.com. IN A 180ENTRY_END 181 182; This record came from the global cache and a prefetch was triggered 183STEP 12 CHECK_ANSWER 184ENTRY_BEGIN 185MATCH all ttl 186REPLY QR RD RA NOERROR 187SECTION QUESTION 188www.example.com. IN A 189SECTION ANSWER 190www.example.com. 1 IN A 10.20.30.40 191SECTION AUTHORITY 192example.com. 3591 IN NS ns.example.com. 193SECTION ADDITIONAL 194ns.example.com. 3591 IN A 1.2.3.4 195ENTRY_END 196 197; Allow time to pass so that the global cache record is expired 198STEP 13 TIME_PASSES ELAPSE 2 199 200; Query again to verify that the record was prefetched and stored in the ECS 201; cache (because the server replied with ECS this time) 202STEP 14 QUERY 203ENTRY_BEGIN 204REPLY RD 205SECTION QUESTION 206www.example.com. IN A 207ENTRY_END 208 209; This record came from the ECS cache 210STEP 15 CHECK_ANSWER 211ENTRY_BEGIN 212MATCH all ttl 213REPLY QR RD RA NOERROR 214SECTION QUESTION 215www.example.com. IN A 216SECTION ANSWER 217www.example.com. 8 IN A 10.20.30.40 218SECTION AUTHORITY 219example.com. 3598 IN NS ns.example.com. 220SECTION ADDITIONAL 221ns.example.com. 3598 IN A 1.2.3.4 222ENTRY_END 223 224SCENARIO_END 225