Getting Started

Install/Register/Uninstall

Installation

Installation of cFosSpeed is easy and convenient, taking only a few steps:

  • Download the latest cfosspeed-vxxxx-buildxxxx.zip file and save it to your hard drive.
  • Extract and execute the file (cfosspeed-vXXX.exe) by double-clicking on it.
  • The install assistant will then guide you through the rest of the installation process.
  • cFosSpeed can be used immediately after successful installation.

Some people experience difficulties while installing cFosSpeed.

There are two symptoms:
  • The installations hangs / takes more than 15 minutes
  • The installation fails and in the file CFOSSPEED_SETUPLOG.TXT in the WINDOWS directory there is the error message
    Could not find driver, Driver not in the deviceinfoset, No compatible driver

These problems are very often caused by general problems with the network configuration or by other network components. While Windows installs cFosSpeed it asks all other network components for permission. If one of these component has strange or faulty behaviour, the installation fails.

Solutions:
  1. Try installing in safe mode
  2. Install cFosSpeed with parameter -ide (see instructions below). This prevents our installer from cleaning up the installation directory after the failed installation. Then you can try to install cFosSpeed with the windows installer: Go to your netork connections (clickk start, connect to, all connections) and chose the connection you want to install cFosSpeed for. clickk properties, network, install, service, have disk and select the file SPEED.INF (SPEED_X64.INF) in the cFosSpeed installation directory.
  3. Disconnect all TCP connections. Before the actual installation the number of TCP connections is logged in CFOSSPEED_SETUPLOG.TXT in the WINDOWS directory. If you are unsure, pull all relevant network cables. Try installing again.
  4. Deinstall other relevant network components, reboot and try installing cFosSpeed again. If this helps, please inform us, which network component caused the problem. Maybe we can implement a work-around for it in the next cFosSpeed version.
  5. Last resort: Re-install Windows.

Install cFosSpeed with the option -ide
  1. Uninstall your cFosSpeed version
  2. Download the latest cFosSpeed Beta version
  3. Install this version with the option -ide
  4. The install dialog should be finished without error messages. Now please take the following steps:
  • Go to START/SYSTEM PANEL/NETWORK CONNECTIONS and do a right-click on your LAN-Connection. Then choose ‘Properties’
  • Click on ‘install’
  • Choose ‘Service’ and then ‘add’
  • Using “Search” you go to the cFosSpeed install directory and choose the file SPEED.INF
  • Confirm with OK and the cFosSpeed Service should now be installed.

Registration

1.  Using the 30 digit serial key from MyCommerce (xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx)
  • Click right on the cFosspeed status window or the cFosSpeed task icon.
  • The cFosSpeed context menu opens.
  • Choose “Enter cFosSpeed serial number” and follow the instructions.
  • Enter the 30 digits serial key.
2.  Using the 16 digit password (xxxx-xxxx-xxxx-xxxx)
  • Please note that this method is a legacy one and should be used only with older cfosspeed versions. If you have an old licence file and have lost the it, please contact us, mention the email you used to buy the old version, and we will create a new version for you.
  • Execute the C:/ProgramData/cfos/cfosspeed/ key.cfosspeed file by double-clicking on it.
  • The install assistant will then guide you through the rest of the registration process.
  • After accepting the terms and conditions for your license, you should again enter your password and close the dialog.
  • Your copy of cFosSpeed is now registered to you personally.
You’ve lost your license key or password
  1. Please use our Contact Form or email us at support@atlas-cfosspeed.com
The license key opens like a text file
  1. Save the license key to your hard drive
  2. Open the file by right clicking on it and selecting Open with and then using Search for choosing the cFosSpeed installation program setup.exe inside the cFosSpeed installation directory, e.g. C: -> Programs -> cFosSpeed -> setup.exe
Licence Key is Corrupt

The licence key might have become corrupted when downloaded from the server. In this case, please uninstall the software, reboot and reinstall. Afterwards, follow one of the following instructions to register the product:

1- Click on the windows Start button and search for “Enter cfosSpeed serial number”, and follow the instructions.
2- See (1. – Using the 30 digit serial key from MyCommerce) above
3- See (2. – Using the 16 digit password) above

Uninstallation

  • To uninstall cFosSpeed just use the common Windows uninstall method.

Help with Installation

Some people experience difficulties while installing cFosSpeed.

There are two symptoms:

  • The installations hangs / takes more than 15 minutes
  • The installation fails and in the file CFOSSPEED_SETUPLOG.TXT in the WINDOWS directory there is the error message Could not find driverDriver not in the deviceinfosetNo compatible driver

These problems are very often caused by general problems with the network configuration or by other network components. While Windows installs cFosSpeed it asks all other network components for permission. If one of these component has strange or faulty behaviour, the installation fails.

Solutions:

  1. Try our most recent beta at www.cfos.de/beta
  2. Try installing in safe mode
  3. Install cFosSpeed with parameter -ide (see instructions below). This prevents our installer from cleaning up the installation directory after the failed installation. Then you can try to install cFosSpeed with the windows installer: Go to your netork connections (clickk start, connect to, all connections) and chose the connection you want to install cFosSpeed for. clickk properties, network, install, service, have disk and select the file SPEED.INF (SPEED_X64.INF) in the cFosSpeed installation directory.
  4. Disconnect all TCP connections. Before the actual installation the number of TCP connections is logged in CFOSSPEED_SETUPLOG.TXT in the WINDOWS directory. If you are unsure, pull all relevant network cables. Try installing again.
  5. Deinstall other relevant network components, reboot and try installing cFosSpeed again. If this helps, please inform us, which network component caused the problem. Maybe we can implement a work-around for it in the next cFosSpeed version.
  6. Last resort: Re-install Windows.

Install cFosSpeed with the option -ide

  1. Uninstall your cFosSpeed version
  2. Download the latest cFosSpeed Beta version
  3. Install this version with the option -ide
  4. The install dialog should be finished without error messages. Now please take the following steps:
  • Go to START/SYSTEM PANEL/NETWORK COPNNECTIONS and do a right-click on your LAN-Connection. Then choose ‘Properties’
  • Click on ‘install’
  • Choose ‘Service’ and then ‘add’
  • Using “Search” you got to the cFosSpeed install directory and choose the file SPEED.INF
  • Confirm with OK and the cFosSpeed Service should now be installed.

Help with Registration

General hints

A cFosSpeed license bought from atlas-cfosspeed.com can be used at any time to activate cFosSpeed.

An explanation on how to do this can be found at: Installation / Registration / Uninstall

You’ve lost your license key or password

  1. Please use our Contact Form or email us at support@atlas-cfosspeed.com
Hints for special problems
The license key opens like a text file
  1. Save the license key to your hard drive
  2. Open the file by right clicking on it and selecting Open with and then using Search for choosing the cFosSpeed installation program setup.exe inside the cFosSpeed installation directory, e.g. C: -> Programs -> cFosSpeed -> setup.exe.

Features

Online Budgets

Since cFosSpeed version 3.10 you can individually config and administrate up to 10 data and time-budgets.

You can access the configuration dialog via the cFosSpeed Menu:
·>Options ·>Online Budgets

For each Budget you can set a time, a data volume budget or both. In addition you have the possibility to set hard limits which allows you to have full control. You can also choose a reset day for the budgets or reset them manually.

To assign a budget to a certain connection use the cFosSpeed connection dialog at
·>Options ·>Traffic Shaping ·>Options

The budgets are visualised by usage graphs.

Example

Main Features

Connections


Broadband: Cable and DSL


Narrow band: Modem and ISDN


Mobile (LTA, UMTS, WiMAX, HSDPA, W-CDMA, WCDMA, CDMA, CDMA2000, 3G Mobile, HSCSD)


Media:

  • VDSL
  • DSL, PPPoE
  • DSL, PPPoA (Vcmux and LLC
  • DSL, PPTP
  • Cable
  • ISDN
  • IP over AAL
  • RFC1483/2684 bridged

Extras


Skins


Status window on your phone/tablet


Online Budgets


Usage Graph


Overview of connections


Firewall


Data and packet logging


32-Bit and 64-Bit version


32+ languages

Routing


Router and dial-up connections


LAN and WLAN


Router and Bridge-Mode


VPN


Multiple connections simultaneously


Adjustable routes


Several IP adresses per adapter

Connections

To configure settings for your connections please open the regarding window via Settings/Traffic Shaping. Here you will find an overview over all connections. The table ‘Dial-up Connections’ shows all Windows Broadband and Dial-Up connections. The table ‘Network Components’ shows all network components and routers. For each connection you can configure whether to achtivate (Yes) or deactivate (No)Traffic Shaping. As a third option you can opt to always be asked first(Ask) or use the default mode(default) with the routers.

Please click on Settings/Preferences to open the extended settings window. For this connection you can choose a budget, set the medium and the Traffic Shaping modus.

example

Game Analyzer

Online games can be demanding. If you are in an important boss fight with a lot of action, players, and monsters on the screen and somehow the action gets jittery, the question is: Why?

Does your Internet connection have too much latency? Is your CPU or one of its cores at its limit? Is your graphics card the limiting factor? Do you have too little system memory so paging slows your PC down? Does some program in the background unexpectedly use a lot of Internet bandwidth?

cFosSpeed Game Analyzer helps you to find out. After a demanding event, you can open the Game Analyzer page and see a history of the most important performance statistics of the past 5 minutes.

The "Ping Stats" graph shows cFosSpeed's ping measurements of your Internet connection to the next hop, i.e., it displays if your part of the Internet connection is congested. The colors green, yellow and red indicate how high your ping is. Blue dots indicate the RTTs to TCP connection endpoints. They are high, if the destination server (e.g., the game server) answers slowly or if the route to it is congested.
The "CPU Usage" graph shows CPU utilization in green and the maximal utilization of a single CPU core in light green. Sometimes games cannot scale well across multiple CPU cores and one core becomes the limiting factor.
The "GPU Usage" graph shows the utilization of your graphics card.
The graph "Line Speed" shows the amount of receiver and transmitter traffic from and to the Internet. This graph allows you to see if Internet bandwidth is used up while you are gaming. LAN traffic is not the issue here, since the bandwidth of the network adapter is typically far greater than the bandwidth of the actual Internet connection and high LAN traffic can be handled by your system without impacting the Internet connection. Thus, only Internet bandwidth is displayed. Please note: The cumulative traffic of all PCs with cFosSpeed installed is shown in this graph by means of cFosSpeed's net talk feature.

So, play your game and when things don’t perform as expected, cFosSpeed Game Analyzer has the most important readings at a quick glance, especially after a big fight.

Usage Graphs

cFosSpeed can show a Usage Graph for online budgets, protocols or programs. You also can choose if the display refers to the current month, to the past month, ot the past 3 month or to the past 12 month. Further you can choose the following ways of display:

  • rx – display: amount of download data
  • tx – display: amount of upload data
  • rx+tx – display: sum of amount of upload and download data
  • sum – display: total amount of data is shown in a continuous sum.
Online Budgets

Steps to set a Usage Graph for a online budget:

  1. At ‘Settings/Traffic Shaping’ you can assign a budget X to your connection.
  2. Now open the Usage Graph window by ‘Usage Graph’.
  3. Select your display colour and choose ‘Online budgets’ from the list.
  4. Into the sublist choose the budget number X.
Protocols/Programs

Steps to set a Usage Graph for a protocol or a program:

  1. Open the Usage Graph window by ‘Usage Graph’.
  2. Select your display colour and choose ‘Protocols’ or ‘Programs’ from the list.
  3. Into the sublist choose the protocol or the program.
Example

Ip Blocking List

IP-range lists

In order to filter for huge amounts of IP-ranges, cFosSpeed has support for IP-range files like ipfilter.dat the same way IP-Blockers like Protowall and Peerguradian support them. All traffic to or from one of the listed addresses is blocked. We call those lists “iplists”.

cFosSpeed supports these iplists through two filter expressions: -s-iplist and -d-iplist. They are already set by default in settings.ini. -s-iplist matches the source IP address against a given list, -d-iplist the destination IP address.

The -s-iplist and -d-iplist filter accept the iplist name as second parameter. The default name used in settings.ini is “ipfilter”. In the [iplist] section in settings.ini or user.ini you must specify the iplist names with the corresponding IP block list files that contain the IP-ranges to be blocked. These block lists are not supplied with cFosSpeed.

The [iplist] section contains lines in the format “listname=filename”. ‘listname’ is used to filter for the IP-addresses listed in ‘filename’. You can have more than one list with different names and each list can be made up of more than one file. When compiling the lists, duplicate entries are removed and the whole list is sorted and optimized. You can put this section in user.ini, so it will not be overwritten with the next cFosSpeed update.

An example excerpt from settings.ini:

    filter=-tx -d-iplist ipfilter -c drop
    filter=-rx -s-iplist ipfilter -c drop

    [iplist]
    ipfilter=c:\text\ipfilter.dat
    ipfilter=c:\text\my.dat

This will read both files and make them available as iplist named ‘ipfilter’. This iplist is used by default to filter packets to the drop queue, i.e. to discard them. However, this rule is not active by default, since no IP block list file is set up.

Currently two IP-range file-formats are supported. This is the Emule format:

    from-address - to-address [, rest-ignored...]

Example:

    0.0.0.1 - 3.255.255.255 , blabla

And this is the Protowall/Peerguardian format:

    ignored-text:from-address - to-address

Example:

    blabla:0.0.0.1 - 3.255.255.255

The block lists can be quite big and consume a lot of memory. Each line with an IP-range needs 8 bytes. We worked with lists that needed 2mb of memory. The process of reloading them will, for a short time, allocate three times as much.

Since the lists are so big, they have to be read into memory from disk and compiled. This can take some short time, so it is only done when cFosSpeed is loaded or on demand. To re-load the block lists on demand use “spd reload -iplist”.

Blocked packets will be dumped to text file FWLOG.TXT like all other firewalled packets. You can switch off the dumping by setting “spd gset fwlog 0”.

You can list the iplists currently loaded with the command “spd showiplists”. The output looks something like this:

    ipfilter:
       0x8218a4a0, active 1, refcnt 2, 3 entries

It shows that the list named “ipfilter” is loaded to a certain memory address, is active, has reference count 2 (i.e. is used two times, most likely from two filter rules) and has 3 entries (i.e. three IP ranges).

Keyboard LEDs

Use keyboard LEDs to display Traffic Shaping information

cFosSpeed can use the Num Lock and Scroll Lock LEDs to display information about the current Internet traffic. This is especially useful for gamers and users of fullscreen application, who can’t see the cFosSpeed status window. By using the keyboard LEDs the most important traffic statistics are indicated:

ping:
off, fair = slow blink, bad = fast blink
warns you if the ping time is too high
pcnt:
fast blinking as packets are counted
informs you about any traffic to/from the internet
ts_effect:
fast blink when a TX packet is prioritized
one of the ways to indicate the effects of Traffic Shaping
speed:
maximum of total_rx_speed and total_tx_speed, 0-32%: off, 33-65%: slow blink, 66-98%: fast blink 99-100%: on
informs you, when you or another user / application uses (too) much bandwidth
ccnt:
fast blink whenever the sum of TCP and UDP connections changes
you stay informed if some new connection is established
variance:
0-15ms: off, 16-127ms: slow blink, 128-511ms: fast blink, 512ms or more: on
informs you if line conditions (e.g. mobile connections) cause high ping variance

You can select the Num Lock and Scroll Lock LEDs to display any of the above values.

Hint: The actual script for controlling the keyboard LEDs is a javaScript, called led.js. So if you like to display other variables or use a completely different LED blinking scheme, feel free to change it to your needs.

cFosSpeed in other languages

  1. Download the language files and unzip them. You should get two text files.
  2. Put these text files in the same directory as the file cfosspeed.exe that you’ve downloaded from our web site.
  3. Execute cfosspeed.exe and select your language in the welcome dialog.
  4. Continue the installation.
  5. After a successful installation you can also change the language from the pop-up menu of the cFosSpeed taskbar icon.
Language Files
Disclaimer:

As a service to you, we have made the following cFos/cFosSpeed localizations available for free download. Since these free expansions have been created by customers for customers, cFos Software GmbH does neither assume liability nor provide technical support for any of them.
For any questions concerning a specific localization, please do contact the author directly. However, should you come across any significant translation errors, omissions or other irregularities (intentional or otherwise), please let us know briefly so we can check up on it.

Logitech keyboard support

cFosSpeed supports the Logitech gamer keyboards G19, G15, G13, G510 and compatible models. In order to use the display of such a gaming keyboard, the Logitech Gaming Software V7.00 or higher must be running. Then you can navigate to the cFosSpeed window settings menu and activate Logitech display support. Now the cFosSpeed status window is displayed on the keyboards display instead of the Windows desktop.

We suggest you use the following skins.

Logitech G19 skin


Logitech G13/G15/G510 skin
Logitech skins on YouTube

Translate cFosspeed into your language

cFosSpeed Language Files

Installation Instructions

  1. Download the language files and unzip them. You should get two text files.
  2. Put these text files in the same directory as the file cfosspeed-v500.exe that you’ve downloaded from our web site.
  3. Execute cfosspeed-v500.exe and select your language in the welcome dialog.
  4. Continue the installation.
  5. After a successful installation you can also change the language from the pop-up menu of the cFosSpeed taskbar icon.

Writing a cFosSpeed multi-language file for your own language

All cFosSpeed text shown on screen is stored in so called multi-language files – cfspdiml.txt for the installer and speedml.txt for the daemon program. To add text in another language, new cfspdiml_*.txt and speedml_*.txt files need to be created. Here, the asterisk (*) is just a placeholder for the abbreviation of the language used. Thus, cfspdiml_it.txt and speedml_it.txt would be text files for an Italian version.

Note that it is, for instance, perfectly OK to have just the daemon text translated. In that case, only a corresponding speedml*.txt file would be required. Once created, any new language file(s) are simply copied to the installer or the installation directory.

Multi-language files must be saved in Unicode format (both UTF-16 and UTF-8 are supported). This can, for instance, be done by using the Windows Notepad text editor.

Each multi-language file has the following structure:

Note that a line starting with a slash ‘/’ is merely a comment, meaning its content will be ignored.

Before any keys can be defined, the appropriate Windows identifier for the new language needs to be specified first, by writing

#language <Windows id>

on a single line (e.g., “#language 1033” for English). A list of Windows language identifers can be found here. You can also use hexadecimal format, ie. “#language 0x0409” for English.

Now, text keys and the text they each represent can be specified, using the format below:

key = "Text";

Keys and corresponding text should be taken from an existing multi-language file and then be translated. The following rules apply:

  • Text must always be in quotes (“)!
  • For better readability within the multi-language file, individual text entries can run more than one line, but must be put in quotes on each line like this:
    key1 = "The text for key1 starts here "
    "continues here "
    "and ends here.";

    Keep in mind that line breaks in a text definition do in no way correlate with line breaks actually shown on screen. Hence, the example above would still be displayed as a single line of text. Note as well that the last (and only the last) line of text must end with a semicolon (;).
  • Explicit line breaks within a text can be specified by entering \n. Line breaks in a text should kept in the translation.
  • A backslash \ is specified by two backslashes \\.
  • %s and %? are both placeholders for text or numbers, which will be filled in at their position at run time. For example, the key for
    welcome_line = "Welcome to %? v%?!";
    could be displayed as “Welcome to cFosSpeed v1.05!” depending on the product and its current version number. In text containing more than one %?, the order of placeholders cannot be changed.
  • To allow repeated use of a placeholder within a text or to have the order of placeholders changed, some text may contain placeholders like %1, %2, %3, ... For example, the key for
    welcome_found_dir = "An existing installation of %1 v%2 has been detected in the directory %3.";
    may be changed to
    welcome_found_dir = "In the directory %3 has been found an existing installation of %1 v%2.";
    Again, if you are unsure what a placeholder stands for, feel free to contact us.

We’d like to give you, the translator, credit for your work. Therefore there are two special language keys available only for user-created multi-language files.

  • translator_name = "Your name";
  • translator_msg = "Your message";

The translator name will be displayed in the cFosSpeed daemon language menu. The translator message will be displayed in a Windows message box if that language is selected in the cFosSpeed daemon language menu.

Net-Talk: Multiple cFosSpeeds on your LAN

Starting with version 5.13, cFosSpeed can send and receive statistical information about the traffic it is transmitting to other cFosSpeed drivers on the same LAN. The goal is to improve accuracy of multiple cFosSpeed drivers. If cFosSpeed knows about the traffic of other members of your LAN that are sending their traffic over the same router, it can shape more accurately. For instance, the measurement of ping variation depends on the fact that ping times were measured when no one else was transmitting any data.

One other nice advantage of Net_Talk is that you can see in your skin window the overall traffic of other members on your LAN. This might help to understand why a transfer is currectly very slow.

cFosSpeed with Net_Talk enabled will broadcast its statistics to all other members of your LAN 5 times per second. Statistics are transferred so often, so each member has recent data when it is doing shaping decisions. Data is transmitted in one UDP packet of about 1400 bytes in size. The packet is sent with TTL 1 to further insure that it can not be routed outside of your network. If you disable Net_Talk cFosSpeed will still listen for incoming Net_Talk data and use it.

Net_talk packets are never sent to the WAN adapter (Dial-Up networking) or with NDIS 6 to a WWAN adapter. That means that in a LAN, where each machine has cFosSpeed installed, but each connects to the Internet via Dual-Up Networking independently, instead sharing the same router, there will be no Net_Talk support. You do need to use cFosSpeed in “router mode” to use Net_talk and only the PCs that share the same router will participate in Net_talk.

There are some settings around Net_Talk:

Switch on or off Net_Talk for the current connection:
Enter “spd set net_talk 0” to switch it off or “spd set net_talk 0” to switch it on.
Switch on or off Net_Talk for new connections:
You can set the default Net_Talk setting for connections that have not yet been used and thus have not yet an entry in DATA.INI. To set that value enter “spd gset net_talk_default 0 -save” to start new connections with Net_Talk enabled or “spd gset net_talk_default 0 -save” to start with it disabled.
Change the UDP port number on which the statistics are transmitted:
Enter “spd gset net_talk_port PPP -save” to set transfer from/to port number PPP. The default port number is 889. If you change this value, you have to change it for all members on your LAN.

To see which other members on the LAN use cFosSpeed, you can use the “spd ts” or “spd talkstat” command. Output looks like this:

    address         received last      version    LL method       shaper ping   offset

    me                 60471 0s ago    5.13.1675   0 pppoe             2

    sent blocks: 60471
    

“LL” shows if that member is using low latency. “ping” means the time from sending a net_talk packet to receiving a ping answer on your LAN (don’t confuse this with the ping time to a machine on the Internet.)

Task Offloading

Although cFosSpeed supports task offloading, it depends on a couple of factors:

  • The network adapter must support it.
  • There must not be other drivers in the stack which prevent it, e.g. certain anti-virus filter drivers, VMware or Virtual Box virtual network drivers, Wireshark packet capture. Newer drivers may work, but you have to check it out for yourself by opening the network adapter dialog and unchecking drivers.
    Note: For configuration changes to become effective, you need to reboot your system.

  • There may only be newer network drivers in the stack, at least NDIS 6.30.

You can check, if task offloading is enabled by checking the flags for the active adapter in the cFosSpeed settings (Adapter Info): The following flags should be on for IPv4 / IPV6 receive and transmit: tcpchkudpchk and for IPv4 also ipchk.

For Large Segment Offloading “Offload LSOv2 IPv4” and “Offload LSOv2 IPv6” should have a minsegcnt of 2 or more.
Currently Receive Segment Coalescing is only active in expensive adapters. If enabled, “Offload RSC” should be IPv4=1 and IPv6=1

How To

How to make a speed test

By using Traffic Shaping cFosSpeed continuously keeps track of the current line speed (receive and send). You can always switch on the line speed display in the Metro skin, so you see the bandwidth which was available for the last download and/or upload. To determine the current maximum speeds, you can download or upload a big file an see how these values change. So you alays stay informed about the current speed of your Internet connection.

We are currently working on a solution, so cFosSpeed conducts a measurement for the maximum connection speed automatically. Until then, the above method gives you a quick way to determine your bandwidth.

Switch speed display on/off

Speed display active

Prioritize Connections with Class Delay Management

There are many different options for prioritizing a connection while it is currently running. For all of them, however, you need to right-click on your status window and click on Current Connections

Options

You can now choose whether you want to prioritize a connection, protocol or program temporarily, or permanently prioritize a protocol or program

Prioritizing a connection temporarily
Prioritizing a protocol temporarily
Prioritizing a programme temporarily
Prioritizing a protocol permanently
Prioritizing a programme permanently

Use DiffServ/DSCP tagging to label traffic

Differentiated Services (DiffServ) is a Quality of Service (QoS) architecture. Usually, it is supported in closed domains (“DiffServ clouds”) like an organisation or a LAN. With DiffServ you can label each packet with a certain value (called Differentiated Services Code Point, DSCP) and that value is stored inside of the packet. So at the next hop of the packet, the value can be read and taken into account for further routing.

cfosSpeed supports for incoming packets (you can filter on the DSCP value) and on outgoing packets (you can set the DSCP value).

DiffServ labelling is useful in several scenarios:

  1. You have multiple machines that access the Internet and you use a router (boxed or Windows machine) to provide the connectivity to the Internet.
  2. You are part of an organisation that uses in-house DiffServ to divide its traffic into several classes.
  3. You use Windows for your desktop, but a Linux box for routing.

One problem with priorisation is that when you want to decide if a packet is to be prioritised or not you don’t have enough data, enough time, computational power or memory to do so. Routers are often small, very constrained embedded systems with few resources. But even if you use a full-grown Windows or Linux machine as a router some information about the data (like which program it was sent from) is already lost, since that information is not transmitted over the network.

So it is a good idea to label your packets at the origin and you can use cfosSpeed’s possibilities to accomplish that efficiently and very fine-grained (filter for programs, protocols, ports or manual filter expressions).

Here is how you do it. We assume that you have a Windows desktop whose traffic you want to prioritise (the “client”) and you have a router that routes your traffic (maybe among other traffic) to the Internet. Hopefully, that other traffic is also DS-labelled.

On your client you use cfosSpeed like everybody uses it and set up protocols, programs, etc. Furthermore, you set up some DSCP values. To do that click Start, programs, cfosSpeed, open console and enter “spd class”: you will see a listing of the traffic classes, like this:

    class highest -prio 100 -weight 400
    class higher -prio 90 -speed 40%,0 -weight 400
    class high -prio 80 -speed 40%,0 -weight 400
    class default -weight 100
    class low -prio 0 -speed 25%,-10 -weight 25
    class lowest -prio 0 -speed 25%,-30 -weight 6
    class drop

For each class you can set the DSCP value by the command “spd class C -dscp X” (sans quotes), where “C” is the class name and “X” is the DSCP value which is in the range of 0 and 63. The values are arbitrary, but 0 means “no DSCP set”. Other values might be in use in your organisation, ask your net admin. Make sure that class “highest” is sent out the fastest on your router and class “higher” still faster that “high”.

After you have set all the class values, a “spd class” might look like this:

    class highest -prio 100 -dscp 1 -weight 400
    class higher -prio 90 -speed 40%,0 -dscp 2 -weight 400
    class high -prio 80 -speed 40%,0 -dscp 3 -weight 400
    class default -dscp 4 -weight 100
    class low -prio 0 -speed 25%,-10 -dscp 5 -weight 25
    class lowest -prio 0 -speed 25%,-30 -dscp 6 -weight 6
    class drop

Now we have to switch off the traffic shaping on the client. Enter “spd set fixed 1;set txspeed 2g”. This will set the send speed to almost infinite, so no packets are queued locally.

On your router you can use the DSCP values to put the packets into the corresponding traffic class. Assuming the router uses cfosSpeed, you have to modify the filter settings to make use of the client’s DSCP values. Again (now on the router) click Start, programs, cfosSpeed, open console and enter “spd filter”. You will see a listing of all filter rules. It will contain some lines like this:

    18 rt-  -highest -c highest
    19 rt-  -higher -c higher
    20 rt-  -high -c high

Assuming the -highest filter is the first non-firewall filter and has number 18, enter the following commands:

    spd filter -I 18 -dscp 1 -c highest
    spd filter -I 19 -dscp 2 -c higher
    spd filter -I 20 -dscp 3 -c high
    spd filter -I 21 -dscp 4 -c default
    spd filter -I 22 -dscp 5 -c low
    spd filter -I 23 -dscp 6 -c lowest

This will sort all packets with DSCP values into the corresponding traffic queues on the router.

If you use some other system that Windows/cfosSpeed you have to find out how to use the DSCP value for routing. Under Linux iptables might be able to do that.

That’s it! All cfosSpeed settings made have been automatically saved and are active right away.

Additional comments:

DSCP tagging can be useful for load balancing as well. If you own a router that can utilise more than one Internet line at the same time, it might have a way to split the traffic on the various lines. A good solution might be to do DSCP tagging of traffic with cFosSpeed on the machine where the traffic originates and for the router to use the DSCP tags to send the traffic to one of the multiple lines to the Internet.

Links:

>RFC 2474—Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers

>RFC 2475—An Architecture for Differentiated Services

>Wikipedia:Differentiated_services

Tip for Gamers

Since version 2.02 gamer prioritize their games for data transmisson. The settings can be done by selecting »Options » Priorities at the cFosSpeed Kontextmenu.

>Add online games to our Priolist!

>cFosSpeed, the filesharing solution for P2P networks

Prioritizing indiviual ports

If you know the TCP/UPD source or destination port of your application, you can prioritize its traffic like this:
(edit the section [filter] at the settings.ini file)

TCP Ports

[filters]
; dest port=1234
filter=-tcp-dport 1234 -c high
; source port=5678
filter=-tcp-sport 5678 -c high

UDP Ports

[filters]
; dest port=1234
filter=-udp-dport 1234 -c high
; source port=5678
filter=-udp-sport 5678 -c high

>Manual for filter expressions.

Accelerate your online games

How can I accelerate my online games?

Traffic Shaping technology does keep ping times low and transfer rates consistently high at the same time.

Still, to achieve optimal ping times, you should prioritize your game(s) as high as possible. You will find that we have already listed some of the currently most popular games under Program Settings. Should your game not be among the ones listed there, you can simply add it to the list.

A special case is the HTTP stream detection. If the detected protocol is HTTP, cFosSpeed tries to detect, if it is a video or audio stream. This works as follows:

If the user agent is one of the well-known players or has the substring “player” in it, cFosSpeed categorizes the connection as HTTP_STREAM_C or HTTP_STREAM_S. Otherwise if the content-type is audio or video it categorizes the connection as BSTREAM_C or BSTREAM_S. The BSTREAM_C/S connections are prioritized as “normal” so that the actual priority is determined by the program prioritization.

This allows you, for example in uncertain cases, to prioritize it according to your program use.

You can also let us know what online games you would like to have included on that list for future updates as well.

Please be careful to prioritize as few data and programs as possible in such a manner. This is because if you were to assign high priority to everything, you would be no better off than having nothing prioritized at all.

Alternatively, should the program name itself not be clear, you can also prioritize the ports used by the online game. If the TCP/UDP destination ports of an application are known, you can prioritize their data transfer as follows (by editing the [filter] section of the settings.ini file):

For TCP ports:
[filters]
; dest port=1234
filter=-tcp-dport 1234 -c high
For UDP ports:
[filters]
; dest port=1234
filter=-udp-dport 1234 -c high

After making those changes and saving them, the new settings still need to be loaded. This is done by opening the console (under Start, Program, cFosSpeed) and entering “spd reload”. Your changes will take (and remain in) effect after the next time you restart your system.

>cFosSpeed-Filter Manual (English)

Optimizing Connection Settings:

You can specify exactly what transfer medium you use under Connection Settings. The more information about a connection is available to cFos or cFosSpeed, the better ping times will be. Default is “Adaptive”. But if you were for instance using a DSL connection, you should select the appropriate DSL standard or protocol as your medium.

Favor Ping:

In addition, you can also use the settings in the context menu or status window to activate “Favor Ping”. A green arrow will then show up on the status window. This setting will have cFos or cFosSpeed do everything to keep ping times to a minimum but at the expense of transfer speed, which may slow down considerably.

Playing While Downloading:

If you are playing a game online without Traffic Shaping and run an upload or download at the same time, ping times to your gameserver will rise. Less data traffic means better (i.e., lower) ping. Especially with filesharing programs and other applications that send out lots of data, ping times often skyrocket resulting in serious lag. This will also slow down your in-game reaction time horrendously.

Traffic Shaping alleviates this problem by allowing filesharing and downloads to run in the background while gaming. This may still raise ping times minimally though. Therefore, we recommend you to keep “Favor Ping” activated at such times. By default, filesharing programs are set to very low priority. Now, this should not be taken to mean they are artificially slowed or even altogether stalled. What it does mean, however, is that such data will be briefly delayed when more important data like online game traffic needs to be transmitted. Only this priority scheme makes it possible to have filesharing programs run at maximum transfer rates while still using the same connection for other applications at the same time.

Improve Shared Connections

How to solve Internet congestion when many users share one Internet connection?

In restaurants, hostels, hotels, guest houses, on university campuses, office environments – whenever a lot of people share the same Internet connection – this Internet connection is often congested and the users experience up to several seconds of delay.

Here cFosSpeed can make a huge difference by prioritizing the traffic to and from the Internet. For example it can detect if a user uploads a bunch of photos or if some device downloads a big software update. cFosSpeed will slightly delay these big data uploads or downloads by reducing the bandwidth by about 1-2%. This reduces the ping time of the whole Internet connection, which allows highly responsive web browsing or even media streaming / VoIP phone calls and game traffic.

The usual state of most shared Internet connections.

This configuration will result in severe connection delays when some of the connected devices start massive up- or downloads, e.g. saving new photos or videos to cloud storage or downloading software updates. The problem can be solved by using the original router (Router A) for the Windows PC only and buying a cheap second WLAN router (WLAN Router B) for shared access.

The new configuration with cFosSpeed prioritizing the entire Internet traffic of the WLAN network.

To improve overall performance, you may want to install an additional Ethernet port on your Windows PC to connect to Router A. We always recommend to use cable connections, since they produce less latency than WiFi.

Extended configuration with cFosSpeed, second LAN connection for improved latency and an additional WLAN Router B2 to increase range.

Connecting the WLAN router

Connect the WAN port of WLAN Router B with the network port of the Windows PC

Setting up the Windows PC

number1

Install cFosSpeed, following the installation instructions

number2

Press the "Windows" key and type ncpa.cpl

number3

Click on the resulting control panel item entry

number4

Right-click on the network device you want to share. It is the one that connects the Windows PC to the Internet

number5

Click on "Properties"

number6

Click on "Sharing"

number7

Click on "Check the upper check box to enable connection sharing. You may want to uncheck the lower box, if it isn't already"

number8

Click on "OK"

number9

The Internet connection on this device is shared now

Note: Newer versions of Windows 10 have a bug which may stop Internet Connection Sharing from working after a reboot.

By using our freeware tool >cFosICS you can fix this.

Setting up the WLAN router

This particular instruction is for the ASUS RT-N12E, which we chose for its moderate price and easy setup. Nevertheless, this kind of connection sharing should work with any other WiFi access router available at your place.

number1

Connect to your router using an Ethernet cable or via WiFi. The router will show up as an open network (no password required) with the SSID ASUS_60. Now enter the router IP address (192.168.1.1) in the address bar of your browser to start setup

number2

Click on "Automatic Setting"

number3

Enter a Router Login Name and the New Password

number4

Click on "Next"

number5

Enter a new SSID (e.g. GuestWiFi) and a WiFi password

number6

Click on "Apply"

number7

The route will now display a screen showing the new WiFi configuration. You may want to write this down, because it will be needed to connect with the router from now on

number8

After reconnecting with the newly configured WiFi network, the router will show a page listing its current setup and connection status

Prioritarize a Port

Maybe the easiest way to prioritize a certain application is to use the programs / prioritization dialog. If this isn’t applicable you can create your own filter rule as follows:

First you have to determine which port your application uses and if it’s TCP or UDP. Use

      spd -tcpview

or the cFos / cFosSpeed connection overview dialog to find your application. Then you set up the filter as follows:

   filter=-tx -udp-sport / -udp-dport / -tcp-sport / -tcp-dport X -c classname.

You have to decide if it’s a source port or a destination port. In most cases there is a server on the Internet with a certain port, so it’s a destination port (dport). The filter rule would look like this:

   filter=-tx -udp-dport X -c classname      for UDP
      or
   filter=-tx -tcp-dport X -c classname      for TCP

where X is the server’s port and classname the class you want the traffic sorted into, e.g. high or higher (but never highest) if you want to increase the priority or lower / lowest if you want to decrease the priority.

Now insert this new filter rule into settings.ini, section [filters]. For UDP in most cases it should be at the top of the list of the other filter rules. For TCP it should rather be at the end. You can use “spd fstat” to see if your rule matched.

After changing settings.ini you need a “spd reload” command to let cFos / cFosSpeed reload the filter rules.

Prioritarize a Program

First cFosSpeed tries to detect the Layer 7 Protocol for each connection. If it is not detected (i.e. the protocol is UNKNOWN) or the priority of the detected protocol is “normal”, then the program detection is used to determine the priority.

A special case is the HTTP stream detection. If the detected protocol is HTTP, cFosSpeed tries to detect, if it is a video or audio stream. This works as follows:

If the user agent is one of the well-known players or has the substring “player” in it, cFosSpeed categorizes the connection as HTTP_STREAM_C or HTTP_STREAM_S. Otherwise if the content-type is audio or video it categorizes the connection as BSTREAM_C or BSTREAM_S. The BSTREAM_C/S connections are prioritized as “normal” so that the actual priority is determined by the program prioritization.

This allows you, for example in uncertain cases, to prioritize it according to your program use.

Prioritization – Your important streams first

You can adjust the priority of the most common network protocols, so all programs using it automatically have the right priority. In addition, you can configure the priority of individual programs. This means downloads don’t cause lag while gaming or viewing videos, for example.

Overview of connections / On-the-fly prioritization of connections

In one glance you see which programs use your bandwidth. cFosSpeed let’s you temporary change the priority to speed up transfers or reduce latency for time-critical applications.

1) Decrease priority
2) Increase priority

