* Reachability:

- Restrict peers requiring introducers from inbound tunnels,
        since it's slow and unreliable... and many of them advertise
        NTCP, which seems unlikely to work
      - Provide warning on summary bar if firewalled with inbound NTCP enabled
    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
      at startup (you didn't get any data unless you set the log level anyway)
    * oldstats.jsp: Don't put 2 decimal places on integer event counts
    * Remove the Internals link from the menu bar
    * i2psnark: Extend startup delay from 1 to 3 minutes
This commit is contained in:
zzz
2008-05-07 16:23:54 +00:00
parent 4049ff5167
commit 0bde8a24e4
8 changed files with 55 additions and 19 deletions

View File

@ -84,7 +84,7 @@ public class SnarkManager implements Snark.CompleteListener {
public boolean shouldUseOpenTrackers() { public boolean shouldUseOpenTrackers() {
return Boolean.valueOf(_config.getProperty(PROP_USE_OPENTRACKERS, DEFAULT_USE_OPENTRACKERS)).booleanValue(); return Boolean.valueOf(_config.getProperty(PROP_USE_OPENTRACKERS, DEFAULT_USE_OPENTRACKERS)).booleanValue();
} }
private int getStartupDelayMinutes() { return 1; } private int getStartupDelayMinutes() { return 3; }
public File getDataDir() { public File getDataDir() {
String dir = _config.getProperty(PROP_DIR); String dir = _config.getProperty(PROP_DIR);
if ( (dir == null) || (dir.trim().length() <= 0) ) if ( (dir == null) || (dir.trim().length() <= 0) )
@ -508,7 +508,7 @@ public class SnarkManager implements Snark.CompleteListener {
} else if (info.getPieces() <= 0) { } else if (info.getPieces() <= 0) {
return "No pieces in " + info.getName() + "? deleting it"; return "No pieces in " + info.getName() + "? deleting it";
} else if (info.getPieceLength(0) > 1*1024*1024) { } else if (info.getPieceLength(0) > 1*1024*1024) {
return "Pieces are too large in " + info.getName() + " (" + info.getPieceLength(0)/1024 + "KB, deleting it"; return "Pieces are too large in " + info.getName() + " (" + info.getPieceLength(0)/1024 + "KB), deleting it";
} else if (info.getTotalLength() > 10*1024*1024*1024l) { } else if (info.getTotalLength() > 10*1024*1024*1024l) {
System.out.println("torrent info: " + info.toString()); System.out.println("torrent info: " + info.toString());
List lengths = info.getLengths(); List lengths = info.getLengths();

View File

@ -124,7 +124,10 @@ public class SummaryHelper {
case CommSystemFacade.STATUS_DIFFERENT: case CommSystemFacade.STATUS_DIFFERENT:
return "ERR-SymmetricNAT"; return "ERR-SymmetricNAT";
case CommSystemFacade.STATUS_REJECT_UNSOLICITED: case CommSystemFacade.STATUS_REJECT_UNSOLICITED:
return "Firewalled"; if (_context.router().getRouterInfo().getTargetAddress("NTCP") != null)
return "WARN-Firewalled with Inbound TCP Enabled";
else
return "Firewalled";
case CommSystemFacade.STATUS_UNKNOWN: // fallthrough case CommSystemFacade.STATUS_UNKNOWN: // fallthrough
default: default:
return "Testing"; return "Testing";

View File

@ -34,8 +34,8 @@
<a href="logs.jsp">Logs</a> | <a href="logs.jsp">Logs</a> |
<a href="jobs.jsp">Jobs</a> | <a href="jobs.jsp">Jobs</a> |
<a href="graphs.jsp">Graphs</a> | <a href="graphs.jsp">Graphs</a> |
<a href="oldstats.jsp">Stats</a> | <a href="oldstats.jsp">Stats</a> <!-- |
<a href="oldconsole.jsp">Internals</a> <a href="oldconsole.jsp">Internals</a> -->
<% } %> <% } %>
<jsp:useBean class="net.i2p.router.web.NavHelper" id="navhelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.NavHelper" id="navhelper" scope="request" />
<jsp:setProperty name="navhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:setProperty name="navhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />

View File

@ -1,3 +1,19 @@
2008-05-07 zzz
* Reachability:
- Restrict peers requiring introducers from inbound tunnels,
since it's slow and unreliable... and many of them advertise
NTCP, which seems unlikely to work
- Provide warning on summary bar if firewalled with inbound NTCP enabled
* Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
at startup (you didn't get any data unless you set the log level anyway)
* oldstats.jsp: Don't put 2 decimal places on integer event counts
* Remove the Internals link from the menu bar
* i2psnark: Extend startup delay from 1 to 3 minutes
2008-05-06 welterde
* HTTP Proxy: Add i2jump.i2p jump service
2008-05-05 zzz 2008-05-05 zzz
* NetDb Stats: Cleanup of commented out stats * NetDb Stats: Cleanup of commented out stats
* Outbound message: * Outbound message:

View File

@ -17,7 +17,7 @@ import net.i2p.CoreVersion;
public class RouterVersion { public class RouterVersion {
public final static String ID = "$Revision: 1.548 $ $Date: 2008-02-10 15:00:00 $"; public final static String ID = "$Revision: 1.548 $ $Date: 2008-02-10 15:00:00 $";
public final static String VERSION = "0.6.1.33"; public final static String VERSION = "0.6.1.33";
public final static long BUILD = 2; public final static long BUILD = 3;
public static void main(String args[]) { public static void main(String args[]) {
System.out.println("I2P Router version: " + VERSION + "-" + BUILD); System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
System.out.println("Router ID: " + RouterVersion.ID); System.out.println("Router ID: " + RouterVersion.ID);

View File

@ -29,8 +29,7 @@ public class StatsGenerator {
public void generateStatsPage(Writer out) throws IOException { public void generateStatsPage(Writer out) throws IOException {
StringBuffer buf = new StringBuffer(16*1024); StringBuffer buf = new StringBuffer(16*1024);
buf.append("<h1>Router statistics</h1>"); buf.append("<h1>Router statistics</h1><hr />");
buf.append("<i><a href=\"/oldconsole.jsp\">console</a> | <a href=\"/oldstats.jsp\">stats</a></i><hr />");
buf.append("<form action=\"/oldstats.jsp\">"); buf.append("<form action=\"/oldstats.jsp\">");
buf.append("<select name=\"go\" onChange='location.href=this.value'>"); buf.append("<select name=\"go\" onChange='location.href=this.value'>");
out.write(buf.toString()); out.write(buf.toString());
@ -120,7 +119,7 @@ public class StatsGenerator {
buf.append(num(curFreq.getStrictAverageEventsPerPeriod())); buf.append(num(curFreq.getStrictAverageEventsPerPeriod()));
buf.append(" events (averaged "); buf.append(" events (averaged ");
buf.append(" using the lifetime of "); buf.append(" using the lifetime of ");
buf.append(num(curFreq.getEventCount())); buf.append(curFreq.getEventCount());
buf.append(" events)"); buf.append(" events)");
buf.append("<br />"); buf.append("<br />");
} }
@ -169,7 +168,7 @@ public class StatsGenerator {
buf.append(")"); buf.append(")");
} }
buf.append(" <i>events per period:</i> "); buf.append(" <i>events per period:</i> ");
buf.append(num(curRate.getLastEventCount())); buf.append(curRate.getLastEventCount());
long numPeriods = curRate.getLifetimePeriods(); long numPeriods = curRate.getLifetimePeriods();
if (numPeriods > 0) { if (numPeriods > 0) {
double avgFrequency = curRate.getLifetimeEventCount() / (double)numPeriods; double avgFrequency = curRate.getLifetimeEventCount() / (double)numPeriods;
@ -177,7 +176,7 @@ public class StatsGenerator {
buf.append(" (lifetime average: "); buf.append(" (lifetime average: ");
buf.append(num(avgFrequency)); buf.append(num(avgFrequency));
buf.append(", peak average: "); buf.append(", peak average: ");
buf.append(num(curRate.getExtremeEventCount())); buf.append(curRate.getExtremeEventCount());
buf.append(")"); buf.append(")");
} }
if (curRate.getSummaryListener() != null) { if (curRate.getSummaryListener() != null) {
@ -197,7 +196,7 @@ public class StatsGenerator {
buf.append("<li><b>lifetime average value:</b> "); buf.append("<li><b>lifetime average value:</b> ");
buf.append(num(curRate.getLifetimeAverageValue())); buf.append(num(curRate.getLifetimeAverageValue()));
buf.append(" over "); buf.append(" over ");
buf.append(num(curRate.getLifetimeEventCount())); buf.append(curRate.getLifetimeEventCount());
buf.append(" events<br /></li>"); buf.append(" events<br /></li>");
} }
} }

View File

@ -426,7 +426,8 @@ public class ProfileOrganizer {
/** /**
* Get the peers the transport layer thinks are unreachable, and * Get the peers the transport layer thinks are unreachable, and
* add in the peers with the SSU peer testing bug. * add in the peers with the SSU peer testing bug,
* and peers requiring introducers.
* *
*/ */
public List selectPeersLocallyUnreachable() { public List selectPeersLocallyUnreachable() {
@ -442,14 +443,28 @@ public class ProfileOrganizer {
if (_context.commSystem().wasUnreachable(peer)) if (_context.commSystem().wasUnreachable(peer))
l.add(peer); l.add(peer);
else { else {
// blacklist <= 0.6.1.32 SSU-only peers, they don't know if they are unreachable, // Blacklist <= 0.6.1.32 SSU-only peers, they don't know if they are unreachable,
// and we may not know either if they contacted us first, so assume they are // and we may not know either if they contacted us first, so assume they are.
// Also blacklist all peers requiring SSU introducers, because either
// a) it's slow; or
// b) it doesn't work very often; or
// c) in the event they are advertising NTCP, it probably won't work because
// they probably don't have a TCP hole punched in their firewall either.
RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer); RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
if (info != null) { if (info != null) {
String v = info.getOption("router.version"); String v = info.getOption("router.version");
// this only works if there is no 0.6.1.34!
if (v != null && (!v.equals("0.6.1.33")) && if (v != null && (!v.equals("0.6.1.33")) &&
v.startsWith("0.6.1.") && info.getTargetAddress("NTCP") == null) v.startsWith("0.6.1.") && info.getTargetAddress("NTCP") == null)
l.add(peer); l.add(peer);
else {
RouterAddress ra = info.getTargetAddress("SSU");
if (ra == null) continue;
// This is the quick way of doing UDPAddress.getIntroducerCount() > 0
Properties props = ra.getOptions();
if (props != null && props.getProperty("ihost0") != null)
l.add(peer);
}
} }
} }
} }

View File

@ -66,10 +66,13 @@ public class FIFOBandwidthLimiter {
_context.statManager().createRateStat("bwLimiter.pendingInboundRequests", "How many inbound requests are ahead of the current one (ignoring ones with 0)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l }); _context.statManager().createRateStat("bwLimiter.pendingInboundRequests", "How many inbound requests are ahead of the current one (ignoring ones with 0)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l });
_context.statManager().createRateStat("bwLimiter.outboundDelayedTime", "How long it takes to honor an outbound request (ignoring ones with that go instantly)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l }); _context.statManager().createRateStat("bwLimiter.outboundDelayedTime", "How long it takes to honor an outbound request (ignoring ones with that go instantly)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l });
_context.statManager().createRateStat("bwLimiter.inboundDelayedTime", "How long it takes to honor an inbound request (ignoring ones with that go instantly)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l }); _context.statManager().createRateStat("bwLimiter.inboundDelayedTime", "How long it takes to honor an inbound request (ignoring ones with that go instantly)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l });
_context.statManager().createRateStat("bw.sendBps1s", "How fast we are transmitting for the 1s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l }); if (_log.shouldLog(Log.WARN)) {
_context.statManager().createRateStat("bw.recvBps1s", "How fast we are receiving for the 1s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l }); // If you want to see these you better have the logging set at startup!
_context.statManager().createRateStat("bw.sendBps15s", "How fast we are transmitting for the 15s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l }); _context.statManager().createRateStat("bw.sendBps1s", "How fast we are transmitting for the 1s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l });
_context.statManager().createRateStat("bw.recvBps15s", "How fast we are receiving for the 15s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l }); _context.statManager().createRateStat("bw.recvBps1s", "How fast we are receiving for the 1s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l });
_context.statManager().createRateStat("bw.sendBps15s", "How fast we are transmitting for the 15s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l });
_context.statManager().createRateStat("bw.recvBps15s", "How fast we are receiving for the 15s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l });
}
_pendingInboundRequests = new ArrayList(16); _pendingInboundRequests = new ArrayList(16);
_pendingOutboundRequests = new ArrayList(16); _pendingOutboundRequests = new ArrayList(16);
_lastTotalSent = _totalAllocatedOutboundBytes; _lastTotalSent = _totalAllocatedOutboundBytes;