-
Notifications
You must be signed in to change notification settings - Fork 46
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add gRPC-base Routing Protocol (GRP) path type
This adds the first bits and pieces for a gRPC-based Routing Protocol (GRP). It will allow to leverage Bio-Routing as a proxy between classical routing protocols, such as BGP, IS-IS, and OSPF, and a user-defined gRPC service. This commit contains the new GRP path type definition, the integration into existing route and path structures, as well as a proto definition. Signed-off-by: Maximilian Wilhelm <max@sdn.clinic>
- Loading branch information
1 parent
0dd1474
commit ecd3fda
Showing
13 changed files
with
789 additions
and
123 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<mxfile host="Electron" modified="2023-01-16T20:10:47.674Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="zqbnScvjHw7Dq5aV_rcp" version="16.5.1" type="device"><diagram id="qTsozOltfgc4AzKQSObR" name="Page-1">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</diagram></mxfile> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# gRPC Routing Protocol (GRP) | ||
|
||
This protocol is designed to allow leveraging Bio-Routing as a proxy between classic routing protocols like BGP, IS-IS, and OSPF and an gRPC based controller. | ||
Bio-Routing can be used to learn routes via gRPC and export them into the desired protocols, learn routes from classic protocols and export them via gRPC, or both. | ||
|
||
The gRPC Routing Protocol follows the design principle for BGP as much as is practical and borrows the concept of AdjRIBIn and AdjRIBOut including the possibility to define import and export filters. | ||
|
||
To be most flexible the gRPC Routing Protocol allows learning and/or exporting routes for multiple VRFs over one gRPC connection. | ||
|
||
Bio-Routing, at least for now, only implements a gRPC Routing Protocol client componenent, meaning that the user has to run a GRP server by themselves. An example can be found in the examples/grp/ folder inside this repository. | ||
|
||
The following diagram shows the architectural overview: | ||
|
||
![gRPC Routing Protocol architecural overview](GRP Architecture.drawio.svg) |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
syntax = "proto3"; | ||
|
||
package bio.grtp; | ||
|
||
import "net/api/net.proto"; | ||
import "route/api/route.proto"; | ||
|
||
option go_package = "github.com/bio-routing/bio-rd/protocols/grpcrp/api"; | ||
|
||
message GRPRoute { | ||
string vrf = 1; | ||
bio.route.Route route = 2; | ||
bool announcement = 3; | ||
} | ||
|
||
service GRPService { | ||
rpc RunSession(stream GRPRoute) returns (stream GRPRoute) {} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.