Backup/restore all cFosSpeed settings?

cFosSpeed stores its settings in the following files:

C:\ProgramData\cFos\cFosSpeed

  • data.ini
  • global.ini
  • settings.ini
  • user.ini

C:\Users\[username]\AppData\Local\cFos\cFosSpeed

  • user_data.ini

You can backup all 5 files.

In addition, if you want to keep the online budget log files you should backup the subdirectory logs: C:\ProgramData\cFos\cFosSpeed\logs.

To restore the settings just restore global.ini, user.ini, data.ini. Settings.ini is overwritten by new installations. Therefore if you also made changes in settings.ini, you need to apply these again in the new settings.ini. Otherwise use the settings.ini from the most recent installed version.

Generic Speed Guide

Thank You for using our Speed Guide!

This guide can either help you get the maximum out of your connection or solve problems with speed, ping time or connections.

No pings

cFosSpeed could not receive enough responses to it’s measurement pings. Please make sure your network equipment (firewall, router, etc.) allows ping responses, see Problems with Pings.

Is there traffic from other machines in your network?

If you have several PCs with cFosSpeed you can see the other computers by using the cFosSpeed Console.

C:\Program Files\cFosSpeed>spd ts

Make sure all PCs in the network have cFosSpeed installed. Also for speed tests, make sure only this computer sends/receives data.

Do you currently have control over the network usage for these tests?

Please make sure you have control over your network. Otherwise the speed and/or ping optimizations might be interfered by other PCs in the network.

Calibrate cFosSpeed optimally

Please make sure you have control over your network. Otherwise the speed and/or ping optimizations might be interfered by other PCs in the network.

Watch the video "How to calibrate your Internet connection"

(1/4) Click “Traffic Shaping > Calibrate line”

Then wait about 2-3 minutes until the status window indicates no or nearly no traffic.

Watch the video "How to calibrate your Internet connection"

(2/4) Now download with max. speed for at least 20secs.

Next upload with max. speed for 1-2 minutes. Repeat the upload 2-3 times.

Watch the video "How to calibrate your Internet connection"

(3/4) Open “Options -> Settings”

Watch the video "How to calibrate your Internet connection"

(4/4)

Hint: For the download and uploads you can also use our Speed Test page. Please ignore the values for download/upload speed from the Speed Test as long as cFosSpeed is not calibrated.

Can you calibrate cFosSpeed to 98% or above?

For the line calibration to work, cFosSpeed must receive Ping responses. Please check if “Pongs Received” in the adapter info is at least 50%.

If it is less than 50%, please have a look at our troubleshooting page Problems with Pings, otherwise you can Contact Us.

Speed too low

Traffic Shaping may cost 1-2% speed. This is a necessary consequence of the speed regulation for Traffic Shaping.

Test if the speed is also low with cFosSpeed uninstalled.

Is it still low?

If Yes, then it’s no cFosSpeed problem. In most cases the server you connect to may have speed problems.

Test if the speed is also low with Traffic Shaping disabled.

Is it still low?

The cFosSpeed network driver may cause this problem. Is your computer fast enough for your connection? Otherwise we would like to know about the problem.

Please send us an email, so we can have a closer look at your problem

Check the Low Latency Mode setting

Low Latency Mode active?

Try to turn it off in the cFosSpeed console:

C:\Program Files\cFosSpeed>spd gset latency 2 -save

If this helps, please let us know your network configuration by sending us an email.

Make two speed tests: download and upload. Each for 2-3 Minutes.

Do you get the raw max. speed of your connection?

cFosSpeed can not increase the raw speed of your connection. It cannot make a 11Mbit/s connection out of a 10Mbit/s connection.
cFosSpeed can improve your Internet connection whenever you have several connections at the same time, like a long email send and web-surfing, or filesharing and web-surfing.

Does the cFosSpeed prioritization work for you?

(1/6) cFosSpeed tries to keep your ping low. cFosSpeed Traffic Shaping should result in max. bandwidth (especially with several simultaneous connections) while having minimal ping times (in fact the ping time should be nearly the ping time you get when not transferring data at all). There may be a trade-off between low ping time and transfer speed. If you can live with a higher ping time, you can try this in the cFosSpeed Console:

For a higher upload speed:

C:\Program Files\cFosSpeed>spd set tx_delay
tx_delay = 10000

C:\Program Files\cFosSpeed>spd set tx_width
tx_width = 1000

Write down the two values.

(2/6) Now double each of them and try the following:

C:\Program Files\cFosSpeed>spd set tx_delay 20000
tx_delay = 20000

C:\Program Files\cFosSpeed>spd set tx_width 2000
tx_width = 2000

 If this doesn’t help, restore the old values.

C:\Program Files\cFosSpeed>spd set tx_delay 10000
tx_delay = 10000

C:\Program Files\cFosSpeed>spd set tx_width 1000
tx_width = 1000

(4/6)
For a higher download speed:

C:\Program Files\cFosSpeed>spd set tx_delay 10000
tx_delay = 10000

C:\Program Files\cFosSpeed>spd set rx_width
rx_width = 1970

Write down the two values.

(5/6) Now double each of them and try the following:

C:\Program Files\cFosSpeed>spd set rx_delay 40000
rx_delay = 40000

C:\Program Files\cFosSpeed>spd set rx_width 3940
rx_width = 3940

(6/6) If this doesn’t help, restore the old values.

C:\Program Files\cFosSpeed>spd set rx_delay 20000
rx_delay = 20000

C:\Program Files\cFosSpeed>spd set rx_width 1970
rx_width = 1970

Did this help?

There are (rare) cases when cFosSpeed RX shaping reduces the download speed.
To solve this problem try the following in the cFosSpeed Console:

C:\Program Files\cFosSpeed>spd gset rx_shape 0 -save

There are (rare) cases when cFosSpeed RX shaping reduces the download speed.
To solve this problem try the following in the cFosSpeed Console:

C:\Program Files\cFosSpeed>spd gset avoid_loss 0 -save

Did this help?

(1/2) Sometimes the speed measurements drifts over time because there is always an extreme amount of connections and a lot of UDP traffic. This can happen in some BitTorrent cases. Calibration works fine, but after a while the connections become slower and slower.

Only in such cases you can set the speed to fixed:
Get the current values by using the cFosSpeed Console:

C:\Program Files\cFosSpeed>6spd set maxtxacked
maxtxacked = 537274

C:\Program Files\cFosSpeed>spd set maxtxraw
maxtxraw = 537916

(2/2) Now choose a value between these two numbers and take 90% to 98% of it (510715 in this example).
Set it with

C:\Program Files\cFosSpeed>spd set fixed 1; set txspeed 510715
fixed = 1
txspeed = 510715

Pings too high

Is the Low latency Mode active?

Low latency Mode active?

Try to turn it on:

C:\Program Files\cFosSpeed>spd gset latency 1 -save

(1/2) Maybe the high ping times are caused by the server at the other end of the connection. This often happens with game servers. cFosSpeed cannot reduce your ping below the minimum which is determined by your connection / ISP. Whenever you use several connections simultaneously cFosSpeed can reduce the ping time and prioritize your traffic so that you get near minimum ping times while still using nearly all available bandwidth. This allow, for example, uploads / downloads during VoIP calls or online gameplay.
Uninstall cFosSpeed or disable Traffic Shaping

(2/2) Download hrping and – without any other traffic on your connection – try both Uninstall cFosSpeed or disable Traffic Shaping

C:\Program Files\cFosSpeed> hrping atlas-cfosspeed.com

C:\Program Files\cFosSpeed> hrping -u atlas-cfosspeed.com

Is the ping time still high?

Tip: For DSL connections use fastpath. WLAN typically has higher ping times as cable based networks. Mobile Internet may cause additional delay due to bad transfer conditions and/or congestion of the access point.Is there another PC in the network which sends/receives data?

 

Are your ping times good if this PC doesn’t use the internet?

You can limit this PC’s transfer rate. Install cFosSpeed on it and if this doesn’t help, limit this PC’s upload speed:

C:\Program Files\cFosSpeed> spd set tx_limit [value]

Maybe there is something wrong with the prioritization?
Please open “current connections” and check if each connection has the bandwidth it should have.

Is the prioritization correct?

Please change the setting for “Accommodate for Ping Jitter” in “Options > Settings > Preferences”

Is the ping time better now?

Some equipment interferes with TCP transmissions. For example some drivers for Atheros WLAN adapters may cause high pings with downloads. Please install the most recent network drivers. For a test, use another network adapter and see if pings times are still high during downloads.

New drivers / other network card helped?

Is your cFosSpeed set to fixed speeds? Check this by typing the following into the cFosSpeed Console:

C:\Program Files\cFosSpeed> spd set fixed
fixed = 0

It should be 0, except for rare cases with a lot of BitTorrent connections and high UDP traffic.

If your cFosSpeed line calibration remains stable, you should set it to 0:

C:\Program Files\cFosSpeed> spd set fixed 0

or use smaller values for the fixed speed (try reducing the speed in 1% steps).

Prioritization

(1/2) Prioritization can only work, if not all data is prioritized. It works best if only a little of the traffic is prioritized high and the rest normal. cFosSpeed sends out all packets as fast as possible. But (only) when there traffic with different priorities then higher prioritized packets are sent first. This is how you can test whether the prioritization scheme works:
Clear the current statistics

C:\Program Files\cFosSpeed> spd cstat -clear

Transfer data for some time

(2/2) Examine the newly created statistics

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 MIcrosoft Corporation. All rights reserved.

C:\Program Files\cFosSpeed> spd cstat
tx shaping is active; txspeed = 10000, max_queue_size = 3,910,065

class highest -prio 100 -weight 400
  sent            8,433 ( 20%) packets        236,124 (  6%) bytes

class higher -prio 90 -speed 40%,0 -weight 400
  sent           22,285 ( 53%) packets        903,940 ( 25%) bytes

class high -prio 80 -speed 40%,0 -weight 400
  sent            8,443 ( 20%) packets      2,242,980 ( 62%) bytes

class default -weight 100
  sent            1,321 (  3%) packets         62,095 (  1%) bytes

class low -prio 0 -speed 25%,-10 -weight 25
  sent            1,096 (  2%) packets        132,167 (  3%) bytes

The traffic in all classes above “default” should be no more than 20%-40%.

Is it more than 20%-40%?

(1/2) See which connections consume bandwidth. Transfer data for a time and look at the current connections

(2/2) Is the protocol or program you want to prioritize set to “high” or “higher” and everything else to “normal” or lower? If not, open the prioritize protocol or program dialog (under “Options > Settings”) and adjust the settings. You can also add a program, if it is missing.

>Connection problems

Please check, if “Automatic MSS (MTU) optimization” is activated:

Some servers rely on a maximum MSS/MTU, so you can try to turn it off.

Also check if “Net Talk” is activated. You could try if it helps to turn it off.

Tweaks. How to squeeze the maximum out of your connection

(1/5) Please check if cFosSpeed is calibrated

Watch the video "How to adjust the Medium/Protocol for your Internet connection"

(2/5) Please set the medium to your connection type

(3/5) Activate “Accommodate for Ping Jitter”

(4/5) Activate “Packet loss avoidance”

(5/5) You may also try “Automatic MSS (MTU) optimization”.

In many cases a slightly lower MSS/MTU gains a few % of transfer speed. But some servers rely on a maximum MSS/MTU, so turn off “Automatic MSS (MTU) optimization” if you experience problems

How to check whether you benefit from cFosSpeed Traffic Shaping

cFosSpeed cannot increase the raw speed of your Internet connection. Also it cannot reduce your ping time below the minimum ping of your Internet connection. So you can only measure the benefits of Traffic Shaping during active data transfer which uses up your available bandwidth.

  1. Upload at full speed for 1-2 minutes
  2. Download at full speed for 1-2 minutes
  3. Do a combined upload and download at full speed

During all 3 scenarios, use hrping in the cFosSpeed Console to measure your ping.

C:\Program Files\cFosSpeed> hrping -t -u atlas-cfosspeed.com

Now try all 3 scenarios with and without Traffic Shaping

In all scenarios you should see a lower ping time with Traffic Shaping enabled. In scenario 3 you may also experience a higher download speed. The upload speed may be slightly reduced, because cFosSpeed needs the upload bandwidth to send the ACKs for the download fast enough.

Create Dump after Blue Screen 

Generating a Windows kernel memory dump

In case of a bluescreen while using our software we require a windows kernel memory dump to be able to look into the problem.

To generate the kernel memory dump please follow these steps:

