]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: Check if the route over eBGP is preferred when eBGP-OAD is used
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 11 Jan 2024 08:34:05 +0000 (10:34 +0200)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 11 Jan 2024 08:53:57 +0000 (10:53 +0200)
If at least one of the candidate routes was received via EBGP, remove from
consideration all routes that were received via EBGP-OAD and IBGP.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
tests/topotests/bgp_oad/r1/frr.conf
tests/topotests/bgp_oad/r2/frr.conf
tests/topotests/bgp_oad/r3/frr.conf
tests/topotests/bgp_oad/r4/frr.conf [new file with mode: 0644]
tests/topotests/bgp_oad/r5/frr.conf [new file with mode: 0644]
tests/topotests/bgp_oad/test_bgp_oad.py

index 471c5ef52ddf6a9579769c9fc421c71bacf76275..39045ba648eb9db1f8865dcf31ddf6be1c9d4244 100644 (file)
@@ -8,4 +8,14 @@ router bgp 65001
  neighbor 192.168.1.2 timers 1 3
  neighbor 192.168.1.2 timers connect 1
  neighbor 192.168.1.2 oad
+ neighbor 192.168.1.4 remote-as external
+ neighbor 192.168.1.4 timers 1 3
+ neighbor 192.168.1.4 timers connect 1
+ address-family ipv4 unicast
+  neighbor 192.168.1.4 route-map r4 in
+ exit-address-family
 !
+route-map r4 permit 10
+ set local-preference 123
+ set metric 123
+exit
index c98b115896be991cc9d88544b25157b197994c86..fdd23f32b48b666cde95b5db0044d07ec0c3d947 100644 (file)
@@ -11,8 +11,8 @@ router bgp 65002
  neighbor 192.168.1.1 timers 1 3
  neighbor 192.168.1.1 timers connect 1
  neighbor 192.168.1.1 oad
- neighbor 192.168.2.1 remote-as external
- neighbor 192.168.2.1 timers 1 3
- neighbor 192.168.2.1 timers connect 1
- neighbor 192.168.2.1 oad
+ neighbor 192.168.2.3 remote-as external
+ neighbor 192.168.2.3 timers 1 3
+ neighbor 192.168.2.3 timers connect 1
+ neighbor 192.168.2.3 oad
 !
index 875079a4f93d4503f3d28f337b37f170deaafb70..02dd5adfe190a19829c06abdec98bc43180cc21f 100644 (file)
@@ -3,7 +3,7 @@ int lo
  ip address 10.10.10.10/32
 !
 int r3-eth0
- ip address 192.168.2.1/24
+ ip address 192.168.2.3/24
 !
 router bgp 65003
  no bgp ebgp-requires-policy
diff --git a/tests/topotests/bgp_oad/r4/frr.conf b/tests/topotests/bgp_oad/r4/frr.conf
new file mode 100644 (file)
index 0000000..83dcf39
--- /dev/null
@@ -0,0 +1,16 @@
+!
+int r4-eth0
+ ip address 192.168.1.4/24
+!
+int r4-eth1
+ ip address 192.168.4.4/24
+!
+router bgp 65004
+ no bgp ebgp-requires-policy
+ neighbor 192.168.1.1 remote-as external
+ neighbor 192.168.1.1 timers 1 3
+ neighbor 192.168.1.1 timers connect 1
+ neighbor 192.168.4.5 remote-as external
+ neighbor 192.168.4.5 timers 1 3
+ neighbor 192.168.4.5 timers connect 1
+!
diff --git a/tests/topotests/bgp_oad/r5/frr.conf b/tests/topotests/bgp_oad/r5/frr.conf
new file mode 100644 (file)
index 0000000..f8e1609
--- /dev/null
@@ -0,0 +1,17 @@
+!
+int lo
+ ip address 10.10.10.10/32
+!
+int r5-eth0
+ ip address 192.168.4.5/24
+!
+router bgp 65005
+ no bgp ebgp-requires-policy
+ neighbor 192.168.4.4 remote-as external
+ neighbor 192.168.4.4 timers 1 3
+ neighbor 192.168.4.4 timers connect 1
+ !
+ address-family ipv4 unicast
+  redistribute connected
+ exit-address-family
+!
index a2e3eddc2610a1bf2d41c928eef7609313698a17..b26c5483574882e8d0bb3986a68643113a337f23 100644 (file)
@@ -31,7 +31,7 @@ pytestmark = [pytest.mark.bgpd]
 
 
 def setup_module(mod):
-    topodef = {"s1": ("r1", "r2"), "s2": ("r2", "r3")}
+    topodef = {"s1": ("r1", "r2", "r4"), "s2": ("r2", "r3"), "s3": ("r4", "r5")}
     tgen = Topogen(topodef, mod.__name__)
     tgen.start_topology()
 
@@ -64,7 +64,21 @@ def test_bgp_dynamic_capability_role():
                     "aspath": {"string": "65002 65003"},
                     "metric": 123,
                     "locPrf": 123,
-                }
+                    "peer": {
+                        "hostname": "r2",
+                        "type": "external (oad)",
+                    },
+                },
+                {
+                    "aspath": {"string": "65004 65005"},
+                    "metric": 123,
+                    "locPrf": 123,
+                    "bestpath": {"selectionReason": "Peer Type"},
+                    "peer": {
+                        "hostname": "r4",
+                        "type": "external",
+                    },
+                },
             ]
         }
         return topotest.json_cmp(output, expected)