r2 and r3 receives those routes with aigp-metric TLV increased by 20,
and 30 appropriately.
-r1 receives routes with aigp-metric TLV 91,101 and 92,102 appropriately.
+r1 receives routes with aigp-metric TLV 111,131 and 112,132 appropriately.
"""
import os
expected = {
"paths": [
{
- "aigpMetric": 101,
+ "aigpMetric": 111,
"valid": True,
- "bestpath": {"selectionReason": "Router ID"},
- "nexthops": [{"hostname": "r2", "accessible": True}],
+ "nexthops": [{"hostname": "r3", "accessible": True}],
},
{
- "aigpMetric": 91,
+ "aigpMetric": 131,
"valid": True,
- "nexthops": [{"hostname": "r3", "accessible": True}],
+ "bestpath": {"selectionReason": "Neighbor IP"},
+ "nexthops": [{"hostname": "r2", "accessible": True}],
},
]
}
"routes": {
"10.0.0.71/32": [
{
- "aigpMetric": 101,
+ "aigpMetric": 111,
+ "bestpath": {"selectionReason": "AIGP"},
"valid": True,
+ "nexthops": [{"hostname": "r3", "accessible": True}],
},
{
- "aigpMetric": 91,
+ "aigpMetric": 131,
"valid": True,
- "bestpath": {"selectionReason": "AIGP"},
- "nexthops": [{"hostname": "r3", "accessible": True}],
+ "nexthops": [{"hostname": "r2", "accessible": True}],
},
],
"10.0.0.72/32": [
{
- "aigpMetric": 102,
+ "aigpMetric": 112,
+ "bestpath": {"selectionReason": "AIGP"},
"valid": True,
+ "nexthops": [{"hostname": "r3", "accessible": True}],
},
{
- "aigpMetric": 92,
+ "aigpMetric": 132,
"valid": True,
- "bestpath": {"selectionReason": "AIGP"},
- "nexthops": [{"hostname": "r3", "accessible": True}],
+ "nexthops": [{"hostname": "r2", "accessible": True}],
},
],
}
# Initial converge, AIGP is not involved in best-path selection process
test_func = functools.partial(_bgp_converge)
- _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assert result is None, "can't converge initially"
# Enable `bgp bestpath aigp`
# r4, 10.0.0.71/32 with aigp-metric 71
test_func = functools.partial(_bgp_check_aigp_metric, r4, "10.0.0.71/32", 71)
- _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assert result is None, "aigp-metric for 10.0.0.71/32 is not 71"
# r5, 10.0.0.72/32 with aigp-metric 72
test_func = functools.partial(_bgp_check_aigp_metric, r5, "10.0.0.72/32", 72)
- _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assert result is None, "aigp-metric for 10.0.0.72/32 is not 72"
# r2, 10.0.0.71/32 with aigp-metric 101 (71 + 30)
test_func = functools.partial(_bgp_check_aigp_metric, r2, "10.0.0.71/32", 101)
- _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assert result is None, "aigp-metric for 10.0.0.71/32 is not 101"
# r3, 10.0.0.72/32 with aigp-metric 92 (72 + 20)
test_func = functools.partial(_bgp_check_aigp_metric, r3, "10.0.0.72/32", 92)
- _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assert result is None, "aigp-metric for 10.0.0.72/32 is not 92"
# r1, check if AIGP is considered in best-path selection (lowest wins)
test_func = functools.partial(_bgp_check_aigp_metric_bestpath)
- _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assert result is None, "AIGP attribute is not considered in best-path selection"