270 Commits

Author SHA1 Message Date
Milos Gajdos
f0a1031e97
Adding new peers up to given depth. Outline of node gaph Update 2019-09-13 03:03:54 +01:00
Asim Aslam
b5eea02f7a Move link to tunnel/ 2019-09-10 08:12:28 -07:00
Asim Aslam
e8aaca27d3 unlock before sending the message to avoid deadlock 2019-09-06 16:57:17 +01:00
Milos Gajdos
7971b1b7f9
Remove debug logs 2019-09-06 15:12:23 +01:00
Milos Gajdos
dafbacbdcb
Properly handle the list of the nodes. Send solicit on ControlChannel 2019-09-06 15:09:49 +01:00
Milos Gajdos
dddfb6f878
Fixed typos and simplified map iteration 2019-09-05 17:59:14 +01:00
Milos Gajdos
ec354934e3
Move Errors to separate init block 2019-09-05 17:44:47 +01:00
Milos Gajdos
b01c8e06e0
Update error name to ErrClientNotFound 2019-09-05 17:43:59 +01:00
Milos Gajdos
5ddfd911ba
Replace send message code by one network method 2019-09-05 17:18:16 +01:00
Milos Gajdos
2522d8cb96
Send solicit message when new neighbour is discovered 2019-09-05 16:04:44 +01:00
Milos Gajdos
4b1a7abb42
Freeze network graph when building full network topology
Also added some comments and debug logs
2019-09-05 00:16:22 +01:00
Asim Aslam
46a9767648
Merge pull request #730 from milosgajdos83/advert-lastseen
Update node.lastSeen properly. Set node.lastSeen when processing advert
2019-09-04 18:13:43 +01:00
Milos Gajdos
dd9f42e3b9
Update lastSeen timestamp properly. Set lastSeen when processing advert 2019-09-04 18:02:13 +01:00
Asim Aslam
f2c8492c77
Merge pull request #729 from micro/tunnel
Tunnel session management and unicast/multicast
2019-09-04 16:25:38 +01:00
Asim Aslam
b9c437fbfe Tunnel discover/announce/open/session/close 2019-09-04 09:48:05 +01:00
Milos Gajdos
4f4b3d3bae
Send connect message to NetworkChannel once we are not at caller mercy 2019-09-03 19:51:52 +01:00
Milos Gajdos
6eb6d050ed
Major bug overhaul in how we handle network.Nodes and related handler 2019-09-03 16:39:27 +01:00
Milos Gajdos
3ea4490d6c
Don't preallocate the slice if you don't index later on. 2019-09-03 15:02:30 +01:00
Milos Gajdos
ec6318befc
Prune nodes that have not announced themselves for certain time period. 2019-09-03 10:00:14 +01:00
Milos Gajdos
fb13877904
Make Nodes() BFS implementation efficient 2019-09-03 02:58:17 +01:00
Milos Gajdos
a8d4299df9
Sort the returned slice of nodes before searching
See docs:
https://golang.org/pkg/sort/#Search
2019-09-02 20:00:52 +01:00
Milos Gajdos
86665454e7
Implementation of Nodes method. First take on full handler 2019-09-02 17:06:21 +01:00
Milos Gajdos
4f5a849211
Added Nodes method to Network interface 2019-09-02 12:40:05 +01:00
Milos Gajdos
bf53c16e4b
Rough outline of Network introspection interface 2019-09-02 12:40:05 +01:00
Asim Aslam
6fa9d7270f Rename Tunnel ID to Channel 2019-08-30 20:05:00 +01:00
Milos Gajdos
b37837ad92
Add proto definitions for network introspection. 2019-08-30 12:29:26 +01:00
Milos Gajdos
e955e3f798
Avoid routes that route back to node without its being direct GW to dest 2019-08-30 00:04:46 +01:00
Milos Gajdos
ffa6b551f4
Don't override the neighbours. 2019-08-29 15:42:07 +01:00
Asim Aslam
3d03fe4076 Fix panic for nil slice 2019-08-29 15:09:01 +01:00
Asim Aslam
7479515099 add the ability to provide seed nodes to the network 2019-08-29 14:53:30 +01:00
Milos Gajdos
8606f1e143
Set the route.Metric before updating routing table 2019-08-29 11:45:47 +01:00
Milos Gajdos
db8e2620cb
Make tunnel channel clients key-able. Neighbour map simplified.
tunClient is a map of tunnel clients keyed on tunnel channel name.
Neighbour map is now a cimple map of nodes which contains its nodes.
2019-08-28 23:11:26 +01:00
Milos Gajdos
d09b7dbbef
Broadcast neighbourhood; fix critical bugs in channel connections
This commit introduces neighbourhood announcements which allows to
maintaing neighbour map if each next-hop node.

