{"id":1383,"date":"2009-12-03T10:39:50","date_gmt":"2009-12-03T09:39:50","guid":{"rendered":"http:\/\/blog.it4sport.de\/?p=1383"},"modified":"2009-12-03T10:39:50","modified_gmt":"2009-12-03T09:39:50","slug":"tcp-keepalives-und-timeouts","status":"publish","type":"post","link":"https:\/\/gmbd.de\/wordpress\/index.php\/2009\/12\/03\/tcp-keepalives-und-timeouts\/","title":{"rendered":"tcp keepalives und timeouts"},"content":{"rendered":"<p>\t\t\t\tNachdem ich mit einer kommerziellen bei Idle-Verbindungen immer rausgeflogen bin habe ich mir das Thema mal auf Linux B\u00fcchsen genauer angesehen. Es gibt zwei wichtige Schrauben:<\/p>\n<ol>\n<li><em>\/proc\/sys\/net\/ipv4\/tcp_keepalive*<\/em><br \/>\n \u00dcber die 3 Kernel Parameter tcp_keepalive_time, tcp_keepalive_intvl, tcp_keepalive_probes kann man dem Kernel mit geben wie h\u00e4ufig er Keepalive Pakete verschickt. Das hilft, wenn man zwischen Client und Server eben solch kommerziellen Firewalls hat, die eine idlen Verbindung sehr schnell trennen. Details dazu <a href=\"http:\/\/tldp.org\/HOWTO\/TCP-Keepalive-HOWTO\/usingkeepalive.html\">hier.<\/a><\/li>\n<li> <em>\/proc\/sys\/net\/ipv4\/netfilter\/ip_conntrack_tcp_timeout_*<\/em><br \/>\n\u00dcber diese Kernel Parameter regelt man auf Linux Firewalls selbst wie hoch die entsprechenden Timeouts sind. Am wichtigsten ist hier wohl der Parameter <em>ip_conntrack_tcp_timeout_establishe<\/em>, welcher per Default auf 432000 Sekunden (=5 Tage) steht. D.h. Linux-Firewalls w\u00fcrden per Default erst nach 5 Tagen idle Verbindungen trennen. Speziell auf Firewalls mit viel Traffic kann es schon mal vern\u00fcnftig sein, den Wert zu verkleinern. Bei der kommerziellen Firewall, die mich genervt hatte, waren 30 Minuten eingestellt. Ein zu hoher Wert kann im schlimmsten Fall daf\u00fcr sorgen, dass die Conntrack Tabelle voll l\u00e4uft und man eine Meldung wie diese bekommt:<\/p>\n<pre>\nNov 20 12:43:24 hostname kernel: ip_conntrack: table full, dropping packet.\n<\/pre>\n<p>Nicht sch\u00f6n!<\/p>\n<p>Die Anzahl der aktuell aktiven und inaktiven TCP Verbindungen kann man \u00fcbrigens ganz leicht per snmp abfragen. Die beiden OIDs sind  .1.3.6.1.2.1.6.5.0 f\u00fcr aktive und .1.3.6.1.2.1.6.6.0 f\u00fcr passive (das kann OpenNMS von Haus auf). Direkt am System geht es gesamt mit:<\/p>\n<pre lang=\"bash\">\n[root@host]# cat \/proc\/sys\/net\/ipv4\/netfilter\/ip_conntrack_count\n10333\n<\/pre>\n<p>Bei der Unterscheidung zwischen den einzelnen Stati hilft grep, awk, sort &#8230; \ud83d\ude42\n<\/li>\n<\/ol>\n<p>PS: Wie die Parameter \u00fcber den Reboot hin rettet erkl\u00e4rt <em>man sysctl<\/em> bzw. <em>man sysctl.conf<\/em> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem ich mit einer kommerziellen bei Idle-Verbindungen immer rausgeflogen bin habe ich mir das Thema mal auf Linux B\u00fcchsen genauer angesehen. Es gibt zwei wichtige Schrauben: \/proc\/sys\/net\/ipv4\/tcp_keepalive* \u00dcber die 3 Kernel Parameter tcp_keepalive_time, tcp_keepalive_intvl, tcp_keepalive_probes kann man dem Kernel mit geben wie h\u00e4ufig er Keepalive Pakete verschickt. Das hilft, wenn man zwischen Client und Server\u2026 <span class=\"read-more\"><a href=\"https:\/\/gmbd.de\/wordpress\/index.php\/2009\/12\/03\/tcp-keepalives-und-timeouts\/\">Weiterlesen &raquo;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[110,262,355,360],"_links":{"self":[{"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/1383"}],"collection":[{"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=1383"}],"version-history":[{"count":0,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/1383\/revisions"}],"wp:attachment":[{"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=1383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=1383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=1383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}