Добрый день.
Имеем FreeBSD 10.1, один сетевой интерфейс.
Ядро собрано с поддержкой altq.
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
Сервер выполняет роль прокси-сервера.
На нем работает squid, который согласно правил метит пакеты (по сути две
очереди - низкий приоритет и высокий).
Правила PF приведены ниже.
Суть бага в том, что при закачке файла через прокси случайно обрываются
закачки.
Internet Explorer выдает сообщение "закачка прервана". Если перезапустить
закачку - типа скачивание закончилось успешно, но размер файла гораздо
меньше.
Для теста качал файл со своего web-ресурса.
Нагрузка на прокси не сильно большая ...
Порядка 15 000 пакетов в секунду на интерфейсе, скорость до 100 Мбит/сек.
Что касается сквида - кеш отключен. Сквид используется только для контроля
доступа и логирования http-запросов.
client_http.requests = 260.499224/sec
server.all.errors = 0.000000/sec
В cache.log ошибок нет.
Экспериментально выяснил, что ошибка не сквида - отключил pf (pfctl -d) и
обрывы прекратились.
Вопрос вот в чем.
Что-то не так в правилах PF?
Или в этой версии FreeBSD есть баг в altq?
Правила PF:
inet="100Mb"
altq on $ext_if cbq bandwidth $inet queue { ssh, Default, High, Low }
queue Default on $ext_if bandwidth 15% priority 1 cbq ( red , default ,
borrow )
queue ssh on $ext_if bandwidth 5% priority 1 cbq ( red , borrow )
queue High on $ext_if bandwidth 40% priority 3 cbq ( red , borrow )
queue Low on $ext_if bandwidth 40% priority 2 cbq ( red , borrow )
pass out quick on $ext_if proto {tcp} from any port 22 to any no state queue
(ssh)
pass out quick on $ext_if proto {tcp} from any to any tos 0x31 no state
queue (High)
pass out quick on $ext_if proto {tcp} from any to any tos 0x32 no state
queue (Low)
--
Голуб Михаил