fireqos.conf(5)

NAME

fireqos.conf - FireQOS configuration file

DESCRIPTION

This file defines the traffic shaping that will be applied by fireqos(1).

The default configuration file is /etc/firehol/fireqos.conf. It can be overridden from the command line.

A configuration consists of a number of input and output interface definitions (see fireqos-interface(5)). Each interface can define any number of (optionally nested) classes (see fireqos-class(5)) which shape the traffic which they match (see fireqos-match(5)).

SPEED UNITS

In FireQOS, speeds can be expressed in the following units:

#bps
    # bytes per second

#kbps; #Kbps
    # kilobytes per second

#mbps; #Mbps
    # megabytes per second

#gbps; #Gbps
    # gigabytes per second

#bit
    # bits per second

#kbit; #Kbit; #
    # kilobits per second (default)

#mbit; #Mbit
    # megabits per second

#gbit; #Gbit
    # gigabits per second

#%  In a class, uses this percentage of the enclosing rate.

    Note

    The default, kbit is different to tc(8) which assumes bytes per second when no unit is specified.

EXAMPLE

This example uses match statements.

     # incoming traffic from my ADSL router
     interface eth2 adsl-in input rate 10500kbit adsl remote pppoe-llc
       class voip commit 100kbit pfifo
         match udp ports 5060,10000:10100 # asterisk sip and rtp
         match udp ports 16393:16402 # apple facetime
       class realtime commit 10%
         match tcp port 22,1195:1198,1753 # ssh, openvpn, pptp
         match udp port 53 # dns
         match proto GRE
         match icmp
         match tcp syn
         match tcp ack
       class clients commit 10%
         match tcp port 20,21,25,80,143,443,465,873,993 # mail, web, ftp, etc
     # unmatched traffic goes here ('default' is a special name)
       class default max 90%
     # I define torrents beneath the default class, so they slow
     # down when the default class is willing to get bandwidth
       class torrents max 90%
         match port 51414 # my torrent client
     # outgoing traffic to my ADSL router
     interface eth2 adsl-out output rate 800kbit adsl remote pppoe-llc
       class voip commit 100kbit pfifo
         match udp ports 5060,10000:10100 # asterisk sip and rtp
         match udp ports 16393:16402 # apple facetime
       class realtime commit 10%
         match tcp port 22,1195:1198,1753 # ssh, openvpn, pptp
         match udp port 53 # dns
         match proto GRE
         match icmp
         match tcp syn
         match tcp ack
       class clients commit 10%
         match tcp port 20,21,25,80,143,443,465,873,993 # mail, web, ftp, etc
     # unmatched traffic goes here ('default' is a special name)
       class default max 90%
     # I define torrents beneath the default class, so they slow
     # down when the default class is willing to get bandwidth
       class torrents max 90%
         match port 51414 # my torrent client

This example uses server/client statements in a bidirectional interface. Of course match statements can also be specified. FireQOS will create 2 interfaces out of this: world-in and world-out.

      DEVICE=dsl0
      INPUT_SPEED="12000kbit"
      OUTPUT_SPEED="800kbit"
      LINKTYPE="adsl local pppoe-llc"
      # a few service definitions
      # all the rest that are used in this example
      # are defined by FireQOS
      server_netdata_ports="tcp/19999"
      server_rtp_ports="udp/10000:10100"
      server_openvpn_ports="any/1195:1198"
      server_mytorrent_ports="any/60000"
      server_mytorrenttransfers_ports="any/60001:64999"
      server_myssh_ports="tcp/2222"
      # League Of Legends game (yes! I have kids)
      server_lol_ports="udp/5000:5500 tcp/8393:8400,2099,5223,5222,8088"

      interface $DEVICE world bidirectional $LINKTYPE input rate $INPUT_SPEED output rate $OUTPUT_SPEED

        class voip commit 100kbit pfifo
          server sip
          client sip
          server rtp
          client stun
        class interactive input commit 20% output commit 10%
          server icmp limit 50%
          server dns
          client dns
          server ssh
          client ssh
          server myssh
          client myssh
          client teamviewer
          client lol
        class chat input commit 1000kbit output commit 30%
          client facetime
          server hangouts
          client hangouts
          client gtalk
          client jabber
        class vpns input commit 20% output commit 30%
          server pptp
          server GRE
          server openvpn
        class servers
          server netdata
          server http
        # a class group to favor tcp handshake over transfers
        class group surfing prio keep commit 5%
          client surfing
          client rsync
          class synacks
            match tcp syn
            match tcp ack
        class group end
        class synacks commit 5%
          match tcp syn
          match tcp ack
        class default
        class background commit 4%
          client torrents
          server mytorrent
          server mytorrenttransfers

SEE ALSO

•   fireqos(1) - FireQOS program

•   fireqos-interface(5) - QOS interface definition

•   fireqos-class(5) - QOS class definition

•   fireqos-match(5) - QOS traffic match

•   FireHOL Website (http://firehol.org/)

•   FireQOS Online PDF Manual (http://firehol.org/fireqos-manual.pdf)

•   FireQOS Online Documentation (http://firehol.org/documentation/)

•   tc(8) (http://lartc.org/manpages/tc.html) - show / manipulate traffic control settings

AUTHORS
FireHOL Team.