QoS
Shaping и Policing PDF Печать E-mail
Cisco - QoS качество обслуживания
Автор: barabu   

Policier – обычно устанавливается на входе в облако ISP, чтобы дропить лишний траф клиента. Кроме дропа policier может mark down лишний траф, т.е. давать ему худшую precedence, чтобы затем в случае перегрузки в сети самого провайдера этот траф был задроплен, например механизмом WRED.

Shaper – как правило применяется в 2-х случаях.
На выходе от клиента, если провайдер использует Policier. Тогда траф клиента не пропадет, просто будет больше задержка.
Для избежания эффекта Egress Blocking (это когда споки одновременно отправляют трафа больше, чем hub может принять, или если hub будет слать отдельному споку больше чем тот может принять)

Inactive Ingredients: croscarmellose sodium, hydroxypropyl cellulose, hypromellose, iron oxide, lactose monohydrate, magnesium stearate, microcrystalline cellulose, sodium lauryl sulfate, talc, titania, and triacetin click here Laboratory analysis conducted through the FDA on SexVoltz and Velextra has determined the items contain undeclared tadalafil cialis women for. Metabolized principally by CYPA cialis 10mg.
argaiv1303


Shaping – на самом деле шейпер ничего не отправляет. Просто он каждые Tc добавляет в корзину Bc кредитов. Как только кол-во кредитов в корзине стало больше или равно размеру пакета, ожидающего в шейп-буфере, то указатель на этот пакет передается в программную очередь интерфейса. При этом кол-во кредитов в корзине уменьшается на размер этого пакета. Тс и Вс – это просто математические переменные, благодаря которым шейпер «логически» заполняет корзину кредитами. И ВСЁ ! Как только кредитов накопилось достаточно, то следующий пакет, ждущий в буфере шейпера, переходит в программную очередь интерфейса. Точнее указатель на этот пакет удаляется в шейпере и помещатся в очередь интерфейса.

Задача шейпера заключается в том, чтобы передавать пакеты из своего буфера в программную очередь интерфейса на скорости не более shape rate (или CIR). Сами же пакеты в итоге отправляются портом на скорости clock rate. Просто порт передает меньшее кол-во пакетов в секунду.

Если в шейпинге мы используем Excess Burst, то это значит, что Вс-корзина просто увеличивается. Т.е. корзина остается одна, просто становится больше на величину Ве. Однако каждые Тс шейпер подкладывает в неё количество кредитов, равное Вс (а не Вс+Ве).

Пример CB Shaping'а на main FR-интерфейсе с двумя VC. В данном случае шейпим вообще всё. Оба VC равнозначны для шейпера, а точнее они для него вообще прозрачны, т.к. это не FRTS.

policy-map
pm-shape
class class-default
shape average
2048000 2048

interface se1/0
ip address
131.1.88.2 255.255.255.0
encapsulation frame-relay
frame-relay map ip
131.1.88.1 201 broadcast
frame-relay map ip
131.1.88.3 203 broadcast
service-policy output
pm-shape


CB Shaping может быть применен на интерфейс и сабинтерфейс, но не на VC. Для этого нам нужен FRTS.

NOTE: Очередь – это то место, где находится пакет, в ожидании следующего шага своей обработки. Программная очередь интерфейса «удерживает» пакеты перед их передачей на TxRing. Если в TxRing есть свободное место, то пакет отправляется туда минуя программную очередь. С другой стороны Shape очередь создает «затор» (congestion) на пути пакетов в программную очередь, т.е. даже если программная очередь пуста, шейпер все равно будет отдавать ей пакеты на СВОЕЙ скорости, руководствуясь достаточным наличием кредитов. Если шейпер готов передать пакет в программную очередь, а она пуста и при этом есть свободное место в TxRing, то пакет сразу из шейпера летит TxRing.

Policier – в отличие от шейпера, который поддерживает заданный bit-rate, полисер обеспечивает нужный byte-rate, т.е. оценивает скорость в байтах, а не в битах. Он также как и шейпер использует механизм корзин. Однако у шейпера только одна корзина – Вс (при использовании excess burst она просто увеличивается на величину Ве), а полисер может задействовать 2 корзины – одна Вс, другая Ве.

Итак, полисер решает удовлетворяет ли скорость трафа контракту или превышает его. Именно по этому признаку он делит траф на категории. Если мы хотим, чтобы полисер делил траф на две категории (conform и exceed), то нам нужна одна корзина – Вс. Если нам нужны три категории (conform, exceed и violate), то нам нужны две корзины – Вс и Ве. Траф обработанный с помощью Вс – conform, с помощью Ве – exceed, весь остальной траф – violate.

Необходимо объяснить некоторые термины:

Conform (C)
Exceed (E)
Violate (V)

Задача полисира сводится не к тому, чтобы тупо обрезать, а к тому, чтобы поделить весь траф на эти категории. После того как траф попал в одну из категорий над ним может быть выполнено одно из действий, в том числе drop. Т.е. обрезание – это просто одно из действий, которые может выполнить полисир.

NOTE: Single Rate – это не значит, что используется только одна корзина, это означает, что полисер поддерживает среднюю скорость, равную CIR.

Single Rate, Two Color – используется только одна Вс-корзина, в этом случае кол-во С-трафа никогда не превысит CIR.

