logo

 
logo2
Vielen Dank an lugdunum master und an Norman, ohne deren freundliche Erlaubnis diese Seite jetzt nicht hier wäre.
Das deutsche Forum zum eserver findet Ihr im
http://www.ed2k-serverboard.de/
http://www.ed2k-serverboard.de/

Baue einen effizienten Edonkeyserver unter Linux/FreeBSD  

©2002-2003 by Lugdunum                  [http://lugdunum2k.free.fr/kiten.html]

Translation by Norman                       [http://www.rechenkraft.net]
---------------------------------------------------------------------------------------------------------------------------------

Sie werden auf dieser Seite nützliche Informationen über unsere Edonkey-Server finden. Zögern Sie nicht uns eine Email zu schicken, wenn Sie der Meinung sind, daß etwas an Information auf dieser Seite fehlt.

Das momentane Programm ist: dserver-16.38.p76.gz
md5sum : be974dd164ec2e10b5a6997cd3fbcf79

Spiegel : Spiegel1 oder Spiegel2 oder Spiegel3 und nbuser.gz oder
nbuser_s.gz (statische version von nbuser für RedHat 8.0 glibc bug)

Sie wollen es installieren: (Anleitung für die Neulinge: tippen Sie nicht das '$' ein, das
ist die Konsolenanzeige
(kann auch '#'sein, wenn Sie als root angemeldet sind))
$ wget ftp://ftp.aubi.de/pub/edonkey/dserver-16.38.p76.gz
$ gzip -d dserver-16.38.p76.gz
$ chmod 755 dserver-16.38.p76
$ rm -f dserver
$ ln -s dserver-16.38.p76 dserver

$ wget ftp://ftp.aubi.de/pub/edonkey/nbuser.gz
$ gzip -d nbuser.gz
$ chmod 755 nbuser

$ wget ftp://ftp.aubi.de/pub/edonkey/dlaunch
$ chmod 755 dlaunch

Dieses Programm basiert auf der Version 16.38 von Jed McCaleb, von uns gepatcht um die benötigte CPU-Power bis zu Factor fünfzig zu verringern. Es spart ebenso einiges an Speicher(RAM). Die Patches die gemacht wurden benutzen handgenerierten Assemblercode mit den Ergebnissen des excellenten oprofile Packetes, welche für uns die "Hot Spots" des originalen Programmes analysiert haben. Einige Funktionen haben wir neu geschrieben, um einige dumme Schleifen heraus zu nehmen. Einige Sperren/Freigaben  wurden vermieden durch Benutzung des 'lock'-prefix bei einigen Anweisungen.

arrow Er entdeckt  BOT PRO und antisoziale edonkey clients

arrow Er korrigiert zahlreiche Bugs (Fehler)

arrowEr kann LOWID-clients ablehnen : Verbindungen von Usern hinter einer Firewall, oder mehrfache Verbindungen von der selben IP-Adresse. LowID-User haben eine GROSSE Auswirkung auf den Datenverkehr des Servers. Seit .p56 können wir ein Limit setzen, wieviel Prozent an LOWID-User der Server aufnehmen darf (Standard ist 20%)

arrowDer originale dserver sendet alle 70 Sekunden einen "PING" an jeden client. Diese Pings enthalten die Anzahl der User und Dateien auf dem Server.
Unserer Version sendet nur alle 10 Sekungen einen "PING" zu 1/10 aller User. Das ist so um die Auswirkungen auf die Pings und auf den Upload zu verringern und um den Server gleichmäßiger wissen zu lassen, wenn User vom Server herunter sind.

arrowEr hat einen Filter um die Anzahl der freigegebenen Dateien eines jeden Users zu filtern. Das erste Limit (soft limit) ist standardmäßig bie 1000. Wenn ein User mehr als 1000 Dateien freigibt werden die übrigen files im "Share" ignoriert. Auch wenn die Anzahl der Dateien im Share das (hard limit, 5000 standard) übersteigt wird der User vom Server "gekickt" um Bandbreite einzusparen.
Studien haben aufgedeckt, daß wenn man zu vieles im Share hat, es eine schlechte Sache für den Server und das eDonkey-Netzwerk ist. Einige echt faule User geben einfach alle Dateien auf ihrem Computer frei (Wir sahen einen Rekord von 196881 freigegebene Dateien bei einem User !!!).

arrowNur ein Netzwerksegment benutzt der Server wenn er ein eDonkeypacket an einen TCP-Client. Der original dserver ist faul und sendet zwei Pakete. Beachte, daß die alten eDonkey-Clients die selben Bugs(Fehler) haben. Wir sind erfreut, daß Emule ab 0.20 dieses Problem korrigiert hat. Der eDonkey-Hybrid ab 10.44 hat dies ebenfalls gemacht.

new Version 16.40 im RC4 Stadium :

  • Tests der Alpha-Version am Freitag, 05. September gestartet.

  • Erste Ergebnisse sind wirklich gut. Der Status wurde am Mittwoch, 10. Sept. auf die Beta-Verion erhöht.

  • Release Candidate 1 : Montag, 15. September
     
  • Release Candidate 4 : Dienstag, 23 September
     
  • Test Server : Razorback (250000 users) & SEDG & OCN & WSL & WWW.NVPHOST.COM & viele andere

  • WIN32 port (Benutzung von:  native asynchronous winsock calls)

  • 64bit Zielrechner  (IBM AIX V5.1, Tru64 5, HPUX 11, Solaris, linux x86_64, ...)

  • Erweiterung des UDP-Protokoll um Usern zu gestatten Quellen anzufragen für viele MD4-Hashes auf einmal, statt für jeden MD4 1 UDP-Paket loszuschicken. (Sollte den UDP-Datendurchsatz um den Faktor 2 oder 3 reduzieren)

  • Erweiterung des UDP-Protokolles um viele Suchergebnisse pro Paket zu senden.

  • zlib Unterstützung um große Rahmen(frames) mit den Usern zu tauschen (Liste freigegebener Dateien, Suchresultate)

  • Unterstützung von Dateien > 2Go

  • Unterstützung der FreeBSD kqueue (FreeBSD vergleichbar mit  linux epoll)

  • Unterstützung von Solaris/HP /dev/poll

  • Fähigkeit um eine Suche mit MD4Hashes zu machen (um zusammengehörige tags einer Datei zu empfangen(NAME, Grösse, TYP, ...)

  • Besseres Serverlistenhandling.

  • Aufspüren von ZU alten Emuleversionen.

  • Keepalive-Pings sind die meiste Zeit "piggybacked" in anderen Servernachrichten : kleinere TCP-Bandbreite (benutzt weniger Pakete)

  • ...Viele andere addons...

new Neu in Version .p76 :

2003/07/24 * HOTFIX *  Ein Hacker hat einen Weg gefunden um entfernt ALLE vorherigen Versionen des dservers herunterzufahren.(SilentBob wurde heute attackiert)

2003/07/25 * BUGBUG * Die Version .p76 ist voller Fehler, wartet bitte bis ich .p77 herausbringe und alle Fehler berichtigt sind (Das dauert ungefähr 15 Tage, Entschuldigung Kumpels)

new Neu in Version .p75 :

Eine Menge Zeit ist seit der p72 vergangen und diese Webseite wurde nicht mehr geupdated. Die Versionen p73/p74 waren nur dazwischen liegende für einige Testserver.

  • Als erstes : Ich will dem Emule-Entwicklerteam danken, für ihre Kooperation das Netzwerk in gutem Zustand zu halten.

  • Erfolgreich getestet mit linux-2.5.75 und linux-2.6 Kerneln (epoll, futex, hugetlbpages features) : ein Fehler bei  futex basierend auf mutexes wurde korrigiert.

  • Ein thread ist jetzt bestimmt neue Verbindungesanfragen zu handhaben, anstelle einen thread von dem allgemeinen Pool zu nehmen.

  • Speichereinsparungen, CPU-Einsparungen, Netzwerkeinsparungen.

  • Fehler korrigiert der einem böswilligen User erlaubte den Server herunterzufahren.

  • Besseres Threadmanagment. Thread-Stacks wurden unterhalb des Textteils verschoben, wo ein 128MB Loch ungenutzt war.

  • GESUCHT : Ich *brauche* einen AMD Opteron basierenden Rechner welcher unter linux x86_64 läuft um den Server in einem virtuellen 4Go Raum zu testen. Wenn jemand mir einen SSH-Zugang geben könnte...DANKE.

  • Blacklisted Benutzer werden nun vom Server gekickt, anstelle nicht mehr auf ihre Quellenanfragen zu antworten. In vorangegangenen Versionen hat der Server einfach keine Quellen mehr an solche User gegeben, aber gab ihre IP:PORT an andere User weiter. Der Quellenaustausch bei Emule ermöglicht aber blacklisted Usern weiterhin Quellen zu geben ohne zu ahnen das dieser User blacklisted wurde.

  • Jedes vom User empfangene Packet kostet jetzt einwenig credits im slimit-Modul (p58). In vorherigen Versionen kosteten nur die Verbindungsanfrage und Quellenanfrage.

  • Wenn ein User blacklisted ist wird diese Nachricht an ihn gesendet bevor er getrennt wird :
    "ERROR : your IP is blacklisted because of the behavior of your client."

  • Wenn eine blacklisted IP versucht zu dem Server zu verbinden erscheint diese Nachricht :
    "ERROR : Connection refused : your IP is currently blacklisted by the server." Dann wird die Verbindung getrennt.

  • Wenn ein Server voll ist erscheint folgendes in den Ereignissen :
    "ERROR : Connection refused : The server is full."
    Beachte : Es werden keine credits genommen bei diesem Ereignis..

new Neu in Version .p72 :

Verschiedene Serveradministratoren fragten mich für dieses Feature. Ein Filter weist einige IP-Adressen von schlecht konfigurierten Servern: Die Liste geblockter Netzabschnitte kommt vom RFC 3330 :
0.0.0.0/8
10.0.0.0/8
14.0.0.0/8
39.0.0.0/8
127.0.0.0/8
128.0.0.0/16
169.254.0.0/16
172.16.0.0/12
191.255.0.0/16
192.0.0.0/24
192.0.2.0/24
192.88.99.0/24
192.168.0.0/16
198.18.0.0/15
223.255.255.0/24
224.0.0.0/4
240.0.0.0/4

Ein alter Fehler wurde korrigiert (Dieser Fehler konnte bei einem dserver dazu führen das er "entkernt" wurde, ausgelöst von einigen Usern.)

Die "ExClientDoor Unknown Msg: 162" Nachricht ist unterdrückt, seitdem ist es eine Falschmeldung und emule 0.27 benutzt aktuell die  UDP 162 Nachricht...

Erweiterte Pings benutzen jetzt 2 Ganzzahlen mehr : Das Soft Limit und das Hard limit von freigegebenen Dateien werden vom Server akzeptiert.

new Neu in Version .p71 : linux 2.5 and epoll ready

  • Diese Version korrigiert ein "Speicherleck" welches sich in p68 eingeführt wurde. Die Sortierungsfunktion welche in p62 eingeführt wurde, wurde neu geschrieben um die CPU mehr zu schonen.: Auf 100K-Servern, hat es 25% CPU-Leistung eingespart.

  • Die "Thread stacks max size"wurde von 2MB auf 1MB verringert um einiges an virtuellem Speicher für zukünftige große Server freizugeben.

  • Neuer Abfertigungs-thread. Server antwortet jetzt schneller.

  • Ein dlaunch Programm kann benutzt werden um den Server zu starten. Dieser "Launcher" tuned den Server für die jeweilige Maschine. :

    • Wenn die Maschine epoll() hat, dann bereitet dlauch die Maschine so vor, daß die epoll()-Technik von  Davide Libenzi genutzt wird: Zeit für 200K Server ist gekommen.

    • Wenn die Maschine futex() syscall (Linux 2.5.7 feature) hat, sagt es dem Server, daß er es benutzen soll um mutex Operationen (threadsychronisation) dürchzuführen. Ein spezielles rwlock (FIFO readers-writer lock) wird benutzt um eine bessere CPU-Nutzung zu erreichen (Nett bei SMP Maschinen).

    • Wenn die Maschine "HugeTLB pages" unterstützt, kann es den Server so einrichten, daß er es benutzt. (Nicht das Standardverhalten von dlaunch, seit linux 2.5.59, wird futex() auf HugeTLB pages nicht mehr erlaubt: Der Kernel hängt einfach für immer, Sie sollten 2.5.60 benutzen oder Morton 2.5.59-mm8 um HugeTLB Games spielen zukönnen).

    • Wenn die Maschine SYSENTER(Linux 2.5.53 feature) unterstützt, patcht es den Server um dieses zu benutzen.

    • Wenn die Maschine nur einen Einzelprozessor hat, (kein SMP), patcht dlaunch alle "lock" Präfixeinträge mit "nop".

  • Wie benutzt man dlaunch:
    ersetze
    : ./dserver
    mit : ./dlaunch ./dserver
    in Ihrem script.sh oder andere shells welche den dserver starten.

new Neu in Version .p68 : Der erste zum erreichen von 100000 Benutzern !

  • Sockel errichtet vom Server auf Port 4662 zu den Benutzern, benutzt jetzt IP_TOS_LOWDELAY Option. Dieses hilft um eine HighID zu bekommen, weil "Trafficshaping" nur bei Benutzern funktioniert die nicht Port 4662 benutzen, dafür aber andere.
    Gerade ohne "Trafficshaping" könnte es helfen, wenn die Router zwischen Benutzer und Server den QOS-bits Beachtung schenken.

  • Der Server erzwingt wirklich das "Softlimit": Die alten Server begrenzten nur die Anzahl der  auf einmal freigegebenen Dateien. Einige fehlerhafte Clients erteilten einige bekannte Befehle und umgingen so das Limit.
    Der Server sendet jetzt eine Nachricht an alle User die das "Softlimit" erreicht haben: "WARNING : You have too many shares for this server".
    Die Nachricht can mittels nbuser verändert werden:
    nbuser MSGSOFTLIMIT="Warning, this server enforces a limit of 1000 shares that you seem to excess. Verify your shares or find another server"

  • Bessere Handhabung eingehender Verbindungen, wenn der Server nahe des  maxClient Limits ist. Vor p68 konnte der Server hunderte Verbindungen akzeptieren (und testete die Hintertür-Ports des Benutzers) gerade wenn nur 1 Slot noch Verfügbar war. Die Server sollen nicht ihre Zeit/Bandbreite in dieser Situation verschwenden.

  • Eine neue "Hash-Tabelle" wurde eingeführt um die CPU bei eingehenden Verbindungen zu entlasten: Nicht mehr ganze Benutzerlisten durchlaufen die Überprüfung wenn IP:port eines Anfragers nicht gerade in der Liste sind. Das verbriet schrecklich viel CPU Cache.

  • Bitte ziehen Sie dieses Document für Großserver zu rate, wenn Sie ein Admin eines großen eDonkeyservers sind. Es gibt einige Hinweise, welche wir bei Silent-Bobs Server gemacht haben um 100000 Benutzer zu erreichen !

new 2002/12/11 Ein Hinweis für FreeBsd 4.7 :

Wenn Sie einen dserver -p67 auf FreeBSD 4.7 laufen lassen möchten,
machen Sie das folgende
:
Holen Sie die cachesize & nbuser Programme.
wget http://81.91.66.90/lugdunum/cachesize.gz
wget http://81.91.66.90/lugdunum/nbuser.freebsd.gz
gzip -d cachesize.gz
gzip -d nbuser.freebsd.gz
mv nbuser.freebsd nbuser
chmod 755 cachesize nbuser

Dann patche den dserver um ihm zu sagen, daß er nicht existente syscalls bei FreeBSD verwenden soll. :
cachesize -f 1 dserver
Dann rufe brandelf (enthalten in FreeBSD) :
brandelf -t Linux dserver
Ihr dserver ist fertig zum Starten. Benutzen Sie bitte die FreeBSD nbuser Version um Ihren dserver zu steuern und stellen Sie sicher, daß /proc fs gemounted ist oder nbuser wird nicht funktionieren.
Beachte : mit p75 brauchen Sie kein cachesize Programm mehr !!

new Neu in Version .p67 :

  • Einige Linuxkernel (2.2.19 zum Beispiel, oder andere auch) haben manchmal Probleme mit EOF Berichterstattung mit poll() auf Sockeln. Wenn das geschieht weis der dserver nicht wenn ein Peer (Benutzer) sich vom Server getrennt hat. Seit der dserver alle 3 Minuten Pings an alle verbundenen Benutzer sendet und AskCall für LOWID Benutzer weiterleitet, kann er eine Menge Nachrichten puffern  welche niemals an die eingefrorenen Verbindungen gesendet werden. Der benutzte Speicher wuchert weiter und Admins müssen den ganzen Server neustarten wenn der Speicher seine Grenzen erreicht.
    Mit p67 nimmt der Timer sich in Acht vor eingefrorenen Benutzern und trennt sie vom Server. Die übermittelten Puffer werden geflutet und der Speicher (RAM) läuft nicht über.

  • Erweiterte Pings. Wenn der ed2k-pings mit bestimmten herausforderten Werten empfängt, antwortet der Server mit dem "maxClients" Eintrag. Serverlisten (oder neue Benutzer) können diese Information nutzen um Server mit genug freien Slots zu finden.

  • Blacklistet nicht die kurzen Verbindungen welche ID=0 bekamen (p65 Verfeinerung)

  • Trennt und blacklistet Benutzer die Ihre Dateien veröffentlichen, bevor der Server ihnen eine neue ID zugeteilt hat. (Verletzung des ed2k-Protokolles bei alten eMule Clienten, die die Server einiges an Bandbreite kosten lassen).

  • nbuser 0.67 Veränderungen : Wenn Sie die Kosten (slimit) für zu kurze Verbindungen verändern wollen  (Standard: 900 credits), welche in p65 eingeführt worden sind, können sie folgendes benutzen:
    nbuser shortcredit=200 (Werte zwischen 1 und 1200)
    Bitte beachten Sie das normale Verbindungen schon 100 credits kosten, also ein Wert von "1" meint "Ich betreue keine alten eMule-Clients und Verbindungen zu meinem Server (und anderen Servern) nur mal "Hello man" sagen.
  • Wenn Sie die dauern der Blacklistzeit ändern wollen ( 2 Stunde ist Standard, 7200 Sekunden)
    nbuser Blacktime=3600 (Dauer in Sekunden)

new 2002/12/04 Ein Linux-Kernel-Patch :

Er würde für die .p61 Freigabe angekündigt. Er wird auf verschiedenen großen Servern, seit 2 Monaten, mit Erfolg eingesetzt..

Er kann zwischen 20-30% TCP-Upload des Servers einsparen.

Das Rationale an dem Patch ist die reinen ACKS zu verzögern, so daß der Server eine Chance hat keine die reinen ACKS NICHT zu senden, wenn er Datenantworten an den Benutzer senden kann ( mit einem ACK frei). Der Standardtimer in Linux ist viel zu langsam für einen eDonkeyserver.

Dieser Patch ist sehr konservativ und ändert nur die TCP Verbindungen zum Port 4661. Es ist kontrollierbar mit 2 sysctls:

net.ipv4.tcp_delack_sport : the port of the server (4661 Standard)
net.ipv4.tcp_delack_value : the timer in ms (900 ms per Standard)

Beispiel der Bedienung bei einem Server der den Port 4242 benutzt:
echo 4242 >/proc/sys/net/ipv4/tcp_delack_sport

Or you can also add this line in /etc/sysctl.conf
net.ipv4.tcp_delack_sport=4242

Der Patch heist lugdunum_ed2k_delack und kann unter linux-2.4.19 oder linux-2.4.20 angewendet werden :
# cd /usr/src/linux-2.4.20
# patch -p1 < lugdunum_ed2k_delack
# make clean dep bzImage ...
und nun sollten Sie wissen wie Sie wiederkompilieren/Ihren Kernel und Module installieren können.
 
Fragen Sie mich wenn Sie einen anderen Kernel benutzen. Wir haben gerade eine linux-2.5.44 mit einigen Veränderungen gepatcht..
Natürlich, es ist besser einen monolitischen Kernel zu benutzen (ohne Module) um beste Performance zu erreichen (Module nutzen mehr TLB Einträge).

new Neu in Version .p66 :

Benutze einen speziellen linux 2.4 setsockopt(TCP_DEFER_ACCEPT), so daß der Linuxkernel nur neue Verbindungen zum dserver erlaubt, wenn der Benutzer einige Daten sendet.

Einige Säuberungen in der Loginphase von ID=0 Benutzern (ID=0 ist wenn ein Benutzer eine LOWID hat und der Server LOWID zurückweist (blockt)).

Ein Timer trennt ID=0 Benutzer welche manchmal für immer Verbunden waren.

Neu in Version .p65 :

Seit Emuleanführer (Merkur) sagte er würde dieses bekloppte Verhalten ( 10 gleichzeitige Verbindungen zu Servern) nicht verändern, haben wir uns dazu entschlossen einen anderen Patch zu machen. :(
Diese Version nimmt eine Erfassung der Zeit der Verbindung eines Benutzers vor. Wenn die Zeit zu kurz ist, ziehen wir 900 Punkte von dem slimitcredit der IP-adresse des Benutzers ab. Wenn aber Emulebenutzer weiterhin sehr kurze Verbindungen zu dem Server verursachen, ist die IP blacklistet (genauso haben wir in der Vergangenheit BOT und mldonkeyV1 geblcklistet).
Einige Informationen über dieses Thema: Why Merkur is plain wrong
Danke an Tarod für die Herausgabe seines neuen Mod (Tarod 9) des emule welcher diesen Fehler korrigiert hat.
Das nächste Kapitel erklärt das Problem das wir auf unseren Servern beobachtet haben und welches Merkur einfach abweist.

2002/11/30 Eine Anmerkung über emule :

Emule ist jetzt der meistgenutzte Client. Dieser Client hat einige unerfreuliche Fehler. Der Knopf "Verbindung" startet 10 Verbindungen zu 10 Servern. Wenn eine Verbindung erfolgt werden die anderen 9 geschlossen. Der Effekt dieser Taktik ist der, daß nun die Server überflutet werdem mit Verbindunganfragen welche einige Sekunden (zwischen 3 und 10 Sekunden) andauert. Diese Taktik ist nicht sehr gut, weil die Chancen groß sind, daß andere Server den Port 4662 des Benutzers zur gleichen Zeit testen und geben dem Benutzer eine LOWID wegen timeouts oder weil sie den Port nicht erreichen können. Wir haben Merkur gefragt ob er dieses bescheurte Verhalten ändern wird, aber wir hatten keine Antwort erhalten.
In der Spitzenzeit erhöhen Serveradmins die Anzahl der Threads. Beispiel: Silent-Bob benutzt 200 threads for 50000 Benutzer.

2002/11/15 Eine Anmerkung über emule :

Alte Versionen von emule haben eine Menge Fehler. Einige Benutzer bleiben bei diesen und schaden so dem gesamten Netzwerk.
Beispiel: Server empfangen eine Menge UDP Pakete an falsche Ports.
Sehr alte Versionen vom emule benutzen UDP 4665, einige andere benutzen Port 4, anstatt dem (TCP+4) Port.
Sie können diese Benutzer blacklisten bei Benutzung dieser "neuen" Netzfiltermodule: DROPen der Frames ist besser, weil Ihre Maschine ICMP Nachrichten sendet welche besagen, daß die UDP Ports nicht erreichbar sind, seit emule nicht alles über ICMP pflegt. Besser ist es Ihre Bandbreite zu retten.
.

iptables -A INPUT -p udp --dport 4665 -m recent --set --name badguy -j DROP

iptables -A INPUT -p udp --dport 4 -m recent --set --name badguy -j DROP

iptables -A INPUT -m recent --rcheck --second 7200 --name badguy -j DROP

iptables -A OUTPUT -p icmp --icmp-type port-unreachable -j DROP

Natürlich, wenn Ihr Server den Standardport 4661 für TCP benutzt, der UDP ist 4665, benutzen Sie NICHT die erste Regel in dieser Liste !

Neu in Version .p64 :

  • Ein Fehler bei der Suche mit "Video" oder "Audio" oder "Images" welcher in p63 eingeschleppt und in p64 korrigiert wurde.
  • Einige Zahlen :
    ein p63/p64 dserver mit 5700 Benutzern 265888 Dateien benutzt 87 MB RAM
    ein p63/p64 dserver mit 16626 Benutzern 803792 Dateien benutzt 246 MB RAM.
    ein p63/p64 dserver mit 28376 Benutzern 1480244 Dateien benutzt 382 MB RAM.
  • Aufklärung : Ein Pentium+ CPU ist CPU kombatibel mit Intel© Pentium CPUs. Genau so ein AMD K5 / K6 / Duron / Athlon ! In der Tat nahe allem was seit der letzen 5 Jahre hergestellt worden ist, ist OK. Sofern Sie nicht einen Sinclair TX80 gekauft haben :)

Neu in Version .p63 :

  • ** Warnung ** : Diese Version benötigt eine Pentium+ CPU um zu laufen, weil wir cmpxchg8b Anweisungen benuten, welche uns einen speziellen "lock less" Algorithmus benutzen lässt.
  • Wenn Speicher zugewiesen wird, veruchen wir HugeTLB Seiten (4MB Seiten) zu belgen, welche Linux anbietet. Die syscall benutzt ist sys_alloc_hugepages() und hat keinen Effekt bei alten Kerneln. Der GRUK Server benutzt Linux 2.5.42 ohne Probleme. Sie brauchen kein Linux 2.5 um es ihn laufen zu lassen, Sie können natürlich bei Linux 2.4 bleiben.
  • Ein Thread ist bestimmt für das UDP-Nachrichten-Handling, anstatt der Pool der Threads. Dieses Ergebnis in einem ultra schnellem Handling der UDP-Nachrichten: Pingverzögerungen sind sehr klein.
  • Der Server kann einen Communitystring verwenden: Nur Benutzer sind erlaubt die eine gewisse Zeichenfolge in Ihrem Nicknamen haben..
    Diese Möglichkeit wird den Servern helfen länger privat zu bleiben, gerade wenn einige edonkeyclients ihre Serverlisten austauschen.
    Beispiel :
    Wir wollen Benutzern den Login erlauben, welche in Ihrem Nicknamen diese Zeichenkette verwenden: [afpteam]
    nbuser -c "[afpteam]"
    Nichtverwenden des community string, benutze : nbuser -c ""
    Um Admins von privaten Servern ihre begrenzte Bandbreite zu erhalten, sollten sie in Erwägung ziehen, den UDP-Verkehr mittels der Firewall zu blockieren:
    iptables -I INPUT -p udp --dport 4665 -j DROP
  • Der Server macht einen kompletteren Test an der Hintertür des Benutzer der verbinden will:
    Wir überprüfen ob der Port 4662 (oder der Port welcher beim Benutzer eingegeben wurde) in der Tat auf seinem Client abgebildet ist und es kein Fakeprogramm ist. Wenn es der Fall ist wird eine LOWID vergeben.
    Emuleclients haben aber Schwierigkeiten mit dieser Erkennung, Merkur wurde informiert und der Fehler sollte in der nächsten Verion beseitigt sein.
    Eine Umgehung für dieses Problem wurde hinzugefügt (kurze Verzögerung zwischen Verbindung und dem Senden von Daten an den Sockel).
  • Bitte erwäge einen höheren Wert für den "treads" Parameter oder Ihr Server ist nicht in der Lage eine Menge neuer Verbindungen zu akzeptieren. (zerplatzen der eingehenden Benutzer)
    Dieses ist ratsam weil die längere Zeit der Loginprocedur mehr Zeit in anspuch nimmt und infolge der erweiterten Port 4662 Probe.
    Beispiele :
    • lugdunum, 5700 users, threads=50
    • gruk, 30000 - 50000 users, threads=100
  • Ein Speicherleck wurde korrigiert.
  • Smart Sources Parameter geupdated : 200 Sources max in einer Antwort auf eine TCP-Anfrage, 50 in einer UDP. Infolge der Limitierung pro Quelle(pro Zeiteinheit), betrifft es weniger Anfragen.
  • Wir planen /dev/epoll bei Linux nach den Möglichkeiten von  Davide Libenzi um in der Lage zu sein 100000 Benutzer zu handeln. Also, Wenn Sie unserem nächsten Release vorrausgehen wollen, können sie schonmal versuchen das Paket, angepasst zu Ihrem Kernel, zu installieren.
  • Jari, ein Edonkeyserveradmin hatte Probleme mit den iptables Verbindungen auf seiner Linuxmaschine Überläufe zu verfolgen (ebenso benutzt er einen NAT-Router für sein internes Netzwerk). Wir schlugen ihm vor "iptables -A INPUT -t mangle -p tcp --dport 4661 -j ACCEPT" zu benutzen, damit Edonkeyverbindungen nicht durch die Rückverfolgungsmodule gehen, verschwendet eine Menge an Speicher. Jari berichtete das dieser Vorschlag sehr gut war. Es könnte anderen Admins helfen dies zu versuchen.

Neu in Version .p62 :

  • Neue Hashtabelle für Benutzersuchläufe. Server akzeptieren LOWID Benuzter, das sollte eine Menge CPU einsparen.
  • Höchst optimierte Substringsuchen, um die Suchegeschwindigkeit zu erhöhen, besonders bei großen Servern.
  • Wir sortieren die zusammengehörige Liste von Schlüsselworten so, daß "Suchanfragen" die Dateien zurückgeliefert bekommen, welche die höchste Verfügbarkeit haben. Benutzer sollten Happy sein !
  • "High end"-Server sollten 60000 Benutzer mit dieser Version handhaben können. GRUK kann dies nicht, weil er eine zu kleine Internetverbindung hat. Will es jemand anderes testen ??

Neu in Version .p61 :

  • Optimierungen... Wieder...riesige CPU und RAM Einsparungen..
    GRUK-server behandelt 40000 Benutzer mit dieser Version des dservers.(nun...39950 weil wir vergessen haben das ulimit -n 40000 in dem Skript abzuändern).
    GRUK bedient 50000 Benutzer mit einem Linuxkernelpatch (aufgesetzt auf Linux-2.4.19) welches wir in einigen Tagen veröffentlichen werden. Dieser Patch versucht so viel wie nur möglich die TCP ACKS beim Server zu verzögern: Diese können abgebrochen werden, wenn der Server einige Daten zum senden hat.

Neu in Version .p60 :

  • Oops... ein Speicherleck wurde in p59 eingeschleppt. Diese sollte es fixen.
  • Eine Korrektur wurde gemacht um den dserver auch auf gentoo-linux lauffähig zu machen und Kerneln die ein Kernel/User-Split von 3G/1G haben, anstatt den Standard 1g/3G.

Neu in Version .p59 :

  • Riesige RAM Einsparungen... schon wieder...
  • Benutzung des setsockopt(TCP_QUICKACK disable) um so viel wie nur möglich den TCP ACKS zu verzögern und Uploadeinsparrungen des Servers zu schaffen..
  • Wir fragten Merkuk vom Emuleprojekt uns zu helfen upload einzusparen: Wenn ein Benutzer ein Frame zum Server sendet, benutzt er im Augenblick noch zwei IP-frames. Es ist einfach zwei Frames zu einem zu verbinden.
    Diese Art der Clientoptimierung könnte dem Server 15% Upload einsparen.
    Wir arbeiten daran UDP anfragen ebenfalls zu verbinden. Dieses würde viel viel mehr Bandbreite einsparen, aber es ist auch viel schwieriger.
  • Kleine Fehlerkorrektur : dserver hat die Prozessorlast (core-dumping) hochgetrieben, wenn der Admin das Programm beenden wollte.

Neu in Version .p58 :

  • Bessere Behandlung von eingehenden TCP-Verbindungen.
  • Slimit module in den dserver integriert:
    • Diese Module behalten die Übersicht der Anfragen welche von jeder IP-Adresse kommen.
    • UDP Nachrichten, TCP DateiIdSuchen, TCP Verbindungen benutzen slimit module um BOT´s und Schnüffler zu erkennen.
    • Wenn eine IP die slmitmodule auslöst, ist sie blacklisted für eine Stunde.
    • Vom Benutzer gemachte Verbindung innerhalb einer sehr kurzen Zeit können ebenfalls die slimitmodule auslösen.
    • Users die versuchen mehr als 60 Datein herunterzuladen //können auflösen die slimit module.
    • Vorsorgeschutz des dservers gegenüber eines Denial Of Service Angriffs (DoS)
  • Bessere Handhabung von Leerlauf Threads : Diese schlafen für längere Zeit, reduziert die Belastung der Maschine.
  • Grukserver kann mit dieser Version des dservers 30000 Benutzer handeln.
  • Gut konfigurierte Maschinen (SMP, 1Go RAM), mit einem Breitbandinternetanschluss können vermutlich 40000 Benutzer mit dieser Version handhaben. (Versuche threads=50 in Ihrer donkey.ini für Highend Server).

Neu in Version .p57 :

  • Smart Sources V3 : Erkennung von BOT und nicht sozial modifizierten edonkeyclients. Sie sind dabei es zu lieben.
    Unsere Analysen bei unseren Testservern (lugdunum, gruk, ed2k.ch, link92 und fugitif) zeigen, 1% der verbundenen Benutzer nutzen den BOT oder den mldonkey. Diese "stehlen" zwischen 30% und 50% aller Quellen die vom Server geliefert werden!!!
    Mit Smart Sources V3 werden sie aufgespürt und der Server sendet nur noch 1%  der Quellen an sie.
  • Als die Logdatei des Servers geupdated wurde, haben wir einen daemon entwickelt welcher dynamisch Firewallregeln erstellt, um aggresive IP Adressen für 24 Stunden zu blacklisten und diese Info mit anderen Servern teilt.
  • Bitte beachten Sie, daß wir mit dem Autor von mldonkey zusammen arbeiten, um sein Programm "serverfreundlicher" zu machen.
  • Danke vielmals an die Serveradmin von ed2k.ch (bile666), Gruk (Corpo), Link92, Fugitif67 für ihre angebotene Hilfe das Verhalten von BOT-Benutzer zu verfolgen.
  • Die Smart Source Parameter (TCPmax) sind verändert worden von 20 auf 40 Quellen maximal, welche in einer DateiIDSuche beeinhaltet ist.
  • Einige Fehler korrigiert - Wir legen Ihnen nahe ihre alten Versionen upzudaten (< p56)

Neu in Version .p56 :

  • Spezielle Regelung zur Strukturzuteilung mit einer mehrfachen Anordnung des L1_CHACE_SIZE (Die Größe der Cachelinie im Prozessorcache).
    Wir benutzen einen speziellen Speichertuteiler um sicher zu stellen, daß nur eine Cachelinie verwiesenist wenn auf "hot spots" zugegriffen wird.
    Die standard libc malloc() erzwingt eine Anpassung auf 8 bytes, welche nicht für ALLE ausreichen ist.
    L1_CACHE_SIZE is :
    • 16 bytes für i386 and i486
    • 32 bytes für Intel PII und PIII (Standard in dserver-16.38.p56)
    • 64 bytes für AMD Athlon
    • 128 bytes für Intel PIV
    Wenn Sie den Wert anpassen wollen (Standard 32), benutzen Sie bitte "nbuser -C newvalue"

  • Wenn 2 oder mehr Edonkeyclients die selbe IP-Adresse teilen, aber unterschiedliche Tür Ports (Door ports) benutzen, können die jetzt eine HighID erhalten.

  • Eine Nachricht wird gesendet, wenn eine LOWID versucht eine Verbindung zum Server aufzubauen. Es kann sein :
    • WARNING: your IP X.Y.Z.T, port 4662 is already connected to this server.
      Diese Nachricht wird gesendet, wenn der Server eine Sekundenverbindung mit der selben (IP,port) feststellt. Dies kann passieren, wenn 2 Edonkeyclients sich eine IP-Adress teilen und beide den Standardport (4662) benutzen. Es kann sein, daß wenn eine Netzwerkverbindungstrennung erfolgte und sie nicht bekannt gemacht und auch auch nicht bestätigt wurde.
    • ERROR: Your port 4662 is not reachable. You have a LOWID http://www.edonkey2000.com/documentation/lowid.html ! Please correct your network config !
      Diese Nachricht wird gesendet wenn die Client-Tür (door) Port (Standard 4662) nicht erreichbar ist.
      Wir hoffen die Nachrichten werden von Neulingen gelesen.

  • LOWID ist ZURÜCK! Wir fügten ein Basislimit mit der Prozentzahl von LOWID-Benutzern. Der Standardwert ist 20%. Veränderbar mit nbuser -R xx. Der Erfolg von Smart Sources V2 machte LOWID´s auf den Servern akzeptabel, weil sie viel weniger Traffic (Datenverkehr) verursachen als zuvor.
  • Wenn ein Client in seinem Nickname die Zeichen "nolistsrvs" (Beispiel ist nich bedeutungsvoll, kann auch  "NoListSrvs" sein ...) hat, sendet der Server seine Serverliste und Beschreibungen zum Client wenn der Edonkeyclient ihn danach fragt. Dies lässt den Client selber über den Inhalt seiner Serverliste entscheiden.

  • Mehr sensible ist  vc , kill, ip commands. vc Befehl zeiht für jeden Client eine eindeutige Nummer, Garantiert nicht veränderbar. ip und kill Befehle nehmen diese eindeutige Nummer als Parameter.
    vc Befehl zeigt die ID und IP:PORT eines jeden einzelnen Clienten.

Neu in Version .p55 :

  • Riesige Geschwindigkeitsverbesserungen. Gruk French Edonkeyserver handelt 20000 Benutzer anstatt 120000. Diese Version ist ein MUß für Große Server wenn sie vorher CPU eingeschränkt waren.

Neu in Version .p53 :

  • Smart Sources V2 : Verfeinerung von Smart Sources, basierend auf Rückmeldungen die wir von Benutzer erhalten haben.

Neu in Version .p52 :

  • Der originale Server nutzt nur die ersten 10 Worte in einem Dateinamen zum indexzieren. Wenn eine Datei als "ein großer Baum in einem kleinen Wald, gerippt von the avenger.avi" benannt wurde, konnte eine suche nach "avenger" die Datei nicht finden. Diese Version trägt alle Wörter in den Index ein.
  • indexziere nicht "Einbuchstabenwörter" : Es ist einfach nur nutzlos.

Neu in Version .p51 :

  • Ein Fehler bei nbfile wurde korrigiert. Bitte nicht .p49 or .p50 benutzen.
  • Sendet nicht LOWID-Quellen zu anderen LOWIDclients.
  • vc Befehle zeigen S: column die Anzahl der Zeit die der Client gegeben hat ( als eine Quelle) zu einem DateiIDSuche Nachfrager.

Neu in Version .p50 :

  • Ein Fehler welcher in .p49 eingeführt wurde ist Korrigiert. Wir bekamen keine guten Antworten bei "Datei Suche" UDP.

Neu in Version .p49 :

  • Sie wollen es nicht glauben. Ich glaube es.

  • Smart Sources eingeschaltet : Dies ist ein exclusives lugdunum Feature.

    'Smart Sources' ist eine spezielle Behandlung von "DateiIDSuch"Anfragen.

    • Vermeidung des Sendens der selben Quellen(ID) immer und immer wieder :
      Implementierung eines Ratenlimits um das versenden von IDs die vermutlich bereits zu beschäftigt sind mit uploads zu vermeiden.
    • Mit dieser "smart evolution" (intelligenten Evolution) können LOWID´s auf unseren Servern akzeptiert werden, weil vermutlich weniger Traffic verursacht wird.
    • Reduziert den Inter-Client Traffic : Wenn ein Client 10 eingehende Verbindungen pro Sekunde empfing, waren 99% von denen verscherzt. Seit wir den Overhead des Edonkeynetzwerkes reduziert haben, wurde die Transferbandbreite erhöht. (daten).

      Mehr Information über 'Smart Sources'
       

  • Benötigte CPU wurde durch 3 geteilt, dank einer Liste vom Share pro Client.
    Die alten Versionen mussten alle Dateien auf dem Server scannen um die Dateien welche von einem Client geteilt wurden zu säubern. Dieses verursachte eine riesige Auswirkung auf die Performance bei großen Servern.
    Sie sind nun in der Lage höhere Werte für die tableSize Parameter in der donkey.ini einzutragen, ohne Performanceverlust !!! Wir empfehlen tableSize=65029 (oder größer) für 5000 Benuter-Server.

  • "vc" Befehl zeigt  p:number vom Share eines jeden Client.

Neu in Version .p45 :

  • Der nbuser Befehl zeigt UDP-byte Zähler.

Neu in Version .p44 :

  • Der Server verbietet mldonkey (MLD) Benutzer sich einzuloggen (Standard).
    Zum erlauben bitte "nbuser -Z 1" eingeben.
    nbuser schreibt Informationen über MLD :
    ...
    Anti MLD Filter eingeschaltet. 88 MLD Verbindungen zurückgegeben.
    ...

Neu in Version .p43 :

  • Die Version .p43 ist kompatibel mit den 'linux-mpss' patches welche uns erlaubte Hardwareseiten von 4Mo anstatt von 4Ko zu nutzen.
    Dieser mpss-Parch funktionier bei Pentium+ CPUs,This mpss patch applies on Pentium+ CPUS, welche fähig sind zu PSE. (PSE : Page Size Extensions)
    Es reduziert den TLB-Druck bei Faktor 1024 ! Es hilft wirklich Programmen die mehr als 16Mo Speicher benutzen, besonders wenn der Speicher stark fragmentiert ist.
    Linux dserver werden SEHR glücklich darüber sein mpss zu nutzen. (momentaner mpss patch ist erhältlich ganz oben von Linux-2.4.18).
    Der dserver .p43 belegt Speicher per mmap() aufgerufen mit Blöcken von 4 Mo, gefolgt dem Aufruf von madvise() als Dokument in den mpss docs.
    Natürlich sind .p43 und höhere Versionen in der Lage auf Standard Linuxmaschinen zu laufen die nicht mss gepatcht sind !

    Seit dem 14. August benutzt lugdunum ed2k Server Linux-2.4.19 + Super Page patch von Naohiko Shimizu.
    Super Page ist eine alternativer patch zu mpss und scheint ganz robust zu sein. Die Tatsache daß es für Linux-2.4.19 verfügbar ist, macht es zu einem besseren Kanditaten als mpss im Moment.

Neu in Version .p41 :

  • nbuser -F zeigt Zähler von herausgefilteren Einträgen von filters[] welche Jed hier dokumentiert hat.
    Ich empfehle zu verwenden :
    filter[0]=(#FILENAME .part)
    filter[1]=(#FILENAME .met)!(#FILENAME maurice)

Neu in Version .p40 :

  • The welcome[] frames werden mit einer TCP Nachricht gesendet. TCP Nachricht anstatt als eine Nachricht pro Linie. Es spart einiges mehr an Bandbreite des Servers ein..

Neu in Version .p38 :

  • Mehr Optimierungen und Bereinigungen vor den großen Veränderungen (Smart Sources), die Server sollten einen 5-10%igen Nutzungsgewinn der CPU gegenüber .p37 davontragen.
  • Der vc Befehl (zeige Clients) wurde vergrößert um die Zähler von gesendeten (xmited) und empfangenen (received) bytes eines jeden Clients/Benutzers darzustellen..

Neu in Version .p37 :

  • Mehr Optimierungen und Bereinigungen, Server sollten einen 5-10%igen Nutzungsgewinn der CPU gegenüber .p36 davontragen.

Neu in Version .p36 :

  • Ein unfassbarer Fehler in dem original dserver wurde korrigiert : Er handelte nicht korrekte EOF an den Sockeln : Wenn ein Client sich vom Server getrennt hat erfolgt der Aufruf recv() und liefert 0 (EOF) und der dserver nahm keine Notiz davon !
    Korrektur dieses Fehlers wird zu weniger LOWID-Verbindungen führen, weil wenn ein Client sich trennt und wieder verbindet (ganz schnell hintereinander) vergab der alte dserver eine LOWID !
  • Mehr Optimierungen und Bereinigungen, Server sollten einen 5-10%igen Nutzungsgewinn der CPU gegenüber .p35 davontragen.

Neu in Version .p35 :

  • Nur ein send() syscall anstatt zwei : bessere Komptabilität mit alten Linuxen und OpenUnix8 ( Es werden keine MSG More flags werden mehr bei Linux-2.4.4 und höher benötigt).

Neu in Version .p31 :

  • Möglichkeit von LOWID-Verbindungen auf Basis des Edonkeypseudos. Schreibe in eine Datei "edonkey.access" einige Zeilen mit "pseudo:1", und benutze den Befehl "nbuser -A edonkey.access" um eine Hashtabelle zu erzeugen und lade diese in den laufenden Server. Jetzt können Sie LOWID´s für Leute welche Kontakt mit Ihnen herstellen wollen erlauben und ihnen erklären, warum sie keine HighID bekommen.  
  • Möglichkeit der Kontrolle des public flag mit nbuser Befehl.
  • Möglichkeit zum verändern der Anzahl der Quellen welche in einer Antwort von "DateiIDSuchen", UDP und TCP Anfragen beinhaltetet sind. (Standard 230)

Arbeit im Gange

  • Eine Windowsversion der Patches. Mit nur meist verlangten Features, nicht schwer optimiert. Die erste Version ist hier erhältlich und verbietet LOWID-Verbindungen. Es macht kein Ausnahme ob in Ihrem IE eine Proxy konfiguriert ist.
  • Wir studieren die Möglichkeit eine Blacklist von DateiID´s(hashes) zu finden, welche Ihre User nicht sharen (freigeben) können/dürfen.
  • (abgebrochen)Eine zukünftige Version wird in der Lage sein *.met und *.part.met zu filtern, welche nachlässige Benutzer sharen.
    (weil diese den edonkey-temp-ordner freigeben.)
     Es ist nicht mehr notwendig seit JED seine Dokumentation der Filter gemacht hat. Fügen Sie einfach nur diese Zeile in ihre donkey.ini ein:
    filter[0]=(#FILENAME .part)

Wir empfehlen das nbuser Tool um verschiedene Statistiken über den laufenden Server zu erhalten und genauso um dynamisch einige Parameter zu verändern.
FreeBSD Benutzer sollten diese Version nehmen: nbuser.freebsd.gz
$ gzip -d nbuser.gz
$ chmod 755 nbuser
$ cp nbuser /usr/bin # (only if you are root)
$ nbuser
Patch version p58
5536 users 245798 files (146128) avg=44.3999
Start Time : Fri Sep 20 10:10:27 2002
MaxClients=5700
33452 refused connections because of MaxClients
minVersion: 57 maxVersion: 2000
 62 rejected connections because of minVersion
tableSize=65029 public=1 threads=40 (40 sleeping) console=true verbose=true thisIP=62.161.204.20:4661
  maxSearchCount=200 maxUDPSearchCount=20
Every 2*10 seconds, timer does a ping to 1/10 of clients (idx 7)
delay between 'Finding other servers' : 3600 seconds
malloc8() stats : 28 4Mo blocs allocated, 157120 bytes remain in heap. L1_CACHE_SIZE=64
Share limit : 1000/client. Hard limit : 4000/client
197 clients had more shares:
 total shares = 490913, average = 2491.94 Max number : 14846
20 clients kicked off because of hard limit
18 disconnections because of a too long frame
Anti LowID filter disabled (1).
 1103 LOWID. Max percentage of LOWIDS 20 %. 7731 LOWIDS rejected because of max percentage.
 2414+0 LowID connections rejected
Anti BOT filter disabled
Anti MLD filter disabled.
TCP stats :
  44693 connects, 29810 ServerList, 122039 Publish, 27149 Search,
  2357593 SourceSearch, 104 UserSearch, 3611188 AskCall, 284 Unk9,
  660 cursorsearch,
  126649 (8.30966 %) refused files (because of donkey.ini filter[])
  6781156 TCP messages sent
UDP stats :
  717407 Ping req 47297 Search req 9040908 FileID search 331247 Ask LowID
  129 Search User 2993 ListServ req 448 ListServ reply 3877 ServDesc req
  175 ListServ ask
  717407:10043698 PingReply 384026:51564836 SearchResult 3033651:96312369 FileIDResult
  32547:195282 UnknwnID 175:63573 ListServReply 3877:209358 ServDescReply

4171683 UDP messages sent. 158389116 bytes (not including UDP headers)
275196240 bytes (including headers) rate : 4898.91 bytes/s

SmartSources: TCP : max=40 nb=6S/60sec 13627590 hits 11896109 misses 1648111 scan 90773 reorg
SmartSources: UDP : max=8 nb=4S/90sec 6445500 hits 104189345 misses 6233054 scan 71916 reorg
slimit: 4829/131072 slots, 12172533/13628869 frames (10.6857% rejected) 1797 accept() refused

Zum modifizieren des maxClients Parameters zum neuen Wert 1200:
$ nbuser -m 1200
Zum erlauben von Verbindungen von LOWID-Clients:
$ nbuser -l 1
Zum verbieten von Verbindungen von LOWID-Clients:
$ nbuser -l 0
Zum erlauben von Verbindungen von BOT-lite clients :
$ nbuser -B 1
Zum verbieten von Verbindungen von BOT-lite clients :
$ nbuser -B 0
Zum erlauben von Verbindungen von mldonkey clients :
$ nbuser -Z 1
Zum verändern des  soft limit (max Anzahl des Shares) zu 90 (Standart : 500) :
$ nbuser -s 90
Zum verändern des hard limit (zum kicken von nachlässigen Edonkeybenutzern) auf 2000 (Standard : 4000) :
$ nbuser -D 2000

lugdunum benutzt das superlimit (von Joakim Axelsson) netfilter patch, welches noch nicht im Standardnetfilter-Paket enthalten ist. Dieser Filter ignoriert die Frames die zu schnell von einer IP-Adresse kommen. Dieses passiert wenn Benutzer zu viele Dateien am downloaden sind und zu viele "Datei ID Suchen" generieren.

Wir empfehlen sehr 'traffic shaping' zu benutzen,
um Ihre Bandbreite kontrollieren zu können, installiere shaped in /etc/rc.d und füge diese Zeile an das Ende von /etc/rc.d/rc.local
/etc/rc.d/shaped
Bevor Sie es benutzen, sollten sie die Variabelndefinitionen am Anfang der Datei anpassen: UPLINK, LOWUP, DEV und LOCALNET.
Wenn Sie ein lokales Netzwerk haben und ihre Linuxmaschine als ein Masquerading Gateway dient, können Sie fragen ob der Traffic vom lokalen Netzwerk eine "High priority class" ist
.
Gerade wenn Ihr Edonkeyserver läuft, werden  Sie noch in der Lage sein,
von einem PC in ihrem lokalem Netzerk, im Internet zu surfen:
Wenn Sie z.B. ein internes Netzwerk haben auf Interface eth1, markieren Sie die eingehenden Pakete zu diesem Interface mit diesem Befehl:
iptables -A PREROUTING -i eth1 -t mangle -j MARK --set-mark 2
Wenn Sie eine PPPOE-Leitung (z.B.DSL) mit einer MTU von 1492 benutzen, empfehlen wir dieses :
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Wir empfehlen adjust nach /etc/rc.d/adjust zu installieren und diese Zeile an das Ende von /etc/rc.d/rc.local zu schreiben:
/etc/rc.d/adjust
Dieses Skript verändert einige Systemparameter um einen optimalen Edonkeyserver zu haben.

Für große Server: Vergesst nicht /proc/sys/fs/file-max zu erhöhen. (Standardwert 8192).
Sie können hinzufügen (oder veränderen falls schon vorhanden) diese Zeile in /etc/sysctl.conf :
fs.file-max=16384
Das können Sie ebenfalls machen : echo 16384 > /proc/sys/fs/file-max

Bei Linux 2.2 Machinen, nicht vergessen  /proc/sys/net/ipv4/route/max_size zu ändern, weil ein zu großer Wert einige Probleme bereiten kann.
echo 32768 > /proc/sys/net/ipv4/route/max_size
Sie sollten ebenso die Linux 2.2 VM Einstellungen verändern :
echo "1024 2048 4096" > /proc/sys/vm/freepages
Linux 2.2 hat ein Limit beim poll() System Aufruf : Weil es den kmalloc(nbhandles*8) Kernelservice benutzt, es hat eine Begrenzung von 16384 Dateien die gehandelt werden. Also ein laufender Edonkeyserver, der auf Linux 2.2 läuft, kann nicht mehr als 16300 Benutzer haben.

Letzter Rat: wir empfehlen das Programm mit einem Skript laufen zu lassen -> s
ript.sh : Es verwendet ulimit -n 8192 um die maximale Anzahl der Dateien zu verändern die ein Prozess öffnen kann. Wenn Sie einen Server für 10000 Benutzer planen, verändere den Wert auf 16384 !!

Für Benutzer die den dserver als normaler Benutzer laufen lassen wollen/müssen (nicht root), sollten /etc/security/limits.conf aufrufen und folgende Zeilen einfügen:
 
* soft nofile 32768
* hard nofile 32768

Wir bieten eine veränderte Version von tcpdump (network sniffer) an um das EdonkeyProtokoll an Port UDP 4665 zu dekodieren.
Benutzung::
# tcpdump -p -n -s 1600 port 4665
17:48:53.199825 80.15.37.251.1095 > 62.161.204.20.4665: ed2k FileID search hash=4938BC08FC797F0ED9007AD3286E3998
17:48:53.217966 62.212.110.223.2297 > 62.161.204.20.4665: ed2k FileID search hash=8C6E353331519603C2217A6C9070B98B
17:48:53.218973 24.202.51.101.1041 > 62.161.204.20.4665: ed2k FileID search hash=43D12BBDE83FC8BDF112330F463931E9
17:48:53.220204 62.161.204.20.4665 > 80.15.94.151.2390: ed2k Ping reply challenge 119422780 nbuser=4492 nbfile=440958 (DF)
17:48:53.223180 62.161.204.20.4665 > 81.65.55.10.3037: ed2k FileID result hash=1F9E0F75A78EB744BEFC3A71B204493C 108 sources (DF)
17:48:53.225722 80.14.220.19.4628 > 62.161.204.20.4665: ed2k Ping req challenge 3469
17:48:53.225935 202.175.91.40.1025 > 62.161.204.20.4665: ed2k Ping req challenge 5400597
17:48:53.226148 80.11.127.71.3314 > 62.161.204.20.4665: ed2k FileID search hash=FB997EF2ECE60053C665816D245DBB73
17:48:53.247157 62.161.204.20.4665 > 213.44.161.69.1085: ed2k FileID result hash=B99128E049F681E607265BD078EB1E32 48 sources (DF)


EMail an Lugdunum

 

Hier geht es zu Norman´s Seite:
Besuch doch mal www.Rechenkraft.net

Hier geht es zum eD2k-serverboard:
http://www.ed2k-serverboard.de/