* ProfileOrganizer:
- Use more recent stats to calculate integrationory.txt - Show that fast peers are also high-capacity on profiles.jsp * readme.html: Update Syndie link * TunnelPool: Update comments * netDb: Report 1-2h uptime as 90m to further frustrate tracking, get rid of the 60s tunnel stats (effective as of .33 to provide cover)
This commit is contained in:
10
history.txt
10
history.txt
@ -1,4 +1,14 @@
|
||||
2008-03-14 zzz
|
||||
* ProfileOrganizer:
|
||||
- Use more recent stats to calculate integrationory.txt
|
||||
- Show that fast peers are also high-capacity on profiles.jsp
|
||||
* readme.html: Update Syndie link
|
||||
* TunnelPool: Update comments
|
||||
* netDb: Report 1-2h uptime as 90m to further frustrate tracking,
|
||||
get rid of the 60s tunnel stats
|
||||
(effective as of .33 to provide cover)
|
||||
|
||||
2008-03-13 zzz
|
||||
* Floodfill Search:
|
||||
- Fix a bug that caused a single FloodfillOnlySearchJob
|
||||
instance to be run multiple times, with unpredictable
|
||||
|
72
news.xml
72
news.xml
@ -9,6 +9,23 @@
|
||||
publicurl="http://dev.i2p.net/pipermail/i2p/2005-July/000826.html"
|
||||
anonlogs="http://i2p/Nf3ab-ZFkmI-LyMt7GjgT-jfvZ3zKDl0L96pmGQXF1B82W2Bfjf0n7~288vafocjFLnQnVcmZd~-p0-Oolfo9aW2Rm-AhyqxnxyLlPBqGxsJBXjPhm1JBT4Ia8FB-VXt0BuY0fMKdAfWwN61-tj4zIcQWRxv3DFquwEf035K~Ra4SWOqiuJgTRJu7~o~DzHVljVgWIzwf8Z84cz0X33pv-mdG~~y0Bsc2qJVnYwjjR178YMcRSmNE0FVMcs6f17c6zqhMw-11qjKpY~EJfHYCx4lBWF37CD0obbWqTNUIbL~78vxqZRT3dgAgnLixog9nqTO-0Rh~NpVUZnoUi7fNR~awW5U3Cf7rU7nNEKKobLue78hjvRcWn7upHUF45QqTDuaM3yZa7OsjbcH-I909DOub2Q0Dno6vIwuA7yrysccN1sbnkwZbKlf4T6~iDdhaSLJd97QCyPOlbyUfYy9QLNExlRqKgNVJcMJRrIual~Lb1CLbnzt0uvobM57UpqSAAAA/meeting141"
|
||||
publiclogs="http://www.i2p.net/meeting141" />
|
||||
<p>
|
||||
•
|
||||
2008-03-14: <b><a href="http://forum.i2p/">forum.i2p</a> is Temporarily Down</b>
|
||||
</p><p>
|
||||
Use
|
||||
<a href="http://codevoid.i2p/forum">codevoid.i2p/forum</a>
|
||||
as an alternate.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
•
|
||||
2008-03-14: <b>krabs.i2p</a> Outproxy is Temporarily Down</b>
|
||||
</p><p>
|
||||
Use new outproxy false.i2p
|
||||
as an alternate - must be in your hosts.txt.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
•
|
||||
2008-03-09: <b>0.6.1.32 Released</b>
|
||||
@ -24,7 +41,7 @@ You may wish to adjust your limits on
|
||||
|
||||
<p>
|
||||
•
|
||||
2008-02-29: <b>Upcoming 0.6.1.32 Release</b>
|
||||
2008-02-29: <b>Upgrading from 0.6.1.31</b>
|
||||
</p><p>
|
||||
If you upgraded from 0.6.1.30 to 0.6.1.31, you may wish to take advantage
|
||||
of the new round-robin update downloading when .32 is released. This is optional.
|
||||
@ -40,57 +57,8 @@ If you already have three Update URLs, you do not have to do anything.
|
||||
•
|
||||
2008-02-05: <b>Upgrading from 0.6.1.30 and Earlier Releases</b>
|
||||
</p><p>
|
||||
Since i2p's lead developer
|
||||
<a href="http://dreamtheaterfan.i2p/jrandom-awol.html">has gone AWOL</a>,
|
||||
we do not have his update signing key or write access to
|
||||
<a href="http://www.i2p/">www.i2p</a> or
|
||||
<a href="http://dev.i2p/">dev.i2p</a>.
|
||||
Complication and zzz have generated new signing keys, and they and Amiga are providing
|
||||
update file hosting. These changes must be configured in your router to take effect.
|
||||
</p><p>
|
||||
Make the following configuration changes and your router will automatically install
|
||||
the latest release.
|
||||
</p><p>
|
||||
We recommend the automated process as it will verify the key of the signed update file.
|
||||
If you do not make these changes,
|
||||
you may manually download the i2pupdate.zip file from
|
||||
<a href="http://www.i2p2.i2p/download.html">www.i2p2.i2p/download</a>.
|
||||
<ol><li>
|
||||
On
|
||||
<a href="configupdate.jsp">configupdate.jsp</a>:
|
||||
</li><ol type="a"><li>
|
||||
Change the News URL to: http://complication.i2p/news.xml
|
||||
</li><li>
|
||||
Select ONE of the following new Update URLs at random and enter it into the Update URL box:
|
||||
<br />http://amiga.i2p/i2p/i2pupdate.sud
|
||||
<br />http://complication.i2p/i2p/i2pupdate.sud
|
||||
<br />http://stats.i2p/i2p/i2pupdate.sud
|
||||
</li><li>
|
||||
Check the box "Update through the eepProxy?"
|
||||
</li><li>
|
||||
Click "Save"
|
||||
</li></ol>
|
||||
<li>
|
||||
On
|
||||
<a href="configadvanced.jsp">configadvanced.jsp</a>:
|
||||
<ol type="a"><li>
|
||||
Add the following line:
|
||||
<br />
|
||||
<textarea rows="1" cols="80" readonly="readonly">router.trustedUpdateKeys=W4kJbnv9KSVwbnapV7SaNW2kMIZKs~hwL0ro9pZXFo1xTwqz45nykCp1HM7sAKYDZay5z1HvYYOl9CNVz00xF03KPU9RUCVxhDZ1YXhZIskPKjUPUsCIpE~Z1C~N9KSEV6~2stDlBNH10VZ4T0X1TrcXwb3IBXliWo2y2GAx~Ow=,lT54eq3SH0TWWwQ1wgH6XPelIno7wH7UfiZOpQg-ZuxdNhc4UjjrohKdKZqfswt1ANPnmOlMewLGBESl7kJB9c5sByz~IOlNyz5BMLRC~R~ZC9QI4WXwUBYW8BhYO2mkvtdOrcy690lDkwzdf5xLxlCBpQlTaLYzQVjVWBcvbCA=,JHFA0yXUgKtmhajXFZH9Nk62OPRHbvvQHTi8EANV-D~3tjLjaz9p9cs6Fs8W3FSLfUwsQeFg7dfVSQQZga~1jMjboo94vIcm3j6XbW4mbcorVQ74uPjd8EA1AQhJ6bBTxDAFk~6fVDOdhHT0Wo5CcUn7v8bAYY3x3UWiL8Remx0=</textarea>
|
||||
</li><li>
|
||||
Click "Apply"
|
||||
</li></ol>
|
||||
<li>
|
||||
You are now ready to automatically receive the release update file,
|
||||
either by setting your update policy to "download and install" or by clicking on the
|
||||
"update available" link when it appears.
|
||||
</li></li></ol>
|
||||
</p><p>
|
||||
If you would like to verify the trusted update keys, they are also
|
||||
<a href="http://stats.i2p/i2p/signingkeys.html">posted and signed here</a>.
|
||||
Thank you for your support during this transition. For help please contact us on #i2p.
|
||||
</p><p>
|
||||
Amiga, Complication, welterde, zzz
|
||||
Full instructions are posted at
|
||||
<a href="http://www.i2p2.i2p/upgrade-0.6.1.30.html">www.i2p2.i2p/upgrade-0.6.1.30.html</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
@ -3,7 +3,7 @@ grow over the next few minutes and you'll see a "shared clients" local destinati
|
||||
on the left (if not, <a href="#trouble">see below</a>). Once those show up,
|
||||
you can:</p>
|
||||
<ul>
|
||||
<li><b>blog anonymously</b> - check out <a href="http://syndie.i2p/">Syndie</a></li>
|
||||
<li><b>blog anonymously</b> - check out <a href="http://syndie.i2p2.de/">Syndie</a></li>
|
||||
<li><b>chat anonymously</b> - fire up your own IRC client and connect to the
|
||||
server at <b>localhost port 6668</b>. This points at one of two anonymously hosted
|
||||
IRC servers, but neither you nor they know where the other is.</li>
|
||||
@ -55,7 +55,7 @@ Detailed instructions for starting your eepsite are on
|
||||
<p>Be patient - I2P may be slow to start the first time as it searches for peers.
|
||||
If, after 30 minutes, your Active: connected/recent count has less than 10 connected
|
||||
peers, you should open port 8887 on your firewall for better connectivity.
|
||||
If you cannot see any eepsites at all (even <a href="http://www.i2p2.i2p">www.i2p2.i2p</a>),
|
||||
If you cannot see any eepsites at all (even <a href="http://www.i2p2.i2p/">www.i2p2.i2p</a>),
|
||||
be sure your browser proxy is set to localhost port 4444.
|
||||
You may also want to review the information on the
|
||||
<a href="http://www.i2p2.i2p/">I2P website</a>, post up messages to the
|
||||
|
@ -17,7 +17,7 @@ import net.i2p.CoreVersion;
|
||||
public class RouterVersion {
|
||||
public final static String ID = "$Revision: 1.548 $ $Date: 2008-02-10 15:00:00 $";
|
||||
public final static String VERSION = "0.6.1.32";
|
||||
public final static long BUILD = 5;
|
||||
public final static long BUILD = 6;
|
||||
public static void main(String args[]) {
|
||||
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
|
||||
System.out.println("Router ID: " + RouterVersion.ID);
|
||||
|
@ -128,6 +128,7 @@ public class StatisticsManager implements Service {
|
||||
if (false)
|
||||
stats.putAll(_context.profileManager().summarizePeers(_publishedStats));
|
||||
|
||||
boolean commentMeOutInDot33 = RouterVersion.VERSION.equals("0.6.1.32");
|
||||
includeThroughput(stats);
|
||||
//includeRate("router.invalidMessageTime", stats, new long[] { 10*60*1000 });
|
||||
//includeRate("router.duplicateMessageId", stats, new long[] { 24*60*60*1000 });
|
||||
@ -162,7 +163,11 @@ public class StatisticsManager implements Service {
|
||||
|
||||
//includeRate("transport.sendProcessingTime", stats, new long[] { 60*60*1000 });
|
||||
//includeRate("jobQueue.jobRunSlow", stats, new long[] { 10*60*1000l, 60*60*1000l });
|
||||
if (commentMeOutInDot33) { // get rid of 60s stats
|
||||
includeRate("crypto.elGamal.encrypt", stats, new long[] { 60*1000, 60*60*1000 });
|
||||
} else {
|
||||
includeRate("crypto.elGamal.encrypt", stats, new long[] { 60*60*1000 });
|
||||
}
|
||||
includeRate("tunnel.participatingTunnels", stats, new long[] { 5*60*1000, 60*60*1000 });
|
||||
//includeRate("tunnel.testSuccessTime", stats, new long[] { 10*60*1000l });
|
||||
includeRate("client.sendAckTime", stats, new long[] { 60*60*1000 }, true);
|
||||
@ -174,12 +179,15 @@ public class StatisticsManager implements Service {
|
||||
//includeRate("stream.con.receiveDuplicateSize", stats, new long[] { 60*60*1000 });
|
||||
|
||||
// Round smaller uptimes to 1 hour, to frustrate uptime tracking
|
||||
// Round 2nd hour to 90m since peers use 2h minimum to route
|
||||
long publishedUptime = _context.router().getUptime();
|
||||
if (publishedUptime < 60*60*1000) publishedUptime = 60*60*1000;
|
||||
else if (publishedUptime < 2*60*60*1000 && !commentMeOutInDot33) publishedUptime = 90*60*1000;
|
||||
|
||||
stats.setProperty("stat_uptime", DataHelper.formatDuration(publishedUptime));
|
||||
//stats.setProperty("stat__rateKey", "avg;maxAvg;pctLifetime;[sat;satLim;maxSat;maxSatLim;][num;lifetimeFreq;maxFreq]");
|
||||
|
||||
if (commentMeOutInDot33) { // get rid of 60s stats
|
||||
includeRate("tunnel.buildRequestTime", stats, new long[] { 60*1000, 10*60*1000 });
|
||||
//includeRate("tunnel.decryptRequestTime", stats, new long[] { 60*1000, 10*60*1000 });
|
||||
includeRate("tunnel.buildClientExpire", stats, new long[] { 60*1000, 10*60*1000 });
|
||||
@ -194,6 +202,18 @@ public class StatisticsManager implements Service {
|
||||
|
||||
includeRate("tunnel.rejectOverloaded", stats, new long[] { 60*1000, 10*60*1000 });
|
||||
includeRate("tunnel.acceptLoad", stats, new long[] { 60*1000, 10*60*1000 });
|
||||
} else {
|
||||
includeRate("tunnel.buildRequestTime", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.buildClientExpire", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.buildClientReject", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.buildClientSuccess", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.buildExploratoryExpire", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.buildExploratoryReject", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.buildExploratorySuccess", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.rejectTimeout", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.rejectOverloaded", stats, new long[] { 10*60*1000 });
|
||||
includeRate("tunnel.acceptLoad", stats, new long[] { 10*60*1000 });
|
||||
}
|
||||
|
||||
if (FloodfillNetworkDatabaseFacade.isFloodfill(_context.router().getRouterInfo())) {
|
||||
stats.setProperty("netdb.knownRouters", ""+_context.netDb().getKnownRouters());
|
||||
|
@ -18,7 +18,11 @@ public class IntegrationCalculator extends Calculator {
|
||||
}
|
||||
|
||||
public double calc(PeerProfile profile) {
|
||||
// give more weight to recent counts
|
||||
long val = profile.getDbIntroduction().getRate(24*60*60*1000l).getCurrentEventCount();
|
||||
val += 2 * 4 * profile.getDbIntroduction().getRate(6*60*60*1000l).getCurrentEventCount();
|
||||
val += 4 * 24 * profile.getDbIntroduction().getRate(60*60*1000l).getCurrentEventCount();
|
||||
val /= 7;
|
||||
val += profile.getIntegrationBonus();
|
||||
return val;
|
||||
}
|
||||
|
@ -371,7 +371,7 @@ public class PeerProfile {
|
||||
if (_commError == null)
|
||||
_commError = new RateStat("commErrorRate", "how long between communication errors with the peer (e.g. disconnection)", group, new long[] { 60*1000l, 10*60*1000l, 60*60*1000l, 24*60*60*1000 } );
|
||||
if (_dbIntroduction == null)
|
||||
_dbIntroduction = new RateStat("dbIntroduction", "how many new peers we get from dbSearchReplyMessages or dbStore messages", group, new long[] { 60*60*1000l, 24*60*60*1000l, 7*24*60*60*1000l });
|
||||
_dbIntroduction = new RateStat("dbIntroduction", "how many new peers we get from dbSearchReplyMessages or dbStore messages", group, new long[] { 60*60*1000l, 6*60*60*1000l, 24*60*60*1000l });
|
||||
|
||||
if (_tunnelHistory == null)
|
||||
_tunnelHistory = new TunnelHistory(_context, group);
|
||||
|
@ -104,7 +104,7 @@ class ProfileOrganizerRenderer {
|
||||
buf.append("<td>");
|
||||
|
||||
switch (tier) {
|
||||
case 1: buf.append("Fast"); break;
|
||||
case 1: buf.append("Fast, High Capacity"); break;
|
||||
case 2: buf.append("High Capacity"); break;
|
||||
case 3: buf.append("Not Failing"); break;
|
||||
default: buf.append("Failing"); break;
|
||||
|
@ -484,15 +484,16 @@ public class TunnelPool {
|
||||
/**
|
||||
* This algorithm builds based on the previous average length of time it takes
|
||||
* to build a tunnel. This average is kept in the _buildRateName stat.
|
||||
* It is a separate stat for each pool, since in and out building use different methods,
|
||||
* It is a separate stat for each type of pool, since in and out building use different methods,
|
||||
* as do exploratory and client pools,
|
||||
* and each pool can have separate length and length variance settings.
|
||||
* We add one minute to the stat for safety.
|
||||
* We add one minute to the stat for safety (two for exploratory tunnels).
|
||||
*
|
||||
* We linearly increase the number of builds per expiring tunnel from
|
||||
* 1 to PANIC_FACTOR as the time-to-expire gets shorter.
|
||||
*
|
||||
* The stat will be 0 for first 10m of uptime so we will use the conservative algorithm
|
||||
* further below instead. It will take about 30m of uptime to settle down.
|
||||
* The stat will be 0 for first 10m of uptime so we will use the older, conservative algorithm
|
||||
* below instead. This algorithm will take about 30m of uptime to settle down.
|
||||
* Or, if we are building more than 33% of the time something is seriously wrong,
|
||||
* we also use the conservative algorithm instead
|
||||
*
|
||||
@ -515,7 +516,7 @@ public class TunnelPool {
|
||||
avg = (int) ( TUNNEL_LIFETIME * r.getAverageValue() / wanted);
|
||||
}
|
||||
|
||||
if (avg > 0 && avg < TUNNEL_LIFETIME / 3) {
|
||||
if (avg > 0 && avg < TUNNEL_LIFETIME / 3) { // if we're taking less than 200s per tunnel to build
|
||||
final int PANIC_FACTOR = 4; // how many builds to kick off when time gets short
|
||||
avg += 60*1000; // one minute safety factor
|
||||
if (_settings.isExploratory())
|
||||
@ -644,6 +645,7 @@ public class TunnelPool {
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for the old conservative algorithm.
|
||||
* This is the big scary function determining how many new tunnels we want to try to build at this
|
||||
* point in time, as used by the BuildExecutor
|
||||
*
|
||||
|
Reference in New Issue
Block a user