Merge pull request 'Add information for rtt in bird' (#48) from mark22k/crxn-docs:bird into master

Reviewed-on: https://codeberg.org/CRXN/docs/pulls/48
This commit is contained in:
Marek Küthe 2024-07-17 17:38:36 +00:00
commit 1ba6d6ad65
4 changed files with 36 additions and 7 deletions

View File

@ -32,7 +32,7 @@ random-id true
link-detect true link-detect true
default hello-interval 4 type tunnel rtt-min 10 rtt-max 100 enable-timestamps true default hello-interval 4 type tunnel rtt-min 10 rtt-max 1000 enable-timestamps true
interface <PEER> type tunnel interface <PEER> type tunnel
@ -214,4 +214,3 @@ The routes learned from the babel neighbors are displayed here. Here `<nid>` is
- [RFC8966](https://www.rfc-editor.org/rfc/rfc8966) - [RFC8966](https://www.rfc-editor.org/rfc/rfc8966)
- [Babel configuration by Réseau Libre](https://wiki.reseaulibre.ca/documentation/babel/) - [Babel configuration by Réseau Libre](https://wiki.reseaulibre.ca/documentation/babel/)
- [Babel in Freifunk Franken (German)](https://wiki.freifunk-franken.de/w/Freifunk-Gateway_aufsetzen/babeld) - [Babel in Freifunk Franken (German)](https://wiki.freifunk-franken.de/w/Freifunk-Gateway_aufsetzen/babeld)

View File

@ -102,7 +102,7 @@ protocol babel crxn_net {
interface "crxn_peer1" { interface "crxn_peer1" {
type wired; type wired;
rxcost 30; rxcost 200;
}; };
ipv6 { ipv6 {
@ -210,8 +210,8 @@ protocol babel crxn_net {
randomize router id on; randomize router id on;
interface "crxn_peer1" { interface "crxn_peer1" {
type wired; type tunnel;
rxcost 30; rxcost 200;
}; };
ipv6 { ipv6 {
@ -226,8 +226,8 @@ Here we create the Babel protocol, which is used to communicate with other CRXN
In `ipv6` our import/export filters and our routing table `crxn` are defined accordingly. Furthermore an import limit of 2000 routes is set. If a malicious actor now tries to crash a router, for example by propagating a lot of routes, we protect ourselves with this. If 2000 routes are imported via CRXN, every further route is blocked. Although we protect our memory with this, a high rejection of routes can lead to an increased CPU load. In `ipv6` our import/export filters and our routing table `crxn` are defined accordingly. Furthermore an import limit of 2000 routes is set. If a malicious actor now tries to crash a router, for example by propagating a lot of routes, we protect ourselves with this. If 2000 routes are imported via CRXN, every further route is blocked. Although we protect our memory with this, a high rejection of routes can lead to an increased CPU load.
With `interface "crxn*";` you can mark any interface starting with `crxn` as a peer, but then you cannot fine-tune a peer. With `interface "crxn*";` you can mark any interface starting with `crxn` as a peer, but then you cannot fine-tune a peer.
Therefore it makes sense to define a separate interface for each peer. As `type` there are `wired` and `wireless`. In general `wired` is always used. According to the `type` parameter babel is adjusted. With `rxcost` we define the "cost", which a peer needs to us. Without specification this is 96. Here it is recommended to take the latency as cost. If you want to avoid that packets are routed through you, you can increase the cost. Therefore it makes sense to define a separate interface for each peer. As `type` there are `wired`, `wireless` and `tunnel`. In general `tunnel` is always used. According to the `type` parameter babel is adjusted. With `rxcost` we define the "cost", which a peer needs to us. Without specification this is 96. If you want to avoid that packets are routed through you, you can increase the cost.
In this example, there is a connection to our peer via the interface `crxn_peer1`. This is a wired connection with a latency of 30ms. In this example, there is a connection to our peer via the interface `crxn_peer1`. This is a tunnel connection.
`randomize router id on;` If a Babel peer is restarted in a short time, other peers may reject its routes. To prevent this, you can randomize the first 32 bits of your router ID at each startup, which will cause other Babel peers to think you are a "new" peer and therefore accept your routes. `randomize router id on;` If a Babel peer is restarted in a short time, other peers may reject its routes. To prevent this, you can randomize the first 32 bits of your router ID at each startup, which will cause other Babel peers to think you are a "new" peer and therefore accept your routes.

29
docs/routing/bird/rtt.md Normal file
View File

@ -0,0 +1,29 @@
# Configuring RTT
The Babel RTT feature was [added](https://bird.network.cz/pipermail/bird-users/2023-October/017164.html) in bird 2.14. RTT stands for “Round Trip Time”. The feature makes it possible to set the rxcost based on the RTT.
With manually set rxcost and without rtt, a peering is as follows:
```
interface "crxn_peer2" {
type tunnel;
rxcost 130;
};
```
To add a peering with RTT, the attributes `rtt min`, `rtt max` and `rtt cost` are set:
```
interface "crxn_peer2" {
type tunnel;
rtt cost 96;
rtt min 10 ms;
rtt max 1000 ms;
};
```
The `rxcost` is set to the default value for the interface type. However, this is less relevant as the rxcost is also influenced by the RTT. If the RTT is less than 10 ms, no RTT-specific change is made; if the RTT is over 1000 ms or 1 s, the maximum RTT-specific cost is added. You can also use `rtt cost` to specify how high the maximum RTT specific costs may be. These are 96 for tunnel interfaces and 0 otherwise.
There is also the `max-rtt-penalty` setting, which specifies how quickly old RTT measurements should be discarded and therefore no longer included in the calculation (higher values mean that old measurements are discarded more quickly). The default value is 42, but if you have the feeling or observation that this is not suitable for the link between the routers you can increase the value, for example to `125` or similar.
## Links
- [Explanation of the default values](https://bird.network.cz/pipermail/bird-users/2024-July/017764.html) [[Alternative service](https://www.mail-archive.com/bird-users@network.cz/msg07657.html)]
- [Explanation of `rtt-min` and `rtt-max`]() [[Alternative service](https://www.mail-archive.com/bird-users@network.cz/msg08194.html)]
- [rtt at the re6st mesh network](https://alioth-lists.debian.net/pipermail/babel-users/2024-July/004176.html)

View File

@ -24,6 +24,7 @@ nav:
- bird: - bird:
- Setting up Bird: routing/bird/bird - Setting up Bird: routing/bird/bird
- max-len filter in bird: routing/bird/maxlen-filter - max-len filter in bird: routing/bird/maxlen-filter
- RTT: routing/bird/rtt
- babeld: - babeld:
- Setting up Babeld: routing/babeld/babeld - Setting up Babeld: routing/babeld/babeld
- Compile and install babeld: routing/babeld/compile-install - Compile and install babeld: routing/babeld/compile-install