Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux Advanced Routing & Traffic Control HOWTOΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 32

Автор Bert Hubert

Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ врСмя оТидания ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°:

Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΌΠΈΠ½/ср/макс = 14.4/17.1/21.7 мсСк


Π’ΠΎ врСмя скачивания, Π±Π΅Π· формироватСля Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°:

Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΌΠΈΠ½/ср/макс = 560.9/573.6/586.4 мсСк


Π’ΠΎ врСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ большого объСма, Π±Π΅Π· формироватСля Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°:

Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΌΠΈΠ½/ср/макс = 2041.4/2332.1/2427.6 мсСк


Π‘ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ большого Ρ„Π°ΠΉΠ»Π° Π½Π° скорости 220 ΠšΠ±ΠΈΡ‚/сСк:

round-trip min/avg/max = 15.7/51.8/79.9 мсСк


Π‘ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΡ€ΠΈ скачивании Π½Π° скорости 850 ΠšΠ±ΠΈΡ‚/сСк:

Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΌΠΈΠ½/ср/макс = 20.4/46.9/74.0 мсСк


ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ исходящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ входящСго достигаСт ~80% ΠΎΡ‚ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ значСния. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ исходящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° колСблСтся ΠΎΠΊΠΎΠ»ΠΎ 90%. ΠŸΡ€ΠΈ этом врСмя оТидания подскакиваСт Π΄ΠΎ 850 мсСк, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΠΎΠΊΠ° Π½Π΅ выяснСна.

Π§Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ этого сцСнария, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ зависит ΠΎΡ‚ фактичСской пропускной способности ΠΊΠ°Π½Π°Π»Π° для исходящСго ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ объСмного исходящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΠ΅Ρ€Π΅Π΄ исходящим ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ практичСски всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ обусловливаСт Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ этот ΠΏΡ€Π΅Π΄Π΅Π», Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² MTU Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ для исходящСго ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ значСния Π±ΡƒΠ΄ΡƒΡ‚ нСсколько Π²Ρ‹ΡˆΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ эффСкта, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ MTU!

НиТС приводятся Π΄Π²Π΅ вСрсии сцСнария формироватСля Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Одна вСрсия построСна Π½Π° Π±Π°Π·Π΅ HTB, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π”Π΅Π²ΠΈΠΊΠΎΠΌ (Devik), другая -- Π½Π° Π±Π°Π·Π΅ CBQ, которая, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ HTB, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² состав ядра Linux. Оба сцСнария ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Ρ‹ ΠΈ Π΄Π°ΡŽΡ‚ прСкрасныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

15.8.2. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° Π±Π°Π·Π΅ CBQ.

ΠœΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ практичСски с любой вСрсиСй ядра. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Π½ΡƒΡ‚Ρ€ΠΈ CBQ qdisc Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π²Π΅ SFQ (Stochastic Fairness Queues), Ρ‡Ρ‚ΠΎ даст Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½ΠΎΠ³ΠΎ сосущСствования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

Входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ формируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ tc-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², содСрТащих Token Bucket Filter.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ сцСнарий Π·Π° счСт добавлСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов bounded Π² строках, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ со слов tc class add .. classid 1:20. Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ MTU, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΈ значСния allot ΠΈ avpkt!

#!/bin/bash


# Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° для домашнСго соСдинСния с Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚

#

#

# УстановитС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСньшС фактичСских

# Π•Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния -- ΠΊΠΈΠ»ΠΎΠ±ΠΈΡ‚Ρ‹

DOWNLINK=800

UPLINK=220

DEV=ppp0


# очистка входящСй ΠΈ исходящСй qdisc

tc qdisc del dev $DEV root 2> /dev/null > /dev/null

tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null


###### исходящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ


# установка ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ CBQ


tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit


# ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΡΡ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ $UPLINK -- это ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚

# появлСниС ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Π² DSL ΠΌΠΎΠ΄Π΅ΠΌΠ΅,

# ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ:

# Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс


tc class add dev $DEV parent 1: classid 1:1 cbq rate ${UPLINK}kbit \

 allot 1500 prio 5 bounded isolated


# высокоприоритСтный (ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ) класс 1:10:


tc class add dev $DEV parent 1:1 classid 1:10 cbq rate ${UPLINK}kbit \

 allot 1600 prio 1 avpkt 1000


# класс ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1:20 -- ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСньший объСм Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°

# ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚:


tc class add dev $DEV parent 1:1 classid 1:20 cbq rate $[9*$UPLINK/10]kbit \

 allot 1600 prio 2 avpkt 1000


# ΠΎΠ±Π° ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ дисциплину Stochastic Fairness:

tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10

tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10


