code: def _recv_timeout_loop(self):
          
          while self._detect_time:
              last_wait = time.time()
              self._lock = hub.Event()
  
              self._lock.wait(timeout=self._detect_time)
  
              if self._lock.is_set():
                  # Authentication variable check (RFC5880 Section 6.8.1.)
                  if getattr(self, "_auth_seq_known", 0):
                      if last_wait > time.time() + 2 * self._detect_time:
                          self._auth_seq_known = 0
  
              else:
                  # Check Detection Time expiration (RFC5880 section 6.8.4.)
                  LOG.info("[BFD][%s][RECV] BFD Session timed out.",
                           hex(self._local_discr))
                  if self._session_state not in [bfd.BFD_STATE_DOWN,
                                                 bfd.BFD_STATE_ADMIN_DOWN]:
                      self._set_state(bfd.BFD_STATE_DOWN,
                                      bfd.BFD_DIAG_CTRL_DETECT_TIME_EXPIRED)
  
                  # Authentication variable check (RFC5880 Section 6.8.1.)
                  if getattr(self, "_auth_seq_known", 0):
                      self._auth_seq_known = 0
docs: A loop to check timeout of receiving remote BFD packet.