Denis, That looks like a possible bug in the coarse timer update logic. The coarse timer deals with events scheduled at a resolution denoted by an integer number of seconds, such as pings. A timeout of one year is used as kind of "effectively infinite" time interval. If you see this large timeout, it means that the ping event is losing its place in the coarse timer event queue -- probably a bug.
James Denis Vlasenko <v...@port.imtp.ilyichevsk.odessa.ua> said: > I was puzzled why sometimes openvpn ceases to generate > '--ping 30' packets. I instrumented it a bit, > here is a pseudo-patch: > > errlevel.h: > +#define D_PING LOGLEV(4, 0, 0) /* show --ping packets > */ > .... > -#define D_INTERVAL LOGLEV(8, 70, M_DEBUG) /* show interval.h debugging info */ > +#define D_INTERVAL LOGLEV(4, 70, M_DEBUG) /* show interval.h debugging info */ > > ping-inline.h: (check_ping_send now will explain why it do not send pings) > static inline void > check_ping_send (struct context *c) > { > void check_ping_send_dowork (struct context *c); > if (!c->options.ping_send_timeout) { msg (D_PING, "PING: !c->options.ping_send_timeout"); return; } > if (c->c2.to_link.len) { msg (D_PING, "PING: c->c2.to_link.len <> 0"); return; } > if (!event_timeout_trigger (&c->c2.ping_send_interval, &c->c2.timeval)) > { msg (D_PING, "PING: !event_timeout_trigger(%ld,%ld)",(long)(c->c2.ping_send_interval.last), (long)c->c2.timeval.tv_sec); return; } > check_ping_send_dowork (c); > } > > ping.c:check_ping_send_dowork (struct context *c): (log pings) > ... > encrypt_sign (c, true); > + msg (D_PING, "PING: SENT"); > } > > forward.c:void single_select (struct context *c): (log large select timeouts) > ... > /* > * Wait for something to happen. > */ > c->c2.select_status = 1; /* this will be our return "status" if select doesn't get called */ > if (!c->sig->signal_received && !SOCKET_READ_RESIDUAL (c->c2.link_socket)) > { > if (check_debug_level (D_SELECT)) > show_select_status (c); > > + if(((unsigned long)c->c2.timeval.tv_sec) >= 28) { //vda > + msg(D_PING, "PING: select timeout=%ld", (long)c->c2.timeval.tv_sec); > + } > c->c2.select_status = SELECT (&c->c2.event_wait, &c->c2.timeval); > check_status (c->c2.select_status, "select", NULL, NULL); > } > > > With --ping 30, select shall _never_ have timeout>30 secs, right? > > I was lucky. Bug struck me soon after I restarted openvpn. > Here is the full log: > > Fri May 28 22:59:11 2004 Current Parameter Settings: > Fri May 28 22:59:11 2004 config = '[UNDEF]' > Fri May 28 22:59:11 2004 mode = 0 > Fri May 28 22:59:11 2004 persist_config = DISABLED > Fri May 28 22:59:11 2004 persist_mode = 1 > Fri May 28 22:59:11 2004 show_ciphers = DISABLED > Fri May 28 22:59:11 2004 show_digests = DISABLED > Fri May 28 22:59:11 2004 genkey = DISABLED > Fri May 28 22:59:11 2004 askpass = DISABLED > Fri May 28 22:59:11 2004 show_tls_ciphers = DISABLED > Fri May 28 22:59:11 2004 proto = 0 > Fri May 28 22:59:11 2004 local = '1.1.4.1' > Fri May 28 22:59:11 2004 remote_list[0] = {'1.1.4.2', 8002} > Fri May 28 22:59:11 2004 remote_random = DISABLED > Fri May 28 22:59:11 2004 local_port = 8002 > Fri May 28 22:59:11 2004 remote_port = 8002 > Fri May 28 22:59:11 2004 remote_float = DISABLED > Fri May 28 22:59:11 2004 ipchange = '[UNDEF]' > Fri May 28 22:59:11 2004 bind_local = ENABLED > Fri May 28 22:59:11 2004 dev = 'tun' > Fri May 28 22:59:11 2004 dev_type = '[UNDEF]' > Fri May 28 22:59:11 2004 dev_node = '[UNDEF]' > Fri May 28 22:59:11 2004 tun_ipv6 = DISABLED > Fri May 28 22:59:11 2004 ifconfig_local = '1.1.5.1' > Fri May 28 22:59:11 2004 ifconfig_remote_netmask = '1.1.5.2' > Fri May 28 22:59:11 2004 ifconfig_noexec = DISABLED > Fri May 28 22:59:11 2004 ifconfig_nowarn = DISABLED > Fri May 28 22:59:11 2004 shaper = 0 > Fri May 28 22:59:11 2004 tun_mtu = 1434 > Fri May 28 22:59:11 2004 tun_mtu_defined = ENABLED > Fri May 28 22:59:11 2004 link_mtu = 1500 > Fri May 28 22:59:11 2004 link_mtu_defined = DISABLED > Fri May 28 22:59:11 2004 tun_mtu_extra = 0 > Fri May 28 22:59:11 2004 tun_mtu_extra_defined = DISABLED > Fri May 28 22:59:11 2004 fragment = 0 > Fri May 28 22:59:11 2004 mtu_discover_type = -1 > Fri May 28 22:59:11 2004 mtu_test = 0 > Fri May 28 22:59:11 2004 mlock = DISABLED > Fri May 28 22:59:11 2004 inactivity_timeout = 0 > Fri May 28 22:59:11 2004 ping_send_timeout = 30 > Fri May 28 22:59:11 2004 ping_rec_timeout = 0 > Fri May 28 22:59:11 2004 ping_rec_timeout_action = 0 > Fri May 28 22:59:11 2004 ping_timer_remote = DISABLED > Fri May 28 22:59:11 2004 persist_tun = DISABLED > Fri May 28 22:59:11 2004 persist_local_ip = DISABLED > Fri May 28 22:59:11 2004 persist_remote_ip = DISABLED > Fri May 28 22:59:11 2004 persist_key = DISABLED > Fri May 28 22:59:11 2004 mssfix = 1450 > Fri May 28 22:59:11 2004 passtos = DISABLED > Fri May 28 22:59:11 2004 resolve_retry_seconds = 0 > Fri May 28 22:59:11 2004 connect_retry_seconds = 5 > Fri May 28 22:59:11 2004 username = '[UNDEF]' > Fri May 28 22:59:11 2004 groupname = '[UNDEF]' > Fri May 28 22:59:11 2004 chroot_dir = '[UNDEF]' > Fri May 28 22:59:11 2004 cd_dir = '[UNDEF]' > Fri May 28 22:59:11 2004 writepid = '[UNDEF]' > Fri May 28 22:59:11 2004 up_script = '[UNDEF]' > Fri May 28 22:59:11 2004 down_script = '[UNDEF]' > Fri May 28 22:59:11 2004 up_restart = DISABLED > Fri May 28 22:59:11 2004 daemon = DISABLED > Fri May 28 22:59:11 2004 inetd = 0 > Fri May 28 22:59:11 2004 log = DISABLED > Fri May 28 22:59:11 2004 nice = 0 > Fri May 28 22:59:11 2004 verbosity = 4 > Fri May 28 22:59:11 2004 mute = 0 > Fri May 28 22:59:11 2004 gremlin = DISABLED > Fri May 28 22:59:11 2004 occ = ENABLED > Fri May 28 22:59:11 2004 rcvbuf = 65536 > Fri May 28 22:59:11 2004 sndbuf = 65536 > Fri May 28 22:59:11 2004 http_proxy_server = '[UNDEF]' > Fri May 28 22:59:11 2004 http_proxy_port = 0 > Fri May 28 22:59:11 2004 http_proxy_auth_method = '[UNDEF]' > Fri May 28 22:59:11 2004 http_proxy_auth_file = '[UNDEF]' > Fri May 28 22:59:11 2004 http_proxy_retry = DISABLED > Fri May 28 22:59:11 2004 socks_proxy_server = '[UNDEF]' > Fri May 28 22:59:11 2004 socks_proxy_port = 0 > Fri May 28 22:59:11 2004 socks_proxy_retry = DISABLED > Fri May 28 22:59:11 2004 comp_lzo = DISABLED > Fri May 28 22:59:11 2004 comp_lzo_adaptive = ENABLED > Fri May 28 22:59:11 2004 route_script = '[UNDEF]' > Fri May 28 22:59:11 2004 route_default_gateway = '[UNDEF]' > Fri May 28 22:59:11 2004 route_noexec = DISABLED > Fri May 28 22:59:11 2004 route_delay = 0 > Fri May 28 22:59:11 2004 route_delay_defined = DISABLED > Fri May 28 22:59:11 2004 shared_secret_file = > '/.local/var/service/ovpn-1/key' > Fri May 28 22:59:11 2004 key_direction = 0 > Fri May 28 22:59:11 2004 ciphername_defined = ENABLED > Fri May 28 22:59:11 2004 ciphername = 'BF-CBC' > Fri May 28 22:59:11 2004 authname_defined = ENABLED > Fri May 28 22:59:11 2004 authname = 'SHA1' > Fri May 28 22:59:11 2004 keysize = 0 > Fri May 28 22:59:11 2004 replay = ENABLED > Fri May 28 22:59:11 2004 replay_window = 64 > Fri May 28 22:59:11 2004 replay_time = 15 > Fri May 28 22:59:11 2004 packet_id_file = '[UNDEF]' > Fri May 28 22:59:11 2004 use_iv = ENABLED > Fri May 28 22:59:11 2004 test_crypto = DISABLED > Fri May 28 22:59:11 2004 tls_server = DISABLED > Fri May 28 22:59:11 2004 tls_client = DISABLED > Fri May 28 22:59:11 2004 key_method = 2 > Fri May 28 22:59:11 2004 ca_file = '[UNDEF]' > Fri May 28 22:59:11 2004 dh_file = '[UNDEF]' > Fri May 28 22:59:11 2004 cert_file = '[UNDEF]' > Fri May 28 22:59:11 2004 priv_key_file = '[UNDEF]' > Fri May 28 22:59:11 2004 cipher_list = '[UNDEF]' > Fri May 28 22:59:11 2004 tls_verify = '[UNDEF]' > Fri May 28 22:59:11 2004 tls_remote = '[UNDEF]' > Fri May 28 22:59:11 2004 crl_file = '[UNDEF]' > Fri May 28 22:59:11 2004 tls_timeout = 2 > Fri May 28 22:59:11 2004 renegotiate_bytes = 0 > Fri May 28 22:59:11 2004 renegotiate_packets = 0 > Fri May 28 22:59:11 2004 renegotiate_seconds = 3600 > Fri May 28 22:59:11 2004 handshake_window = 60 > Fri May 28 22:59:11 2004 transition_window = 3600 > Fri May 28 22:59:11 2004 single_session = DISABLED > Fri May 28 22:59:11 2004 tls_auth_file = '[UNDEF]' > Fri May 28 22:59:11 2004 pull = DISABLED > Fri May 28 22:59:11 2004 ifconfig_pool_defined = DISABLED > Fri May 28 22:59:11 2004 ifconfig_pool_start = 0.0.0.0 > Fri May 28 22:59:11 2004 ifconfig_pool_end = 0.0.0.0 > Fri May 28 22:59:11 2004 n_bcast_buf = 256 > Fri May 28 22:59:11 2004 real_hash_size = 256 > Fri May 28 22:59:11 2004 virtual_hash_size = 256 > Fri May 28 22:59:11 2004 client_connect_script = '[UNDEF]' > Fri May 28 22:59:11 2004 client_disconnect_script = '[UNDEF]' > Fri May 28 22:59:11 2004 client_config_dir = '[UNDEF]' > Fri May 28 22:59:11 2004 tmp_dir = '[UNDEF]' > Fri May 28 22:59:11 2004 push_ifconfig_defined = DISABLED > Fri May 28 22:59:11 2004 push_ifconfig_local = 0.0.0.0 > Fri May 28 22:59:11 2004 push_ifconfig_remote_netmask = 0.0.0.0 > Fri May 28 22:59:11 2004 enable_c2c = DISABLED > Fri May 28 22:59:11 2004 cf_max = 0 > Fri May 28 22:59:11 2004 cf_per = 0 > Fri May 28 22:59:11 2004 OpenVPN 2.0_beta1 i386-pc-linux-gnu [SSL] [LZO] built on May 28 2004 > Fri May 28 22:59:11 2004 Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key > Fri May 28 22:59:11 2004 Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication > Fri May 28 22:59:11 2004 Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key > Fri May 28 22:59:11 2004 Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication > Fri May 28 22:59:11 2004 WARNING: normally if you use --mssfix and/or --fragment, you should also set --tun-mtu 1500 (currently it is 1434) > Fri May 28 22:59:11 2004 TUN/TAP device tun0 opened > Fri May 28 22:59:11 2004 TUN/TAP TX queue length set to 100 > Fri May 28 22:59:11 2004 /bin/ifconfig tun0 1.1.5.1 pointopoint 1.1.5.2 mtu > 1434 > Fri May 28 22:59:11 2004 Data Channel MTU parms [ L:1478 D:1450 EF:44 EB:0 ET:0 EL:0 ] > Fri May 28 22:59:11 2004 Local Options String: 'V3,dev-type tun,link-mtu 1478,tun-mtu 1434,proto UDPv4,ifconfig 1.1.5.2 1.1.5.1,cipher BF-CBC, > Fri May 28 22:59:11 2004 Expected Remote Options String: 'V3,dev-type tun,link-mtu 1478,tun-mtu 1434,proto UDPv4,ifconfig 1.1.5.1 1.1.5.2,ciph > Fri May 28 22:59:11 2004 Local Options hash (VER=V3): '5194cd41' > Fri May 28 22:59:11 2004 Expected Remote Options hash (VER=V3): 'e341fa03' > Fri May 28 22:59:11 2004 Socket Buffers: R=[110592->131072] S=[110592->131072] > Fri May 28 22:59:11 2004 UDPv4 link local (bound): 1.1.4.1:8002 > Fri May 28 22:59:11 2004 UDPv4 link remote: 1.1.4.2:8002 > Fri May 28 22:59:11 2004 EVENT event_timeout_wakeup (2/2) > Fri May 28 22:59:11 2004 EVENT event_timeout_trigger (30) > Fri May 28 22:59:11 2004 PING: SENT > Fri May 28 22:59:11 2004 TIMER: coarse timer wakeup 2 seconds > Fri May 28 22:59:11 2004 RANDOM USEC=670225 > Fri May 28 22:59:11 2004 write UDPv4 []: Network is unreachable (code=101) > Fri May 28 22:59:12 2004 write UDPv4 []: Network is unreachable (code=101) > Fri May 28 22:59:12 2004 write UDPv4 []: Network is unreachable (code=101) > Fri May 28 22:59:12 2004 write UDPv4 []: Network is unreachable (code=101) > Fri May 28 22:59:13 2004 EVENT event_timeout_trigger (2) > Fri May 28 22:59:13 2004 EVENT event_timeout_wakeup (2/2) > Fri May 28 22:59:13 2004 PING: c->c2.to_link.len <> 0 > Fri May 28 22:59:13 2004 TIMER: coarse timer wakeup 2 seconds > Fri May 28 22:59:13 2004 write UDPv4 []: Network is unreachable (code=101) > Fri May 28 22:59:15 2004 EVENT event_timeout_trigger (2) > Fri May 28 22:59:15 2004 EVENT event_timeout_wakeup (2/2) > Fri May 28 22:59:15 2004 PING: c->c2.to_link.len <> 0 > Fri May 28 22:59:15 2004 TIMER: coarse timer wakeup 2 seconds > Fri May 28 22:59:15 2004 Peer Connection Initiated with 1.1.4.2:8002 > Fri May 28 22:59:18 2004 EVENT event_timeout_trigger (2) > Fri May 28 22:59:18 2004 EVENT event_timeout_wakeup (2/2) > Fri May 28 22:59:18 2004 PING: !event_timeout_trigger(1085774355,2) > Fri May 28 22:59:18 2004 TIMER: coarse timer wakeup 2 seconds > Fri May 28 22:59:21 2004 EVENT event_timeout_trigger (10) > Fri May 28 22:59:21 2004 EVENT event_timeout_wakeup (10/10) > Fri May 28 22:59:21 2004 PING: !event_timeout_trigger(1085774355,10) > Fri May 28 22:59:21 2004 TIMER: coarse timer wakeup 10 seconds > Fri May 28 22:59:21 2004 RANDOM USEC=682209 > Fri May 28 22:59:32 2004 EVENT event_timeout_wakeup (27/30) > Fri May 28 22:59:32 2004 PING: !event_timeout_trigger(1085774369,27) > Fri May 28 22:59:32 2004 TIMER: coarse timer wakeup 27 seconds > Fri May 28 22:59:32 2004 RANDOM USEC=168112 > Fri May 28 22:59:43 2004 RANDOM USEC=310535 > Fri May 28 22:59:53 2004 RANDOM USEC=567338 > Fri May 28 22:59:59 2004 PING: c->c2.to_link.len <> 0 > Fri May 28 22:59:59 2004 TIMER: coarse timer wakeup 31536000 seconds > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 22:59:59 2004 PING: select timeout=31536000 > Fri May 28 23:00:04 2004 RANDOM USEC=262969 > Fri May 28 23:00:04 2004 PING: select timeout=31535995 > Fri May 28 23:00:04 2004 PING: select timeout=31535995 > Fri May 28 23:00:04 2004 PING: select timeout=31535995 > Fri May 28 23:00:04 2004 PING: select timeout=31535995 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:10 2004 PING: select timeout=31535989 > Fri May 28 23:00:14 2004 RANDOM USEC=111391 > Fri May 28 23:00:14 2004 PING: select timeout=31535985 > Fri May 28 23:00:14 2004 PING: select timeout=31535985 > Fri May 28 23:00:14 2004 PING: select timeout=31535985 > Fri May 28 23:00:14 2004 PING: select timeout=31535985 > > and so on. openvpn will abstain from sending pings now > for eaxctly 365 days (I think :). Further log contains > records of two kinds only: > > Fri May 28 23:24:36 2004 RANDOM USEC=565465 (random) > and > Fri May 28 23:24:36 2004 PING: select timeout=31534523 (counting down) > > Here is how I start openvpn: > > openvpn \ > --secret key \ > --dev tun \ > --proto udp \ > --port 8002 \ > --local 1.1.4.1 \ > --remote 1.1.4.2 \ > --ifconfig 1.1.5.1 1.1.5.2 \ > --tun-mtu 1434 \ > --ping 30 \ > --verb 4 \ > > NB: I run ntp (strata=3) on this box. > -- > vda > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click > _______________________________________________ > Openvpn-devel mailing list > Openvpn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/openvpn-devel > --