# опрСдСлСния Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²

# TOS = Minimum-Delay (ssh, НО НЕ scp) -- Π² 1:10:

tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \

 match ip tos 0x10 0xff flowid 1:10


# ICMP (ip protocol 1) -- Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ класс 1:10

# Ρ‚Π°ΠΊ ΠΌΡ‹ смоТСм ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ своих Π΄Ρ€ΡƒΠ·Π΅ΠΉ:

tc filter add dev $DEV parent 1:0 protocol ip prio 11 u32 \

 match ip protocol 1 0xff flowid 1:10


# ΠŸΠΎΠ΄Π½ΡΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ входящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ исходящСго -- ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ACK-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

# Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ класс:

tc filter add dev $DEV parent 1: protocol ip prio 12 u32 \

 match ip protocol 6 0xff \

 match u8 0x05 0x0f at 0 \

 match u16 0x0000 0xffc0 at 2 \

 match u8 0x10 0xff at 33 \

 flowid 1:10


# ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π΅ являСтся ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ поэтому ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² 1:20

tc filter add dev $DEV parent 1: protocol ip prio 13 u32 \

 match ip dst 0.0.0.0/0 flowid 1:20


########## входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ #############

# Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ нСсколько ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поступлСния входящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°,

# это ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² очСрСдях Ρƒ поставщика услуг.

# ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ,

# поэтому, ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠΎΠ΄Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ значСния,

# ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… скачиваниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ с максимальной ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.

#

# ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ:


tc qdisc add dev $DEV handle ffff: ingress


# ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ всС подряд (0.0.0.0/0), Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ со слишком большой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.


tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \

 0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1

Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот сцСнарий совмСстно с ppp β€” скопируйтС Π΅Π³ΠΎ Π² /etc/ppp/ip-up.d.

Если послСдниС Π΄Π²Π΅ строки Π² сцСнарии ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ сообщСния ΠΎΠ± ошибкС β€” ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ tc!

15.8.3. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° Π±Π°Π·Π΅ HTB.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ сцСнария достигаСт поставлСнных Ρ†Π΅Π»Π΅ΠΉ Π·Π° счСт использования Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… особСнностСй HTB (см. Ρ€Π°Π·Π΄Π΅Π» Hierarchical Token Bucket). Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ налоТСния "Π·Π°ΠΏΠ»Π°Ρ‚Ρ‹" Π½Π° ядро!

#!/bin/bash


# Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° для домашнСго соСдинСния с Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚

#

#

# УстановитС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСньшС фактичСских

# Π•Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния -- ΠΊΠΈΠ»ΠΎΠ±ΠΈΡ‚Ρ‹

DOWNLINK=800

UPLINK=220

DEV=ppp0


# очистка входящСй ΠΈ исходящСй qdisc

tc qdisc del dev $DEV root    2> /dev/null > /dev/null

tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null


###### исходящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ


# установка ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ HTB, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² 1:20:


tc qdisc add dev $DEV root handle 1: htb default 20


# ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΡΡ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ $UPLINK -- это ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚

# появлСниС ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Π² DSL ΠΌΠΎΠ΄Π΅ΠΌΠ΅,

# ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ:


tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k


# высокоприоритСтный (ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ) класс 1:10:


tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \

   burst 6k prio 1


# класс ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1:20 -- ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСньший объСм Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°

# ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚:


tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[9*$UPLINK/10]kbit \

   burst 6k prio 2


# ΠΎΠ±Π° ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ дисциплину Stochastic Fairness:

tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10

tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10


# TOS = Minimum-Delay (ssh, НО НЕ scp) -- Π² 1:10:

tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \

      match ip tos 0x10 0xff  flowid 1:10


# ICMP (ip protocol 1) -- Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ класс 1:10

# Ρ‚Π°ΠΊ ΠΌΡ‹ смоТСм ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ своих Π΄Ρ€ΡƒΠ·Π΅ΠΉ:

tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \

match ip protocol 1 0xff flowid 1:10


# ΠŸΠΎΠ΄Π½ΡΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ входящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ исходящСго -- ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ACK-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

# Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ класс:


tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \

   match ip protocol 6 0xff \

   match u8 0x05 0x0f at 0 \

   match u16 0x0000 0xffc0 at 2 \

   match u8 0x10 0xff at 33 \

   flowid 1:10


# ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π΅ являСтся ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ поэтому ΠΎΠ½ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² 1:20


########## входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ #############

# Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ нСсколько ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поступлСния входящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°,

# это ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² очСрСдях Ρƒ поставщика услуг.

# ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ,

# поэтому, ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠΎΠ΄Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ значСния,

# ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… скачиваниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ с максимальной ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.

#

# ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: