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 "id": "a4c3", 319 "name": "Test HFSC with netem/blackhole - queue emptying during peek operation", 320 "category": [ 321 "qdisc", 322 "hfsc", 323 "netem", 324 "blackhole" 325 ], 326 "plugins": { 327 "requires": "nsPlugin" 328 }, 329 "setup": [ 330 "$IP link set dev $DUMMY up || true", 331 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 332 "$TC qdisc add dev $DUMMY handle 1:0 root drr", 333 "$TC class add dev $DUMMY parent 1:0 classid 1:1 drr", 334 "$TC class add dev $DUMMY parent 1:0 classid 1:2 drr", 335 "$TC qdisc add dev $DUMMY parent 1:1 handle 2:0 plug limit 1024", 336 "$TC qdisc add dev $DUMMY parent 1:2 handle 3:0 hfsc default 1", 337 "$TC class add dev $DUMMY parent 3:0 classid 3:1 hfsc rt m1 5Mbit d 10ms m2 10Mbit", 338 "$TC qdisc add dev $DUMMY parent 3:1 handle 4:0 netem delay 1ms", 339 "$TC qdisc add dev $DUMMY parent 4:1 handle 5:0 blackhole", 340 "ping -c 3 -W 0.01 -i 0.001 -s 1 10.10.10.10 -I $DUMMY > /dev/null 2>&1 || true", 341 "$TC class change dev $DUMMY parent 3:0 classid 3:1 hfsc sc m1 5Mbit d 10ms m2 10Mbit", 342 "$TC class del dev $DUMMY parent 3:0 classid 3:1", 343 "$TC class add dev $DUMMY parent 3:0 classid 3:1 hfsc rt m1 5Mbit d 10ms m2 10Mbit", 344 "ping -c 3 -W 0.01 -i 0.001 -s 1 10.10.10.10 -I $DUMMY > /dev/null 2>&1 || true" 345 ], 346 "cmdUnderTest": "$TC class change dev $DUMMY parent 3:0 classid 3:1 hfsc sc m1 5Mbit d 10ms m2 10Mbit", 347 "expExitCode": "0", 348 "verifyCmd": "$TC -s qdisc show dev $DUMMY", 349 "matchPattern": "qdisc hfsc 3:.*parent 1:2.*default 1", 350 "matchCount": "1", 351 "teardown": [ 352 "$TC qdisc del dev $DUMMY handle 1:0 root", 353 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 354 ] 355 }, 356 { 357 "id": "90ec", 358 "name": "Test DRR's enqueue reentrant behaviour with netem", 359 "category": [ 360 "qdisc", 361 "drr" 362 ], 363 "plugins": { 364 "requires": "nsPlugin" 365 }, 366 "setup": [ 367 "$IP link set dev $DUMMY up || true", 368 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 369 "$TC qdisc add dev $DUMMY handle 1:0 root drr", 370 "$TC class replace dev $DUMMY parent 1:0 classid 1:1 drr", 371 "$TC qdisc add dev $DUMMY parent 1:1 handle 2:0 netem duplicate 100%", 372 "$TC filter add dev $DUMMY parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:1" 373 ], 374 "cmdUnderTest": "ping -c 1 -I $DUMMY 10.10.10.1 > /dev/null || true", 375 "expExitCode": "0", 376 "verifyCmd": "$TC -j -s qdisc ls dev $DUMMY handle 1:0", 377 "matchJSON": [ 378 { 379 "kind": "drr", 380 "handle": "1:", 381 "bytes": 196, 382 "packets": 2 383 } 384 ], 385 "matchCount": "1", 386 "teardown": [ 387 "$TC qdisc del dev $DUMMY handle 1:0 root", 388 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 389 ] 390 }, 391 { 392 "id": "1f1f", 393 "name": "Test ETS's enqueue reentrant behaviour with netem", 394 "category": [ 395 "qdisc", 396 "ets" 397 ], 398 "plugins": { 399 "requires": "nsPlugin" 400 }, 401 "setup": [ 402 "$IP link set dev $DUMMY up || true", 403 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 404 "$TC qdisc add dev $DUMMY handle 1:0 root ets bands 2", 405 "$TC class replace dev $DUMMY parent 1:0 classid 1:1 ets quantum 1500", 406 "$TC qdisc add dev $DUMMY parent 1:1 handle 2:0 netem duplicate 100%", 407 "$TC filter add dev $DUMMY parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:1" 408 ], 409 "cmdUnderTest": "ping -c 1 -I $DUMMY 10.10.10.1 > /dev/null || true", 410 "expExitCode": "0", 411 "verifyCmd": "$TC -j -s class show dev $DUMMY", 412 "matchJSON": [ 413 { 414 "class": "ets", 415 "handle": "1:1", 416 "stats": { 417 "bytes": 196, 418 "packets": 2 419 } 420 } 421 ], 422 "matchCount": "1", 423 "teardown": [ 424 "$TC qdisc del dev $DUMMY handle 1:0 root", 425 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 426 ] 427 }, 428 { 429 "id": "5e6d", 430 "name": "Test QFQ's enqueue reentrant behaviour with netem", 431 "category": [ 432 "qdisc", 433 "qfq" 434 ], 435 "plugins": { 436 "requires": "nsPlugin" 437 }, 438 "setup": [ 439 "$IP link set dev $DUMMY up || true", 440 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 441 "$TC qdisc add dev $DUMMY handle 1:0 root qfq", 442 "$TC class replace dev $DUMMY parent 1:0 classid 1:1 qfq weight 100 maxpkt 1500", 443 "$TC qdisc add dev $DUMMY parent 1:1 handle 2:0 netem duplicate 100%", 444 "$TC filter add dev $DUMMY parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:1" 445 ], 446 "cmdUnderTest": "ping -c 1 -I $DUMMY 10.10.10.1 > /dev/null || true", 447 "expExitCode": "0", 448 "verifyCmd": "$TC -j -s qdisc ls dev $DUMMY handle 1:0", 449 "matchJSON": [ 450 { 451 "kind": "qfq", 452 "handle": "1:", 453 "bytes": 196, 454 "packets": 2 455 } 456 ], 457 "matchCount": "1", 458 "teardown": [ 459 "$TC qdisc del dev $DUMMY handle 1:0 root", 460 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 461 ] 462 }, 463 { 464 "id": "bf1d", 465 "name": "Test HFSC's enqueue reentrant behaviour with netem", 466 "category": [ 467 "qdisc", 468 "hfsc" 469 ], 470 "plugins": { 471 "requires": "nsPlugin" 472 }, 473 "setup": [ 474 "$IP link set dev $DUMMY up || true", 475 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 476 "$TC qdisc add dev $DUMMY handle 1:0 root hfsc", 477 "$TC class add dev $DUMMY parent 1:0 classid 1:1 hfsc ls m2 10Mbit", 478 "$TC qdisc add dev $DUMMY parent 1:1 handle 2:0 netem duplicate 100%", 479 "$TC filter add dev $DUMMY parent 1:0 protocol ip prio 1 u32 match ip dst 10.10.10.1/32 flowid 1:1", 480 "$TC class add dev $DUMMY parent 1:0 classid 1:2 hfsc ls m2 10Mbit", 481 "$TC qdisc add dev $DUMMY parent 1:2 handle 3:0 netem duplicate 100%", 482 "$TC filter add dev $DUMMY parent 1:0 protocol ip prio 2 u32 match ip dst 10.10.10.2/32 flowid 1:2", 483 "ping -c 1 10.10.10.1 -I$DUMMY > /dev/null || true", 484 "$TC filter del dev $DUMMY parent 1:0 protocol ip prio 1", 485 "$TC class del dev $DUMMY classid 1:1" 486 ], 487 "cmdUnderTest": "ping -c 1 10.10.10.2 -I$DUMMY > /dev/null || true", 488 "expExitCode": "0", 489 "verifyCmd": "$TC -j -s qdisc ls dev $DUMMY handle 1:0", 490 "matchJSON": [ 491 { 492 "kind": "hfsc", 493 "handle": "1:", 494 "bytes": 392, 495 "packets": 4 496 } 497 ], 498 "matchCount": "1", 499 "teardown": [ 500 "$TC qdisc del dev $DUMMY handle 1:0 root", 501 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 502 ] 503 }, 504 { 505 "id": "7c3b", 506 "name": "Test nested DRR's enqueue reentrant behaviour with netem", 507 "category": [ 508 "qdisc", 509 "drr" 510 ], 511 "plugins": { 512 "requires": "nsPlugin" 513 }, 514 "setup": [ 515 "$IP link set dev $DUMMY up || true", 516 "$IP addr add 10.10.10.10/24 dev $DUMMY || true", 517 "$TC qdisc add dev $DUMMY handle 1:0 root drr", 518 "$TC class add dev $DUMMY parent 1:0 classid 1:1 drr", 519 "$TC filter add dev $DUMMY parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:1", 520 "$TC qdisc add dev $DUMMY handle 2:0 parent 1:1 drr", 521 "$TC class add dev $DUMMY classid 2:1 parent 2:0 drr", 522 "$TC filter add dev $DUMMY parent 2:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 2:1", 523 "$TC qdisc add dev $DUMMY parent 2:1 handle 3:0 netem duplicate 100%" 524 ], 525 "cmdUnderTest": "ping -c 1 -I $DUMMY 10.10.10.1 > /dev/null || true", 526 "expExitCode": "0", 527 "verifyCmd": "$TC -j -s qdisc ls dev $DUMMY handle 1:0", 528 "matchJSON": [ 529 { 530 "kind": "drr", 531 "handle": "1:", 532 "bytes": 196, 533 "packets": 2 534 } 535 ], 536 "matchCount": "1", 537 "teardown": [ 538 "$TC qdisc del dev $DUMMY handle 1:0 root", 539 "$IP addr del 10.10.10.10/24 dev $DUMMY || true" 540 ] 541 } 542] 543