1
0
mirror of https://github.com/matrix-org/pinecone.git synced 2026-10-24 11:59:18 +03:00
Commit Graph

261 Commits

Author SHA1 Message Date
Neil Alexander
7ed96d03bd Merge branch 'main' into integration-tests 2022-08-25 12:45:43 +01:00
0x1a8510f2
f106cfa910 Implement (*SessionProtocol).Close() (#60)
* Fix error message after switching from utp to quic

* Implement (*SessionProtocol).Close()

* Update deps

* Handle repeat calls to (*SessionProtocol).Close()
Based on https://github.com/lucas-clemente/quic-go/blob/master/server.go#L283

* Update deps again and fix related issues

* Use sync.Once instead of sync.Mutex+bool

Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2022-08-25 12:45:29 +01:00
Neil Alexander
df478f4d17 Fix accept errors in pinecone standalone (#30) 2022-08-25 12:43:16 +01:00
Neil Alexander
0905dfd337 Don't panic if we can't start multicast (cough Android cough) 2022-08-25 12:32:28 +01:00
Till
b7a830c08f Update quic-go to v0.28.1 (#62) 2022-08-03 10:38:10 +01:00
devonh
548f79f87e Sim bandwidth reporting (#59)
* Sim - update route graph to allow for showing a variety of analytics

* Sim - stub in network bandwidth graphs

* Sim - control graph update rate

* Sim - add bandwidth analytics

* Sim - add bandwidth analytics

* Sim - cleanup bandwidth reporting time

* Sim - refine bandwidth graphing

* Remove unnecessary variable initialization

Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2022-07-27 15:34:51 +00:00
devonh
c511735401 Sim - fix route table size event emission (#58) 2022-07-27 14:52:24 +01:00
devonh
2b04d9c00f Fix sim ping deadlock by adding router read deadline (#55)
* Sim - only test pings between regular nodes (not adversaries)

* Sim - recalculate graph used for stretch when appropriate

* Set read deadline to prevent sim deadlock

* Cleanup read deadline

* Move read deadline behind router actor access

* Change read deadline to be atomic

Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2022-07-12 21:11:03 +00:00
Neil Alexander
1ce778fcde Soft-SNEK (#43)
* Initial soft-state testing

* Fix `pineconeip`

* Try raising the intervals a bit

* Tighter expiry

* Tweaks

* Try to speed up convergence but reduce idle noise

* More tweaks

* Handle disconnections on destination ports, tweak next-hops

* All traffic is either bootstrap or not, more tweaking

* Protocol calming, loop detection, bootstrap signatures

* Tidy up sim

* Fix unit test

* Don't drop pong responses as looping traffic

* Remove unused snake path id

* Remove unused variable from nextHopsSNEK

* Unassign setup acks capability from soft state capabilites

* Cleanup comments to reflect new softstate logic

* Remove unused candidate variable from state

* Update sim and events to reflect softstate changes

* Update wireshark dissector to match softstate frames

* Add unit test for snake bootstrap

* Fix incorrect comment about bootstrap forwarding conditions

* Add `queue` interface

* Initial docs update for softstate algorithm

* Softstate doc updates

* Fix logic for selecting lowest latency links

* Update docs with watermark information (#52)

* Update docs with watermark information

* Further clarifications to watermark docs

* Fix `pinecone.lua`

Co-authored-by: Devon Hudson <devonhudson@librem.one>
v0.9.0
2022-07-08 14:52:11 +01:00
devonh
c05f24e907 Remove ping frames from wireshark dissector (#48) 2022-06-08 16:43:31 +00:00
devonh
d764a8245a Sim - add basic snake route info to the sim (#54)
* Sim - add snake route info to the sim

* Add table size info to sim node hover text

* Sim - add routing table size histogram

* Add integrity check to chart lib
2022-06-08 16:40:22 +00:00
devonh
ee6846df1c Update docs reference in readme (#50) 2022-05-25 17:06:45 +01:00
devonh
6cb476893a Transition docs to github pages (#49)
* Transition docs to github pages

* Add docs tag to readme

* Add license and matrix tags to readme

* Remove docs autogenerated content
2022-05-13 14:27:39 +00:00
devonh
9afe5eda9b Fix simulator ping convergence (#46)
* Sim - limit ping worker count to prevent overfilling peer queues

* Log when dropping frames due to a full queue

* Add proper logging to the queues

* Fix queue unit test
2022-05-11 16:53:03 +00:00
devonh
32c8e0c090 Remove pings from base protocol (#47)
* Remove pings from base protocol

* Add new sim ping file

* Remove unnecessary pointer redirects

* Cleanup peer coords logic

* Rename peer lookup function

* Add comment describing peer lookup
2022-05-11 16:19:45 +00:00
Neil Alexander
7c0179e94a Add queue interface 2022-04-29 14:54:00 +01:00
devonh
3237a98f74 Sim - add node pinging with convergence and stretch data (#44)
* Stub in node ping toggle ui

* Sim - stub in api commands for ping toggling

* Sim - hookup basic pinging

* Sim - sync clients to server ping state

* Sim - better sync ui ping state to server

* Sim - flush out websocket events for pinging

* Sim - add snek and tree convergence data

* Sim - report stretch values

* Sim - add printout for total network stretch
2022-04-27 14:17:14 +00:00
devonh
e0871e2e39 Change capability flags to be a proper bitmask (#45) 2022-04-26 16:16:10 +00:00
devonh
76d7c8b1a8 Remove duplicate coordinate info from frames (#39)
* Remove duplicate coordinate info from frames

* Update unit tests to match new frame layouts

* Remove frame ID offset for ping frames

* Update wireshark dissector to match new frame layouts
2022-04-26 15:27:01 +00:00
devonh
c600e7aae8 Sim - add url anchors so refreshing returns to the same view (#42) 2022-04-14 14:51:24 +01:00
Neil Alexander
f686361e6d Allow specifying custom http.Client to connection manager for WebSocket connections 2022-04-11 14:28:53 +01:00
Neil Alexander
e80b089669 Exponential backoffs in connection manager 2022-04-11 14:18:33 +01:00
Neil Alexander
2999ea29ed Connect to newly added peer immediately 2022-04-08 16:38:26 +01:00
Neil Alexander
9b3963248c Fix multicast dial 2022-04-08 16:02:09 +01:00
Neil Alexander
5a99d2f53a Enable IPv4 multicast 2022-04-08 15:59:01 +01:00
Neil Alexander
e232e87cbd Update GHA workflows 2022-04-07 12:31:19 +01:00
Neil Alexander
3dbf86ba90 Update port in Docker image 2022-04-07 11:23:50 +01:00
Neil Alexander
d0cefc2cce Tweak pinecone.yml 2022-04-07 11:01:16 +01:00
Neil Alexander
97a38865f5 Update GHA for Docker 2022-04-07 11:00:34 +01:00
Neil Alexander
fe9c3eea9d Add Dockerfile for standalone router 2022-04-07 10:56:00 +01:00
Neil Alexander
b880dddb10 Update standalone to listen for WebSockets 2022-04-07 10:47:09 +01:00
Neil Alexander
e526fa82f7 QUIC sessions (#37)
* Use QUIC instead of uTP

* Various tweaks

* The `pinecone` standalone doesn't need sessions

* Allow multiple protocols

* More QUIC tweaks

* De-race connection setup

* Gobind package doesn't need sessions

* Logger interface, more queue metrics
v0.8.0
2022-04-04 15:13:26 +01:00
Neil Alexander
f1264b0e66 Logger interface, more queue metrics 2022-04-04 14:10:24 +01:00
devonh
7a39d14c6c Add wireshark dissector for pinecone frames (#38)
* Add wireshark dissector for pinecone frames

* Add copyright notice

Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2022-03-31 15:44:49 +00:00
Neil Alexander
5b805cec49 Add connection manager, macOS/iOS framework build 2022-03-31 14:48:00 +01:00
Neil Alexander
f83fe8f8ab Allow access to manholes in pineconesim 2022-03-30 14:54:10 +01:00
Neil Alexander
fb51a311e4 Link prioritisation in SNEK getNextHopSNEK 2022-03-30 14:26:24 +01:00
Neil Alexander
307d57f483 Queue fixes v0.7.0 2022-03-30 13:17:41 +01:00
Neil Alexander
b894a9e6b4 Fix overflow 2022-03-30 12:42:42 +01:00
Neil Alexander
b1a19b452f Add debugging manhole, fix packet priority, queue sizes 2022-03-30 12:39:11 +01:00
Neil Alexander
dde4dcf9fc Fix test and lint errors 2022-03-29 15:51:10 +01:00
Neil Alexander
6fb0773772 Improved traffic queuing (head-drop, better queue discrimination, fairer selection) 2022-03-23 14:27:59 +00:00
Neil Alexander
8687b0d707 Fair queue for traffic (#34)
* Fair(er) queue for traffic

* Fix copyright notice

* Fix function name

* Additional tweaks
2022-03-18 15:31:25 +00:00
Neil Alexander
cfde1f8054 Don't automatically send routed traffic to the local peer if we can't forward it any closer 2022-03-08 12:40:38 +00:00
Neil Alexander
5952808ccd Use a FIFO queue for traffic instead of LIFO (may help uTP) 2022-03-08 10:50:25 +00:00
devonh
a7eba83007 Fix buffer size checks for un/marshal snake bootstrap (#32)
* Fix buffer size checks for un/marshal snake bootstrap

* Move root length calculations to a common location
2022-02-24 15:40:10 +00:00
devonh
0f0afd1a46 Fix bug where bootstrap ack was handled incorrectly (#31) 2022-02-23 10:44:32 +00:00
Devon Hudson
51e0672c43 Move integration tests to live alongside router code 2022-01-29 11:33:32 -03:00
Devon Hudson
3a055b0d3b Fix event api race condition when first subscribing to a node 2022-01-29 11:12:53 -03:00
Devon Hudson
7b02958ff2 Add basic integration test for snake neighbours 2022-01-28 14:40:40 -03:00