2012-04-03 3 views
4

In einem früheren Leben, das ich an einem Werkzeug gearbeitet war, dass grundsätzlich in der Lage, diese Informationen zu verfolgen:Wie programmatisch TCP/IP-Zähler per TCP-Verbindung extrahieren?

src_ip, dst_ip, SRC_PORT, DST_PORT, bytes_sent, bytes_received, packets_sent, packets_received, packets_retransmitted, bytes_retransmitted

Für jeden aktiven TCP-Verbindung auf dem Computer. Zu der Zeit (circa 2008) beruhte dies auf einem Kernel-Patch, um die vom Kernel verfolgten Zähler zu erweitern. Ich dachte, ich hätte gehört, dass es vor einigen Jahren in den Kernel integriert wurde. Aber es war für immer und ich vergesse die Details.

Das Leben hat mich den Kreis gezogen und ich finde mich wieder ein solches Werkzeug schreiben möchten, aber ich kann mich nicht erinnern, wie diese Zähler zugreifen/Linux konfigurieren, damit es diese Informationen verfolgt.

Es könnte eine Möglichkeit geben, netstat dafür zu verwenden - aber ich war noch nicht in der Lage, die Zählerinformationen in dieser Schnittstelle verfügbar zu machen.

Jeder Weg, den Kernel dazu zu bringen, diese Informationen zu verfolgen - und die Zahlen effizient zu exportieren, wäre ausreichend. Ich hoffe nicht, dass ich dafür IPTables ausführen muss.

Antwort

0

Sie können einige Informationen per Socket über /proc/net/tcp erhalten. Andere globale Informationen können über /proc/net/snmp erneut versucht werden. Ich glaube jedoch nicht, dass der Kernel Bytes_Ende, Bytes_received, packets_sent, packets_received, packets_retransmitted, bytes_retransmited auf Sockeln pro Socket verfolgt.

+0

in der Nähe von, was ich versuche zu tun, dass ich gefunden habe, ist so etwas wie: nicht http://code.google.com/p/ipt-account/wiki/Usage Aber auch das ist die Wiederübertragung Werte ausgesetzt, die leider einige der interessantesten Informationen sind. Sieht so aus, als hätte der Patch, den ich vorher benutzt habe, Teil eines Teils eines angepassten Kernel bei einem früheren Job sein müssen. – jlyons

0

Sie können das Tool linux conntrack für die Flussstatistik verwenden.

Ich denke, das ist das Werkzeug, das Sie zuvor verwendet haben.