<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://test.amule.szerverem.hu/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://test.amule.szerverem.hu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.74.0.220</id>
		<title>AMule Project FAQ - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://test.amule.szerverem.hu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.74.0.220"/>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/Special:Contributions/87.74.0.220"/>
		<updated>2026-04-05T08:57:42Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.3</generator>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/Backtraces</id>
		<title>Backtraces</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/Backtraces"/>
				<updated>2005-07-01T12:13:09Z</updated>
		
		<summary type="html">&lt;p&gt;87.74.0.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Well, not hard to guess, this is about backtraces.&lt;br /&gt;
&lt;br /&gt;
Usually, it should not be necessary for the normal user to do this. However, we might have a bad day and release a somewhat buggy version or you are running [http://www.gnu.org/software/cvs CVS] which can also be unstable sometimes.&lt;br /&gt;
This is where the backtraces come in: if [[aMule]] crashes, and you get an &amp;quot;OOPS - aMule crashed&amp;quot; and so on, we'd like to know. The backtrace [[aMule]] provides is not always very usefull as it contains little information, but, as usual, there's a better way: A *real* backtrace.&lt;br /&gt;
&lt;br /&gt;
== The GNU Debugger ==&lt;br /&gt;
&lt;br /&gt;
First of all, you need the [http://www.gnu.org/software/gdb/gdb.html GNU Debugger] installed. It's called ''gdb'' and you could check for that by typing ''which gdb'' in a console window. You should see something like this:&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;pre&amp;gt;&lt;br /&gt;
$ which gdb&lt;br /&gt;
/usr/bin/gdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
If you don't have [http://www.gnu.org/software/gdb/gdb.html GDB] installed, you will get a message like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;pre&amp;gt;&lt;br /&gt;
$ which gdb&lt;br /&gt;
which: no gdb in (/bin:/usr/bin:[etc])&lt;br /&gt;
&amp;lt;/pre&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
If that is the case, the [http://www.gnu.org/software/gdb/gdb.html GNU Debugger] is most likely not installed on your system and you should install it before you proceed.&lt;br /&gt;
&lt;br /&gt;
If your OS is [http://www.gentoo.org Gentoo Linux] you have just to type this:&lt;br /&gt;
''&amp;lt;pre&amp;gt;&lt;br /&gt;
# emerge -av gdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
== Compiling [[aMule]] ==&lt;br /&gt;
&lt;br /&gt;
Then, compile [[aMule]] with debugging information:&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./configure --enable-debug --disable-optimise --prefix=/where/to/install/aMule&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
If you do not want to overwrite you old copy of [[aMule]], simply do this instead:&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./configure --enable-debug --disable-optimise&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
[[aMule]] can then be run by going into the dir ''src'' and typing ''./amule''&lt;br /&gt;
&lt;br /&gt;
If you are unable or unwilling to recompile, or are running a RPM version, proceed anyway, but be aware that backtraces from debugging enabled builds are much more useful to us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create a backtrace ==&lt;br /&gt;
&lt;br /&gt;
Now create in your home directory the file ''.gdbinit'' and put these lines into it (or you can type them in at the ''(gdb)'' prompt later):&lt;br /&gt;
''&amp;lt;pre&amp;gt;&lt;br /&gt;
ha SIGPIPE nostop noprint pass&lt;br /&gt;
ha SIG32 nostop noprint pass&lt;br /&gt;
&amp;lt;/pre&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For those who want to know the meaning of the previous lines:&lt;br /&gt;
the first one avoid [http://www.gnu.org/software/gdb/gdb.html GDB] stopping at broken pipes;&lt;br /&gt;
the second one avoid [http://www.gnu.org/software/gdb/gdb.html GDB] stopping at new thread.&lt;br /&gt;
&lt;br /&gt;
To create a backtrace, open a console and do the following:&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gdb /where/to/install/aMule/bin/amule&lt;br /&gt;
(gdb) run&lt;br /&gt;
&amp;lt;/pre&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Now use [[aMule]] normally until it crashes. If it crashes do the following:&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
&amp;lt;/pre&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Post the output of the last two commands in the [http://www.amule.org/amule/board.php?boardid=33 backtraces forum] with some additional comment about the circumstances the segfault happened and what [[aMule]] version you used (or checkout time for [http://www.gnu.org/software/cvs CVS]).&lt;br /&gt;
&lt;br /&gt;
== The core file ==&lt;br /&gt;
&lt;br /&gt;
If your [[aMule]] executable has been compiled with debug information (''--enable-debug'' configure flag), but you were not running it from within [http://www.gnu.org/software/gdb/gdb.html GDB], there is still a way to generate a backtrace, if your system was configured to generate '''core files'''.&lt;br /&gt;
&lt;br /&gt;
Core files are the full memory image of a process that crashed. Your session must be properly configured, so that the system generates core files. Add the following command to ''~/.bashrc'':&lt;br /&gt;
&lt;br /&gt;
''ulimit -c unlimited''&lt;br /&gt;
&lt;br /&gt;
Now, when a program crashes, suppose it generate the file ''core.1234'' (this name can be different, but usually will start with 'core') you can enter [http://www.gnu.org/software/gdb/gdb.html GDB] like that:&lt;br /&gt;
&lt;br /&gt;
''$ gdb /path/to/amule /path/to/core/file/core.1234''&lt;br /&gt;
&lt;br /&gt;
and then proceed as in the last session and issue 'bt' and 'bt full'.&lt;br /&gt;
&lt;br /&gt;
So, that's it, have fun with [[aMule]]&lt;br /&gt;
&lt;br /&gt;
Greetings, [[User:Citroklar|Citroklar]] &amp;amp; [[User:Phoenix|Phoenix]]&lt;br /&gt;
&lt;br /&gt;
(Most of the above shamelessly stolen from pure_ascii's post in backtraces forum, thanks, pure!)&lt;br /&gt;
&lt;br /&gt;
Please read [[Using_gdb_and_valgrind|this]] to learn more about [http://www.gnu.org/software/gdb/gdb.html GDB] and [http://valgrind.kde.org Valgrind].&lt;/div&gt;</summary>
		<author><name>87.74.0.220</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/Shortcut</id>
		<title>Shortcut</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/Shortcut"/>
				<updated>2005-06-17T13:54:53Z</updated>
		
		<summary type="html">&lt;p&gt;87.74.0.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apparently Hot keys can be currently (as of 2.0.2) defined in the GTK1 version, but not the GTK2 version.&lt;br /&gt;
&lt;br /&gt;
They cannot currently be saved.&lt;/div&gt;</summary>
		<author><name>87.74.0.220</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/Shortcut</id>
		<title>Shortcut</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/Shortcut"/>
				<updated>2005-06-17T13:54:38Z</updated>
		
		<summary type="html">&lt;p&gt;87.74.0.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apparently Hot keys can be currently (as of 2.0.2) defined in the GTK1 version, but not the GTK2 version.&lt;/div&gt;</summary>
		<author><name>87.74.0.220</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/HowTo_Compile_In_Debian/Ubuntu</id>
		<title>HowTo Compile In Debian/Ubuntu</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/HowTo_Compile_In_Debian/Ubuntu"/>
				<updated>2005-05-19T07:25:28Z</updated>
		
		<summary type="html">&lt;p&gt;87.74.0.220: /* Preparing the system */  You were clobbering their input file! (and changing &amp;quot;unstable&amp;quot; to &amp;quot;untesting&amp;quot;) :-| - sed can't write to its input file.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;HowTo compile aMule in [[Debian]]&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;/h2&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;by &amp;lt;i&amp;gt;[[User:Jacobo221|Jacobo221]]&amp;lt;/i&amp;gt;&amp;lt;/h2&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Very special thanks to &amp;lt;i&amp;gt;darknox&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;Arathornz&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;guest234&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;parasito&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;maya&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;klando&amp;lt;/i&amp;gt; for their tests!&amp;lt;/h3&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' This howto will also work for [http://www.ubuntulinux.com Ubuntu Linux].&lt;br /&gt;
&lt;br /&gt;
== Are you sure you want to compile? ==&lt;br /&gt;
&lt;br /&gt;
You can just install latest [[aMule CVS]] through debs adding the following lines into your ''/etc/apt/sources.list'' file:&lt;br /&gt;
&lt;br /&gt;
 deb http://www.vollstreckernet.de/debian/ testing amule&lt;br /&gt;
 deb http://www.vollstreckernet.de/debian/ testing wx&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The second line is necessary for Sarge users and strongly recommended for Sid users.&lt;br /&gt;
&lt;br /&gt;
Now run ''apt-get update &amp;amp;&amp;amp; apt-get install amule''&lt;br /&gt;
&lt;br /&gt;
You might also want to take a look at the other available [[aMule]] utilities:&lt;br /&gt;
*amule&lt;br /&gt;
*amule-common&lt;br /&gt;
*amuled&lt;br /&gt;
*amule-remote-gui&lt;br /&gt;
*amuleweb&lt;br /&gt;
*amulewebdlg&lt;br /&gt;
*amule-cas&lt;br /&gt;
*amule-wxcas&lt;br /&gt;
*amule-xas&lt;br /&gt;
*amule-utils&lt;br /&gt;
&lt;br /&gt;
If you still want to compile aMule instead of just installing a binary, keep reading...&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;h4&amp;gt;&amp;lt;u&amp;gt;Notes before starting&amp;lt;/u&amp;gt;&amp;lt;/h4&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;Important:&amp;lt;/b&amp;gt; Have in mind that this HowTo was done having in mind aMule 2.0.0 or greater in [[Debian]] 3.0 (Woody/Sarge/Sid).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This HowTo is based on using the apt-get package installer tool, which means you'll have to be able to get super-user (root) access. Also, apt-get requires a perfect packet dependencies installed system. If you usually use apt-get for installing any application, skip this and go to the next section. If you rarely use apt-get but, instead, use dpkg, you can&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A) (Recommended) Solve all the dependencies problems on your system. This can be done by taking a look at the &amp;lt;code&amp;gt;&amp;quot;dpkg -C&amp;quot;&amp;lt;/code&amp;gt; output and installing/removing/updating the packages it mentions depending on what's required. This option is the recommended since it will not only ensure your aMule compilation will be most surely correct, but it will also make your system the most stable it can possibly be and from now on you'll be able to use apt-get to not only make easier installations, but also to easily upgrade your system.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
B) Force apt-get to ignore the dependencies problems using the -f or --fix-broken switches (just one of them, since they're exactly the same, so that'd be, for example, &amp;lt;code&amp;gt;&amp;quot;apt-get install -f ...&amp;quot;&amp;lt;/code&amp;gt;). This option may cause a corrupt installation of some packages which may cause the apps not to work. Also have in mind that using this switch in a system with dependencies problems may cause the system to completely break if the package being installed is a base package (although this is not the case).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C) Follow this instructions but, instead of using &amp;lt;code&amp;gt;&amp;quot;apt-get install foo&amp;quot;&amp;lt;/code&amp;gt;, use &amp;lt;code&amp;gt;&amp;quot;dpkg -i foo&amp;quot;&amp;lt;/code&amp;gt; where foo is the package to install. Remember the packages must be already on the system when installing packages with dpkg. Remember also to download any &amp;quot;Depends&amp;quot; package since it most-surely will be necessary for successfully compiling [[aMule]]. Avoid using whichever of the following dpkg switches: --force-all  --force-depends-version --force-depends --force-conflicts&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If you usually install applications from source, read deltaHF's [[Compilation_Installation|&amp;quot;aMule compilation / installation HowTo&amp;quot;]] since your system might not be complying the Debian aMule package dependencies although &amp;lt;code&amp;gt;&amp;quot;dpkg -C&amp;quot;&amp;lt;/code&amp;gt; shows no errors.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== &amp;lt;h4&amp;gt;&amp;lt;u&amp;gt;The easiest: Preparing the system&amp;lt;/u&amp;gt;&amp;lt;/h4&amp;gt; ==&lt;br /&gt;
Once you decided to use apt-get, you must make sure you'll be downloading the latest versions of the packages (aMule team has discovered bugs in some deb packages that would make aMule impossible to compile on Debian without compiling some other libraries too. This bugs have been mostly fixed in those affected debian packages, so it is very important to be sure to have the packages up to date). This is done by&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get dist-upgrade&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 1:&amp;lt;/b&amp;gt; You must be root user to do this. Log in as root or &amp;lt;code&amp;gt;&amp;quot;su&amp;quot;&amp;lt;/code&amp;gt; or use &amp;lt;code&amp;gt;&amp;quot;sudo&amp;quot;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;quot;sudo&amp;quot;&amp;lt;/code&amp;gt; must be specified on both apt-get commands, that is &amp;lt;code&amp;gt;&amp;quot;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get dist-upgrade&amp;quot;&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;&amp;quot;sudo&amp;quot;&amp;lt;/code&amp;gt; is not a base command, so it may not be installed on your system, although it most probably will. Be aware that following this HowTo entirely as root may bring some problems later such as being unable to delete certain files as a normal user, so please only use tooy priviledges when necessary.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 2:&amp;lt;/b&amp;gt; Woody users (that is, people stuck in the stable Debian 3.0 branch) will be unable to install the wxGTK, wxbase and Crypto++ libraries since they were not available in the current minimum compatible versions (2.4.2 and 2.5.1 respectively) when Woody was released.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;The best for Woody users is to switch to the Sarge or Sid branch.&lt;br /&gt;
That can be done with the following command (again, you must be root)&lt;br /&gt;
&amp;lt;code&amp;gt;perl -pi.$$ -e &amp;quot;s/(\bstable|woody)/testing/g&amp;quot; /etc/apt/sources.list&amp;lt;/code&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;code&amp;gt;perl -pi.$$ -e &amp;quot;s/(\bstable|woody)/sarge/g&amp;quot; /etc/apt/sources.list&amp;lt;/code&amp;gt;&lt;br /&gt;
to switch to the Sarge/testing branch, or with&lt;br /&gt;
&amp;lt;code&amp;gt;perl -pi.$$ -e &amp;quot;s/(\bstable|woody)/unstable/g&amp;quot; /etc/apt/sources.list&amp;lt;/code&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;code&amp;gt;perl -pi.$$ -e &amp;quot;s/(\bstable|woody)/sid/g&amp;quot; /etc/apt/sources.list&amp;lt;/code&amp;gt;&lt;br /&gt;
 to switch to the Sid/unstable branch.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;If Woody users are not be interested in switching to Sarge they will have to download Woody-backported debian packages by adding the following line to /etc/apt/sources.list (remember to &amp;lt;code&amp;gt;&amp;quot;apt-get update&amp;quot;&amp;lt;/code&amp;gt; after adding this line):&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
	&amp;lt;i&amp;gt;&amp;lt;code&amp;gt;deb http://debian.thermoman.de/ woody wxwindows2.4 libcrypto++&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
What's more, [http://www.thermoman.de thermoman] stopped working on the [[aMule]] backports for [http://www.debian.org Woody] on the [[aMule]] 2.0.0-rc5 release, so newer [[aMule]] releases backports are unavailable. Sorry.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 3:&amp;lt;/b&amp;gt; Sarge users won't have any dependecy problems any longer, sicne both crypto++ and wxWidgets are both in Sarge since some time ago. So, there's no longer any need to update ''sources.list'' on Debian Sarge distributions.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 4:&amp;lt;/b&amp;gt; Sid users (that is, people holding the cutting-edge unstable Debian 3.0 branch) could suffer problems from packages not completely implemented or with broken dependencies (both are normal issues in the unstable branch). It is very important to keep this in mind since a compiler (g++) will be installed so it could also be broken and, with it, most applications compiled with it (once upgraded, of course). If a package was broken, to downgrade you can use the --force-downgrade switch with dpkg.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If for whatever reason you think this is too much of a complication, you can just wait a few days until the aMule binary version comes out for your architecture (that is, a .deb file).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;h4&amp;gt;&amp;lt;u&amp;gt;The fastest: Installing the necessary packages&amp;lt;/u&amp;gt;&amp;lt;/h4&amp;gt; ==&lt;br /&gt;
Remember you need to be root to install applications using apt-get, since apt-get installs system-wide applications. So, log in as root, use &amp;quot;su&amp;quot; or add &amp;quot;sudo&amp;quot; before every command shown here.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The following are the packages which must be installed:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1) Install the latest stable g++ compiler and the C++ Standard Library&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;apt-get install g++&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
the required libraries for compiling [[aMule]] (wxbase is not really a requiered packet to compile aMule but, unless you know what you're doing, be sure you install it. I won't show in this this guide how to force aMule's compilation without wxbase):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;apt-get install libwxbase2.4-dev libcurl3-dev libgtk1.2-dev libwxgtk2.4-dev&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Alternatively you can use &amp;lt;code&amp;gt;apt-get build-dep amule&amp;lt;/code&amp;gt; to get all the required depencies for compilation. Anyway, this last method is not sure to work, since it will depend on the latest version on the Debian repository and later versions or CVS versions might have different dependencies.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
and the required utilities for compiling [[aMule]], at the moment only gettext (necessary for internationalization support):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;apt-get install gettext&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 5:&amp;lt;/b&amp;gt; This can all be done in a single command line, which might be more handy for users using &amp;lt;code&amp;gt;&amp;quot;sudo&amp;quot;&amp;lt;/code&amp;gt; to gain root priviledges:  &amp;lt;code&amp;gt;apt-get install g++ libwxbase2.4-dev libcurl3-dev libgtk1.2-dev gettext&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 6:&amp;lt;/b&amp;gt; From aMule 2.0.0-rc1 to aMule 2.0.0-rc5 (inclusive) the package ''libcrypto++-dev'' is was necessary for compiling aMule, so if you are compiling any of such versions, apt-get libcrypto++-dev too.&amp;lt;br&amp;gt;&lt;br /&gt;
Also, you might be interested in installing libgd2-noxpm-dev if you plan to compile CAS. It is not a required library for compiling CAS, this library is only used by CAS for creating images (since v2.0.0-rc3) on the current aMule status (by running &amp;lt;code&amp;gt;cas -o&amp;lt;/code&amp;gt;). If you plan to use this feature of CAS, you need to install LibGD2. Anyway, CAS will compile perfectly well even if LibGD2 isn't installed, since it detects, on compilation time, if this library is installed.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 7:&amp;lt;/b&amp;gt; Woody users will most probably be unable to get libgd2-xpm-dev and libcurl3-dev since those packages aren't available for Woody. For libcurl3-dev you can just install libcurl2-dev and go on, everything will be ok For libgd2-xpm, at the moment there is no backport available but, since this library is only used by CAS (and suggested, not even required), it won't give any problems on compilation time. Just be aware that &amp;lt;code&amp;gt;cas -o&amp;lt;/code&amp;gt; won't work.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2) Download the latest released [[aMule]] source code from [http://www.amule.org/files/files.php?cat=6 here] (or look [[AMule_CVS|here]] for an up-to-date link).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 8:&amp;lt;/b&amp;gt; From now on, I will suppose we are installing aMule 2.0.0-rc3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3) Fix Crypto++ Library 5.1 if using it&amp;lt;br&amp;gt;&lt;br /&gt;
From [[aMule]] 2.0.0-rc1 to a aMule 1.0.0-rc5 (inclusive) this library is required because [[aMule]] is now supporting SecureIdent (remember, since aMule 2.0.0-rc6, libcrypto++ is optional and not needed by default), but the [[Libcrypto|Crypto++]] [[Debian]] package has had lots of compiling bugs and still has one (although the rest have been fixed after aMule team's reports). Remember you should have update and dist-upgraded apt-get before installing any [[Debian]] package in this HowTo, otherwise, you could be installing (or already have installed) a buggy Crypto++ package and this fix will not suit your needs. To fix the latest [[Libcrypto|crypto++]] [[Debian]] package only a symbolic link is needed:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ln -s /usr/include/crypto++/cryptopp_config.h /usr/include/crypto++/config.h&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If you still can't compile crypto++, try compiling it after running the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ln -s /usr/include/crypto++ /usr/include/cryptopp''&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 9:&amp;lt;/b&amp;gt; Since this link needs write permissions in /usr/lib, super-user (root) priviledges are needed. Again, this can be done easily with &amp;lt;code&amp;gt;&amp;quot;su&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;sudo&amp;quot;&amp;lt;/code&amp;gt;.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;h4&amp;gt;&amp;lt;u&amp;gt;The hardest: Compiling [[aMule]]&amp;lt;/u&amp;gt;&amp;lt;/h4&amp;gt; ==&lt;br /&gt;
4) Extract the sources. The following will create a folder on your user's home directory where it will extract the sources with the -C switch into it (the following command understands that [[aMule]]'s sources are on the current directory):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;mkdir ~/aMule-compilation/ &amp;amp;&amp;amp; tar xzfv aMule-2.0.0rc3.tar.gz -C ~/aMule-compilation/ &amp;amp;&amp;amp; cd ~/aMule-compilation/&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 10:&amp;lt;/b&amp;gt; Remember I'm supposing you are extracting [[aMule]] 2.0.0-rc3. Change the file name if it doesn't correspond to the actual packed source code filename.&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5) Compile [[aMule]]! The following command will actually switch to the directory containing [[aMule]] 2.0.0rc3 and compile it:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;cd ~/aMule-compilation/aMule-2.0.0rc3/ &amp;amp;&amp;amp; ./configure &amp;amp;&amp;amp; make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 11:&amp;lt;/b&amp;gt; Please take a look at the [[configure|configure article]].&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 12:&amp;lt;/b&amp;gt; You should check &amp;lt;code&amp;gt;&amp;quot;./configure --help | more&amp;quot;&amp;lt;/code&amp;gt; to see if there is any configure switch which might be of your interest, such as --disable-debug --enable-optimise or --bindir= &amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Note 13:&amp;lt;/b&amp;gt; if you get an error message, while compiling, similar to: &amp;quot;In file included from /usr/include/wx/***:***, [...] /usr/include/wx/******:***: internal compiler error: Segmentation fault&amp;quot;, then you most probably have problems with wxWidgets. Try with &amp;lt;code&amp;gt;&amp;quot;apt-get install --reinstall wxwin2.4-headers libwxbase2.4 libwxgtk2.4-dev&amp;quot;&amp;lt;/code&amp;gt;, which will reinstall wxWidgets and will most probably fix the compilation error.&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== &amp;lt;h4&amp;gt;&amp;lt;u&amp;gt;Meeting satisfaction: Installing aMule!&amp;lt;/u&amp;gt;&amp;lt;/h4&amp;gt; ==&lt;br /&gt;
8) What's left? Install aMule (remember you must be root, so log in as root or use &amp;lt;code&amp;gt;&amp;quot;su&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;sudo&amp;quot;&amp;lt;/code&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now you can remove the sources so you free up space in your hard disk by running:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;rm -rf ~/aMule-compilation/&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== &amp;lt;h4&amp;gt;&amp;lt;u&amp;gt;The end: Final checks&amp;lt;/u&amp;gt;&amp;lt;/h4&amp;gt; ==&lt;br /&gt;
If you have sometime installed aMule from the Debian packages (no matter if the package came from http://gunnm.org/~soda ), you will have aMule binaries installed in /usr/bin. But &amp;lt;code&amp;gt;&amp;quot;make install&amp;quot;&amp;lt;/code&amp;gt; installs binnaries in /usr/local/bin (unless --prefix= is set in configure). This leads us to the point that when typing &amp;quot;amule&amp;quot; anyone of the two installed aMule versions might be invoked (which one is executed will depend on the $PATH environment variable. You can check it by typing &amp;lt;code&amp;gt;&amp;quot;type amule&amp;quot;&amp;lt;/code&amp;gt;). The walk around is very easy: remove the aMule installed through [[Debian]] package. You can do this with the command &amp;quot;apt-get remove amule&amp;quot; (do not use &amp;lt;code&amp;gt;&amp;quot;apt-get remove --purge&amp;quot;&amp;lt;/code&amp;gt; or you might loose your [[aMule]] settings) or with &amp;lt;code&amp;gt;&amp;quot;dpkg --remove amule&amp;quot;&amp;lt;/code&amp;gt; (again, never ever use &amp;lt;code&amp;gt;&amp;quot;dpkg --purge&amp;quot;&amp;lt;/code&amp;gt; or you might loose your [[aMule]] settings). apt-get will remove aMule-utils if you have them installed (only available as a separate package in Sid, in Sarge and Woody aMule utils are included in the base aMule package) while dpkg will leave aMule-utils installed on the system (which, in general, is a bad idea).&amp;lt;br&amp;gt;&lt;br /&gt;
Also, if you installed xmule sometime or you are planing to install it, have in mind that the [[ed2k command]] exists both in [[aMule]] and [[xMule]]. You might want to run `type ed2k` to see which [[ed2k command]] will be executed and rename the other so you make sure it's never executed by mistake.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== &amp;lt;h4&amp;gt;&amp;lt;u&amp;gt;You're done...&amp;lt;/u&amp;gt;&amp;lt;/h4&amp;gt; ==&lt;br /&gt;
That's it! Your own compiled [[aMule]] is installed on your system and ready to go.&amp;lt;br&amp;gt;&lt;br /&gt;
To run [[aMule]], just type &amp;lt;code&amp;gt;&amp;quot;amule&amp;quot;&amp;lt;/code&amp;gt;. You can check if everything worked by typing &amp;lt;code&amp;gt;&amp;quot;amule -v&amp;quot;&amp;lt;/code&amp;gt; and check if the displayed version corresponds with the one you were compiling/installing.&amp;lt;br&amp;gt;&lt;br /&gt;
If this HowTo didn't help, you have a rare problem on your system ;-) Take a look at http://www.amule.org ([http://www.amule.org/amule aMule Forums] at http://forum.amule.org ) or visit us in #amule on irc.freenode.net and (don't doubt) we'll try to do our best to help you.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Final notes ==&lt;br /&gt;
&lt;br /&gt;
If you are in one of those rare cases when you wish to compile [[aMule]] statically, install also ''libtiff4-dev'' (through ''apt-get install libtiff4-dev''). Anyway, this is '''NOT''' recommended and, in fact, will probably not do any better or even, not work at all.&lt;/div&gt;</summary>
		<author><name>87.74.0.220</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/FAQ_network</id>
		<title>FAQ network</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/FAQ_network"/>
				<updated>2005-05-17T00:13:57Z</updated>
		
		<summary type="html">&lt;p&gt;87.74.0.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Network speed: what you should know before asking questions =&lt;br /&gt;
 by Froenchenko Leonid, lfroen@gmail.com&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Preface ==&lt;br /&gt;
The purpose of this document is to clarify different issues regarding network &lt;br /&gt;
speed that pop up from time to time in the [[aMule]] [[forum]]. Generally speaking, there are several reasons for questions about &amp;quot;[[FAQ_ed2k|aMule network]]&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
* The speed reported by [[aMule]] doesn't match your provider's given rate&lt;br /&gt;
* Poor performance of [[aMule]] itself or another network application on the same computer&lt;br /&gt;
* The key factors influencing network performance while [[aMule]] is running&lt;br /&gt;
&lt;br /&gt;
The intended audience for this document is users who want to get a better understanding of network functionality in general and in particular its implications for [[aMule]] functionality.&lt;br /&gt;
&lt;br /&gt;
This page, however, is not to be seen as comprehensive general purpose &amp;quot;[[FAQ_ed2k|Network FAQ]]&amp;quot;. If you were expecting something else, you might be interested in the [[aMule is slow|aMule is slow FAQ]].&lt;br /&gt;
 &lt;br /&gt;
== Network speed - how much is it? ==&lt;br /&gt;
When talking about network speed, people use the unit &amp;quot;bps&amp;quot; which means &lt;br /&gt;
&amp;quot;bits per second&amp;quot;. The reason that a ''bit'' is used rather than a ''byte'' is pretty much historical, but also has an engineering motivation behind it. &lt;br /&gt;
&lt;br /&gt;
This motivation comes from the fact that not all networks in the world transfer their traffic in bytes.&lt;br /&gt;
&lt;br /&gt;
There is a convention to use a capital &amp;quot;B&amp;quot; in &amp;quot;Bps&amp;quot; when speed is marked &lt;br /&gt;
in &amp;quot;bytes per second&amp;quot;. However, this convention is not widely accepted. In particular, organizations like the [http://www.ietf.org/ IETF] and [http://www.ieee.org/ IEEE] stick to the original &amp;quot;bps&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Prefixes ==&lt;br /&gt;
Since their invention, networks have made a lot of progress. Today we have networks that transfer thousands of millions of bits per second. For measuring these speeds the prefixes ''&amp;quot;kilo&amp;quot;'', ''&amp;quot;mega&amp;quot;'', ''&amp;quot;giga&amp;quot;'', ''&amp;quot;tera&amp;quot;'' etc. are used. &lt;br /&gt;
&lt;br /&gt;
It is a &amp;lt;u&amp;gt;common mistake&amp;lt;/u&amp;gt; to think that values with those prefixes are the same as in computer science, i.e. powers of 2. The truth is that, for historical reasons, prefixes in networking have a decimal base, and not a binary one.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; title=&amp;quot;Table 1&amp;quot;&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; title=&amp;quot;Table 1&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot; | Prefix&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot; | meaning in computers&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; title=&amp;quot;Table 1&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot; | meaning in networks&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot; | difference, %%&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | K (kilo)&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2^10 = 1024&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 10^3 = 1000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2%&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | M (mega)&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2^20 = 1,048,576&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 10^6 = 1,000,000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 5%&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | G (giga)&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2^30 = 1,073,741,624&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 10^9 = 1,000,000,000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 7%&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | T (tera)&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2^40 = 1,099,511,627,776&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 10^12 = 1,000,000,000,000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 9%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As you can see from the table above the error in calculation is about 5% when the prefix is incorrectly interpreted. Please note that the speed your provider quotes you is the &amp;quot;speed in network units&amp;quot;, i.e. calculated on a decimal basis.&lt;br /&gt;
&lt;br /&gt;
For example when your provider tells you that your link is &amp;quot;ADSL 256/128&amp;quot; you &lt;br /&gt;
should understand that they mean 256000/128000 bps (bits). Which means, that the speed of your connection is 32000/16000 bps (bytes).&lt;br /&gt;
&lt;br /&gt;
== Protocol overhead - what is it about? ==&lt;br /&gt;
When [[aMule]] is running, it constantly &amp;quot;talks&amp;quot; with other [[client]]s and [[server]]s. &lt;br /&gt;
This data exchange is needed to identify itself, request information about &lt;br /&gt;
available [[FAQ_eD2k-Kademlia#What_is_a_source?|source]]s and [[file]]s, to perform [[search]]es and so on. &lt;br /&gt;
&lt;br /&gt;
Since this information has no direct use to the user itself, it is called &amp;quot;overhead&amp;quot; i.e. an inevitable addition to the data you actually want to [[upload]] or [[download]]. &lt;br /&gt;
&lt;br /&gt;
[[aMule]] calls this &amp;quot;''connection overhead''&amp;quot;. However the number that [[aMule]] presents includes only the size of the actual data that [[aMule]] itself sends to the network stack. Later, this data is sent out on the network with even more overhead - that of the network protocols.&lt;br /&gt;
How much is it? - let's see that in the next section.&lt;br /&gt;
&lt;br /&gt;
== Network overhead ==&lt;br /&gt;
First of all - we're talking about the [[IPv4]] network. Once upon a time, there &lt;br /&gt;
was only one type of [[IP]] network. Now there are two - [[IPv4|IP version 4]], the old we all know; and [[IPv6|IP version 6]] - the new protocol made to fix the limitations of [[IPv4]].&lt;br /&gt;
&lt;br /&gt;
[[FAQ ed2k|ED2K protocol]] by design, is unable to talk over [[IPv6]] network, so users who have it (in Japan and China for example) will not be able to connect &amp;quot;as is&amp;quot;. Using [[IPv4]] means, that each packet ([http://www.ietf.org/rfc/rfc793.txt TCP], [http://www.ietf.org/rfc/rfc768.txt UDP], [http://www.ietf.org/rfc/rfc792.txt ICMP]) will have an [[IPv4]] header.&lt;br /&gt;
&lt;br /&gt;
The minimum size of this header is 20 bytes. The header can have optional parts (each of 4 bytes) and that is up to your provider - for example, mine adds an optional [dword].&lt;br /&gt;
&lt;br /&gt;
When talking to other clients and servers on [[FAQ ed2k|ed2k network]], [[aMule]] uses the widely known [http://www.ietf.org/rfc/rfc793.txt TCP] protocol. [http://www.ietf.org/rfc/rfc768.txt UDP] is also used, but on a much smaller scale. As the reader might know, [http://www.ietf.org/rfc/rfc793.txt TCP] is a reliable protocol, i.e. it guarantees that data which is sent from one side will arrive on the other or an error will be reported.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, [http://www.ietf.org/rfc/rfc793.txt TCP] sends its own data in addition to the actual &amp;quot;payload&amp;quot; data being transfered. This data includes [http://www.ietf.org/rfc/rfc793.txt TCP] client initial negotiation, checksums, sequence numbers and acknowledgments. All of this is in the ''[http://www.ietf.org/rfc/rfc793.txt TCP] header'' which is added to each packet sent. The size of this header is a minimum of 20 bytes.&lt;br /&gt;
&lt;br /&gt;
While being only a small overhead for a large bulk transfer, it can take significant part of bandwidth when small amounts of data are being exchanged. &amp;lt;u&amp;gt;This is exactly what happens on [[FAQ_ed2k#What_is_a_source?|source]] discovery part of [[aMule]]&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Our [[client]] is trying to establish a connection and negotiate with a large number of other [[client]]s. Doing this, [[aMule]] opens new [http://www.ietf.org/rfc/rfc793.txt TCP] connections &amp;lt;u&amp;gt;''all the time''&amp;lt;/u&amp;gt;. The amount of connections opened is controlled by the ''&amp;quot;Maximum number of connections in 5 seconds&amp;quot;'' setting in the preferences. &lt;br /&gt;
&lt;br /&gt;
A typical number is about 100. Each [http://www.ietf.org/rfc/rfc793.txt TCP] connection results in at least 3 packets traveling the net - one is a SYN packet, i.e. connection request, and one an ACK or a RST when the connection is accepted or refused, and SYN+ACK to establish the session. &lt;br /&gt;
&lt;br /&gt;
There's more overhead of [http://www.ietf.org/rfc/rfc1034.txt DNS] queries when an address is resolved, retries when a host doesn't reply and so on.&lt;br /&gt;
 &lt;br /&gt;
=== At low level ===&lt;br /&gt;
After passing [http://www.ietf.org/rfc/rfc793.txt TCP] and [[IP]] layers packets go down to the network interface driver. What kind of driver this is depends on the way your computer is connected to the internet. For simplicity sake we will assume that this computer is connected to the ISP directly, i.e. you have no LAN (or switch or router) between. &lt;br /&gt;
&lt;br /&gt;
Common setups that I'm aware of:&lt;br /&gt;
 &lt;br /&gt;
* Analog modem, connected to telephone line (ISDN modem falls in this category too).&lt;br /&gt;
* Cable modem, connected through ethernet, ISP gives you an [[IP]] address through [http://www.ietf.org/rfc/rfc2131.txt DHCP].&lt;br /&gt;
* Cable modem, connected through ethernet, ISP requires you to configure PPPoE or PPTP tunnel.&lt;br /&gt;
* ADSL modem, connected through ethernet. You must have a PPPoE or PPTP tunnel&lt;br /&gt;
* Variation of above - modem connected to PC by USB.&lt;br /&gt;
 &lt;br /&gt;
In each of the above setups there are different protocols in use, and different headers are added to transmitted packets. But there's one important thing to note: &amp;lt;u&amp;gt;''ethernet frames traveling between cable/ADSL modem and PC, and don't reach the ISP''&amp;lt;/u&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
And consequently they are not counted in rate calculations. [http://www.ietf.org/rfc/rfc2516.txt PPPoE] and &lt;br /&gt;
[http://www.ietf.org/rfc/rfc2637.txt PPTP] headers, on the contrary &amp;lt;u&amp;gt;''do reach the ISP''&amp;lt;/u&amp;gt;. I obviously have no idea whether or not your particular provider chooses to include them in their rate calculations. For this reason I will exclude those headers from my calculations. &lt;br /&gt;
&lt;br /&gt;
If you think that your ISP includes it, add 4 bytes to the size of each packet.&lt;br /&gt;
 &lt;br /&gt;
=== Example ===&lt;br /&gt;
Let's see how much network overhead we have on a typical network. Our connection is a cable modem connected via an ethernet link to a PC directly (no router between them). &lt;br /&gt;
&lt;br /&gt;
In this setup we have [[IPv4]] packets sent over ethernet. &lt;br /&gt;
&lt;br /&gt;
Lets say we have 10 new connections opened each second, and all are being accepted (successfully established [http://www.ietf.org/rfc/rfc793.txt TCP] session). This alone sums up to (I'm counting data going up - from my computer to the net):&lt;br /&gt;
&lt;br /&gt;
''10 connection * 2 packets * (20 bytes of TCP + 20 bytes of [[IPv4]]) = 800 bytes of overhead.''&lt;br /&gt;
&lt;br /&gt;
This means that we are starting with 1.16*8 Kbps of &amp;quot;''invisible&amp;quot;''&lt;br /&gt;
overhead caused by the very way the network works. Now, let's assume that&lt;br /&gt;
after each connection is established our amule sends something to the other side and waits to receive an answer.&lt;br /&gt;
&lt;br /&gt;
''Total of 800 bytes + 800 bytes = 1600 bytes per second = 6400 bps = 6.4 Kbps''&lt;br /&gt;
&lt;br /&gt;
What we have here is 6.4 Kbps of network overhead alone. Taking into account &lt;br /&gt;
that amule has other data to send (uploads) and it is not the only network &lt;br /&gt;
application running we will have the following picture: &lt;br /&gt;
&lt;br /&gt;
Most likely the link to your provider is not that fast. [[aMule]] will &amp;lt;u&amp;gt;''try''&amp;lt;/u&amp;gt; to open 10 connections per second and will &amp;lt;u&amp;gt;''try''&amp;lt;/u&amp;gt; to upload on the specified speed. &lt;br /&gt;
&lt;br /&gt;
Your operating system will share all available bandwidth between those and between [[aMule]] and other network applications (browser for example). Actual results will vary depending on specific OS settings.&lt;br /&gt;
&lt;br /&gt;
== ACK bottleneck ==&lt;br /&gt;
In all calculations above there was one assumption - zero download. But downloading is what amule was built for. So let's examine how the overhead &lt;br /&gt;
above affects your downloading speed. The answer is in [http://www.ietf.org/rfc/rfc793.txt TCP] protocol. &lt;br /&gt;
&lt;br /&gt;
When [http://www.ietf.org/rfc/rfc793.txt TCP] is sending data, it requires that the other side acknowledge the reception. So if client A is sending data to [[client]] B by [http://www.ietf.org/rfc/rfc793.txt TCP], B has to send a special ACK packets to A which tells B &amp;quot;ok, I got it&amp;quot;. If, however, A doesn't receive the ACK packets in time, he will assume that either packet is lost. &lt;br /&gt;
&lt;br /&gt;
So, without going deeply into [http://www.ietf.org/rfc/rfc793.txt TCP] specification: &amp;lt;u&amp;gt;''if B fails to send ACK to A, as a result A will transmit slower''&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now let's see the situation in [[aMule]]. We saw in the previous chapter, that the uplink stream is congested by connection requests and uploads. As a result, there's a good chance that ACK packets for a file we are downloading &amp;lt;u&amp;gt;''will not be sent on time''&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The remote party will notice this and slow down. This is one more reason why the upstream should better not be too congested.&lt;br /&gt;
 &lt;br /&gt;
== Is there anything I can do? ==&lt;br /&gt;
OK, now that you understood why your network is so slow while [[aMule]] is &lt;br /&gt;
running you will maybe look for a way to fix this. The answer in 2 words: &amp;quot;rate limit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first thing you should do is to assign realistic rate limits in [[aMule]] &lt;br /&gt;
itself. If you have a uplink rate of 128 Kbps don't set [[aMule]]'s [[upload]] limit to 16 (kilobytes per second) just because 128/8 = 16.&lt;br /&gt;
&lt;br /&gt;
A better, but far more complicated solution is to use the QoS and packet scheduling services of your OS. For example, you can give a higher priority to ACK packets to solve the above mentioned &amp;quot;ACK bottleneck&amp;quot; problem. &lt;br /&gt;
&lt;br /&gt;
The QoS topic, however, is beyond the scope of this article.&lt;br /&gt;
&lt;br /&gt;
== Router (switch, home network): is there any difference? ==&lt;br /&gt;
When the cable coming from your ISP is connected to some switching or routing &lt;br /&gt;
device, which in turn is connected to several PC's, bandwidth is shared between &lt;br /&gt;
them. &lt;br /&gt;
&lt;br /&gt;
So, having N computers connected, an ideal device would simply provide &lt;br /&gt;
each one of them with 1/N of the total bandwidth. The situation may vary in real life, and your particular device may have different idea about fairness. &lt;br /&gt;
&lt;br /&gt;
Since you're not going to have the hardware specs of your router chipset the only advice here is &amp;quot;try and see yourself&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Multiple links ==&lt;br /&gt;
Until now, we talked about computers that are connected to the network through&lt;br /&gt;
single interface. While being most frequent, this is not mandatory. A user&lt;br /&gt;
may choose to connect via 2 (or more links) provided by different ISP's.&lt;br /&gt;
There're 2 reasons for this decision that I know about: link redundancy and&lt;br /&gt;
load balancing.&lt;br /&gt;
&lt;br /&gt;
=== Link redundancy ===&lt;br /&gt;
In a case of link redundancy second link becomes operational when primary&lt;br /&gt;
link fails. This can be done automatically, or by explicit user command.&lt;br /&gt;
When this setup used, [[aMule]] along with other network applications must be&lt;br /&gt;
restarted when links are being switched. This will allow to bind new address,&lt;br /&gt;
reconnect to server and receive new ID. If [[aMule]] is connected via &amp;amp;nbsp;[http://www.ietf.org/rfc/rfc3022.txt NAT]]&lt;br /&gt;
enabled router (it doesn't matter if you have [[FAQ_ed2k#What_is_LowID_and_HighID?|low or high ID]]), and links&lt;br /&gt;
are switched &amp;lt;u&amp;gt;''on the router''&amp;lt;/u&amp;gt;, restart not needed.&lt;br /&gt;
&lt;br /&gt;
=== Load balancing ===&lt;br /&gt;
This is a far more complicated case. Both (all) links are simultaneously active,&lt;br /&gt;
and traffic is being distributed between them. The problem is that [[aMule]]&lt;br /&gt;
binds to &amp;lt;u&amp;gt;''all interfaces on the system''&amp;lt;/u&amp;gt; i.e. 0.0.0.0. But, on [[FAQ ed2k|ed2k]]&lt;br /&gt;
your ID is your [[IP]] address, &amp;lt;u&amp;gt;''and you can not have two''&amp;lt;/u&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
So the problem is that [[aMule]] does not explicitly choose the source&lt;br /&gt;
address for ''&amp;lt;u&amp;gt;outgoing&amp;lt;/u&amp;gt;'' [http://www.ietf.org/rfc/rfc793.txt TCP] connections. Note, that it &amp;lt;u&amp;gt;''doesn't&lt;br /&gt;
matter''&amp;lt;/u&amp;gt; on which interface it listens. This is exactly &amp;lt;u&amp;gt;''opposite''&amp;lt;/u&amp;gt;&lt;br /&gt;
to &amp;lt;u&amp;gt;''server''&amp;lt;/u&amp;gt; applications like FTP or HTTP. When a client&lt;br /&gt;
tries to connect to a server it discovers its IP address by resolving DNS. Resolver&lt;br /&gt;
replies will contain all [[IP]] addresses of the specified host and a client should try them all. The server, in turn, may choose not to listen on&lt;br /&gt;
one of them and thus prevent the client from using this interface. In our case&lt;br /&gt;
[[aMule]] &amp;lt;u&amp;gt;''is a [[client]]''&amp;lt;/u&amp;gt;, and the [[server|ed2k server]] discovers its address from the&lt;br /&gt;
[[FAQ_ed2k#What_is_a_source?|source]] [[IP]] in the connection request. That's where the [[server|ed2k server]] will try to connect.&lt;br /&gt;
If the connection succeeds the client is [[client]] assigned a [[FAQ_ed2k#What_is_LowID_and_HighID?|high ID]], if it doesn't the client gets a Low ID. &lt;br /&gt;
The only solution in this situation (until [[aMule]] will have an ability to&lt;br /&gt;
bind to specific address) is to use [[aMule]] on your &amp;quot;primary&amp;quot; link.&amp;lt;br&amp;gt;&lt;br /&gt;
You can, however, cause [http://www.kernel.org Linux] to send packet through interface of your choice.&lt;br /&gt;
But, most probably they will be dropped by your ISP's router as &amp;quot;spoofed&amp;quot; because the source [[IP]] address doesn't match the address the ISP assigned to that interface.&lt;/div&gt;</summary>
		<author><name>87.74.0.220</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/FAQ_network</id>
		<title>FAQ network</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/FAQ_network"/>
				<updated>2005-05-17T00:12:54Z</updated>
		
		<summary type="html">&lt;p&gt;87.74.0.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Network speed: what you should know before asking questions =&lt;br /&gt;
 by Froenchenko Leonid, lfroen@gmail.com&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Preface ==&lt;br /&gt;
The purpose of this document is to clarify different issues regarding network &lt;br /&gt;
speed that pops up from time to time in [[aMule]] [[forum]]. Generally speaking, there are several reasons for questions about &amp;quot;[[FAQ_ed2k|aMule network]]&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
* The speed reported by [[aMule]] doesn't match your provider's given rate&lt;br /&gt;
* Poor performance of [[aMule]] itself or another network application on the same computer&lt;br /&gt;
* The key factors influencing network performance while [[aMule]] is running&lt;br /&gt;
&lt;br /&gt;
The intended audience for this document is users who want to get a better understanding of network functionality in general and in particular its implications for [[aMule]] functionality.&lt;br /&gt;
&lt;br /&gt;
This page, however, is not to be seen as comprehensive general purpose &amp;quot;[[FAQ_ed2k|Network FAQ]]&amp;quot;. If you were expecting something else, you might be interested in the [[aMule is slow|aMule is slow FAQ]].&lt;br /&gt;
 &lt;br /&gt;
== Network speed - how much is it? ==&lt;br /&gt;
When talking about network speed, people use the unit &amp;quot;bps&amp;quot; which means &lt;br /&gt;
&amp;quot;bits per second&amp;quot;. The reason that a ''bit'' is used rather than a ''byte'' is pretty much historical, but also has an engineering motivation behind it. &lt;br /&gt;
&lt;br /&gt;
This motivation comes from the fact that not all networks in the world transfer their traffic in bytes.&lt;br /&gt;
&lt;br /&gt;
There is a convention to use a capital &amp;quot;B&amp;quot; in &amp;quot;Bps&amp;quot; when speed is marked &lt;br /&gt;
in &amp;quot;bytes per second&amp;quot;. However, this convention is not widely accepted. In particular, organizations like the [http://www.ietf.org/ IETF] and [http://www.ieee.org/ IEEE] stick to the original &amp;quot;bps&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Prefixes ==&lt;br /&gt;
Since their invention, networks have made a lot of progress. Today we have networks that transfer thousands of millions of bits per second. For measuring these speeds the prefixes ''&amp;quot;kilo&amp;quot;'', ''&amp;quot;mega&amp;quot;'', ''&amp;quot;giga&amp;quot;'', ''&amp;quot;tera&amp;quot;'' etc. are used. &lt;br /&gt;
&lt;br /&gt;
It is a &amp;lt;u&amp;gt;common mistake&amp;lt;/u&amp;gt; to think that values with those prefixes are the same as in computer science, i.e. powers of 2. The truth is that, for historical reasons, prefixes in networking have a decimal base, and not a binary one.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; title=&amp;quot;Table 1&amp;quot;&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; title=&amp;quot;Table 1&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot; | Prefix&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot; | meaning in computers&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; title=&amp;quot;Table 1&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot; | meaning in networks&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot; | difference, %%&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | K (kilo)&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2^10 = 1024&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 10^3 = 1000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2%&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | M (mega)&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2^20 = 1,048,576&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 10^6 = 1,000,000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 5%&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | G (giga)&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2^30 = 1,073,741,624&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 10^9 = 1,000,000,000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 7%&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | T (tera)&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2^40 = 1,099,511,627,776&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 10^12 = 1,000,000,000,000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 9%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As you can see from the table above the error in calculation is about 5% when the prefix is incorrectly interpreted. Please note that the speed your provider quotes you is the &amp;quot;speed in network units&amp;quot;, i.e. calculated on a decimal basis.&lt;br /&gt;
&lt;br /&gt;
For example when your provider tells you that your link is &amp;quot;ADSL 256/128&amp;quot; you &lt;br /&gt;
should understand that they mean 256000/128000 bps (bits). Which means, that the speed of your connection is 32000/16000 bps (bytes).&lt;br /&gt;
&lt;br /&gt;
== Protocol overhead - what is it about? ==&lt;br /&gt;
When [[aMule]] is running, it constantly &amp;quot;talks&amp;quot; with other [[client]]s and [[server]]s. &lt;br /&gt;
This data exchange is needed to identify itself, request information about &lt;br /&gt;
available [[FAQ_eD2k-Kademlia#What_is_a_source?|source]]s and [[file]]s, to perform [[search]]es and so on. &lt;br /&gt;
&lt;br /&gt;
Since this information has no direct use to the user itself, it is called &amp;quot;overhead&amp;quot; i.e. an inevitable addition to the data you actually want to [[upload]] or [[download]]. &lt;br /&gt;
&lt;br /&gt;
[[aMule]] calls this &amp;quot;''connection overhead''&amp;quot;. However the number that [[aMule]] presents includes only the size of the actual data that [[aMule]] itself sends to the network stack. Later, this data is sent out on the network with even more overhead - that of the network protocols.&lt;br /&gt;
How much is it? - let's see that in the next section.&lt;br /&gt;
&lt;br /&gt;
== Network overhead ==&lt;br /&gt;
First of all - we're talking about the [[IPv4]] network. Once upon a time, there &lt;br /&gt;
was only one type of [[IP]] network. Now there are two - [[IPv4|IP version 4]], the old we all know; and [[IPv6|IP version 6]] - the new protocol made to fix the limitations of [[IPv4]].&lt;br /&gt;
&lt;br /&gt;
[[FAQ ed2k|ED2K protocol]] by design, is unable to talk over [[IPv6]] network, so users who have it (in Japan and China for example) will not be able to connect &amp;quot;as is&amp;quot;. Using [[IPv4]] means, that each packet ([http://www.ietf.org/rfc/rfc793.txt TCP], [http://www.ietf.org/rfc/rfc768.txt UDP], [http://www.ietf.org/rfc/rfc792.txt ICMP]) will have an [[IPv4]] header.&lt;br /&gt;
&lt;br /&gt;
The minimum size of this header is 20 bytes. The header can have optional parts (each of 4 bytes) and that is up to your provider - for example, mine adds an optional [dword].&lt;br /&gt;
&lt;br /&gt;
When talking to other clients and servers on [[FAQ ed2k|ed2k network]], [[aMule]] uses the widely known [http://www.ietf.org/rfc/rfc793.txt TCP] protocol. [http://www.ietf.org/rfc/rfc768.txt UDP] is also used, but on a much smaller scale. As the reader might know, [http://www.ietf.org/rfc/rfc793.txt TCP] is a reliable protocol, i.e. it guarantees that data which is sent from one side will arrive on the other or an error will be reported.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, [http://www.ietf.org/rfc/rfc793.txt TCP] sends its own data in addition to the actual &amp;quot;payload&amp;quot; data being transfered. This data includes [http://www.ietf.org/rfc/rfc793.txt TCP] client initial negotiation, checksums, sequence numbers and acknowledgments. All of this is in the ''[http://www.ietf.org/rfc/rfc793.txt TCP] header'' which is added to each packet sent. The size of this header is a minimum of 20 bytes.&lt;br /&gt;
&lt;br /&gt;
While being only a small overhead for a large bulk transfer, it can take significant part of bandwidth when small amounts of data are being exchanged. &amp;lt;u&amp;gt;This is exactly what happens on [[FAQ_ed2k#What_is_a_source?|source]] discovery part of [[aMule]]&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Our [[client]] is trying to establish a connection and negotiate with a large number of other [[client]]s. Doing this, [[aMule]] opens new [http://www.ietf.org/rfc/rfc793.txt TCP] connections &amp;lt;u&amp;gt;''all the time''&amp;lt;/u&amp;gt;. The amount of connections opened is controlled by the ''&amp;quot;Maximum number of connections in 5 seconds&amp;quot;'' setting in the preferences. &lt;br /&gt;
&lt;br /&gt;
A typical number is about 100. Each [http://www.ietf.org/rfc/rfc793.txt TCP] connection results in at least 3 packets traveling the net - one is a SYN packet, i.e. connection request, and one an ACK or a RST when the connection is accepted or refused, and SYN+ACK to establish the session. &lt;br /&gt;
&lt;br /&gt;
There's more overhead of [http://www.ietf.org/rfc/rfc1034.txt DNS] queries when an address is resolved, retries when a host doesn't reply and so on.&lt;br /&gt;
 &lt;br /&gt;
=== At low level ===&lt;br /&gt;
After passing [http://www.ietf.org/rfc/rfc793.txt TCP] and [[IP]] layers packets go down to the network interface driver. What kind of driver this is depends on the way your computer is connected to the internet. For simplicity sake we will assume that this computer is connected to the ISP directly, i.e. you have no LAN (or switch or router) between. &lt;br /&gt;
&lt;br /&gt;
Common setups that I'm aware of:&lt;br /&gt;
 &lt;br /&gt;
* Analog modem, connected to telephone line (ISDN modem falls in this category too).&lt;br /&gt;
* Cable modem, connected through ethernet, ISP gives you an [[IP]] address through [http://www.ietf.org/rfc/rfc2131.txt DHCP].&lt;br /&gt;
* Cable modem, connected through ethernet, ISP requires you to configure PPPoE or PPTP tunnel.&lt;br /&gt;
* ADSL modem, connected through ethernet. You must have a PPPoE or PPTP tunnel&lt;br /&gt;
* Variation of above - modem connected to PC by USB.&lt;br /&gt;
 &lt;br /&gt;
In each of the above setups there are different protocols in use, and different headers are added to transmitted packets. But there's one important thing to note: &amp;lt;u&amp;gt;''ethernet frames traveling between cable/ADSL modem and PC, and don't reach the ISP''&amp;lt;/u&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
And consequently they are not counted in rate calculations. [http://www.ietf.org/rfc/rfc2516.txt PPPoE] and &lt;br /&gt;
[http://www.ietf.org/rfc/rfc2637.txt PPTP] headers, on the contrary &amp;lt;u&amp;gt;''do reach the ISP''&amp;lt;/u&amp;gt;. I obviously have no idea whether or not your particular provider chooses to include them in their rate calculations. For this reason I will exclude those headers from my calculations. &lt;br /&gt;
&lt;br /&gt;
If you think that your ISP includes it, add 4 bytes to the size of each packet.&lt;br /&gt;
 &lt;br /&gt;
=== Example ===&lt;br /&gt;
Let's see how much network overhead we have on a typical network. Our connection is a cable modem connected via an ethernet link to a PC directly (no router between them). &lt;br /&gt;
&lt;br /&gt;
In this setup we have [[IPv4]] packets sent over ethernet. &lt;br /&gt;
&lt;br /&gt;
Lets say we have 10 new connections opened each second, and all are being accepted (successfully established [http://www.ietf.org/rfc/rfc793.txt TCP] session). This alone sums up to (I'm counting data going up - from my computer to the net):&lt;br /&gt;
&lt;br /&gt;
''10 connection * 2 packets * (20 bytes of TCP + 20 bytes of [[IPv4]]) = 800 bytes of overhead.''&lt;br /&gt;
&lt;br /&gt;
This means that we are starting with 1.16*8 Kbps of &amp;quot;''invisible&amp;quot;''&lt;br /&gt;
overhead caused by the very way the network works. Now, let's assume that&lt;br /&gt;
after each connection is established our amule sends something to the other side and waits to receive an answer.&lt;br /&gt;
&lt;br /&gt;
''Total of 800 bytes + 800 bytes = 1600 bytes per second = 6400 bps = 6.4 Kbps''&lt;br /&gt;
&lt;br /&gt;
What we have here is 6.4 Kbps of network overhead alone. Taking into account &lt;br /&gt;
that amule has other data to send (uploads) and it is not the only network &lt;br /&gt;
application running we will have the following picture: &lt;br /&gt;
&lt;br /&gt;
Most likely the link to your provider is not that fast. [[aMule]] will &amp;lt;u&amp;gt;''try''&amp;lt;/u&amp;gt; to open 10 connections per second and will &amp;lt;u&amp;gt;''try''&amp;lt;/u&amp;gt; to upload on the specified speed. &lt;br /&gt;
&lt;br /&gt;
Your operating system will share all available bandwidth between those and between [[aMule]] and other network applications (browser for example). Actual results will vary depending on specific OS settings.&lt;br /&gt;
&lt;br /&gt;
== ACK bottleneck ==&lt;br /&gt;
In all calculations above there was one assumption - zero download. But downloading is what amule was built for. So let's examine how the overhead &lt;br /&gt;
above affects your downloading speed. The answer is in [http://www.ietf.org/rfc/rfc793.txt TCP] protocol. &lt;br /&gt;
&lt;br /&gt;
When [http://www.ietf.org/rfc/rfc793.txt TCP] is sending data, it requires that the other side acknowledge the reception. So if client A is sending data to [[client]] B by [http://www.ietf.org/rfc/rfc793.txt TCP], B has to send a special ACK packets to A which tells B &amp;quot;ok, I got it&amp;quot;. If, however, A doesn't receive the ACK packets in time, he will assume that either packet is lost. &lt;br /&gt;
&lt;br /&gt;
So, without going deeply into [http://www.ietf.org/rfc/rfc793.txt TCP] specification: &amp;lt;u&amp;gt;''if B fails to send ACK to A, as a result A will transmit slower''&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now let's see the situation in [[aMule]]. We saw in the previous chapter, that the uplink stream is congested by connection requests and uploads. As a result, there's a good chance that ACK packets for a file we are downloading &amp;lt;u&amp;gt;''will not be sent on time''&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The remote party will notice this and slow down. This is one more reason why the upstream should better not be too congested.&lt;br /&gt;
 &lt;br /&gt;
== Is there anything I can do? ==&lt;br /&gt;
OK, now that you understood why your network is so slow while [[aMule]] is &lt;br /&gt;
running you will maybe look for a way to fix this. The answer in 2 words: &amp;quot;rate limit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first thing you should do is to assign realistic rate limits in [[aMule]] &lt;br /&gt;
itself. If you have a uplink rate of 128 Kbps don't set [[aMule]]'s [[upload]] limit to 16 (kilobytes per second) just because 128/8 = 16.&lt;br /&gt;
&lt;br /&gt;
A better, but far more complicated solution is to use the QoS and packet scheduling services of your OS. For example, you can give a higher priority to ACK packets to solve the above mentioned &amp;quot;ACK bottleneck&amp;quot; problem. &lt;br /&gt;
&lt;br /&gt;
The QoS topic, however, is beyond the scope of this article.&lt;br /&gt;
&lt;br /&gt;
== Router (switch, home network): is there any difference? ==&lt;br /&gt;
When the cable coming from your ISP is connected to some switching or routing &lt;br /&gt;
device, which in turn is connected to several PC's, bandwidth is shared between &lt;br /&gt;
them. &lt;br /&gt;
&lt;br /&gt;
So, having N computers connected, an ideal device would simply provide &lt;br /&gt;
each one of them with 1/N of the total bandwidth. The situation may vary in real life, and your particular device may have different idea about fairness. &lt;br /&gt;
&lt;br /&gt;
Since you're not going to have the hardware specs of your router chipset the only advice here is &amp;quot;try and see yourself&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Multiple links ==&lt;br /&gt;
Until now, we talked about computers that are connected to the network through&lt;br /&gt;
single interface. While being most frequent, this is not mandatory. A user&lt;br /&gt;
may choose to connect via 2 (or more links) provided by different ISP's.&lt;br /&gt;
There're 2 reasons for this decision that I know about: link redundancy and&lt;br /&gt;
load balancing.&lt;br /&gt;
&lt;br /&gt;
=== Link redundancy ===&lt;br /&gt;
In a case of link redundancy second link becomes operational when primary&lt;br /&gt;
link fails. This can be done automatically, or by explicit user command.&lt;br /&gt;
When this setup used, [[aMule]] along with other network applications must be&lt;br /&gt;
restarted when links are being switched. This will allow to bind new address,&lt;br /&gt;
reconnect to server and receive new ID. If [[aMule]] is connected via &amp;amp;nbsp;[http://www.ietf.org/rfc/rfc3022.txt NAT]]&lt;br /&gt;
enabled router (it doesn't matter if you have [[FAQ_ed2k#What_is_LowID_and_HighID?|low or high ID]]), and links&lt;br /&gt;
are switched &amp;lt;u&amp;gt;''on the router''&amp;lt;/u&amp;gt;, restart not needed.&lt;br /&gt;
&lt;br /&gt;
=== Load balancing ===&lt;br /&gt;
This is a far more complicated case. Both (all) links are simultaneously active,&lt;br /&gt;
and traffic is being distributed between them. The problem is that [[aMule]]&lt;br /&gt;
binds to &amp;lt;u&amp;gt;''all interfaces on the system''&amp;lt;/u&amp;gt; i.e. 0.0.0.0. But, on [[FAQ ed2k|ed2k]]&lt;br /&gt;
your ID is your [[IP]] address, &amp;lt;u&amp;gt;''and you can not have two''&amp;lt;/u&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
So the problem is that [[aMule]] does not explicitly choose the source&lt;br /&gt;
address for ''&amp;lt;u&amp;gt;outgoing&amp;lt;/u&amp;gt;'' [http://www.ietf.org/rfc/rfc793.txt TCP] connections. Note, that it &amp;lt;u&amp;gt;''doesn't&lt;br /&gt;
matter''&amp;lt;/u&amp;gt; on which interface it listens. This is exactly &amp;lt;u&amp;gt;''opposite''&amp;lt;/u&amp;gt;&lt;br /&gt;
to &amp;lt;u&amp;gt;''server''&amp;lt;/u&amp;gt; applications like FTP or HTTP. When a client&lt;br /&gt;
tries to connect to a server it discovers its IP address by resolving DNS. Resolver&lt;br /&gt;
replies will contain all [[IP]] addresses of the specified host and a client should try them all. The server, in turn, may choose not to listen on&lt;br /&gt;
one of them and thus prevent the client from using this interface. In our case&lt;br /&gt;
[[aMule]] &amp;lt;u&amp;gt;''is a [[client]]''&amp;lt;/u&amp;gt;, and the [[server|ed2k server]] discovers its address from the&lt;br /&gt;
[[FAQ_ed2k#What_is_a_source?|source]] [[IP]] in the connection request. That's where the [[server|ed2k server]] will try to connect.&lt;br /&gt;
If the connection succeeds the client is [[client]] assigned a [[FAQ_ed2k#What_is_LowID_and_HighID?|high ID]], if it doesn't the client gets a Low ID. &lt;br /&gt;
The only solution in this situation (until [[aMule]] will have an ability to&lt;br /&gt;
bind to specific address) is to use [[aMule]] on your &amp;quot;primary&amp;quot; link.&amp;lt;br&amp;gt;&lt;br /&gt;
You can, however, cause [http://www.kernel.org Linux] to send packet through interface of your choice.&lt;br /&gt;
But, most probably they will be dropped by your ISP's router as &amp;quot;spoofed&amp;quot; because the source [[IP]] address doesn't match the address the ISP assigned to that interface.&lt;/div&gt;</summary>
		<author><name>87.74.0.220</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/FAQ_eD2k-Kademlia</id>
		<title>FAQ eD2k-Kademlia</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/FAQ_eD2k-Kademlia"/>
				<updated>2005-05-16T19:31:51Z</updated>
		
		<summary type="html">&lt;p&gt;87.74.0.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;h4&amp;gt;F.A.Q. on eD2k-Kademlia&amp;lt;/h4&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''English''' | [[FAQ_eD2k-Kademlia-es|Español]] | [[FAQ_eD2k-Kademlia-it|Italiano]] | [[FAQ_eD2k-Kademlia-de|Deutsche]] | [[FAQ_ed2k-fr|Français]] | [[FAQ_eD2k-Kademlia-nl|Nederlands]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is ED2K? ==&lt;br /&gt;
ED2K is a protocol originally used by the P2P (Peer-to-Peer) client [[eDonkey2000]], which is where the name comes from. It is a server-client based protocol, with the ability to exchange sources between clients. &lt;br /&gt;
&lt;br /&gt;
The ED2K network is server based like many other P2P networks such as [[Kazaa]] (Kazaa is server based, but hides the server connection from the user), which means that the first thing you do when you run [[aMule]] is to connect to a server (either manually or automatically). &lt;br /&gt;
&lt;br /&gt;
Once successfully connected to a server, the client can search, either locally (the connected server) or globally (all servers), for any file and the servers asked will provide the client with a list of all the files which match search parameters. &lt;br /&gt;
&lt;br /&gt;
If the user starts a download, the client will then ask the server for sources, which the server will return in the form of IP addresses for the clients that have told the server that they have the specific file.&lt;br /&gt;
&lt;br /&gt;
Then the remote client will begin to upload a whole chunk to your client as soon as you are the first in the queue, read [[FAQ_eD2k-Kademlia#What_is_all_that_credits,_rate_and_score_stuff_about?|What_is_all_that_credits,_rate_and_score_stuff_about?]] and, when the chunk has been completly sent, you will be taken back to it's upload queue. This way different chunks get spread around the ED2K network, so that, although no-one may have at a same given moment the complete file, it may be completed by downloading the different chunks from different people (it is well known that users tend to stop sharing a file once it has been completed).&amp;lt;br&amp;gt;&lt;br /&gt;
Note that clients upload only '''one''' chunk at a time to another client. Even if a client is in the upload queue of two different files of a same user and gets to the top of both, that user will only upload one of the files to that client (the other upload, depending on the ED2K application the client uses, will probably remain as a maximum priority upload, but will not begin until the other chunk has been successfully uploaded).&lt;br /&gt;
&lt;br /&gt;
If both users have HighID (see [[FAQ_eD2k-Kademlia#What_is_LowID_and_HighID?|What is LowID and HighID?]]) the transfer will be done directly from client to client (Peer-to-Peer), but if one of the clients have LowID, the connection will be established through the server, since LowID cannot accept incoming connections. As a result, two LowID clients '''cannot''' connect to each other.&lt;br /&gt;
&lt;br /&gt;
== What is Kademlia? ==&lt;br /&gt;
Kademlia is a natural evolution of the ED2K network. Kademlia is the future. See [[FAQ_eD2k-Kademlia#Are_there_any_limitations_on_the_ED2K_network?|Are there any limitations on the ED2K network?]] for more information on why Kademlia is necessary.&lt;br /&gt;
&lt;br /&gt;
Since Kademlia is a decentralized network, it removes the bottleneck that was previously caused by the need for servers (though [[Lugdunum]] has done great work in reducing this bottleneck). Now, instead of connecting to a server, you just connect to a client (with a known IP-address and port), which supports the network [[Kademlia]]. This is called the Boot Strapping.&lt;br /&gt;
&lt;br /&gt;
Once connected, depending on your ability to accept incoming connections, you are given either &amp;quot;open&amp;quot; or &amp;quot;firewalled&amp;quot; status, which is similar to the HighID and LowID of the ED2K network. Then you are given an ID. &lt;br /&gt;
&lt;br /&gt;
At the moment, &amp;quot;firewalled&amp;quot; users aren’t supported by the Kademlia network, and therefore won’t be given an ID and will be unable to connect. Firewalled support will be added later.&lt;br /&gt;
&lt;br /&gt;
When searching, each client acts as a small server and is given responsibility for certain keywords or sources. This adds to the complexity of finding sources, as you no longer have a central server to ask, but instead will have to propagate the query through the network.&lt;br /&gt;
&lt;br /&gt;
Currently, Kademlia isn't supported by aMule, but it will be soon.&lt;br /&gt;
&lt;br /&gt;
TODO: Does Kademlia remove the 4 GB file size limit ?&lt;br /&gt;
&lt;br /&gt;
== Is Kademlia the same as Overnet? ==&lt;br /&gt;
Short and clear: No. Overnet is the natural serverless evolution of the eDonkey software, while Kademlia is the natural serverless evolution of *Mule clients. SO, it's the same philosophy, but different rules. To learn about how Overnet works, refer to http://www.edonkey2000.com/documentation/how_on.html but, have in mind, Overnet's development is closed untill it reaches version 1.0, while Kademlia's development is completly open from the very beginning.&lt;br /&gt;
&lt;br /&gt;
== What is a chunk? ==&lt;br /&gt;
In the ED2K protocol, to avoid sharing corrupt files, each file is divided into various parts, which are known as &amp;lt;i&amp;gt;chunks&amp;lt;/i&amp;gt;, and then each chunk is hashed (read below to know what a [[FAQ_eD2k-Kademlia#What_is_a_hash?|hash]] is). Each chunk is 9.28MB in size, so a 15MB file will be divided into two chunks (9.28MB + 5.72MB), a 315KB file will be a single chunk and a 100MB file will be divided into 11 chunks (10x9.28MB + 7.2MB).&lt;br /&gt;
&lt;br /&gt;
== What is a hash? ==&lt;br /&gt;
Dividing each file into chunks (see [[FAQ_eD2k-Kademlia#What_is_a_chunk?|What is a chunk?]]) will avoid the problem of downloading a whole corrupted file since only the corrupted chunk will have to be downloaded again, but a method to identify corrupted chunks is needed. This is done by using MD4 hashes.&lt;br /&gt;
&lt;br /&gt;
A [[MD4 hash]] is a unique value each chunk is given and is the result of a mathematical operation on every single bit on the chunk. This means that modifying a single bit in a chunk would result in a completely different hash. That means that the client needs to verify the integrity of each part of a file as it is downloaded. &lt;br /&gt;
&lt;br /&gt;
Not only are the chunks hashed but also, in order to get a file-hash, all chunks's hashes are concatenated one after the other in their file order (that is: chunk1's_hash+chunk2's_hash+chunk3's_hash+...) and the resulting string is hashed. This way, each file on the ED2K network has a unique identifier. The file hash isn't taken from hashing the whole file, but from hashing the value of the the chunk's hashes.&lt;br /&gt;
&lt;br /&gt;
In reality, you need both the hash of a file and its size. These pieces of information is embedded in the ED2k URLs found in many places.&lt;br /&gt;
&lt;br /&gt;
Take this for example: &amp;lt;br&amp;gt;&lt;br /&gt;
ed2k://|file|eMule0.42f-Sources.zip|2407949|CC8C3B104AD58678F69858F1F9B736E9|/ &lt;br /&gt;
&lt;br /&gt;
The interesting parts are the fifth part, &amp;quot;2407949&amp;quot;, which is the size of the file in bytes and the last part, &amp;quot;CC8C3B104AD58678F69858F1F9B736E9&amp;quot;, which is the hash itself, stored as hex-decimals, 32 letters long.&lt;br /&gt;
&lt;br /&gt;
The filename itself is irrelevant in the process of identifying the file.&lt;br /&gt;
&lt;br /&gt;
== Why after searching, some files which are the same appear as a different file in the results, although they even have the same name? ==&lt;br /&gt;
If you understood &amp;quot;What is a hash&amp;quot; you will understand this quickly. When a search is started, the server tells the ED2K client the filename of the found file and the hash of the complete file for each file which matches the search. If two files, although being the same, have some difference in their content, no matter if it's big or small, the hash is different, so they are considered as a different file. That's also the reason why two file with different file name appear as the same file: on the ED2K network, the filename isn't important, the hash is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is LowID and HighID? ==&lt;br /&gt;
Each client is assigned an identifying number, an ID, which will be unique and will distinguish him from any other client on the server. If this ID is below 16777216 (16 million) then you have a LowID. If it's over, then you have a HighID. To be given a high or low ID will only depend on having TCP port 4662 (or the one set up in Preferences) opened. If you understood &amp;quot;What is ED2K&amp;quot; you might understand that chances are that clients on LowID may be unable to connect to many other clients (all those on LowID) so will have a lower transfer rate. That's why having port 4662 TCP (or the one set in Preferences) is so important. Also, some big servers refuse clients on LowID to connect to them since LowID clients have data transfered through the server and so, those big servers could be overcharged.&amp;lt;br&amp;gt;&lt;br /&gt;
For HighID clients, their ID is the result of a mathematical operation with their IP which corresponds to A + 256*B + 256*256*C + 256*256*256*D, where the IP is A.B.C.D. Also have in mind that this ID has identification purposes, nothing else, so apart from having and ID over or under the 16777216 number, it does not matter if the ID is bigger or smaller. This means a client with an ID like 50000000 isn't better than a client with an ID like 49999999.&amp;lt;br&amp;gt;&lt;br /&gt;
There's still an exception. Sometimes badly configured or very busy servers give LowID to some clients although the 4662 TCP port is opened. This are rare exceptions, but it might happen sometime.&amp;lt;br&amp;gt;&lt;br /&gt;
Check [http://www.amule.org/testport.php here] if you have your ports opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Which ports do I have to configure in a firewall or router to run aMule? ==&lt;br /&gt;
aMule works even with no specific ports opened, but you won't get a HighID in this case. As mentioned above, to be given a HighID, port 4662 TCP (or the one set in the Preferences) must be listening (i.e. opened in your firewall and forwarded in your router).&amp;lt;br&amp;gt;&lt;br /&gt;
Apart from that port, to have an optimal ED2K experience, two more ports should be enabled as well. First, the UDP port 4672 (which can also be changed to any other number in the Preferences) and secondly, the secondary UDP port which can't be set in the Preferences. This UDP port is your TCP port + 3 (e.g.: TCP=4662 then UDP=4665).&lt;br /&gt;
&lt;br /&gt;
== What does each port do? ==&lt;br /&gt;
Well, since most ports can be configured to be set to any other number, the defaults will be listed:&lt;br /&gt;
&lt;br /&gt;
; 4662 TCP: Client to client transfers.&lt;br /&gt;
; 4665 UDP: Opened on client, used for global server searches and global source queries. This is always Client TCP port + 3.&lt;br /&gt;
; 4672 UDP: Extended eMule protocol, Queue Rating, File Reask Ping&lt;br /&gt;
; 4661 TCP: Opened on server. Allows connection to server.&lt;br /&gt;
; 4665 UDP: Opened on server. Allows asking for sources. It is always Server TCP port + 4.&lt;br /&gt;
; 4711 TCP: WebServer listening port.&lt;br /&gt;
; 4712 TCP: External Connection port. Used to communicate aMule with other applications such as aMule WebServer or aMuleCMD.&lt;br /&gt;
&lt;br /&gt;
== Are there any limitations on the ED2K network? ==&lt;br /&gt;
Not much, but yes, there are: two natural limits and a &amp;quot;forced&amp;quot; limitation. The two natural limits have already been mentioned before. First, the issues on LowID users (their transfers involve data through the server and two LowID clients can't share between them). The second, although ED2K is a p2p protocol, it needs servers to establish the p2p connection. This latter one is solved in the Kademlia protocol.&amp;lt;br&amp;gt;&lt;br /&gt;
About the &amp;quot;forced&amp;quot; limitation, it's only a limit to make sure that clients share so that the ED2K network will not disappear: clients which have an upload limit of X KBps, where X is between 0 and 3.99 (both included) can download at a maximum of X*3 KBps. Clients which have an upload limit of Y KBps, where Y is Between 4 and 9.99 (both included) can download at a maximum of Y*4 KBps. Clients with an upload limit of 10KBps or more have no downloading limitations. This restriction is set in the client application so it could be by-passed by hacking the code, but that would probably result in being banned from the servers you connect to.&amp;lt;br&amp;gt;&lt;br /&gt;
Also, any client is forced to allow at least three upload slots, so it's not possible to allow more than upload_limit/3 KBps per slot.&amp;lt;br&amp;gt;&lt;br /&gt;
There is one last limit: Network file limit is 4GB.&amp;lt;br&amp;gt;&lt;br /&gt;
Additionally, this is not an eD2k limitation but a server limitation, servers will only send 300 results for your searches, so don't expect any more results.&lt;br /&gt;
&lt;br /&gt;
== In search window, what filter stands for which filetype? ==&lt;br /&gt;
Have in mind that the filters in the search window don't depend on the file type, but on the extensions of the filenames, in the following way:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Archive:&amp;lt;/b&amp;gt; &amp;lt;i&amp;gt;.ace .arj .rar .tar.bz2 .tar.gz .zip .Z&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Audio:&amp;lt;/b&amp;gt; &amp;lt;i&amp;gt;.aac .ape .au .mp2 .mp3 .mp4 .mpc .ogg .wav .wma&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;CDImage:&amp;lt;/b&amp;gt; &amp;lt;i&amp;gt;.bin .ccd .cue .img .iso .nrg .sub&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Picture:&amp;lt;/b&amp;gt; &amp;lt;i&amp;gt;.bmp .gif .jpeg .jpg .png .tif&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Program:&amp;lt;/b&amp;gt; &amp;lt;i&amp;gt;.com .exe&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Video:&amp;lt;/b&amp;gt; &amp;lt;i&amp;gt;.avi .divx .mov .mpeg .mpg .ogg .ram .rm .vivo .vob&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
So, a movie which's filename is &amp;quot;Birthday.zip&amp;quot; will appear in the Archive filter, but not in the Video filter.&lt;br /&gt;
&lt;br /&gt;
== What is a source? ==&lt;br /&gt;
A source is a client which is sharing some chunk in some file you have in your downloading queue which you still have not completed. Obviously, the more sources you can get for a given file, the more possibilities you have to download the file and the quicker you'll download it. Have in mind that there's a difference between &amp;quot;sources&amp;quot; and &amp;quot;available sources&amp;quot; if you're on LowID, since &amp;quot;sources&amp;quot;s stands for clients sharing a chunk or file you still haven't completed, while &amp;quot;available sources&amp;quot; stands for clients sharing a chunk or file you still haven't completed and from who you can download (that is, a source who is on HighID).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is all that credits, rate and score stuff about? ==&lt;br /&gt;
All three concepts have to do with the way in which the ED2K network establishes the uploading queues preferences.&amp;lt;br&amp;gt;&lt;br /&gt;
The score is the most important value: the client with the higher score will be the next client which you'll provide a slot to. The way in the score value is set is this: score = rate x time_waiting_in_seconds / 100&lt;br /&gt;
So, to understand this, we must known what rate is.&amp;lt;br&amp;gt;&lt;br /&gt;
Rate is can be understood as an objective preference. This is, the preference which a client is given without caring how much time it's been waiting. When a client is added to the uploading queue, it gets a rate of 100. This value is modified following according to this:&amp;lt;br&amp;gt;&lt;br /&gt;
According to the amount of credits, the rate will be multiplied by 1x to 10x.&lt;br /&gt;
Depending on the file priority, it will be multiplied by 0.2x to 1.8x (Release 1.8x, High 0.9x, Normal 0.7x, Low 0.6x, Very Low: 0.2x).&amp;lt;br&amp;gt;&lt;br /&gt;
Users on specific old clients which load too much the network traffic will get penalized by multiplying their rate by 0.5x.&amp;lt;br&amp;gt;&lt;br /&gt;
Banned clients will instantly get no rate (that is, their rate will by multiplied by 0).&amp;lt;br&amp;gt;&lt;br /&gt;
This multiplying values are known as &amp;quot;modifiers&amp;quot;. Clients with a modifier value strictly bigger than 1 will be marked as yellow in the icon.&amp;lt;br&amp;gt;&lt;br /&gt;
So we only have credits left to known. Credits are a prize you get for uploading files to a specific user. Credits are exchanged between two specific clients, they are not global, so your own credits can't be viewed, although you can know the credits any other user has on you (that is, the credits you owe that client). Since credits are managed by the uploading client, you might be uploading to some client with no credits support, so you will gain no credits on him, although that client will actually get credits on you if it uploads to you, since you do have credits support. This credits are stored in clients.met file.&amp;lt;br&amp;gt;&lt;br /&gt;
The credits modifier used by rate is the lower between these two: &amp;lt;br&amp;gt;(upload_total x 2)/download_total or sqrt(upload_total+2) where both upload_total and download_total are measured in MBs.&amp;lt;br&amp;gt;&lt;br /&gt;
If the result is lower than 1, then it is set to 1 and if it is bigger than 10, it is set to 10. In addition, if the uploaded total is less than 1MB, the modifier is set to 1 and if the downloaded total is equal to 0, then the modifier is set to 10.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  What is a slot? ==&lt;br /&gt;
When uploading files, your upload bandwidth (which may vary depending on the upload limit or the natural connection-type upload limit) will be divided into slots. So, each slot is an amount of KBps which will be assigned to each client who tries to download from you.&lt;/div&gt;</summary>
		<author><name>87.74.0.220</name></author>	</entry>

	</feed>