LINUX.ORG.RU
ФорумAdmin

Приоритезация и динамический шейпинг SRR


0

0

Планировщик пакетов SRR (Simple Round Robin)

Simple Round Robin планировщик пакетов - это планировщик сетевых пакетов для операционной системы linux с ядрами 2.4 и 2.6. Его целью является просто равномерное распределение ресурсов отведенной полосы между ее потребителями. Работает он следующим образом: внутреняя очередь планировщика разделяется на заданное количество виртуальных очередей (слотов). Каждый слот, в свою очередь, имеет жестко заданный предел количества находящихся в нем пакетов. Внутренний классификатор распределяет поступающие в планировщик пакеты по слотам, основываясь либо на ip адресе получателя, либо на ip адресе отправителя. При выборе пакета из планировщика, слоты будут обрабатываться циклически, что обеспечит более или менее равномерное распределение.

Скачать:

Планировщик (ядро 2.6.29): sch_srr.v0.4.4.tgz

Планировщик (ядро 2.6.24): sch_srr.v0.4.2.tgz

Планировщик (ядро 2.6.22): sch_srr.v0.4.1.бtgz

Планировщик (ядро 2.6.20): sch_srr.v0.4.tgz

make && make install

iproute2: iproute-20041019.srr.patched.v0.4.tgz

./configure && make SBINDIR=/sbin && make SBINDIR=/sbin install

http://mordor.strace.net/sched-srr/

# reset all qdisc
tc qdisc del dev eth0 root
tc qdisc del dev eth0 ingress
#
tc qdisc add dev eth0 root handle 1:0 htb default 17
tc class add dev eth0 parent 1: classid 1:1 htb rate 928kbit ceil 1024kbit
#
tc class add dev eth0 parent 1:1 classid 1:11 htb rate $[928/8]kbit ceil 928kbit burst 10k prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate $[928/8]kbit ceil 928kbit burst 10k prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate $[928/8]kbit ceil 928kbit burst 10k prio 3
tc class add dev eth0 parent 1:1 classid 1:14 htb rate $[928/8]kbit ceil 928kbit burst 10k prio 4
tc class add dev eth0 parent 1:1 classid 1:15 htb rate $[928/8]kbit ceil 928kbit burst 10k prio 5
tc class add dev eth0 parent 1:1 classid 1:17 htb rate $[928/8]kbit ceil 928kbit burst 10k prio 7
#
tc qdisc add dev eth0 parent 1:11 handle 11: srr slots 64 limit 1024 classify dst
tc qdisc add dev eth0 parent 1:12 handle 12: srr slots 64 limit 1024 classify dst
tc qdisc add dev eth0 parent 1:13 handle 13: srr slots 64 limit 1024 classify dst
tc qdisc add dev eth0 parent 1:14 handle 14: srr slots 64 limit 1024 classify dst
tc qdisc add dev eth0 parent 1:15 handle 15: srr slots 64 limit 1024 classify dst
tc qdisc add dev eth0 parent 1:17 handle 17: srr slots 64 limit 1024 classify dst
#
# ssh + telnet
tc filter add dev eth0 parent 1:0 prio 1 protocol ip u32 match ip protocol 6 0xff match ip sport 22 0xfffe classid 1:11
#
# icmp
tc filter add dev eth0 parent 1:0 prio 2 protocol ip u32 match ip protocol 1 0xff classid 1:12
#
# dns
tc filter add dev eth0 parent 1:0 prio 2 protocol ip u32 match ip sport 53 0xffff classid 1:12
#
# icq, jabber, firebird, postgres 
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 5190 0xffff classid 1:13
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 5222 0xffff classid 1:13
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 5223 0xffff classid 1:13
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 3050 0xffff classid 1:13
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 5432 0xffff classid 1:13
#
# rdesktop, pop3, smtp, imap
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 443 0xffff classid 1:14
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 3389 0xffff classid 1:14
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 110 0xffff classid 1:14
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 25 0xffff classid 1:14
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 143 0xffff classid 1:14
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip protocol 6 0xff match ip sport 220 0xffff classid 1:14
#
# ftp, http, https, 
tc filter add dev eth0 parent 1:0 prio 4 protocol ip u32 match ip protocol 6 0xff match ip sport 21 0xffff classid 1:15
tc filter add dev eth0 parent 1:0 prio 4 protocol ip u32 match ip protocol 6 0xff match ip sport 80 0xffff classid 1:15
tc filter add dev eth0 parent 1:0 prio 4 protocol ip u32 match ip protocol 6 0xff match ip sport 8080 0xffff classid 1:15
tc filter add dev eth0 parent 1:0 prio 4 protocol ip u32 match ip protocol 6 0xff match ip sport 3128 0xffff classid 1:15
#
# udp
tc filter add dev eth0 parent 1:0 prio 2 protocol ip u32 match ip protocol 17 0xff classid 1:17
tc -s qdisc ls

Источник: LiveLinux.ru

Интересно, в чём отличие от esfq(2.4.*) или последнего sfq(2.6.*)?

(e)sfq тоже равномерно делит выделенную полосу - как по количеству потоков, так и по количеству src/dst.

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

В отличие от esfq для SRR нет необходимости пересобирать ядро. в sfq, flow который может работать с src хешем появился начиная с ядра 2.6.25, а значит в энтерпрайзе будет не скоро

SyCraft
() автор топика
Ответ на: комментарий от Valmont

На CentOS и Scientific в лет ставится ch_srr.v0.4.tgz и ch_srr.v0.4.1.tgz Т.е. на EL работает на ура!

Пробывал на ASP c ядром 2.6.23 - тоже все ок. Полет нормальный

SyCraft
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.