Вы не можете. Bash будет работать только с целыми числами. Для большей точности используйте что-то вроде bc.
почему вы использовали 172.16.16.11 в качестве исходного IP-адреса вместо.10.3 и/или.10.4 ?!
Я использовал локальные виртуальные машины (, работающие под управлением «nc -klvp 42 >/dev/null» ), подключенные к локальному открытому -интерфейсу vswitch. чтобы продемонстрировать формирование трафика для некоторых IP-адресов src, я удалил параметр «ceil» в «классе 1 :20».
мой скрипт:
#!/bin/bash
export IF_INET=ovs-br0
export UNIT=kbps
export BW_MAX=2048
export BW_CLIENT=128
tc qdisc del dev ${IF_INET} root &>/dev/null
tc qdisc add dev ${IF_INET} root handle 1: htb default 10
tc class add dev ${IF_INET} parent 1: classid 1:1 htb rate ${BW_MAX}$UNIT
tc class add dev ${IF_INET} parent 1:1 classid 1:10 htb rate $((${BW_MAX} - ${BW_CLIENT}))$UNIT ceil ${BW_MAX}$UNIT
tc class add dev ${IF_INET} parent 1:1 classid 1:20 htb rate ${BW_CLIENT}$UNIT
tc filter add dev ${IF_INET} parent 1:0 protocol ip prio 1 u32 match ip src 172.16.10.3/32 flowid 1:20
tc filter add dev ${IF_INET} parent 1:0 protocol ip prio 1 u32 match ip src 172.16.10.4/32 flowid 1:20
локальные IP-адреса/маршруты с разными исходными IP-адресами:
section61:~ # ip a s dev ovs-br0 | grep 172.16.1
inet 172.16.10.4/24 scope global ovs-br0
inet 172.16.10.3/24 scope global secondary ovs-br0
inet 172.16.10.5/24 scope global secondary ovs-br0
inet 172.16.10.6/24 scope global secondary ovs-br0
section61:~ # ip route get 172.16.10.13 | grep -v cache
172.16.10.13 dev ovs-br0 src 172.16.10.3 uid 0
section61:~ # ip route get 172.16.10.14 | grep -v cache
172.16.10.14 dev ovs-br0 src 172.16.10.4 uid 0
section61:~ # ip route get 172.16.10.15 | grep -v cache
172.16.10.15 dev ovs-br0 src 172.16.10.5 uid 0
section61:~ # ip route get 172.16.10.16 | grep -v cache
172.16.10.16 dev ovs-br0 src 172.16.10.6 uid 0
два потока данных с использованием разных исходных IP-адресов
section61:~ # dd if=/dev/zero of=/dev/stdout count=$((1*1024*1024)) bs=1024 | pv | nc 172.16.10.13 42
7.03MiB 0:00:58 [ 120KiB/s] [ <=> ]
section61:~ # dd if=/dev/zero of=/dev/stdout count=$((4*1024*1024)) bs=1024 | pv | nc 172.16.10.15 42
135MiB 0:01:17 [1.76MiB/s] [ <=> ]
для проверки формирования трафика классов qdisc я настоятельно рекомендую запустить bmon
подсказки:
ХТХ
С уважением!
Стефан К.
openSUSE Leap 15.1 -Linux 4.12.14 -lp151.28.75 -по умолчанию