cvs commit: src/sys/sys mbuf.h src/sys/conf files options src/sys/config LINT src/usr.sbin/pfctl parse.y pf.conf.5 pfctl_altq.c pfctl_parser.h pfctl_qstats.c src/sys/net/altq altq.h altq_fairq.c altq_fairq.h altq_subr.c altq_var.h src/sys/net/pf ...

Matthew Dillon dillon at
Sun Apr 6 11:58:44 PDT 2008

dillon      2008/04/06 11:58:16 PDT

DragonFly src repository

  Modified files:
    sys/sys              mbuf.h 
    sys/conf             files options 
    sys/config           LINT 
    usr.sbin/pfctl       parse.y pf.conf.5 pfctl_altq.c 
                         pfctl_parser.h pfctl_qstats.c 
    sys/net/altq         altq.h altq_subr.c altq_var.h 
    sys/net/pf           pf.c pfvar.h 
  Added files:
    sys/net/altq         altq_fairq.c altq_fairq.h 
  Add fairq to altq.  Fairq is a fair queueing algorithm with bandwidth
  prioritization and a bandwidth delimiter (hogs) to allow low bandwidth
  buckets to jump the round robin.  This fairq algorithm is currently unweighted
  but traffic can still be classified with the global priority model.  For
  each queue traffic is normally round robined by taking a packet from each
  bucket in turn.
  This feature is primarily intended for edge routers and egress points with
  bandwidth constrictions.
  * Hogs feature allows low bandwidth buckets to burst.  Low bandwidth can
    mean, e.g. an interactive shell or even simply ack traffic, without
    the need to explicitly classify it.  Bandwidth is managed on a per-bucket
  * Prioritization feature allows minimum guaranteed bandwidths based on
    service classifications. e.g. VOIP, web, mail, PtP, etc.
  * Weighted fairq not implemented (beyond using classification into priority
    queues), but the circular bucket design makes it a fairly easy task if
    someone wants to do it.
  * Add ALTQ_MBUF_STATE_HASHED and generate a hash of the connection state
    in the mbuf header for any packet that you have set 'keep state' for
    in pf.  This is done in PF and is needed by fairq to bucketize
  * Add the fairq implementation and a new ALTQ_FAIRQ kernel build option.
  * Simple example included below.
  ports="{ 25, 80 }"
  altq on vke0 fairq bandwidth 500Kb queue { normal, bulk }
  queue bulk priority 1 bandwidth 100Kb \
          fairq(buckets 64, hogs 25Kb) qlimit 50
  queue normal priority 2 bandwidth 400Kb \
          fairq(buckets 64, hogs 25Kb, default) qlimit 50
  pass out on vke0 inet proto tcp from any to any \
          keep state queue normal
  pass out on vke0 inet proto tcp from any to any port $ports \
          keep state queue bulk
  Revision  Changes    Path
  1.47      +2 -0      src/sys/sys/mbuf.h
  1.213     +1 -0      src/sys/conf/files
  1.80      +1 -0      src/sys/conf/options
  1.155     +1 -0      src/sys/config/LINT
  1.3       +75 -3     src/usr.sbin/pfctl/parse.y
  1.10      +89 -4     src/usr.sbin/pfctl/pf.conf.5
  1.3       +220 -2    src/usr.sbin/pfctl/pfctl_altq.c
  1.2       +15 -0     src/usr.sbin/pfctl/pfctl_parser.h
  1.3       +31 -0     src/usr.sbin/pfctl/pfctl_qstats.c
  1.2       +2 -1      src/sys/net/altq/altq.h
  1.10      +30 -0     src/sys/net/altq/altq_subr.c
  1.3       +7 -0      src/sys/net/altq/altq_var.h
  1.15      +20 -0     src/sys/net/pf/pf.c
  1.6       +15 -0     src/sys/net/pf/pfvar.h

More information about the Commits mailing list