Skip to content

Commit

Permalink
Add Protocol_Guide for Open/R under CFM rule
Browse files Browse the repository at this point in the history
Summary:
As titled.

Add `Protocol_Guide` under the new CFM rule. I quickly reviewed the doc and update some of the dead parts.

Reviewed By: ashutoshgrewal

Differential Revision: D53597744

fbshipit-source-id: 3e28542c38bb5a989a3403a867af564d18d2fec9
  • Loading branch information
Xiang Xu authored and facebook-github-bot committed Feb 10, 2024
1 parent 5195e38 commit d1d5818
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 70 deletions.
21 changes: 21 additions & 0 deletions openr/docs/CFM_RULES
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
publish(
wiki_root_path = "Network_Routing_Control/Routing_Protocol/Open-R",
srcs = [
"Protocol_Guide/Architecture.md",
"Protocol_Guide/Config.md",
"Protocol_Guide/Decision.md",
"Protocol_Guide/Dispatcher.md",
"Protocol_Guide/Fib.md",
"Protocol_Guide/Initialization_Process.md",
"Protocol_Guide/KvStore.md",
"Protocol_Guide/LinkMonitor.md",
"Protocol_Guide/Messaging.md",
"Protocol_Guide/Miscellaneous.md",
"Protocol_Guide/Monitor.md",
"Protocol_Guide/Netlink.md",
"Protocol_Guide/Platform.md",
"Protocol_Guide/PrefixManager.md",
"Protocol_Guide/Spark.md",
],
oncall = "routing_protocol",
)
3 changes: 1 addition & 2 deletions openr/docs/Protocol_Guide/Config.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ provide C++ wrapper over config object.
For more information about config format, check out

- [if/OpenrConfig.thrift](https://github.com/facebook/openr/blob/master/openr/if/OpenrConfig.thrift)
- [if/BgpConfig.thrift](https://github.com/facebook/openr/blob/master/openr/if/BgpConfig.thrift)

### Accessor Methods

- Submodule config. e.g. `getSparkConfig()`, `getKvStoreConfig()`
- Optional field access - return false if not set. e.g. `isV4Enabled()`,
`isSegmentRoutingEnabled()`
`isDryrun()`
11 changes: 0 additions & 11 deletions openr/docs/Protocol_Guide/LinkMonitor.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,14 +145,3 @@ SPF computation. For now, we support two kinds of metrics:

> NOTE: `rtt` is measured dynamically by `Spark` as part of neighbor discovery
> and keep-alive mechanisms. RTT changes are observed handled dynamically.
### Segment Routing Support

To Support `Segment Routing`, `LinkMonitor` injects:

- **Node Label** by leveraging `RangeAllocator` to assign a globally unique
label across the network(via `KvStore` to detect collision);
- **Adjacency Label** by leveraging `Spark` to assign a unique label derived
from **ifIndex**;

> NOTE: **Adjacency Label** is locally unique per node.
26 changes: 2 additions & 24 deletions openr/docs/Protocol_Guide/Miscellaneous.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ disruptions during software upgrades or restarts.

The operation of graceful restart can be described in two domains

### Restarting Node
### Restarting Node [TO BE UPDATED]

Restart of a node can happen anytime (admin, crash or just software upgrade). GR
is implemented to handle not-anticipated restart of neighbor. When a node
Expand All @@ -66,7 +66,7 @@ restarts, it does the following:
It is assumed that network is not changing much when a node is restarting.
However local link down events are taken into immediate effect.

### Node whose neighbor is restarting
### Graceful Restart (GR) Helper [TO BE UPDATED]

Spark-hello packets are exchanged between neighbors as a keep-alive mechanism.
Each hello packet has a sequence number which is monotonically increasing on
Expand All @@ -82,28 +82,6 @@ reset the **holdTimer** for the neighbor which has been detected as restarted
and it doesn't do unless it sees itself in the subsequent neighbor's hello
packets.

### Notes on Timers

Restarting node has to form adjacencies with all of its neighbors within it's
holdTime from its last hello message sent before restarting.

**adjHoldTime** = 2 \* keepAliveTime

Reason: At worst case 2 hello message needs to be exchanged between nodes to
form adjacency

**fibHoldTime** = 3 \* keepAliveTime

Reason: Giving out extra buffer of **keepAliveTime** to let our latest adjacency
accepted by KvStore and then proceed with route programming.

**holdTime** = >> keepAliveTime

We should keep much higher holdTime than keepAliveTime for graceful restart to
be complete. On my testing having 30s of holdTime and 2s keepAliveTime works
great and we see no traffic disruptions even when two adjacent neighbors are
restarting together.

## Parallel link Support

---
Expand Down
5 changes: 0 additions & 5 deletions openr/docs/Protocol_Guide/Monitor.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,6 @@ important event, packs it as a LogSample object and pushes it into the queue.
- `NEIGHBOR_RESTARTED`
- `NEIGHBOR_RTT_CHANGE`
- `NEIGHBOR_RESTARTING`
- [Producer `PrefixAllocator`]:
- `ALLOC_PARAMS_UPDATE`
- `PREFIX_ELECTED`
- `PREFIX_ELECTED`
- `PREFIX_LOST`
- [Consumer `RQueue<LogSample>`]: Read `LogSample` object and process all event
logs.

Expand Down
26 changes: 0 additions & 26 deletions openr/docs/Protocol_Guide/index.rst

This file was deleted.

2 changes: 0 additions & 2 deletions openr/docs/requirements.txt

This file was deleted.

0 comments on commit d1d5818

Please sign in to comment.