URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 14859
[ Назад ]

Исходное сообщение
"Policing and Token Bucket Mechanism. Cant understand."

Отправлено kan5300 , 14-Ноя-07 14:38 
Всем привет. Юзаю Cat3560 12.2(35)SE.

Настроил полисинг на физическом гигабитном интерфейсе g0/1 т.о.:

!
class-map match-any direct-connect
  match access-group 101
!
policy-map direct-connect
  class direct-connect
    police 100000000 1000000 exceed-action drop
!
interface GigabitEthernet0/1
switchport trunk encapsulation dot1q
switchport mode trunk
switchport nonegotiate
service-policy input direct-connect
!
access-list 101 permit tcp any eq www any
access-list 101 permit tcp any eq ftp any
access-list 101 permit tcp any eq ftp-data any
access-list 101 permit tcp any eq 6667 any
access-list 101 permit tcp host 192.168.254.241 any
!

На аргументы директивы police не обращайте внимания, по ним и вопрос. Известно, что и полисинг и шейпинг используют механизм токен-бакет для вырезания или помещения в буфер пакетов, которые не уместились в карзину.

Моё понимание механизма token-bucket:

n - длина пакета
b - ёмкость ведра в токенах
r - rate. Он же CIR

- Каждый установленный интервал токены "кладутся" в ведро.
- У ведра есть определенная ёмкость. Токен прилетевший в полное ведро будет отвергнут.
- В момент попадения пакета на интерфейс из ведра извлекается количество токенов равное количеству байт в самом пакете и пакет отправляется далее.
- Если в ведре осталось настолько мало токенов, что n>b, соответствия не наступает (non-conformant).

Ёмкость ведра можно регулировать (burst size). Также пакеты, n которых совпала с токенами могут быть лимитированы r. Т.е. в любом случае на выходе мы не сможем получить скорость, большую чем CIR.

Рекомендованная формула для рассчета burst size: <Burst> = 2 * <RTT> * <Rate> (Cisco Press). Причем, RRT (round-trip time for a TCP session) может колебаться от 1 мс до 100сек. Как выявить реальное значение я не знаю. Пусть оно будет 10мс.

<Burst> = 2 * <.100 sec> * <64000 bits/sec>

В контексте policy есть только два инструмента управления пропускной способностью. Это:

<8000-10000000000>  Bits per second
<8000-1000000>  Normal burst bytes

Ну и exceed-action

Допустим я хочу сделать ограничение в 50 мегабит. Естественно, CIR (первый аргумент директивы Policy) я установлю в 50000000.

Приводим всё в биты и в секунды:

<Burst> = 2 * 0.01 * 50000000 = 1 000 000 bps = 125 000 bytes per second.

И остановиться на таких параметрах:

police 50000000 125000 exceed-action drop

Правильно ли я всё понял? И как всё-таки подобрать RRT?


Содержание

Сообщения в этом обсуждении
"Policing and Token Bucket Mechanism. Cant understand."
Отправлено sh_ , 15-Ноя-07 13:12 
burst size = 1.5*CIR/8

"Policing and Token Bucket Mechanism. Cant understand."
Отправлено kan5300 , 15-Ноя-07 13:23 
>burst size = 1.5*CIR/8

Для CIR в 50 мегабит по вашей ф-ле получается 9375000 байт. Максимальное значение, которое можно ввести 1000000 байт. Опятьже, исходя из чего вы взяли коэфф. 1.5?