To create the kernel memory dump adhere to the following settings of the function “kernel memory dump”

  • At “START/Control Panel/System” under “advanced” open the “startup and recovery – settings”
  • At “write debugging information” choose: “kernel memory dump”
  • By clicking “OK” confirm the changes and close the window “advanced”
  • By clicking “OK” confirm the changes and close the window “System” and then the window “Control Panel”
  • If you are using XP restart your computer (not required when using Vista or higher version!)

Now a kernel memory dump will be generated as soon as a bluescreen appears and unless otherwise specified saved as MEMORY.DMP.

Please archive your memory dump as a RAR or Zip file (we recommend RAR or 7-zip). Then send it to us by email at support@atlas-tech-solutions.com.

Contact us if need be to inquire about submitting large files.

Surf the Web faster

How can I surf the Web faster?

Traffic Shaping technology does keep ping times low and transfer rates consistently high at the same time.

HTTP detection integrated in cFos and cFosSpeed serves to accelerate page loading times, especially during simultaneous uploads. Acceleration gains are higher the more individual elements need to be loaded on a given Web page.

Favor Ping:

If you are surfing a lot of pages (without major downloads), you may want to use the settings in the context menu or status window to activate “Favor Ping”. A green arrow will then show up on the status window. This setting will have cFos or cFosSpeed do everything to keep ping times to a minimum but at the expense of transfer speed, which may slow down considerably. However, depending on what application you are running, this may speed up loading Web pages even further.

Other Interactive Applications:

Both cFos and cFosSpeed come with integrated detection for major interactive applications like SSL, SSH, Telnet, IRC, and many others. This ensures low response times even during long uploads and downloads.

Should the standard priority scheme under Protocol Settings not be sufficient for your purposes, you can always prioritize any application either by name under “Program Settings” or add its port manually to the filter rules. This is especially advisable when running a server.

If the ports are known, you can prioritize their data transfer as follows (by editing the [filter] section of the settings.ini file):

 
For TCP ports:
[filters]
; dest port=1234
filter=-tcp-dport 1234 -c high
; source port=5678
filter=-tcp-sport 5678 -c high
For UDP ports:
[filters]
; dest port=1234
filter=-udp-dport 1234 -c high
; source port=5678
filter=-udp-sport 5678 -c high

After making those changes and saving them, the new settings still need to be loaded. This is done by opening the console (under Start, Program, cFosSpeed) and entering “spd reload”. Your changes will take (and remain in) effect after the next time you restart your system.

>cFosSpeed-Filter Manual (English)

 

Surfing and Filesharing (P2P):

By default, filesharing programs are set to very low priority. Now, this should not be taken to mean they are artificially slowed or even altogether stalled. What it does mean, however, is that such data will be briefly delayed when more important data is being transmitted. Only this priority scheme makes it possible to have filesharing programs run at maximum transfer rates while still using the same connection for other applications (like surfing the Web) at the same time.

Optimizing Connection Settings:

You can specify exactly what transfer medium you use under Connection Settings. The more information about a connection is available to cFos or cFosSpeed, the better ping times will be. Default is “Adaptive”. But if you were for instance using a DSL connection, you should select the appropriate DSL standard or protocol as your medium.

Create a Wifi Access Point with cFosSpeed

Enable>cFos Traffic Shaping for smartphones, tablets and other mobile devices.

Overview of the cFosSpeed menu (context menu)

Windows 7, 8 and 8.1 allow you to use your Wi-Fi adapter as an ad hoc Wi-Fi access point. So other devices can connect to your PC (instead of directly to the Wi-Fi router) and therefore can benefit from cFosSpeed Traffic Shaping.

Configuration of the cFosSpeed Wi-Fi access point

cFosSpeed now has a context menu option to start and configure (or stop) the Wi-Fi access point easily.

If your PC is connected to the router via Wi-Fi, you can share the same adapter for the ad hoc Wi-Fi access point. Or you can use the Wi-Fi adapter exclusively for the Wi-Fi access point if your PC is connected to the router via network cable. In this case the Wi-Fi bandwidth is fully available for your mobile devices, like smartphone or tablet.

When you have cFosSpeed installed on this PC, the Wi-Fi data is routed through cFosSpeed and, via its Layer-7 protocol detection, cFosSpeed can prioritize the traffic. If you frequently use smartphones and tablets for VoIP or streaming traffic, like music or movies, we recommend to add a Wi-Fi adapter to your PC and route the traffic of your mobile devices through this PC and cFosSpeed.

Manually set up a Wi-Fi access point (Windows 7 and above)

Open the command shell as Administrator:

C:\Program Files\cFosSpeed>netsh wlan set hostednetwork mode=allow

Open the command shell as Administrator:

C:\Program Files\cFosSpeed>netsh wlan set hostednetwork ssid=”cFos Wi-Fi” key=”your_password” keyUsage=persistent

Check with:

C:\Program Files\cFosSpeed>netsh wlan show hostednetwork

Start “Microsoft Virtual WiFi Miniport Adapter”.

C:\Program Files\cFosSpeed>netsh wlan start hostednetwork

Check with:

C:\Program Files\cFosSpeed>netsh wlan show hostednetwork

In the list of network connections the red cross next to “Microsoft Virtual WiFi Miniport Adapter” should have been disappeared.

Right click in the list of network connections on the active Internet connection and select “Properties” from the menu. Click the “Sharing” tab, and then select the “Allow other network users to connect through this computer’s Internet connection” check box.

Under “Home networking connection” select the connection that shows the “Microsoft Virtual WiFi Miniport Adapter” in the list of network connections.

Confirm with “OK”.

How to Create your own cfosspeed skin

 

 

 

 

 

All cFosSpeed versions do come with their own standard skins. Still, you are free to modify and change them to better suit your own needs and aesthetic preferences. In fact, we strongly encourage you to send us your own custom designs and share them with others!

This tutorial will guide you through the process of creating a new basic skin. Do note that most of the graphics used for this are already part of your cFosSpeed distribution, which is why the focus will be on teaching you several ways to integrate them into your own design.

Hint: When working on your skin, you may want to activate the cFosSpeed “test mode.” This will provide you with a quick and easy way to check if everything is working properly and in the right place.

(See the skin definition reference for details on skin testing.)

The INI file / [all] section

The INI file is a plain text file that determines how cFosSpeed displays status information on screen. Let’s just name ours skin.ini and save it to MySkin, a new folder we should first create as a subdirectory of the cFosSpeed main directory (e.g., C:\Program Files\cFosSpeed\MySkin). The new INI file must contain an [all] section listing version information, a skin name and background definition, much like the one shown below:

[all]

version=cFosSkin V1.0

name=MyFirstSkin

background=back.bmp

background_mask=backmask.bmp

Since there is only one version number at this point (V1.0), we’ll just go ahead and use it.
The skin will show up later in the program’s context menu under “Select Skin” by the name given to it in the second entry above.
The background for this skin is built from a simple square image filled with a color gradient (back.bmp) and a grayscale mask defining the skin’s actual shape (backmask.bmp).
For each individual pixel, the grayscale value of the background_mask determines the alpha value (i.e., opacity) of the resulting skin background, whereas the actual color information is taken from the background image. In the mask, black (0) denotes total transparency, while white (255) means full opacity.

If you get a chance to work with 32-bit *.TGA or *.BMP files, you can achieve the same result more easily by using a single image for both color and alpha information. In this case, all mask information is taken directly from that image, meaning there’s no need to define a separate background_mask section. For additional background-definition techniques, please refer to our skin definition reference page.

What we’ll do now to add some eye candy is have the skin blend in and out when it is being started. We’ll also take this opportunity to define a global R,G,B transparentcolor:

blend_time=300

blend_out_time=500

transparentcolor=255,0,0

transparentcolor value doesn’t really need to be specified here, but doing so may help during skin creation by making it easier to check which pixels of an image are fully transparent. Remember that it remains valid for all the images we’ll use as part of this skin.

The font definition

Skins usually contain several text sections for conveying alphanumeric status information. The required parameters are typically entered individually for each respective section. However, there are some parameters that do depend on the font image chosen for a section rather than the section itself. Since such parameters are the same for all sections using a particular font image, it would be redundant – even nonsensical – to repeat them over and over again for each section. Thus, for the sake of economy, we use a font definition to write them down once and then refer back to this section as needed:

[font1]

fontbitmap=num_chars3.tga

framewidth=5

frameheight=8

fontbitmapchars=0 123456789KMGT.?

In this section, font1 is the name of the font. This will come into play later on when it’s used to assign that font to different text sections.
The fontbitmap is the bitmap containing the font image. For this tutorial, we chose a font that is part of the cFosSpeed “Numerical” skin and can either be found in the default_skin subdirectory of your cFosSpeed installation (e.g., C:Program FilescFosSpeeddefault_skin) or downloaded from here(unzip).

It contains a small frame for every character listed after fontbitmapchars – aligned from top to bottom.
Each frame is as wide and high as defined under framewidth and frameheight, respectively.

Note that the space (i.e., the “blank” character) should not be put at the beginning or end of the character list, as the program would not recognize it there.

And don’t worry about the “?” not being properly displayed – this is just a dummy we’ll later use to format text output.
There are also a lot of other advanced text definition methods available on our skin definition reference page.

The animation method

Now, we are ready to add the first graphical disp section to our skin. Let’s start with an animation. This method uses an image consisting of multiple frames, where the value of the assigned parameter determines which frame is being displayed at any given time. This new section will indicate incoming data traffic by moving a bullet each time a packet is received. For this purpose, we’ll use the rx_bullet.tga(unzip) image from the cFosSpeed “Liquid Crystal” skin:

[disp1]

value=rx_data_cnt

method=animation

rect=44,41,55,59

bitmap=rx_bullet.tga

mod=14

min=0

max=13

frames=14

The bitmap contains 14 frames to comprise a complete up-and-down cycle that can be run indefinitely. Because the rx_data_cnt parameter is a simple counter (meaning it will increase continuously while cFosSpeed is running), we’ll need to perform a mod(ulo) calculation to keep the value within the range of min and max.

Positioning the motion is done by setting rect to the coordinates of the frame’s upper left corner and to those of a pixel just right of and below the frame’s lower right corner (both shown bright red in the magnified part of the sample image).

If we want a similar display for outgoing packets, this can be accomplished simply enough by copying this section and changing the disp name along with the value and rect entries:

[disp2]

value=tx_data_cnt

method=animation

rect=44,58,55,76

bitmap=rx_bullet.tga

mod=14

min=0

max=13

frames=14

What we have now are two displays representing two different parameters but still looking the same. We can improve on this design by making use of the transform key. One of the most powerful assets the skin definition language has to offer, this key permits mapping one color range to another (the correct notation for each range is Hue, Saturation, Value). Thus, source and destination range would have to be combined into one comma-separated list like this: Range1_Hue_StartRange1_Sat_Start , Range1_Val_StartRange1_Hue_EndRange1_Sat_End , Range1_Val_EndRange2_Hue_StartRange2_Sat_Start , Range2_Val_StartRange2_Hue_EndRange2_Sat_End , Range2_Val_End.

So, adding

transform1=15,0,0,40,255,255,100,0,0,120,230,210

to the parameters above would transform the color from orange to green, while also reducing saturation and brightness.

The history method

For displaying incoming connection speed (rx_speed) as a bar graph, we’ll need another animation. Since it contains a 26-frame animation, the rx_bar.tga(unzip) image from the cFosSpeed “Liquid Crystal” skin lends itself particularly well to this.
Keep in mind though that the parameter here may change very rapidly, which could cause the animation to behave slightly erratically. So, we’ll have to smooth things out a bit. This can be accomplished with the history method. Not only does it offer a number of ways for displaying the progression of a value (consult our skin definition reference for a more detailed description), but it can also be used to calculate and display the arithmetic mean of the values a parameter assumes over any given time period.

[disp3]

value=rx_speed

method=history updatetime=240

historysize=1

hdisp1=rx_speed_disp

You may have noticed there is no bitmap but a hdisp1 entry instead. This is because the history method can handle multiple display sections for rendering value progression. These are defined as hdisp1,…,hdispN and can be used to create effects like the scrolling bar graphs of the moving fish-shaped packets of the cFosSpeed “Default” skin. For this bar graph, however, only one such section is needed.  It should be given its own name though (to distinguish it from regular disp sections). Note that there is no need to enter a value here, because the value in the history section will be used for this section as well.

[rx_speed_disp]

method=animation

rect=54,41,108,59

bitmap=rx_bar.tga

min=0

max=100

frames=26

The min and max values define the range of the rx_speed parameter, which is best thought of as the percentage of available bandwidth.

Again, adding a similar display for the speed (tx_speed) of outgoing connections can be done simply by copying the previous sections, changing disp name, value and rect entries, and applying the same color transformation as for the tx_packet.

[disp4]

value=tx_speed

method=history

updatetime=240

historysize=1

hdisp1=tx_speed_disp

 

[tx_speed_disp]

method=animation

rect=54,58,108,76

bitmap=rx_bar.tga

min=0

max=100

frames=26

transform1=15,0,0,40,255,255,100,0,0,120,230,210

The text method

As great as a spiffy graphical display is, it often makes sense to have some more specific information displayed about a parameter’s current value as well. This is where the text method comes in handy (using the font definition we drew up earlier). Let’s say, for instance, we want to have incoming CPS shown as a numeric value. Then, we would have to add the following section:

[disp5]

value=rx_cps

method=text

font=font1

rect=50,32,80,40

style=d

flags=r

digits=6

decimals=1

unitchar=?

transform1=60,0,0,60,255,255,33,0,0,33,220,255

transform2=0,0,0,10,255,255,225,190,140,226,191,141

What this does is display the rx_cps parameter of cFosSpeed, which keeps track of the current CPS reception rate. By setting method to text and font to font1, we make sure the disp section uses the font we’ve already defined in step two.
The style is set to “d” (=decimal) with one digit after the comma. Setting the “r” flag will have the text right-aligned. Numeric value and measuring unit may take up to 6 digits. Seeing then how our font definition clearly specifies each digit to have a width of 5 and a height of 8 pixels, this would result in a rect of 30×8 pixels to be placed above the bar defined in [disp3].

Having the unitchar point to a “blank” character bitmap will prevent displayed numbers from shifting to the right when there is no measuring unit available. This happens when transfer rates fall outside available (T)era, (G)iga, (M)ega or (K)ilo byte ranges (e.g., when showing bytes only).

While transform1 shifts the color of the text from yellow to orange, transform2 decreases the intensity of the drop shadow, which is also part of the font bitmap.

For outgoing CPS, let’s now add the following:

[disp6]

value=tx_cps

method=text

font=font1

rect=50,77,80,85

style=d

flags=r

digits=6

decimals=1

unitchar=?

transform1=60,0,0,60,255,255,100,0,0,100,200,220

transform2=0,0,0,10,255,255,225,190,120,226,191,121

It should be obvious by now that this is basically the same as above – just with other rect coordinates. What’s also different here is that the transform1 key changes the color to green, while transform2 creates a slightly darker shadow.

The slider method

What we are going to do now is add a little LED-like display emitting a brief flash when changing states. Let’s just go with the led_green.bmp .

[disp7]

value=latency

method=slider

rect=111,50,117,56

bitmap=led_green.bmp

scale=2

stepsize=1

frames=3

min=0

max=2

updatetime=200

transform1=170,0,0,205,255,255,224,0,0,225,255,150

transform2=0,0,0,10,255,255,225,190,140,226,191,141

This section displays the value of the latency parameter (see our skin definition reference page), which can either be 0 (low latency is off) or 1 (low latency is on). With scale set to 2, the original parameter is projected onto a range from 0 to 2. In combination with stepsizeframesmin and max, this will have the animation run through all of its three frames each time the original value changes from 0 to 1. Animation speed is controlled by the value entered for updatetime, which determines the time each frame is shown in milliseconds.

Color transformations are used here to correct some minor glitches in the original bitmap’s shadow colors.

The activearea method

An activearea acts as a switch that can be put to a number of uses (see the skin definition reference page). It can, for instance, be used to start a program, open a URL, or toggle other disp sections’ visibility. And this is exactly what we’re going for here.

Let’s use the switch.tga(unzip) from the cFosSpeed “Default” skin, as it comes with “inactive”, “clicked” and “mouseover” states already in place.

[disp8]

method=activearea

bitmap=switch.tga

rect=110,58,119,65

action=toggle

target=disp7

blend_time=250

To have this section toggle the visibility of another, we first need to set action to “toggle” and target to the name of the section we want to control. Having the activearea fade in and out, as the mouse cursor enters or leaves it, can be done simply by assigning a value to blend_time (in milliseconds).

The motion method

motion is an animation that is being played for as long as the assigned value stays within a certain range. Let’s use tcp3.tga from the cFosSpeed “Liquid Crystal” skin for displaying active TCP connections.

[disp9]

value=tcp_cnt

method=motion

bitmap=tcp3.tga

rect=30,13,46,30

min=1

idleframe=1

transform1=225,0,0,230,255,255,10,0,0,15,255,255

What this does is use the tcp_cnt parameter of cFosSpeed, which tracks the number of current TCP connections, while setting the min value to “1.” In other words, it will become active whenever one or more TCP connections are open.

The bitmap contains two frames. The first is completely transparent (i.e., filled with transparentcolor). This frame serves as the idleframe, meaning it will be displayed when the tcp_cnt is “0” and thus falls outside the range between min and max. Note that for what we’re trying to accomplish in this step, we can skip defining max altogether, because there is really no need to specify an upper limit here.
By contrast, the second frame is the image that will be shown if the tcp_cnt is “1” or more.
To make sure the motion stands out nicely from the background, we use transform1 to change its color from blue to red. And for providing precise numeric information, we also add a small text section displaying the number of active TCP connections.

[disp10]

value=tcp_cnt

method=text

font=font1

rect=46,21,61,29

style=n

digits=3

flags=br

transform1=50,0,0,70,255,255,50,0,0,70,230,220

transform2=0,0,0,10,255,255,225,190,140,226,191,141

Now, let’s do something a little more ambitious by adding the following motion:

[disp11]

value=ping_time

method=motion

bitmap=connect.bmp

rect=35,87,48,99

min=1

idleframe=1

updatetime=120

pause=2000

transform1=205,0,0,212,255,255,225,0,0,227,255,220

transform2=0,0,0,200,255,255,0,0,0,200,200,200

This one (connect.bmp ) contains seven rather than just two frames. Again, the first is a fully transparent idleframe.
The other frames compose an animation that is being played continuously while ping_time stays above zero. To control animation speed, updatetime is set to 120 ms. What we’ve also done is add a pause of 2,000 ms after each time the animation has run through (i.e., after its last frame finished playing).
Transformations are again used here to handle some problems with the original bitmap’s shadow colors.
For conveying accurate numeric values, we’ll again need a brief text section like the one below:

[disp12]

value=ping_time

method=text

font=font1

rect=50,87,65,95

style=n

digits=3

flags=br

transform1=50,0,0,70,255,255,200,0,0,201,64,255

transform2=0,0,0,10,255,255,225,190,120,226,191,121

Note that both text sections contain a “b” flag. What this does is make those sections empty (and thus invisible) while their value is zero.

The fader method

Now that the display is complete, there’s only one thing left for us to do – see to it that elements still remaining visible even when the status window is not in the “open” state (cFosSpeed: the network port is closed) disappear from the display. This is where we can employ the fader method provided by cFosSpeed:

[disp13]

value=open

method=fader

min=0

max=1

min_alpha=0

max_alpha=255

blend_time=1000

target=disp1,disp2,disp5,disp6,disp7

This fader changes the alpha value of all sections listed under target depending on the state of the “open” parameter – with min and max delimiting the range that activates the fader.
Initial and final alpha values for the fading process are set by min_alpha and max_alpha, respectively, while blend_time determines the duration of the fading process.

So, we now have a totally empty background when the program starts and no network connections are active.

This is the end of our short tutorial on how to create a cFosSpeed skin. Still, there are lots of additional options available for each method to further adapt your skin to your own individual needs and aesthetic preferences. Much more information on this is available on the skin definition reference page.

Have fun designing your own skins! 🙂

Tech Guide

Filter Expressions

Overview

cFosSpeed supports a number of different traffic classes set to different priorities. In effect, this means packets in classes with a higher priority are sent out prior to packets from classes with lower priority – even if low-priority packets arrived before high-priority packets in their respective class queues.

That way, cFosSpeed can prioritize specific packets permitting them to take the “fast lane” and zip past “normal” traffic. This priority system can be modified and expanded by the user with what we call “filter expressions.” These can be used to filter out packets and assign them to a desired traffic class.

Filter expressions consist of a series of “filter rules” that all need to be true for the entire expression to be true. If the entire expression is true, the packet is put into the corresponding class queue.

A list of filter expressions does allow you to filter for several different packets. This list is checked from top to bottom; the first filter expression found to be true (i.e., consisting only of true filter rules) is employed, ending the list traversal.

Packets not matching any particular filter expression are automatically assigned to the “default” class, which is a built-in class with priority 0.

A silly and simple example

A sample list of filter expressions is given below (the output looks like the “spd filter” output described later in this overview). Note that this sample is provided for illustration purposes only; it has no other use.

     0  -p icmp -c fast
     1  -tcp-sport 1234 -tcp-dport 5678 -c special
    

This would mean that if a packet is of IP protocol “icmp”, it would be assigned to “fast” class, ending traversal of the list.

If a packet does not match the first expression, then it will be checked for the second expression. In this case, the latter consists of two rules, which must both be true for the entire expression to be true (a boolean AND).

The “-tcp-sport” entry checks the TCP source port number. Accordingly, for this rule to be true, the packet must have IP protocol TCP and the TCP source port must be 1234.

Then, there is a second rule, which is true if (again) it’s a TCP packet and the TCP destination port is 5678.

Thus, all TCP traffic transmitted from port 1234 to port 5678 would be assigned to “special” class (which doesn’t exist by default).

If neither of the two rules apply to the packet (which should happen fairly often), it is put into “default” class instead.

Filter rules reference

Now let’s go into more detail.

Each rule can be negated by preceding it with a ‘!’ (exclamation mark) or by putting the ‘!’ in between the option name and value (if such a value exists). So it has to be “!-f”, but you could also use “!-p icmp” or “-p !icmp”.

Underlying most rules are one or more implicit assumptions; for instance, -tcp-length assumes it’s a TCP packet after all. These assumptions are listed with each rule. If a packet does not match the assumptions, the rule is false. Note that a rule with a non-matching implicit assumtion is false even if it is negated (by using ‘!’).

That is, a !-tcp-length 0 rule matches TCP packets of any length other than zero, but does not match any non-TCP packet.

If you need to specify a number, you can enter the number either in decimal (just type it in as is) or hexadecimal (prefix it with “0x”) format. For example, 16 and 0x10 both denote decimal number 16.

For some rules, a range of values can be entered. Allowable value ranges are:

num
like “99”.
A single number that must be matched exactly. As usual, the number can be entered either in decimal or hex format.
from:to
like “42:99”.
Range of integers starting and including “from”, while also including and ending with “to”. If “from” is higher than “to”, the two values are exchanged.
:to
like “:99”.
Short for “0:to”; in this example, short for “0:99”.
from:
like “42:”.
Short for “from:0xffffffff”.

What’s more, a list of ranges can be entered for some rules. That is simply a concatenation of several ranges, separated by commas (,). For example, “1:2,3:4” is just another way of writing “1:4”. There must be no space around the comma.

Basic rules

-tx

Transmit. True if the packet is sent. There is no implied assuption with this rule.

We maintain separate lists of filters for both transmit and receive. By using this rule you specify that a filter is only to be put on the transmit list. Since this can’t change in session, the rule is not re-evaluated each time a packet comes in; we call it a “cheap rule”.

-rx

Receive. True if the packet is received. There is no implied assuption with this rule.

Comments of “-tx” rule apply analogously.

-wan
Packet is transmitted on a WAN port (i.e., on NDISWANIP device) in contrast to LAN port. Is always true for cFos. There is no implied assuption with this rule. This rule is “cheap”, too.
-bridged
Packet is transmitted on a LAN port and your modem works as a bridge, not as a router.
That is, the IP subnet is not your own, but your provider’s. There is no implied assuption with this rule. This rule is “cheap” only on a WAN port, since this is always considered bridged.
-eth

The port operates with Ethernet framing.

This is always true for cFosSpeed and always false for cFos. This rule is “cheap” and has no implied assumption.

-ethp protocols

Ethernet protocol number.

This rule has the implied assumption that Ethernet framing is used, i.e., it is always false for cFos.

You can specify a list of ranges for “protocols”. Protocol numbers may be written in decimal or hex.

Some protocol numbers are:

0x800
IP, Internet Protocol version 4
0x806
ARP, Address Resolution Protocol
0x86dd
IP, Internet Protocol version 6

For a more extensive list of protocol numbers see www.iana.org/assignments/ethernet-numbers.

-ppp

The port operates with PPP framing.

This is always true for cFos and always false for cFosSpeed. This rule is “cheap” and has no implied assumption.

Details on PPP can be found in RFC 1661 (The Point-to-Point Protocol), www.ietf.org/rfc/rfc1661.txt.

-pppp protocols

PPP protocol number.

This rule has the implied assumption that PPP framing is used, i.e., it is always false for cFosSpeed.

You can specify a list of ranges for “protocols”. Protocol numbers may be written in decimal or hex.

Some protocol numbers are:

0x21
IP, Internet Protocol version 4
0x2d
Van Jacobson Compressed TCP/IP
0x2f
Van Jacobson Uncompressed TCP/IP
0x57
IPv6, Internet Protocol version 6
0x8021
Internet Protocol Control Protocol
0x8057
IPv6 Control Protocol
0xc021
Link Control Protocol

