Commit Graph

165 Commits

Author SHA1 Message Date
Asim Aslam
563768b58a
v3 refactor (#1868)
* Move to v3

Co-authored-by: Ben Toogood <bentoogood@gmail.com>
2020-07-27 13:22:00 +01:00
bcc890e47c
router: pass node metadata to route instead of service metadata (#1855)
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2020-07-17 16:45:22 +01:00
ben-toogood
a4252ba69c
router/registry: use warn error level (#1826) 2020-07-13 15:27:14 +01:00
ben-toogood
c817f29d6e
router/registry: fix registry not found bug (#1794) 2020-07-03 13:35:59 +01:00
ben-toogood
4ff114e798
router/registry: fix rlock bug when registry errors (#1788)
* client: add select options

* router/registry: fix rlock bug when registry errors

* Revert "client: add select options"

This reverts commit 4d5283452e183f7387b604b51bde1deaf87ee391.

* router/registry: findRoutes under rlock

* add test

Co-authored-by: Dominic Wong <dom@micro.mu>
2020-07-02 18:29:11 +01:00
ben-toogood
174e44b846
Deprecate client/selector (#1767)
* client/{grpc,rpc}: depricate selector (wip)

* {client,cmd}: remove client/selector

* deprecate client/selector

* router/static: fix lookup

* config/cmd: add support for legacy static selector flag

* config/cmd: add support for legacy dns selector flag
2020-07-01 17:06:59 +01:00
Dominic Wong
a63480a81a
router/registry: fix fallback fails if service has been seen already (#1776) 2020-07-01 15:20:30 +01:00
ben-toogood
64e9185386
router/registry: fix nil eventChan bug (#1773)
* router/registry: fix nil eventChan bug
2020-07-01 12:03:13 +01:00
ben-toogood
a64078b5c3
router/service: handle not found error (#1770) 2020-07-01 10:18:19 +01:00
Dominic Wong
58845d7012
only prewarm the route table if requested (#1765) 2020-07-01 10:05:21 +01:00
ben-toogood
dcf01ebbf0
router/registry: fix concurrent map iteration and map write (#1762) 2020-06-30 17:40:38 +01:00
ben-toogood
a95accad56
router: add metadata to routes (#1763)
* router: add metadata to route

* router/registry: set node metadata in route

* router/service: pass metadata to/from router service
2020-06-30 14:10:13 +01:00
ben-toogood
deea8fecf4
router/registry: add fallback if routes aren't found in the cache (#1758)
* router/registry: add fallback if routes aren't found in the cache

* router: fix rlock bug

* router/registry: pass fetchRoutes into the table, not the router
2020-06-30 09:53:49 +01:00
ben-toogood
df3e5364ca
api/resolver: add resolve options (#1756)
* api/resolver: Resolve options

* router/registry: fix init bug

* router/registry: fix wildcard query bug

* web: fix registation domain bug

* registry/etcd: pass domain in service metadata

* api/resolver/subdomain: expose domain func

* Update api/resolver/subdomain/subdomain.go

Co-authored-by: Dominic Wong <domwongemail@googlemail.com>

Co-authored-by: Dominic Wong <domwongemail@googlemail.com>
2020-06-29 16:37:45 +01:00
ben-toogood
4f0f4326df
router: improve router configuration (#1745)
* router: update default address to :8084

* service: add router to service options

* config/cmd: improve router setup
2020-06-26 10:38:11 +01:00
ben-toogood
2000da6fd8
router/registry: add support for registry domains (#1744) 2020-06-25 12:35:00 +01:00
ben-toogood
a2550820d3
router: add to service options; add dns and static implementations (#1733)
* config/cmd: add router to service options

* router/service: use micro client
2020-06-24 11:46:51 +01:00
ben-toogood
c940961574
router: update interface (#1732)
* router: replace Start and Stop with Close

* router: update default network to micro

* router: update tests
2020-06-24 11:09:16 +01:00
Asim Aslam
290595f88e
Strip down router code (#1627) 2020-05-13 16:13:36 +01:00
268651df18
regenerate all proto based files (#1531)
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2020-04-14 16:25:09 +03:00
1063b954de
dont display t.Log/t.Logf as errors in github actions (#1508)
* fix tests and github action annotations

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2020-04-09 14:05:46 +03:00
9e6db79860
regenerate all proto (#1440)
* regenerate all proto

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* regenerate from proto

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* regenerate from proto

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2020-03-30 21:58:32 +01:00
7b385bf163
minimize allocations in logger and tunnel code (#1323)
* logs alloc

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* fix allocs

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* fix allocs

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* tunnel allocs

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* try to fix tunnel

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* cache cipher for send

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* more logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* more logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* more logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* more logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* more logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* more logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* more logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2020-03-11 17:55:39 +00:00
b4a743898e
fix router panic (#1254)
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2020-02-24 23:15:59 +00:00
117f56ebf7
prune util/log and user logger (#1237)
* prune util/log and user logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* plaintext logger

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* add newline

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2020-02-23 13:45:20 +00:00
Asim Aslam
8ea84ac3eb Fix router panic for nil watcher 2020-02-10 15:38:41 +00:00
f23638c036 fix import paths for v2 release
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2020-01-30 14:44:40 +03:00
Asim Aslam
77c2a021da Add event id to router events 2020-01-23 11:44:06 +00:00
Asim Aslam
29c1076950 refactor and cleanup some router code 2020-01-22 16:33:31 +00:00
Asim Aslam
ed2bd68d28 fix break in router service 2020-01-19 23:22:41 +00:00
Asim Aslam
04cf86070c close stream 2020-01-19 22:55:57 +00:00
Milos Gajdos
23d65145e6
Use the same logic for advertising routes in Router and Network
router.Query() allows to query the routes with given router.Strategy.
It uses the same logic as was implemented in flushRoutes but the code
was never updated. This way we are consistent across both router and
network packages.
2020-01-17 16:25:18 +00:00
Asim Aslam
d7b9b2713b don't block forever 2020-01-17 15:23:10 +00:00
Milos Gajdos
7f9b3b5556
Remove Solicitation from the network
Instead, when a new peer is discovered it is sent a sync message i.e. we
do the full sync when discovering peers
2020-01-16 19:43:10 +00:00
Milos Gajdos
5e85194a13
QueryStrategy to allow querying routes based on Advertising Strategy 2020-01-16 12:48:36 +00:00
Asim Aslam
6027a81f06 Update router comments 2019-12-17 08:28:45 +00:00
Asim Aslam
d50f30d743 strip handlers 2019-12-10 11:46:13 +00:00
Asim Aslam
7e46ff5d92 strip some more logging down 2019-12-10 09:08:03 +00:00
Asim Aslam
59c1680594 Move Debug to Trace in router 2019-12-09 09:32:17 +00:00
Asim Aslam
c445aed6b1 Cleanup and speedup network convergence along with direct messaging for connect and solicit 2019-12-07 19:54:29 +00:00
Asim Aslam
ac9001ac74 advert ttl inline with router table tick 2019-12-05 17:50:32 +00:00
Milos Gajdos
bca12a7003
Changed a few router knobs to avoid storms ⛈ 2019-12-05 17:11:17 +00:00
Milos Gajdos
5865e89bed
Fixing dead code and go vet moaning 2019-12-05 16:10:49 +00:00
a1eaf9cc20 linting fixes
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2019-12-04 00:22:02 +03:00
Milos Gajdos
4a11a4c546
Fix router race condition 2019-12-03 15:22:54 +00:00
Astone
29fb58db39 improve code quality 2019-12-03 20:59:02 +08:00
Asim Aslam
da04aa8ae8 Switch to AdvertiseLocal by default 2019-12-02 17:36:20 +00:00
Asim Aslam
6f1c30aef5 remove unused value in router 2019-11-30 21:39:03 +00:00
Asim Aslam
107124e5dc Changes for the storm 2019-11-29 17:27:29 +00:00
Asim Aslam
8b63df7a98 regenerate the protos 2019-11-26 13:53:33 +00:00
Milos Gajdos
55252cbc32 Fix the router test; get rid of time dependency (#964) 2019-11-20 14:53:12 +00:00
Asim Aslam
fd5c29addc
Add the ability to only advertise local routes or don't advertise at all (#932)
* Add the ability to only advertise local routes or don't advertise at all

* Reorder processing to shortcircuit no advertising
2019-11-11 15:28:37 +00:00
Till Knuesting
5ae3e179b9 preallocated slices (#934) 2019-11-11 00:03:51 +00:00
Milos Gajdos
b84134581c Flap detection vol2 (#915)
* We now purge flapping routes before regular tick processes them

* Updated comments

* Record the timestamp as soon as you receive the event

* Set route Address to routing table test

* Fixed a bunch of deadlocks. Added basic Router tests.
2019-11-05 17:44:24 +00:00
Till Knuesting
f67c5e779f preallocated slices (#917) 2019-11-05 17:43:12 +00:00
Milos Gajdos
4a694c9d02 Change flap detection configuration (#914)
* Change flap detection configuration

* Make PenaltyHalfLife a float, not int 🤦‍♂️

* Lower event suppression to 200
2019-11-04 19:01:52 +00:00
Asim Aslam
2f3c251b00 Recovery should be < 500 2019-11-03 17:10:00 +00:00
Asim Aslam
c1b0a968ae
Augment the router penalty and decay as a hack fix (#912)
* Augment the router penalty and decay as a hack fix

* increase recovery cost
2019-11-03 16:29:10 +00:00
tegk
f88518d994 used gofmt with -s flag on whole project 2019-11-01 15:07:53 +00:00
Milos Gajdos
1ff65e140a
Change router.Route metric to int64. Set the route metric properly 2019-10-23 16:51:22 +01:00
Milos Gajdos
7a4bff4e9f
Changed names of some variables. 2019-10-09 19:08:24 +01:00
Milos Gajdos
d5ce96da24
Avoid locking on reading strategy for now 2019-10-09 18:19:48 +01:00
Milos Gajdos
837597fe6f
Make Optimal strategy default. Collapse routing tables based on strategy 2019-10-09 17:24:38 +01:00
Milos Gajdos
96e564e402
Add router advertisement Strategy option to router. 2019-10-09 17:24:38 +01:00
Asim Aslam
fe94237448
Update router querying method (#834)
* Add address to router query options. Drop Query interface for QueryOptions

* Cleanup isMatch function

* Update network proto
2019-10-09 17:13:52 +01:00
Milos Gajdos
2d7975a7ce
Rather than append to list of events just keep the last event for a route hash 2019-09-26 17:54:55 +01:00
Milos Gajdos
a4c04d8f50
Only emit Update event if a route was updated/added 2019-09-26 12:45:10 +01:00
Milos Gajdos
b2577e6022
Update log statement 2019-09-26 12:19:00 +01:00
Milos Gajdos
77f3e7ef48
Simplified table code. Fixed event dedup. 2019-09-26 11:56:30 +01:00
Asim Aslam
6f2a8298ef Fix router log messages 2019-09-25 20:29:25 +01:00
Asim Aslam
4eb1aaae85 Fix the proxy watcher 2019-09-20 16:25:29 +01:00
Milos Gajdos
323a72be34
Small refactoring; Split horizon loop break. 2019-09-13 18:46:24 +01:00
Milos Gajdos
ef91d836eb
Implement Solicit method for handler.Router 2019-09-13 03:03:56 +01:00
Milos Gajdos
d58eb51976
Code change to make Solicit router.proto message 2019-09-13 03:03:55 +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
bb595c85b2
Lets make advert channel buffered so we don't lose adverts 2019-09-05 19:05:47 +01:00
Milos Gajdos
dddfb6f878
Fixed typos and simplified map iteration 2019-09-05 17:59:14 +01:00
Milos Gajdos
2522d8cb96
Send solicit message when new neighbour is discovered 2019-09-05 16:04:44 +01:00
Milos Gajdos
9161b20d6b
Add Solicit method to router interface
When calling Solicit, router lists all the routes and advertise them
straight away
2019-09-05 13:23:33 +01:00
Milos Gajdos
4f788c6fc7
Only emit the events when actually deleting the route 2019-08-29 16:25:21 +01:00
Milos Gajdos
f50bd400f8
Only emit event if Update actually happens 2019-08-29 16:21:30 +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
Milos Gajdos
30dd3f54f0
Make router.Table docs consistent 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
Milos Gajdos
75871287a1
Make stop idempotent. Small refactoring. Router name is memory. 2019-08-21 21:10:42 +01:00
Asim Aslam
fb750a0bb1 Don't start the router if its already running 2019-08-21 18:58:56 +01:00
Milos Gajdos
cb1679fd8d
Add Start method to router
Added Start to router packages.
Fixed potential deadlocks.
2019-08-12 22:23:46 +01:00
Asim Aslam
f1b6709722 Fix breaking api changes 2019-08-05 17:47:50 +01:00
Asim Aslam
4030ccc27b Move proxy/router 2019-08-05 17:44:33 +01:00
Asim Aslam
3f97743e34 Move router and proxy into network package 2019-06-21 17:20:31 +01:00
Asim Aslam
7936d74602 Update comments 2019-06-21 16:17:12 +01:00
Milos Gajdos
1765be049b
router.Start() is now router.Advertise(). Updated code documentation. 2019-06-20 13:04:58 +01:00
Milos Gajdos
10a3636a9f
Renamed variables, options and functions 2019-06-19 21:22:14 +01:00
Milos Gajdos
4e5fbbf7eb
Replaced the debug network string by the correct router local address. 2019-06-19 18:11:16 +01:00
Milos Gajdos
59035ab801
Removed debug logs. advertiseToNetwork() replaced watchTable().
Debug logs that were helpful when squashing bugs have been removed.

advertiseToNetwork replaced the watchTable which originally watched the
routing table entries. We now take a different approach to propagating
the local registry services into the network registry.
2019-06-19 18:03:43 +01:00
Milos Gajdos
d3525ebab3
Debug messages. Squashed Add Route bugs and few others. 2019-06-19 18:03:43 +01:00
Milos Gajdos
2674294cbe
Delete route when no node is available. 2019-06-19 18:03:43 +01:00
Milos Gajdos
b20dd16f92
Watcher now emits events instead of results. 2019-06-19 18:03:43 +01:00
Milos Gajdos
5088c9d916
Increased Network registry TTL. Routing Table remove is now delete.
Remove has been renamed to Delete to be more in line with the framework.

A bunch of comments have been added/updated for the future generations

We have increased the Network Registry TTL to 2 minutes.
2019-06-19 18:03:42 +01:00