1[ 2 { 3 "id": "ca5e", 4 "name": "Check class delete notification for ffff:", 5 "category": [ 6 "qdisc" 7 ], 8 "plugins": { 9 "requires": "nsPlugin" 10 }, 11 "setup": [ 12 "$IP link set dev $DUMMY up || true", 13 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 14 "$TC qdisc add dev $DUMMY root handle 1: drr", 15 "$TC filter add dev $DUMMY parent 1: basic classid 1:1", 16 "$TC class add dev $DUMMY parent 1: classid 1:1 drr", 17 "$TC qdisc add dev $DUMMY parent 1:1 handle ffff: drr", 18 "$TC filter add dev $DUMMY parent ffff: basic classid ffff:1", 19 "$TC class add dev $DUMMY parent ffff: classid ffff:1 drr", 20 "$TC qdisc add dev $DUMMY parent ffff:1 netem delay 1s", 21 "ping -c1 -W0.01 -I $DUMMY 10.10.10.1 || true", 22 "$TC class del dev $DUMMY classid ffff:1", 23 "$TC class add dev $DUMMY parent ffff: classid ffff:1 drr" 24 ], 25 "cmdUnderTest": "ping -c1 -W0.01 -I $DUMMY 10.10.10.1", 26 "expExitCode": "1", 27 "verifyCmd": "$TC -s qdisc ls dev $DUMMY", 28 "matchPattern": "drr 1: root", 29 "matchCount": "1", 30 "teardown": [ 31 "$TC qdisc del dev $DUMMY root handle 1: drr", 32 "$IP addr del 10.10.10.10/24 dev $DUMMY" 33 ] 34 }, 35 { 36 "id": "e4b7", 37 "name": "Check class delete notification for root ffff:", 38 "category": [ 39 "qdisc" 40 ], 41 "plugins": { 42 "requires": "nsPlugin" 43 }, 44 "setup": [ 45 "$IP link set dev $DUMMY up || true", 46 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 47 "$TC qdisc add dev $DUMMY root handle ffff: drr", 48 "$TC filter add dev $DUMMY parent ffff: basic classid ffff:1", 49 "$TC class add dev $DUMMY parent ffff: classid ffff:1 drr", 50 "$TC qdisc add dev $DUMMY parent ffff:1 netem delay 1s", 51 "ping -c1 -W0.01 -I $DUMMY 10.10.10.1 || true", 52 "$TC class del dev $DUMMY classid ffff:1", 53 "$TC class add dev $DUMMY parent ffff: classid ffff:1 drr" 54 ], 55 "cmdUnderTest": "ping -c1 -W0.01 -I $DUMMY 10.10.10.1", 56 "expExitCode": "1", 57 "verifyCmd": "$TC qdisc ls dev $DUMMY", 58 "matchPattern": "drr ffff: root", 59 "matchCount": "1", 60 "teardown": [ 61 "$TC qdisc del dev $DUMMY root handle ffff: drr", 62 "$IP addr del 10.10.10.10/24 dev $DUMMY" 63 ] 64 }, 65 { 66 "id": "33a9", 67 "name": "Check ingress is not searchable on backlog update", 68 "category": [ 69 "qdisc" 70 ], 71 "plugins": { 72 "requires": "nsPlugin" 73 }, 74 "setup": [ 75 "$IP link set dev $DUMMY up || true", 76 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 77 "$TC qdisc add dev $DUMMY ingress", 78 "$TC qdisc add dev $DUMMY root handle 1: drr", 79 "$TC filter add dev $DUMMY parent 1: basic classid 1:1", 80 "$TC class add dev $DUMMY parent 1: classid 1:1 drr", 81 "$TC qdisc add dev $DUMMY parent 1:1 handle 2: drr", 82 "$TC filter add dev $DUMMY parent 2: basic classid 2:1", 83 "$TC class add dev $DUMMY parent 2: classid 2:1 drr", 84 "$TC qdisc add dev $DUMMY parent 2:1 netem delay 1s", 85 "ping -c1 -W0.01 -I $DUMMY 10.10.10.1 || true" 86 ], 87 "cmdUnderTest": "$TC class del dev $DUMMY classid 2:1", 88 "expExitCode": "0", 89 "verifyCmd": "$TC qdisc ls dev $DUMMY", 90 "matchPattern": "drr 1: root", 91 "matchCount": "1", 92 "teardown": [ 93 "$TC qdisc del dev $DUMMY root handle 1: drr", 94 "$TC qdisc del dev $DUMMY ingress", 95 "$IP addr del 10.10.10.10/24 dev $DUMMY" 96 ] 97 }, 98 { 99 "id": "a4b9", 100 "name": "Test class qlen notification", 101 "category": [ 102 "qdisc" 103 ], 104 "plugins": { 105 "requires": "nsPlugin" 106 }, 107 "setup": [ 108 "$IP link set dev $DUMMY up || true", 109 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 110 "$TC qdisc add dev $DUMMY root handle 1: drr", 111 "$TC filter add dev $DUMMY parent 1: basic classid 1:1", 112 "$TC class add dev $DUMMY parent 1: classid 1:1 drr", 113 "$TC qdisc add dev $DUMMY parent 1:1 handle 2: netem", 114 "$TC qdisc add dev $DUMMY parent 2: handle 3: drr", 115 "$TC filter add dev $DUMMY parent 3: basic action drop", 116 "$TC class add dev $DUMMY parent 3: classid 3:1 drr", 117 "$TC class del dev $DUMMY classid 1:1", 118 "$TC class add dev $DUMMY parent 1: classid 1:1 drr" 119 ], 120 "cmdUnderTest": "ping -c1 -W0.01 -I $DUMMY 10.10.10.1", 121 "expExitCode": "1", 122 "verifyCmd": "$TC qdisc ls dev $DUMMY", 123 "matchPattern": "drr 1: root", 124 "matchCount": "1", 125 "teardown": [ 126 "$TC qdisc del dev $DUMMY root handle 1: drr", 127 "$IP addr del 10.10.10.10/24 dev $DUMMY" 128 ] 129 }, 130 { 131 "id": "c024", 132 "name": "Test TBF with SKBPRIO - catch qlen corner cases", 133 "category": [ 134 "qdisc", 135 "tbf", 136 "skbprio" 137 ], 138 "plugins": { 139 "requires": "nsPlugin" 140 }, 141 "setup": [ 142 "$IP link set dev $DUMMY up || true", 143 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 144 "$TC qdisc add dev $DUMMY handle 1: root tbf rate 100bit burst 2000 limit 1000", 145 "$TC qdisc add dev $DUMMY parent 1: handle 10: skbprio limit 1", 146 "ping -c 1 -W 0.1 -Q 0x00 -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true", 147 "ping -c 1 -W 0.1 -Q 0x1c -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true", 148 "ping -c 1 -W 0.1 -Q 0x00 -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true", 149 "ping -c 1 -W 0.1 -Q 0x1c -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true", 150 "sleep 0.5" 151 ], 152 "cmdUnderTest": "$TC -s qdisc show dev $DUMMY", 153 "expExitCode": "0", 154 "verifyCmd": "$TC -s qdisc show dev $DUMMY | grep -A 5 'qdisc skbprio'", 155 "matchPattern": "dropped [1-9][0-9]*", 156 "matchCount": "1", 157 "teardown": [ 158 "$TC qdisc del dev $DUMMY handle 1: root", 159 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 160 ] 161 }, 162 { 163 "id": "a4bb", 164 "name": "Test FQ_CODEL with HTB parent - force packet drop with empty queue", 165 "category": [ 166 "qdisc", 167 "fq_codel", 168 "htb" 169 ], 170 "plugins": { 171 "requires": "nsPlugin" 172 }, 173 "setup": [ 174 "$IP link set dev $DUMMY up || true", 175 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 176 "$TC qdisc add dev $DUMMY handle 1: root htb default 10", 177 "$TC class add dev $DUMMY parent 1: classid 1:10 htb rate 1kbit", 178 "$TC qdisc add dev $DUMMY parent 1:10 handle 10: fq_codel memory_limit 1 flows 1 target 0.1ms interval 1ms", 179 "$TC filter add dev $DUMMY parent 1: protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:10", 180 "ping -c 5 -f -I $DUMMY 10.10.10.1 > /dev/null || true", 181 "sleep 0.1" 182 ], 183 "cmdUnderTest": "$TC -s qdisc show dev $DUMMY", 184 "expExitCode": "0", 185 "verifyCmd": "$TC -s qdisc show dev $DUMMY | grep -A 5 'qdisc fq_codel'", 186 "matchPattern": "dropped [1-9][0-9]*", 187 "matchCount": "1", 188 "teardown": [ 189 "$TC qdisc del dev $DUMMY handle 1: root", 190 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 191 ] 192 }, 193 { 194 "id": "a4be", 195 "name": "Test FQ_CODEL with QFQ parent - force packet drop with empty queue", 196 "category": [ 197 "qdisc", 198 "fq_codel", 199 "qfq" 200 ], 201 "plugins": { 202 "requires": "nsPlugin" 203 }, 204 "setup": [ 205 "$IP link set dev $DUMMY up || true", 206 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 207 "$TC qdisc add dev $DUMMY handle 1: root qfq", 208 "$TC class add dev $DUMMY parent 1: classid 1:10 qfq weight 1 maxpkt 1000", 209 "$TC qdisc add dev $DUMMY parent 1:10 handle 10: fq_codel memory_limit 1 flows 1 target 0.1ms interval 1ms", 210 "$TC filter add dev $DUMMY parent 1: protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:10", 211 "ping -c 10 -s 1000 -f -I $DUMMY 10.10.10.1 > /dev/null || true", 212 "sleep 0.1" 213 ], 214 "cmdUnderTest": "$TC -s qdisc show dev $DUMMY", 215 "expExitCode": "0", 216 "verifyCmd": "$TC -s qdisc show dev $DUMMY | grep -A 5 'qdisc fq_codel'", 217 "matchPattern": "dropped [1-9][0-9]*", 218 "matchCount": "1", 219 "teardown": [ 220 "$TC qdisc del dev $DUMMY handle 1: root", 221 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 222 ] 223 }, 224 { 225 "id": "a4bf", 226 "name": "Test FQ_CODEL with HFSC parent - force packet drop with empty queue", 227 "category": [ 228 "qdisc", 229 "fq_codel", 230 "hfsc" 231 ], 232 "plugins": { 233 "requires": "nsPlugin" 234 }, 235 "setup": [ 236 "$IP link set dev $DUMMY up || true", 237 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 238 "$TC qdisc add dev $DUMMY handle 1: root hfsc default 10", 239 "$TC class add dev $DUMMY parent 1: classid 1:10 hfsc sc rate 1kbit ul rate 1kbit", 240 "$TC qdisc add dev $DUMMY parent 1:10 handle 10: fq_codel memory_limit 1 flows 1 target 0.1ms interval 1ms", 241 "$TC filter add dev $DUMMY parent 1: protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:10", 242 "ping -c 5 -f -I $DUMMY 10.10.10.1 > /dev/null || true", 243 "sleep 0.1" 244 ], 245 "cmdUnderTest": "$TC -s qdisc show dev $DUMMY", 246 "expExitCode": "0", 247 "verifyCmd": "$TC -s qdisc show dev $DUMMY | grep -A 5 'qdisc fq_codel'", 248 "matchPattern": "dropped [1-9][0-9]*", 249 "matchCount": "1", 250 "teardown": [ 251 "$TC qdisc del dev $DUMMY handle 1: root", 252 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 253 ] 254 }, 255 { 256 "id": "a4c0", 257 "name": "Test FQ_CODEL with DRR parent - force packet drop with empty queue", 258 "category": [ 259 "qdisc", 260 "fq_codel", 261 "drr" 262 ], 263 "plugins": { 264 "requires": "nsPlugin" 265 }, 266 "setup": [ 267 "$IP link set dev $DUMMY up || true", 268 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 269 "$TC qdisc add dev $DUMMY handle 1: root drr", 270 "$TC class add dev $DUMMY parent 1: classid 1:10 drr quantum 1500", 271 "$TC qdisc add dev $DUMMY parent 1:10 handle 10: fq_codel memory_limit 1 flows 1 target 0.1ms interval 1ms", 272 "$TC filter add dev $DUMMY parent 1: protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:10", 273 "ping -c 5 -f -I $DUMMY 10.10.10.1 > /dev/null || true", 274 "sleep 0.1" 275 ], 276 "cmdUnderTest": "$TC -s qdisc show dev $DUMMY", 277 "expExitCode": "0", 278 "verifyCmd": "$TC -s qdisc show dev $DUMMY | grep -A 5 'qdisc fq_codel'", 279 "matchPattern": "dropped [1-9][0-9]*", 280 "matchCount": "1", 281 "teardown": [ 282 "$TC qdisc del dev $DUMMY handle 1: root", 283 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 284 ] 285 }, 286 { 287 "id": "a4c1", 288 "name": "Test FQ_CODEL with ETS parent - force packet drop with empty queue", 289 "category": [ 290 "qdisc", 291 "fq_codel", 292 "ets" 293 ], 294 "plugins": { 295 "requires": "nsPlugin" 296 }, 297 "setup": [ 298 "$IP link set dev $DUMMY up || true", 299 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 300 "$TC qdisc add dev $DUMMY handle 1: root ets bands 2 strict 1", 301 "$TC class change dev $DUMMY parent 1: classid 1:1 ets", 302 "$TC qdisc add dev $DUMMY parent 1:1 handle 10: fq_codel memory_limit 1 flows 1 target 0.1ms interval 1ms", 303 "$TC filter add dev $DUMMY parent 1: protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:1", 304 "ping -c 5 -f -I $DUMMY 10.10.10.1 > /dev/null || true", 305 "sleep 0.1" 306 ], 307 "cmdUnderTest": "$TC -s qdisc show dev $DUMMY", 308 "expExitCode": "0", 309 "verifyCmd": "$TC -s qdisc show dev $DUMMY | grep -A 5 'qdisc fq_codel'", 310 "matchPattern": "dropped [1-9][0-9]*", 311 "matchCount": "1", 312 "teardown": [ 313 "$TC qdisc del dev $DUMMY handle 1: root", 314 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 315 ] 316 } 317] 318