For a bigger list of protocol numbers see www.iana.org/assignments/ppp-numbers.

-ipv4
IP version 4. True if the packet is IPv4 and basically well-formed.
-ipv6
IP version 6. True if the packet is IPv6 and basically well-formed.
-mp-header

The packet has a Multilink-PPP header.

This rule has the implied assumption that PPP framing is used, i.e., it is always false for cFosSpeed.

Details on PPP Multilink can be found in RFC 1990 (The PPP Multilink Protocol), www.ietf.org/rfc/rfc1990.txt.

-mp-begin

The packet has the (B)eginning fragment bit set in the Multilink header.

This rule has the implied assumption that the packet has a Multilink PPP header, i.e., the rule is always false for cFosSpeed.

-mp-end

The packet has the (E)nding fragment bit set in the Multilink header.

This rule has the implied assumption that the packet has a Multilink PPP header, i.e., the rule is always false for cFosSpeed.

-mp-frag

The packet has in its Multilink header either no (B)eginning fragment bit set, or (E)nding fragment bit set, or both.

This rule has the implied assumption that the packet has a Multilink PPP header, i.e., the rule is always false for cFosSpeed.

-rand prob chance

Pseudo-random number.

The rule returns true if a pseudo-random number between 1 and “prob” (borders included) is <= “chance”. “prob” must be between 1 and 2^32-1, “chance” can even be 0.

The pseudo-random numbers are generated by a comparatively poor generator (LCM style). It will still look “random” enough for packet-loss tests.

Example: This rule will be true in 5% of all cases (statistically):
-rand 100 5

IP header filter rules

Details on the IP v4 header can be found in RFC 791 (Internet Protocol), www.ietf.org/rfc/rfc0791.txt and details on the IPv6 header can be found in RFC 2460 (Internet Protocol, Version 6) www.ietf.org/rfc/rfc2460.txt.

IP header filter rules apply only to IP packets with a correct header and checksum (IPv4 only, IPv6 has no header checksum). These rules work on any IP packet, fragment or not.

-s address-list

Source IP address.

There are several ways to specify “address-list”:

adr
like 1.2.3.4
or 2001:0db8:0000:0000:0000:ff00:0042:8329
or [2001:db8::ff00:42:8329]
This rule matches exactly one address with no wildcarding possible.
adr/netmask
like 1.2.3.0/255.255.255.0
This can be used to specify an “IP subnet”. The match works as follows: If the address that is to be tested AND the “netmask” are equal to “adr”, then there is a match, otherwise not. This works just like IP routing rules.
adr/bits
like 1.2.3.0/24
or 2001:0db8::/64
This is an alternative form of the adr/netmask approach above. Here, “bits” refer to the number of “1” bits, starting at the left of a 32-bit (IPv4) resp. 128-bit (IPv6) number. Thus, for IPv4 “/24” is 24 1-bits and eight 0-bits. In the regular format separated by dots, this would come out as 255.255.255.0 (since 255 is 11111111 in binary code).
adr,adr…
like 1.2.3.0/24,4.5.6.7,8.9.0.0/255.255.0.0
or 2001:0db8::/64,[fe80::1],8.9.0.0/16
You can make a list of any of the above used notations and mix IPv4 and IPv6. Don’t leave any spaces and separate the items with a comma (‘,’).
-d address-list
Destination IP address, where “address-list” has the same format as explained for the -s filter.
-l address-list
Local IP address, where “address-list” has the same format as explained for the -s filter.
The local address is the source address of a sent packet and the destination address of a received packet.
-r address-list
Remote IP address, where “address-list” has the same format as explained for the -s filter.
The remote address is the destination address of a sent packet and the source address of a received packet.
-p protocol

IP protocol, where “protocol” is either a decimal or hex number or one of the following hard-coded names:

ICMP
protocol number 1
HOPOPT
protocol number 0
IGMP
protocol number 2
TCP
protocol number 6
UDP
protocol number 17
IPV6
protocol number 41
IPV6-ROUTE
protocol number 43
IPV6-FRAG
protocol number 44
GRE
protocol number 47
ESP
protocol number 50
AH
protocol number 51
ICMPv6
protocol number 58
IPV6-NONXT
protocol number 59
IPV6-OPTS
protocol number 60
MOBILITY
protocol number 135
-f
IP datagram is not the first fragment (that is, the IP header field “fragmentation offset” is not equal to 0).
-mf
“More Fragments” bit in IP header set.
-fragment
Datagram is not a complete IP frame, but a fragment. That is, either “fragmentation offset” is not 0 or the “More Fragments” bit is set.
-df
“Don’t Fragment” bit in IP header set (IPv4 only, there is no such bit under IPv6).
-tos type-of-service

Type of service.

“type-of-service” can be any decimal or hex number between 0 and 255. Note that TOS is neither used nor supported much any more. For details, see RFC 1349 (Type of Service, www.ietf.org/rfc/rfc1349.txt). See -dscp option below for a modern way of interpreting the TOS field. www.iana.org/assignments/ip-parameters lists common TOS values. Under IPv6 this rule refers to the “traffic class” field of the header.

-dscp dscp-value

Differentialed Services Coding Point, an alternate way of interpreting the TOS field.

“dscp-value” can be a value between 0 and 63 or a range of such values. For details, see RFC 2474 (Differentiated Services, www.ietf.org/rfc/rfc2474.txt). See -tos option above for the traditional (now almost extinct) way of interpreting the TOS field.

-ttl ttl-value

IP header field “Time to live”.

“ttl-value” can be a range of numbers between 0 and 255. See “range” below on how to specify a range.

-length value

Length of the IP datagram or fragment, including the header.

You can specify a range for “value”, which is the length of the packet about to be send. With a fragment, it’s not the length of the reassembled datagram but the length of the individual fragment.

-data-length value

Length of the data portion of an IP datagram, which is the length of the (reassembled) datagram minus the IP header length.

For IPv6, this does not include the HOPOPT, ROUTE, DESTOPTS, MOBILITY and FRAG extension headers. They are not considered part of the “data”.
You can also specify a range for “value”.

-ihl value
Length of the IP v4 header, with values anywhere from 20 to 60 (IPv4 only). Again, you can specify a range for “value”.
-s-mynet
The source address is in your subnet.
-d-mynet
The destination address is in your subnet.
-l-mynet
The local address is in your subnet.
-r-mynet
The remote address is in your subnet.
-s-bcast

The source address is the subnet directed broadcast address (IPv4 only, there is no such concept under IPv6). I.e., if your subnet is 192.168.1.0 and has subnet mask 255.255.255.0, this rule will match on source address 192.168.1.255.

Note that this filter will not match the limited broadcast address 255.255.255.255.

-d-bcast
The destination address is the subnet directed broadcast address. See -s-bcast for more info.
-l-bcast
The local address is the subnet directed broadcast address. See -s-bcast for more info.
-r-bcast
The remote address is the subnet directed broadcast address. See -s-bcast for more info.
-s-iplist list
The source address is listed in the iplist named ‘list’. For more on iplist’s see “IP-range lists”.
-d-iplist list
The destination address is listed in the iplist named ‘list’. For more on iplist’s see “IP-range lists”.
-l-iplist list
The local address is listed in the iplist named ‘list’. For more on iplist’s see “IP-range lists”.
-r-iplist list
The remote address is listed in the iplist named ‘list’. For more on iplist’s see “IP-range lists”.
-ip-opt list
Packet has at least one of the listed IP-options in its header (IPv4 only). The options can be set in decimal or hex and are separated with a comma, like “131,137”. A list of IP-options is here: www.iana.org/assignments/ip-parameters.

UDP header filter rules

Details on the UDP header can be found in RFC 768 (User Datagram Protocol, www.ietf.org/rfc/rfc0768.txt). Note that each UDP header is prefixed by an IP (v4 or v6) header, since UDP needs IP for transmission.

UDP header filter rules apply only to packets with a correct IP header, protocol set to UDP, and correct UDP header checksum. In addition, they must either be unfragmented or the last fragment that completes the reassembled datagram.

-udp-sport ports

UDP source-port number, or a range of several such ports, or a list of ranges (see above on how to specify them).

A UDP connection is identified by the following four values: source IP address, source UDP port number, destination IP address, and destination UDP port number. So, whenever you send a UDP packet from A to B, the packet always contains those four values.

Since these filter rules are only used for outgoing data packets, “source port” always refers to the port number of the connection on your (local) side.

-udp-dport ports

UDP destination-port number, or a range of several such ports, or a list of ranges (see above on how to specify them).

See -udp-sport for more on port numbers.

Since these filter rules are only used for outgoing data packets, “destination port” always refers to the port number of the connection on the remote side.

-udp-lport ports

Local UDP port number, or a range of several such ports, or a list of ranges (see above on how to specify them).

See -udp-sport for more on port numbers.

-udp-lport ports

Remote UDP port number, or a range of several such ports, or a list of ranges (see above on how to specify them).

See -udp-sport for more on port numbers.

-udp-length value

Length of the UDP data portion including the UDP header as mentioned in the UDP header.

Since the UDP header is as well counted in “value”, even the smallest UDP packet possible would have a length of 8. Note that this is different from the concept of -tcp-length (see below).

-udp-prog programnames

Name of the program that sent the datagram.

Note: This only works starting with Windows XP and it only works if the program is running on the same machine as cFosSpeed is (that is, it does not work if cFosSpeed is used on a router and the program is running on a client).

“programnames” can be:

program name
Must be a full file name with extension, but no path (like ftp.exe). Case does not matter. If the program name includes a space, put it in quotes (like “the best.exe”).
@section name
The name of a section in settings.ini that contains names of programs (like @lowprogs with a [lowprogs] section somewhere is settings.ini).
@file/section name
The name of a section in “file”. “file” can be a fully specified pathname or “user.ini” to specify user.ini in cFosSpeed directory. The handling is otherwise like that of “@section” above.
list
A comma delimited form of the above. There must be no spaces before or after the commas. Example: ftp.exe,telnet.exe,”the best.exe”,@lowprogs

See “Managing program names” later on how to manage keys in sections.

TCP header filter rules

Details on the TCP header can be found in RFC 793 (Transmission Control Protocol, www.ietf.org/rfc/rfc0793.txt). Note that each TCP header is prefixed by an IP (v4 or v6) header, since TCP needs IP for transmission.

TCP header filter rules apply only to packets with a correct IP header, and protocol set to TCP. They must be either unfragmented or the last fragment that completes the reassembled datagram.

-tcp-sport ports

TCP source port number, or a range of them, or a list of ranges (see above on how to specify them).

A TCP connection is identified by the following four values: source IP address, source TCP port number, destination IP address, and destination TCP port number. So, whenever you send a TCP packet from A to B, the packet always contains those four values.

Since these filter rules are only used for outgoing data packets, “source port” always refers to the port number of the connection on your (local) side.

-tcp-dport ports

TCP destination port number, or a range of several such ports, or a list of ranges (see above on how to specify them).

See -tcp-sport for more on port numbers.

Since these filter rules are only used for outgoing data packets, “destination port” always refers to the port number of the connection on the remote side.

-tcp-lport ports

Local TCP port number, or a range of several such ports, or a list of ranges (see above on how to specify them).

See -tcp-sport for more on port numbers.

-tcp-rport ports

Remote TCP port number, or a range of several such ports, or a list of ranges (see above on how to specify them).

See -tcp-sport for more on port numbers.

-tcp-length value

Length of the TCP data portion, also know as the “TCP segment.”

In contrast to the concept of -udp-length or -icmp-length, this does not include TCP header length, meaning that the smallest TCP packet possible has a -tcp-length of 0.

-thl value
TCP header length, with values anywhere from 20 to 60. You can also specify a range for “value”.
-tcp-flags mask result

Check for the presence of certain flags in the TCP header.

The value of the TCP flags in the header are ANDed with “mask” and the packet is matched if that equals “result”. Both “mask” and “result” must be specified as a list of flags. Recognizable flags are: FIN, SYN, RST, PSH, ACK, and URG. ALL stands for all six of them and NONE for none.

Examples:
-tcp-flags SYN SYN
means: if the SYN bit is set (regardless of the other bits), then the rule matches.
-tcp-flags ALL SYN
means: if only the SYN bit is set and all others are zero, then the rule is a match.
-tcp-flags SYN,ACK ACK
means: if SYN is not set and ACK is set, we have a match.
-tcp-flags URG,PSH NONE
means: if neither URG nor PSH are set, it’s a match.
-syn
Synonymous for “-tcp-flags SYN,RST,ACK SYN”, meaning it only matches the first packet in the TCP three-way-handshake.
-tcp-prog programnames

Name of the program that sent the segment.

Note: This only works starting with Windows XP and it only works if the program is running on the same machine as cFosSpeed is (that is, it does not work if cFosSpeed is used on a router and the program is running on a client).

To learn how to specify “programnames” see -udp-prog rule.

-tcp-connections range
Number of total TCP connections is in “range”. Half-open connections are counted as well. The number of connections doesn’t need to exactly match either side’s count, since cFosSpeed uses its own TCP connection tracking.
-tcp-opt list
Packet has at least one of the listed options in its TCP header. The comments of “-ip-opt” apply. A list of TCP-options is here: www.iana.org/assignments/tcp-parameters.
-tcp-session value

Packet is part of a TCP connection that is in state “value”. Possible states are:

0
A TCB has been created
1
At least one side has sent a SYN
2
Both sides have sent SYNs
3
Both sides have sent SYNs that have been ACKed: connection established
4
At least one side has sent a FIN
5
Both sides have sent FINs
6
Both sides have sent FINs that have been ACKed: connection closed
7
At least one side has sent a RST
8
At least one side has sent a FIN that has been ACKed: connection half-closed
-tcp-session-dadr value

There is a TCP connection in state “value” between the same source and destination address as this packet.

Possible states are the same as listed under “-tcp-session”.

This rule only implies that the packet is a valid IP packet, but not necessarily TCP.

-tcp-initiated direction

Check which side initiated the TCP connection.

“tx” means that the first SYN was sent from local, “rx” that the first SYN was received from the net.

-tcp-seq range

TCP sequence number (subtracted by the initial sequence number) on the particular TCP connection.

TCP keeps your sent data in sequence. So even if packets get lost, corrupted or out of order on the way from source to destination host, TCP will get it right for you (yeah!). To achieve this, TCP packets have a sequence number, so TCP knows the correct order of them. This sequence number is increased with every byte that is transmitted on the connection.

The filter rule lets you use the sequence number as a means of how many bytes have been transmitted on the connection.

“range” can be a range of numbers.

I.e. “-tcp-seq :500” will only match TCP packets that cover the first 501 bytes in their connection (0 to 500, inclusive).

-tcp-cnt range

TCP packet counter for this particular connection.

This counter is increased by one with each packet sent.

UDP and TCP combo rules

Sometimes you have to specify the same rules for UDP and TCP ports. This can be done by the following combo rules.

The assumptions for UDP and TCP packets each still apply.

-sport ports
If it’s a UDP packet, synonymous for “-udp-sport ports”; if it’s a TCP packet, synonymous for “-tcp-sport ports”. Otherwise, there is no match.
-dport ports
If it’s a UDP packet, synonymous for “-udp-dport ports”; if it’s a TCP packet, synonymous for “-tcp-dport ports”. Otherwise, there is no match.
-lport ports
If it’s a UDP packet, synonymous for “-udp-lport ports”; if it’s a TCP packet, synonymous for “-tcp-lport ports”. Otherwise, there is no match.
-rport ports
If it’s a UDP packet, synonymous for “-udp-rport ports”; if it’s a TCP packet, synonymous for “-tcp-rport ports”. Otherwise, there is no match.
-prog programnames

Name of the program that sent the segment.

Note: This only works starting with Windows XP AND it only works if the program is running on the same machine as cFosSpeed is (that is, it does not work if cFosSpeed is used on a router and the program is running on a client).

To learn how to specify “programnames” see -udp-prog rule.

-l7-prot protnames

Check if packet belongs to a TCP connection resp. UDP pseudo-connection with a certain layer-7 protocol. A list of supported layer-7 protocols is in settings.ini, sections highprots, normalprots, lowprots and lowestprots.

For certain protocols (like IRC, Telnet, file sharing, etc.) there is a further check built in: if the rule is about to match and the class the packet will be queued into is higher than default, then the connection must not be in “bulk mode”. cFosSpeed uses statistics to estimate if the connection is is bulk mode, i.e. if data is being constantly sent in large amounts. If the connection is assumed to be in bulk mode, then the -l7-prot rule does not match. This is to prevent protocols that can be used for both bulk and interactive transfer to clog the high classes if the protocol is in bulk mode. This auto-bulk-detection can be switched off by typing the command “spd gset bulk_detect 0”.

This rule has the implied assumption that layer-7 detection is on, i.e. that global variable l7_detect is 1.

ICMP filter rules

Details on the ICMP for IPv4 header can be found in RFC 792 (Internet Control Message Protocol, www.ietf.org/rfc/rfc0792.txt) and details on the ICMPv6 header can be found in RFC 4443 (Internet Control Message Protocol (ICMPv6) for IPv6, www.ietf.org/rfc/rfc4443.txt). Note that each ICMP header is prefixed by an IP (v4 or v6) header, since ICMP needs IP for transmission.

ICMP header filter rules apply only to packets with a correct IP header, protocol set to ICMP or ICMPv6, and correct ICMP checksum. Such packets must also be either unfragmented or the last fragment that completes the unfragmented datagram.

-icmp-type type – or – -icmp-type type/code

Check for ICMP v4 type and code (if specified).

Both “type” and “code” can be any number between 0 and 255. If you specify no “/” and no code, it will match only on the “type” value. Otherwise, the “code” value must match as well.

You can specify a list of type or type/code as well. Use commas to separate the entries in the list.

-icmpv6-type type – or – -icmpv6-type type/code

Check for ICMPv6 type and code (if specified).

The syntax and semantics for this rule are like -icmp-type.

-icmp-length value

Length of the ICMP data portion, including the ICMP header. This is the IP v4 or v6 datagram length minus the IP header length.

Again, “value” can also be a range of values.

VLAN rules

Details on VLAN can be found in IEEE 802.1Q (e.g. on Wikipedia).

The VLAN rules (except -is-vlan) only apply if the packet has a VLAN header at all.

-is-vlan
Matches if a packet has a VLAN header.
-vlan-prio range
VLAN packets have a 3 bit priority field (i.e. the priority is 0-7). If this VLAN priority is in “range”, this rules matches.
-vlan-id range
VLAN packets also have a 12 bit ID field (i.e. 0-0xfff or 0-4095). If the ID is in “range”, this rule matches.

Standard rules

cFosSpeed ships with five traffic classes, called “highest”, “higher”, “high”, “low” and “lowest”. To assign traffic to these classes, we have combined sensible rules into mega-rules.

If you remove the standard rules, you will most likely disable or damage the traffic-shaping operation of cFosSpeed. So, it’s an excellent idea to leave them in place and just add your own rules below these rules!

-highest

This feeds packets to the “highest” class.

All cFosSpeed pings are matched by this rule.

-higher

This feeds packets to the “higher” class.

All TCP ACKs are matched by this rule. ACK is an empty TCP packet with no RST or FIN set.

-high

This feeds packets to the “high” class.

This rule matched all (by default) prioritized traffic: ICMP, DNS and NTP (on UPD), FTP command, POP, IMAP, Telnet, SSH, HTTP, HTTPS (on TCP).

-low
This feeds packets to the “low” class.

Traffic Shaping and other Internet tuning methods

Broadband users in particular want to get the absolute max out of their connection. But even narrowband users may benefit from Internet tuning on their low-speed connections.

What tuning methods are there?

Registry-Tweaks

An entire line of so-called “registry-tweak” programs has sprung up based on the assumption that changing various Internet protocol parameters may boost data-transfer speed. In essence, what such programs do is simply change the values of certain parameters rather than have the user edit the corresponding registry entries manually. Typically, the following parameters are thus adjusted:

  • MTU/MSS:
    Transmission of each packet entails a certain packet overhead, which is always the same – regardless of what size the transmitted packet may be. Thus, sending out packets that are as large as possible would seem to be one probable way to cut back on overall overhead. For instance, a TCP/IP packet sent via DSL/PPPoE has an overhead of 48 bytes (i.e., almost 10 percent for a 500-byte packet). If no value for Maximum Transfer/Transmission Unit (MTU) is specified in the registry, TCP will determine packet size itself through a process called “Path MTU Discovery.” It will do so in such a manner that packets sent will always be of the largest size that can still be handled by all intervening transmission nodes. For DSL/PPPoE, maximum MTU is 1,492 bytes, which corresponds to an overhead of approximately 3 percent. This value really doesn’t need to be set, since Windows already maximizes it through Path MTU Discovery. MSS usually equals MTU-40.
  • TcpWindowSize:
    This parameter controls the maximum number of bytes the remote TCP may send before an acknowledgment must be received. Lacking such acknowledgment, the sender is forced to wait, thus resulting in dramatic drops in transfer rate. Unless the user specifies otherwise, Windows determines the value for this parameter based on packet size (12 * MSS). The greater the latency, the larger the TcpWindowSize needs to be to avoid having the sender wait. Thus, assuming a connection speed of 1,024 kbit/s and 150ms of ping time to server, TcpWindowSize must at least be 2,000 bytes. Should further delays occur, even that wouldn’t suffice anymore. This is why a lot of tuning programs tend to jack TcpWindowSize up inordinately. The problem is that while running an upload, the upload competes with acknowledgments for available bandwidth, meaning the transfer rate will plummet nevertheless. Furthermore, huge TcpWindowSize does also increase latency, which can quickly turn VoIP or online gaming into an exercise in frustration. For instance, at a TcpWindowSize of 64k or higher, latency will rise to more than 400ms, which is absolutely unacceptable for VoIP.
  • TTL:
    This value indicates how often any given packet may be passed on from node to node until it reaches its destination. Changing this value has no appreciable effect whatsoever on transfer speed. Can you spell “placebo software?”
Traffic Shaping

So, in a nutshell, some registry tweaks may sometimes yield greater speed (though often at the cost of significantly higher latency).

Traffic Shaping is then the next logical step in improving data-transfer speed without sacrificing performance elsewhere. It works by sorting data packets according to importance prior to sending them, thereby ensuring all time-critical data are being sent out first. TCP acknowledgments, for example, are highly prioritized so that they are always received in time, which means download data can be transmitted without interruption.

However, the more data are transmitted simultaneously, the more data congestion will likely occur. Therefore, effective Traffic Shaping should ensure not too much data are being sent simultaneously, as this also tends to affect ping times and VoIP speech quality. The more protocols Traffic Shaping can distinguish, the more responsively a system will perform while multiple applications are being run on it at the same time. For instance, Traffic Shaping can be used to accelerate surfing speed by having the corresponding DNS requests prioritized. FTP command, Telnet, SSH and similar protocols can also be prioritized in this fashion.

Since Traffic Shaping boosts transfer rates by reducing latency, it does yield higher speed irrespective of how much bandwidth may be available. This is especially valuable seeing how latency problems during simultaneous use of multiple Internet connections cannot be compensated for by additional bandwidth.

ACK filtering

During each download, acknowledgments take up about 5 percent of the available download bandwidth in upstream direction. The problem here is that upstream bandwidth is much lower than downstream bandwidth for ADSL and broadband cable. This also means there may not be enough upload bandwidth left to achieve full download speed, not to mention that it is always desirable to have some upstream bandwidth available for other uses. For this reason, ACK filtering reduces the size of acknowledgment packets as much as possible without decreasing download rates. In this manner, the bandwidth needed for handling acknowledgments can often be cut in half.

Data compression

It is always nice to be able to compress user and/or protocol data. For Web servers, so-called “GZIP compression” lends itself particularly well to this. With it, the text on Web pages can be compressed to about half the original size prior to transmission. Leading Web browsers like the Internet Explorer or Mozilla Firefox do support GZIP compression. The Web server is also smart enough to send uncompressed data instead when dealing with old browsers that do not support GZIP. Therefore, there is to our knowledge no drawback to using GZIP. Unfortunately, it can only be activated by a Web server’s administrator.

Modems and ISDN make use of V.42bis and Stac data compression, respectively. Both reduce the amount of text data transmitted between dial-in node and modem or ISDN board by roughly one half. Thus, these compression methods could conceivably double transfer speed in both direction for types of data (like text) that can be compressed well. But because image files account for most of the data servers must transmit for today’s Web sites, our experience has generally been that this kind of compression makes very little difference. The same is true if a server is sending data already compressed in GZIP format.

In contrast, VJ compression (also known as IP-header compression) does not minimize the size of user data but only that of protocol data. Assuming a standard narrowband packet size of 576 bytes, this can effectively cut TCP/IP header size from 40 to 3 bytes, resulting in a reduction of packet overhead from approximately 7 to 0.5 percent. While this is of great interest for low-speed modem and ISDN connections, it is very rarely if ever used for broadband connections. DSL and cable providers would much rather sell their clients more bandwidth.

Download accelerator

Many servers permit downloads at no more than a predefined maximum download rate. The idea behind most download accelerators is to circumvent this by downloading a file in several segments at the same time through multiple connections to the same server. This does indeed often lead to higher download rates.

Web accelerator

The ability to use cell phones for wireless (yet typically very slow) Internet access has dramatically increased the demand for having Web-page data compressed prior to transmission. Such precompression might also be useful for modem or ISDN connections. Providers of Web accelerator software maintain their own servers with broadband connections to the Internet. These are needed to first load the desired data, compress it, and then send it through the bottleneck of the modem, ISDN or radio-network connection.

