[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Dateikopien zwecks Debugging speichern - oder auch nicht. Aber wie?



On 01/23/2017 09:05 AM, Stefan Baur wrote:
> Am 22.01.2017 um 20:52 schrieb Peter Ludikovsky:
> 
>>> Das Original mag es nicht bemerken, aber irgendwo geht dann doch im
>>> Zweifel trotzdem was hops, wenn das nicht schnell genug entgegengenommen
>>> wird.
>>> Sprich, entweder habe ich einen Stapel Tasks auf der Maschine laufen,
>>> die nicht fertig werden, und damit das RAM blockieren, das ich für die
>>> Verarbeitung der Jobs brauche, oder es werden Pakete verworfen und auf
>>> meinem Mitschnitt-Host kommen unvollständige Daten an, so dass ich keine
>>> verlässliche Kopie habe.
>>
>> Also ersteres mit großer Warscheinlichkeit nicht, wenn direkt im Kernel
>> das IP Paket geklont & sofort wieder raus geschickt wird. Und wenn der
>> Mittschnitt-Host schnell genug ist kann der ohne Probleme die Daten
>> annehmen & speichern.
> 
> Ich sehe das Problem nicht in der Verarbeitungsgeschwindigkeit der
> lokalen Mascnine, sondern in
> - Netzwerkverfügbarkeit zum Mitschnitt-Host
> - Netzwerkgeschwindigkeit zum Mitschnitt-Host
> - Verarbeitungsgeschwindigkeit des Mitschnitt-Hosts

Diese Probleme wird es aber immer geben wenn du Daten über das Netzwerk
kopieren willst, und sogar zwischen lokalen Platten. So weit ich weiß
gibt es für deine Anforderungen keine fertige Lösung. Korrigiere mich
bitte falls ich hier etwas vergessen/falsch verstanden habe:

 * Die Daten sollen auf einen 2. Server kopiert werden, ohne
Performance-Einbußen
 * Die Daten sollen dabei ganz oder gar nicht kopiert werden
 * Das Tool soll erkennen ob die Netzwerkgeschwindigkeit zu langsam ist
& dann nicht kopieren
 * Das Tool soll erkennen ob die Verarbeitungsgeschwindigkeit zu langsam
ist & dann nicht kopieren
 * Dabei soll nicht mehr als 1 Kopie der Daten lokal vorgehalten werden
damit der RAM nicht zu voll wird

>> Muss nicht sein. Ich kann zu wenig C um das per fork()/pthreads zu
>> basteln, aber in der Bash geht das relativ leicht:
>>     ( cp <src> <dst> ) &          # Job im Hintergrund starten /
>>                                   # "fork()"
>>     bpid=$!                       # Background-PID speichern
>>     ( sleep 10; kill -9 ${bpid} ) # Wenn nach 10 Sekunden cp nicht
>>                                   # fertig ist -> Abbruch
>> Kann etwas mehr Fehler- und Umgebugsprüfung vertragen, aber die
>> prinzipielle Funktionsweise sollte klar sein.
> 
> Ne, genau das ist halt auch nix. Was auf dem Mitschnitt-Host ankommt,
> muss schon auch komplett sein.
> Sinn und Zweck im Debugging-Fall ist ja, einen "Replay" fahren zu
> können. Wenn der Datensatz dann nach 10 Sekunden abbricht, kommt nur
> Murks raus.

Gibt es irgendeine Möglichkeit, wie der Ziel-Host erkennen könnte ob die
Daten komplett sind? Z.B. ein besonderer EOF-Marker, oder eine
eingebaute Prüfsumme? Sobald die Daten da sind können sie ja ohne Hektik
geprüft werden, zeit- und resourcenkritisch ist ja (wenn ich das richtig
verstanden habe) nur die Verarbeitung am Quell-Host.

Ich habe inzwischen BTW das mit dem TEE Target bei iptables angetestet.
Da passiert tatsächlich nur ein Klonen des Pakets, wobei nur die
Ziel-MAC geändert wird. Ansonsten wird das Paket 1:1 weitergeleitet.

Lg
/peter

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: