Traffic Cop is an ethernet bandwidth manager/traffic shaper as well as traffic analysis tool for Windows 2000 and Windows XP. Traffic Cop allows you to maintain bandwidth restrictions based on a set of rules, similar to the way a firewall works, except instead of preventing traffic, you can put bandwidth limitations on it.
There are a few commercial tools for Windows that do this, but as far as I know, no open source tools.
I have just created the project on SourceForge, so there's not much to see. I plan on having the core of the NDIS driver up within a week or two, as time permits. The basic proof of concept has been made, but it is prototype code and will not be released.
Traffic Cop will be built on three components:
NDIS Intermediate Layer Driver: This driver sits between the protocol stack and the ethernet adapter. Using a set of filters and rules, it will manage all the traffic, deciding which packets should be sent and when.
Windows Service Component: A Windows service will be installed on the machine that has the driver installed. The service will handle the actual communication between the GUI app and the driver itself. The GUI app will communicate with the service either locally or remotely. This allows the administrator the ability to manage the bandwidth of multiple machines from any location on the network.
GUI App: This will be a standard windows application that will communicate with the Windows service, allowing administrators to create and edit both filters and rules
My experience writing NDIS device drivers is quite limited. While my prototype seems to indicate that this is certainly doable by me, I would appreciate help with it from someone with more intimate knowledge of Windows device drivers. In particular, there are a variety of performance issues that are inherent to writing device drivers and I am not familiar with all of them. I'm also not knowledgeable enough about the device drivers to know for sure if an NDIS intermediate layer driver is the best method. So, if you feel you might be able to help out, I'd appreciate help. You can e-mail me at pdavis68@hotmail.com
In addition, I could also use help on developing the communication protocol between the GUI app and the service. My biggest concern in this area is security, so if someone could provide me with some ideas on how to handle secure communication between these two components, that would be great.
My general plan is as follows; I will write the NDIS intermediate layer driver. The driver will use the registry as the source of filter and rule information. In this way, the NDIS driver can be built before either the service or the GUI app and will allow the creation of a simple prototype GUI app that only works locally to use for testing the driver
Once the driver appears functional and relatively stable, the GUI app and Windows service will be created together. Depending on what sort of support I get, I would hope to have a beta release by the end of the year, possibly sooner.
Project Hosted on: