Добрый день.

Имеем 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)


-- 
Голуб Михаил

Ответить