Tunnels: Refactor peer selection
by checking if a peer qualifies when adding, rather than iterating through the whole netdb to generate an exclusion list at the start. This was very inefficient and generated needless lookup storms via lookupBeforeDropping() Same idea for getClosetHopExclude() Goal is to never iterate through all the known routers, profiles, or connected peers to select peers for a single tunnel. Add ExcluderBase and 4 classes for various cases: Excluder, ClosestHopExcluder, IBGWExcluder, and OBEPExcluder. Change CSFI.getEstablished() from a Set to a List for efficiency Improve efficiency of selectActivePeersNotFailingPeers() by iterating through connected list rather than profiles. Do not add not-connected peers to exclude set, which would become huge for hidden routers. Change getExclude() to shouldExclude() The exclude set calls shouldExclude() in contains(). Pass the exclude set to ProfileOrganizer. For client tunnels, do OBEP and IBGW checks at peer selection time, not afterwards in ConnectChecker, so it doesn't fail at the end in checkTunnel(). Check closest hop when hidden. Fail-fast for inbound when no connected peers and hidden, do not fall back to non-connected peers. Should improve startup time for hidden routers. Use ArraySet for matches to save space Remove unused selectPeersLocallyUnreachable() and selectPeersRecentlyRejecting() No peer selection policy changes here.
Showing
- history.txt 21 additions, 0 deletionshistory.txt
- router/java/src/net/i2p/router/CommSystemFacade.java 3 additions, 2 deletionsrouter/java/src/net/i2p/router/CommSystemFacade.java
- router/java/src/net/i2p/router/RouterVersion.java 1 addition, 1 deletionrouter/java/src/net/i2p/router/RouterVersion.java
- router/java/src/net/i2p/router/dummy/VMCommSystem.java 5 additions, 5 deletionsrouter/java/src/net/i2p/router/dummy/VMCommSystem.java
- router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java 58 additions, 82 deletions...java/src/net/i2p/router/peermanager/ProfileOrganizer.java
- router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java 2 additions, 2 deletions...va/src/net/i2p/router/transport/CommSystemFacadeImpl.java
- router/java/src/net/i2p/router/transport/Transport.java 1 addition, 2 deletionsrouter/java/src/net/i2p/router/transport/Transport.java
- router/java/src/net/i2p/router/transport/TransportManager.java 10 additions, 8 deletions...r/java/src/net/i2p/router/transport/TransportManager.java
- router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java 4 additions, 4 deletions...java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
- router/java/src/net/i2p/router/transport/udp/UDPTransport.java 3 additions, 3 deletions...r/java/src/net/i2p/router/transport/udp/UDPTransport.java
- router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java 1 addition, 1 deletion...er/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java
- router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java 137 additions, 46 deletions...va/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java
- router/java/src/net/i2p/router/tunnel/pool/ExcluderBase.java 61 additions, 0 deletionsrouter/java/src/net/i2p/router/tunnel/pool/ExcluderBase.java
- router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java 41 additions, 46 deletions...c/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
- router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java 176 additions, 82 deletions...va/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java
Loading
Please register or sign in to comment