При работе с несколькими клиентами наблюдалось, что загруженность полосы пропускания выше 70-75% приводит к снижению производительности (потери пакетов, задержки и т. д.). Увеличение пропускной способности — решение, которое может и не понадобится, и возможно не сразу понадобится. Один из способов решения проблем с использованием увеличенных ресурсов является контроль за тем, как маршрутизатор использует буферы данных. Следует проявлять особую осторожность при работе с буферами, поскольку это может повлиять на аппаратное обеспечение устройства и общую производительность, если оно настроено неправильно.

Другой подход к настройке буфера требуется, если мы видим потери/сброс на последовательном интерфейсе. Буферы IOS используются по двум основным причинам. Для обработки трафика, заканчивающегося на маршрутизаторе и когда происходит переключение процессов Если доступных буферов нет, а быстрое переключение включено, происходит сбой буфера, и пакет отбрасывается. Когда процесс диспетчера пула буферов обнаруживает отказ буфера, он «создает» новый буфер, чтобы избежать будущих сбоев.

Для управления использованием буферов можно использовать одно из следующих действий:

  • Настройка параметров, связанных с системными буферами.
  • Укажите количество пакетов, находящихся во входных или выходных очередях (очереди ожидания).
  • Определите приоритеты, какой трафик находится в очереди для передачи (очередь приоритетного выхода).

1. Настройка системных буферов

В устройствах Cisco доступны два типа буферов.

  • Системные буферы, которые настраиваются напрямую. Связаны с основной системной памятью и выделяются блокам памяти разного размера.
  • Аппаратные буферы используются как буферы приема и передачи, связанные с каждым интерфейсом, и динамически управляются самим системным программным обеспечением.

Show buffer — это команда, которая поможет вам узнать состояние всех буферов в устройстве.

Router# show buffers
Buffer elements:
399 in free list (500 max allowed)
87777491 hits, 0 misses, 0 created
Small buffers, 104 bytes (total 120, permanent 120):
114 in free list (20 min, 250 max allowed)
70005538 hits, 6 misses, 2 trims, 2 created
Middle buffers, 600 bytes (total 90, permanent 90):
88 in free list (10 min, 200 max allowed)
25696696 hits, 27 misses, 27 trims, 27 created
Big buffers, 1524 bytes (total 90, permanent 90):
90 in free list (5 min, 300 max allowed)
8214549 hits, 14 misses, 366 trims, 366 created
Large buffers, 5024 bytes (total 5, permanent 5):
5 in free list (0 min, 30 max allowed)
15018 hits, 12 misses, 16353 trims, 16353 created
Huge buffers, 18024 bytes (total 3, permanent 0):
2 in free list (0 min, 4 max allowed)
297582 hits, 17 misses, 30 trims, 33 created
0 failures (0 no memory)
Six buffer pools are available:
Small—104 bytes buffers
Middle—600 byte buffer
Big—1524 byte buffers
VeryBig—4520 byte buffers
Large—5024 byte buffers
Huge—18024 byte buffers

  • Total = общее количество буферов в пуле (использованные + неиспользуемые буферы).
  • Permanent = Определяет постоянное количество выделенных буферов в пуле. Эти буферы всегда находятся в пуле.
  • Free list = Количество буферов в свободном списке — это доступные буферы. Когда приходит запрос буфера, выделяется буфер из данного списка.
  • Min = минимальное количество буферов, которое процессор маршрута должен попытаться сохранить в Free list. Если количество буферов в Free list падает ниже минимального значения, RP пытается создать больше буферов для этого пула.
  • Max = Максимальное количество буферов, разрешенных в Free list. Максимально допустимый параметр предотвращает пул от дополнительных буферов, которые ему больше не нужны, и освобождает эту память обратно в систему для дальнейшего использования. Если количество буферов в свободном списке больше максимального допустимого значения, процессор должен попытаться обрезать буферы из пула.
  • Hits = количество буферов, которые были запрошены из пула. Помогает определить, у какого пула есть максимальные запросы.
  • Misses = Количество раз когда буфер был запрошен и процессор обнаружил необходимость дополнительных буферов. Процессор пытается создать дополнительные буферы.
  • Trims = Количество буферов, которые RP отрезал из пула, когда количество буферов в свободном списке превысило количество максимально разрешенных буферов.
  • Created = Количество буферов, которые были созданы в пуле. Процессор создает буферы, когда потребность в буферах увеличивается до тех пор, пока количество буферов в Free list не станет меньше буферов Min или не произойдет потеря из-за нулевых буферов в Free list.
  • Failures = Количество неудачных попыток предоставить буфер запрашивающему даже после попытки создать дополнительный буфер. Равно количеству пакетов, сброшенных из-за отсутствия буфера.
  • No memory = Количество отказов, вызванных нехваткой памяти для создания дополнительных буферов.

Маршрутизатор не создает новый буфер, если число в Free list равно максимально допустимому значению.
Если в маршрутизаторе недостаточно памяти для создания нового буфера, это записывается как отсутствие памяти.
Если число в Free list больше максимально допустимого числа, маршрутизатор отрезает некоторые избыточные буферы.
Область проблем для инженера — это число сбоев и отсутствие памяти. Обычно происходит сбой буфера, и маршрутизатор исправляет это. Если количество отказов продолжает увеличиваться, может потребоваться настройка буфера.

Если в выводе команды show buffers отображается большое количество ошибок в поле памяти, вы должны уменьшить использование системных буферов или увеличить объем общей или основной памяти (физической RAM) на маршрутизаторе.

Утечка буфера и утечка памяти — еще одна тема, которую я хочу здесь упомянуть. Процессор выделяет буфер, но он не освобождается после использования. То же самое с памятью, где процесс выделяется памятью, но не освобождается после ее выполнения. Оба они будут занимать память, но никогда не выгрузятся из памяти, что приведет к низкому значению свободной памяти и может привести к сбою устройства. Пара симптомов, с которыми я столкнулся, это устройство не позволит вам войти в систему, поскольку процесс SSH / telnet не имеет достаточного объема памяти, протоколы маршрутизации не работают, устройство отображается в CDP, но недоступно.

Show interface — это другая команда, которая помогает взглянуть на сбросы и потери буфера.

Output queue 0/40, 1041 drops; input queue 0/75, 765 drops 35252345 packets input, 547082589 bytes, 812 no buffer

Сброс пакетов на output и input вызваны тем, что очереди ввода и вывода переполнены всплеском трафика. Это связано не с проблемой буфера, а с ограничением производительности при переключении процессов. Никакой буфер не отображает количество упавших пакетов, так как нет свободного буфера для копирования пакета.

2. Дополнение ограничений на удержание в очереди

Очереди удержания — это буферы, используемые каждым интерфейсом маршрутизатора для хранения исходящих / входящих пакетов. Используйте команду конфигурации интерфейса hold-queue, чтобы увеличить количество пакетов данных, находящихся в очереди, прежде чем маршрутизатор будет отбрасывать пакеты. Cisco рекомендует увеличивать эти очереди небольшими приращениями (например, 25 процентов), пока вы больше не увидите сброса пакетов в выходных данных интерфейса. Предел очереди ожидания вывода по умолчанию составляет 100 пакетов. Когда вы увеличиваете число для очереди удержания вывода, вам может потребоваться увеличить количество системных буферов. Команда hold-queue может использоваться обычно в следующих сценариях, чтобы избежать отбрасывания пакета.

  • У вас есть приложение, которое не переносит падения, и протокол будет работать с более длительными задержками.
  • Низкая пропускная способность или ожидаемое использование, вероятно, спорадически превысят доступную пропускную способность

3. Использование очереди приоритетов для уменьшения узких мест

Приоритетная очередность — это механизм управления на основе списков, который позволяет приоритизировать трафик на основе интерфейса за интерфейсом. Приоритет очередей включает в себя два шага:

  • Создайте список приоритетов по типу протокола и уровню приоритета.
  • Назначение списка приоритетов определенному интерфейсу.

Приоритетная очередность автоматически создает четыре очереди хранения различного размера. Это переопределяет любую спецификацию очереди ожидания, включенную в вашу конфигурацию.

Обычно приоритетный трафик может использоваться в следующих сценариях:

  • Когда интерфейс медленный, передаются различные типы трафика, и вы хотите улучшить производительность терминального трафика
  • Если у вас есть последовательная связь, которая периодически испытывает очень большие нагрузки (например, передача файлов происходит в определенное время), а приоритетная очередность поможет выбрать, какие типы трафика следует отбрасывать в периоды высокого трафика

Вообще, я хотел бы начать с количества очередей по умолчанию при реализации приоритетных очередей. После включения приоритетной очереди следите за падением производительности. Если в очереди трафика, которая была указана как высокий приоритет, возникают сбросы пакетов вывода, увеличьте количество пакетов, которые могут быть поставлены в очередь, с помощью команды глобального конфигурирования списка приоритетов. По умолчанию для ограничения очереди используются 20 пакетов для высокоприоритетной очереди, 40 для средних, 60 для обычных и 80 для низких.

Дальнейшее чтение:

Buffer Tuning

Understanding Buffer Misses and Failures

Troubleshooting buffer leak

0 0 vote
Article Rating