nixos/home: Prefer dave for stream RSTP
Set explicit port costs so `stream` prefers `dave` over `jim`. Trigger `mstpd` when the bridge is configured, before it is routable.
This commit is contained in:
@@ -76,8 +76,9 @@ box sets:
|
|||||||
## Switching (RSTP)
|
## Switching (RSTP)
|
||||||
|
|
||||||
`stream` is dual-homed to both switches: `lan-jim` (igc) and `lan-dave` (mlx4_en), both MTU 9000,
|
`stream` is dual-homed to both switches: `lan-jim` (igc) and `lan-dave` (mlx4_en), both MTU 9000,
|
||||||
are enslaved to the `lan` bridge with `STP=true`. [`routing-common/mstpd.nix`](../../../nixos/boxes/home/routing-common/mstpd.nix)
|
are enslaved to the `lan` bridge with `STP=true`. The explicit bridge-port costs prefer
|
||||||
runs a patched `mstpd` and forces RSTP on `lan` once it's routable, so exactly one uplink carries
|
`lan-dave` at 10 over `lan-jim` at 100. [`routing-common/mstpd.nix`](../../../nixos/boxes/home/routing-common/mstpd.nix)
|
||||||
|
runs a patched `mstpd` and forces RSTP on `lan` once it is configured, so exactly one uplink carries
|
||||||
traffic at a time. (The remaining NICs are renamed `et2`/`et5` and left unconfigured.)
|
traffic at a time. (The remaining NICs are renamed `et2`/`et5` and left unconfigured.)
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ in
|
|||||||
services = {
|
services = {
|
||||||
networkd-dispatcher.rules = {
|
networkd-dispatcher.rules = {
|
||||||
configure-mstpd = {
|
configure-mstpd = {
|
||||||
onState = [ "routable" ];
|
onState = [ "configured" ];
|
||||||
script = ''
|
script = ''
|
||||||
#!${pkgs.runtimeShell}
|
#!${pkgs.runtimeShell}
|
||||||
if [ "$IFACE" = "lan" ]; then
|
if [ "$IFACE" = "lan" ]; then
|
||||||
|
|||||||
@@ -115,10 +115,7 @@
|
|||||||
Name = "lan";
|
Name = "lan";
|
||||||
Kind = "bridge";
|
Kind = "bridge";
|
||||||
};
|
};
|
||||||
extraConfig = ''
|
bridgeConfig.STP = true;
|
||||||
[Bridge]
|
|
||||||
STP=true
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
links = {
|
links = {
|
||||||
@@ -175,10 +172,12 @@
|
|||||||
"50-lan-jim" = {
|
"50-lan-jim" = {
|
||||||
matchConfig.Name = "lan-jim";
|
matchConfig.Name = "lan-jim";
|
||||||
networkConfig.Bridge = "lan";
|
networkConfig.Bridge = "lan";
|
||||||
|
bridgeConfig.Cost = 100;
|
||||||
};
|
};
|
||||||
"50-lan-dave" = {
|
"50-lan-dave" = {
|
||||||
matchConfig.Name = "lan-dave";
|
matchConfig.Name = "lan-dave";
|
||||||
networkConfig.Bridge = "lan";
|
networkConfig.Bridge = "lan";
|
||||||
|
bridgeConfig.Cost = 10;
|
||||||
};
|
};
|
||||||
|
|
||||||
"50-wan-ifb" = {
|
"50-wan-ifb" = {
|
||||||
|
|||||||
Reference in New Issue
Block a user