Порахуємо, з чим ми тут маємо справу. ЗКД - це, в основному, стара версія IOS, тому всі ці поняття стосуються обох.
Committed Information Rate (CIR) = 5,000,000 (5Mbps)
Burst Commit Bucket (Bc) = 937,500
Burst Excess Bucket (Be) = 1,875,000
Time Interval (Tc) = Bc / CIR = 0.1875 s = 187.5 ms
Швидкість, до якої ми хочемо обмежити потоки, становить 5 Мбіт / с. Команда коміксів становить 937 500 байт. Buck Bust - 1875 000 байт. А відра заправляють кожні 187,5 мс.
Як ви вже згадували, IOS використовує механізм ковша, щоб обмежити кількість трафіку. Це не згладжує трафік до X% пропускної здатності інтерфейсу протягом довільного періоду часу! Натомість він дозволяє отримати повний доступ до пропускної здатності інтерфейсу до тих пір, поки у вас є жетони, які платять за нього.
Крім того, оскільки це поліція, RED / WRED не грають. ЧЕРВНІ трапляються лише тоді, коли є чергу для управління. Не буферизація / чергування в поліції, лише у формуванні.
Давайте розберемося спочатку з командою Bucket (Bc). Припустимо, що наразі немає зайвого відра (Be).
* Виконувати лише відро (двоколірний полімер) *
Це дуже суворий поліцейський, який дозволить вам лише точно відправити всередині CIR; не лопається зверху. Є лише одне відро, Bc. Є два "кольори" для руху, що відповідають і перевищують .
Час = 0 мс - Відро починається повноцінно, в ньому розміщені 937 500 байт жетонів. Скажімо, ви надсилаєте 7500 байт через інтерфейс. Тепер IOS зменшує відро на 7500 байт, і тепер у ньому є 930 000 байт жетонів. Надісланий трафік вважається "відповідним" і до нього застосовується "відповідна дія".
Час = 187,5 мс - Зараз натискаємо на Тс і поповнюємо відро для Bc. Додано 937 500 байт токенів. Будь-які зайві жетони розливаються і втрачаються.
Час = 190 мс - відро для фіксації містить 937 500 токенів. Ми отримуємо 2 000 000 байт трафіку. Перші 937 500 байтів переносяться штрафом, оскільки відро має жетони. Інший трафік вважається "перевищенням" і обробляється відповідно до "перевищення дії". Пам’ятай, у поліцейських функціях немає буферизації (це називається формуванням) - ти або передаєш, зауважуєш і передаєш, або кидаєш.
Час = 375 мс - Ми знову натискаємо Tc, і відро для Bc поповнюється 937 500 токенами.
* Поверніть відро із зайвим відром (триколірний полімер) *
Ви можете додатково додати зайве відро (Be). Це дозволяє тимчасовому трафіку перевищувати відро для Bc. Загальний показник CIR повинен залишатися колишнім. Це три "кольорові" поліцейські: відповідність, перевищення та порушення .
Час = 0 мс - Обидва відра (Bc і Be) починають повноцінно. Bc має 937 500 токенів, Be має 1875 000 токенів.
Час = 50 мс - прибуває 2 000 000 байт трафіку. Маршрутизатор спочатку зменшує маркери відра Bc. Це знижує відро Bc до нуля. 937 500 байт трафіку, охопленого Bc, вважається "відповідним" і до нього застосовується "відповідна дія".
Це залишає 1,062 500 байт трафіку, який ще не має лексем. Тепер маршрутизатор занурюється у відро Be і віднімає 1,062,500 токенів, щоб покрити решту трафіку. Ці байти вважаються "перевищеннями" і до них буде застосовано "перевищення дії". У вашому прикладі трафік буде скинутий, але ви потенційно можете зауважити або просто передати його.
Якщо ви зберігаєте рахунок вдома, Bc тепер має нульові жетони, Be має 812 500 жетонів.
Час = 75 мс - Тепер маршрутизатор отримує ще 1 200 000 байт трафіку. Відро для Bc порожнє, тому допомоги там немає. Відро Be може допомогти, тому він охоплює перші 812 500 байт трафіку своїми маркерами, і тепер він порожній. Цей трафік вважається "перевищенням" і до нього буде застосовано "перевищення дії".
Зараз відра сухі, але залишається 387 500 байт, щоб вирішити. Цей трафік вважається "порушуючим", і він завжди скидається з ЗКД (Ви можете робити інші речі з ним, використовуючи MQC та команду поліції, "порушуючи дії").
Час = 187,5 мс - Тепер ми доходимо до першого інтервалу Tc, час заповнити відра. Ключовим моментом є те, щопоповнюютьсялишежетони вартістю Bc ! Ковш Bc заповнюється спочатку до 937 500. Відро "Будьте" ВІДПОВІДАЄТЬСЯ.
Час = 375 мс - тихо, і ми переходимо до наступного інтервалу Тс. Жетони вартості Bc додаються у відро для Bc. Оскільки відро для Bc вже заповнене, надлишки жетонів не втрачаються - вони замість нього перекидаються на відро Be. Тепер відро для Bc переповнено 937 500 токенами, а відро Be частково повно 937 500 жетонами.
Час = 562,5 мс - Тихо, і ми вже на наступному Тс. Жетони вартості Bc додаються у відро Bc, яке вже заповнене. Все це переливається у відро Be (яке вже має 937 500 жетонів). The Be заповнює аж до 1875 000 токенів.
* Підсумкові примітки *
Ваша конфігурація не використовує відро Be. Ви обмежуєте швидкість / використовуєте лише відро для Bc, що може мати небажані побічні ефекти, якщо поліцейський / формувач, що надсилає вам дані, не налаштований однаково і не синхронізується з Tc.
ЗКД / ліміт ставок дуже старий і застарілий. Подумайте про перехід на MQC та сучасний QoS, щоб це здійснити, оскільки це дасть більше інформації та варіантів.
Я повністю ігнорую затримку серіалізації (час, необхідний для передачі даних по лінії) вище, і я впевнений, що математика не працює в реальному сценарії. Але поняття є твердими незалежно від точних цифр, які використовуються.
* Приклад MQC *
policy-map PM-FA0/0-IN
class class-default
police cir 5000000 bc 937500 be 1875000
!
interface Fa0/0
service-policy input PM-FA0/0-IN
!
* Джерела *