* 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:
zzz
2008-03-13 23:13:32 +00:00
parent 4fa4357bf1
commit e7cdb965ba
9 changed files with 66 additions and 62 deletions

View File

@ -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

View File

@ -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>
&#149;
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>
&#149;
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>
&#149;
2008-03-09: <b>0.6.1.32 Released</b>
@ -24,7 +41,7 @@ You may wish to adjust your limits on
<p>
&#149;
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.
&#149;
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>

View File

@ -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

View File

@ -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);

View File

@ -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());

View File

@ -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;
}

View File

@ -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);

View File

@ -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;

View File

@ -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
*