Opened 7 years ago

Last modified 4 months ago

#532 open enhancement

Don't enforce streaming connection limits on conns from internal clients

Reported by: zzz Owned by: zzz
Priority: minor Milestone:
Component: streaming Version: 0.8.9
Keywords: Cc:
Parent Tickets:


Subtickets (add)

Change History (7)

comment:1 Changed 7 years ago by zzz

  • Component changed from unspecified to streaming
  • Milestone changed from 0.8.12 to 0.9.3
  • Type changed from defect to enhancement

needs a new API in the I2PAppContext to find out what is internal. Perhaps a subset of ClientManager?.

comment:2 Changed 6 years ago by str4d

  • Milestone 0.9.3 deleted

comment:3 Changed 3 years ago by str4d

  • Status changed from new to open

comment:4 Changed 6 months ago by zzz

alternatively - a new bit in I2CP that indicates local

comment:5 Changed 6 months ago by zzz

Also - allow local traffic even if network is down and zero-hop tunnels disallowed.
None of this is easy, and is a tough fit into our architecture.

comment:6 Changed 6 months ago by peekachoo

The primary goal is to allow clients to connect to a single Router (via I2CP) and communicate using the standard I2P Streaming API even if the Router is completely disconnected from the internet and the larger I2P Network.

Use Cases

There are a few different use cases to consider:

  • Embedded Router: The Router is embedded in the same JVM process as the clients.
  • Localhost Router: The clients are running on the same machine as the Router. They connect to the Router via localhost.
  • Remote Router: The clients connect to a remote Router but all the clients are connected to the *same* I2P Router.

In each use-case we want all the clients to be able to communicate using the standard I2P Streaming API even if the Router is not connected to the internet.

Offline-to-Online Automatic Recovery

Today the I2P Router can automatically recover its connection to the internet. That is, if you're running a Router, disconnect from the internet and then reconnect, the Router will, eventually, recover its connection.

Ideally a Router that is connected to the internet, and then becomes temporarily disconnected, should be able to continue routing traffic between internal clients. The same Router should then be able to eventually recover its connection to the external network.

To support internal routing it should not be necessary to (re)start a Router in a special mode. This feature should be available by default.

comment:7 Changed 4 months ago by peekachoo

The I2P Router already seems to support a limited case of Offline Mode. What's interesting is that if the Router *thinks* it is online it will continue to route traffic between local destinations. You can test this by connecting to a Wifi Network and, even if that Wifi Network is not actually connected to the internet, the I2P Router will continue to function and all of our I2P Tests will continue to work. If you disconnect from the Wifi Network the I2P Router will stop routing traffic and our tests begin to fail.

It seems there is some code in the I2P Router that is used to determine whether the router is connected to the net or not and this decision feeds into the routing logic. Does anybody know where this "connectivity check" code/logic lives?

Note: See TracTickets for help on using tickets.