Commit Graph

37 Commits

Author SHA1 Message Date
Tim Beatham
dbc18bddc6 74-perform-dad
- Performing DAD to check if IPv6 address present before adding
  outselves to mesh
- Changing name from wgmesh to smegmesh
2024-01-01 23:55:50 +00:00
Tim Beatham
0cc3141b58 61-improve-unit-testing-coverage
- Added missing files to commit
2023-12-22 21:49:47 +00:00
Tim Beatham
fe14f63217 53-run-commands-pre-up-and-post-down
- Ability to run a command pre up and post down
- Ability to be a client in one mesh and a peer in the other
- Added dev card to specify different sync rate, keepalive rate per
  mesh.
2023-12-10 19:21:54 +00:00
Tim Beatham
1e263cc6a8 51-bugfix-routes-not-removing-when-withdrawn
- Routes are not being removed despite being withdrawn from the
configuration.
- Best path routes are not shared across interfaces
- Bug in consistent hashing wrong parameter passed caused by
refactorings.
2023-12-10 15:10:36 +00:00
Tim Beatham
64885f1055 45-use-statistical-testing
Using statistical testing to test whether the node has failed.
2023-12-07 01:44:54 +00:00
Tim Beatham
650901aba1 39-implement-two-phase-map
Implemented my own two phase map based on vector clocks
2023-11-30 02:02:38 +00:00
Tim Beatham
32e7e4c7df main
Bugfix. Fixed issue where consistent hashing was not working.
2023-11-28 14:42:09 +00:00
Tim Beatham
d8e156f13f 36-add-route-path-into-route-object
Added the route path into the route object so that we can
see what meshes packets are routed across.
2023-11-27 18:55:41 +00:00
Tim Beatham
aef8b59f22 32-fix-routing
Flooding routes into other meshes a bit like BGP.
2023-11-25 03:15:58 +00:00
Tim Beatham
2c406718df 29-only-ping-clients-who-have-updated-their-config
Only consider clients who have updated their config when synchronising
with peers. Consider a dead time where we don't have a handshake and
a prune time when we remove them from the WireGuard configuration.
2023-11-24 12:37:54 +00:00
Tim Beatham
7be11dbaa3 27-remove-client-grpc-endpoint
Removed a client's grpc endpoint value. Client's aren't publicly
available so there is no need for a client's gRPC endpoint.
Also changed a node ID's to their public key. A node id's public
address is an issue for mobility of clients as their endpoint
is subject to change
2023-11-24 12:07:03 +00:00
Tim Beatham
6e201ebaf5 24-keepalive-holepunch
Nodes acting as peers and nodes acting as clients
2023-11-21 16:42:49 +00:00
Tim Beatham
06542da03c main
Fixed problems with timestamp not updating
2023-11-21 13:31:34 +00:00
Tim Beatham
388153e706 Stubbing out WireGuard components
Stubbing our WireGuard components so that I can use docker/podman
network_mode=host. This is much more efficient than the docker/podman
userspace network.
2023-11-20 11:28:12 +00:00
Tim Beatham
68db795f47 Ability to specify aliases
Ability to specify aliases that automatically append to /etc/hosts
2023-11-17 22:13:51 +00:00
Tim Beatham
f6160fe138 Adding aliases that automatically gets added 2023-11-17 19:13:20 +00:00
Tim Beatham
1a864b7c80 Removed interface manipulation via os.Exec into
rtnetlink calls
2023-11-07 19:48:53 +00:00
Tim Beatham
acbeb689b5 Prune nodes if they exceed their timeout time 2023-11-06 13:37:28 +00:00
Tim Beatham
c88012cf71 Added health system to count how many times a node
fails to conenct.
2023-11-06 09:54:06 +00:00
Tim Beatham
9454d62417 Adding stubs and writing tests 2023-11-05 18:03:58 +00:00
Tim Beatham
bb07d35dcb Unit testing the automerge library and lib functions 2023-11-05 12:13:40 +00:00
Tim Beatham
d462d95d6d Ability for each node to set their description describing what
service they provide.
2023-11-01 11:58:10 +00:00
Tim Beatham
e56780fdd4 Added ability to query the JSON data store 2023-10-30 19:02:28 +00:00
Tim Beatham
472718c9a3 Standardising filenames, interfacing out
for tests and modifying network device
manipulation
2023-10-28 16:38:25 +01:00
Tim Beatham
5757d81a81 Advertising routes into the mesh 2023-10-27 17:49:18 +01:00
Tim Beatham
4c6bbcffcd Interfacing out components for unit testing 2023-10-26 16:53:12 +01:00
Tim Beatham
c205be6748 Implemented the forwarding of packets between meshes 2023-10-25 18:34:38 +01:00
Tim Beatham
180f5e226c Ability to be in multiple meshes and refactored consensus 2023-10-24 16:00:46 +01:00
Tim Beatham
8e89281484 Tested with large number of nodes 2023-10-24 00:12:38 +01:00
Tim Beatham
ef2b57047d Bidirectional syncing 2023-10-23 18:13:08 +01:00
Tim Beatham
360f9d3c54 Few refactorings of managing the mesh and a graph
visualisation tool for seeing the state of a mesh.
2023-10-22 13:34:49 +01:00
Tim Beatham
c4dc984fc7 Added ability to detect if a node should be removed from the mesh. 2023-10-21 18:08:45 +01:00
Tim Beatham
976dbf2613 Automatically remove nodes from the mesh after a
certain threshold.
2023-10-20 17:35:02 +01:00
Tim Beatham
c200544cee Timer in go that syncs with random nodes in the mesh every
given time interval.
2023-10-20 12:41:06 +01:00
Tim Beatham
e729c5b181 CRDTs fully incorporated 2023-10-06 18:25:38 +01:00
Tim Beatham
47e260e310 Incorporated automerge 2023-10-06 11:52:51 +01:00
Tim Beatham
923ca716ec Automerge changes 2023-10-05 17:48:54 +01:00