07-26-2020 11:32 PM
Hello,
I was experimenting with route-map with continue clause, however the use of continue clause does not set well with my understanding of its processing.
1. A route matches a match statement execute its configured set values and then jumps to other sequence number as per configured continue statement.
2. If next route-map sequence has no match statement, it should execute configured set action.
1. Access and Core are OSPF neighbors.
2. On Core:
Core#show ip ospf nei Neighbor ID Pri State Dead Time Address Interface 192.168.0.6 1 FULL/DR 00:00:39 10.0.128.2 GigabitEthernet0/2 Core#show ip route ospf Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override, p - overrides from PfR Gateway of last resort is not set 192.168.0.0/32 is subnetted, 3 subnets O 192.168.0.6 [110/2] via 10.0.128.2, 00:39:07, GigabitEthernet0/2 O E2 192.168.1.0/24 [110/20] via 10.0.128.2, 00:39:07, GigabitEthernet0/2 192.168.2.0/32 is subnetted, 1 subnets O E2 192.168.2.1 [110/20] via 10.0.128.2, 00:39:07, GigabitEthernet0/2 Core# Core#
3. On Same Core, I have BGP configured to perform OSPF route redistribution:
OSPF route on Core with TAG 2001 Core#show ip route 192.168.2.1 Routing entry for 192.168.2.1/32 Known via "ospf 64501", distance 110, metric 20 Tag 2001, type extern 2, forward metric 1 Redistributing via bgp 64501 Advertised by bgp 64501 route-map OSPF2BGP Last update from 10.0.128.2 on GigabitEthernet0/2, 00:50:55 ago Routing Descriptor Blocks: * 10.0.128.2, from 192.168.0.6, 00:50:55 ago, via GigabitEthernet0/2 Route metric is 20, traffic share count is 1
Route tag 2001 Core#sh run | s r b router bgp 64501 bgp router-id 192.168.0.5 bgp log-neighbor-changes neighbor 10.0.0.2 remote-as 65001 neighbor 10.0.0.2 description Client neighbor 10.0.0.5 remote-as 64500 neighbor 10.0.0.5 description eBGP to Upstream ! address-family ipv4 network 10.0.0.0 mask 255.255.0.0 network 192.168.0.5 mask 255.255.255.255 redistribute ospf 64501 route-map OSPF2BGP neighbor 10.0.0.2 activate neighbor 10.0.0.2 send-community neighbor 10.0.0.2 next-hop-self neighbor 10.0.0.2 route-map FromClient in neighbor 10.0.0.5 activate neighbor 10.0.0.5 send-community neighbor 10.0.0.5 next-hop-self exit-address-family Core#
4. Route-map on Core
Core#show route-map OSPF2BGP route-map OSPF2BGP, permit, sequence 10 Match clauses: route-type external tag 2000 Continue: to next entry 11 Set clauses: community 64501:2 additive origin egp 64501 Policy routing matches: 0 packets, 0 bytes route-map OSPF2BGP, permit, sequence 11 Match clauses: route-type external Continue: to next entry 20 Set clauses: community 64501:2001 additive origin igp Policy routing matches: 0 packets, 0 bytes route-map OSPF2BGP, permit, sequence 20 Match clauses: Set clauses: weight 200 Policy routing matches: 0 packets, 0 bytes Core#
Result:
On core, I anticipated BGP attributes for route 192.168.2.1 to have:
1. community 64501:2001 and origin as IGP
2. As there is continue configured on in seq 11, control moves to seq 20 and assign weight 200.
However , seq 20 is never executed it seems. Any reason why ?
Core#show ip bgp 192.168.2.1 BGP routing table entry for 192.168.2.1/32, version 8 Paths: (1 available, best #1, table default) Advertised to update-groups: 4 Refresh Epoch 1 Local 10.0.128.2 from 0.0.0.0 (192.168.0.5) Origin IGP, metric 20, localpref 100, weight 32768, valid, sourced, best Community: 64501:2001 rx pathid: 0, tx pathid: 0x0
Solved! Go to Solution.
07-28-2020 03:36 AM
I agree with Paul and Giuseppe. Nowhere is this documented, so you kind of have to conclude that it doesn't work in redistribution just by trial and error. I have spent a good amount of time searching but could not find a single mention of this restriction anywhere...
The good thing is: now we know !
How would one proceed to get Cisco to include this in the documentation ?
07-27-2020 04:23 AM - edited 07-27-2020 04:28 AM
Hello
@verma-rohit wrote:
Hello,
2. If next route-map sequence has no match statement, it should execute configured set action.
FYI - TAGs don’t work with route-map redistribution into bgp, Communities are the equivalent.
As the match clause in stanza 10 was on external routes and the tags are not applicable then the router will just read the match clause which basically has no set statement.
I would assume the continue 11 will work however there isn't anything else to match upon because this was performed in stanza 10, if you tried to match on another prefix that isnt in the first match from stanza 10 then it should read stanza 11 but at this time there isn’t any else to match on .
Try the following and see if the community 64501:2 works for 192.168.2.0/24
neighbor 10.0.0.2 send-community both
neighbor 10.0.0.5 send-community both
ip prefix-list 10 permit 192.168.1.0/24
route-map OSPF2BGP permit 10
match ip address prefix-list 10
continue 11
set tag 2000 < …………. doesnt work
route-map OSPF2BGP permit 11
set community 64501:2 additive
07-27-2020 04:59 AM - edited 07-27-2020 05:01 AM
Hi Paul,
Thanks for your feedback.
FYI - TAGs don’t work with route-map redistribution into bgp, Communities are the equivalent.
I have another E2 route on Core , 192.168.1.0 with a TAG of 2000 and it matched seq 10 for redistributed into BGP.
Core#show ip route 192.168.1.0 Routing entry for 192.168.1.0/24 Known via "ospf 64501", distance 110, metric 20 Tag 2000, type extern 2, forward metric 1 Redistributing via bgp 64501 Advertised by bgp 64501 route-map OSPF2BGP Last update from 10.0.128.2 on GigabitEthernet0/2, 02:29:26 ago Routing Descriptor Blocks: * 10.0.128.2, from 192.168.0.6, 02:29:26 ago, via GigabitEthernet0/2 Route metric is 20, traffic share count is 1 Route tag 2000 Core# Core#show run | sec OSPF2BGP redistribute ospf 64501 route-map OSPF2BGP route-map OSPF2BGP permit 10 match tag 2000 match route-type external continue set origin egp 64501 set community 64501:2 additive route-map OSPF2BGP permit 11 match route-type external continue set origin igp set community 64501:2001 additive route-map OSPF2BGP permit 20 match route-type external set weight 200 Core# Core#show ip bgp 192.168.1.0 BGP routing table entry for 192.168.1.0/24, version 6 Paths: (1 available, best #1, table default) Advertised to update-groups: 5 Refresh Epoch 1 Local 10.0.128.2 from 0.0.0.0 (192.168.0.5) Origin EGP, metric 20, localpref 100, weight 32768, valid, sourced, best Community: 64501:2 rx pathid: 0, tx pathid: 0x0
Now continue in Seq 10 would allowed Seq 11 to execute as well and based on text which i shared in initial post, should have overwritten origin code and community value but it wasn't to be.
I will test the script which you asked me to configure and share my feedback.
07-27-2020 07:31 AM - edited 07-28-2020 02:16 AM
Hello
I could have made myself a bit clearer, You can match on a tagged ospf prefix that is to be redistributed into bgp but setting a tag then this wont work, And ive just realized you are indeed matching on a tag so my mistake, So referring back to your own OP for route-map stanza 11 ,the resulting logic would be the external ospf prefix 192.168.2.0 /24 with a tag 2001 should be set an origin IGB with a community PA of 64501:2001 which looks correct from your OP post.
10.0.128.2 from 0.0.0.0 (192.168.0.5)
Origin IGP, metric 20, localpref 100, weight 32768, valid, sourced, best
Community: 64501:2001
The reason for this would be that in stanza 10 a match is made on both external routes and tag of 2000 for 192.168.1.0/24 but not 192.168.2.0/24 then the continue is adhered in stanza 11(next stanza as no number is specified) where again a match is made on specifically any external routes that was not matched in the previous stanza and by time you get to the last stanza 20 all of the external routes have already been matched but with the continue the set command should be applied.
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