But due to the large image files involved, the gain thus yielded by conventional compression methods can only be marginal at best. This is why more and more Web accelerators have begun to manipulate image data as well. To make some headway there, images are usually reduced in color depth and resolution. Given the small size of their displays, this poses little if any problem with respect to cell phones. But on desktop computers it may well result in a clearly discernible loss in quality for desktop applications.

Installation of the respective browser add-on is required for using the services of a Web accelerator – as is in most cases payment of a monthly fee or surcharge. Using web accelerators does yield little appreciable gain in speed on broadband connections. Countervailing this is a possible increase in latency, since the Web accelerator is interposed between server and client.

Faster Connection

Switching to a rate plan that gives you higher connection speed is still the safest way to improve bandwidth and thus achieve better data transmission rates. This as such won´t improve ping times though. And neither will it prevent downloads from slowing dramatically, even stalling altogether, when data is being uploaded at the same time. That’s why it is ideal to combine any bandwidth upgrade with Traffic Shaping technology.

Brief Comparison of Tuning Methods:

Tuning MethodsProsCons
Registry Tweakspotential gain in speed
may be available for free
high latency
Traffic Shapinghigher speed
lower ping times
ACK Filterhigher speed
Data compressiongain in speed
(mostly for texts)
Download-accelaratorpotential gain in speed
Web-accelaratorfaster surfing speedhigher latency, reduced quality
Faster Connectionfaster speed
 

cFosSpeed offers both – Traffic Shaping and ACK-filtering. In addition, it automatically optimizes MTU and TcpWindowSize!

Links

TCP/IP-Tuning
@ heiseNetze 
(german)

RWIN Expansion

Benefits of activating “Automatic RWIN expansion”

See how cFosSpeed improves Internet Explorer downloads

See how cFosSpeed improves Mozilla Firefox downloads

See how cFosSpeed improves Cygwin SCP downloads

YouTube playlist with submissions of award winners

See how cFosSpeed improves Cygwin SCP downloads

Technical background

TCP Auto-Tuning measures the RTT of connections at the beginning and if data is sent. For connections with only received data and no data to send, this measurement can become inaccurate, so the resulting RWIN remains too small. You can easily verify this behavior with a fast Internet connection and high latency, for example a 50Mbit/s connection from Europe to America or a mobile broadband connection.

Results of cFosSpeed RWIN-Expansion-Award 2012

A lot of users don’t get the maximum speed available for their Internet connection. In many cases the TCP Auto-Tuning of Windows 7/ Windows Vista cannot use the full download speed. In other cases the downloading programs are not written for today’s high speed connections. cFosSpeed’s RWIN expansion now accelerates these downloads by dynamically expanding the receive window size of the TCP connection to a value suitable for the current connection. This leads to unexpected speed improvements!
For example, we could double the download speed with Internet Explorer and nearly triple the speed of mobile UMTS downloads.

To demonstrate these dramatic speed improvements, we (with the help of our users) compiled a list of scenarios in which the new cFosSpeed RWIN Expansion achieves these huge speed improvements.

Technical Reference

This reference is divided into several sub-pages:

That’s it.

Have fun shaping your traffic!

Great Voice-over-IP (VoIP) speech quality

Not only is minimal latency absolutely essential for Voice-over-IP, it is the single most important factor in improving speech quality.

Traffic Shaping technology does keep ping times low and transfer rates consistently high at the same time.

RTP detection integrated in cFos and cFosSpeed permits prioritizing VoIP and other live streams (like conference channels).

Its prioritization can be adjusted under Protocol or Program Settings. Should a particular live stream not be recognized, you can prioritize the respective program by name.

Please note that some programs (like VoIPBuster, IxChariot) only use RTP but not the corresponding RTCP connection. For these, you should deactivate strict RTP verification in the settings.

Dropouts During Download:

VoIP connections usually suffer from dropouts when downloads are simultaneously run at full speed. Thanks to their integrated RX shaping, cFos and cFosSpeed help avoid this problem by keeping ping times consistently low.

Please note that some programs (like VoIPBuster, IxChariot) only use RTP but not the corresponding RTCP connection. For these, you should deactivate strict RTP verification in the settings.

Skype:

Skype employs a proprietary encrypted protocol that cannot be detected by a Layer-7 analysis without considerable effort. To allow users to prioritize Skype nevertheless, we have entered it in our program list.

 

VoIP via Router Prioritization:

Some routers (like the Fritz!Box) are equipped with phone jacks. If a jack is used, all VoIP data will be transmitted directly to the Internet bypassing cFosSpeed entirely. Such routers may restrict the available bandwidth when a VoIP call is made causing a negative impact on Traffic Shaping performance. Therefore we recommend making VoIP calls from your computer, not the router, to allow cFosSpeed to detect and prioritize them.

Optimizing Connection Settings:

You can specify exactly what transfer medium you use under Connection Settings. The more information about a connection is available to cFos or cFosSpeed, the better ping times will be. Default is “Adaptive”. But if you were for instance using a DSL connection, you should select the appropriate DSL standard or protocol as your medium.

Favor Ping:

VoIP Software in use with cFosSpeed

  • 1&1 SoftPhone
  • Counterpath Bria
  • Counterpath Eyebeam
  • Counterpath X-lite Pro
  • ekiga SIP voip software
  • FreeCall
  • Gizmo Project
  • GlobalIP Ninja Lite
  • Google Talk
  • iPhone
  • Ixia IxChariot
  • SIPPS or AOL Softphone
  • Skype Internet Telephony
  • SparVoip
  • Teamspeak
  • Ventrilo
  • VoipBuster
  • VoipCheap
  • Web.de Freephone
  • WOIZE
  • Xfire
  • X-Lite
  • X-PRO
  • Yahoo Messenger

Measurements with IxChariot

We tested our software using IxChariot (a network performance testing tool provided by Ixia) to evaluate the benefits of cFosSpeed Traffic Shaping. For this purpose, we monitored the VoIP parameters with IxChariot while performing multiple uploads.

You can easily notice that without cFosSpeed normal VoIP communication is not possible during an upload, but it proceeds almost unaffected when using cFosSpeed.

