ack
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 36
Cutter 1.03
Cutter is an TCP/IP Connection cutting on Linux Firewalls and Routers. more>>
Cutter is an TCP/IP Connection cutting on Linux Firewalls and Routers.
Cutter is an open source program that uses the FIN-ACK-RST packet technique described above to abort TCP/IP connections routed over the firewall or router on which it is run. It can be called using one of the following four syntaxes.
cutter ip-address
Example: "cutter 10.10.0.45"
Cuts all connections passing through the firewall between any ports on the specified ip-address (either a "private" or "public" address) and any other hosts. This can be used to close down all incoming connections to a particular server, all outgoing connections from a particular client or all outgoing connections to a server.
cutter ip-address port
Example: "cutter 200.1.2.3 80"
Cuts all connections to or from the specified ip-address/port pair. This allows the user to be a little more specific than the previous example and allows targetting of specific services on specific hosts.
cutter ip-address-1 port-1 ip-address-2
Example "cutter 200.1.2.3 22 10.10.0.45"
Cuts all connections between ip-address-2 and ip-address-1/port-1. This allows the user to cut connections between a specified "client" and a particular service on a specified host. Our example closes host 10.10.0.45s SSH connection to server 200.1.2.3.
cutter ip-address-1 port-1 ip-address-2 port-2
Example: "cutter 200.1.2.3 22 10.10.0.45 32451"
Cuts the specific connection between the two ip/port number pairs given.
IMPORTANT WARNING
Cutter has been designed for use as a administrators tool for Linux firewalls. Its use (as is, or modified) for any other purpose is not sanctioned by the author. So - do not use this tool as a parachute, or to dry your cat, chill meat, answer your phone, drive you car, teach your kids to read or attack other peoples computer systems or networks.
This software has been designed for "legal" and "appropriate" use by network security administrators and the like. It has been written as part of a larger Linux firewall project, targetting at controlling traffic from peer-to-peer software such as Kazaa, iMesh and others into and out of a private network. It is not designed as a tool for malicious use and the author in no way sanctions such use.
Users of the software should be aware that its actions are easily detectable using a number of readily available network monitoring tools, and it makes no attempt to disguise its actions. Malicious use of "cutter" could result in a jail sentance in a number of countries around the world.
<<lessCutter is an open source program that uses the FIN-ACK-RST packet technique described above to abort TCP/IP connections routed over the firewall or router on which it is run. It can be called using one of the following four syntaxes.
cutter ip-address
Example: "cutter 10.10.0.45"
Cuts all connections passing through the firewall between any ports on the specified ip-address (either a "private" or "public" address) and any other hosts. This can be used to close down all incoming connections to a particular server, all outgoing connections from a particular client or all outgoing connections to a server.
cutter ip-address port
Example: "cutter 200.1.2.3 80"
Cuts all connections to or from the specified ip-address/port pair. This allows the user to be a little more specific than the previous example and allows targetting of specific services on specific hosts.
cutter ip-address-1 port-1 ip-address-2
Example "cutter 200.1.2.3 22 10.10.0.45"
Cuts all connections between ip-address-2 and ip-address-1/port-1. This allows the user to cut connections between a specified "client" and a particular service on a specified host. Our example closes host 10.10.0.45s SSH connection to server 200.1.2.3.
cutter ip-address-1 port-1 ip-address-2 port-2
Example: "cutter 200.1.2.3 22 10.10.0.45 32451"
Cuts the specific connection between the two ip/port number pairs given.
IMPORTANT WARNING
Cutter has been designed for use as a administrators tool for Linux firewalls. Its use (as is, or modified) for any other purpose is not sanctioned by the author. So - do not use this tool as a parachute, or to dry your cat, chill meat, answer your phone, drive you car, teach your kids to read or attack other peoples computer systems or networks.
This software has been designed for "legal" and "appropriate" use by network security administrators and the like. It has been written as part of a larger Linux firewall project, targetting at controlling traffic from peer-to-peer software such as Kazaa, iMesh and others into and out of a private network. It is not designed as a tool for malicious use and the author in no way sanctions such use.
Users of the software should be aware that its actions are easily detectable using a number of readily available network monitoring tools, and it makes no attempt to disguise its actions. Malicious use of "cutter" could result in a jail sentance in a number of countries around the world.
Download (0.013MB)
Added: 2005-12-14 License: GPL (GNU General Public License) Price:
1557 downloads
Sonar 1.2.2
sonar is a network reconnaissance utility. more>>
This software is used for the automatic probing of internet hosts at a timed interval (reconnaisance), checking host connectivity, especially ICMP support (information Gathering), automated running of third party tools when said host is online (automated testing).
Use of sonar shifts responsibility for the users actions solely to that user him or herself. In other words, the author cannot be held responsible for your actions.
Examples
Run nmap with a vanilla connect scan as soon as www.google.com is online. Check every 60 seconds, go into background, and log to probe.log:
sonar -c -1 --scan_delay=60 -f --output_plugin=L
-p fprobe.log -pe"nmap -sT www.google.com"
-sI www.google.com
Check red0xs site for online status 4 time in a row (just like ping):
sonar -sI genbukan.no-ip.com
Send the contents of payload.dat to www.secursite.com every 5 minutes:
sonar -c -1 --scan_delay=300 -p ppayload.dat -sI
www.secursite.com
Send an ACK probe to googles webserver every second.
sonar --scan_delay=1 -c -1 -sA www.google.com -pp80
Enhancements:
- src/mutex.h, src/plugin.h, src/types.h, libltdl/configure, plugins/network_icmp.h, doc/Makefile.in, Makefile.in, doc/Makefile.am: Major documentation update, more to come.
- plugins/rfc793.h, plugins/rfc793.c: Removed the bloody thread (which was causing so many problems) from the ack scan
<<lessUse of sonar shifts responsibility for the users actions solely to that user him or herself. In other words, the author cannot be held responsible for your actions.
Examples
Run nmap with a vanilla connect scan as soon as www.google.com is online. Check every 60 seconds, go into background, and log to probe.log:
sonar -c -1 --scan_delay=60 -f --output_plugin=L
-p fprobe.log -pe"nmap -sT www.google.com"
-sI www.google.com
Check red0xs site for online status 4 time in a row (just like ping):
sonar -sI genbukan.no-ip.com
Send the contents of payload.dat to www.secursite.com every 5 minutes:
sonar -c -1 --scan_delay=300 -p ppayload.dat -sI
www.secursite.com
Send an ACK probe to googles webserver every second.
sonar --scan_delay=1 -c -1 -sA www.google.com -pp80
Enhancements:
- src/mutex.h, src/plugin.h, src/types.h, libltdl/configure, plugins/network_icmp.h, doc/Makefile.in, Makefile.in, doc/Makefile.am: Major documentation update, more to come.
- plugins/rfc793.h, plugins/rfc793.c: Removed the bloody thread (which was causing so many problems) from the ack scan
Download (0.48MB)
Added: 2005-09-21 License: GPL (GNU General Public License) Price:
1550 downloads
Advanced Packet Sniffer 0.19
Aps is a small tool for analyzing network traffic. more>>
Aps is a small tool for analyzing network traffic. It prints out a great deal of information about the relevant protocols including TCP, UDP, ARP, and ICMP.
It allows you to filter IP addresses, hardware addresses, ports, and specific protocols. It comes with a little GTK-GUI displaying packet counters for each protocol.
APS tries to print detailed info about network frames that are received from the SOCK_RAW (ETH_P_ALL) socket. I am not sure if this is the clean way, but it works fine. APS prints info about the hardware layer and the IP and TCP/UDP/ICMP header.
The tail of the packet (mostly the data) wich could not be interpreted is written on the screen as ascii/hex-dump or both (your choice).
Example
HW-ADDR: 00:60:8c:f6:40:96 -----> 00:80:ad:30:8f:3b
IP-ADDR: 192.168.17.52 -----> 192.168.17.50
IP-Ver4 || Head:0x0a (bytes) || Service(TOS):16 || Length over all:0061
Fragmentation: ID:0x4079 - Flags: 0 1 0 - Offset:00000
TTL:064 || Protokoll:006 (TCP) || HeaderCRC:0x567b
TCP-HEADER:
Ports: 0023-->1034 (telnet) Seq./Ack. Nr.:0x70843468 / 0xeae29434
Data-Offset:0x05 Reserved-6Bit:00 Flags:-urg-ACK-PSH-rst-syn-fin-
Window:0x7fe0 CRC:0x9420 Urgent-Pointer:0x0000
73 61 74 75 72 6e 32 3a 2f 73 72 76 2f 70 72 69 6e 74 71 23 20
HW-ADDR: 52:54:40:25:8d:88 -----> ff:ff:ff:ff:ff:ff
SAMBA/NetBios
e0 e0 03 ff ff 00 22 00 11 00 00 00 00 ff ff ff ff ff ff 04 52 00 00 00 00 52
40 25 8d 88 40 08 00 03 00 04 20 20 20 20 20 20 20 20 20
HW-ADDR: 00:80:ad:30:8f:3b -----> 00:60:8c:f6:40:96
IP-ADDR: 192.168.17.50 -----> 194.112.123.200
IP-Ver4 || Head:0x0a (bytes) || Service(TOS):0 || Length over all:0029
Fragmentation: ID:0x29ae - Flags: 0 0 0 - Offset:00000
TTL:064 || Protokoll:001 (ICMP) || HeaderCRC:0x411f
echo request CODE:0x0 CRC:0xf9f5 SIG:0x602 NUM:0x0
00 ea
Enhancements:
- added break for Packet-counter and fixed some minor bugs
<<lessIt allows you to filter IP addresses, hardware addresses, ports, and specific protocols. It comes with a little GTK-GUI displaying packet counters for each protocol.
APS tries to print detailed info about network frames that are received from the SOCK_RAW (ETH_P_ALL) socket. I am not sure if this is the clean way, but it works fine. APS prints info about the hardware layer and the IP and TCP/UDP/ICMP header.
The tail of the packet (mostly the data) wich could not be interpreted is written on the screen as ascii/hex-dump or both (your choice).
Example
HW-ADDR: 00:60:8c:f6:40:96 -----> 00:80:ad:30:8f:3b
IP-ADDR: 192.168.17.52 -----> 192.168.17.50
IP-Ver4 || Head:0x0a (bytes) || Service(TOS):16 || Length over all:0061
Fragmentation: ID:0x4079 - Flags: 0 1 0 - Offset:00000
TTL:064 || Protokoll:006 (TCP) || HeaderCRC:0x567b
TCP-HEADER:
Ports: 0023-->1034 (telnet) Seq./Ack. Nr.:0x70843468 / 0xeae29434
Data-Offset:0x05 Reserved-6Bit:00 Flags:-urg-ACK-PSH-rst-syn-fin-
Window:0x7fe0 CRC:0x9420 Urgent-Pointer:0x0000
73 61 74 75 72 6e 32 3a 2f 73 72 76 2f 70 72 69 6e 74 71 23 20
HW-ADDR: 52:54:40:25:8d:88 -----> ff:ff:ff:ff:ff:ff
SAMBA/NetBios
e0 e0 03 ff ff 00 22 00 11 00 00 00 00 ff ff ff ff ff ff 04 52 00 00 00 00 52
40 25 8d 88 40 08 00 03 00 04 20 20 20 20 20 20 20 20 20
HW-ADDR: 00:80:ad:30:8f:3b -----> 00:60:8c:f6:40:96
IP-ADDR: 192.168.17.50 -----> 194.112.123.200
IP-Ver4 || Head:0x0a (bytes) || Service(TOS):0 || Length over all:0029
Fragmentation: ID:0x29ae - Flags: 0 0 0 - Offset:00000
TTL:064 || Protokoll:001 (ICMP) || HeaderCRC:0x411f
echo request CODE:0x0 CRC:0xf9f5 SIG:0x602 NUM:0x0
00 ea
Enhancements:
- added break for Packet-counter and fixed some minor bugs
Download (0.088MB)
Added: 2005-09-21 License: GPL (GNU General Public License) Price:
1512 downloads
VISCA Camera Control Library 0.08
VISCA Camera Control Library is a library for controlling a VISCA(tm) compliant camera through the RS232 port of your PC. more>>
VISCA Camera Control Library is a library for controlling a VISCA(tm) compliant camera through the RS232 port of your PC. VISCA, on its side, is a protocol developed by Sony so that a lot of machine vision cameras from Sony are compliant with VISCA.
Typical cameras include the FCB-IX47 family of camera block for OEMs. Note that other devices, such as VCRs, can be controlled. Drop me a line f you know other functions that you would like to be implemented and for which you have the opcodes.
libVISCA has been tested only with an FCB-IX47P. This does not mean that its the only camera compatible, but some others might require addition/changes. In the current version, libVISCA has interface functions for every command/inquiry of the specifications. This includes zoom, focus, digital effects, white balance, and much more.
Every function composes an RS232 message, up to 12 bytes long. The message is then sent to a function that will actually send the 12 bytes after appending a header and footer. The function also waits for answers from the camera, such as ACK and completion messages. If its an inquiry, the reply is stored in the input buffer of the interface structure.
<<lessTypical cameras include the FCB-IX47 family of camera block for OEMs. Note that other devices, such as VCRs, can be controlled. Drop me a line f you know other functions that you would like to be implemented and for which you have the opcodes.
libVISCA has been tested only with an FCB-IX47P. This does not mean that its the only camera compatible, but some others might require addition/changes. In the current version, libVISCA has interface functions for every command/inquiry of the specifications. This includes zoom, focus, digital effects, white balance, and much more.
Every function composes an RS232 message, up to 12 bytes long. The message is then sent to a function that will actually send the 12 bytes after appending a header and footer. The function also waits for answers from the camera, such as ACK and completion messages. If its an inquiry, the reply is stored in the input buffer of the interface structure.
Download (0.30MB)
Added: 2006-01-20 License: LGPL (GNU Lesser General Public License) Price:
1407 downloads
LLgen 1.0
LLgen is a LL parser in the style of yacc. more>>
LLgen is a LL parser in the style of yacc.
The Amsterdam Compiler Kit is fast, lightweight and retargetable compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, and was Minix native toolchain.
The ACK was originally closed-source software (that allowed binaries to be distributed for Minix as a special case), but in April 2003 it was released under a BSD open source license.
The ACK achieves maximum portability by using an intermediate byte-code language called EM. Each language front-end produces EM object files, which are then processed through a number of generic optimisers before being translated by a back-end into native machine code.
Unlike gccs intermediate language, EM is a real programming language and could be implemented in hardware; a number of the language front-ends have libraries implemented in EM assembly.
EM is a relatively high-level stack-based machine, and one of the tools supplied with ACK is an interpreter capable of executing EM binaries directly, with a high degree of safety checking. See the em document referenced below for more information.
ACK comes with a generic linker and librarian capable of manipulating files in the ACKs own a.out-based format; it will work on files containing EM code as well as native machine code. (You can not, however, link EM code to native machine code without translating the EM binary first.)
Enhancements:
- LLgen was previously part of the Amsterdam Compiler Kit, but has been split out into a standalone component.
- This version has been updated from its original 1991 vintage source and has a completely rewritten, much more streamlined build system.
<<lessThe Amsterdam Compiler Kit is fast, lightweight and retargetable compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, and was Minix native toolchain.
The ACK was originally closed-source software (that allowed binaries to be distributed for Minix as a special case), but in April 2003 it was released under a BSD open source license.
The ACK achieves maximum portability by using an intermediate byte-code language called EM. Each language front-end produces EM object files, which are then processed through a number of generic optimisers before being translated by a back-end into native machine code.
Unlike gccs intermediate language, EM is a real programming language and could be implemented in hardware; a number of the language front-ends have libraries implemented in EM assembly.
EM is a relatively high-level stack-based machine, and one of the tools supplied with ACK is an interpreter capable of executing EM binaries directly, with a high degree of safety checking. See the em document referenced below for more information.
ACK comes with a generic linker and librarian capable of manipulating files in the ACKs own a.out-based format; it will work on files containing EM code as well as native machine code. (You can not, however, link EM code to native machine code without translating the EM binary first.)
Enhancements:
- LLgen was previously part of the Amsterdam Compiler Kit, but has been split out into a standalone component.
- This version has been updated from its original 1991 vintage source and has a completely rewritten, much more streamlined build system.
Download (0.17MB)
Added: 2006-02-06 License: BSD License Price:
1360 downloads
fBuilder Lite 2.0.2
fBuilder project is a web-based utility for building and configuring your iptables or ipchains based Linux firewall. more>>
fBuilder project is a web-based utility for building and configuring your iptables or ipchains based Linux firewall. Written by the author of fwconfig, our fBuilder product line brings you many new and exciting features that will fit your firewall creation needs.
InnerTek Software currently offers two versions of fBuilder: fBuilder Lite - a free, ipchains only version of fBuilder that includes a standard set of features and fBuilder Plus - includes edit, insert, and delete capabilities for firewall rules, automatic back traffic rule creation, log reporting and export capabilities.
Our fBuilder products are also great for administering existing firewalls. When started, fBuilder will detect your running firewall and allow you to save it to a file. From that point, you can modify your firewall with the expert add utility or by using the edit/insert capabilities of fBuilder Plus.
Main features:
- Authentication
- User administration
- An enhanced firewall creation utility (known as the wizard)
- Much stronger scripts that add:
- SYN flood protection
- Spoof protection
- Disabling source-routed packets
- More...
- An expert add utility to allow users to build an entire firewall from scratch with much more control than allowed by the wizard including full support for:
- ICMP types
- SYN/ACK conditionals
- TOS bit manipulation
- Packet logging
- The invert option
- fBuilder ships with a pre-configured version of the boa web server, so there is no need to deal with Apache configuration files.
<<lessInnerTek Software currently offers two versions of fBuilder: fBuilder Lite - a free, ipchains only version of fBuilder that includes a standard set of features and fBuilder Plus - includes edit, insert, and delete capabilities for firewall rules, automatic back traffic rule creation, log reporting and export capabilities.
Our fBuilder products are also great for administering existing firewalls. When started, fBuilder will detect your running firewall and allow you to save it to a file. From that point, you can modify your firewall with the expert add utility or by using the edit/insert capabilities of fBuilder Plus.
Main features:
- Authentication
- User administration
- An enhanced firewall creation utility (known as the wizard)
- Much stronger scripts that add:
- SYN flood protection
- Spoof protection
- Disabling source-routed packets
- More...
- An expert add utility to allow users to build an entire firewall from scratch with much more control than allowed by the wizard including full support for:
- ICMP types
- SYN/ACK conditionals
- TOS bit manipulation
- Packet logging
- The invert option
- fBuilder ships with a pre-configured version of the boa web server, so there is no need to deal with Apache configuration files.
Download (0.56MB)
Added: 2006-03-17 License: Freeware Price:
1316 downloads
Berkley Snoop for Linux 0.3 RC4
Berkley Snoop for Linux is a module which adds support for the Snoop protocol. more>>
Berkley Snoop for Linux is a module which adds support for the Snoop protocol, a TCP-aware link layer protocol designed that can improve the performance of TCP over networks of wired and single-hop wireless links.
While TCP adapts well to network congestion, it does not adequately handle the vagaries of wireless media. In this thesis, we address these challenges in detail and design solutions to them. These solutions incorporate link-layer techniques as well as enhancements to TCP at the sender and receiver. The Snoop protocol is a TCP-aware link layer protocol designed to improve the performance of TCP over networks of wired and single-hop wireless links.
The implementation is for kernels of 2.6.x series. This software is intended to use on routers acting between big fat pipe(BFP) link and wireless link.
The problem: The wireless link is error prone by its nature and BFP links such as satellite one has very big round-trip time. When error occurs on wireless segment it causes in speed reduction because the TCP protocol on sending side treats this error as link congestion although the error was just a temporary link quality loss and the connection cannt recover its speed.
The fix: The module will cache TCP segmets passing to host on wireless segment until the ACK(nowledgmet) is received or timeout expired. In case of timeout the segment will be retransmitted again. And by the way the module will drop all DUP(licate) ACK(nowledgmets) caused by packet loss on wireless segment and prevent the reduction of speed of flow from the host beyond the satellite link. The module works now only with connections initiated from wireless hosts.
Enhancements:
- fixed issues with improper use of locks & memory allocation the memory allocates now with GFP_ATOMIC priority
<<lessWhile TCP adapts well to network congestion, it does not adequately handle the vagaries of wireless media. In this thesis, we address these challenges in detail and design solutions to them. These solutions incorporate link-layer techniques as well as enhancements to TCP at the sender and receiver. The Snoop protocol is a TCP-aware link layer protocol designed to improve the performance of TCP over networks of wired and single-hop wireless links.
The implementation is for kernels of 2.6.x series. This software is intended to use on routers acting between big fat pipe(BFP) link and wireless link.
The problem: The wireless link is error prone by its nature and BFP links such as satellite one has very big round-trip time. When error occurs on wireless segment it causes in speed reduction because the TCP protocol on sending side treats this error as link congestion although the error was just a temporary link quality loss and the connection cannt recover its speed.
The fix: The module will cache TCP segmets passing to host on wireless segment until the ACK(nowledgmet) is received or timeout expired. In case of timeout the segment will be retransmitted again. And by the way the module will drop all DUP(licate) ACK(nowledgmets) caused by packet loss on wireless segment and prevent the reduction of speed of flow from the host beyond the satellite link. The module works now only with connections initiated from wireless hosts.
Enhancements:
- fixed issues with improper use of locks & memory allocation the memory allocates now with GFP_ATOMIC priority
Download (0.015MB)
Added: 2006-04-20 License: GPL (GNU General Public License) Price:
1287 downloads
Sniffit 0.3.5
Sniffit is a packet sniffer for TCP, UDP and ICMP packets. more>>
Sniffit is a packet sniffer for TCP, UDP and ICMP packets. sniffit is able to give you very detailed technical info on these packets (SEQ, ACK, TTL, Window etc.) but also packet contents in different formats (hex or plain text).
Sniffit was actually the start of my TCP/IP experimental phase. As the subject interested me, I was exploring the weaknesses in IPv4 further and further. The logical step was to do some work on Spoofing. This resulted in 2 text on spoofing (Non-Blind and Blind). A C toolkit for writing spoof programs: Spoofit, and a Demo program Eriu that demonstrated a connection hijack.
My plans were to go a step further and spoof rooting info, to create my own routes (RIP protocol etc...), unfortunately at that time my thesis started and I never got the time to work on that project.
One of the last things I did on spoofing was some fun application that raced the DNS server with false responses... at HIP 97 this created alot of confusing among innocent surfers...
Enhancements:
- Use of Autoconf
- Upgrade of Libpcap to 0.3
- Added Packet generation
- Added UDP selectivity
- Added "plugins"
<<lessSniffit was actually the start of my TCP/IP experimental phase. As the subject interested me, I was exploring the weaknesses in IPv4 further and further. The logical step was to do some work on Spoofing. This resulted in 2 text on spoofing (Non-Blind and Blind). A C toolkit for writing spoof programs: Spoofit, and a Demo program Eriu that demonstrated a connection hijack.
My plans were to go a step further and spoof rooting info, to create my own routes (RIP protocol etc...), unfortunately at that time my thesis started and I never got the time to work on that project.
One of the last things I did on spoofing was some fun application that raced the DNS server with false responses... at HIP 97 this created alot of confusing among innocent surfers...
Enhancements:
- Use of Autoconf
- Upgrade of Libpcap to 0.3
- Added Packet generation
- Added UDP selectivity
- Added "plugins"
Download (0.19MB)
Added: 2006-06-27 License: GPL (GNU General Public License) Price:
1252 downloads
labrea 2.5
labrea is a intrusion detection / sticky honey pot technology using virtual servers to detect malware. more>>
LaBrea is a intrusion detection / "sticky" honey pot technology using virtual servers to detect malware. LaBrea takes over unused IP addresses, and creates virtual servers that are attractive to worms, hackers, and other denizens of the Internet. The program answers to connection attempts in a way that the machine at the other end gets "stuck", sometimes for a very long time.
LaBrea works by watching ARP requests and replies. When the pgm sees consecutive ARP requests spaced several seconds apart, without any intervening ARP reply, it assumes that the IP in question is unoccupied. It then "creates" an ARP reply with a bogus MAC address, and fires it back to the requester.
An example (from a tcpdump of LaBrea running on my network):
14:18:28.832187 ARP who-has xx.xx.xx.13 tell xx.xx.xx.1
14:18:29.646402 ARP who-has xx.xx.xx.13 tell xx.xx.xx.1
14:18:31.707295 ARP who-has xx.xx.xx.13 tell xx.xx.xx.1
14:18:31.707574 ARP reply xx.xx.xx.13 is-at 0:0:f:ff:ff:ff
There is no xx.xx.xx.13 machine on my network. In this case, the timeout was set to 3 seconds (its a command line parameter), and when that final "who-has" came in, the "is-at" reply that you see was generated by LaBrea.
There isnt a MAC address of 0:0:f:ff:ff:ff either. It doesnt exist.
But now, the router (xx.xx.xx.1) believes that there some machine at xx.xx.xx.13, and that it resides on the MAC address 0:0:f:ff:ff:ff, and so it dutifully sends packets on. In
essence, weve created a "virtual machine" on that IP address.
Now, LaBrea also watches for TCP traffic destined for the ether address 0:0:f:ff:ff:ff. When it sees an inbound TCP SYN packet, it replies with a SYN/ACK that "tarpits" that connection attempt. Everything else is ignored. (Well... sort of. LaBrea also tries to give its "virtual machines" some character... you can ping them, and they respond to a SYN/ACK with a RST.
Theres more to it than that (obviously...) but youll need to read further.
Enhancements:
- src/ctl.c (ctl_init_arrays): Remove call to sleep since not supposed to mix with alarm calls on linux.
- src/utils.c (util_alarm), src/labrea.c: Set alarm and signal handlers after going into daemon mode so that child will get signal
- src/labrea_init.c, src/lbio.c: Take out fudge code since libdnet 1.7 ethopen now uses the libdnet device names (ie eth1, etc).
<<lessLaBrea works by watching ARP requests and replies. When the pgm sees consecutive ARP requests spaced several seconds apart, without any intervening ARP reply, it assumes that the IP in question is unoccupied. It then "creates" an ARP reply with a bogus MAC address, and fires it back to the requester.
An example (from a tcpdump of LaBrea running on my network):
14:18:28.832187 ARP who-has xx.xx.xx.13 tell xx.xx.xx.1
14:18:29.646402 ARP who-has xx.xx.xx.13 tell xx.xx.xx.1
14:18:31.707295 ARP who-has xx.xx.xx.13 tell xx.xx.xx.1
14:18:31.707574 ARP reply xx.xx.xx.13 is-at 0:0:f:ff:ff:ff
There is no xx.xx.xx.13 machine on my network. In this case, the timeout was set to 3 seconds (its a command line parameter), and when that final "who-has" came in, the "is-at" reply that you see was generated by LaBrea.
There isnt a MAC address of 0:0:f:ff:ff:ff either. It doesnt exist.
But now, the router (xx.xx.xx.1) believes that there some machine at xx.xx.xx.13, and that it resides on the MAC address 0:0:f:ff:ff:ff, and so it dutifully sends packets on. In
essence, weve created a "virtual machine" on that IP address.
Now, LaBrea also watches for TCP traffic destined for the ether address 0:0:f:ff:ff:ff. When it sees an inbound TCP SYN packet, it replies with a SYN/ACK that "tarpits" that connection attempt. Everything else is ignored. (Well... sort of. LaBrea also tries to give its "virtual machines" some character... you can ping them, and they respond to a SYN/ACK with a RST.
Theres more to it than that (obviously...) but youll need to read further.
Enhancements:
- src/ctl.c (ctl_init_arrays): Remove call to sleep since not supposed to mix with alarm calls on linux.
- src/utils.c (util_alarm), src/labrea.c: Set alarm and signal handlers after going into daemon mode so that child will get signal
- src/labrea_init.c, src/lbio.c: Take out fudge code since libdnet 1.7 ethopen now uses the libdnet device names (ie eth1, etc).
Download (0.20MB)
Added: 2006-07-07 License: GPL (GNU General Public License) Price:
1208 downloads
Lutel Firewall 0.99
LutelWall (formerly known as Lutel Firewall) is high-level linux firewall configuration tool. more>>
LutelWall (formerly known as Lutel Firewall) is high-level linux firewall configuration tool. It uses human-readable and easy to understand configuration to set up Netfilter in most secure way. Its flexibility allows firewall admins build from very simple, single-homed firewalls, to most complex ones - with multiple subnets, DMZs and traffic redirections. It can be used on a dedicated firewall system, a multi-function gateway/router/server or on a standalone system. Configuration method of this firewall is made to be as simple as possible without loosing Netfilter flexibility and its security facilities.
Main features:
- flexible control over traffic using rule set
- user-defined protocols support
- support for any kind multiple external and internal interaces (and aliases)
- automated MASQUERADE / SNAT support
- easy to set up DNAT (transparent proxy, redirections to LAN/DMZ etc.)
- rate limit extensions
- packet marking for 3rd party shapers
- TOS (Type of Service) traffic optimizer
- both passive and active FTP support
- DHCP support
- can work as "workstation" firewa
- stateful TCP connection tracking with restrictive TCP chain
- blocking all stealth mode scans (FIN, Xmas Tree, Null, Windows scan or ACK scan modes (nmap -sF -sX -sN -sW -sA)
- blocking IP protocol scans (nmap -sO)
- blocking UDP scans (nmap -sU)
- blocking identification via TCP/IP fingerprinting (nmap -O)
- anti-spoof protection, including protection for aliases
- anti-smurf protection
- TCP SYN Flood protection
- UDP / ICMP Flood protection
- IANA reserved addresses checking
- SYSCTL parameters set for increased strength
- logging stealth scans (FIN, Xmas Tree, Null), ACK scan modes (nmap -sF -sX -sN), IP protocol scans (nmap -sO), UDP scans (nmap -sU), nmap fingerprinting attempts.
- autodetect of connection type (static/dynamic, external/internal)
- auto update of firewall tool
- auto update IANA reserved list
- display firewall statistics in iptables native, csv or html format
- easy deployment on all distributions
Enhancements:
- fixed iptables version checking
<<lessMain features:
- flexible control over traffic using rule set
- user-defined protocols support
- support for any kind multiple external and internal interaces (and aliases)
- automated MASQUERADE / SNAT support
- easy to set up DNAT (transparent proxy, redirections to LAN/DMZ etc.)
- rate limit extensions
- packet marking for 3rd party shapers
- TOS (Type of Service) traffic optimizer
- both passive and active FTP support
- DHCP support
- can work as "workstation" firewa
- stateful TCP connection tracking with restrictive TCP chain
- blocking all stealth mode scans (FIN, Xmas Tree, Null, Windows scan or ACK scan modes (nmap -sF -sX -sN -sW -sA)
- blocking IP protocol scans (nmap -sO)
- blocking UDP scans (nmap -sU)
- blocking identification via TCP/IP fingerprinting (nmap -O)
- anti-spoof protection, including protection for aliases
- anti-smurf protection
- TCP SYN Flood protection
- UDP / ICMP Flood protection
- IANA reserved addresses checking
- SYSCTL parameters set for increased strength
- logging stealth scans (FIN, Xmas Tree, Null), ACK scan modes (nmap -sF -sX -sN), IP protocol scans (nmap -sO), UDP scans (nmap -sU), nmap fingerprinting attempts.
- autodetect of connection type (static/dynamic, external/internal)
- auto update of firewall tool
- auto update IANA reserved list
- display firewall statistics in iptables native, csv or html format
- easy deployment on all distributions
Enhancements:
- fixed iptables version checking
Download (0.028MB)
Added: 2006-07-08 License: GPL (GNU General Public License) Price:
1204 downloads
pkdump 3.3
pkdump is a port scanning detection tool. more>>
pkdump is a port scanning detection tool. The program detect any TCP ,UDP port scanning or open connection attempt from foreign host over the internet with IP protocol version 4
or IP protocol version 6 .
The program can detect:
TCP connect , TCP syn , TCP fin , TCP xmas, TCP ack, TCP null(no flags), UDP port (connect) and UDP null (0 bytes, UDP packets lengt ) , whether the IP packet are fragmented or not. (Please consult "Nmap"... man Nmap).
The program make a directory like this : "Pkdump-[date][time]" and in this directory make a file "PKDATA" that contains all IP packet sent and received during the transmission ,and during scanning attack make files that contains the data of the attack ;the data of the port scanning will displayed on the screen with a short beep;
Enhancements:
- Fixed bug in read-write operation.
- Show the number of IP fragment.
<<lessor IP protocol version 6 .
The program can detect:
TCP connect , TCP syn , TCP fin , TCP xmas, TCP ack, TCP null(no flags), UDP port (connect) and UDP null (0 bytes, UDP packets lengt ) , whether the IP packet are fragmented or not. (Please consult "Nmap"... man Nmap).
The program make a directory like this : "Pkdump-[date][time]" and in this directory make a file "PKDATA" that contains all IP packet sent and received during the transmission ,and during scanning attack make files that contains the data of the attack ;the data of the port scanning will displayed on the screen with a short beep;
Enhancements:
- Fixed bug in read-write operation.
- Show the number of IP fragment.
Download (0.018MB)
Added: 2006-07-13 License: GPL (GNU General Public License) Price:
1201 downloads
Convert::ASCIInames 1.002
Convert::ASCIInames is a Perl module that includes ASCII names for control characters. more>>
Convert::ASCIInames is a Perl module that includes ASCII names for control characters.
SYNOPSIS
use Convert::ASCIInames;
Convert::ASCIInames::Configure(fallthrough => 1);
$name = ASCIIname($character_ordinal);
$name = ASCIIaltname($character_ordinal);
$name = ASCIIdescription($character_ordinal);
$name = ASCIIaltdescription($character_ordinal);
$character_ordinal = ASCIIordinal($name);
Most if not all of the non-printing characters of the ASCII character set had special significance in the days of teletypes and paper tapes. For example, the character code 0x00 would be sent repeatedly in order to give the receiving end a chance to catch up; it signified "no action" and so was named NUL. The sending end might follow each line of text with a number of NUL bytes in order to give the receiving end a chance to return its print carriage to the left margin.
The control characters (so-called because they were used to control aspects of communication or receiving devices) were given short 2-to-4 letter names, like CR, EOT, ACK, and NAK.
Some of these special purposes have become obsolete, but some of them are still in use. For example, character 0x07 (BEL) is used to ring the feeper; 0x05 (ENQ) is recognised by many terminals as a trigger to report their status; and 0x08 (BS) still means "move the cursor back one space".
This module will return the ASCII name for specified characters, or the character code if given an ASCII name. In addition, the full descriptive name ("Start of Heading" instead of SOH) is available, although reverse translation of the descriptions isnt provided.
Some control characters have altername names. Character 0x13 is named DC3 ("Device Control 3"), but is probably better known by its alternate name of XOFF. These alternate names are also available through this modules functions.
<<lessSYNOPSIS
use Convert::ASCIInames;
Convert::ASCIInames::Configure(fallthrough => 1);
$name = ASCIIname($character_ordinal);
$name = ASCIIaltname($character_ordinal);
$name = ASCIIdescription($character_ordinal);
$name = ASCIIaltdescription($character_ordinal);
$character_ordinal = ASCIIordinal($name);
Most if not all of the non-printing characters of the ASCII character set had special significance in the days of teletypes and paper tapes. For example, the character code 0x00 would be sent repeatedly in order to give the receiving end a chance to catch up; it signified "no action" and so was named NUL. The sending end might follow each line of text with a number of NUL bytes in order to give the receiving end a chance to return its print carriage to the left margin.
The control characters (so-called because they were used to control aspects of communication or receiving devices) were given short 2-to-4 letter names, like CR, EOT, ACK, and NAK.
Some of these special purposes have become obsolete, but some of them are still in use. For example, character 0x07 (BEL) is used to ring the feeper; 0x05 (ENQ) is recognised by many terminals as a trigger to report their status; and 0x08 (BS) still means "move the cursor back one space".
This module will return the ASCII name for specified characters, or the character code if given an ASCII name. In addition, the full descriptive name ("Start of Heading" instead of SOH) is available, although reverse translation of the descriptions isnt provided.
Some control characters have altername names. Character 0x13 is named DC3 ("Device Control 3"), but is probably better known by its alternate name of XOFF. These alternate names are also available through this modules functions.
Download (0.011MB)
Added: 2006-08-21 License: Perl Artistic License Price:
1159 downloads
TCP Knocking 0.1
TCP Knocking provides a port knocking implementation. more>>
TCP Knocking provides a port knocking implementation.
Often a secure system needs a port open so that only authorized persons can access a particular service and also the service should not exposed to attackers and worms that may use vulnerabilities that exist in the listening server. Port knocking is designed to be used as a complementary service to the existing authentication mechanism. But one of the biggest problems with port knocking is manipulating the firewall with timeouts.
When the correct knock sequence is sent, the firewall is modified for couple of seconds. Having the firewall open automatically for a time period will make any system administrator uncomfortable. TCP knocking attempts to solve the problem by incorporating the knock into the TCP handshake. Tcp knocking is similar to port knocking, but instead sending UDP packets with secret ports, the TCP handshake packets must include secrete codes. It is at least as secure as port knocking and it can be made secure with more hardening.
Modified TCP handshake:
In normal TCP handshake, the client sends the syn packet and chooses a random initial sequence number. The server responds with a packet that has both syn and ack flags set, choosing a random
The modified TCP handshake uses the empty fields in the header. The server does not respond to connection requests without a special code generated along with the syn packet. The server also encrypts the ISN in the ack packet (2) and the final packet of the three-way handshake must have the correct acknowledgment for the servers ISN. The system is further protected from brute-force attacks by closing the connection if the first attempt for the third packet does not have the expected acknowledgment sequence.
Also, rather than use conventional encryption techniques like HMAC for verification, this system uses a file with random numbers as the key. This is because of the limited unused space available in the TCP/IP header which makes HMAC very weak. By using a shared file, the length of the key can be much greater than traditional systems and even though some parts of the key can be revealed by attacks, the server can protect itself from replay attacks.
The handshake:
1) Syn
The syn packet does not use the 32 bit acknowledgment field in the TCP header as it the the first packet to initiate the connection. Further the 16 bit IPID can be used to transmit information. In the current implementation only the 32 bit acknowledgment field is used. Currently the 32 bit ack is derived from a 64 KB file which contains random numbers. The ISN and the source IP address along with the random numbers are used to generate this value.
2) Syn/Ack
The ISN is encrypted using the random numbers from the 64 KB file using the destination IP address as well as a 16 bit random number used as IPID. I do not have code for this part yet.
3) Ack
The client decrypts the syn number from the encrypted syn, the key file, the 16 bit IPID and its own IP address and sends the ack packet. The server closes all connections from the client for couple of minutes if it sends a wrong ack value. Part of the security relies on the fact that the ISN generated by Linux 2.6 is fairly random.
Implementation:
I have implemented only the first part, which is the server expecting secret code along with the first syn packet from the client. Hence it is very possible to brute-force the server. Also the system is designed with the second phase in mind, which is the encrypted Initial Sequence Number in the ack packet and closing the connection if the correct ack is not sent on the first try. I do not have an implementation for that yet. The security will be increased greatly when the second phase is incorporated. Also the ability to detect brute-force attacks can be added to this system.
But the current system can be used for protecting the server from worms and random scanning. The use-case is similar to port knocking but it does not use the ugly system of opening the firewall for a couple of seconds. Vanilla port knocking is susceptible to brute-force attacks as well. Besides, inserting a kernel module to just ssh into your server will increase your mad sysadmin points.
Enhancements:
- TCP knocking with Phase 1 of the protocol was implemented.
<<lessOften a secure system needs a port open so that only authorized persons can access a particular service and also the service should not exposed to attackers and worms that may use vulnerabilities that exist in the listening server. Port knocking is designed to be used as a complementary service to the existing authentication mechanism. But one of the biggest problems with port knocking is manipulating the firewall with timeouts.
When the correct knock sequence is sent, the firewall is modified for couple of seconds. Having the firewall open automatically for a time period will make any system administrator uncomfortable. TCP knocking attempts to solve the problem by incorporating the knock into the TCP handshake. Tcp knocking is similar to port knocking, but instead sending UDP packets with secret ports, the TCP handshake packets must include secrete codes. It is at least as secure as port knocking and it can be made secure with more hardening.
Modified TCP handshake:
In normal TCP handshake, the client sends the syn packet and chooses a random initial sequence number. The server responds with a packet that has both syn and ack flags set, choosing a random
The modified TCP handshake uses the empty fields in the header. The server does not respond to connection requests without a special code generated along with the syn packet. The server also encrypts the ISN in the ack packet (2) and the final packet of the three-way handshake must have the correct acknowledgment for the servers ISN. The system is further protected from brute-force attacks by closing the connection if the first attempt for the third packet does not have the expected acknowledgment sequence.
Also, rather than use conventional encryption techniques like HMAC for verification, this system uses a file with random numbers as the key. This is because of the limited unused space available in the TCP/IP header which makes HMAC very weak. By using a shared file, the length of the key can be much greater than traditional systems and even though some parts of the key can be revealed by attacks, the server can protect itself from replay attacks.
The handshake:
1) Syn
The syn packet does not use the 32 bit acknowledgment field in the TCP header as it the the first packet to initiate the connection. Further the 16 bit IPID can be used to transmit information. In the current implementation only the 32 bit acknowledgment field is used. Currently the 32 bit ack is derived from a 64 KB file which contains random numbers. The ISN and the source IP address along with the random numbers are used to generate this value.
2) Syn/Ack
The ISN is encrypted using the random numbers from the 64 KB file using the destination IP address as well as a 16 bit random number used as IPID. I do not have code for this part yet.
3) Ack
The client decrypts the syn number from the encrypted syn, the key file, the 16 bit IPID and its own IP address and sends the ack packet. The server closes all connections from the client for couple of minutes if it sends a wrong ack value. Part of the security relies on the fact that the ISN generated by Linux 2.6 is fairly random.
Implementation:
I have implemented only the first part, which is the server expecting secret code along with the first syn packet from the client. Hence it is very possible to brute-force the server. Also the system is designed with the second phase in mind, which is the encrypted Initial Sequence Number in the ack packet and closing the connection if the correct ack is not sent on the first try. I do not have an implementation for that yet. The security will be increased greatly when the second phase is incorporated. Also the ability to detect brute-force attacks can be added to this system.
But the current system can be used for protecting the server from worms and random scanning. The use-case is similar to port knocking but it does not use the ugly system of opening the firewall for a couple of seconds. Vanilla port knocking is susceptible to brute-force attacks as well. Besides, inserting a kernel module to just ssh into your server will increase your mad sysadmin points.
Enhancements:
- TCP knocking with Phase 1 of the protocol was implemented.
Download (0.005MB)
Added: 2006-12-06 License: GPL (GNU General Public License) Price:
1054 downloads
okons bandwidth manager 2.1
okons bandwidth manager (aka. obwman) is a simple tool for efficient traffic shaping. more>>
okons bandwidth manager (aka. obwman) is a simple tool for efficient traffic shaping. okons bandwidth manager aims to give a fair share of bandwidth to each host while imposing particular rules.
Configuration of obwman is straightforward and it is almost maintenance free., as it detects automatically hosts on the network. Obwman prioritises traffic of HTTP, TCP ACK and TCP initiate session.
Main features:
- fair allocation of bandwidth
- enforce minimum and maximum speed
- support for aggregated links (uplink agnostic)
- automatic detection of hosts on the network
- support for Squid proxy
- free (available under GNU General Public License ).
<<lessConfiguration of obwman is straightforward and it is almost maintenance free., as it detects automatically hosts on the network. Obwman prioritises traffic of HTTP, TCP ACK and TCP initiate session.
Main features:
- fair allocation of bandwidth
- enforce minimum and maximum speed
- support for aggregated links (uplink agnostic)
- automatic detection of hosts on the network
- support for Squid proxy
- free (available under GNU General Public License ).
Download (0.085MB)
Added: 2006-12-27 License: GPL (GNU General Public License) Price:
1037 downloads
The Wonder Shaper 1.1a
The Wonder Shaper is a very special network shaper script with a lot of features. more>>
The Wonder Shaper is a very special network shaper script with a lot of features. Works on Linux 2.4 & higher.
Goals
I attempted to create the holy grail:
* Maintain low latency for interfactive traffic at all times.
This means that downloading or uploading files should not disturb SSH or even telnet. These are the most important things, even 200ms latency is sluggish to work over.
* Allow surfing at reasonable speeds while up or downloading
Even though http is bulk traffic, other traffic should not drown it out too much.
* Make sure uploads dont harm downloads, and the other way around
This is a much observed phenomenon where upstream traffic simply destroys download speed. It turns out that all this is possible, at the cost of a tiny bit of bandwidth. The reason that uploads, downloads and ssh hurt eachother is the presence of large queues in many domestic access devices like cable or DSL modems.
Why it doesnt work well by default
ISPs know that they are benchmarked solely on how fast people can download. Besides available bandwidth, download speed is influenced heavily by packet loss, which seriously hampers TCP/IP performance. Large queues can help prevent packetloss, and speed up downloads. So ISPs configure large queues.
These large queues however damage interactivity. A keystroke must first travel the upstream queue, which may be seconds (!) long and go to your remote host. It is then displayed, which leads to a packet coming back, which must then traverse the downstream queue, located at your ISP, before it appears on your screen.
This HOWTO teaches you how to mangle and process the queue in many ways, but sadly, not all queues are accessible to us. The queue over at the ISP is completely off-limits, whereas the upstream queue probably lives inside your cable modem or DSL device. You may or may not be able to configure it. Most probably not.
So, what next? As we cant control either of those queues, they must be eliminated, and moved to your Linux router. Luckily this is possible.
Limit upload speed somewhat
By limiting our upload speed to slightly less than the truly available rate, no queues are built up in our modem. The queue is now moved to Linux.
Limit download speed
This is slightly trickier as we cant really influence how fast the internet ships us data. We can however drop packets that are coming in too fast, which causes TCP/IP to slow down to just the rate we want. Because we dont want to drop traffic unnecessarily, we configure a burst size we allow at higher speed.
Now, once we have done this, we have eliminated the downstream queue totally (except for short bursts), and gain the ability to manage the upstream queue with all the power Linux offers.
Let interactive traffic skip the queue
What remains to be done is to make sure interactive traffic jumps to the front of the upstream queue. To make sure that uploads dont hurt downloads, we also move ACK packets to the front of the queue. This is what normally causes the huge slowdown observed when generating bulk traffic both ways. The ACKnowledgements for downstream traffic must compete with upstream traffic, and get delayed in the process.
We also move other small packets to the front of the queue - this helps operating systems which do not set TOS bits, like everything from Microsoft.
Allow the user to specify low priority traffic (new in 1.1!)
Sometimes you may notice low priority OUTGOING traffic slowing down important traffic. In that case, the following options may help you:
NOPRIOHOSTSRC
Set this to hosts or netmasks in your network that should have low priority
NOPRIOHOSTDST
Set this to hosts or netmasks on the internet that should have low priority
NOPRIOPORTSRC
Set this to source ports that should have low priority. If you have an unimportant webserver on your traffic, set this to 80
NOPRIOPORTDST
Set this to destination ports that should have low priority.
See the start of wshaper and wshaper.htb
Results
If we do all this we get the following measurements using an excellent ADSL connection from xs4all in the Netherlands:
Baseline latency:
round-trip min/avg/max = 14.4/17.1/21.7 ms
Without traffic conditioner, while downloading:
round-trip min/avg/max = 560.9/573.6/586.4 ms
Without traffic conditioner, while uploading:
round-trip min/avg/max = 2041.4/2332.1/2427.6 ms
With conditioner, during 220kbit/s upload:
round-trip min/avg/max = 15.7/51.8/79.9 ms
With conditioner, during 850kbit/s download:
round-trip min/avg/max = 20.4/46.9/74.0 ms
When uploading, downloads proceed at ~80% of the available speed. Uploads at around 90%. Latency then jumps to 850 ms, still figuring out why.
What you can expect from this script depends a lot on your actual uplink speed. When uploading at full speed, there will always be a single packet ahead of your keystroke. That is the lower limit to the latency you can achieve - divide your MTU by your upstream speed to calculate. Typical values will be somewhat higher than that. Lower your MTU for better effects!
A small table:
Uplink speed | Expected latency due to upload
--------------------------------------------------
32 | 234ms
64 | 117ms
128 | 58ms
256 | 29ms
So to calculate your effective latency, take a baseline measurement (ping on an unloaded link), and look up the number in the table, and add it. That is about the best you can expect. This number comes from a calculation that assumes that your upstream keystroke will have at most half a full sized packet ahead of it.
This boils down to:
mtu * 0.5 * 10
-------------- + baseline_latency
kbit
The factor 10 is not quite correct but works well in practice.
Your kernel
If you run a recent distribution, everything should be ok. You need 2.4 with QoS options turned on.
If you compile your own kernel, it must have some options enabled. Most notably, in the Networking Options menu, QoS and/or Fair Queueing, turn at least CBQ, PRIO, SFQ, Ingress, Traffic Policing, QoS support, Rate Estimator, QoS classifier, U32 classifier, fwmark classifier.
In practice, I (and most distributions) just turn on everything.
The scripts
The script comes in two versions, one which works on standard kernels and is implemented using CBQ. The other one uses the excellent HTB qdisc which is not in the default kernel. The CBQ version is more tested than the HTB one!
See wshaper and wshaper.htb.
Tuning
These scripts need to know the real rate of your ISP connection. This is hard to determine upfront as different ISPs use different kinds of bits it appears. People report success using the following technique:
Estimate both your upstream and downstream at half the rate your ISP specifies. Now verify if the script is functioning - check interactivity while uploading and while downloading. This should deliver the latency as calculated above. If not, check if the script executed without errors.
Now slowly increase the upstream & downstream numbers in the script until the latency comes back. This way you can find optimum values for your connection. If you are happy, please report to me so I can make a list of numbers that work well. Please let me know which ISP you use and the name of your subscription, and its reputed specifications, so I can list you here and save others the trouble.
Installation
If you dial in, you can copy the script to /etc/ppp/ip-up.d and it will be run at each connect.
If you want to remove the shaper from an interface, run wshaper stop. To see status information, run wshaper status.
KNOWN PROBLEMS
If you get errors, add an -x to the first line, as follows:
#!/bin/bash -x
And retry. This will show you which line gives an error. Before contacting me, make sure that you are running a recent version of iproute!
Recent versions can be found at your Linux distributor, or if you prefer compiling, here:
ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz
<<lessGoals
I attempted to create the holy grail:
* Maintain low latency for interfactive traffic at all times.
This means that downloading or uploading files should not disturb SSH or even telnet. These are the most important things, even 200ms latency is sluggish to work over.
* Allow surfing at reasonable speeds while up or downloading
Even though http is bulk traffic, other traffic should not drown it out too much.
* Make sure uploads dont harm downloads, and the other way around
This is a much observed phenomenon where upstream traffic simply destroys download speed. It turns out that all this is possible, at the cost of a tiny bit of bandwidth. The reason that uploads, downloads and ssh hurt eachother is the presence of large queues in many domestic access devices like cable or DSL modems.
Why it doesnt work well by default
ISPs know that they are benchmarked solely on how fast people can download. Besides available bandwidth, download speed is influenced heavily by packet loss, which seriously hampers TCP/IP performance. Large queues can help prevent packetloss, and speed up downloads. So ISPs configure large queues.
These large queues however damage interactivity. A keystroke must first travel the upstream queue, which may be seconds (!) long and go to your remote host. It is then displayed, which leads to a packet coming back, which must then traverse the downstream queue, located at your ISP, before it appears on your screen.
This HOWTO teaches you how to mangle and process the queue in many ways, but sadly, not all queues are accessible to us. The queue over at the ISP is completely off-limits, whereas the upstream queue probably lives inside your cable modem or DSL device. You may or may not be able to configure it. Most probably not.
So, what next? As we cant control either of those queues, they must be eliminated, and moved to your Linux router. Luckily this is possible.
Limit upload speed somewhat
By limiting our upload speed to slightly less than the truly available rate, no queues are built up in our modem. The queue is now moved to Linux.
Limit download speed
This is slightly trickier as we cant really influence how fast the internet ships us data. We can however drop packets that are coming in too fast, which causes TCP/IP to slow down to just the rate we want. Because we dont want to drop traffic unnecessarily, we configure a burst size we allow at higher speed.
Now, once we have done this, we have eliminated the downstream queue totally (except for short bursts), and gain the ability to manage the upstream queue with all the power Linux offers.
Let interactive traffic skip the queue
What remains to be done is to make sure interactive traffic jumps to the front of the upstream queue. To make sure that uploads dont hurt downloads, we also move ACK packets to the front of the queue. This is what normally causes the huge slowdown observed when generating bulk traffic both ways. The ACKnowledgements for downstream traffic must compete with upstream traffic, and get delayed in the process.
We also move other small packets to the front of the queue - this helps operating systems which do not set TOS bits, like everything from Microsoft.
Allow the user to specify low priority traffic (new in 1.1!)
Sometimes you may notice low priority OUTGOING traffic slowing down important traffic. In that case, the following options may help you:
NOPRIOHOSTSRC
Set this to hosts or netmasks in your network that should have low priority
NOPRIOHOSTDST
Set this to hosts or netmasks on the internet that should have low priority
NOPRIOPORTSRC
Set this to source ports that should have low priority. If you have an unimportant webserver on your traffic, set this to 80
NOPRIOPORTDST
Set this to destination ports that should have low priority.
See the start of wshaper and wshaper.htb
Results
If we do all this we get the following measurements using an excellent ADSL connection from xs4all in the Netherlands:
Baseline latency:
round-trip min/avg/max = 14.4/17.1/21.7 ms
Without traffic conditioner, while downloading:
round-trip min/avg/max = 560.9/573.6/586.4 ms
Without traffic conditioner, while uploading:
round-trip min/avg/max = 2041.4/2332.1/2427.6 ms
With conditioner, during 220kbit/s upload:
round-trip min/avg/max = 15.7/51.8/79.9 ms
With conditioner, during 850kbit/s download:
round-trip min/avg/max = 20.4/46.9/74.0 ms
When uploading, downloads proceed at ~80% of the available speed. Uploads at around 90%. Latency then jumps to 850 ms, still figuring out why.
What you can expect from this script depends a lot on your actual uplink speed. When uploading at full speed, there will always be a single packet ahead of your keystroke. That is the lower limit to the latency you can achieve - divide your MTU by your upstream speed to calculate. Typical values will be somewhat higher than that. Lower your MTU for better effects!
A small table:
Uplink speed | Expected latency due to upload
--------------------------------------------------
32 | 234ms
64 | 117ms
128 | 58ms
256 | 29ms
So to calculate your effective latency, take a baseline measurement (ping on an unloaded link), and look up the number in the table, and add it. That is about the best you can expect. This number comes from a calculation that assumes that your upstream keystroke will have at most half a full sized packet ahead of it.
This boils down to:
mtu * 0.5 * 10
-------------- + baseline_latency
kbit
The factor 10 is not quite correct but works well in practice.
Your kernel
If you run a recent distribution, everything should be ok. You need 2.4 with QoS options turned on.
If you compile your own kernel, it must have some options enabled. Most notably, in the Networking Options menu, QoS and/or Fair Queueing, turn at least CBQ, PRIO, SFQ, Ingress, Traffic Policing, QoS support, Rate Estimator, QoS classifier, U32 classifier, fwmark classifier.
In practice, I (and most distributions) just turn on everything.
The scripts
The script comes in two versions, one which works on standard kernels and is implemented using CBQ. The other one uses the excellent HTB qdisc which is not in the default kernel. The CBQ version is more tested than the HTB one!
See wshaper and wshaper.htb.
Tuning
These scripts need to know the real rate of your ISP connection. This is hard to determine upfront as different ISPs use different kinds of bits it appears. People report success using the following technique:
Estimate both your upstream and downstream at half the rate your ISP specifies. Now verify if the script is functioning - check interactivity while uploading and while downloading. This should deliver the latency as calculated above. If not, check if the script executed without errors.
Now slowly increase the upstream & downstream numbers in the script until the latency comes back. This way you can find optimum values for your connection. If you are happy, please report to me so I can make a list of numbers that work well. Please let me know which ISP you use and the name of your subscription, and its reputed specifications, so I can list you here and save others the trouble.
Installation
If you dial in, you can copy the script to /etc/ppp/ip-up.d and it will be run at each connect.
If you want to remove the shaper from an interface, run wshaper stop. To see status information, run wshaper status.
KNOWN PROBLEMS
If you get errors, add an -x to the first line, as follows:
#!/bin/bash -x
And retry. This will show you which line gives an error. Before contacting me, make sure that you are running a recent version of iproute!
Recent versions can be found at your Linux distributor, or if you prefer compiling, here:
ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz
Download (MB)
Added: 2007-02-13 License: GPL (GNU General Public License) Price:
994 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above ack search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed