IOS - настройка очередей.
Когда пропускной
способности канала не хватает, пакеты падают на пол. Наша
задача, чтобу упали наименее ценные пакеты.
Возможные алгоритмы
обработки выходной очереди (входная
очередь нам
недоступна - по крайней мере,
непосредственно):
-
первый пришел, первый
обслуживается (время прихода по концу
пакета), как только очередь
переполнилась, то следующий пакет
теряется.
Устанавливается по
умолчанию на
интерфейсах более быстрых, чем E1 (все равно
мощности CPU не хватает)
-
weighted fair queuing: пакеты
автоматически
группируются в потоки
(остовываясь на адресах и портах), потоки с
низким трафиком имеют больше шансов
уцелеть, потоки с большим
трафиком делят
оставшуюся часть канала.
(config-if)# fair-queue рубеж
очередей
резервных-очередей
где
-
рубеж - число мест в выходной очереди для всех
толстых потоков, по
умолчанию - 64, для каждого
конкретного потока
выделяется не полее четверти от общего числа мест;
-
очередей - макс.число
одновременно
распознаваемых потоков (по
умолчанию 256);
-
резервных потоков - очередей для Resource Reservation Protocol (по
умолчанию - 0).
-
priority queuing - 4 очереди с
приоритетами high, medium, normal, low. Пока более
старшая очередь не опустеет, младшая не
начнет
обрабатываться. Жесткая политика для
медленных линий, когда уже некуда
деваться. Пакеты
размещаются по очередям в
зависимости от протокола и других
характеристик. Если очередь
переполняется в процессе
обработки старшей очереди, то пакет
теряется. Большая загрузка
процессора (не для Ethernet!).
-
распасовка пакетов по
приоритетам
(config)# priority-list
номер-листа protocol
имя-протокола {high|medium|normal|low}
[выражение]
где выражение
-
fragments
-
gt размер
-
lt размер
-
list
номер-списка-доступа
-
tcp порт
-
udp порт
-
определить приоритет по
умолчанию (изначально normal)
(config)# priority-list
номер-листа default {high|medium|normal|low}
-
определить приоритет на пакеты,
приходящие по
определенному
интерфейсу
(config)# priority-list
номер-листа interface
тип-интерфейса
номер-интерфейса {high|medium|normal|low}
-
определить число пакетов в
очереди
(config)# priority-list
номер-листа queue-limit для-high-20 для-medium-40 для-normal-60
для-low-80
-
привязать список
приоритетов к
интерфейсу (только один)
(config-if)# priority-group
номер-списка
-
посмотреть
show queuing priority
show interface
-
custom queuing - более мягкий
алгоритм для более быстрых линий, что-то типа round-robbin.
Можно задать 16 очередей и
определить для каждой из них размер и
максимальное
количество байт
отправляемых из нее на каждом цикле. Есть еще
суперприоритетная очередь 0.
-
распасовка пакетов по
приоритетам
(config)# queue-list
номер-листа protocol
имя-протокола
номер-очереди
[выражение]
где выражение
-
fragments
-
gt размер
-
lt размер
-
list
номер-списка-доступа
-
tcp порт
-
udp порт
-
определить очередь по
умолчанию
(config)# queue-list
номер-листа default
номер-очереди
-
определить очередь для═ пакетов,
приходящие по
определенному
интерфейсу
(config)# queue-list
номер-листа interface
тип-интерфейса
номер-интерфейса
номер-очереди
-
определить число пакетов в
очереди
(config)# queue-list
номер-листа queue
номер-очереди limit
число-пакетов-20
-
определить числа байт,
вынимаемых из очереди на каждом круге
(config)# queue-list
номер-листа queue
номер-очереди byte-count
число-байт-1500
-
привязать список очередей к
интерфейсу (только один)
(config-if)# custom-queue-list
номер-списка
-
посмотреть
show queuing custom
show interface
Примеры═
У себя я сделал следующее (пакеты
перестали падать, хотя канал явно
перегружен):
-
interface Serial0 - ручное
управление очередью на выходном канале
-
priority-list 1 protocol ip low tcp ftp-data -
пакеты FTP могут и
подождать (passive так просто не
преодолеть)
-
priority-list 1 protocol ip high udp domain -
запросы DNS самые
приоритетные
-
priority-list 1 queue-limit 20 40 100 100 -
евеличить размеры очереди