Commit Graph

5521 Commits

Author SHA1 Message Date
zzz
9c677eb465 SSU: Enable RelayRequest over IPv6
This supports IPv6 introducers.
This requires that Alice (the requester) include the IPv4 address in the RelayRequest
when sent over IPv6, and that Bob (the introducer) uses that address instead of
the source address.
IPv6 address will be published in ihost[0-2].
This was specified as of 0.9.24 but never implemented by Java or i2pd.
Bob-Charlie and Alice-Charlie comms must still be over IPv4.
WIP, not fully tested.
IPv6 introductions is part 2, TBD.
ref: http://zzz.i2p/topics/3060
2021-02-25 06:34:57 -05:00
zzz
c609e43d90 Transports: Adjust conn limits for some platforms 2021-02-25 06:25:55 -05:00
zzz
e63e9c58a8 SSU: Avoid outbound connections to routers that disconnect quickly 2021-02-24 11:10:40 -05:00
zzz
6e2292354a Build: More prep for different release and API versions
Use API version as manifest Specification-Version
Use API version in I2CP
Reduce sybil penalty for version and banlist
2021-02-23 10:43:32 -05:00
zzz
58e5c55cfd SSU: Rename method to be more accurate 2021-02-23 10:17:12 -05:00
zzz
20e56c2e52 SSU: Optimize one-byte writes in PacketBuider 2021-02-23 10:12:33 -05:00
zzz
f076789915 Transports: Add 4/6 transport caps
WIP, disabled by default for now, to be enabled before relese
Add caps to NTCP2 when in hidden mode or firewalled
Add SSU address and caps when in hidden mode
Add 4 cap to introducer address
Other cases todo; ref: http://zzz.i2p/topics/3050

