2019-06-26 16:23:10 +01:00
|
|
|
syntax = "proto3";
|
|
|
|
|
2019-07-26 18:07:14 -07:00
|
|
|
package go.micro.router;
|
|
|
|
|
2019-06-26 16:23:10 +01:00
|
|
|
// Router service is used by the proxy to lookup routes
|
|
|
|
service Router {
|
2019-07-25 23:24:46 +01:00
|
|
|
rpc Lookup(LookupRequest) returns (LookupResponse) {};
|
|
|
|
rpc Watch(WatchRequest) returns (stream Event) {};
|
2019-07-29 18:57:40 +01:00
|
|
|
rpc Advertise(Request) returns (stream Advert) {};
|
2019-07-24 21:07:04 +01:00
|
|
|
rpc Process(Advert) returns (ProcessResponse) {};
|
2019-07-29 18:57:40 +01:00
|
|
|
rpc Status(Request) returns (StatusResponse) {};
|
|
|
|
}
|
|
|
|
|
2019-08-01 13:32:55 +01:00
|
|
|
service Table {
|
2019-07-29 18:57:40 +01:00
|
|
|
rpc Create(Route) returns (CreateResponse) {};
|
2019-07-25 23:24:46 +01:00
|
|
|
rpc Delete(Route) returns (DeleteResponse) {};
|
|
|
|
rpc Update(Route) returns (UpdateResponse) {};
|
2019-07-29 18:57:40 +01:00
|
|
|
rpc List(Request) returns (ListResponse) {};
|
|
|
|
rpc Query(QueryRequest) returns (QueryResponse) {};
|
2019-07-25 23:24:46 +01:00
|
|
|
}
|
|
|
|
|
2019-07-29 18:57:40 +01:00
|
|
|
// Empty request
|
|
|
|
message Request {}
|
2019-07-25 23:24:46 +01:00
|
|
|
|
|
|
|
// ListResponse is returned by List
|
|
|
|
message ListResponse {
|
|
|
|
repeated Route routes = 1;
|
2019-06-26 16:23:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// LookupRequest is made to Lookup
|
|
|
|
message LookupRequest {
|
|
|
|
Query query = 1;
|
|
|
|
}
|
|
|
|
|
2019-07-10 17:21:55 +01:00
|
|
|
// LookupResponse is returned by Lookup
|
2019-06-26 16:23:10 +01:00
|
|
|
message LookupResponse {
|
|
|
|
repeated Route routes = 1;
|
|
|
|
}
|
|
|
|
|
2019-07-29 18:57:40 +01:00
|
|
|
message QueryRequest{
|
|
|
|
Query query = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message QueryResponse {
|
|
|
|
repeated Route routes = 1;
|
|
|
|
}
|
|
|
|
|
2019-07-10 17:21:55 +01:00
|
|
|
// WatchRequest is made to Watch Router
|
|
|
|
message WatchRequest {}
|
|
|
|
|
2019-07-11 21:14:34 +01:00
|
|
|
// AdvertType defines the type of advert
|
|
|
|
enum AdvertType {
|
|
|
|
AdvertAnnounce = 0;
|
|
|
|
AdvertUpdate = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Advert is router advertsement streamed by Watch
|
|
|
|
message Advert {
|
|
|
|
// id of the advertising router
|
|
|
|
string id = 1;
|
|
|
|
// type of advertisement
|
|
|
|
AdvertType type = 2;
|
|
|
|
// unix timestamp of the advertisement
|
|
|
|
int64 timestamp = 3;
|
|
|
|
// TTL of the Advert
|
|
|
|
int64 ttl = 4;
|
|
|
|
// events is a list of advertised events
|
|
|
|
repeated Event events = 5;
|
|
|
|
}
|
|
|
|
|
2019-07-24 21:07:04 +01:00
|
|
|
// ProcessResponse is returned by Process
|
|
|
|
message ProcessResponse {}
|
|
|
|
|
2019-07-25 23:24:46 +01:00
|
|
|
// CreateResponse is returned by Create
|
|
|
|
message CreateResponse {}
|
|
|
|
|
|
|
|
// DeleteResponse is returned by Delete
|
|
|
|
message DeleteResponse {}
|
|
|
|
|
|
|
|
// UpdateResponse is returned by Update
|
|
|
|
message UpdateResponse {}
|
|
|
|
|
2019-07-11 21:14:34 +01:00
|
|
|
// EventType defines the type of event
|
2019-07-10 17:21:55 +01:00
|
|
|
enum EventType {
|
2019-07-10 18:37:46 +01:00
|
|
|
Create = 0;
|
2019-07-10 17:21:55 +01:00
|
|
|
Delete = 1;
|
|
|
|
Update = 2;
|
|
|
|
}
|
|
|
|
|
2019-07-11 21:14:34 +01:00
|
|
|
// Event is routing table event
|
|
|
|
message Event {
|
|
|
|
// type of event
|
2019-07-10 17:21:55 +01:00
|
|
|
EventType type = 1;
|
|
|
|
// unix timestamp of event
|
|
|
|
int64 timestamp = 2;
|
|
|
|
// service route
|
|
|
|
Route route = 3;
|
|
|
|
}
|
|
|
|
|
2019-06-26 16:23:10 +01:00
|
|
|
// Query is passed in a LookupRequest
|
|
|
|
message Query {
|
2019-07-09 16:45:31 +01:00
|
|
|
// service to lookup
|
|
|
|
string service = 1;
|
2019-07-26 12:43:17 +01:00
|
|
|
// gateway to lookup
|
|
|
|
string gateway = 2;
|
|
|
|
// network to lookup
|
|
|
|
string network = 3;
|
2019-06-26 16:23:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// Route is a service route
|
|
|
|
message Route {
|
|
|
|
// service for the route
|
2019-07-09 16:45:31 +01:00
|
|
|
string service = 1;
|
|
|
|
// the address that advertise this route
|
|
|
|
string address = 2;
|
2019-06-26 16:23:10 +01:00
|
|
|
// gateway as the next hop
|
2019-07-09 16:45:31 +01:00
|
|
|
string gateway = 3;
|
2019-06-26 16:23:10 +01:00
|
|
|
// the network for this destination
|
|
|
|
string network = 4;
|
2019-08-28 08:41:19 +01:00
|
|
|
// router if the router id
|
|
|
|
string router = 5;
|
2019-07-09 16:45:31 +01:00
|
|
|
// the network link
|
2019-08-28 08:41:19 +01:00
|
|
|
string link = 6;
|
2019-06-26 16:23:10 +01:00
|
|
|
// the metric / score of this route
|
2019-08-28 08:41:19 +01:00
|
|
|
int64 metric = 7;
|
2019-06-26 16:23:10 +01:00
|
|
|
}
|
2019-07-29 18:57:40 +01:00
|
|
|
|
|
|
|
message Status {
|
|
|
|
string code = 1;
|
|
|
|
string error = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message StatusResponse {
|
|
|
|
Status status = 1;
|
|
|
|
}
|