Commit Graph

1412 Commits

Author SHA1 Message Date
emanuele-f
03281648b4 Reduce message verbosity 2019-06-10 01:42:25 +02:00
emanuele-f
a4a974c34d Supernode clean shutdown 2019-06-10 01:42:25 +02:00
emanuele-f
d247c0a73c Keep supernode communities in separate hash 2019-06-10 01:42:21 +02:00
emanuele-f
447c3ad8c3 Replace peers linked list with hash 2019-06-10 00:33:11 +02:00
emanuele-f
b5c59c0e56 Update uthash to version 2.1.0 2019-06-10 00:33:11 +02:00
emanuele-f
4eacea7d57 Little improvement 2019-06-10 00:32:38 +02:00
emanuele-f
f36814b152 Implement query peer to try p2p during send
When a lot of monodirection traffic is sent, p2p can be hard to
enstablish because a reply is needed in order to start the registration.
Now a sending peer can query the peer information via the supernode.

This is based on the following commits:
- 1236f37a70
- ad2d416510
- 5348671299
- b2806dcde8
2019-06-08 22:04:10 +02:00
emanuele-f
b36754eae0 Set last_p2p ib peer_set_p2p_confirmed 2019-06-08 21:41:28 +02:00
emanuele-f
3db1cab276 Split broadcast stats from other supernode stats 2019-06-08 18:49:47 +02:00
emanuele-f
0e6db6361e Fix connection stall when idle p2p refresh occurs
The edge received packets from the supernode and thought that the other
peer was still active, but the other peer had dropped the p2p connection
due to refresh
2019-06-08 17:50:48 +02:00
emanuele-f
f038f22a0b Fix too many registrations going on 2019-06-08 16:10:00 +02:00
emanuele-f
623a9e480c Improve log messages 2019-06-08 15:32:47 +02:00
emanuele-f
a89e6b913d Fix cmake build and add n2n 32bit DLL 2019-06-08 13:14:16 +02:00
Emanuele Faranda
90bcee24e5
Merge pull request #122 from fengdaolong/dev
eliminate compilation warnings
2019-06-03 16:50:19 +00:00
fengdaolong
69e3b49bec eliminate compilation warnings 2019-06-04 00:09:15 +08:00
emanuele-f
d76cb64d0f Fix seed debug print 2019-06-03 10:16:42 +02:00
lucaderi
86870a781e Removed PRIx64, a C99 feature 2019-06-03 07:43:49 +02:00
emanuele-f
f33907ebd8 Fix seed debug print on 32bit platforms 2019-06-03 00:40:35 +02:00
emanuele-f
41e9e04083 Fix invalid service enabled 2019-05-31 10:33:36 +02:00
Emanuele Faranda
61799a96ae
Merge pull request #110 from realjiangms/fix_reliable_punch
Fix supernode handling REGISTER message from edge and let edge ask su…
2019-05-23 14:25:20 +00:00
yunbox
f48c170c26 Fix supernode handling REGISTER message from edge and let edge ask supernode to forward REGISTER message in case of non-p2p-reflection.
This is reliable way to PUNCH UDP HOLE (following STUN spec)
2019-05-23 19:24:27 +08:00
emanuele-f
3aec02d3e6 Fix unidirectional P2P connection due to pending registration
If A is directly available and B is NATted and B sends the first message to A via the supernode S,
A will try to register to B via the port used by B to talk to S. This will not work as B is NAT-ted,
so A must discard such pending registration as soon as it receives a P2P Registration from B.
2019-05-23 00:46:29 +02:00
emanuele-f
fb813e5438 Fix "invalid transop ID" when encryption is disabled 2019-05-22 23:30:05 +02:00
emanuele-f
52d33ed880 Fix missing destination MAC in REGISTER preventing proper P2P
As explained in #109
2019-05-22 23:04:27 +02:00
Jiang Zihao
0edca7e16a Fix purge_expired_registrations to accept passed-in last_purge instead of static function var. 2019-05-22 22:46:23 +02:00
emanuele-f
59011308b2 Ignore invalid community when not received from supernode
The packet may be received from a multicast registration from a local peer.

