# # Shorewall version 3.2 - Tcclasses File # # Based on tc4shorewall version 0.5 by Arne Bernin # # /etc/shorewall/tcclasses # # Define the classes used for traffic shaping in this file. # # A note on the rate/bandwidth definitions used in this file: # # - don't use a space between the integer value and # the unit: 30kbit is valid while 30 kbit is NOT. # # - you can use one of the following units: # # kbps Kilobytes per second # mbps Megabytes per second # kbit Kilobits per second # mbit Megabits per second # bps or a # bare number Bytes per second # # - if you want the values to be calculated for you depending # on the output bandwidth setting defined for an interface # in tcdevices, you can use expressions like the following: # # full/3 causes the bandwidth to be calculated # as 3 of the the full outgoing # speed that is defined. # # full*9/10 will set this bandwidth to 9/10 of # the full bandwidth # # DO NOT add a unit to the rate if it is calculated ! # # Columns are: # # INTERFACE Name of interface. Each interface may be listed only # once in this file. You may NOT specify the name of # an alias (e.g., eth0:0) here; see # http://www.shorewall.net/FAQ.htm#faq18 # # You may NOT specify wildcards here, e.g. if you # have multiple ppp interfaces, you need to put # them all in here! # # Please note that you can only use interface names # in here that have a bandwidth defined in the tcdevices # file # # MARK The mark value which is an integer in the range 1-255. # You define this marks in the tcrules file, marking # the traffic you want to fit in the classes defined # in here. # # You can use the same marks for different interfaces. # # RATE The minimum bandwidth this class should get, # when the traffic load rises. # # CEIL The maximum bandwidth this class is allowed to use # when the link is idle. Useful if you have traffic # which can get full speed when more needed services # (e.g. ssh) are not used. # # You can use the value "full" in here for setting # the maximum bandwidth to the defined output bandwidth # of that interface # # PRIORITY The priority in which classes will be serviced by # the packet shaping scheduler and also the priority # in which bandwidth in excess of the rate will be # given to each class. # # Higher priority classes will experience less delay # since they are serviced first. Priority values # are serviced in ascending order (e.g. 0 is higher # priority than 1). # # Classes may be set to the same priority, in which # case they will be serviced as equals. # # OPTIONS A comma-separated list of options including the # following: # # default - this is the default class for that # interface where all traffic should go, # that is not classified otherwise. # # NOTE: defining default for exactly one # class per interface is mandatory! # # tos=0x[/0x] (mask defaults to 0xff) # - this lets you define a classifier # for the given / combination # of the IP packet's TOS/Precedence/DiffSrv # octet (aka the TOS byte). Please note, # classifiers override all mark settings, # so if you define a classifer for a class, # all traffic having that mark will go in it # regardless of any mark set on the packet # by a firewall/mangle filter. # # NOTE: multiple tos= statements may be # applied per class and per interface, but # a given value/mask pair is valid for only # ONE class per interface. # # tos- - aliases for the following TOS octet # value and mask encodings. TOS encodings # of the "TOS byte" have been deprecated in # favor of diffserve classes, but programs # like ssh, rlogin, and ftp still use them. # # tos-minimize-delay 0x10/0x10 # tos-maximize-throughput 0x08/0x08 # tos-maximize-reliability 0x04/0x04 # tos-minimize-cost 0x02/0x02 # tos-normal-service 0x00/0x1e # # NOTE: each of this options is only # valid for ONE class per interface. # # tcp-ack - if defined causes an tc filter to # be created that puts all tcp ack # packets on that interface that have # an size of <=64 Bytes to go in this # class. This is useful for speeding up # downloads. Please note that the size # of the ack packets is limited to 64 # bytes as some applications (p2p for # example) use to make every packet an # ack packet which would cause them # all into here. We want only packets # WITHOUT payload to match, so the size # limit. # # NOTE: This option is only valid for # ONE class per interface. # # # # Example 1: Suppose you are using PPP over Ethernet (DSL) # and ppp0 is the interface for this. You have 4 classes here, # the first you can use for voice over IP traffic, # the second interactive traffic (e.g. ssh/telnet but not scp), # the third will be for all unclassified traffic, and the # forth is for low priority traffic (e.g. peer-to-peer). # # The voice traffic in the first class will be guaranteed # a minimum of 100kbps and always be serviced first (because # of the low priority number, giving less delay) and will be # granted excess bandwidth (up to 180kbps, the class ceiling) # first, before any other traffic. A single VOIP stream, # depending upon codecs, after encapsulation, can take up to # 80kbps on a PPOE/DSL link, so we pad a little bit just in # case. (TOS byte values 0xb8 and 0x68 are DiffServ classes # EF and AFF3-1 respectively and are often used by VOIP # devices). # # Interactive traffic (tos-minimum-delay) and TCP acks (and # ICMP echo traffic if you use the example in tcrules) and # any packet with a mark of 2 will be guaranteed 1/4 of the # link bandwidth, and may extend up to full speed of the link. # # Unclassified traffic and packets marked as 3 will be # guaranteed 1/4th of the link bandwidth, and may extend # to the full speed of the link. # # Packets marked with 4 will be treated as low priority # packets. (The tcrules example marks p2p traffic as # such.) If the link is congested, they're only guaranteed # 1/8th of the speed, and even if the link is empty, can # only expand to 80% of link bandwidth just as a precaution # in case there are upstream queues we didn't account for. # This is the last class to get additional bandwidth and # the last to get serviced by the scheduler because of the # low priority. # # ppp0 1 100kbit 180kbit 1 tos=0x68/0xfc,tos=0xb8/0xfc # ppp0 2 full/4 full 2 tcp-ack,tos-minimize-delay # ppp0 3 full/4 full 3 default # ppp0 4 full/8 full*8/10 4 # ############################################################################### #INTERFACE MARK RATE CEIL PRIORITY OPTIONS #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE