05-02-2021 12:31 AM
Hi,
In the network below, the objective is redundant reachability to prefix 1.1.1.1 (say public cloud hosting) routers csr2 and csr3 (internal network).
In the order of operations, BGP was configured and verified first, followed by OSPF configuration. The working state is like this - csr2 and csr3 can reach 1.1.1. directly via BGP:
csr2#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
1, (received & used)
10.0.12.1 from 10.0.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
rx pathid: 0, tx pathid: 0x0
csr2#show ip ospf database ext 1.1.1.1
OSPF Router with ID (2.2.2.2) (Process ID 1)
Type-5 AS External Link States
LS age: 82
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 1.1.1.1 (External Network Number )
Advertising Router: 2.2.2.2
LS Seq Number: 80000001
Checksum: 0x9704
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 1
Forward Address: 0.0.0.0
External Route Tag: 12
LS age: 45
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 1.1.1.1 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x8B0B
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 1
Forward Address: 0.0.0.0
External Route Tag: 13
csr3#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 2
1, (received & used)
10.0.13.1 from 10.0.13.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
rx pathid: 0, tx pathid: 0x0
csr3#show ip ospf data ext 1.1.1.1
OSPF Router with ID (3.3.3.3) (Process ID 1)
Type-5 AS External Link States
LS age: 214
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 1.1.1.1 (External Network Number )
Advertising Router: 2.2.2.2
LS Seq Number: 80000001
Checksum: 0x9704
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 1
Forward Address: 0.0.0.0
External Route Tag: 12
LS age: 176
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 1.1.1.1 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x8B0B
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 1
Forward Address: 0.0.0.0
External Route Tag: 13
Now, shut/no shut the BGP neigh 10.0.12.1 on csr2 - or shut/noshut the interface long enough for bgp to go down. The state now looks like this:
csr2#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 7
Paths: (2 available, best #2, table default)
Not advertised to any peer
Refresh Epoch 2
1, (received & used)
10.0.12.1 from 10.0.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external
rx pathid: 0, tx pathid: 0
Refresh Epoch 1
Local
10.0.23.3 from 0.0.0.0 (2.2.2.2)
Origin incomplete, metric 1, localpref 100, weight 32768, valid, sourced, best
rx pathid: 0, tx pathid: 0x0
csr2#show ip ospf data ext 1.1.1.1
OSPF Router with ID (2.2.2.2) (Process ID 1)
Type-5 AS External Link States
LS age: 358
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 1.1.1.1 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x8B0B
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 1
Forward Address: 0.0.0.0
External Route Tag: 13
csr2#show ip route 1.1.1.1
Routing entry for 1.1.1.1/32
Known via "ospf 1", distance 110, metric 1
Tag 13, type extern 2, forward metric 1
Redistributing via bgp 2
Advertised by bgp 2 match internal external 1 & 2
Last update from 10.0.23.3 on GigabitEthernet3, 00:28:14 ago
Routing Descriptor Blocks:
* 10.0.23.3, from 3.3.3.3, 00:28:14 ago, via GigabitEthernet3
Route metric is 1, traffic share count is 1
Route tag 13
csr3#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 3
1, (received & used)
10.0.13.1 from 10.0.13.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
rx pathid: 0, tx pathid: 0x0
csr3#show ip ospf data ext 1.1.1.1
OSPF Router with ID (3.3.3.3) (Process ID 1)
Type-5 AS External Link States
LS age: 375
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 1.1.1.1 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x8B0B
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 1
Forward Address: 0.0.0.0
External Route Tag: 13
csr3#show ip route 1.1.1.1
Routing entry for 1.1.1.1/32
Known via "bgp 2", distance 20, metric 0
Tag 1, type external
Redistributing via ospf 1
Advertised by ospf 1 subnets tag 13
Last update from 10.0.13.1 00:36:12 ago
Routing Descriptor Blocks:
* 10.0.13.1, from 10.0.13.1, 00:36:12 ago
Route metric is 0, traffic share count is 1
AS Hops 1
Route tag 1
MPLS label: noneHere, if I shut/noshut csr2:G3 (to drop/re-estab ospf adj), then csr2 will route to 1.1.1.1 via bgp again.
What's causing this behavior and how to fix this?
Thanks,
Rick.
Solved! Go to Solution.
05-02-2021 01:24 AM
Found the problem. Must not redistribute 1.1.1.1 from ospf back into BGP on csr2 or csr3. I think it must a timing thing as it works initially but after a bgp failure event, ospf redistributed route which is already in the bgp database isn't getting kicked out by ebgp learnt same route.
Filtering can be done based on tag or prefix match - done using deny on prefix below for csr2. Similar on csr3 as well.
router bgp 2 redistribute ospf 1 match internal external 1 external 2 route-map rm2-ospf-into-bgp route-map rm2-ospf-into-bgp deny 10 match ip address prefix-list rm2-ospf-into-bgp-1 route-map rm2-ospf-into-bgp permit 20 ip prefix-list rm2-ospf-into-bgp-1 seq 5 permit 1.1.1.1/32
Regards,
Rick.
05-02-2021 02:05 AM - edited 05-02-2021 02:19 AM
Hello
It a race condition
BGP advertises a ebgp route with a admin distance of 20 and no weight, however a redistributed igp route into bgp is advertised with a admin distance of 20 plus a default weight of 32768,
So when you shut/no shut the ebgp links from bgp1 between either 2 or 3, then 1.1.1.1 will be redistributed from bgp-into ospf and then from ospf back into bgp and in bgp best path selection weight has precedence this is what you see.
localpref 100, weight 32768, valid, sourced, best
To negate this, set the default weight on rtr 2/3 to be higher than 32768
neighbor xxxx weight 40000
05-02-2021 01:24 AM
Found the problem. Must not redistribute 1.1.1.1 from ospf back into BGP on csr2 or csr3. I think it must a timing thing as it works initially but after a bgp failure event, ospf redistributed route which is already in the bgp database isn't getting kicked out by ebgp learnt same route.
Filtering can be done based on tag or prefix match - done using deny on prefix below for csr2. Similar on csr3 as well.
router bgp 2 redistribute ospf 1 match internal external 1 external 2 route-map rm2-ospf-into-bgp route-map rm2-ospf-into-bgp deny 10 match ip address prefix-list rm2-ospf-into-bgp-1 route-map rm2-ospf-into-bgp permit 20 ip prefix-list rm2-ospf-into-bgp-1 seq 5 permit 1.1.1.1/32
Regards,
Rick.
05-02-2021 02:05 AM - edited 05-02-2021 02:19 AM
Hello
It a race condition
BGP advertises a ebgp route with a admin distance of 20 and no weight, however a redistributed igp route into bgp is advertised with a admin distance of 20 plus a default weight of 32768,
So when you shut/no shut the ebgp links from bgp1 between either 2 or 3, then 1.1.1.1 will be redistributed from bgp-into ospf and then from ospf back into bgp and in bgp best path selection weight has precedence this is what you see.
localpref 100, weight 32768, valid, sourced, best
To negate this, set the default weight on rtr 2/3 to be higher than 32768
neighbor xxxx weight 40000
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide