#
#
# -- Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠ΅ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡ
#Β Β Β tc ΠΈ tcc, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
#
#Β tc=/usr/local/bin/tc
#Β tcc=/usr/local/tcng/bin/tcc
#
#
3.1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ tcng Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°
/*
Β * ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΡΠ°ΠΉΠ»Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ Π΄Π»Ρ tcng.
Β *
Β * Martin A. Brown <i><<a href="mailto:[email protected]">[email protected]</a>></i>
Β *
Β * ΠΡΠΈΠΌΠ΅Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π²ΡΠ±ΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°.
Β *
Β *
Β */
#include "fields.tc"<a name="read_n_1_back" href="#read_n_1" class="note">[1]</a>
#include "ports.tc"
#define INTERFACE eth0<a name="read_n_2_back" href="#read_n_2" class="note">[2]</a>
dev INTERFACE {
Β egress {<a name="read_n_3_back" href="#read_n_3" class="note">[3]</a>
Β /* ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π²ΡΠ±ΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°, Π²Π½Π°ΡΠ°Π»Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΈΠ»ΡΡΡΡ! DSmark */<a name="read_n_4_back" href="#read_n_4" class="note">[4]</a>
Β 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 ;<a name="read_n_5_back" href="#read_n_5" class="note">[5]</a>
Β Β class ( <$other> ) if 1 ;<a name="read_n_6_back" href="#read_n_6" class="note">[6]</a>
Β /* ΡΠ΅ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ ΠΈ ΠΊΠ»Π°ΡΡΡ */
Β htb () {<a name="read_n_7_back" href="#read_n_7" class="note">[7]</a>
Β Β class ( rate 600kbps, ceil 600kbps ) {<a name="read_n_8_back" href="#read_n_8" class="note">[8]</a>
Β Β Β $ssh = class ( rate 64kbps, ceil 128kbps ) { sfq; } ;
Β Β Β <a name="read_n_9_back" href="#read_n_9" class="note">[9]</a>$audio = class ( rate 128kbps, ceil 128kbps ) { sfq; } ;
Β Β Β $bulk = class ( rate 256kbps, ceil 512kbps ) { sfq; } ;
Β Β Β $other = class ( rate 128kbps, ceil 384kbps ) { sfq; } ;<a name="read_n_10_back" href="#read_n_10" class="note">[10]</a>
Β Β }
Β }
Β }
}
3.2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠΊΠΎΡΠΎΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»Ρ
/*
Β * ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΡΠ°ΠΉΠ»Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ Π΄Π»Ρ tcng.
Β *
Β * Martin A. Brown <i><<a href="mailto:[email protected]">[email protected]</a>></i>
Β *
Β * ΠΡΠΈΠΌΠ΅Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»Ρ.
Β *
Β *
Β */
#define EXCEPTION 192.168.137.50
#define INTERFACE eth0
$meter = trTCM( cir 128kbps, cbs 10kB, pir 256kbps, pbs 10kB );<a name="read_n_11_back" href="#read_n_11" class="note">[11]</a>
dev eth0 {
Β egress {
Β class ( <$full> ) if ip_src == EXCEPTION ;<a name="read_n_12_back" href="#read_n_12" class="note">[12]</a>
Β class ( <$fast> ) if trTCM_green( $meter ) ;<a name="read_n_13_back" href="#read_n_13" class="note">[13]</a>
Β class ( <$slow> ) if trTCM_yellow( $meter ) ;<a name="read_n_14_back" href="#read_n_14" class="note">[14]</a>
Β drop if trTCM_red( $meter ) ;<a name="read_n_15_back" href="#read_n_15" class="note">[15]</a>
Β 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. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΡ Ρ ΡΡΡΡΠΊΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ.