← All Use Cases
🌐
Fractional Factorial Design

BGP Route Convergence

Fractional factorial of 5 BGP timer and dampening parameters for convergence speed

Summary

This experiment investigates bgp route convergence. Fractional factorial of 5 BGP timer and dampening parameters for convergence speed.

The design varies 5 factors: keepalive s (s), ranging from 10 to 60, hold time s (s), ranging from 30 to 180, mrai s (s), ranging from 5 to 30, dampening, ranging from off to on, and bfd, ranging from off to on. The goal is to optimize 2 responses: convergence time s (s) (minimize) and route stability (%) (maximize). Fixed conditions held constant across all runs include as count = 50, topology = partial_mesh.

A fractional factorial design reduces the number of runs from 32 to 8 by deliberately confounding higher-order interactions. This is ideal for screening — identifying which of the 5 factors matter most before investing in a full study.

Key Findings

For convergence time s, the most influential factors were bfd (29.7%), keepalive s (21.9%), hold time s (17.0%). The best observed value was -0.3 (at keepalive s = 10, hold time s = 180, mrai s = 5).

For route stability, the most influential factors were mrai s (36.3%), bfd (32.0%), keepalive s (22.4%). The best observed value was 100.0 (at keepalive s = 10, hold time s = 180, mrai s = 5).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
keepalive_s1060s
hold_time_s30180s
mrai_s530s
dampeningoffon
bfdoffon

Fixed: as_count = 50, topology = partial_mesh

Responses

ResponseDirectionUnit
convergence_time_s↓ minimizes
route_stability↑ maximize%

Configuration

use_cases/51_bgp_route_convergence/config.json
{ "metadata": { "name": "BGP Route Convergence", "description": "Fractional factorial of 5 BGP timer and dampening parameters for convergence speed" }, "factors": [ { "name": "keepalive_s", "levels": [ "10", "60" ], "type": "continuous", "unit": "s" }, { "name": "hold_time_s", "levels": [ "30", "180" ], "type": "continuous", "unit": "s" }, { "name": "mrai_s", "levels": [ "5", "30" ], "type": "continuous", "unit": "s" }, { "name": "dampening", "levels": [ "off", "on" ], "type": "categorical", "unit": "" }, { "name": "bfd", "levels": [ "off", "on" ], "type": "categorical", "unit": "" } ], "fixed_factors": { "as_count": "50", "topology": "partial_mesh" }, "responses": [ { "name": "convergence_time_s", "optimize": "minimize", "unit": "s" }, { "name": "route_stability", "optimize": "maximize", "unit": "%" } ], "settings": { "operation": "fractional_factorial", "test_script": "use_cases/51_bgp_route_convergence/sim.sh" } }

Experimental Matrix

The Fractional Factorial Design produces 8 runs. Each row is one experiment with specific factor settings.

Runkeepalive_shold_time_smrai_sdampeningbfd
11018030offoff
260305offoff
3601805onoff
46018030onon
5101805offon
6603030offon
710305onon
8103030onoff

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/51_bgp_route_convergence/config.json
2

Generate the runner script

Terminal
$ doe generate --config use_cases/51_bgp_route_convergence/config.json \ --output use_cases/51_bgp_route_convergence/results/run.sh --seed 42
3

Execute the experiments

Terminal
$ bash use_cases/51_bgp_route_convergence/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/51_bgp_route_convergence/config.json
5

Get optimization recommendations

Terminal
$ doe optimize --config use_cases/51_bgp_route_convergence/config.json
6

Multi-objective optimization

With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.

Terminal
$ doe optimize --config use_cases/51_bgp_route_convergence/config.json --multi
7

Generate the HTML report

Terminal
$ doe report --config use_cases/51_bgp_route_convergence/config.json \ --output use_cases/51_bgp_route_convergence/results/report.html

Features Exercised

FeatureValue
Design typefractional_factorial
Factor typescontinuous (3), categorical (2)
Arg styledouble-dash
Responses2 (convergence_time_s ↓, route_stability ↑)
Total runs8

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: convergence_time_s

Top factors: bfd (29.7%), keepalive_s (21.9%), hold_time_s (17.0%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
keepalive_s11078.80131078.80130.6670.4513
hold_time_s1649.8012649.80120.4020.5541
mrai_s1523.2613523.26130.3230.5942
dampening1593.4013593.40130.3670.5712
bfd11981.35131981.35131.2240.3189
keepalive_s*hold_time_s1593.4012593.40120.3670.5712
keepalive_s*mrai_s11981.35131981.35131.2240.3189
keepalive_s*dampening1649.8012649.80120.4020.5541
keepalive_s*bfd1523.2613523.26130.3230.5942
hold_time_s*mrai_s11401.85121401.85120.8660.3947
hold_time_s*dampening11078.80121078.80120.6670.4513
hold_time_s*bfd11106.85121106.85120.6840.4459
mrai_s*dampening11106.85121106.85120.6840.4459
mrai_s*bfd11078.80131078.80130.6670.4513
dampening*bfd11401.85131401.85130.8660.3947
Error(LenthPSE)58091.00941618.2019
Total77335.31881047.9027

Pareto Chart

Pareto chart for convergence_time_s

Main Effects Plot

Main effects plot for convergence_time_s

Normal Probability Plot of Effects

Normal probability plot for convergence_time_s

Half-Normal Plot of Effects

Half-normal plot for convergence_time_s

Model Diagnostics

Model diagnostics for convergence_time_s

Response: route_stability

Top factors: mrai_s (36.3%), bfd (32.0%), keepalive_s (22.4%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
keepalive_s166.125066.12500.6670.4513
hold_time_s110.125010.12500.1020.7623
mrai_s1172.9800172.98001.7440.2439
dampening10.04500.04500.0000.9838
bfd1134.4800134.48001.3560.2968
keepalive_s*hold_time_s10.04500.04500.0000.9838
keepalive_s*mrai_s1134.4800134.48001.3560.2968
keepalive_s*dampening110.125010.12500.1020.7623
keepalive_s*bfd1172.9800172.98001.7440.2439
hold_time_s*mrai_s169.620069.62000.7020.4403
hold_time_s*dampening166.125066.12500.6670.4513
hold_time_s*bfd11.62001.62000.0160.9033
mrai_s*dampening11.62001.62000.0160.9033
mrai_s*bfd166.125066.12500.6670.4513
dampening*bfd169.620069.62000.7020.4403
Error(LenthPSE)5495.937599.1875
Total7454.995064.9993

Pareto Chart

Pareto chart for route_stability

Main Effects Plot

Main effects plot for route_stability

Normal Probability Plot of Effects

Normal probability plot for route_stability

Half-Normal Plot of Effects

Half-normal plot for route_stability

Model Diagnostics

Model diagnostics for route_stability

Response Surface Plots

3D surfaces fitted with quadratic RSM. Red dots are observed data points.

convergence time s hold time s vs mrai s

RSM surface: convergence time s hold time s vs mrai s

convergence time s keepalive s vs hold time s

RSM surface: convergence time s keepalive s vs hold time s

convergence time s keepalive s vs mrai s

RSM surface: convergence time s keepalive s vs mrai s

route stability hold time s vs mrai s

RSM surface: route stability hold time s vs mrai s

route stability keepalive s vs hold time s

RSM surface: route stability keepalive s vs hold time s

route stability keepalive s vs mrai s

RSM surface: route stability keepalive s vs mrai s

Multi-Objective Optimization

When responses compete, Derringer–Suich desirability finds the best compromise. Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.

Overall Desirability
D = 0.9545

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
convergence_time_s 1.0
0.9545
-0.30 0.9545 -0.30 s
route_stability 1.5
0.9545
100.00 0.9545 100.00 %

Recommended Settings

FactorValue
keepalive_s10 s
hold_time_s180 s
mrai_s5 s
dampeningoff
bfdon

Source: from observed run #7

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
route_stability100.00100.00+0.00

Top 3 Runs by Desirability

RunDFactor Settings
#80.5647keepalive_s=60, hold_time_s=30, mrai_s=30, dampening=off, bfd=on
#40.4009keepalive_s=10, hold_time_s=30, mrai_s=30, dampening=on, bfd=off

Model Quality

ResponseType
route_stability0.6094linear

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.9545 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- convergence_time_s 1.0 0.9545 -0.30 s ↓ route_stability 1.5 0.9545 100.00 % ↑ Recommended settings: keepalive_s = 10 s hold_time_s = 180 s mrai_s = 5 s dampening = off bfd = on (from observed run #7) Trade-off summary: convergence_time_s: -0.30 (best observed: -0.30, sacrifice: +0.00) route_stability: 100.00 (best observed: 100.00, sacrifice: +0.00) Model quality: convergence_time_s: R² = 0.9379 (linear) route_stability: R² = 0.6094 (linear) Top 3 observed runs by overall desirability: 1. Run #7 (D=0.9545): keepalive_s=10, hold_time_s=180, mrai_s=5, dampening=off, bfd=on 2. Run #8 (D=0.5647): keepalive_s=60, hold_time_s=30, mrai_s=30, dampening=off, bfd=on 3. Run #4 (D=0.4009): keepalive_s=10, hold_time_s=30, mrai_s=30, dampening=on, bfd=off

Full Analysis Output

doe analyze
=== Main Effects: convergence_time_s === Factor Effect Std Error % Contribution -------------------------------------------------------------- bfd 31.4750 11.4450 29.7% keepalive_s -23.2250 11.4450 21.9% hold_time_s 18.0250 11.4450 17.0% dampening 17.2250 11.4450 16.2% mrai_s 16.1750 11.4450 15.2% === ANOVA Table: convergence_time_s === Source DF SS MS F p-value ----------------------------------------------------------------------------- keepalive_s 1 1078.8013 1078.8013 0.667 0.4513 hold_time_s 1 649.8012 649.8012 0.402 0.5541 mrai_s 1 523.2613 523.2613 0.323 0.5942 dampening 1 593.4013 593.4013 0.367 0.5712 bfd 1 1981.3513 1981.3513 1.224 0.3189 keepalive_s*hold_time_s 1 593.4012 593.4012 0.367 0.5712 keepalive_s*mrai_s 1 1981.3513 1981.3513 1.224 0.3189 keepalive_s*dampening 1 649.8012 649.8012 0.402 0.5541 keepalive_s*bfd 1 523.2613 523.2613 0.323 0.5942 hold_time_s*mrai_s 1 1401.8512 1401.8512 0.866 0.3947 hold_time_s*dampening 1 1078.8012 1078.8012 0.667 0.4513 hold_time_s*bfd 1 1106.8512 1106.8512 0.684 0.4459 mrai_s*dampening 1 1106.8512 1106.8512 0.684 0.4459 mrai_s*bfd 1 1078.8013 1078.8013 0.667 0.4513 dampening*bfd 1 1401.8513 1401.8513 0.866 0.3947 Error (Lenth PSE) 5 8091.0094 1618.2019 Total 7 7335.3188 1047.9027 Note: Error estimated using Lenth's pseudo-standard-error (unreplicated design) === Interaction Effects: convergence_time_s === Factor A Factor B Interaction % Contribution ------------------------------------------------------------------------ keepalive_s mrai_s -31.4750 13.7% hold_time_s mrai_s 26.4750 11.5% dampening bfd 26.4750 11.5% hold_time_s bfd -23.5250 10.3% mrai_s dampening -23.5250 10.3% hold_time_s dampening 23.2250 10.1% mrai_s bfd 23.2250 10.1% keepalive_s dampening -18.0250 7.9% keepalive_s hold_time_s -17.2250 7.5% keepalive_s bfd -16.1750 7.1% === Summary Statistics: convergence_time_s === keepalive_s: Level N Mean Std Min Max ------------------------------------------------------------ 10 4 55.9750 34.2626 16.0000 98.9000 60 4 32.7500 30.1923 -0.3000 65.0000 hold_time_s: Level N Mean Std Min Max ------------------------------------------------------------ 180 4 35.3500 32.4915 -0.3000 65.0000 30 4 53.3750 34.2463 15.8000 98.9000 mrai_s: Level N Mean Std Min Max ------------------------------------------------------------ 30 4 36.2750 24.4951 15.8000 65.0000 5 4 52.4500 40.8739 -0.3000 98.9000 dampening: Level N Mean Std Min Max ------------------------------------------------------------ off 4 35.7500 23.2961 15.8000 60.7000 on 4 52.9750 41.2868 -0.3000 98.9000 bfd: Level N Mean Std Min Max ------------------------------------------------------------ off 4 28.6250 24.9110 -0.3000 50.5000 on 4 60.1000 34.1189 15.8000 98.9000 === Main Effects: route_stability === Factor Effect Std Error % Contribution -------------------------------------------------------------- mrai_s 9.3000 2.8504 36.3% bfd -8.2000 2.8504 32.0% keepalive_s 5.7500 2.8504 22.4% hold_time_s -2.2500 2.8504 8.8% dampening -0.1500 2.8504 0.6% === ANOVA Table: route_stability === Source DF SS MS F p-value ----------------------------------------------------------------------------- keepalive_s 1 66.1250 66.1250 0.667 0.4513 hold_time_s 1 10.1250 10.1250 0.102 0.7623 mrai_s 1 172.9800 172.9800 1.744 0.2439 dampening 1 0.0450 0.0450 0.000 0.9838 bfd 1 134.4800 134.4800 1.356 0.2968 keepalive_s*hold_time_s 1 0.0450 0.0450 0.000 0.9838 keepalive_s*mrai_s 1 134.4800 134.4800 1.356 0.2968 keepalive_s*dampening 1 10.1250 10.1250 0.102 0.7623 keepalive_s*bfd 1 172.9800 172.9800 1.744 0.2439 hold_time_s*mrai_s 1 69.6200 69.6200 0.702 0.4403 hold_time_s*dampening 1 66.1250 66.1250 0.667 0.4513 hold_time_s*bfd 1 1.6200 1.6200 0.016 0.9033 mrai_s*dampening 1 1.6200 1.6200 0.016 0.9033 mrai_s*bfd 1 66.1250 66.1250 0.667 0.4513 dampening*bfd 1 69.6200 69.6200 0.702 0.4403 Error (Lenth PSE) 5 495.9375 99.1875 Total 7 454.9950 64.9993 Note: Error estimated using Lenth's pseudo-standard-error (unreplicated design) === Interaction Effects: route_stability === Factor A Factor B Interaction % Contribution ------------------------------------------------------------------------ keepalive_s bfd -9.3000 20.7% keepalive_s mrai_s 8.2000 18.2% hold_time_s mrai_s -5.9000 13.1% dampening bfd -5.9000 13.1% hold_time_s dampening -5.7500 12.8% mrai_s bfd -5.7500 12.8% keepalive_s dampening 2.2500 5.0% hold_time_s bfd 0.9000 2.0% mrai_s dampening 0.9000 2.0% keepalive_s hold_time_s 0.1500 0.3% === Summary Statistics: route_stability === keepalive_s: Level N Mean Std Min Max ------------------------------------------------------------ 10 4 81.0500 3.2645 77.9000 85.3000 60 4 86.8000 10.9072 75.7000 100.0000 hold_time_s: Level N Mean Std Min Max ------------------------------------------------------------ 180 4 85.0500 10.7271 75.7000 100.0000 30 4 82.8000 5.7637 77.9000 91.1000 mrai_s: Level N Mean Std Min Max ------------------------------------------------------------ 30 4 79.2750 2.6094 75.7000 81.8000 5 4 88.5750 9.3379 77.9000 100.0000 dampening: Level N Mean Std Min Max ------------------------------------------------------------ off 4 84.0000 5.4191 79.2000 91.1000 on 4 83.8500 11.0582 75.7000 100.0000 bfd: Level N Mean Std Min Max ------------------------------------------------------------ off 4 88.0250 9.4778 79.2000 100.0000 on 4 79.8250 4.1242 75.7000 85.3000

Optimization Recommendations

doe optimize
=== Optimization: convergence_time_s === Direction: minimize Best observed run: #7 keepalive_s = 10 hold_time_s = 180 mrai_s = 5 dampening = off bfd = on Value: -0.3 RSM Model (linear, R² = 0.7973, Adj R² = 0.2906): Coefficients: intercept +44.3625 keepalive_s +11.5625 hold_time_s +11.7125 mrai_s +11.7625 dampening +12.1625 bfd -13.1875 Predicted optimum (from linear model, at observed points): keepalive_s = 60 hold_time_s = 180 mrai_s = 5 dampening = on bfd = off Predicted value: 81.2250 Surface optimum (via L-BFGS-B, linear model): keepalive_s = 10 hold_time_s = 30 mrai_s = 5 dampening = off bfd = on Predicted value: -16.0250 Model quality: Good fit — general trends are captured, some noise remains. Factor importance: 1. bfd (effect: -26.4, contribution: 21.8%) 2. dampening (effect: 24.3, contribution: 20.1%) 3. mrai_s (effect: -23.5, contribution: 19.5%) 4. hold_time_s (effect: -23.4, contribution: 19.4%) 5. keepalive_s (effect: 23.1, contribution: 19.1%) === Optimization: route_stability === Direction: maximize Best observed run: #7 keepalive_s = 10 hold_time_s = 180 mrai_s = 5 dampening = off bfd = on Value: 100.0 RSM Model (linear, R² = 0.2602, Adj R² = -1.5893): Coefficients: intercept +83.9250 keepalive_s -2.5750 hold_time_s +0.8000 mrai_s -0.4500 dampening -0.5500 bfd +2.6500 Predicted optimum (from linear model, at observed points): keepalive_s = 10 hold_time_s = 180 mrai_s = 5 dampening = off bfd = on Predicted value: 90.9500 Surface optimum (via L-BFGS-B, linear model): keepalive_s = 10 hold_time_s = 180 mrai_s = 5 dampening = off bfd = on Predicted value: 90.9500 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. bfd (effect: 5.3, contribution: 37.7%) 2. keepalive_s (effect: -5.2, contribution: 36.7%) 3. hold_time_s (effect: -1.6, contribution: 11.4%) 4. dampening (effect: -1.1, contribution: 7.8%) 5. mrai_s (effect: 0.9, contribution: 6.4%)
← Previous: DNS Resolver Caching Next: VPN Tunnel MTU →