> А практическое применение этому можно?
Ну, хотя бы вот такое, хрестоматийное (взято, кстати, по наводке с OpenNet.ru):===
table <ssh-bruteforce> persist
pass all
block drop in quick on $if_195 from <ssh-bruteforce> probability 65%
block drop in quick on $if_62 from <ssh-bruteforce> probability 65%
pass in quick on $if_195 inet proto tcp from any to $if_195_ip port ssh flags S/SFRA keep state \
(max-src-conn 5, max-src-conn-rate 3/60, overload <ssh-bruteforce> flush global)
pass in quick on $if_62 inet proto tcp from any to $if_62_ip port ssh flags S/SFRA keep state \
(max-src-conn 5, max-src-conn-rate 3/60, overload <ssh-bruteforce> flush global)
===
Можно не обязательно block drop, можно, там, шейперу скормить, или ещё что-нибудь...
> Гораздо болеее интересна ситуация, когда у нас есть сеть /22, которая разбита на 4 сетки > по /24. Каждому хосту в 1й /24 надо дать 256кбит/с, каждому во 2й - 512кбит/с, каждому в > 3й - 1мбит/с, а 4й отдать остатки.
CBQ вполне с этим справляется. Делается суперкласс на пропускную способность апстрима, классы на каждую из трёх сетей с фиксированной bandwidth и borrow от суперкласса, и четвёртый класс на четвёртую сеть просто с borrow из суперкласса.