ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° tcsim β ΠΈΠΌΠΈΡΠ°ΡΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ tcng ΠΈ ΠΈΠΌΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΄ΡΠ° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ tcsim ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° tcng, Π² ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠ½ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ.
2. Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΡΠ΄ΡΠΎΠΌ HTB ΠΈ DSMARK, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ HTB ΠΈ DSMARK Π² tc ΠΈ ΡΠ°ΠΌΠΎΠΌΡ tcng.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° HTB Π² ΡΠ΄ΡΠ΅ ΠΈ tc Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°, ΠΈΠ½Π°ΡΠ΅ Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ²Π΅ΡΠ°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ). ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° DSMARK, ΡΡΡΠΎΠ³ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ (Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ±ΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅) ΠΌΠΎΠ³ΡΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· Π½Π΅Π΅.
2.1. Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ΄ΡΡ
Π£Π΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ΄ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. Π―Π΄ΡΠΎ 2.4.20 ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ HTB ΠΈ dsmark, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΠΈ ΠΎΠΏΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ QoS/Fair Queuing ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΄ΡΠ°. ΠΠ° ΠΊΡΠ°ΡΠΊΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΄ΡΠ°, ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΊ Π·Π°ΠΌΠ΅ΡΠΊΠ°ΠΌ ΠΏΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΄ΡΠ° Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° DiffServ.
ΠΠ»Ρ ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅Π½ΡΡΠ΅ 2.4.20 Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΠ°ΡΡ (ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΄Π΅Ρ 2.4.17 ΠΈ Π²ΡΡΠ΅).
2.2. Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ tc
ΠΠΎΠΌΠ°Π½Π΄Π° tc ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π½Π°Π±ΠΎΡΠ° ΡΡΠΈΠ»ΠΈΡ iproute2. ΠΠ° ΠΎΠ±ΡΠ΅ΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ iproute2, ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π½Π° ΡΠ°ΠΉΡ http://linux-ip.net/ ΠΈ ΠΊ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Ρ ΠΏΠΎ iproute2. Π‘Π°ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π° FTP-Π°ΡΡ ΠΈΠ²Π΅ ΠΠ»Π΅ΠΊΡΠ΅Ρ ΠΡΠ·Π½Π΅ΡΠΎΠ²Π°, Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ Linux. ΠΡΠ»ΠΈ Π²Π°Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΡ RPM, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΠΎΡ SRPM ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ΅Π±Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ iproute2 ΡΠ°ΠΌΠΈΠΌ, ΡΠΎ ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ htb Π² tc, Π²ΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΏΠ°ΡΡ ΠΊ tc Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΠ°ΡΡΠΈΠ½Π° ΠΡΠ²ΡΡΠ°.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² tc ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° dsmark, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ diffserv. Π ΡΡΠ°ΡΡΡΡ, Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π»Π΅Π³ΠΊΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Config ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² iproute2. ΠΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ TC_CONFIG_DIFFSERV=n Π½Π° TC_CONFIG_DIFFSERV=y ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΠ· ΡΡΠΎΠ³ΠΎ SRPM ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ iproute2 Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ dsmark ΠΈ htb, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
2.3. Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ tcng
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ tcng β ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠ°Ρ ΡΠ°ΡΡΡ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΡΠΎΡΡΠΎ ΡΠ°ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ tcng ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅: ./configure --no-tcsim ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ.
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° RPM, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ SPEC-ΡΠ°ΠΉΠ» tcng/build/tcng.spec Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ SRPM Π·Π΄Π΅ΡΡ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠΎΠ³ΠΎ SRPM ΡΡΠ°Π½ΡΡ Π΄Π²Π° ΠΏΠ°ΠΊΠ΅ΡΠ°: tcc ΠΈ tcc-devel. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ tcc.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ tcc Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ cpp, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ tcc Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π² ΡΠ°Π±ΠΎΡΠ΅.
3. ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://linux-ip.net/code/tcng/.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° tcc, ΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠΊΡΠΈΠΏΡΠ° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π»Ρ SysV. ΠΠ°Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΡΠΊΡΠΈΠΏΡΠ°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ raptor'ΠΎΠΌ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ°ΡΡΡΠ»ΠΊΠΈ LARTC.
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° /etc/sysconfig/tcng:
ΠΡΠΈΠΌΠ΅Ρ 1. /etc/sysconfig/tcng# - ΠΌΠ΅ΡΠ°-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» tcng
#
# -- 2003-03-15 ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅; -MAB
# -- 2003-03-31 ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ENVAR; -MAB
#
# -- Π ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π±ΡΠ΄ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ» tcng
# Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ°
#
TCCONFBASEDIR=${TCCONFBASEDIR:-/etc/sysconfig/tcng-configs}
# -- Π°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ tcng
# ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ #include
# ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ tcng ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π° Π²
# ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² $TCCONFBASEDIR
#
TCCONF=${TCCONF:-$TCCONFBASEDIR/global.tcc}
tcstats=${tcstats:-no} # -- ΠΏΠΎΠ΄Π°Π²Π»ΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ
tcstats=${tcstats:-yes} # -- ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΊΠ»ΡΡ "-s" Π² tc
tcdebug=${tcdebug:-0} # -- Π΄Π»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
tcdebug=${tcdebug:-1} # -- Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
tcdebug=${tcdebug:-2} # -- Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
#
#
# -- Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠ΅ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡ
# tc ΠΈ tcc, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
#
# tc=/usr/local/bin/tc
# tcc=/usr/local/tcng/bin/tcc
#
#
3.1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ tcng Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°
/*
* ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΡΠ°ΠΉΠ»Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ Π΄Π»Ρ tcng.
*
* Martin A. Brown < [email protected]>
*
* ΠΡΠΈΠΌΠ΅Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π²ΡΠ±ΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°.
*
*
*/
#include "fields.tc"[1]
#include "ports.tc"
#define INTERFACE eth0[2]
dev INTERFACE {
egress {[3]
/* ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π²ΡΠ±ΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°, Π²Π½Π°ΡΠ°Π»Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΈΠ»ΡΡΡΡ! DSmark */[4]
class ( <$ssh> ) if tcp_sport == 22 && ip_tos_delay == 1 ;
class ( <$audio> ) if tcp_sport == 554 || tcp_dport == 7070 ;
class ( <$bulk> ) \
if tcp_sport == PORT_SSH || tcp_dport == PORT_HTTP ;[5]
class ( <$other> ) if 1 ;[6]
/* ΡΠ΅ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ ΠΈ ΠΊΠ»Π°ΡΡΡ */
htb () {[7]
class ( rate 600kbps, ceil 600kbps ) {[8]
$ssh = class ( rate 64kbps, ceil 128kbps ) { sfq; } ;
[9]$audio = class ( rate 128kbps, ceil 128kbps ) { sfq; } ;
$bulk = class ( rate 256kbps, ceil 512kbps ) { sfq; } ;
$other = class ( rate 128kbps, ceil 384kbps ) { sfq; } ;[10]
}
}
}
}
3.2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠΊΠΎΡΠΎΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»Ρ
/*
* ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΡΠ°ΠΉΠ»Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ Π΄Π»Ρ tcng.
*
* Martin A. Brown < [email protected]>
*
* ΠΡΠΈΠΌΠ΅Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»Ρ.
*
*
*/
#define EXCEPTION 192.168.137.50
#define INTERFACE eth0
$meter = trTCM( cir 128kbps, cbs 10kB, pir 256kbps, pbs 10kB );[11]
dev eth0 {
egress {
class ( <$full> ) if ip_src == EXCEPTION ;[12]
class ( <$fast> ) if trTCM_green( $meter ) ;[13]
class ( <$slow> ) if trTCM_yellow( $meter ) ;[14]
drop if trTCM_red( $meter ) ;[15]
htb {
class ( rate 600kbps, ceil 600kbps ) {
$fast = class ( rate 256kbps, ceil 256kbps ) { sfq; } ;
$slow = class ( rate 128kbps, ceil 128kbps ) { sfq; } ;
$full = class ( rate 600kbps, ceil 600kbps ) { sfq; } ;
}
}
}
}
4. Π Π°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ
Π ΡΡΠ°ΡΡΡΡ, tcng ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΌΡ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²Ρ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ tc. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΡ Ρ ΡΡΡΡΠΊΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ.
Π’Π°Π±Π»ΠΈΡΠ° 1. Π‘ΠΈΠ½ΡΠ°ΠΊΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ: tcng ΠΏΡΠΎΡΠΈΠ² tc
tcng Π ΡΡΡΠΊΠΈΠΉ tc bps Π±ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ bit Bps Π±Π°ΠΉΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ bps (ΡΡ !) kbps ΠΊΠΈΠ»ΠΎΠ±ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ kbit kBps ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ kbps Mbps ΠΌΠ΅Π³Π°Π±ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ mbit ΠΈΠ»ΠΈ Mbit MBps ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ mbps ΠΈΠ»ΠΈ Mbps pps ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ??ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ²ΡΠΊΠ°Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π²Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ tc, Π½ΠΎ ΡΡΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½Ρ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π²Π»Π°Π΄Π΅Π΅Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ tcng: 100Mbps, 128kbps ΠΈ Π΄Π°ΠΆΠ΅ 2Gpps. ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°Π·Π΄Π΅Π» ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ tcng ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.