When hidden, store last IP address in config,
calling replaceCurrentExternalAddress(), and IP change event logging;
wasn't done before
2021-02-23 10:01:31 -05:00
zzz
fe43da82f2 Profiles: Disable peer test (ticket #2456) and tunnel test response time stat
Peer test tries only one peer every 5 minutes, and uses a store of
the peer's own router info, which is not helpful.
Peer test records its result as a dbLookup success/failure,
but for the peers that are not floodfill, this stat is useless.

The tunnel test is disabled by default except for hidden mode.
The tunnel test response time stat uses a large amount of memory (5 rates)
and has apparently never been used since it was added in 2004.
There's also a separate tunnel test time average variable, separate
from the stat, that is also unused.

Each is disabled with a separate hardcoded config,
pending evaluation of whether and how to make the tests useful
and where to effectively use the result for peer selection.
2021-02-21 10:31:34 -05:00
zzz
b656274c92 Router: Don't rekey previous ECIES every restart on ARM 2021-02-20 14:26:56 -05:00
zzz
b92d94ea04 Javadoc spelling 2021-02-18 10:48:21 -05:00
zzz
3bec2b5c73 I2NP: New build messages part 2 (prop. 157)
Rename ShortTunnelBuildReplyMessage to OutboundTunnelBuildReplyMessage (type 26)
Add InboundTunnelBuildMessage (type 27)
Add methods for plaintext record
Update readMessage() and writeMessageBody()
Fix calculateWrittenLength()
Update javadocs
WIP, untested, not hooked in yet
2021-02-18 10:30:51 -05:00
zzz
e14de8235f NTP: Year 2036 fixes (gitlab ticket #12) 2021-02-18 08:08:56 -05:00
zzz
89070163cd Reseed: Only log in event log if successful 2021-02-18 07:37:45 -05:00
zzz
b3f60402af 0.9.49 2021-02-17 10:11:58 -05:00
zzz
4fd9f6e9b2 Bump for review 2021-02-15 10:52:44 -05:00
zzz
c8471d5d9b NetDB: Ensure blind data is rewritten after updating expiration 2021-02-09 09:24:34 -05:00
zzz
745a9f083b NetDB: Only rewrite blind cache at shutdown if changed 2021-02-06 11:35:39 -05:00
zzz
d51a7ccf38 Router: Consolidate watchdog logging 2021-02-06 10:45:21 -05:00
zzz
5502eda407 NetDB: Ensure RI is published after netdb is initialized
Improve logic for publishing RI direct vs. through exploratory
Fix store failed job being called twice
2021-02-06 10:35:09 -05:00
zzz
eefd8b71ad NTCP: Don't publish saved local address when hidden 2021-02-06 09:52:41 -05:00
zzz
79d270e2d5 make git tunnel type 4 only 2021-02-05 11:26:02 -05:00
zzz
8d60d68e23 Util: Stub out yggdrasil address detection
WIP - not hooked in
2021-02-03 09:27:12 -05:00
zzz
56fabe31e2 Tunnels: Peer selection tweaks
Remove blanket unreachable test for inbound tunnels, replace with reachable test for IBGW only
Retain inbound reachable test for hidden routers
Retain inbound reachable test for first hour of uptime
Add outbound reachable test for first hour of uptime
Add locally-unreachable test for outbound tunnels (was inbound only)
Minor cleanups
Log tweaks
2021-02-03 08:40:46 -05:00
idk
fdb4ec7d7c Switch from 'host name' to 'hostname' 2021-02-01 23:12:49 -05:00
zzz
3314d4bf31 finals 2021-01-31 13:54:34 -05:00
zzz
20c7c8785b Router: Update list of hidden mode countries
List updated using the Freedom in the World Index 2020
Force hidden mode routers to LU
Don't publish stats in first hour of uptime
Add H.323 to invalid ports list
Improve crashed message in event log
2021-01-31 12:32:52 -05:00
zzz
af4c41ef08 UPnP: Race-proof the fix 2021-01-30 08:46:29 -05:00
zzz
33397433ac UPnP: Fix NPE (android gitlab ticket #1) 2021-01-30 08:35:33 -05:00
zzz
cb22f31d96 Tunnels: Update profiles for tunnel peers on corrupt message at endpoint 2021-01-24 09:38:03 -05:00
zzz
922178b2c7 SSU: Fix deadlock with router restart
http://zzz.i2p/topics/3036
2021-01-20 09:27:55 -05:00
idk
335409f1d2 Find and fix the bug which appears in 'https://old.reddit.com/r/i2p/search?q=console&restrict_sr=on&sort=relevance&t=all' a bunch of Reddit posts, due to a mistake in the Firefox Profile Installer which expected router.config to be in the (deprecated)Roaming application data, even though it was in the Local Application Data, and if it did not exist, created it. If the (deprecated)Roaming application data directory had a router.config file, then I2P attempted to use the Roaming application directory, and the user could end up with a router that had no client apps configured, resulting in a poor UX 2021-01-18 00:26:33 -05:00
zzz
91ebec15d5 NetDB: log/stat tweak 2021-01-17 09:51:49 -05:00
zzz
b17d321503 Ratchet: log tweaks 2021-01-17 09:47:04 -05:00
zzz
59969db16c Sybil: Limit stored analysis files if no console to view them
Reduce stored file time to 10 days
Min stored time is 2 * analysis interval
2021-01-17 09:32:23 -05:00
zzz
b68a5ea7fd Router: Fix up warning about no console for split config files
clean up multiple getContext() calls
2021-01-17 09:18:21 -05:00
zzz
ce7daaa02a Router: Limit max addresses in RI 2021-01-14 10:32:35 -05:00
zzz
b19999f95a Router: Move Sybil subsystem from console to router 2021-01-14 09:46:38 -05:00
zzz
92ecc9f8e8 Router: Log crashed event if old router.ping file is found at startup 2021-01-14 09:25:21 -05:00
zzz
aa2ba92db8 Router: Change default encryption type to ECIES-X25519 (proposal 156)
As of 0.9.49. 0.9.48-x dev builds will not rekey.
New installs only.
Existing install rekey probability: 1 in 128
To be increased in later releases, see proposal 156 for details.
2021-01-14 08:54:17 -05:00
zzz
bf29132898 Tunnels: Downgrade log error to warn 2021-01-12 09:49:09 -05:00
zzz
75734448c5 I2NP: Stub out new tunnel build messages (proposal 157)
WIP - not hooked in yet
2021-01-09 12:00:18 -05:00
zzz
aed1de84b8 SSU: Fix bandwidth estimator deadlock (ticket #2798)
Fix logging in SBE (bytes not packets)
2021-01-08 12:07:41 -05:00
zzz
ec89a80e80 Router: Disable reseeding and NTP in vmCommSystem 2021-01-07 11:04:56 -05:00
zzz
41c7b7382a SSU: Implement fast retransmit (ticket #2427)
This partially fixes the issue of packets not being retransmitted
before they expire in 10 seconds, introduced in 0.9.48 as reported by
jogger at http://zzz.i2p/topics/3003
Fast retransmit was also suggested by jogger as a solution and discussed in that thread.
This code is based on the requirements for TCP fast retransmit
as specified in RFC 5681 but cannot precisely follow the RFC
as UDP messages can be dropped without affecting later messages:
- nack counter is per-message, not per-connection
- some interactions with the retransmit timer when in fast retx mode
- msg expiration is currently 10s but max RTO is 60s
- interactions with individual fragment transmission implemented in 0.9.48-5
- this is a sender-side fix but it depends on far-end ack resend strategy

Maintain a local message sequence number and store
it in OMF, previously unused as codel is disabled
Removed acked messages from _outboundMessages as usual,
but stores message and seq. numbers in a LinkedHashMap,
so we may interpret additional acks as nacks.
Calculate the highest-acked seq. number for every incoming packet.
Marks messages older than highest acked as nacked
Fast-retransmits after 3 nacks
Window and SST adjustments per RFC 5681 sec. 2.4
Reduce resend ack quantity and timeout to improve odds of receiving "nacks"
Disable wakeup of OMF from IMF; should not be needed now that PS calls nudge()
PS.acked(partial) now returns true if any fragment was acked, not if complete
Log tweaks

Still todo: possible additional changes to ack resend strategy;
possible parameter adjustments including msg expiration;
confirm that OMF wakeup in IMF is not required;
further testing and cleanups;
take additional ideas from alternative proposal in MR !8;
stat tweaks;
find related tickets to close

Reviewed by and contains code from zlatinb in MR !8
This builds on several previous SSU improvements; see #2427 for a list.
ref: gitlab MRs !8 !9 !10 !11
2021-01-07 09:33:09 -05:00
zzz
888311e34f Build: Add translations to gradle build (part 1 - jars) 2021-01-03 09:08:21 -05:00
zzz
a481255adb Tunnels: Improve error handling of zero tunnel ID at OBEP
Reduce max time to defragment
Make logging of errors consistent
cleanups, stat tweaks
2021-01-02 09:57:27 -05:00
zzz
13bd5e4938 SSU: Remove router version check for random intro key, now that the release is out 2021-01-01 07:13:26 -05:00
zzz
2569123055 NetDB: Drop lookups with replies going to us
Extend lookup expire time
Cleanups
2020-12-31 08:37:04 -05:00
zzz
de43de17f6 Crypto: Only skip N mixHash for router messages
Still required for ECIES build replies; previous checkin broke it
Make a new pattern id for N without responses
Fixes ECIES build replies
2020-12-30 07:08:47 -05:00
zzz
62fce859b9 Ratchet: mixHash() not required after message for N pattern 2020-12-29 14:15:00 -05:00