It also fixes a critical bug when accepting connections for a particular
tunnel channel.
2019-08-28 20:11:19 +01:00
Asim Aslam
a4f5772555 add network field to the routes 2019-08-28 08:41:19 +01:00
Milos Gajdos
5e7208119e
Adds network id. Skips processing routes when router is the origin. 2019-08-27 23:08:35 +01:00
Asim Aslam
87b56d46ac Use tunnel transport and set server address 2019-08-27 13:21:36 +01:00
Milos Gajdos
371b23d055
Introduce DefaultLink; dont hardcode name of the link 2019-08-27 11:36:46 +01:00
Asim Aslam
f97565ef0a
Merge pull request #685 from milosgajdos83/default-network
Default network implementation
2019-08-27 11:02:55 +01:00
Milos Gajdos
ed8d28c9ab
Set Route.Link to "network" not Route.Network. Oops! 2019-08-23 21:08:18 +01:00
Milos Gajdos
88e47b9b06
Dont bail when unable to resolve network nodes. 2019-08-23 17:48:14 +01:00
Asim Aslam
1b0295de0d Add a static network node resolver 2019-08-23 17:24:21 +01:00
Milos Gajdos
9448d7c164
Set Route.Network to "network" and Router.Gateway to network.Address 2019-08-23 16:01:57 +01:00
Milos Gajdos
8c3eec9f2a
Set the default resolver to registry 2019-08-23 15:14:16 +01:00
Milos Gajdos
e53484302c
Added ControlChannel tunnel.Listener to process incoming messages 2019-08-23 15:14:16 +01:00
Milos Gajdos
db89fc4efe
Set server name to the correct value. 2019-08-23 15:14:16 +01:00
Milos Gajdos
e1599b0f17
Set server name. Set default network name. 2019-08-23 15:14:16 +01:00
Milos Gajdos
a09d5d2e9a
Add Address method. Start and Stop router/server. 2019-08-23 15:14:16 +01:00
Milos Gajdos
6c1f1d66f7
Switch received messages on the right header 2019-08-23 15:14:16 +01:00
Milos Gajdos
a6e1287b27
Replaced incorrect proto import path 2019-08-23 15:14:15 +01:00
Milos Gajdos
fcec6e8eae
First attempt to implement default network interface 2019-08-23 15:14:15 +01:00
Milos Gajdos
6beae23afd
First commit. Outline of the default network. 2019-08-23 15:14:15 +01:00
Asim Aslam
34381213e7 Package comment 2019-08-05 18:04:47 +01:00
Asim Aslam
4030ccc27b Move proxy/router 2019-08-05 17:44:33 +01:00
Asim Aslam
d250ac736f In the event watchRegistry or watchTable exit then close the go routines 2019-08-02 15:17:48 +01:00
Asim Aslam
6719f8d655 Remove the table watcher when stopped 2019-08-02 14:59:08 +01:00
Asim Aslam
d7929ef8f3 Stop the ticker when exiting 2019-08-02 14:44:11 +01:00
Milos Gajdos
2720c6f28e
Removed trailing white characters 2019-08-01 13:32:55 +01:00
Asim Aslam
cdf0f14d58 remove this code 2019-07-31 17:19:49 +01:00
Asim Aslam
679c5f0ccd Fix some connection bugs 2019-07-31 16:49:48 +01:00
Asim Aslam
873bfcc73c Process/Stop router 2019-07-31 16:46:55 +01:00
Asim Aslam
7884e889f4 Don't publish the process rpc call and embed the router handler in the network 2019-07-31 16:36:53 +01:00
Asim Aslam
b1c49a0ddc Add router handler 2019-07-31 16:10:04 +01:00
Asim Aslam
318367cd71 move NewNetwork 2019-07-31 15:37:12 +01:00
Asim Aslam
2d09e74b0e add address/advertise 2019-07-31 15:35:51 +01:00
Asim Aslam
3e90d32f29 Add proxy/router 2019-07-31 15:30:51 +01:00
Asim Aslam
fca89e06ef Some network inspiration 2019-07-31 15:22:57 +01:00
Asim Aslam
852abcaaed yolo commit functioning router code. all credit to the milos gajdos 2019-07-29 18:57:40 +01:00
Asim Aslam
11f80708ce move lock 2019-07-29 12:52:52 +01:00
Asim Aslam
104778e5e5 move lock 2019-07-29 12:52:32 +01:00
Asim Aslam
ae99b9a887 syntactic changes 2019-07-29 12:44:59 +01:00
Asim Aslam
8fdc050e2e syntactic changes 2019-07-29 12:44:28 +01:00
Asim Aslam
8855beb62d syntactic changes 2019-07-29 12:43:20 +01:00
Asim Aslam
47acdf6a4b move Table to table 2019-07-29 12:40:13 +01:00
Asim Aslam
4fc9b9821a
Merge pull request #621 from milosgajdos83/no-table-package
[WIP] No table package. router/service package introduced
2019-07-29 12:36:40 +01:00
Asim Aslam
5b327ce723 change id to name in resolver 2019-07-28 20:00:09 +01:00
Asim Aslam
adb6760e21 readd the resolver 2019-07-28 12:14:40 +01:00
Milos Gajdos
3d2ec5dbb1
Regenerated proto because proto reasons. 2019-07-27 16:12:44 +01:00
Milos Gajdos
96f9ce1bd3
Proper router stopping. Printable router status. 2019-07-27 16:11:06 +01:00
Milos Gajdos
cb3052ce04
Proper stopping of service router 2019-07-27 16:11:06 +01:00
Milos Gajdos
2f1658c213
Table package is no more, hence removed references to it 2019-07-27 16:11:06 +01:00
Milos Gajdos
d8b00e801d
Stop watcher when router stops. Drain advert channel when stopping. 2019-07-27 16:11:06 +01:00
Milos Gajdos
002abca61f
Finished Advertise(). Implemented Process() 2019-07-27 16:11:06 +01:00
Milos Gajdos
c5740ae031
Outline of Advertise, Watch and start of the router. 2019-07-27 16:11:05 +01:00
Milos Gajdos
ddad43bd77
Added service.Router Route CRUD. Outlined watcher and run() 2019-07-27 16:11:05 +01:00
Milos Gajdos
b6fb969ab9
Add List and Lookup implementation. Default error for not implement. 2019-07-27 16:11:05 +01:00
Milos Gajdos
22d0f1f08f
Changed documentation. 2019-07-27 16:08:14 +01:00
Milos Gajdos
c3a8146d99
Added outline of router/service package. 2019-07-27 16:08:14 +01:00
Milos Gajdos
2338780a61
Full router RPC coverage 2019-07-27 16:08:14 +01:00
Milos Gajdos
e22c4b4c07
table package is no more. Cleaned up unnecessary code, too. 2019-07-27 16:04:08 +01:00
Asim Aslam
4e27aac398 regen router proto 2019-07-26 18:07:36 -07:00
Asim Aslam
7ca06f0c1d set router proto package name to go.micro.router 2019-07-26 18:07:14 -07:00
Milos Gajdos
9ad5ae6644
Adds new RPC methods to router service interface
We have added Advertise() and Process() RPCs in this commit.
2019-07-24 21:07:04 +01:00
Milos Gajdos
809de7a052
Mutex Unlock when we fail to store route in cache. 2019-07-24 19:13:05 +01:00
Milos Gajdos
23f0231a09
Adds route watcher to mucp.Proxy 2019-07-24 19:03:13 +01:00
Milos Gajdos
b55adc0c30
mucp Proxy no longer uses RPC interface of router.Router directly 2019-07-24 18:32:39 +01:00
Milos Gajdos
13a8cfe7f3
Small function documentation update 2019-07-24 17:22:27 +01:00
Milos Gajdos
1e94d9fe5a
Router cleanup and refactoring for win and profit.
This commit adds the following changes to router package:
* it refactors Advertise() function which now does only what
it claims to do: advertising
* various router packages functions/methods have been renamed to make
their functionality more obvious and more in line with what they actually do
* function documentation changes related to the above bullet points
2019-07-24 17:16:52 +01:00
Milos Gajdos
94b6455577
Increment WaitGroup before launching advertiseEvents goroutine 2019-07-17 13:02:47 +01:00
Milos Gajdos
2803146673
Renaming rampage
Addressing the comments in #591, router.String() now returns "default"

Furthermore, a tonne of other renaming has been included in this commit
as a result of running go vet ./... inside the router package.
2019-07-17 00:06:11 +01:00
Milos Gajdos
92495d22db
Fixes advert dampening behaviour.
This commit adds the following changes:
* advert now stores a list of route events as opposed to just last one
* attempt to dedup route events before appending them to advert
* have max suppress threshold for long time suppressed adverts
* decaying events on every advert tick

Originally we werent decaying penalties on every advert tick.
That was incorrect behaviour. Furthermore some events would end up being
accumulated potentially causing memory leaks.

We were also overriding the last received router event which was causing
incorrect sequence of events to be applied when received by a receiver:
Create, Delete would be "squashed" into Delete only which would be
nonsensical since the Create event would never be delivered hence we
would be deleting nonexistent routes.

Not Decaying the events on every tick or not having the max suppression
threshold could lead to DoS by growing the router memory infinitely.
2019-07-16 19:00:25 +01:00