Bland det digra urvalet av parametrar till sysctl() finns bland annat NET_IPV4_TCP_KEEPALIVE_TIME, NET_IPV4_TCP_KEEPALIVE_PROBES och NET_IPV4_TCP_MAX_KA_PROBES.
Alla har de ju med Keepalive funktionen för socketkommunikation över ipv4 att göra, men vad är egentligen skillnaden mellan NET_IPV4_TCP_KEEPALIVE_PROBES och NET_IPV4_TCP_MAX_KA_PROBES? Är det som jag misstänker att "KEEPALIVE_PROBES" är tiden mellan "probarna" och "MAX_KA_PROBES" är maximala antalet "probar"..??
Parametrar till sysctl() [LÖST igen]
Kategoriregler
Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Parametrar till sysctl() [LÖST igen]
Senast redigerad av 3 Osprey, redigerad totalt 6 gång.
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Parametrar till sysctl()
Nu har jag fått det att funka så att jag kan ställa om NET_IPV4_TCP_KEEPALIVE_TIME, dvs. tiden innan "keepalive-klockan" börjar ticka och NET_IPV4_TCP_KEEPALIVE_PROBES som är intervallet mellan "probarna". Däremot har jag inte lyckats hitta vilken parameter som styr det maximala antalet "probar" innan den ger upp.
Hjälp mottages tacksamt...
Hjälp mottages tacksamt...

Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Parametrar till sysctl()
Delvis fel av mig, men nu funkar det. NET_IPV4_TCP_KEEPALIVE_PROBES är det maximala antalet "probes" och NET_IPV4_TCP_KEEPALIVE_INTVL är intervallet i sekunder mellan dem. 

Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Parametrar till sysctl() [Ändrat]
Parametrarna fick jag ju fixade igår, men nu kom en annan fråga...
När läser IP-stacken av de här parametrarna? Kan man ändra dem när man gör socket() och connect() och sedan återställa dem..??
Det här är ju parametrar för en socket, men för att ställa om dem så måste man ändra dem för hela systemet, korkat!! Nu är det väl så iofs att Linux självt inte använder KEEPALIVE..? eller hur är det med det..??
När läser IP-stacken av de här parametrarna? Kan man ändra dem när man gör socket() och connect() och sedan återställa dem..??
Det här är ju parametrar för en socket, men för att ställa om dem så måste man ändra dem för hela systemet, korkat!! Nu är det väl så iofs att Linux självt inte använder KEEPALIVE..? eller hur är det med det..??
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Parametrar till sysctl() [Ändrat]
Som så mycket annat så var det jätteenkelt när man bara kom underfund med det... Det gick alldeles utmärkt att använda SOL_TCP med TCP_KEEPIDLE, TCP_KEEPINTVL och TCP_KEEPCNT via setsockopt() istället för sysctl().
Kopplingen gjorde jag förresten mot Samba-port #445 vilken är samma oavsett om den andra burken är uppe under Ubuntu eller Windows. Resultatet sedan är att Keepalive, håller liv i linan där den andra burken verkar skicka en POLLHUP följd av en innehållslös POLLERR sådär en gång varannan minut ±1 minut.
Däremot är jag inte längre helt säker på vad jag ska använda det här hacket till, en del andra saker har jag liksom lyckats lösa på vägen...
Kopplingen gjorde jag förresten mot Samba-port #445 vilken är samma oavsett om den andra burken är uppe under Ubuntu eller Windows. Resultatet sedan är att Keepalive, håller liv i linan där den andra burken verkar skicka en POLLHUP följd av en innehållslös POLLERR sådär en gång varannan minut ±1 minut.
Däremot är jag inte längre helt säker på vad jag ska använda det här hacket till, en del andra saker har jag liksom lyckats lösa på vägen...

Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
Re: Parametrar till sysctl() [LÖST igen]
Jag har nosat lite på de där parametrarna också på sista tiden. Mitt problem är att t.ex. SSH-uppkopplingar dör efter några minuter om jag inte använder dem. Det går iofs att fixa med ServerAliveInterval i ~/.ssh/config men jag har liknande problem med IMAP tror jag. Comhem har ännu inte svarat på min felanmälan.
Just nu tcp_keepalive_time=7200, tcp_keepalive_intvl=75 och tcp_keepalive_probes=9. Betyder det att det tar två timmar innan första keepalive sänds, och att den sedan skickar skickar keepalive var 75:e sekund tills den får svar? Om den inte fått svar efter 9 försök bryts förbindelsen. Om den får svar väntar den ytterligare 2 timmar innan nästa keepalive. Är det rätt uppfattat?
Parametrarna kan för övrigt ändras genom /proc/sys/net/ipv4/tcp_keepalive_*
Just nu tcp_keepalive_time=7200, tcp_keepalive_intvl=75 och tcp_keepalive_probes=9. Betyder det att det tar två timmar innan första keepalive sänds, och att den sedan skickar skickar keepalive var 75:e sekund tills den får svar? Om den inte fått svar efter 9 försök bryts förbindelsen. Om den får svar väntar den ytterligare 2 timmar innan nästa keepalive. Är det rätt uppfattat?
Parametrarna kan för övrigt ändras genom /proc/sys/net/ipv4/tcp_keepalive_*
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Parametrar till sysctl() [LÖST igen]
Jo precis, förutom att jag inte i källkoden sett något helt säkert om att den återgår till tvåtimmarsvarianten när den får svar på en poll. Antagligen gör den det, men jag vågar inte lova.Lars skrev:Just nu tcp_keepalive_time=7200, tcp_keepalive_intvl=75 och tcp_keepalive_probes=9. Betyder det att det tar två timmar innan första keepalive sänds, och att den sedan skickar skickar keepalive var 75:e sekund tills den får svar? Om den inte fått svar efter 9 försök bryts förbindelsen. Om den får svar väntar den ytterligare 2 timmar innan nästa keepalive. Är det rätt uppfattat?
Jo om filsystemet under /proc är monterat, vilket det inte alltid är... så därför valde jag sysctl() istället för en enkel echo mot /proc...Lars skrev:Parametrarna kan för övrigt ändras genom /proc/sys/net/ipv4/tcp_keepalive_*
[Edit] En annan fördel med att använda setsockopt() är att man kan styra det "per sockel", utan att påverka hela systemet. Med sysctl() kan man däremot om man vill styra hela systemet, dvs. alla sockets som används. Detta innefattar t.ex Firefox, Samba och liknande...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...