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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«HOWTO ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ tcng ΠΈ HTBΒ»

Автор ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π‘Ρ€Π°ΡƒΠ½

HOWTO ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ tcng ΠΈ HTB

ВСрсия 1.0

ΠœΠ°Ρ€Ρ‚ΠΈΠ½ А. Π‘Ρ€Π°ΡƒΠ½

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ пСрСсмотров ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€ 1.0 ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ пСрСсмотр LDP 2003-04-16 ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ: tab ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€ 0.5 ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π² tldp, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π² HOWTO 2002-04-01 ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ: MAB ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€ 0.4 Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, быстрый экскурс ΠΏΠΎ Π±ΡƒΡ„Π΅Ρ€Π°ΠΌ 2002-03-31 ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ: MAB ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€ 0.3 коррСкция ΠΈ замСчания ΠΎΡ‚ Π”ΠΆΠ°ΠΊΠΎΠ±Π° ВСплитски (Jacob Teplitsky), raptor ΠΈ Π”ΠΆΠΎΡˆΡƒΠ° Π₯Π΅Π»ΠΈΠ½Π³Π° (Joshua Heling) 2002-03-16 ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ: MAB ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€ 0.2 ссылки, чистка, публикация 2002-03-15 ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ: MAB ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€ 0.1 Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ пСрСсмотр 2002-03-14 ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ: MAB

Β© 2003, Martin A. Brown


Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no invariant sections, with no Front-Cover Texts, with no Back-Cover Text. A copy of the license is located at www.gnu.org/copyleft/fdl.html.

1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ прСдставляСт собой ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство ΠΏΠΎ использованию tcng (Traffic Control Next Generation) с HTB (Hierarchical Token Bucket) для ограничСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° Linux-машинС.

Π­Ρ‚ΠΎ руководство ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для систСмных администраторов,

β€’ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ хотя Π±Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ прСдставлСниС ΠΎΠ± ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ

β€’ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² состоянии ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ iproute2 ΠΈ tcng ΠΈΠ· исходных тСкстов ΠΈΠ»ΠΈ ΡƒΠΌΠ΅ΡŽΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ RPMS ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… SRPM

β€’ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° систСмах, Ρ‡ΡŒΡ‘ ядро ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ htb ΠΈ dsmark

β€’ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² состоянии ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ядро с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ htb ΠΈ dsmark 

Note

Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ излоТСния ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Автор ΠΆΠ΄Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΎΠ² ΠΏΠΎ адрСсу < [email protected]>. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ, дополнСния ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ. ВсСгда.

1.1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ ΠΈ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅Π΅ Π² сСбС всС части подсистСмы ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Π² сСти ΠΈΠ»ΠΈ сСтСвом устройствС. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: классифицированиС (classification) β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΈΠ»ΠΈ классы; ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ входящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° (policing) β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ количСство ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ классификации; ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (scheduling) β€” процСсс принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ для дальнСйшСй ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ; Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ исходящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° (shaping) β€” процСсс ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ ΠΈ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

ВсС эти характСристики систСмы управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ скомбинированы комплСксными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ для рСзСрвирования ΠΈΠ»ΠΈ ограничСния полосы пропускания для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).

Одним ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ являСтся понятиС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ². РСализация ограничСния входящСго ΠΈ исходящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ вычислСния количСства ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ проходящих Π·Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для опрСдСлСния скорости. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ (Π² зависимости ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ) соотвСтствуСт Ρ‚ΠΎΠΊΠ΅Π½Ρƒ ΠΈ пСрСдаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС наличия свободного Ρ‚ΠΎΠΊΠ΅Π½Π°. ΠžΠ±Ρ‰Π΅Π΅ ΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π³Π΄Π΅ находятся Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, называСтся Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ (bucket). Если ΠΊΡ€Π°Ρ‚ΠΊΠΎ, Ρ‚ΠΎ Π±ΡƒΡ„Π΅Ρ€ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹: количСство Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ (Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π°) ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€ заполняСтся Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ.

Π’ сСкции 1.2 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² систСмы управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Π² Linux.

Π’ Linux, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ историчСски слоТная Π·Π°Π΄Π°Ρ‡Π°. Команда tc обСспСчиваСт интСрфСйс со структурами ядра, отвСтствСнными Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Бинтаксис этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ, вСсьма Π·Π°Π³Π°Π΄ΠΎΡ‡Π΅Π½. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ tcng прСдоставляСт Π±ΠΎΠ»Π΅Π΅ друТСствСнный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ интСрфСйс ΠΊ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠΎΡ‰Π½ΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ tc, опрСдСляя свой язык описания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π•Π³ΠΎ использованиС ΠΏΡ€ΠΈ написании ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ систСмы управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ.

1.2. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ htb?

