cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sch_red_ets.sh (3103B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3
      4ALL_TESTS="
      5	ping_ipv4
      6	ecn_test
      7	ecn_test_perband
      8	ecn_nodrop_test
      9	red_test
     10	mc_backlog_test
     11	red_mirror_test
     12	red_trap_test
     13	ecn_mirror_test
     14"
     15: ${QDISC:=ets}
     16source sch_red_core.sh
     17
     18# do_ecn_test first build 2/3 of the requested backlog and expects no marking,
     19# and then builds 3/2 of it and does expect marking. The values of $BACKLOG1 and
     20# $BACKLOG2 are far enough not to overlap, so that we can assume that if we do
     21# see (do not see) marking, it is actually due to the configuration of that one
     22# TC, and not due to configuration of the other TC leaking over.
     23BACKLOG1=200000
     24BACKLOG2=500000
     25
     26install_root_qdisc()
     27{
     28	tc qdisc add dev $swp3 root handle 10: $QDISC \
     29	   bands 8 priomap 7 6 5 4 3 2 1 0
     30}
     31
     32install_qdisc_tc0()
     33{
     34	local -a args=("$@")
     35
     36	tc qdisc add dev $swp3 parent 10:8 handle 108: red \
     37	   limit 1000000 min $BACKLOG1 max $((BACKLOG1 + 1)) \
     38	   probability 1.0 avpkt 8000 burst 38 "${args[@]}"
     39}
     40
     41install_qdisc_tc1()
     42{
     43	local -a args=("$@")
     44
     45	tc qdisc add dev $swp3 parent 10:7 handle 107: red \
     46	   limit 1000000 min $BACKLOG2 max $((BACKLOG2 + 1)) \
     47	   probability 1.0 avpkt 8000 burst 63 "${args[@]}"
     48}
     49
     50install_qdisc()
     51{
     52	install_root_qdisc
     53	install_qdisc_tc0 "$@"
     54	install_qdisc_tc1 "$@"
     55	sleep 1
     56}
     57
     58uninstall_qdisc_tc0()
     59{
     60	tc qdisc del dev $swp3 parent 10:8
     61}
     62
     63uninstall_qdisc_tc1()
     64{
     65	tc qdisc del dev $swp3 parent 10:7
     66}
     67
     68uninstall_root_qdisc()
     69{
     70	tc qdisc del dev $swp3 root
     71}
     72
     73uninstall_qdisc()
     74{
     75	uninstall_qdisc_tc0
     76	uninstall_qdisc_tc1
     77	uninstall_root_qdisc
     78}
     79
     80ecn_test()
     81{
     82	install_qdisc ecn
     83
     84	do_ecn_test 10 $BACKLOG1
     85	do_ecn_test 11 $BACKLOG2
     86
     87	uninstall_qdisc
     88}
     89
     90ecn_test_perband()
     91{
     92	install_qdisc ecn
     93
     94	do_ecn_test_perband 10 $BACKLOG1
     95	do_ecn_test_perband 11 $BACKLOG2
     96
     97	uninstall_qdisc
     98}
     99
    100ecn_nodrop_test()
    101{
    102	install_qdisc ecn nodrop
    103
    104	do_ecn_nodrop_test 10 $BACKLOG1
    105	do_ecn_nodrop_test 11 $BACKLOG2
    106
    107	uninstall_qdisc
    108}
    109
    110red_test()
    111{
    112	install_qdisc
    113
    114	# Make sure that we get the non-zero value if there is any.
    115	local cur=$(busywait 1100 until_counter_is "> 0" \
    116			    qdisc_stats_get $swp3 10: .backlog)
    117	(( cur == 0 ))
    118	check_err $? "backlog of $cur observed on non-busy qdisc"
    119	log_test "$QDISC backlog properly cleaned"
    120
    121	do_red_test 10 $BACKLOG1
    122	do_red_test 11 $BACKLOG2
    123
    124	uninstall_qdisc
    125}
    126
    127mc_backlog_test()
    128{
    129	install_qdisc
    130
    131	# Note that the backlog numbers here do not correspond to RED
    132	# configuration, but are arbitrary.
    133	do_mc_backlog_test 10 $BACKLOG1
    134	do_mc_backlog_test 11 $BACKLOG2
    135
    136	uninstall_qdisc
    137}
    138
    139red_mirror_test()
    140{
    141	install_qdisc qevent early_drop block 10
    142
    143	do_drop_mirror_test 10 $BACKLOG1 early_drop
    144	do_drop_mirror_test 11 $BACKLOG2 early_drop
    145
    146	uninstall_qdisc
    147}
    148
    149red_trap_test()
    150{
    151	install_qdisc qevent early_drop block 10
    152
    153	do_drop_trap_test 10 $BACKLOG1 early_drop
    154	do_drop_trap_test 11 $BACKLOG2 early_drop
    155
    156	uninstall_qdisc
    157}
    158
    159ecn_mirror_test()
    160{
    161	install_qdisc ecn qevent mark block 10
    162
    163	do_mark_mirror_test 10 $BACKLOG1
    164	do_mark_mirror_test 11 $BACKLOG2
    165
    166	uninstall_qdisc
    167}
    168
    169bail_on_lldpad
    170
    171trap cleanup EXIT
    172setup_prepare
    173setup_wait
    174tests_run
    175
    176exit $EXIT_STATUS