Fire up multiple routers in the same VM, all with their own RouterContext
(and all that entails). In addition, this creates a root I2PAppContext for
any objects not booted through one of the RouterContexts. Each of these
contexts are configured through a simple properties file (where the name=value
contained in them are used for the context's getProperty(name)).
Usage:
MultiRouter numberRouters
Each routerContext specified is used to boot up a single router. It is HIGHLY
recommended that those context files contain a few base env properties:
- loggerFilenameOverride=rN/logs/log-router-#.txt
- router.configLocation=rN/router.config
(where "rN" is an instance number, such as r0 or r9).
Additionally, two other properties might be useful:
- i2p.vmCommSystem=true
- i2p.encryption=off
The first line tells the router to use an in-VM comm system for sending
messages back and forth between routers (see net.i2p.transport.VMCommSystem),
and the second tells the router to stub out ElGamal, AES, and DSA code, reducing
the CPU load (but obviously making the router incapable of talking to things
that need the encryption enabled). To run a client app through a router that
has i2p.encryption=off, you should also add that line to the client's JVM
(for example,
java -Di2p.encryption=off -jar lib/i2ptunnel.jar
).
To make the router console work, either run from a directory containing
lib/, webapps/, docs/, etc., or point i2p.dir.base to a directory containing the
above.
The multirouter waits until all of the routers are shut down (which none will
do on their own, so as before, you'll want to kill the proc or ^C it).