Traffic classes
cFosSpeed has two built-in traffic classes: “default” and “drop”. All traffic that isn’t matched by anything else goes to “default”. Its implicit priority is 0.
You can use “drop” to delete a packet and don’t send it at all. This allows you to do your own little firewalling with it (only for outbound traffic). “Drop” has no priority.
Used to order classes, “priority” is entered as an integer. To avoid confusion, no two classes should be assigned the same priority value. Packets of a traffic class with higher priority are sent prior to packets belonging to a traffic class with lower priority.
“Priority” is usually a positive value for regular classes. However, you can specify “low prio” classes with a negative priority value. Packets in low prio classes are only sent out if there is no high and no default class traffic ready for transmission.
This concept is exactly the opposite of high prio class. With high prio classes, you can mark specific packets to be sent out in front of other data. With low prio classes, you can mark specific packets to be sent out after other data. Beware that specifying rules for low classes can easily lead to “starving” connections, because all other data would then take precedence.
In addition, all traffic classes can be assigned a speed setting. The speed setting determines up to how many bytes/second the class priority will remain in effect. Beyond that, packets are treated as being in the default class. That way, for instance, you could prioritize traffic, but only if it does not exceed, say, 1000 bytes/second. Once that speed is exceeded, the traffic would not be prioritized any more.
The speed settings can done in percent as well, where 100% denotes the total speed of the connection. Specifying “-speed 20%” and “-speed 20perc” means the same. Speed settings of low classes must have a priority value that is used in case the speed is exceeded. It looks like this: “-speed 20%,-10”.
As an example take the setting “-prio 0 -speed 20%,-10”. Traffic in this class is sent out with priority 0 (i.e., default) if it’s slower than 20% of the maximum speed and with priority -10 otherwise.
Standard configuration
cFosSpeed comes preconfigured with five different traffic classes (in addition to the two built-in classes):
- highest -prio 100 -weight 400
- Only special cFosSpeed traffic sent out to measure latency is assigned to this class. This must not be changed and there must be no other traffic going into class highest but the -highest traffic nor must there be a class with higher or same prio. If there was, cfosspeed shaping would degrade in quality. Also see -highest rule.
- higher -prio 90 -weight 400 -speed 40%,0
- This class encompasses all TCP ACK packets. See -higher rule for more. The -speed setting is to ensure that if there is a flood of TCP ACKs other packets get their share of the bandwidth as well.
- high -prio 80 -weight 400 -speed 40%,0
- This class includes different kinds of traffic that are by default prioritized; see -high rule. The -speed setting is in for the same reason than in -higher.
- low -prio 0 -speed 20%,-10 -weight 25
- This class will get FTP data and SMTP (i.e., mail) uploads. We want these types of data to be sent out only if there is no other traffic that is most likely interactive.
- lowest -prio 0 -speed 20%,-30 -weight 6
- This class gets P2P traffic and other traffic that is sent out all the time in the background. We want it to give way to ANY other traffic that is sent.