Configuration noyau

# PF SUPPORT
device          pf
device          pfsync
device          pflog
device          carp
options         ALTQ
options         ALTQ_CBQ
options         ALTQ_RED
options         ALTQ_RIO
options         ALTQ_HFSC
options         ALTQ_PRIQ

Configuration ALTQ

altq on igb0 bandwidth 853Kb hfsc queue { net_ack, net_dns, net_ssh, net_web, net_bulk, net_p2p }
queue net_ack bandwidth 30% qlimit 50 hfsc (realtime 20%)
queue net_dns bandwidth 5% qlimit 50 hfsc (realtime 2%)
queue net_ssh bandwidth 20% qlimit 50 hfsc (realtime 20%) { net2_ssh_bulk, net2_ssh_login }
queue net_ssh_bulk bandwidth 50% qlimit 50 hfsc
queue net_ssh_login bandwidth 50% qlimit 50 hfsc
queue net_web bandwidth 20% qlimit 50 hfsc (realtime (20%, 10000, 5%))
queue net_bulk bandwidth 5% qlimit 50 hfsc (realtime 2% default, ecn)
queue net_p2p bandwidth 1% qlimit 50 hfsc (upperlimit 50%)

Régles de filtrage PF

pass out quick on igb0 inet proto tcp from any to any port 53 flags any queue net_dns
pass out quick on igb0 inet proto udp from any to any port 53 queue net_dns
pass out quick on igb0 inet proto tcp from any to any port 22 flags any queue (net_ssh_bulk, net_ssh_login)
pass out quick on igb0 inet proto tcp from any to any port { 80, 443 } flags any queue net_web
pass out quick on igb0 inet proto tcp from any to any flags any queue (net_bulk, net_ack)
pass out quick on igb0 inet proto udp from any to any port 10000 queue net2_p2p

Attention ! L’option queue, à l’inverse de l’option tag, n’est pas sticky . Le choix de la queue s’appuie donc sur la dernière règle validant le paquet. Si cette dernière ne précise aucune queue, la queue par défaut est donc utilisée. Dans le cas d’une QoS sur les flux FTP, il est nécessaire de spécifier la queue à utiliser par ftp-proxy, par le biais de son option -q.

Pour tester et valider toutes vos règles PF et ALTQ, pftop est d’un grand secours.