private void refreshTable() {
    final Bytes target = Peer.randomId();

    final List<DiscoveryPeer> initialPeers = peerTable.nearestBondedPeers(Peer.randomId(), 16);
    if (includeBootnodesOnPeerRefresh) {
      bootstrapNodes.stream()
          .filter(p -> p.getStatus() != PeerDiscoveryStatus.BONDED)
          .forEach(p -> p.setStatus(PeerDiscoveryStatus.KNOWN));

      // If configured to retry bootnodes during peer table refresh, include them
      // in the initial peers list.
      initialPeers.addAll(bootstrapNodes);
    }
    recursivePeerRefreshState.start(initialPeers, target);
    lastRefreshTime = System.currentTimeMillis();
  }
Refreshes the peer table by generating a random ID and interrogating the closest nodes for it.
Currently the refresh process is NOT recursive.
ethereum/p2p/src/main/java/org/hyperledger/besu/ethereum/p2p/discovery/internal/PeerDiscoveryController.java