Hierarchichal Token Bucket β€” это классовая дисциплина ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, написанная ΠœΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΌ Π”Π΅Π²Π΅Ρ€ΠΎΠΌ (Martin Devera) с ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с CBQ. Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ HTB ΠΈ Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π½Π° сайтС Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ сайтС Π‘Ρ‚Π΅Ρ„Π° Коэна (Stef Coene). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС систСмы HTB.

Π˜Π΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈ, HTB прСдставляСт собой Π½Π°Π±ΠΎΡ€ иСрархичСски упорядочСнных Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² (Π΄Π°, Π½Π°Π²Π΅Ρ€Π½ΠΎ Π²Ρ‹ ΠΈ сами догадались ΠΎΠ± этом [Π’ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ с английского HTB ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ "иСрархичСский Π±ΡƒΡ„Π΅Ρ€ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²" β€” ΠŸΡ€ΠΈΠΌ.ΠΏΠ΅Ρ€.]). Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ сцСнарий. Главная дисциплина ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ исходящСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ любого устройства, называСтся ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ (root qdisc) .

ΠšΠΎΡ€Π½Π΅Π²Π°Ρ дисциплина содСрТит ΠΎΠ΄ΠΈΠ½ класс (Π² слоТных конфигурациях корнСвая дисциплина ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько классов). Π­Ρ‚ΠΎΡ‚ класс HTB создаСтся с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: rate ΠΈ ceil. ЗначСния этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ для ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ класса ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ полосу пропускания ΠΊΠ°Π½Π°Π»Π°.

Π’ HTB, rate Π·Π°Π΄Π°Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ полосу пропускания для Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса, Π° ceil, сокращСниС ΠΎΡ‚ ceiling, опрСдСляСт ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ полосу пропускания, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. Π›ΡŽΠ±Π°Ρ полоса пропускания, находящаяся ΠΌΠ΅ΠΆΠ΄Ρƒ rate ΠΈ ceil одалТиваСтся Ρƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ класса Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² rate ΠΈ ceil Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ.

Π’ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ классС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ подклассы, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ доступной полосы пропускания Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. Π£ классов-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² rate ΠΈ ceil Π½Π΅ обязаны ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎ позволяСт Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ пропускной способности Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это позволяСт HTB Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° полоса пропускания ΠΌΠ΅ΠΆΠ΄Ρƒ классами. Π­Ρ‚ΠΎ станСт яснСй послС рассмотрСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Hierarchical Token Bucket Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ классовый ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ формирования ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ для систСмы управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Π² linux; ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ rate ΠΈ ceil для контроля Π½Π°Π΄ полосой пропускания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… классов ΠΈ задания ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ распрСдСлСния пропускной способности Π² случаС, ΠΊΠΎΠ³Π΄Π° Ρ‡Π°ΡΡ‚ΡŒ полосы пропускания остаСтся свободной (Π΄ΠΎ значСния ceil).

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ пропускной способности Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ полосы пропускания Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ (машина, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ β€” ΠŸΡ€ΠΈΠΌ.ΠΏΠ΅Ρ€.) ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ ΡƒΠ·ΠΊΠΈΠΌ мСстом ΠΌΠ΅ΠΆΠ΄Ρƒ Π›Π’Π‘ ΠΈ Internet. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… ΠΈ офисных сСтях, Π³Π΄Π΅ вся локальная ΡΠ΅Ρ‚ΡŒ обслуТиваСтся DSL– ΠΈΠ»ΠΈ T1-соСдинСниСм.

На Π΄Π΅Π»Π΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ, вСроятно, Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пропускной способности Ρ€Π°Π²Π½Ρ‹ΠΌ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ пропускной способности ΠΊΠ°Π½Π°Π»Π°, минус нСбольшая Π΅Π΅ Ρ‡Π°ΡΡ‚ΡŒ.

1.3. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ tcng?

Traffic Control Next Generation (tcng) β€” это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π’Π΅Ρ€Π½Π΅Ρ€Π° ΠΠ»ΡŒΠΌΠ΅ΡΠ±Π΅Ρ€Π³Π΅Ρ€Π° (Werner Almesberger) ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, абстрактный ΠΈ стандартизированный язык для описания структур управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ. БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ tcc ΠΈΠ· дистрибутива tcng ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ язык tcng Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, tcc Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» (ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ стандартный Π²Π²ΠΎΠ΄) ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² стандартный Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ tc (смотритС Π½ΠΈΠΆΠ΅ iproute2) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для создания ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ структуры управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Π² ядрС.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ справочнику ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ tcng Π·Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… дисциплинах ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π”ΠΆΠ°ΠΊΠΎΠ± ВСплитски (Jacob Teplitsky), Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ участник списка рассылки LARTC ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° tcng, написал ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ htb для tcng.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° tcc ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ Π² этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандартный Π²Ρ‹Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π—Π° Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ± использовании tcng ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ руководству TCNG.