Fixes #107
2019-05-22 22:40:42 +02:00
emanuele-f
381c795af5 Lower registration timeout to 1 minute 2019-05-22 22:21:26 +02:00
emanuele-f
04226c09c8 Fix compilation warnings and little leak 2019-05-21 22:53:55 +02:00
emanuele-f
bc904cfbcc Skip localhost received sockets 2019-05-06 00:40:26 +02:00
emanuele-f
e2861e5f71 Fix send error in peer registration refresh 2019-05-06 00:08:08 +02:00
emanuele-f
49fd9fc5da Discard idle known_peers to avoid connection blocking on disconnection
Fixes #103
2019-05-05 23:48:48 +02:00
emanuele-f
824b45a808 Add linux termination handler and print stats on shutdown 2019-05-05 21:47:50 +02:00
emanuele-f
d5387945b4 Add the -i option to specify registration interval on edge nodes
Registration is bound to UDP NAT hole punching, so the edges should choose their own value.
2019-05-05 21:24:53 +02:00
emanuele-f
856dbae44c Cosmetic changes to improve edge registration tracing 2019-05-05 19:09:51 +02:00
Luca Deri
fbc3754601 Compilation fix 2019-05-05 10:08:21 +02:00
Emanuele Faranda
87bf4ca298
Merge pull request #100 from emanuele-f/transop-rework
Rework transops and api
2019-05-04 19:14:01 +00:00
Luca Deri
18388c8e05 Added service dependency 2019-05-02 09:22:33 +02:00
emanuele-f
c89ece71ca Code rework changes
- Remove keyschedule leftover and adapt to new API
- Fix cleanup functions
- Remove unused random_device_mac
2019-04-27 15:55:07 +02:00
emanuele-f
f577d997a7 Drop keyschedule support
- Legacy features are now moved to the legacy directory with readme
- Keyschedule feature is not supported anymore
2019-04-27 12:42:06 +02:00
emanuele-f
e757f94efa Initial code rework (wip)
- The edge structure is now opaque
- The configuration is now exposed via an API
- Code cleanup: using multiple transops at once is not supported anymore
2019-04-27 01:56:57 +02:00
emanuele-f
08b992cbb7 Add more detailed error message when TAP open fails
Closes #94
2019-04-24 01:02:36 +02:00
emanuele-f
fc16352198 Add decryption test in benchmark 2019-04-22 01:39:09 +02:00
emanuele-f
c702ca8686 Move AES IV out of struct sa_aes 2019-04-22 01:24:58 +02:00
emanuele-f
84593a2254 memcpy fix 2019-04-16 02:23:01 +02:00
emanuele-f
bb07f0426e Properly initialize AES IV and hash the AES key
This implements the changes discussed in #68 and #72.
This breaks compatibility with the previous AES implementation.

This also fixes two problems reported by valgrind:

==4887== Invalid write of size 2
==4887==    at 0x483E9DB: memmove (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4887==    by 0x10E37F: setup_aes_key (transform_aes.c:378)
==4887==    by 0x10E451: add_aes_key (transform_aes.c:401)
==4887==    by 0x10ED10: transop_aes_setup_psk (transform_aes.c:580)
==4887==    by 0x10A547: main (benchmark.c:92)
==4887==  Address 0x4d574a0 is 0 bytes after a block of size 16 alloc'd
==4887==    at 0x4839B65: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4887==    by 0x10E337: setup_aes_key (transform_aes.c:374)
==4887==    by 0x10E451: add_aes_key (transform_aes.c:401)
==4887==    by 0x10ED10: transop_aes_setup_psk (transform_aes.c:580)
==4887==    by 0x10A547: main (benchmark.c:92)

==13057== Use of uninitialised value of size 8
==13057==    at 0x49023B3: ??? (in /usr/lib/libcrypto.so.1.1)
==13057==    by 0x490346A: AES_cbc_encrypt (in /usr/lib/libcrypto.so.1.1)
==13057==    by 0x11270A: transop_encode_aes (transform_aes.c:230)
==13057==    by 0x10F5CD: send_packet2net (edge_utils.c:1224)
==13057==    by 0x10F813: readFromTAPSocket (edge_utils.c:1278)
==13057==    by 0x1106A8: run_edge_loop (edge_utils.c:1596)
==13057==    by 0x10B9F7: main (edge.c:701)
2019-04-16 02:09:13 +02:00
emanuele-f
d689691599 n2n.h cleanup 2019-04-14 18:08:51 +02:00
emanuele-f
3149a77753 Replace fprintf with traceEvent 2019-04-14 17:33:57 +02:00
emanuele-f
49d5ecf2a8 Reduce duplicated code in quick_edge_init 2019-04-14 17:21:47 +02:00
emanuele-f
50bc1492e2 Remove unnecessary structures in AES encryption
This undoes most of the changes made in 37233553a4 as the problem with the drops was only mitigated.
The actual fix for the dropped packets was in e989f475a1 and the invalid initialization was the root cause
2019-04-12 00:23:20 +02:00
emanuele-f
e3951631b9 Improve benchmark
Sample on i3 2GHz:

Run [transop_null] for 3s (512 bytes):   	    11203585 packets	  3734.5 Kpps	  1912.1 MB/s
Run [transop_twofish] for 3s (512 bytes):   	       60705 packets	    20.2 Kpps	    10.4 MB/s
Run [transop_aes] for 3s (512 bytes):   	      467937 packets	   156.0 Kpps	    79.9 MB/s
2019-04-11 00:46:34 +02:00