Einzelnen Beitrag anzeigen
Alt 28.05.2014, 08:20   #15 (permalink)
flickflack
His Awesomeness!
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von flickflack
 
Registriert seit: 25.07.2006
Ort: Regnum Borussiae
Beiträge: 9.282
Standard

Liest sich für mich auch super. Würde ich via Konfig anbieten ja, damit jeder seine Thresholds wählen kann.

Dieses ominöse TCP-Connection-Limit auf bspw. Windows ist auch schon umgangen? Ich überlege auch was passiert, wenn der Queue gespammt wird und du jeweils 10sek Timeouts verbaust. Kanns damit irgendwie ein Szenario vom vollen, überlaufenden Queue geben, oder gar Bans aus Versehen? Vllt schicken die Server Requests im Intervall, was eventuell ein blockierter Queue als Angriff werten könnte? Wäre anstelle eines Bans, ein Packagedrop* nicht "freundlicher"? Oder man baut ne weiche und ne harte Grenze. Guckst Du wann die Pakete reinkommen, oder interessiert nur die Anzahl?

*) Gibt 100 Pakete mit demselben Inhalt, ich streiche 99?

Bei TCP bin ich noch nich so recht hintergestiegen, wie Du das machst.

In der Anwendungsschicht bekommt man praktisch nur ein Command, ein Gamespy-Command. Sagen wir mal "\\\USCHI\\\QUERIET\\\DIE\\\WELT". Das muss ja nicht zwingend die Repräsentation im TCP-/UDP-Stack sein. Rein theoretisch könnten mehrere Pakete als Chunks das Command darstellen. Während die Anwendungsschicht eben nur das "GS-Command" als Ganzes begreift, hat die Transportschicht bspw. 2 TCP-Pakete vor Augen, wenn die von "GS-Command" spricht.
Auf der Anwendungsschicht kann ich nun prüfen, wie oft mir Commands geschickt werden. Aber ich kann nicht prüfen, ob mich jemand mit Paketen spammt, weil diese Pakete eben in der Transportschicht sichtbar sind, aber nicht in der Anwendungsschicht. Das ist ja bei UDP vernachlässigbar, aber mit TCP kannste so jemanden blöde machen. Das ist vllt bei der Payloadmenge aber auch alles vernachlässigbar.

Ich hoffe Du erkennst mein Problem beim Drübernachdenken

Edit: Mir fällt noch die Frage ein, ob Du Queries selbst generierst (Scheduler) und die abfragenden Clients/Server damit mit semi-aktuellen, aber wenigstens nicht on-demand erzeugten Resultaten versorgst? Is ja auch nichts Anderes als zu verhindern, dass die Last durch Verarbeitung zur Weißglut getrieben wird. Nur hier halt wieder auf der Anwendungsschicht ^^
flickflack ist offline   Mit Zitat antworten