Single Rate, Three Color -  характер поступления трафа как правило пульсирующий, т.е. бывают всплески активности и интервалы меньшей интенсивности вплоть до простоя. Смысл этой фичи в том, чтобы после периодов малой интенсивности позволить большему количеству трафа попасть в категории С или Е («или» потому что пакет не может попасть сразу в обе категории). В данном случае используются две корзины, причем Ве заполняется «переливом» из Вс. Когда пакеты не большие и поступают «редко», то обе корзины полностью заполняются. Если потом будет всплеск, то за счет сделанных запасов большое кол-во трафа попадет в категории С или Е.

Dual Rate, Three Color – эта фича аналогична предыдущей, только она позволяет ещё большему количеству трафа попасть в категорию Е. Здесь также используется Ве-козина, только она заполняется на скорости PIR. Как правило PIR в два раза больше CIR'а. Если пакет попадает в категорию С, то при его обработке соответствующее кол-во байтов удаляется как из Вс так и из Ве. Если этого не сделать, то можно получить неприятный результат: допустим, что у нас для обеих категорий С и Е установлено действие Transmit, тогда мы получим скорость движения трафа равную CIR + PIR.

NOTE: Вообще количество Е-трафа должно показывать разницу между размерами корзин Ве и Вс независимо от того какую action мы применяем к Е-трафу. По сути здесь Ве-корзина = Вс-корзина + delta.. Эта дельта и есть Е-траф. Если мы удаляем часть токенов из Вс, то должны отразить это и в Ве тоже, иначе кол-во Е-трафа будет превышать его реально допустимую величину.

Конфигурим Shaping:

NOTE: Разница между shape average и shape peak. Как говорилось ранее, в шейпере есть только одна корзина и если мы включаем Ве, то эта корзина просто увеличивается на величину Ве.

shape average 64000 – мы не указали ни Вс ни Ве и по умолчанию шейпер выберет Вс = Ве = 8000 bits per interval, Тс = 125 ms,  а размер корзины (Вс + Ве). Каждые Тс в корзину будут попадать Вс токенов. Т.е. на скорости PIR можно отправить только после периодов простоя.

shape peak 64000 – здесь тоже самое, НО каждые Тс в корзину попадают (Вс + Ве) токенов, т.е. передавать на скрости PIR можно постоянно.

И ещё кое-что о шейпере. В СВ Shaping'е можно использовать адаптивный шейпинг. Для этого достаточно одной дополнительной команды внутри класса:

class class-default
shape average… [or shape peak …]
shape adaptive min-rate
Теперь, если будет получен BECN, то произойдет уменьшение «скорости» шейпера до min-rate. Кроме этого внутри класса можно сделать настройку, позволяющую реагировать на прием FECN'а отправкой BECN'а:

class class-default
shape fecn-adaptive

И последний пример того, как в командах указывать скорость шейпинга в процентах от BW интерфейса.

policy-map pm-shape
class class-default
shape average percent 50 125 ms 10 ms

Здесь Вс и Ве указаны в ms. Фактически мы просто задаем два интервала, назовем их Тс и Те, благодаря которым рассчитываются значения Вс и Ве по одной и той же формуле: Вх = CIR * Tx. Т.е. Вс и Ве рассчитываются независимо, каждая по своему Тх и общей CIR.

interface Serial1/0
bandwidth 512
ip address 131.1.88.1 255.255.255.0
encapsulation frame-relay
frame-relay map ip 131.1.88.2 102 broadcast
service-policy output pm-shape

R1#sh policy-map int se1/0

Service-policy output: pm-shape

Class-map: class-default (match-any)
9 packets, 126 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Traffic Shaping
Target/Average   Byte   Sustain   Excess    Interval  Increment
Rate           Limit  bits/int  bits/int  (ms)      (bytes)  
50 (%)                125 (ms)  10 (ms)
256000/256000    4320   32000     2560      125       4000     


CIR = BW * 50% = 256 kbps
Bc = 256 * 125 = 32000
Be = 256 * 10  = 2560

Конфигурим Policier:

Single Rate, Two Color

policy-map pm-police
class class-default
police cir 256000 bc 16000 conform-action transmit exceed-action drop

Настраивая эту фичу не указываем ни Ве ни violate-action


Single Rate, Three Color

policy-map pm-police
class class-default
police cir 256000 bc 16000 be 8000 conform-action transmit exceed-action transmit violate-action drop

Чтобы показать three color мы указываем Ве или violate-action, либо и то и другое


Dual Rate, Three Color

policy-map pm-police
class class-default
police cir 256000 bc 16000 pir 512000 be 32000 conform-action transmit exceed-action transmit violate-action drop

От предыдущего отличается тем, что добавляется PIR и Ве уже привязывается к ней.

NOTE: Во всех случаях можно привязывать CIRPIR) к проценту от BW физического интерфейса, аналогично тому как это сделано в шейпере:

policy-map pm-police
class class-default
police cir percent 25 bc 125 ms pir percent 50 be 20 ms conform-action transmit exceed-action transmit violate-action drop

Здесь интервалы Тс и Те позволяют рассчитать соответственно Вс и Ве: Bc = Tc * CIR, Be = Te * PIR.

 
rss