In particular, you can see the MOS value (https://en.wikipedia.org/wiki/Mean_opinion_score) decreasing rapidly towards 1 after starting the upload. This means that the connection has become unusable for voice transfer. When using cFosSpeed the value doesn’t decrease – the speech transmission retains its high quality.

The delay is a crucial part of the MOS value. Using cFosSpeed keeps the increase of this delay within bounds, whereas it raises up to 700 milliseconds when not using cFosSpeed (red graph).

hrPing - High-precision ping utility

Why another Ping utility?

Many Ping utilities are already available, one is even released with Windows itself, called Ping. But hrPing has some advanced features other Pings have not.

In short:

  • Graphical display of ping results
  • Uses high resolution timers, so ping times are accurate to the usec
  • Can ping as well with UDP packets or ICMP timestamp messages
  • Times and handles ICMP error replies as well
  • Can have multiple pings “in-flight”, no need to wait for a reply before sending the next ping
  • Improved statistics
  • Size sweep: Send increasing packet sizes
  • Can show only a summary of results
  • Is a Traceroute and a Pathping as well

You can do much more with hrPing than with Windows Ping.

More text, please.

Like every Ping, hrPing sends “ICMP Echo Request” packets to the remote computer and listens to the matching “Echo response” packets. What’s more, hrPing can send UDP packets and ICMP timestamp packets as well. Not all packet types pass all firewalls and networks equally easy. With hrPing you have the possibility to vary. (-M and -u switches)

What’s more, hrPing times the round trip delay in microseconds (1/1000 msec). This is usually done by using the Windows’ “Performance Counter” which has a resolution of some MHz. You can even ask hrPing to use the CPU’s “Time Stamp Counter” which is incremented with the CPU’s clock cycle. You can’t get any more accurate with standard PCs today!

The next thing Windows Ping can not do is send more than one ping packet at a time. Windows Ping always sends one packet, waits for the reply, then prints its output line, repeat.

hrPing sends out one ping packet every x milliseconds (you can adjust this time with the -s parameter) while listening for incoming replies and printing the output if there is any.

The reason why you should like this is easy: with broadband you often have a delay of some 40 msec, while the upstream bandwidth of the whole connection is some 500 kbytes/sec. So, with a “standard” ping packet of 60 bytes (IP header + ICMP header + ping payload) you can send thousands of packets before you get the first reply. If you want to test line conditions, throughput, etc. this “overlapped” way of sending is really helpful.

Plus, hrPing has much better statistics than Windows Ping. You get the round trip times for ICMP error message replies as well! This way you can e.g. monitor the delay of a TTL exceed. hrPing counts the replies and error messages separately, so the global statistics don’t mess up one another. Plus, for the statistically inclined, hrPing calculates the standard deviation as well, to show you how much the values “jiggle”. hrPing shows you the standard deviation of the timings as well as the average times.

hrPing displays the IP identification field of the replies and thus makes it possible to do “silent load measurements”; see german c’t magazine 23/2003, p. 212 for details. (-I switch)

When sending a lot of packets hrPing’s “Summary mode” comes in handy: it will suppress the printing of each reply on its own line, but instead print a summary for all replies so far and a summary for the last 10 seconds (time can be adjusted). This lets you keep a nice overall view. (-y switch)

Is there more? Yes: hrPing can send out pings with increasing sizes: the “Size Sweep” function, where after each send, the size is increased until it reaches a maximum, then reset. Plus, we do some math when processing the replies and estimate the line speed, if the data is conclusive enough. (-l and -L switches)

Ah, one more thing: hrPing is a traceroute (-r switch) and a pathping (-p switch) as well 🙂

There’s a lot more goodies hidden in hrPing, just use it and you will find out about small but useful features.

And this is how to use it:

hrPING [<options>] <host>

<host> may be the IP address or the hostname. In the latter case the name will be resolved to its address at the beginning of the ping loop.

There are a couple of options that let you specify the data you’re sending:

-fSet Don’t Fragment flag in packet.

Set the “Don’t fragment” bit in the IP header of the PING packet. Default is not set.

-i TTLTime To Live.

Set the “Time To Live” value in the IP header of the PING packet. Default is 255.

-v TOSType Of Service.

Set the “Type Of Service” bits in the IP header of the PING packet. Default is 0. It is possible that Windows erases or overwrites this field when sending the packet. Furthermore, TOS is deprecated nowadays. hrPing will use IP_HDRINCL option to set TOS.

-l sizeSend buffer size (ICMP payload size).

How may bytes payload should be send? Remember that each packet is of the form: IP header (20 bytes) + ICMP header (8 bytes) + payload. You may only specify the payload size. Minimum is 0, maximum is 64k-1-20-8, i.e., 65507 bytes. Default is 32 bytes.This works for UDP mode as well, but not for ICMP timestamp mode. There the ICMP length is always 10 bytes.

-l s1[:s2[:i]]Size sweep: send buffer size from s1 to s2 step i

With this syntax hrPing will start sending a payload of s1 bytes, increase the payload by i bytes for each send (if i was set, otherwise increment by 1) until s2 is reached or exceeded and then restart with s1 bytes. This switches the correlation calculation on that tries to see if there is a correlation between the size of the packet you send and the time it takes for a reply.

-L sizeTotal IP datagram size (ICMP payload size + 28).

Same as the above, only that this size here is the size for the total IP datagram.

-L s1[:s2[:i]]IP datagram size (payload size + 28, default 60) [with sweep]

Analogue as above for -l s1[:s2[:i]]

-MSend ICMP timestamp requests

This will send out ICMP timestamp requests and print ICMP timestamp replies. In the reply there is the send time off the other side in milliseconds, so it’s possible to distinguish between delay that was caused sending and delay that was caused when receiving. These numbers have only millisecond resolution. To synchronise clocks hrPing will calculate the clock offset from the first ICMP timestamp reply, assuming that half of the delay came from each direction.

-u [port]Send UDP packets (port 7 by default)

You can send UDP packets as well. This causes UDP packets to be send to and from port port. Hopefully, the other side has no UDP port under that port number and will reply with a “port unreachable” message, which will be counted as a proper reply.

Options that allow you to specify how hrPing operates:

-tPing the specified host until stopped.

Loop forever. You can abort hrPING any time with CTRL-C or CTRL-Break. Unlike Windows PING, hrPING will still print the statistics gathered so far when you abort. CTRL-C waits for some time for replies still to come in before it aborts. If you are fed up with waiting, press Ctrl-C 5 times. Ctrl-Break just prints the statistics, but doesn’t abort. That’s nice in quiet mode or with many replies.

-n countNumber of echo requests to send.

Specify the number of PING packets to send. Default number is 4. For traceroute or pathping modes (see below) this specifies the number of pings per hop. For tracerroute mode, the default number is 3.

-w timeoutTimeout in milliseconds to wait for each reply.

Maximum timeout to wait for a reply. This time applies when hrPing is waiting for the last replies to come in. Furthermore, hrPing will even count a reply as timeouted if it took too long. Default is 2000 milliseconds.

-s timeInterval in milliseconds between packets.

This is the number of milliseconds between sending of two PING packets. hrPINGwill try to stick to this number quiet accurately. If sending took a little longer for one packet it will send out the next packet a little earlier. Default is 500 milliseconds. (You can use decimals for a very fine grained interval: -s5.4 will send a packet every 5400 microseconds on average.)

-c [num]Concurrent sending of up to num pings at a time (default 1)

Try to keep a maximum of num pings in transmission without a reply. When either a reply comes in or a timeout occurs, send more pings, so num pings are again in flight.-c (without a number) effectively turns off overlapped send/receive, since a second ping is only sent after a reply to the first or an timeout. This, together with the -w option make hrPing behave like Windows’ ping.

-r [count]Be a traceroute (do count pings each hop, default 3)

hrPing contains a traceroute utility! It works almost the same as Windows TRACERT, except that you can specify how many packets are sent per hop, default is three. By default, IP addresses are not resolved to names. Use -a to do that.

-a [hop]Resolve addresses to names for traceroute (start at hop)

This tries to resolve the IP addresses into DNS names. If you specify hop hrPing will not try to resolve the first hop-1 hops, since they are often not resolvable and it only costs time to try (and who has time nowadays?)

-pTrace path to destination, then ping all hops on path

Do a path ping: work like traceroute to get the adresses on the path to a given destination, then ping each of them individually (-u and -M honoured as well as other options that make sense (-l, even with size sweep, -c, -s, -w, etc). At the end, print some statistics for all hops on the path.

And some options control the output:

-licShow public license and warranty.

We need you to accept the software license. This is done the first time you start hrPING. If you want to re-read it, use this option.

-fwhelpPrint firewall help text

Remarks on how to set up the Windows firewall to let hrPing’s packets pass.

-F fileLog output into file as well, even if -q is set

All output is logged to file file as well as to the screen. If -q options are set, all output goes to log file, even if it’s not printed to the screen.

-TPrint timestamp in front of each line

Preceed each line of output with a timestamp of the form
“2012-05-22 18:19:53.508: “

-q[r|e|t]Be quiet (-qr=no replies, -qe=no errors, -qt=no timeouts)

Be quiet. Use -qr to not print replies, -qe to not print IMCP error messages or -qt not to print timeouts.

-y [sec]Print summary of the last sec secs (default 10)

Be quiet, but print a summary of all packets (with counts and statistics) and one of packets of the last sec seconds. Useful with small -s send delays or long sends (-t or high -n).

-g -G 

Show graph of the ping times. To do that, grping.exe is started. More on that later on. Use -gg to close graph on hrping exit. Use -G to utilize a already running grping.exe.

-? -hHelp

Prints a help screen, -?? or -hh prints an even longer one.

And then, we have options for the connoisseur:

-I idSet ICMP id field to id

Set the “Identification” IP header field to the value specified. It is possible that Windows erases or overwrites this field when sending the packet.

-W“warm up” with one uncounted echo request at beginning

If specified, hrPING will send one uncounted ping before all others. This “warm up” is useful with some firewalls that somehow cause the first block to be much slower than the following ones. -s, -w apply.

-AAbort after the first echo reply (-AA => or error)

Loop as long as there are no proper replies (or even error messages if -AA).

-HUse IP_HDRINCL socket option (default for UDP or with TOS)

With this option set, hrPing sets up his IP headers for send itself, otherwise Windows does it. -H is selected automatically with -u or -v, because it doesn’t work otherwise.

-E fileStop pinging if file exists

This is nice for batch files or for coordinating with a background job. hrPing will loop as long as usual (i.e. depending on -t or -n options), but will furthermore check for the existence of file. If file comes into existence, hrPing will exit the loop.

-diagDiagnose your connectivity: send different packet types

Send all kinds of different packets (ICMP echo, ICMP timestamp, UDP) with high and low TTL to the destination and see if we get an answer. That might be useful to check what is coming through your firewall or ISP.

-KWait for any key press when done

Useful if hrPing is started from Windows Explorer.

-qr timeSuppress all replies under time msec

Suppress all reply outputs under time msec, but write them still to the logfile, if provided.

-O ofsSet time offset in msec for timestamp mode

Specify the time offset between your time and the receiver’s time by hand, otherwise hrPing will do that on the first reply.

-DPrint debug info

Well, somewhere debug info is printed. I don’t want to be too specific. Actually, it’s a secret. 🙂

You can mess around with the timer, if you want:

-perfcntUse performance counter (default)

Use the performance counter of Windows. Usually, it’s pretty accurate (some MHz). That’s the default.

-tscForce RDTSC usage.

hrPING automatically decides if it uses the CPU’s timestamp counter (TSC) or the operating system’s performance counter for timings. On some CPU’s the TSC is not reliable, since it doesn’t tick at the same speed all the time. On multiprocessor systems, not all TSC have to tick exactly in sync. In almost all cases, hrPING will use the performace counter. If you want to force TSC usage, use -tsc, but hrPing will only use the TSC if it thinks it’s accurate.

-mmtimeUse multimedia timer; not very accurate

Use Windows’ multimedia timers. They should be at least accurate to the msec.

-tickUse Windows GetTickCount; very inaccurate!

Use the standard Windows timer. That usually has a resoltion of 15 msec or so. Berk!

-precMeasure timer precision

Not sure how accurate the timer is? Measure it!

Return codes:

For ping mode:

0
All sent pings were answered with their proper replies.
1
All sent pings were answered with their proper replies or ICMP error messages.
2
At least some pings were answered with either their proper replies or ICMP error messages.
3
No replies at all.
9
Error.

For traceroute mode:

0
Reached destination
2
At least some pings were answered with either their proper replies or ICMP error messages.
3
No replies at all.
9
Error.

Now a test run:

Ping us:

C:\> hrPING www.example.com
This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de

Source address is 192.168.2.106; using ICMP echo-request, ID=cc09
Pinging www.example.com [123.45.67.89]
with 32 bytes data (60 bytes IP):

From 123.45.67.89: bytes=60 seq=0001 TTL=55 ID=becc time=42.803ms
From 123.45.67.89: bytes=60 seq=0002 TTL=55 ID=becd time=43.768ms
From 123.45.67.89: bytes=60 seq=0003 TTL=55 ID=bece time=44.842ms
From 123.45.67.89: bytes=60 seq=0004 TTL=55 ID=becf time=43.449ms


    Packets: sent=4, rcvd=4, error=0, lost=0 (0.0% loss) in 1.546366 se
    RTTs in ms: min/avg/max/dev: 42.803 / 43.715 / 44.842 / 0.737
    Bandwidth in kbytes/sec: sent=0.155, rcvd=0.155

You see that hrPing numbers the packets in ascending order. The sequence numbers of the replies are listed (if there are out-of-sequence packets, hrPing will write “SEQ=” instead of “seq=”, so you notice).

Notice the times in microseconds (milliseconds with 3 decimals)

Furthermore, we see the TTL, which is the TTL of the sender, minus the number of hops the packet took to come here. I guess TTL was initially set to 64, so it took the packet 10 hops to come here (64-55+1=10, TTL is only decremented on forward, not on the first send).

Plus, hrPing prints the number of bytes in the received packet and the IP identification field.

Please also notice the statistics with average and standard deviation (which is a measure of how wide the data points are spread out. So 4, 6, 4, 6 has a smaller deviation than 1, 9, 1, 9, even though the average is the same).


Now let’s look at a second test run:

Try to ping us:

C:\> hrPING -i1 www.example.com
This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de

Source address is 192.168.2.106; using ICMP echo-request, ID=140d
Pinging www.example.com [123.45.67.89]
with 32 bytes data (60 bytes IP), TTL 1:

From 192.168.2.1: TTL count exceeded; bytes=56 seq=0001 TTL=64 ID=33b7 time=0.990ms
From 192.168.2.1: TTL count exceeded; bytes=56 seq=0002 TTL=64 ID=33b8 time=1.237ms
From 192.168.2.1: TTL count exceeded; bytes=56 seq=0003 TTL=64 ID=33b9 time=0.578ms
From 192.168.2.1: TTL count exceeded; bytes=56 seq=0004 TTL=64 ID=33ba time=1.041ms


   Packets: sent=4, rcvd=0, error=4, lost=0 (0.0% loss) in 1.514205 sec
   RTTs in ms: min/avg/max/dev: 0.578 / 0.961 / 1.237 / 0.239
   Bandwidth in kbytes/sec: sent=0.158, rcvd=0.147

Notice that this is a list of ICMP error messages, yet there are still the sequence numbers and round-trip-times listed.


Measure the delay of your connection:

We use the smallest ping available and we use the shortest route available. We could use traceroute mode to find the first hop and ping that one. But experience shows that the hops often don’t answer to pings. So we use a trick: we send out packets with TTL 2: they will be bounced on the first external hop, since hop 1 is my internal router (use TTL 1 instead if you are directly connected to the Internet). (The trick is not new, this is how traceroute works.)

C:\> hrping -i2 -l0 www.example.com
   This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de

   Source address is 192.168.2.106; using ICMP echo-request, ID=a40e
   Pinging www.example.com [123.45.67.89]
   with 0 bytes data (28 bytes IP), TTL 2:

   From 217.0.119.53: TTL count exceeded; bytes=56 seq=0001 TTL=254 ID=0000 time=17.168ms
   From 217.0.119.53: TTL count exceeded; bytes=56 seq=0002 TTL=254 ID=0000 time=16.634ms
   From 217.0.119.53: TTL count exceeded; bytes=56 seq=0003 TTL=254 ID=0000 time=16.740ms
   From 217.0.119.53: TTL count exceeded; bytes=56 seq=0004 TTL=254 ID=0000 time=16.342ms

   Packets: sent=4, rcvd=0, error=4, lost=0 (0.0% loss) in 1.529537 sec
   RTTs in ms: min/avg/max/dev: 16.342 / 16.721 / 17.168 / 0.296
   Bandwidth in kbytes/sec: sent=0.073, rcvd=0.146

So, the minimum delay seems to be some 16.3 ms. If you increase the number of tries you might find an even smaller delay, but it’s not very likely it will shrink a lot more:

 C:\> hrping -i2 -l0 -n1000 -q -s20 www.example.com
   This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de

   Source address is 192.168.2.106; using ICMP echo-request, ID=040b
   Pinging www.example.com [123.45.67.89]
   with 0 bytes data (28 bytes IP), TTL 2:

   Packets: sent=1000, rcvd=0, error=1000, lost=0 (0.0% loss) in 20.001239 sec
   RTTs in ms: min/avg/max/dev: 15.501 / 16.181 / 19.551 / 0.547
   Bandwidth in kbytes/sec: sent=1.399, rcvd=2.799

So, the real minimum seems to be around 15.5 ms. We might want to run hrPing all the time to see how well our line is. We can do that and instruct hrPing to be silent and only display a summary:

 C:\> hrping -i2 -l0 -t -y www.example.com
   This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de

   Source address is 192.168.2.106; using ICMP echo-request, ID=1807
   Pinging www.example.com [123.45.67.89]
   with 0 bytes data (28 bytes IP), TTL 2:

  Total:
     Packets: sent=85, rcvd=0, error=85, lost=0 (0.0% loss) in 42.042626 sec
     RTTs in ms: min/avg/max/dev: 15.815 / 18.558 / 34.122 / 5.022
     Bandwidth in kbytes/sec: sent=0.056, rcvd=0.113

      Last 10 seconds:
     Packets: sent=20, rcvd=0, error=20, lost=0 (0.0% loss) in 9.531548 sec
     RTTs in ms: min/avg/max/dev: 16.040 / 23.758 / 34.122 / 7.203
     Bandwidth in kbytes/sec: sent=0.058, rcvd=0.117
   [Aborting...]
   Packets: sent=85, rcvd=0, error=85, lost=0 (0.0% loss) in 42.042626 sec
   RTTs in ms: min/avg/max/dev: 15.815 / 18.558 / 34.122 / 5.022
   Bandwidth in kbytes/sec: sent=0.056, rcvd=0.113

This will continue to show a summary (to end it I pressed Ctrl-C). The summary shows that we had an increased ping time in the last 10 seconds. This is no wonder, since I ran an upload at the same time.

What is my line speed?

hrPing has this nice size sweep feature. Let’s try it:

 C:\> hrping www.example.com -l0:1400:96 -n20 -s20
   This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de

   Source address is 192.168.2.106; using ICMP echo-request, ID=e80d
   Pinging www.example.com [123.45.67.89]
   with 0-1400 bytes data (28-1428 bytes IP):

  From 123.45.67.89: bytes=28 seq=0001 TTL=55 ID=bf45 time=43.591ms
   From 123.45.67.89: bytes=124 seq=0002 TTL=55 ID=bf46 time=42.699ms
   From 123.45.67.89: bytes=220 seq=0003 TTL=55 ID=bf47 time=44.006ms
   From 123.45.67.89: bytes=316 seq=0004 TTL=55 ID=bf48 time=43.198ms
   From 123.45.67.89: bytes=412 seq=0005 TTL=55 ID=bf49 time=44.212ms
   From 123.45.67.89: bytes=508 seq=0006 TTL=55 ID=bf4a time=43.859ms
   From 123.45.67.89: bytes=604 seq=0007 TTL=55 ID=bf4b time=44.744ms
   From 123.45.67.89: bytes=700 seq=0008 TTL=55 ID=bf4c time=45.763ms
   From 123.45.67.89: bytes=796 seq=0009 TTL=55 ID=bf4d time=44.257ms
   From 123.45.67.89: bytes=892 seq=000a TTL=55 ID=bf4e time=46.415ms
   From 123.45.67.89: bytes=988 seq=000b TTL=55 ID=bf4f time=46.215ms
   From 123.45.67.89: bytes=1084 seq=000c TTL=55 ID=bf50 time=45.993ms
   From 123.45.67.89: bytes=1180 seq=000d TTL=55 ID=bf51 time=46.744ms
   From 123.45.67.89: bytes=1276 seq=000e TTL=55 ID=bf52 time=46.761ms
   From 123.45.67.89: bytes=1372 seq=000f TTL=55 ID=bf53 time=47.214ms
   From 123.45.67.89: bytes=28 seq=0010 TTL=55 ID=bf54 time=43.284ms
   From 123.45.67.89: bytes=124 seq=0011 TTL=55 ID=bf55 time=43.345ms
   From 123.45.67.89: bytes=220 seq=0012 TTL=55 ID=bf56 time=44.738ms
   From 123.45.67.89: bytes=316 seq=0013 TTL=55 ID=bf57 time=44.561ms
   From 123.45.67.89: bytes=412 seq=0014 TTL=55 ID=bf58 time=44.263ms

   Packets: sent=20, rcvd=20, error=0, lost=0 (0.0% loss) in 0.434017 sec
   RTTs in ms: min/avg/max/dev: 42.699 / 44.793 / 47.214 / 1.337
   Bandwidth in kbytes/sec: sent=26.727, rcvd=26.727
   Correlation: 91.6%, estimated speed: 281.11 kbytes/sec

As you can see, the “bytes=” are increasing, since the proper reply to a ping packet with N bytes is a pong packet with N bytes. Furthermore, you may notice that the reply time is increasing slightly with the packet size. We do some statistics on it (linear regression and correlation) and get a correlation coefficient: 91.6%. Generally, a correlation of 50% or more is called “correlated”, of 80% or more “highly correlated”. That means: the larger the packet, the larger the time and time is proportional to packet size. hrPing estimates the speed to be some 280 kbytes/s. As a matter of fact, that is too slow, but measurements show smaller throughputs the longer the route is. Let’s try the same with hop 2 (the first external hop):

 C:\> hrping www.example.com -l0:1400:96 -n20 -s20 -i2
   This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de

   Source address is 192.168.2.106; using ICMP echo-request, ID=9c01
   Pinging www.example.com [123.45.67.89]
   with 0-1400 bytes data (28-1428 bytes IP), TTL 2:

  From 217.0.119.53: TTL count exceeded; bytes=56 seq=0001 TTL=254 ID=0000 time=16.164ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0002 TTL=254 ID=0000 time=16.125ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0003 TTL=254 ID=0000 time=16.271ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0004 TTL=254 ID=0000 time=16.524ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0005 TTL=254 ID=0000 time=17.250ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0006 TTL=254 ID=0000 time=16.856ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0007 TTL=254 ID=0000 time=17.577ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0008 TTL=254 ID=0000 time=17.362ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0009 TTL=254 ID=0000 time=18.080ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=000a TTL=254 ID=0000 time=17.851ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=000b TTL=254 ID=0000 time=18.158ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=000c TTL=254 ID=0000 time=18.372ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=000d TTL=254 ID=0000 time=19.002ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=000e TTL=254 ID=0000 time=18.442ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=000f TTL=254 ID=0000 time=18.895ms
   From 217.0.119.53: TTL count exceeded; bytes=56 seq=0010 TTL=254 ID=0000 time=16.676ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0011 TTL=254 ID=0000 time=16.259ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0012 TTL=254 ID=0000 time=16.400ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0013 TTL=254 ID=0000 time=16.941ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0014 TTL=254 ID=0000 time=17.573ms

   Packets: sent=20, rcvd=0, error=20, lost=0 (0.0% loss) in 0.407530 sec
   RTTs in ms: min/avg/max/dev: 16.125 / 17.338 / 19.002 / 0.911
   Bandwidth in kbytes/sec: sent=28.464, rcvd=3.808
   Correlation: 95.2%, estimated speed: 428.86 kbytes/sec

This is more like it (I have about 500 kbytes/sec upstream). The estimated speed is only shown if there is a correlation of at least 40%, otherwise the estimation is too vague. Linear regression is very sensitive to stray data. Often you ping 50 times and get 49 good replies (say in the 50 msecs) and one that is way too high (say 150 msec). Normally, this would badly offset your correlation and linear regression. But if you know a reasonable upper limit for your replies, you can filter out the stray replies with the -w option, which sets the maximum time to wait for a reply. The trick here is that hrPing counts replies as timeouts, even if they arrived back, but it took longer than the timeout time. In our above example, you may use a -w60 to filter out the stray 150 msec peak. If you have no idea what timeout time to use, try a -w with the average time plus 2-3 times the deviation.

Graphics!

To have hrPing open a window as well and graph the results type this:

 C:\> hrping www.example.com -t -i2 -g
   This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de

   Source address is 192.168.2.106; using ICMP echo-request, ID=cc09
   Pinging www.example.com [123.45.67.89]
   with 32 bytes data (60 bytes IP), TTL 2:

  From 217.0.119.53: TTL count exceeded; bytes=80 seq=0001 TTL=254 ID=0000 time=16.494ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0002 TTL=254 ID=0000 time=16.673ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0003 TTL=254 ID=0000 time=16.017ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0004 TTL=254 ID=0000 time=16.532ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0005 TTL=254 ID=0000 time=16.969ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0006 TTL=254 ID=0000 time=16.910ms
   From 217.0.119.53: TTL count exceeded; bytes=80 seq=0007 TTL=254 ID=0000 time=16.335ms
   [Aborting...]

   Packets: sent=7, rcvd=0, error=7, lost=0 (0.0% loss) in 3.027021 sec
   RTTs in ms: min/avg/max/dev: 16.017 / 16.561 / 16.969 / 0.305
   Bandwidth in kbytes/sec: sent=0.138, rcvd=0.185

This will open a window and show the ping times. After aborting, the window will stay open. In the window you can select the time scale that is shown and you can choose to show an average of the values, with different average times. If you like the window to be automatically closed when hrPing closes (even on Ctrl-C), use -gg instead of -g.

You can have multiple graphs in one window

Start the first hrPing regularly:

   C:\> hrping www.example.com -t -i2 -g
   This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de
   [...]


After that, start the second hrPing with a -G instead:

   C:\> hrping www.example.com -t -G
   This is hrPING v5.00 by cFos Software GmbH -- http://www.cfos.de
   [...]

This will produce two graphs in the same window. Nice! 🙂 You find the hrPing textual reply lines annoying? Add a -y to get a summary or a -q to leave it away altogether.

System requirements:

hrPING should work well on all systems running Windows XP and above (Vista, Windows 7, Windows 8 previews and the server OSes Server 2003 and 2008 as well).

Usually, you have to be a member of the Administrator group to run hrPing, since hrPing uses “raw sockets”.

Under XP, you can open access to raw sockets for every user by setting the following Registry key under HKEY_LOCAL_MACHINE to 1 (DWORD): System\CurrentControlSet\Services\Afd\Parameters\DisableRawSecurity This feature was removed in Vista. 🙁

Traffic Shaping Guide

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.

Traffic Shaping for Filesharing (P2P)

Thanks to cFosSpeed Traffic Shaping, you can finally use the full upstream bandwidth (with eMule, Kazaa or BitTorrent etc.) and make it available to other filenet users – without adversely affecting other Internet applications.

The problems with filesharing software

Running filesharing programs (like eMule, Kazaa or BitTorrent) will usually take up most if not all upstream channel bandwidth, which leaves the connection prone to high ping times. Not only does this mean filesharing communication itself will run slowly (source requests may take a full 1 or 2 seconds rather than just a few milliseconds), but it will also choke other Internet applications to a crawl. By the same token, download rates may plummet, since TCP ACKs are not being sent out in time. The browser will also become noticeably less responsive while surfing the Net.

A popular workaround offered by many filesharing programs is to put an artificial cap on the upload rate.

However, if you are simultaneously running a mail upload in addition to a filesharing upload, both will compete for available upstream bandwidth. How much bandwidth each of these uploads will eventually receive is basically left to happenstance. In some cases, this may even lead to termination of all TCP connections (TCP connection starving).

The priority scheme integrated in cFos and cFosSpeed (re)organizes data packets in a manner that ensures maximum download rates for filesharing programs. In addition, cFos and cFosSpeed deprioritize filesharing data transfer. Now, this should not be taken to mean such traffic is artificially slowed or even altogether stalled. What it does mean, however, is that such data will be briefly delayed when more important data is being transmitted. Only this priority scheme makes it possible to have filesharing programs run at maximum transfer rates while still using the same connection for other applications at the same time.

For instance, if you have a filesharing program running in the background when surfing the Net, there will only be a brief, minimal slowdown in P2P traffic while a new page is being loaded. Likewise, when sending out longer e-mails, P2P upload rates may briefly drop somewhat while the mail is being transmitted. Once the mail is sent, all uploads will continue at full speed again. The only alternatives would be to postpone transmission of the mail “forever” or artificially limit transfer bandwidth for filesharing somehow. But this would also mean a loss of bandwidth even when no other application is using the same connection.

cFosSpeed is thus optimized for use with filesharing (p2p) software, allowing users to have such a program run in the background without noticing its regular Internet activity.

Therefore, we suggest setting Kazaa etc. to “unlimited upload” while deactivating the “speed sense” option, since cFosSpeed will already optimize Internet traffic anyway.

Icon skin

Since most users have their filesharing programs run 24 hours a day, cFosSpeed comes with its own icon skin for this, making it possible to keep track of the connection without needing to have a separate status window open at all times.

Prioritization:

Quite a few users have one PC set aside specifically for filesharing and route P2P traffic (e.g., via Internet Connection Sharing) through a main computer directly hooked up to the Internet. In this case, the Layer-7 Protocol Detection integrated in cFos and cFosSpeed permits prioritization of the most important P2P networks like BitTorrent, eDonkey 2000 (eMule, etc.), Kazaa, Gnutella(2), Kademlia, and Direct Connect.

Prioritizing Programs:

cFos and cFosSpeed also permit prioritizing programs by their name. Many of the most important programs have already been included in our program setting list. This way of prioritizing is especially useful when the Layer-7 detection cannot recognize and assign data properly (as would, for instance, be the case with encrypted P2P traffic).

Optimizing Connection Settings:

You can specify exactly what transfer medium you use under Connection Settings. The more information about a connection is available to cFos or cFosSpeed, the better ping times will be. Default is “Adaptive”. But if you were for instance using a DSL connection, you should select the appropriate DSL standard or protocol as your medium.

Traffic Shaping

How does Traffic Shaping work?

cFosSpeed uses Traffic Shaping to reorder Internet data packets in such a way that urgent traffic is transferred first and the rest of the data later. This results in significant reduction of latency (lag) and typically also results in connection speed up.

Internet Tuning / Traffic Shaping
  • If ACKs are not sent fast enough, downloads may be slow during uploads (the classic Traffic Shaping).
  • Windows TCP Auto-Tuning may result in too slow downloads. cFosSpeed’s RWIN expansion can increase the speed. cFosSpeed can also accelerate downloads for certain applications (see test results).
  • cFosSpeed keeps the overall ping time low, even during heavy uploads and downloads.
Prioritization – Your important streams first
  • With the cFosSpeed prioritization scheme you can always give all your programs full bandwidth, because cFosSpeed decides which streams must be prioritized.
  • For example Game-Traffic, VoIP, or Audio/Video content will be prioritized higher than uploads / downloads.
  • Your filesharing may use unlimited speed of your Internet connection, but it will be slowed down when you have important traffic.
  • The whole prioritization scheme is configurable and you can change the prioritization on-the-fly.

Benefits

  • Full download rate during upload
  • Consistently quick response time of your Internet even under heavy load
  • Substantially less lag in online games
  • Improved VoIP speech quality
  • Nice status window (with skins), so you always see what’s going on

cFosSpeed under the hood

Packet flow through the various modules of cFosSpeed

Mouse over/tap each box for further explanations.

Makes the most of the available bandwidth while minimizing ping time

1 of 9

Improves Traffic Shaping of connections with high latency fluctuations, e.g. mobile connections

2 of 9

Improves performance when several PCs share one connection

3 of 9

Boosts download speeds for high speed connections with high latency

4 of 9

Priority scheme / on-the-fly prioritization / filter rules

5 of 9

Allows configuration of max. speeds for protocols & programs

6 of 9

Priority scheme / on-the-fly prioritization / filter rules

7 of 9

Classifies non-standard protocols, like game-traffic, etc.

8 of 9

Detects most common protocols, like HTTP, Mail, VoIP, Filesharing, etc.

9 of 9

More on Traffic Shaping

Traffic Shaping:

How Traffic Shaping works is explained here: Internet Acceleration with Traffic Shaping

There can only be one Traffic Shaper. Several Traffic Shapers after one another have disadvantages for the transfer speed. Therefore deactivate Traffic Shaping in your router. Also deactivate ACK prioritization.

In addition cFos / cFosSpeed offers RX shaping. This provides good ping times for downloads. It is activated by default.

Deactivate with:

spd gset rx_shape 0 -save

Activate with:

spd gset rx_shape 1 -save

Layer 7 protocol analysis:

cFos and cFosSpeed can analyze the data of the connections and recognize the most important protocols used in the Internet. This also works for protocols which don’t use the default ports. In addition it allows to prioritize data of PCs which are connected to your PC via Internet Connection Sharing or other routing software.

The following protocols are supported:

   Standard:          HTTP, FTP, POP3, SMTP, IMAP4
   VoIP:              RTP, RTCP, SIP
   Special:           Telnet, SSH, SSL, IRC, DNS, (S)NTP, RPC
   Filesharing (P2P): eDonkey, Kazaa, Bittorrent, Kademlia, Gnutella(2), Direct Connect
   Streaming Media:   HTTP-Streams with various players, as well as RTSP
 

The analyzer can distinguish between client and server mode. The dialog under “options” -> “settings”, “protocols” allows a precise prioritization of each protocol. In addition there is a dialog for program prioritization, if the layer-7 analysis doesn’t recognize some other protocol.

to support the analysis there is a logging mode, too. cFosSpeed creates log files of connections in the installation directory. The maximum file size is 100k, but you can to max. size X by the command.

   spd gset max_session_dump_size X
    activate logging:    spd gset dump_sessions X; gset dump_tcp_data 1
    deactivate logging:  spd gset dump_sessions 0

Values for X are:

    0=don't log connections.
    2=log, but delete automatically if no data except TCP SYN has beed transferred.
    3=log, like 2, but delete automatically if the proccol was recognized by the layer-7 analysis
    4=log, never delete

Program prioritization:

If cfos / cFosSpeed cannot recognize the protocol with layer-7 analisys, it tries to dermine the name of the program, which created this connection (XP or later). In the dialog for program prioritization under “options” -> “settings” you can assign each program one of five priorities. If your program is not in the list you can add it in the respective category. We also appreciate suggestions for other programs which should be in the list. Please report them here:

/traffic-shaping-priority-list/

Here is a list of programs already in the list:

https://atlas-cfosspeed.com/traffic-shaping-priority-list/#priority-list

Tips for the prioritization:

  • Only use high prioritization for a small part of the tranferred data. If you use high prioritization for all data, it is actually the same situation as if you had prioritized nothing.
  • Use low prioritization for filesharing. Then you can disable traffic limits in your filesharing software. This means your filesharing software can now use the whole bandwidth of your internet connections, with disturbing other traffic. Only in the short time, when you, for example, send mail, the P2P traffic is slowed down. This policy gives filesharing software the maximum bandwidth, while allowing use of the internet connection for other applications simultaneously.

VoIP recognition:

cFos / cFosSpeed can recognize VoIP (RTP) by an analysis of the UPD data packets. There is a strict and a relaxed check. the strict check is default and assumes there is a RTCP connection for each RTP connection. If you use VoIP software which has no RTCP connections you can disable (in “options” -> “settings”) the strict RTP check, e.g. for VoIPBuster.

Individual Traffic Shaping rules:

cFos and cFosSpeed have a filter language with rules to prioritize packets. See cFosSpeed Filter Expressions for details.

Traffic Chaping Options

What is Traffic Shaping?

Traffic Shaping prioritizes data transfer on Internet connections in such a way that you can actually use your maximum bandwidth in both directions. In addition, cFos and cFosSpeed control data transfer to ensure ping times always remain minimal. For more information, please refer to our explanation of Traffic Shaping

How can I determine the benefits of cFos Traffic Shaping myself?

You should notice the following effects:

  • Smooth surfing / Web-site loading
  • Maximum download rate while uploading
  • Low ping times during upload, download, and while filesharing
  • Gaming connections remain responsive even during simultaneous data transfer
  • Better line quality for Voice-over-IP (VoIP)

You don’t have to believe this, but you can measure it by yourself: Manual

>What else does Traffic Shaping do?

>cFosSpeed feature list

How do I optimally calibrate cFos / cFosSpeed?
  • Clear the traffic shaping data by clicking on “clear calibration data”
  • Make a short full-speed download. (5-10 seconds)
  • Make a longer full-speed upload (30 sec – 1 min).
    It is important that this upload is as fast as possible, i.e., that the server you’re sending to is near and powerful (like your mail server or some fast FTP server). moreover, it is important that you have no downloads running while you do this upload. with an upstream of 256 kbit/s you need to send some 2 mbyte to the other side.
  • That’s it. The connection is well calibrated if you have a full-blast upload and still have low ping times (both can be watched in the status window).
Watch the video "How to calibrate your Internet connection"

Traffic Shaping Options

Traffic Shaping Mode (Multi-User version)

Not cooperative – There is a machine without cFos TS on your LAN
You use your connection with several other machines simultaneously and at least one of them has no cFos Traffic Shaping.

Net Talk – Broadcast traffic statistics on your LAN
To improve accuracy, send Traffic Shaping statistics to other PCs on your local (home) network. No data is sent to the Internet.

Ping Variance – Use advanced Traffic Shaping to accommodate for varying ping times
Gather ping statistics to accommodate for variation in ping times; especially useful for mobile/wireless connections.

Medium/Protocol

  • Adaptive: cFos/cFosSpeed will adapt to your connection automatically. Use this setting only if you are not sure what your connection type is. Otherwise, select the setting that applies to your connection. The better the chosen setting fits your connection type, the lower ping times should be.
  • DSL (PPPoE): Most widespread DSL protocol (commonly used in the USA, Germany, Eastern Europe, and other major markets).
    PPPoE explanation @ wikipedia.org
  • DSL (PPPoA/Vcmux): Common standard in Great Britain.
    PPPoA explanation @ wikipedia.org
  • DSL (PPPoA/LLC): Occasionally used in Great Britain
    PPPoA explanation @ wikipedia.org
  • DSL (PPTP): Older DSL standard still in use in some parts of France.
    PPTP explanation @ wikipedia.org
  • Cable: Internet via TV cable with bandwidth that may vary slightly according to usage and time of day.
    Cable technique @ wikipedia.org
  • ISDN: 8 or 16 kbytes, bidirectional, PPP in HDLC frames
    ISDN explanation @ wikipedia.org
  • IP over AAL5: IP data transfer via ATM
    ATM Adaptation Layer @ wikipedia.org
  • RFC 1483/2684: DSL over ATM bridging
  • Frame Count: Transfer speed varies with the number of data packets transmitted per time interval. Sometimes used in Greece.
  • Mixed Raw IP/Frame Count: Downstream traffic is handled as in “Frame Count”, upstream traffic as in “Cable”. Used by some cable providers like ish.

Set up the right medium/protocol if you know exactly which transfer medium/protocol is used. If in doubt, use Adaptive.

How do I optimally calibrate cFos / cFosSpeed?
  • Clear the traffic shaping data by clicking on “clear calibration data”
  • Make a short full-speed download. (5-10 seconds)
  • Make a longer full-speed upload (30 sec – 1 min).
    It is important that this upload is as fast as possible, i.e., that the server you’re sending to is near and powerful (like your mail server or some fast FTP server). moreover, it is important that you have no downloads running while you do this upload. with an upstream of 256 kbit/s you need to send some 2 mbyte to the other side.
  • That’s it. The connection is well calibrated if you have a full-blast upload and still have low ping times (both can be watched in the status window).
Watch the video “How to calibrate your Internet connection”

Traffic Shaping Priority List

Suggesting a program and its executable file for Traffic Shaping prioritization

We are looking for users who’d be interested in sending us their standard Traffic Shaping priority settings for programs not already included in our Traffic Shaping Priority List.

This is how you do it:

number1

Right click on the cFosSpeed status window

number2

Select "Options -> Settings"

number3

Click on "Programs"

number4

Click on "Add program"

number5

Select the program from the selection box

number6

If the program isn't currently active, click the "All programs" radio button and select the program from the extended list

number7

Add a description of the program

number8

Click on "Add"

>How prioritization works

Traffic Shaping Priority List

cFos/cFosSpeed can prioritize the traffic of individual programs. This list contains programs, already prioritized by cFos/cFosSpeed.

Traffic Shaping Calibration

More on cFosSpeed Traffic Shaping

Ping times should start out low from the get-go, while the upload rate will first have to be properly aligned with a connection’s maximum specifications. You can switch between having your current ping time displayed either numerically or graphically on the status window.

The cFosSpeed status window contains two important elements which indicate how Traffic Shaping works:

1 The Traffic Shaping indicator. It “blips” whenever cFosSpeed re-orders a packet, ie. whenever a prioritization takes place.

2 The ping time indicates how reactive your Internet connection is during upload/download. The lower the value the better.

Note: To measure the latency Pings will be sent to atlas-cfosspeed.com. However they never reach their destination, since they use only a small hop count (typically TTL 2 or 3). If you prefer another ping destination, you can set the key ping_dest in the file global.ini, section [param].

Additional things you can do
  • Disable other products that try to limit the connection speed, e.g. the Traffic Shaping of the Fritz!Box. These two solutions will interfere with each other.
  • In the context menu, select the correct medium for your connection under Options/Settings/2Traffic Shaping.
    More information
  • If you’re frequently using phones plugged into the router for making Voice-over-IP (VoIP) calls, please select “variable bandwidth” for your connection.
    More information

>How do I optimally calibrate cFos / cFosSpeed?

>What else does Traffic Shaping do?

>How can I determine the benefits of cFos Traffic Shaping myself?

API

Change cFosSpeed settings using SPD.exe

data.ini file

Settings represent the current characteristics of your connection. Parameters are subject to change with newer version. So change them ONLY if you REALLY know, what you are doing. Changes should always be done using spd commands!

MaxTxRaw
max traffic send/second without waiting for acks
MaxRx
max traffic that was received/second
MinDelay
the minimum delay that was ever measured.
Method
the underlying transport medium
MaxDelay
the maximum delay that was ever measured.
TotalRxVolume
the name says it all
TotalTxVolumeRaw
the name says it all
TotalTxVolumeAcked
the name says it all
MaxIpLen
the maximum size of ip packet that was ever sent
PingCnt
number of pings sent
PongCnt
number of ping replies received
MaxRxMss
maximum tcp mss that was ever received
MaxTxMss
maximum tcp mss that was ever sent
AddHops
use spd sethops X to change this value. increases the hop count that is pinged for latency measurements
msslimit
the maximum tcp mss that cfosspeed will allow. if greated, it will force tcp mss to be this value.

SPD.exe - More Info

DSCP configuration

Classes can have a DSCP value as well. If set, this value is set to all outgoing packets of that class. Specify “-dscp X” in the class line to set DSCP value of “X”. DSCP values range from 0 to 63. By default, DSCP values are not set for any class. For more details see RFC 2474 (Differentiated Services, www.ietf.org/rfc/rfc2474.txt).

VLAN configuration

You can set VLAN Identifier (VID) and Priority Code Point (PCP) for traffic classes as well. To set VID, use “-vlan-id X” option for the traffic class, where “X” is the Identifier. VIDs range from 0 to 4095 (0xfff hex). To set PCP, use “-vlan-prio X”, respectively, where X is the PCP. PCPs range from 0 to 7. If you set one of these, all outgoing packets will have VID and PCP set. By default, VLAN settings are not changed for the packets of any class. For more details see IEEE 802.1Q (e.g. on Wikipedia).

RX-priorisation

Classes can have weights assigned for rx-priorisation. The concept is like this:

Each class (highest, higher, high, default, low, lowest) has a weight assigned. Furthermore, all TCP connections are mapped to a certain class (this only applies for bulk data; e.g. ACKs are always sent out in the higher class; see below for how the class mapping is done), according to filter rules. The class weight is used when TCP windows for rx-shaping are computed. A TCP connection with weight 100 gets a window that is about 4 times bigger than a connection with weight 25. This should usually translate into more speed on that connection, but not necessarily (e.g. the sending server might not be fast enough).

The pre-set weights are:

    class highest -weight 400
    class higher  -weight 400
    class high    -weight 400
    class default -weight 100
    class low     -weight 25
    class lowest  -weight 6
    

I.e. regular browser downloads (class default) should get about 16 times the speed than Torrents (class lowest).

The weighting needs some time (some seconds) to be through, so a newly created higher-than-average TCP connection needs these seconds to come to full speed.

How does cFosSpeed know which TCP connection has which class, since the filters assign classes on a packet-by-packet basis? Well, there are filter expressions that are constant for all packets that belong to a certain connection. The expression might be true or false, but it doesn’t change from one packet to the next. You can see which filter expressions have this criterium by using “spd filter”:

    rt-  -highest -c highest
    rt-  -higher -c higher
    rt-  -high -c high
    rt-  -l7-prot @higherprots -c higher
    rtc  -l7-prot @highprots -c high
    rtc  -l7-prot @lowprots -c low
    rtc  -l7-prot @lowestprots -c lowest
    rt-  -prog @higherprogs -c higher
    rtc  -prog @highprogs -c high
    rt-  -prog @lowprogs -c low
    rtc  -prog @lowestprogs -c lowest
    rt-  -low -c low
    

The first column (with the “rtc”) shows this: ‘r’ means the filter is active when receiving packets, ‘t’ means the same for transmitting packets. ‘c’ means that it is constant and thus ‘c’ is set for the -l7-prot and -prog rules, since the l7-protocol and program name are saved on a per-connection basis. The -high etc. filters are packet specific and thus have no ‘c’ set.

Now what if cFosSpeed is wrong about the constantness of a filter expression? For example you could have DSCP values assigned to certain connections from another machine, but the -dscp rule is a per-packet rule, not a per-connection rule. To force cFosSpeed to set the class even on account of such a filter expression, use the -force-set-class option. By using this, the filter expression will be flagged ‘c’ and thus considered constant over all packets of that conenction.

Creating your own rules

If you want to assign a class to your own prioritized traffic, use “high”. It’s probably best not to use the other two classes, as this may interfere with overall traffic-shaping performance. You may even add a class of your own, but don’t use a priority of 90 or more for the same reason mentioned above.

Keep in mind that what the whole prioritization system basically does is reorder packets for transmission. Thus, prioritizing more packets will leave fewer packets “normal”. Taken to the extreme, this means that priotizing every single packet indiscriminately would soon slow traffic on the fast lane to little more than stop and go.

The spd utility (see below) and the trace.txt file can be used to show class-usage statistics. As a general rule of thumb, I’d advise you prioritize no more than 10% or 20% of your traffic.

The spd utility

The cFosSpeed installation directory contains a small file called spd.exe for communicating with cFosSpeed. It lets you handle commands and will display results for you.

An easy way to use the spd tool is to click on Start – Programs – cFosSpeed – Open Console. This will bring up a regular command prompt with the cFosSpeed directory as the current one.

Another way would be to copy it to some directory in your PATH.

spd help” provides a list of commands.
spd ver” shows cFosSpeed version information.

Changing expressions and classes

spd class” lists all traffic classes. It usually looks like this:

    class highest -prio 100 -weight 400
    class higher -prio 90 -weight 400
    class high -prio 80 -weight 400
    class default -weight 100
    class low -prio 0 -speed 25%,-10 -weight 25
    class lowest -prio 0 -speed 25%,-30 -weight 6
    class drop
    

If you want to add a class, use “spd class <name> -prio <prio>”, where <name> is the class name and <prio> the assigned priority.

If you want to delete a class, use “spd class <name> -D”. Classes can only be deleted if there are no expressions referring to them.

You can later change the priority of an already existing class <name> by using “spd class <name> -prio <prio>”. However, you cannot change a low into a high class or vice-versa.

Likewise, you can change the speed of a class after it’s been created. Just use “spd class <name> -speed <speed>” on an already existing <name>, where <speed> can be any positive number or “inf” for no speed limit.

You can get a list of the active filters by using the “spd filter” command. This will usually read something like this:

    0 -highest -c highest
    1 -higher -c higher
    2 -high -c high
    3 -prog @user.ini/highprogs -c high
    4 -prog @highprogs -c high
    5 -low -c low
    6 -prog @user.ini/lowprogs -c low
    7 -prog @lowprogs -c low
    8 -prog @user.ini/lowestprogs -c lowest
    9 -prog @lowestprogs -c lowest
    

New filter expressions can be appended to the bottom of the expression list by the “spd filter -A <filter> -c <class>” command, where <filter> is a set of filter rules and <class> is the target traffic class.

In the same way, you can use “spd filter -I <pos> …” to insert a filter at a specific position into the filter list.

“spd filter -R <pos> …” replaces the filter at position <pos> with the new filter.

“spd filter -M <old> <new>” moves a filter from its old position <old> to a new position <new>.

Finally, “spd filter -D <pos>” deletes a filter at position <pos>.

If you want to review your traffic-class usage, type “spd cstat” to get corresponding statistics. This is an example of what it looked like after a long time transferring:

    shaping is currently enabled; txspeed = 139907, max_queue_size = 419,721

    class highest -prio 100 -weight 400
      sent          320,292 (  2%) packets      8,968,176 (  0%) bytes
      in queue            0        packets              0        bytes

    class higher -prio 90 -weight 400
      sent        1,045,165 (  8%) packets     42,809,356 (  0%) bytes
      in queue            0        packets              0        bytes

    class high -prio 80 -weight 400
      sent          411,963 (  3%) packets     66,261,691 (  0%) bytes
      in queue            0        packets              0        bytes

    class default -weight 100
      sent          103,663 (  0%) packets     15,722,812 (  0%) bytes
      in queue            0        packets              0        bytes

    class low -prio 0 -speed 25%,-10 -weight 25
      sent            4,670 (  0%) packets      5,979,376 (  0%) bytes
      in queue            0        packets              0        bytes

    class lowest -prio 0 -speed 25%,-30 -weight 6
      sent        9,828,143 ( 83%) packets 10,913,999,530 ( 98%) bytes
      in queue            0        packets              0        bytes

    class drop
      dropped             0        packets              0        bytes

    queue overflow        0        packets              0        bytes
    

Filter expressions and classes can be modified while cFosSpeed is up and running online. If you want to save the changes you made, use “spd save” with either -class, -filter or -all to specify what to save.

You can change settings.ini from the outside with an editor as well. But you have to reload the new settings after you saved the new version of settings.ini by typing “spd reload”. This will, however, only reload the filter settings, not the classes.

Managing program names:

To manage lists of programs that are to be filtered with -tcp-prog, -udp-prog or -prog there are three commands:

addkey <key> <section>
This will add the line <key> to the section <section> in settings.ini.
delkey <key> <section>
This will delete the <key> line from <section>.
showsect <section>
This will display all keys set in the named section.

More useful commands:

With the “spd netstat” command, you can review statistics of the total traffic transmitted over your line. After the long time mentioned above, our sample stats looked as follows:

    IP statistics                     sent       rcvd     bytes sent     bytes rcvd

      Good packets              11,714,403  8,245,216 11,053,999,872  1,874,597,769
      Fragments                      5,267      4,608      5,781,578      4,195,207
      Fragment timeouts              5,191      4,532
      Fragments ignored                 72         76         47,732         42,236
      Protocol 2 (IGMP)                 13          0            520              0


    ARP statistics                    sent       rcvd     bytes sent     bytes rcvd

      Good packets                     783    130,384         21,924      5,997,484


    ICMP statistics                   sent       rcvd     bytes sent     bytes rcvd

      Good packets                 320,702    341,119      9,027,507     19,482,227
      Bad packets                        0      1,085              0        114,283


    UDP statistics                    sent       rcvd     bytes sent     bytes rcvd

      Good packets               1,479,668  1,256,672    146,482,897    158,899,222


    TCP statistics                    sent       rcvd     bytes sent     bytes rcvd

      Good segments              9,905,831  6,638,246 10,892,171,744  1,691,413,796
      Checksum errors                    0         97              0          9,394
      Segments w/o connection        1,961        826        223,937         36,904
      Invalid RST segments               3          7
      ACKs for unset data                0          2
      Segments after reset             765        562         78,108        299,641
      Filtered resents                 193                   233,461
      Used sequence space                             10,304,070,182  1,409,658,307
      Resent segments              184,715     23,005    196,810,498     14,087,200
      Reordered segments                13    200,175            556     80,270,918

      Total sessions                66,765
      Active sessions                    4
      Orderly releases              60,222
      Abortive releases              6,091
      Timeouted sessions               448
      Failed connection attempts    15,905      2,396
      Peak sessions                    147
      Peak half-open sessions          121


    RTP statistics                    sent       rcvd     bytes sent     bytes rcvd

      RTP Packets                        0          0              0              0
      RTCP Packets                     347        331          9,032          9,552
    

It’s really a lot like the Windows NETSTAT command, except it does only count packets transmitted on the cFosSpeed connection rather than all packets in the system and in some respects it’s much more detailed.

The “spd cperf” command will switch on or off class traffic dumping. By setting “spd cperf on” cFosSpeed will dump about once per second how many bytes were sent in what priority class. This can help in testing filter rules or finding performance problems.

“spd fstat” command displays which filters matched how often. Use it to check if your filters are working. “spd fstat -clear” clears the stats.

Connection Technology setting

cFosSpeed tries to auto-detect which technology you use to access the Internet. Sometimes it guesses wrong or the technology used it too esoteric. Here is a list of currently suppoted values:

1
PPPoE
In spd this is called “pppoe”.
This is sometimes called “RFC 1483 Bridged, PPPoE” or “RFC 2684 Bridged, PPPoE”.
2
PPPoA, VC-multiplexed
In spd this is called “pppoa_vc_mux”.
This is sometimes called “RFC 2364 VCMUX”.
3
ISDN HDLC with or without VJ-compression
In spd this is called “isdn”.
4
PPTP
In spd this is called “pptp”.
5
Raw IP (with DHCP)
In spd this is called “raw_ip”.
6
PPPoA, LLC-encapsulated
In spd this is called “pppoa_llc”.
This is sometimes called “RFC 2364 LLC”.
7
LLC encapsulated routed IP over AAL
In spd this is called “ip_over_aal5”.
This is sometimes called “RFC 1483 Routed”, “RFC 1577 Routed” or “RFC 2684 Routed”.
8
Adaptive, much like PPPoE method.
In spd this is called “adaptive”.
9
LLC encapsulated bridged 802.3 Ethernet over AAL5.
In spd this is called “bridged_over_aal5”.
Sometimes this is called “RFC 1483 bridged” or “RFC 2684 bridged”.

You can check the value by issuing a “spd set method” command or change it by using “spd set method X”, where X is the new value.

TCP MSS handling

cFosSpeed manages your TCP MSS (“MSS clamping”) (i.e., the MTU for TCP packets) automatically. The MSS values chosen are chosen so data transfer rates are maximized and ping times are minimized.

But if you want cFosSpeed to leave the MSS alone, you can enter “spd gset handle_mss 0” to instruct it so. Add a “-save” to have the setting saved in cfosspeed.ini.

Reading the trace.txt file

Many different parts of cFosSpeed write to the trace file trace.txt and \WINDOWS\cFosSpeed_Setup_Log.txt. You can distinguish them by the character that separates the time in hh:mm:ss from the milliseconds:

  • 170058.515

    cfosspeed.sys

  • 170058'515

    cfosspeed.exe

  • 170058~515

    speedsrv.dll

  • 170058:515

    cfosspeed.dll

  • 170058_515

    setup.exe

  • 170058-515

    spd.exe

SPD.exe - the cFosSpeed API

Detailed description of spd commands (with examples)

spd command – overview

To use spd commands you can enter them on the cFosSpeed console, which can be open by
START/Programs/cFosSpeed/cFosSpeed Console

If you enter the command spd help you get the following list of commands:

set

set port specific variable (set <v> /? for help)
module <name> on/off
switch module <name> on or off
perf on/off
switch statistics display on/off
close
close LAN port
ping
send a echo request.
sethops
set the TTL for outgoing test pings.
speed
show current shaper settings.
medium
set connection characteristics (medium /? for help)
tsclear
clear the traffic shaping settings for this connection.
class

add a new traffic class or change settings on an existing one.

-speed <x>
sets the speed to <x>. use ‘inf’ to specify infinite speed.
-prio <x>
sets the priority to <x>
-dscp <x>
set DSCP value of packets to <x>. use ‘none’ to not set.
-clear
clears the stats.
cstat
print all classes with stats. accepts a wildcard like ‘*’ or ‘f*’. -clear clear stats afterwards.
filter

show/add/modify filters. -print prints filters after the operation.

<no option>
show all filters
-A <f>
append filter <f> at the end.
-D <num>
delete filter at position <num>
-I <num> <f>
insert filter <f> at position <num>
-R <num> <f>
replace filter at position <num> with filter <f>
-M <old> <new>
move filter from position <old> to <new>
reload

reload settings from ini file.

-filter
reload filters
save

save filter/class settings to ini file.

-class
save classes
-filter
save classes or filters.
addkey <section> <key>
add <key> to <section> in settings.ini
delkey <section> <key>
delete <key> from <section> in settings.ini
showsect <section>
show section <section> in settings.ini
fwstat
show firewall statistics (-clear to clear after display)
fstat
show all filter statistics (-clear to clear after display)
netstat
print global network protocol statistics
pingstat
print ping statistics (-clear clears stats after printing)
cons
list of tcp connections (-cps for cps, -vol for volume)
budget
show active budget’s settings and stats
burst
start a burst of data to check line speed
ports
list all ports
pcnt
show packet counters
ver
print cFosSpeed version info
dump
on/off/in/out/net/app/ign/ip/ipr dump of network packets
gset
set global variable (-save to save it to ini file)
tvstat
print tcpview statistics
prognames
print known program names
reset_budget
reset online budget

Description of spd commands (with examples)

spd set

With spd command set different cFosSpeed ​​values ​​can be set manually. You can get an overview of all values ​​by simply entering  spd set.

If you want to change a value manually,the following command structure applies : spd set = ‘value’.

To get detailed instruction, type set /?

Example: Output from spd set

C:\Programme\cFosSpeed>spd set
avg_time = 4000
budget = 0
burst_cnt = 3
curr_max_rx = 791599
curr_max_tx = 1055763
delay_auto = 1
fixed = 0
high_diff_cnt = 1683
inhibit_bridged = 0
low_diff_cnt = 1360
maxdelay = 24102267
maxiplen = 1492
maxrx = 6030441
maxtxacked = 1433436
maxtxraw = 1445060
medium = adaptive (0)
method = adaptive (8)
mindelay = 8186
net_talk = 1
net_talk_bcast = 0.0.0.0
perf = 0
ping_cnt = 113804
pong_cnt = 103173
record_packet_sizes_rx = 0
reg_id = 3
rx_delay = 20000
rx_limit = inf
rx_width = 1497
tcp_cons = 42836
time_used = 885530
tx_bounce_cnt = 5
tx_delay = 10000
tx_limit = inf
tx_width = 1000
txspeed = 1517313
udp_cons = 42679
vari_fixed = 0
variance = 5121
vollso = 9699544186 (9250M)
volrsc = 0 (0)
volrx = 19347327844 (18.01G)
voltxacked = 10165906693 (9694M)
voltxraw = 11648109237 (10.84G)
wperf = 0

Example: Changing the fixed value to 1

C:\Programme\cFosSpeed>spd set fixed=1
fixed = 1
spd ping

The spd command ping sends a single measuring ping. The current value of the ping time then flashes briefly in the numerical cFosSpeed ​​status window. In the example this is the value 8 ms

Example

C:\Programme\cFosSpeed>spd ping

set

set port specific variable (set <v> /? for help)
module <name> on/off
switch module <name> on or off
perf on/off
switch statistics display on/off
close
close LAN port
ping
send a echo request.
sethops
set the TTL for outgoing test pings.
speed
show current shaper settings.
medium
set connection characteristics (medium /? for help)
tsclear
clear the traffic shaping settings for this connection.
class

add a new traffic class or change settings on an existing one.

-speed <x>
sets the speed to <x>. use ‘inf’ to specify infinite speed.
-prio <x>
sets the priority to <x>
-dscp <x>
set DSCP value of packets to <x>. use ‘none’ to not set.
-clear
clears the stats.
cstat
print all classes with stats. accepts a wildcard like ‘*’ or ‘f*’. -clear clear stats afterwards.
filter

show/add/modify filters. -print prints filters after the operation.

<no option>
show all filters
-A <f>
append filter <f> at the end.
-D <num>
delete filter at position <num>
-I <num> <f>
insert filter <f> at position <num>
-R <num> <f>
replace filter at position <num> with filter <f>
-M <old> <new>
move filter from position <old> to <new>
reload

reload settings from ini file.

-filter
reload filters
save

save filter/class settings to ini file.

-class
save classes
-filter
save classes or filters.
addkey <section> <key>
add <key> to <section> in settings.ini
delkey <section> <key>
delete <key> from <section> in settings.ini
showsect <section>
show section <section> in settings.ini
fwstat
show firewall statistics (-clear to clear after display)
fstat
show all filter statistics (-clear to clear after display)
netstat
print global network protocol statistics
pingstat
print ping statistics (-clear clears stats after printing)
cons
list of tcp connections (-cps for cps, -vol for volume)
budget
show active budget’s settings and stats
burst
start a burst of data to check line speed
ports
list all ports
pcnt
show packet counters
ver
print cFosSpeed version info
dump
on/off/in/out/net/app/ign/ip/ipr dump of network packets
gset
set global variable (-save to save it to ini file)
tvstat
print tcpview statistics
prognames
print known program names
reset_budget
reset online budget

Description of spd commands (with examples)

spd set

With spd command set different cFosSpeed ​​values ​​can be set manually. You can get an overview of all values ​​by simply entering  spd set.

If you want to change a value manually,the following command structure applies : spd set = ‘value’.

To get detailed instruction, type set /?

Example: Output from spd set

C:\Programme\cFosSpeed>spd set
avg_time = 4000
budget = 0
burst_cnt = 3
curr_max_rx = 791599
curr_max_tx = 1055763
delay_auto = 1
fixed = 0
high_diff_cnt = 1683
inhibit_bridged = 0
low_diff_cnt = 1360
maxdelay = 24102267
maxiplen = 1492
maxrx = 6030441
maxtxacked = 1433436
maxtxraw = 1445060
medium = adaptive (0)
method = adaptive (8)
mindelay = 8186
net_talk = 1
net_talk_bcast = 0.0.0.0
perf = 0
ping_cnt = 113804
pong_cnt = 103173
record_packet_sizes_rx = 0
reg_id = 3
rx_delay = 20000
rx_limit = inf
rx_width = 1497
tcp_cons = 42836
time_used = 885530
tx_bounce_cnt = 5
tx_delay = 10000
tx_limit = inf
tx_width = 1000
txspeed = 1517313
udp_cons = 42679
vari_fixed = 0
variance = 5121
vollso = 9699544186 (9250M)
volrsc = 0 (0)
volrx = 19347327844 (18.01G)
voltxacked = 10165906693 (9694M)
voltxraw = 11648109237 (10.84G)
wperf = 0

Example: Changing the fixed value to 1

C:\Programme\cFosSpeed>spd set fixed=1
fixed = 1
spd ping

The spd command ping sends a single measuring ping. The current value of the ping time then flashes briefly in the numerical cFosSpeed ​​status window. In the example this is the value 8 ms

Example

C:\Programme\cFosSpeed>spd ping
spd sethops

With the command sethops you can set the ttl value of the cFosSpeed measure pings. Just set the number i for the value. The output is: “addhops 2+i (ttl i)“, where first you get the variation from the default value (2). Then you get the current and new ttl-value.

Hint: The command only works, if you are online. If you are not you will get the error message: cannot perform command; section name still unknown

Example: set ttl-value to 5

C:\Programs\cFosSpeed>spd sethops 5
add_hops = 3 (ttl 5)

see also:
http://en.wikipedia.org/wiki/Time_to_live

spd speed

With the spd command “speed”, you get an overview of various traffic shaping values. The most important are:

  • maxrx – maximum download bandwidth in cps
  • method – Information about the transmission method used: PPPoE, PPPoA, PPPtP, Cable, etc.
  • addhops – here the current ttl value is displayed in brackets.
  • pingcnt – total number of pings sent
  • pongcnt – total number of ping responses (pongs) received
  • txspeed – Upload bandwidth in cps

Example:

C:\Programme\cFosSpeed>spd speed
Current shaper settings (v13.00.3000):
maxtxraw=1445K maxtxacked=1433K maxrx=6030K avg_time=4000
mindelay=7441 variance=3896 vari_fixed=0
reg_id=3 method=adaptive (8) pinger=udp_km3
voltxraw=10.86G voltxacked=9704M volrx=18.36G time_used=10d 7h
maxiplen=1492 rx_limit=inf tx_limit=inf inhibit_bridged=0
ping_cnt=115966 pong_cnt=105300 (90.8%) burst_cnt=3
adapter=WIFI link speed: rx=108.3M tx=43.87M
txspeed=1517K fixed=0 tx_bounce_cnt=5 calibrated=100
tx delay=10000-14896 rx delay=20000-25393 delay_auto=1
spd tsclear

The command “spd tsclear” clears the traffic shaping settings for the current connections. The current data in the corresponding section of the data.ini file is deleted. The connection can now be recalibrated.

Example:

C:\Programme\cFosSpeed>spd tsclear
traffic shaping settings cleared.
spd dump

With the “dump” command you can write a text file (dump.txt) that records all datapackets.

Example:

C:\Programme\cFosSpeed>spd dump ip
dump ip (64)
dump data: IP packets.

C:\Programme\cFosSpeed>spd dump off
dump off (0)

functions:

    on  : turn on writing of dump file
    off : turn off writing of dump file
    in  : dump only incoming data packets
    out : dump only outgoing data packets
    net :
    app :
    ign :
    ip  : dump IP packets (possibly fragmented)
    ipr : dump IP datagrams (after IP reassembly).
spd cstat

The “cstat” command provides upload statistics for sent data packets of the individual cFosSpeed ​​traffic shaping classes (highest, higher, high, default, low and lowest). The first line of the command output indicates whether traffic shaping is enabled. The upload bandwidth in cps (txspeed) and the maximum queue overflow value are also specified here.

Example:

C:\Programme\cFosSpeed>spd cstat
shaping is currently enabled; txspeed = 19659, max_queue_size = 58,977

class highest -prio 100
  sent            2,431 (  4%) packets         68,068 (  0%) bytes
  in queue            0        packets              0        bytes

class higher -prio 90
  sent           16,777 ( 34%) packets        671,716 (  3%) bytes
  in queue            0        packets              0        bytes

class high -prio 80
  sent           10,489 ( 21%) packets      1,235,682 (  5%) bytes
  in queue            0        packets              0        bytes

class default
  sent           14,593 ( 29%) packets     19,897,796 ( 90%) bytes
  in queue            0        packets              0        bytes

class low -prio 0 -speed 25%,-10
  sent            4,820 (  9%) packets        221,720 (  1%) bytes
  in queue            0        packets              0        bytes

class lowest -prio 0 -speed 25%,-30
  sent                0 (  0%) packets              0 (  0%) bytes
  in queue            0        packets              0        bytes

class drop
  dropped             0        packets              0        bytes

queue overflow        0        packets              0        bytes
spd ver

The “spd ver” command outputs information about the currently installed version. The version number, build number and installation date including the installation time are displayed. You will also receive information about the operating system and processor used. Finally, the current installation date is stated as well as the installation and info directories of cFosSpeed.

Example:

C:\Programme\cFosSpeed>spd ver
This is cFosSpeed (x64) v13.00, build 3000
Copyright (c) 2003-2023 Atlas Tech Solutions SM PC -- https://atlas-cfosspeed.comOS: Windows 10 Home Multiprocessor Free (x64) (16 procs) v10.00.22631, LangId 0409
OS build is ???? (x64) (22621.1.amd64fre.ni_release.220506-1250)
CPU: 13th Gen Intel(R) Core(TM) i7-1360P, ID 0b06a2h (06_bah, Raptor Lake (Raptor Lake-P))
Time now: 2024-02-07 15:27:44.987 (UTC+1)
Load time: 2024-02-07 15:27:14.748 (UTC+1)
CPU speed: 5762 cfops
Using performance counter running at 10 MHz
Timer resolution is 4 msec (coarsest=15.625)
Driver base address is 0xfffff8062d4f0000; timestamp is 65841734 (2023-12-21 10:45:08 UTC)
Installation directory is "C:\Program Files\cFosSpeed\"
Programdata directory is "C:\ProgramData\cFos\cFosSpeed\"
Licensed to (End-user license) [A10000]
spd gset

With the copmmand spd “gset” some of the cFosSpeed variables are listed. They switched on (1), off (0) or set to certain value. To switch a function on and off or set it to a certain value you can use commands with the folowing structure “spd gset <function>=X” (where X is 1, 0 or the value to be set)

If you add “-save” you can save the settings and they will be also set after the next reboot of your system.

Enter “spd gset” and you will get:

C:\Programs\cFosSpeed>spd gset
analyze_rtp = 1
auto_burst = 1
avoid_loss = 1
balloon_no_pings = 0
bulk_detect = 1
delay_ndis_completions = 0
dump_arp = 0
dump_ascii = 1
dump_framing = 0
dump_relseq = 0
dump_sessions = 0
dump_tcp_data = 0
dump_udp_data = 1
dump_wshark = 0
expand_rwin = 1
expand_rwin_dest_time = 200
fg_detect = 1
filter_fix = 3
firewall = 0
func_trace = 0
fwlog = 1
global_counters = 0
handle_mss = 0
handle_tsopt = 0
l7_detect = 1
latency = 2
log_sessions = 0
max_dump_size = 16777216 (16 M)
max_expand_rwin_time = 300
max_fwlog_size = 4194304 (4 M)
max_pinglog_size = 1048576 (1 M)
max_queue_time = 1000
max_session_dump_size = 100000
max_session_log_size = 1048576 (1 M)
max_trace_size = 16777216 (16 M)
mcast_router = 0
net_talk_default = 1
net_talk_port = 889
passthru = 0
patch_dns_ttl = 0
ping_fixed = 0
pinglog = 0
prioritize_ssl = 1
reg_id_default = 3
resend_in_queue = 0
router_info = 1
router_stats = 1
rtp_trace = 0
rx_shape = 1
save_in_session = 1
send_usage_metadata = 1
shape = 1
store_dns_names = 1
strict_rtp_check = 1
tcp_warn = 0
traffic_stat = 1
tx_shape = 1
udp_timeout = 10000
user1 = 0
vari_fixed_default = 0
vari_trace = 0
worker_threads = 0
examples

Turn on the firewall:

d:\tools>spd gset firewall=1
firewall = 1

Turn off permanently Traffic Shaping:

C:\Programs\cFosSpeed>spd gset shape=0 -save
shape = 0
value saved.

Turn on/off packet passthru:

C:\Programs\cFosSpeed>spd gset passthru=1
passthru = 1

C:\Programs\cFosSpeed>spd gset passthru=0
passthru = 0

Possible values:

     0 : off
     1 : ignore all packets, pass them on to the next driver immediately.
     2 : ignore all packets, send them through the cFosSpeed connection
         engine, but don't do anything with them.

Disable writing of firewall log file fwlog.txt:

C:\Programme\cFosSpeed>spd gset fwlog 0 -save
fwlog = 0
value saved.

prevent cFos / cFosSpeed from saving data.ini, budget and traffic stats every 10 minutes: “spd gset save_in_session 0 -save

C:\Programme\cFosSpeed>spd gset save_in_session 0 -save
save_in_session = 0
value saved.

Specify after how many seconds of inactivity the LAN port (and status window) will be closed automatically:spd gset port_close_time ‘n’ “

C:\Programme\cFosSpeed>spd gset port_close_time 5
port_close_time = 5
spd reset_budget

With the command spd “reset_budget [n]” you can reset online budget with the number ‘n’ (n=0..9). If ‘n’ is omitted the current budget is reset.

Skins

Display traffic shaping statistics on your phone

cFosSpeed Phone Skins on a Fairphone

Beginning with v9.05 build 2090 cFosSpeed has a build-in web server, so you can display the status window on your phone or tablet, in addition to your desktop. This is especially helpful for fullscreen applications like games or videos. Here is how to configure it:

  1. Start “Options/Settings” from the cFosSpeed context menu and set a server password in the “Preferences/Enable Phone Skins” dialog. The web server will need authorization if you access it from another machine than your local computer.
  2. Open the context menu and select the first option (cFosSpeed vX.XX…) to display your local IP addresses.
  3. Open the browser on your phone or tablet and enter the following address: http://[Your IP address]:1487/cfosspeed/skin.htm[Your IP address] is usually the first listed address from step 2, but you can try all others if the first doesn’t work.
  4. Now fill the authentification dialog with “cfosspeed” as username and the server password you configured under “Preferences/Enable Phone Skins” as password.

Note: You can also view and prioritize your current connections from your phone or tablet. Simply open http://[Your IP address]:1487/cfosspeed/console.htm in your browser. This dialog works as if started from the cFosSpeed status window or context menu.

Note: You need Windows 7 or higher to use the built-in web server.

Set password for Phone Skins
Your IP address in the cFosSpeed context menu

cFosSpeed Status Windows

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Metro Skin
Deactivating the cFosSpeed status window

You can deactivate the cFosSpeed status window by right-clicking on it, selecting Window Settings and then deactivating “Auto-show/Auto-hide”.

Default-Skin (graphical)

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Default-Skin (graphical)

The standard skin has been designed to track the data stream graphically.

Ping times are represented by green, yellow, or red waves in the standard skin’s graphical display. Actual ping times depend in significant part on the number of simultaneous up- and downloads. If this number rises, latency will likely increase as well. To reach maximum transfer rates during download, the ping time for each download must therefore be raised briefly.

Switching between Graphical and Numerical Display of the Default Skin:

By clicking on the corresponding buttons, it is possible to toggle between graphical and numerical skin display.

Numerical Display
Deactivating the cFosSpeed status window

You can deactivate the cFosSpeed status window by right-clicking on it, selecting Window Settings and then deactivating “Auto-show/Auto-hide”.

Aquarium Icon Skin

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Icon skin

You can switch between the 3 states of the Icon Skin and point out different Displays. The position of the switch is in the middle of the skin (see picture).

Deactivating the cFosSpeed status window

You can deactivate the cFosSpeed status window by right-clicking on it, selecting Window Settings and then deactivating “Auto-show/Auto-hide”.

Liquid Crystal Skin

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Liquid Crystal Skin

Transfer rate in %

The vertical bar graphs scrolling from the right to the left show the history of transfer as percentage of the maximum reached up-/download transfer rate since the last installation or calibration of cFosSpeed. The total and local transfer rates are related to running cFosSpeed in multi-user mode. Local shows the transfer rates for the current computer only, while total – the amount of traffic within the local network.

The other display methods are the same as in the Liquid Crystal History skin

The background

The transparent background of the status window can be replaced by an opaque one by applying (under Vista and Windows 7 with admin rights) the following changes to the file net.ini in the directory [cFosSpeed install directory]\liquid_crystal_skin:

line 7: background=background.tga -> ;background=background.tga
line 8: ;background=matrix.tga -> background=matrix.tga

The file matrix.tga (in the same directory) can be modified to your needs by using a suitable graphics program.

Deactivating the cFosSpeed status window

You can deactivate the cFosSpeed status window by right-clicking on it, selecting Window Settings and then deactivating “Auto-show/Auto-hide”.

Liquid Crystal History Skin

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Liquid Crystal History Skin

Shape level

The brighter the indicator is visible the more Traffic Shaping is working for each of the transfer directions.

Transfer rate in %

The horizontal bar graphs for upload and download show the current transfer as percentage of the maximum reached up-/download transfer rate since the last installation or calibration of cFosSpeed. The total and local transfer rates are related to running cFosSpeed in multi-user mode. Local shows the transfer rates for the current computer only, while total – the amount of traffic within the local network.

The background

The transparent background of the status window can be replaced by an opaque one by applying (under Vista and Windows 7 with admin rights) the following changes to the file net.ini in the directory [cFosSpeed install directory]\liquid_crystal_skin:

line 7: background=background.tga -> ;background=background.tga
line 7 8: ;background=matrix.tga -> background=matrix.tga

The file matrix.tga (in the same directory) can be modified to your needs by using a suitable graphics program.

Deactivating the cFosSpeed status window

You can deactivate the cFosSpeed status window by right-clicking on it, selecting Window Settings and then deactivating “Auto-show/Auto-hide”.

Traffic Analysis Skin

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Traffic Analysis Skin
Transfer rate in %

The slot graphs show the current transfer rates as percentage of the maximum reached transfer rate since the last installation or calibration of cFosSpeed.

The slots

The configuration of slots 1-10 (as a part of the cFosSpeed settings) can be accessed by either clicking on the Open slot configuration dialog button of the skin or using the Options/Settings menu entry of the systray icon. Each slot can be configured and renamed individually.

The background

The transparent background of the status window can be replaced by an opaque one by applying (under Vista and Windows 7 with admin rights) the following changes to the files net.ini and net_l.ini in the directory [cFosSpeed install directory]\traffic_analysis_skin:

line 7: background=background_blank(_l).tga -> ;background=background_blank(_l).tga
line 8: ;background=background_color(_l).tga -> background=background_color(_l).tga

The files background_color(_l).tga (in the same directory) can be modified to your needs by using a suitable graphics program. The transparent area of the images must not be changed.

Deactivating the cFosSpeed status window

You can deactivate the cFosSpeed status window by right-clicking on it, selecting Window Settings and then deactivating “Auto-show/Auto-hide”.

Traffic Analysis Skin

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Traffic Analysis Icon Skin

Transfer rate in %

The slot graphs show the current transfer rates as percentage of the maximum reached transfer rate since the last installation or calibration of cFosSpeed.

The slots

The configuration of slots 1-10 (as a part of the cFosSpeed settings) can be accessed by either clicking on the Open slot configuration dialog button of the skin or using the Options/Settings menu entry of the systray icon. Each slot can be configured and renamed individually.

Traffic Analysis Net Talk Icon Skin

Instead of displaying the slots 1-10, this skin shows the local up- and download transfer rates in bright green and orange while the total rates (within your local network) in darker green and orange.

Deactivating the cFosSpeed status window

You can deactivate the cFosSpeed status window by right-clicking on it, selecting Window Settings and then deactivating “Auto-show/Auto-hide”.

Traffic Analysis Insight Skin

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Traffic Analysis Insight Skin

Transfer rate in %

The slot graphs show the current transfer rates as percentage of the maximum reached transfer rate since the last installation or calibration of cFosSpeed

The slots

The configuration of slots 1-10 (as a part of the cFosSpeed settings) can be accessed by either clicking on the Open slot configuration dialog button of the skin or using the Options/Settings menu entry of the systray icon. Each slot can be configured and renamed individually.

The background

The transparent background of the status window can be replaced by an opaque one by applying (under Vista and Windows 7 with admin rights) the following changes to the files net(_n).ini and net(_n)_l.ini in the directory [cFosSpeed install directory]\ta_insight_skin:

line 7: background=background_blank(_l).tga -> ;background=background_blank(_l).tga
line 8: ;background=background_color(_l).tga -> background=background_color(_l).tga

The files background_color(_l).tga (in the same directory) can be modified to your needs by using a suitable graphics program. The transparent area of the images must not be changed.

User Skin/Keyboard LEDs

All you need to know about the cFosSpeed Status Windows and Skins

The cFosSpeed Status Windows display important statistics about your current Internet connection. You should choose the skin most useful to you, e.g. the icon skins which integrate into the task bar or the Traffic Analysis skin with real-time statistics about your current different traffic types. Please vote on the different skins. This will help us when designing the next skin window.

Shinnher’s Skin

This compact skin was designed by a cFosSpeed user, who just modified the Liquid Crystal.
You can download the Skin from here: >Shinnher’s Skin

Use keyboard LEDs to display Traffic Shaping information

cFosSpeed can use the Num Lock and Scroll Lock LEDs to display information about the current Internet traffic. This is especially useful for gamers and users of fullscreen application, who can’t see the cFosSpeed status window. By using the keyboard LEDs the most important traffic statistics are indicated: >Keyboard LEDs

Deactivating the cFosSpeed status window

You can deactivate the cFosSpeed status window by right-clicking on it, selecting Window Settings and then deactivating “Auto-show/Auto-hide”.

Troubleshooting

cFosSpeed and torrents

Bittorrent

Fast BitTorrent download

Again and again the problem arises that with BitTorrent downloads Traffic Shaping does not function well. We checked the problem and found out here through tests, that the RX-rate drops, if you download with too many connections simultaneously.

The result of our tests is: Downloads are substantially faster and Ping-times better if one limits the amount of the connections to for example 50 in the BT-client.

Below follows documention regarding the issue. Unfortunately so far we haven’t found the exact reason for this problem.

Tests were run on a DSL-16000/1000 connection provided by Deutsche Telekom with a 1950kb/128kb flow-rate. Testing occured via constantly reloading Debian CD-Images with uTorrent 1.6.1 every 30 minutes.

This is what the transfer looks like with the limitation of 50 connections maximum:

The mean DL-rate scored at 1613 kb/sc, the mean ping at 63 msec.

And with 850 connections:

The mean DL-rate scored at 1009 kb/sec, the mean ping at 97 msec.

Meaning: It is neither advisable for appropriate ping times nor for fast downlaods. On top of this the many connections also play out on CPU load (with about 50% used rather than about 25%).

This effect has emerged earlier when dealing with a DSL-2000 connection and azureus. This does not seem to be the cause here, though. Furthermore it does not make any difference whether RX-Shaping is switched off or on.

We are continually working on an explanation as well as a solution for this problem. Until then we can offer only one measure, that is, however, very simple: Limit the amount of connections. We recommend a value of 50. Torrent clients will only decrease the amount of connections when a download is completed or if you restart.

Windows – Balloontip, at over 30 connections

cFos and cFosSpeed generate a Windows – Balloontip, once so many connections transfer data that RX-shaping can hardly stop them anymore. This is the case at 30 or more connections.

cFos and cFosSpeed always generate these baloon tips if rx-shaping has reduced connections to a maximum for 10 seconds at a time. If other connections are added at this point cfos and cfosspeed respectively is no longer able to keep the port regarding rx from being congested and ping rates increase.

If this balloon is, however, undesired and the user is not able or does not want to reduce the amount of used connections he or she can switch off the ballon with the command spd gset balloon_many_cons 0 -save.

Driver Not Loaded

Problem: “Driver not loaded”

If the message “Driver not loaded” appears into a the cFosSpeed menu after a cFosSpeed-installation, there can be several reasons.

Please first follow this steps:

0. cFosSpeed Installation in Windows Safe Mode

Check if the cfosspeed installation in Windows Safe Mode is possible.

  1. Uninstall cFosSpeed
  2. Reboot the system in Windows Safe mode
  3. Install the latest cFosSpeed Version in Windows Safe Mode
  4. Reboot the system
1. Check the network installation
  1. Uninstall cFosSpeed
  2. Reboot the system
  3. Unistall all network adapters
  4. Reboot the system
  5. Do a fresh installation of all network adapters using the latest drivers offered by the vendors
  6. Reboot the system
  7. Install the latest cFosSpeed Version

HINT: Please check your network adapters installation in detail!

At ‘view’, turn on the feature show hidden devices.
Also check the installation of the network adapters into the Windows safe mode!

2. Gradual examination of the installation of all network adapters

The only way to detect precisely which network adapter conflicts with the installation of cFosSpeed is to go through with the check-up one by one.

To do that we recommend the following procedure:

  1. Uninstall cFosSpeed
  2. Uninstall all network adapters (see also: List of hidden devices within the Windows device manager!)
  3. Step-by-step installation of all network adapters as follows:
    1. First of all install the network adapter necessary for your Internet connection.
    2. Install cFosSpeed, reboot the system and check if it is functioning.
    3. Install the next network adapter, reboot the system and check if it is working.

With this method you can find out which network adapter causes the problem. Now you can remove the binding with the cFosSpeed protocol from this particular adapter.

Firewall, virus-protection and other security software often also installs “virtual” network adapters. Please remove the bindings for these adapters, too.

3. Check your security software
3.1 Configuration of security software

The starting of the cFosSpeed service (cfosspeed6.sys) must be allowed by all security programs (Firewall, Anti-Spy- , Anti-Virus-Software, etc.).
Make sure the file cfosspeed6.sys. in the directory C:\Windows\System32\Drivers\ exists.

3.2 Installation conflicts

If your security software conflicts with cFosSpeed, please try the following:

  1. Completely uninstall the security software
  2. Completely uninstall cFosSpeed
  3. Reboot
  4. Install the latest version (https://atlas-cfosspeed.com/downloads/) of cFosSpeed and check whether the connection problems persist.
  5. Reboot
  6. Reinstall and configure security software to cooperate with cFosSpeed.
  7. Reboot

This procedure works for: Kaspersky Internet Security 2010, ZoneAlarm Pro (v 9.3.037.000)

4. Windows-Driver-Signing

You need to ignore all warnings concerning the digital signature of cFosSpeed during the installation. You should continue the installation if this message appears. Please re-install cFosSpeed taking care of this point.

5. Reset Internet Protocol (TCP/IP) in Windows XP

In some cases a solution was to reset the Internet Protocol (TCP/IP) in Windows XP. This avoids an annoying complete new installation of Windows. You can find an official description here: How to reset Internet Protocol (TCP/IP) in Windows XP

You can also use the program WinSock XP Fix to do the reset automatically.

6. Check bindings of the cFosSpeed protocol

Steps:

  1. Go to: /Options/Connections/
    Set ‘no’ for all Connections, which should not use traffic Shaping
    Set ‘yes’ only for the Router Connection which should use cFosSpeed Traffic Shaping
  2. Safe the changes by clicking on “Close Window”
  3. Reboot the system
  4. Go to: START/Control Panel/Network Connections and check if the ‘cFosSpeed protocol for faster Internet connections’ (Click right on the connection and choose ‘Properties’) is activated only for the network adapters chosen in step 1.

 

7. Windows 7 – 32 and 64 bit versions

In case you experience install problems with cFosSpeed version 10.12 or higher on Windows 7 please check if this Windows Security Update does help:

Security Update for Windows 7 (KB3033929)
Security Update for Windows 7 for x64-based Systems (KB3033929)

If the problem persists…

…please send us these files:

  • trace.txt (cFosSpeed Directory)
  • cFosSpeed_Setup_Log.txt (Windows Directory)

As an additional step you can install cFosSpeed using the Option -ide

Save the installation file (i.e., cfosspeed-400.exe) on your system (i.e., at c:\install\) and start it via START/Init/ using the command ‘c:\install\cfosspeed-400.exe -ide’. Afterwards please send us the files indicated above.

Issues with Pings

First of all, download and install the latest cFosSpeed version:

cFosSpeed – problems with pings

Once activated, cFosSpeed will be sending ping packets to the Internet to measure how “congested” the connection is. Without these packets, cFosSpeed Traffic Shaping won’t work.

cFosSpeed will only send pings if you are up or downloading at a certain minimum rate. Therefore, the easiest way to confirm that pings are actually getting through is to start an upload that will take at least 30 seconds (e.g., by sending yourself a large e-mail message). Then, check and see if the message balloon appears (see below).

Should there be no response to these pings for an extended period of time, cFosSpeed will indicate this by displaying a balloon. You should then proceed as follows:

Notes on some specific firewalls or routers

AVM Fritzbox:

The AVM FritzBox for several versions of hard- and firmware comes with an included PPPoE Filter. This filter should be switched off, because it blocks IcmP and therefore the cFosSpeed calibration pings will not be transmitted:

Sygate Personal Firewall:

Under “options,” go to the “security” tab and deactivate “DoS detection.” This is necessary because otherwise the firewall will wrongly classify the cFosSpeed calibration process as a DoS attack.

Users have also reported that the “Anti-IP Manipulation” must be turned off for cFosSpeed to run without problems.

Agnitum Outpost Firewall:

Here, users have reported that in the IcmP settings you have to check the “Echo reply – outgoing” box, so the firewall doesn’t block outgoing replies.

Eset Smart Security:

IcmP Setting for Eset Smart Security to allow cFosSpeed pings:

Orange Livebox:

Settings for the Orange livebox with built in Inventel router to allow cFosSpeed pings:

Kaspersky Anti-Hacker:

You can set special rules for each application. In this case for SPD.EXE (cFosSpeed service). This allows the cFosSpeed communication. Further you can disable that Anti Hacker detects “DoS” attacks, to avoid false Anti-Hacker actions.

You should also activate the option “Allow outgoing IcmP packets with IcmP-Code: Echo Reply”.

The IcmP Settings should be:

  • IcmP Type 0 (Echo Reply) incoming : allow
  • IcmP Type 8 (Echo) outgoing : allow
  • IcmP Type 11 (Time Exceeded) incoming : allow
  • Other IcmP Types incoming and outgoing : allow
 
Draytek Router:

Some users have reported that the option “Ip Filter/Firewall Setup – DoS defense” has to be switched off cause otherwise the router filters cFosSpeed PING Packets.

Linksys wag54g router:

Some users have reported that the option “Block Anonymous Internet Requests” has to be switched off cause otherwise the router blocks IcmP answers.

TP-Link Router:

TP-Link offers a new firmware, which now allows pings. Please go to the TP-Link website and install the most recent firmware.

Attention: Following user reports, this seems to not apply to at least the models TL-R460, TL-R860 and TL-R402M.

PC Cillin 2007:

To allow the Windows tracert command for PC Cillin 2007 just follow this steps:

  1. Open the PC Cillin main console -> network- and firewall-control -> personal firewall -> settings -> select account -> edit -> network control -> add
  2. Now you can add 2 new protocols.
  3. For outgoing connections:
    (default) allow for outgoing connections
    (protocol) icmp
    (port) all ports
    (ip-settings) all ip-settings
  4. For incoming connections just repeat step 3 for incoming connections
AVG Internet Security:

AVG setting for cFosSpeed to work properly:

Retrieving and interpreting cFosSpeed’s ping statistics

Open the cFosSpeed console and type in “spd pingstat”

This should yield an output similar to the one below:

Ping statistics:

Total ping requests      107,686
  done                   107,686     (1)
  ...and only            107,686

Total pings sent         106,949
  strong                 106,778
  ...and new             106,778     (2)

Total pongs              106,804
  found                  106,566
  ...and strong          106,519
  ...and strong reply    106,519     (3)
  ...and used            106,519     (4)

Ping outage statistics:
  1 ping in a row 33 times
  5 pings in a row 1 time

Ping src/dst: 192.168.0.100 to 194.95.249.23, ttl 3
Ethernet src/dst: 00:0e:a6:57:9b:0b to 00:11:95:78:27:a4

The three values given for “total ping requests” should be identical. In case there is any great deviation among these, please report it to us.

The value marked (1) should be approximately the same as the one next to (2). If that is not the case, it is typically strong evidence for a firewall blocking data transmission. As above, a small deviation of several percent isn’t dramatic, though.

Values for (3) and (4) should likewise be about the same. If not, do send us a mail.

By the same token, values (2) and (3) should be roughly identical. If this is not so, this usually indicates pings and their replies get lost somewhere “in the Net” (which happens quite a lot). Unfortunately, there is nothing we can do about that.

When writing us an e-mail, please refer to step 3 below regarding what files to attach to your message.

Hint:
If the ping problems remain while the firewall is deactivated, please uninstall your firewall and try again.

Do you have a firewall?

Check if you have a firewall running on your system. If so, make sure the SPD.EXE program (cFosSpeed service) is allowed to send and receive IcmP data. Also note that CFOSSPEED.EXE does not access the Internet.

Important!
When the configuration of your firewall for IcmP data avoids that answers to the cFosSpeed measure pings are allowed, cFosSpeed Traffic Shaping will not work. You can check this with a simple tracert command.

1. Enter tracert command

Click Start -> Programs -> cFosSpeed -> Open console, and type in “tracert  https://atlas-cfosspeed.com”. If everything checks out, it should return something like this:

Tracing route to https://atlas-cfosspeed.com [194.95.249.23] over a maximum of 30 hops:

1    56 ms    56 ms    55 ms  217.0.116.148
2    55 ms    54 ms    54 ms  217.0.74.50
3    54 ms    53 ms    55 ms  k-ea1.K.DE.net.DTAG.DE [62.154.55.154]
4    61 ms    62 ms    61 ms  h-eb1.H.DE.net.DTAG.DE [62.154.49.166]

etc.

 What is absolutely crucial here is that there are time values (and not asterisks) displayed in columns 2 through 4.

If that’s the case, skip to step 3 below.

However, pings are being blocked if the output reads as follows:

Tracing route to https://atlas-cfosspeed.com [194.95.249.23] over a maximum of 30 hops:

1     *        *        *     Request timed out.
2     *        *        *     Request timed out.
3     *        *        *     Request timed out.
4     *        *        *     Request timed out.

etc.

In this case, continue on with step 2

2. Tracert does not work
 

Tracert does not seem to be working on your system. If you do not use a firewall or you use one that does let pings of SPD.EXE through, pings and incoming replies are likely being blocked by another component.

If you are using a router, it must also be set to allow pings to pass through. Configure your router so that cFosSpeed can send outgoing pings (IcmP echo requests – type 8) and receive ping replies (IcmP echo reply – type 0) in addition to time-outs (or IcmP TTL/time exceeded – type 11). You may have to restart your router for these changes to take effect.

Now repeat step 2 above, using the “tracert https://atlas-cfosspeed.com” command. Should there still be no pings coming through, chances are your Internet provider may be filtering such data out. In this case, you should contact your provider.

Last possibility: Disable your firewall and try again. If this still doesn’t help, uninstall your firewall and try again.

3. Tracert is working

Tracert is working, but the message balloon still appears: Please check again if your firewall software isn’t blocking the pings from SPD.EXE after all.

If, during an upload running at maximum speed (or close to it), cFosSpeed is at any time displaying ping times on the status window, pings are not being filtered by your system but are lost somewhere in the Internet instead. The reliability of ping data can vary widely among different Internet providers. It may also be affected by other factors such as network load, over which cFosSpeed has naturally no control.

If Tracert is working but ping time values never appear on the status window, please send us an e-mail and attach copies of TRACE.TXT and TRACE_OLD.TXT from your cFosSpeed directory. Please make sure to send us these files shortly after the problem has occurred so that they contain all data necessary for closer analysis.

Scroll to Top