Понимание сценария оболочки [закрыто]

здесь я пытаюсь понять цель этого сценария оболочки. Если кто-то может помочь, я был бы признателен. Спасибо! Он находится в системе Android по адресу system / etc / throttle.sh

#!/system/bin/sh
# traffic control; arg1:ifname, arg2: rx, arg 3 tx.
#
export PATH=/data:$PATH

# clear rules
tc qdisc del dev $1 root
tc qdisc del dev $1 ingress
tc qdisc del dev ifb0 root

# set interface throttle
tc qdisc add dev $1 root handle 1: htb default 1 r2q 1000
tc class add dev $1 parent 1: classid 1:1 htb rate $3kbit
ifconfig ifb0 up
tc qdisc add dev ifb0 root handle 1: htb default 1 r2q 1000
tc class add dev ifb0 parent 1: classid 1:1 htb rate $2kbit
tc qdisc add dev $1 ingress
tc filter add dev $1 parent ffff: protocol ip prio 10 u32 match \
    u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0
-3
задан 7 February 2015 в 00:05
1 ответ

Это сценарий формирования трафика (также известный как дросселирование).

Похоже, он принимает 3 аргумента. Интерфейс, пределы приема и ограничения передачи.

Эта первая часть просто удаляет все:

tc qdisc del dev $1 root
tc qdisc del dev $1 ingress
tc qdisc del dev ifb0 root

Как вы можете видеть, первый параметр ($ 1) - это интерфейс устройства, например, это может быть интерфейс Wi-Fi. Он также сбрасывает интерфейс ifb0, который является альтернативой фильтрам tc для обработки входящего трафика, перенаправляя его на виртуальный (ifb0) интерфейс и обрабатывая там исходящий трафик. Идея состоит в том, что вы можете формировать исходящий трафик, но не входящий, таким образом, если вы можете сделать весь исходящий трафик, тогда вы можете его сформировать.

Эта строка создает планировщик (qdisc) для трафика на интерфейсе, указанном в параметре $ 1:

tc qdisc add dev $1 root handle 1: htb default 1 r2q 1000

здесь вы определяете класс, к которому применяется правило (в данном случае скорость параметра $ 3, который является исходящим в килобитах):

tc class add dev $1 parent 1: classid 1:1 htb rate $3kbit

здесь вы создаете другой планировщик для виртуального интерфейса и класс с правилом, определяющим скорость входящего параметра $ 2 в килобитах:

tc qdisc add dev ifb0 root handle 1: htb default 1 r2q 1000
tc class add dev ifb0 parent 1: classid 1:1 htb rate $2kbit

Полную информацию о компонентах Linux Traffic Control можно найти здесь.

ОБНОВЛЕНИЕ: кстати, в обычном окне Linux вы можете увидеть статус очередей формирования трафика с помощью tc -s. Например, вы можете попробовать ввести в телефоне следующие команды, и они тоже должны работать:

tc -s qdisc ls dev ifb0
tc -s class ls dev ifb0

Это отобразит множество информации о выполняемом формировании трафика.

2
ответ дан 5 December 2019 в 21:56

Теги

Похожие вопросы