Nagle-Algorithmus bei geöffneter Buchse prüfen

504
Medhat Hussain

Eine der von uns verwendeten Plattformen öffnet TCP-Sockets (Kein Quellcode verfügbar).

Ich muss überprüfen, ob der Nagle-Algorithmus für diese Sockel deaktiviert oder aktiviert ist.

Das verwendete Betriebssystem kann Windows oder Linux sein, und wir kennen die offenen Ports.

Alle Werkzeuge und Ideen :)

0

1 Antwort auf die Frage

0
harrymc

Der Algorithmus von Nagle ist standardmäßig aktiviert, kann jedoch beim setsockoptSystemaufruf mit dem Flag TCP_NODELAY deaktiviert werden.

Eine Möglichkeit unter Linux wäre es, setsockopt mit strace zu verfolgen . Die Netzwerkaktivität kann dann durch den Anruf verfolgt werden:

strace -o /tmp/strace.out -s 10000 -e trace=network -fp PID 

Dadurch werden die Aufrufe von bind, listen, socket und setsockopt verfolgt.

Wenn Ihre Linux-Distribution Folgendes enthält systemtap, können Sie den Befehl pfiles.stp verwenden .

Ein Beispiel für die Verwendung ergibt sich aus dieser Antwort :

$ ./pfiles.stp `pgrep udevd` 787: udevd Current rlimit: 32 file descriptors 0: S_IFCHR mode:0666 dev:0,15 ino:396 uid:0 gid:0 rdev:1,3 O_RDWR|O_LARGEFILE  /dev/null 1: S_IFCHR mode:0666 dev:0,15 ino:396 uid:0 gid:0 rdev:1,3 O_RDWR|O_LARGEFILE  /dev/null 2: S_IFCHR mode:0666 dev:0,15 ino:396 uid:0 gid:0 rdev:1,3 O_RDWR|O_LARGEFILE  /dev/null 3: S_IFDIR mode:0600 dev:0,9 ino:1 uid:0 gid:0 rdev:0,0 O_RDONLY  inotify 4: S_IFSOCK mode:0777 dev:0,4 ino:2353 uid:0 gid:0 rdev:0,0 O_RDWR  socket:[2353] SO_PASSCRED,SO_TYPE(2),SO_SNDBUF(111616),SO_RCVBUF(111616) sockname: AF_UNIX 5: S_IFSOCK mode:0777 dev:0,4 ino:2354 uid:0 gid:0 rdev:0,0 O_RDWR  socket:[2354] SO_TYPE(2),SO_SNDBUF(111616),SO_RCVBUF(33554432) ulocks: rcv 6: S_IFIFO mode:0600 dev:0,6 ino:2355 uid:0 gid:0 rdev:0,0 O_RDONLY|O_NONBLOCK  pipe:[2355] 7: S_IFIFO mode:0600 dev:0,6 ino:2355 uid:0 gid:0 rdev:0,0 O_WRONLY|O_NONBLOCK  pipe:[2355]