Jump to chapter (13)
The big picture: routes crossing borders
What you will learn in this module. By the end of these 13 chapters you will be able to explain, configure, verify and troubleshoot everything in the first block of the CCNP ENARSI 300-410 v1.1 blueprint: administrative distance (1.1), route maps for any routing protocol (1.2), loop prevention with filtering, tagging, split horizon and route poisoning (1.3), and redistribution between any routing protocols or routing sources (1.4). Along the way you will master prefix lists, ACL-based route matching and distribute-lists, because every one of those blueprint items depends on them.
Prerequisites
- You can configure basic EIGRP and single-area OSPF and read
show ip route(ENCOR routing modules). - You know what an ACL, a wildcard mask and a subnet mask are (CCNA).
- You have seen the structured troubleshooting method from the ENARSI start module: define the problem, gather facts, test one hypothesis at a time.
We will not re-teach how EIGRP or OSPF form neighbours. Deep EIGRP, OSPF and BGP troubleshooting come in the next ENARSI modules; here we focus on what happens between routing sources.
An analogy: two countries and a border post
Imagine two countries that speak different languages and use different currencies. A company has offices in both, so goods must cross the border every day. At the border post an officer does four jobs:
- Decides whom to believe. If two messengers bring different news about the same town, the officer trusts the more reliable source. In a router that ranking is administrative distance (AD).
- Converts currency. A price in rupees means nothing across the border until it is converted. Routing metrics are the same: an OSPF cost of 3 means nothing to EIGRP, so the router assigns a seed metric when it redistributes.
- Applies customs rules. Some goods may cross, others may not. Prefix lists, route maps and distribute-lists are the customs rulebook.
- Stamps passports. A stamp says "this traveller came from country A". If the same traveller tries to re-enter country A through a second border post pretending to be foreign, the stamp gives him away. That stamp is a route tag, and it is the main tool against redistribution loops.
Keep this picture in mind. Every chapter in this module is one of these four jobs, done carefully.
Why it matters in real networks
Pure single-protocol networks are rare. Companies merge (one side runs EIGRP, the other OSPF), branches connect over BGP to a provider, static routes point at firewalls, and data centers inject routes into the campus. Wherever two routing sources meet, a router must redistribute: copy routes learned from one source into another protocol. Done carelessly, redistribution causes three classic failures: routes that silently never appear, traffic that takes a long detour (suboptimal routing), and routing loops or flapping routes. ENARSI loves these problems because they test whether you understand the rules, not just the commands.
The module lab: Delhi runs EIGRP 100, Bengaluru runs OSPF area 0, and BR1 and BR2 run both. Links: E1-BR1 10.1.1.0/24, E1-BR2 10.1.2.0/24, BR1-O1 10.2.1.0/24, BR2-O1 10.2.2.0/24.
The lab you will build and break
Both labs in this module use the topology above. E1 is the Delhi core (EIGRP 100, router ID 5.5.5.5). It has the Delhi users on 172.16.10.0/24 and a partner network 192.168.50.0/24 on Loopback1 that it injects with redistribute connected, so the rest of EIGRP sees it as an external route. O1 is the Bengaluru core (OSPF area 0, router ID 9.9.9.9) with the Bengaluru users on 10.200.10.0/24 and loopbacks 10.200.1.0/24 and 10.200.2.0/24. BR1 and BR2 are the two boundary routers. Because there are two of them, the lab contains every classic multi-point redistribution problem.
- Lab 1, Mutual redistribution with route tags: redistribute in both directions on both boundary routers, then use tags so nothing that left a domain comes back into it.
- Lab 2, Troubleshoot suboptimal routing and missing prefixes: BR1 sends Delhi-bound traffic through Bengaluru, and a prefix list hides the Bengaluru users from Delhi. You fix both without removing the tags.
Worked example. Before any redistribution, E1's routing table holds only EIGRP and connected routes, and O1 holds only OSPF and connected routes. PCE (172.16.10.10) pinging PCO (10.200.10.10) fails at E1 with "destination unreachable", because E1 has no route to 10.200.10.0/24. After Lab 1, E1 shows D EX 10.200.10.0/24 with two next hops (10.1.1.2 and 10.1.2.2), O1 shows O E2 172.16.10.0/24 with metric 20 and tag 90, and the ping succeeds.
How this module is organised
| Blueprint item | Chapters |
|---|---|
| 1.1 Administrative distance | 2 route selection and AD, 3 changing AD |
| 1.2 Route maps (attributes, tagging, filtering) | 4 prefix lists, 5 ACLs for routes, 6 route maps, 7 distribute-lists |
| 1.4 Redistribution | 8 rules and seed metrics, 9 configuring one-way and mutual |
| 1.3 Loop prevention | 10 multi-point problems, 11 tags, split horizon, poisoning |
| All of the above | 12 troubleshooting workflow, 13 summary and exam checklist |
Common mistake. Thinking of redistribution as "connecting two protocols". It is not a link between protocols; it is a copy from one routing table source into another protocol's database, done by one router, in one direction, under that router's rules. Every problem in this module comes from forgetting that.
Exam trap. The blueprint says "troubleshoot". Expect show-command output and a symptom, not a blank config screen. You must read show ip route, show ip protocols and show route-map output and spot the one wrong line.
The merger that went live on a Friday
After an acquisition, an engineer joined an EIGRP company to an OSPF company with two routers and typed redistribute ospf 1 under EIGRP and redistribute eigrp 100 subnets under OSPF on both. Delhi could still not reach Bengaluru, and on Monday traffic from one boundary router to a Delhi partner network was crossing the WAN twice. Checking showed two separate faults: no seed metric under EIGRP, so nothing entered EIGRP, and an AD preference that made one boundary router trust the OSPF copy of a Delhi route. Adding the seed metric, tags and distance ospf external 171 fixed both.
Lesson: redistribution is never "just one command"; plan metrics, filters, tags and AD together.
"What is route redistribution, and why do engineers consider it risky?"
Strong answer: redistribution is a router taking routes installed in its routing table by one source (a protocol, static or connected) and advertising them into another protocol with a new seed metric. It is risky because the original metric is lost, AD differences can make routers prefer a longer path, and with two or more redistribution points routes can feed back into their origin and cause loops. Mention the controls: filtering with prefix lists and route maps, tagging, and AD tuning.
Key takeaways
- This module covers ENARSI 300-410 v1.1 items 1.1 to 1.4: AD, route maps, loop prevention and redistribution.
- Redistribution copies routes from one routing source's table entries into another protocol, one router and one direction at a time.
- Four jobs at every boundary: choose the source (AD), convert the metric (seed), filter (prefix lists, route maps), stamp (tags).
- Two or more boundary routers bring suboptimal routing and feedback loops; both labs are built around that.
- Lab devices: E1 (EIGRP 100), O1 (OSPF area 0), BR1 and BR2 running both.
Route selection and administrative distance
A newspaper editor receives the same story from three sources: a staff reporter, a news agency and an anonymous social media post. She does not compare how exciting each version is; she first asks which source she trusts more. A router does the same. When several routing sources offer the same prefix, it does not compare their metrics (an EIGRP metric and an OSPF cost are different currencies). It compares a trust score called administrative distance.
Three separate decisions
Beginners often mix up three decisions that happen at different stages. Keep them apart and most AD questions become easy.
- Best path inside one protocol. EIGRP picks its successor by lowest composite metric; OSPF picks by lowest cost, with intra-area preferred over inter-area over E1 over E2. This happens inside the protocol's own database.
- Which source installs the prefix in the routing table (RIB). If EIGRP, OSPF and a static route each offer exactly the same prefix and length, the router installs the one with the lowest AD. The losers stay in their own databases but are not used.
- Which RIB entry forwards a packet. When a packet arrives, the router uses the longest prefix match among all installed routes, regardless of AD.
Route selection happens in stages: each protocol picks its best path, AD picks between sources for the same prefix, and forwarding uses the longest match.
The default AD table (Cisco IOS and IOS-XE)
| Source | AD | Route code |
|---|---|---|
| Connected interface | 0 | C |
| Static route | 1 | S |
| EIGRP summary route | 5 | D |
| External BGP (eBGP) | 20 | B |
| Internal EIGRP | 90 | D |
| OSPF (intra-area, inter-area and external) | 110 | O, O IA, O E1, O E2 |
| IS-IS | 115 | i L1, i L2 |
| RIP | 120 | R |
| ODR | 160 | o |
| External EIGRP | 170 | D EX |
| Internal BGP (iBGP) and locally originated BGP | 200 | B |
| Default route learned from DHCP | 254 | S* |
| Unknown or unreachable (never installed) | 255 | n/a |
Two design ideas explain the odd-looking numbers. EIGRP gives its external routes (redistributed from somewhere else) a worse AD of 170 so that a real internal path is always preferred over a redistributed copy. BGP trusts eBGP (20) highly because external routes normally come only from the provider, but distrusts iBGP (200) so that an IGP path to an internal prefix wins over BGP.
Seeing AD in the output
In show ip route each entry shows [AD/metric]. The detailed view prints it in words.
BR1#show ip route 192.168.50.0 Routing entry for 192.168.50.0/24 Known via "ospf 1", distance 110, metric 20 Tag 90, type extern 2, forward metric 2 Redistributing via eigrp 100 Last update from 10.2.1.1 on GigabitEthernet0/1, 00:04:12 ago Routing Descriptor Blocks: * 10.2.1.1, from 2.2.2.2, 00:04:12 ago, via GigabitEthernet0/1 Route metric is 20, traffic share count is 1 Route tag 90
Worked example. In lab 2, BR1 hears 192.168.50.0/24 from two sources. From E1 over EIGRP it is D EX with AD 170 and metric 130816, one hop away. From BR2 through O1 it is O E2 with AD 110 and metric 20, three hops away. The router never compares 130816 with 20. It compares 170 with 110, installs the OSPF route, and sends Delhi-bound traffic through Bengaluru and back. The EIGRP copy still sits in show ip eigrp topology, unused. Chapter 10 explains why this happens with two boundary routers and chapter 3 fixes it.
Longest match beats AD
AD only compares identical prefixes. If OSPF offers 10.200.10.0/25 and EIGRP offers 10.200.10.0/24, both are installed, because they are different routes. A packet to 10.200.10.20 follows the OSPF /25 even though EIGRP's AD is lower; a packet to 10.200.10.200 follows the EIGRP /24.
Why AD matters for redistribution
Redistribution takes routes from the routing table, not from the protocol database. A router running redistribute eigrp 100 under OSPF only exports prefixes that are currently installed as EIGRP routes (plus connected networks covered by EIGRP). If AD made a prefix install from OSPF instead, that prefix is silently not redistributed from EIGRP. Many "missing route" tickets are really AD tickets.
Floating static routes
A floating static route uses AD deliberately. Giving a backup static route an AD higher than the dynamic protocol keeps it out of the RIB until the dynamic route disappears.
! backup to Bengaluru users, used only if OSPF loses the route
ip route 10.200.10.0 255.255.255.0 192.0.2.1 250
Common mistake. Choosing a floating static AD that is not higher than every protocol that can supply the prefix. AD 100 floats above EIGRP internal (90) but beats OSPF (110), so over OSPF it becomes the primary route. Pick a value above the worst real source, for example 250.
Exam trap. All OSPF route types share AD 110 by default; E1 versus E2 is a metric decision inside OSPF, not an AD decision. EIGRP is the protocol with two defaults: 90 internal, 170 external. And AD is local only: it is never carried in any routing update.
The backup link that carried everything
A branch had OSPF over MPLS and a floating static route over an internet VPN with ip route 0.0.0.0 0.0.0.0 Tunnel10 100. The static route was meant as backup, but the VPN link ran hot and the MPLS link idle. show ip route 0.0.0.0 showed "Known via static, distance 100" instead of OSPF. The engineer had copied the value from an EIGRP site where 100 was above 90. Changing the AD to 250 moved traffic back to MPLS.
Lesson: a floating static route must float above every dynamic source for that prefix, not just one.
"A router learns the same prefix from OSPF and EIGRP. How does it decide which one to use?"
Strong answer: metrics cannot be compared across protocols, so for the identical prefix and length the router installs the source with the lowest administrative distance: EIGRP internal 90 beats OSPF 110, but OSPF 110 beats EIGRP external 170. The loser stays in its protocol database. Then add the two subtleties: longest match still decides forwarding when prefixes differ, and only the installed route can be redistributed.
Key takeaways
- Metric chooses inside a protocol, AD chooses between sources for the same prefix, longest match chooses per packet.
- Remember 0, 1, 5, 20, 90, 110, 115, 120, 170, 200, 255, and that EIGRP external is 170.
- AD is local and never advertised.
- Redistribution exports only routes installed in the RIB by that source, so AD decides what can be redistributed.
- A floating static route needs an AD above every dynamic source for that prefix.
Changing AD per protocol, per source and per prefix
Back to our newspaper editor. Usually the staff reporter is trusted more than the agency. But for one topic, say cricket, the agency has a specialist on the ground, so she decides: "for cricket stories from that agency, trust them more than usual." Routers allow exactly this. You can change the trust score for a whole protocol, for one route type, for routes from one source, or for one prefix from one source. The distance command is your tool, and every form of it is exam material.
Rule zero: AD is local
Changing AD on BR1 changes only which route BR1 installs. Neighbours never learn the new value. That is powerful (you can fix one router without touching others) and dangerous (two routers can now disagree about the best path and forward traffic to each other).
EIGRP
! classic mode: internal and external separately router eigrp 100 distance eigrp 90 175 ! per source: internal routes learned from neighbour 10.1.1.1 get AD 95 distance 95 10.1.1.1 0.0.0.0 ! named mode: the same idea under the topology router eigrp NK address-family ipv4 unicast autonomous-system 100 topology base distance eigrp 90 175
In EIGRP the source address in the per-source form is the neighbour's interface address, and that form applies to internal routes. To change external routes, use distance eigrp.
OSPF
router ospf 1 ! by route type distance ospf intra-area 110 inter-area 110 external 171 ! everything from this process distance 115 ! per source: routes whose LSA was originated by router ID 2.2.2.2 distance 171 2.2.2.2 0.0.0.0
This is the classic trap: in OSPF the per-source address is the router ID of the router that originated the LSA (the Advertising Router), not the neighbour's interface address. OSPF routes are computed from the LSDB, so the "source" of an external route is the ASBR that created the type-5 LSA.
BGP, RIP and static
router bgp 65001 distance bgp 20 200 200 ! external internal local router rip distance 120 ip route 10.200.10.0 255.255.255.0 192.0.2.1 250 ! per static route
Per prefix: add an ACL
Every per-source form accepts an optional standard ACL that selects which prefixes get the new AD. A wildcard of 255.255.255.255 on the source means "from any source".
access-list 50 permit 192.168.50.0 0.0.0.255
router ospf 1
! only 192.168.50.0/24 from the two boundary routers gets AD 171
distance 171 1.1.1.1 0.0.0.0 50
distance 171 2.2.2.2 0.0.0.0 50
Raising OSPF external AD to 171 on the boundary router makes the EIGRP external copy (170) win.
Worked example: which knob in lab 2? BR1 prefers the O E2 copy (110) of the Delhi route over the D EX original (170). Three candidate fixes:
- A.
distance ospf external 171on BR1 and BR2. D EX 170 now beats O E2 171. OSPF intra-area routes (O, 110) still beat any D EX copy of them. Clean and simple for this lab. - B.
distance eigrp 90 105on BR1 and BR2. D EX 105 beats O E2 110, which fixes 192.168.50.0/24. But BR2 redistributes the Bengaluru LAN 10.200.10.0/24 into EIGRP, and BR1 can hear it back through E1 as D EX 105 (for example whenever E1's best path points only at BR2), which beats BR1's own OSPF intra-area route (110). Tags stop it being redistributed again, but they do not stop BR1 installing it. New suboptimal routing: rejected. - C. Per-source OSPF distance for the boundary routers' router IDs with an ACL. Most precise; useful when the OSPF domain also has its own genuine external routes that must keep AD 110.
The lab expects option A: distance ospf external with any value from 171 upward.
Verification
BR1#show ip protocols | section ospf
Routing Protocol is "ospf 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 1.1.1.1
It is an autonomous system boundary router
Redistributing External Routes from,
eigrp 100, includes subnets in redistribution, route-map EIGRP-TO-OSPF
...
Distance: intra-area 110 inter-area 110 external 171
BR1#show ip route 192.168.50.0
Routing entry for 192.168.50.0/24
Known via "eigrp 100", distance 170, metric 130816, type external
Redistributing via ospf 1
Advertised by ospf 1 subnets route-map EIGRP-TO-OSPF
If the table does not change straight away, clear ip route 192.168.50.0 (or clear ip route *) re-installs routes from the protocol databases without resetting any neighbours.
Common mistake. Using the neighbour's interface IP in an OSPF per-source distance, for example distance 171 10.2.1.1 0.0.0.0 on BR1. Nothing matches, because OSPF compares against originating router IDs such as 2.2.2.2. The command is accepted silently and does nothing.
Exam trap. Changing AD on only one of two boundary routers. The other router keeps the old preference, so the problem moves instead of disappearing. When a question shows two redistribution points, the fix almost always goes on both.
The per-source distance that did nothing
An engineer wanted to distrust OSPF externals injected by a lab router and typed distance 200 172.31.0.2 0.0.0.0 under OSPF, using the lab router's link address. Nothing changed in show ip route. show ip ospf database external showed "Advertising Router: 3.3.3.3" for those LSAs. Re-entering the command as distance 200 3.3.3.3 0.0.0.0 immediately gave the lab routes AD 200.
Lesson: OSPF per-source distance matches the LSA's advertising router ID; EIGRP matches the neighbour's IP.
"How would you fix suboptimal routing caused by AD at a mutual redistribution point, and what would you avoid?"
Strong answer: raise the AD of the redistributed copies rather than lowering the AD of externals in general, for example distance ospf external 171 on every boundary router so EIGRP externals (170) win over their OSPF copies, while OSPF internal routes (110) still beat EIGRP copies of them. Mention per-source or per-prefix distance with an ACL when the domain has genuine externals, remember that OSPF per-source uses the originating router ID, and verify with show ip protocols and show ip route.
Key takeaways
distance eigrp int ext,distance ospf intra-area/inter-area/external,distance bgp ebgp ibgp localchange AD per route type.- Per-source form:
distance AD source wildcard [acl]; EIGRP uses the neighbour IP, OSPF the originating router ID. - Add a standard ACL to limit the change to certain prefixes.
- AD changes are local, so apply them on every redistribution point.
- Prefer raising OSPF external AD to lowering EIGRP external AD at an EIGRP/OSPF boundary.
Prefix lists: ge, le and many drills
Think of a courier company that sorts parcels with two questions. First: "is the address inside PIN area 5600xx?" Second: "is it a whole building, a floor, or a single flat?" A prefix list asks the same two questions about a route. The first is about the network bits (which area), the second is about the prefix length (how specific). Every route map, distribute-list and BGP filter you write in this module will lean on prefix lists, so we practise them until they are automatic.
Syntax
ip prefix-list NAME [seq N] {permit | deny} PREFIX/LEN [ge G] [le L]
ipv6 prefix-list NAME [seq N] {permit | deny} PREFIX/LEN [ge G] [le L]
A route matches an entry only if both tests pass:
- Network test: the first LEN bits of the route equal the first LEN bits of PREFIX.
- Length test: the route's own prefix length is inside the allowed range.
| You write | Allowed route lengths |
|---|---|
| no ge, no le | exactly LEN |
| le L only | LEN up to L |
| ge G only | G up to 32 (128 for IPv6) |
| ge G le L | G up to L |
The values must satisfy LEN < G ≤ L ≤ 32; IOS rejects an entry that breaks this rule. The list is read in sequence order (default steps of 5), the first matching entry decides, and every list ends with an implicit deny for anything not matched.
For 10.200.0.0/16 the network test is always "first 16 bits are 10.200"; ge and le only move the allowed length window.
Drills: match or not?
| Entry | Matches | Does not match |
|---|---|---|
| 10.200.1.0/24 | 10.200.1.0/24 | 10.200.10.0/24, 10.200.1.0/25 |
| 10.200.0.0/16 le 24 | 10.200.0.0/16, 10.200.64.0/18, 10.200.10.0/24 | 10.200.10.128/25, 10.201.0.0/24 |
| 10.200.0.0/16 ge 24 | 10.200.10.0/24, 10.200.10.1/32 | 10.200.0.0/16, 10.200.0.0/20 |
| 10.200.0.0/16 ge 24 le 24 | every /24 inside 10.200.0.0/16 | any /25 to /32, the /16 itself |
| 0.0.0.0/0 | the default route only | everything else |
| 0.0.0.0/0 le 32 | every IPv4 route ("permit any") | nothing |
| 0.0.0.0/0 ge 32 | every /32 host route | anything shorter than /32 |
| 172.16.0.0/20 le 24 | 172.16.10.0/24 (third octet 0 to 15) | 172.16.20.0/24, 172.16.0.0/16 |
| 192.168.50.0/24 ge 25 le 26 | 192.168.50.128/25, 192.168.50.64/26 | 192.168.50.0/24, 192.168.50.0/27 |
| 0.0.0.0/1 ge 8 le 8 | classful class A networks such as 10.0.0.0/8 | 10.1.0.0/16, 172.16.0.0/16 |
| 128.0.0.0/2 ge 16 le 16 | class B networks such as 172.16.0.0/16 | 172.16.10.0/24 |
| 192.0.0.0/3 ge 24 le 24 | class C networks such as 192.168.50.0/24 | 192.168.0.0/16 |
Worked example: 172.16.0.0/20 le 24 against 172.16.20.0/24. Write the third octet in binary. /20 fixes the first 4 bits of the third octet. 0 is 0000 0000, so the list requires the third octet to start with 0000, meaning values 0 to 15. 20 is 0001 0100: it starts with 0001, so the network test fails before the length test is even checked. 172.16.10.0/24 has 10 = 0000 1010, passes the network test, and its length 24 is inside 20 to 24, so it matches.
Lab 2: the list that was too exact
In the troubleshooting lab, route map OSPF-TO-EIGRP permits only routes matching prefix list OSPF-LANS, which contains a single entry.
BR1#show ip prefix-list detail OSPF-LANS
Prefix-list with the last deletion/insertion: OSPF-LANS
ip prefix-list OSPF-LANS:
count: 1, range entries: 0, sequences: 5 - 5, refcount: 2
seq 5 permit 10.200.1.0/24 (hit count: 14, refcount: 1)
With no ge or le, only 10.200.1.0/24 passes. 10.200.2.0/24 and the users' LAN 10.200.10.0/24 fail the network test and fall to the implicit deny, so E1 never learns them. The fix adds a range entry; nothing needs to be removed.
ip prefix-list OSPF-LANS seq 10 permit 10.200.0.0/16 le 24
! the transit links 10.2.1.0/24 and 10.2.2.0/24 still do not match, by design
BR1#show ip prefix-list detail OSPF-LANS ip prefix-list OSPF-LANS: count: 2, range entries: 1, sequences: 5 - 10, refcount: 3 seq 5 permit 10.200.1.0/24 (hit count: 16, refcount: 1) seq 10 permit 10.200.0.0/16 le 24 (hit count: 4, refcount: 1)
The hit count column is the best live evidence that an entry is matching routes. You can reset it with clear ip prefix-list OSPF-LANS.
Editing safely
- Insert between entries by choosing a free sequence number, for example
seq 7. - Remove one entry with
no ip prefix-list OSPF-LANS seq 5.no ip prefix-list OSPF-LANSremoves the entire list, and every route map referencing it then matches nothing. - A prefix list that is referenced but does not exist behaves differently per feature; never rely on it. Create the list first, then reference it.
Common mistake. Writing permit 10.200.0.0/16 and expecting it to cover the /24s inside. Without le, it matches only the /16 itself. The second classic is ending a deny-style list without permit 0.0.0.0/0 le 32, which silently blocks everything else.
Exam trap. Prefix lists compare the prefix length of the route, not a wildcard. An ACL entry like permit 10.200.0.0 0.0.255.255 matches any route whose network address starts with 10.200 regardless of mask; 10.200.0.0/16 in a prefix list matches only that exact /16. Also know that 0.0.0.0/0 alone means only the default route.
The deny list that ate the network
To stop a lab network leaking into production, an engineer created ip prefix-list NO-LAB seq 5 deny 10.99.0.0/16 le 32 and applied it with distribute-list prefix NO-LAB out under EIGRP on a distribution router. Within seconds every access router lost all routes learned through it. The list had no permit entry, so the implicit deny blocked everything. Adding seq 100 permit 0.0.0.0/0 le 32 restored service.
Lesson: a list meant to deny a few routes must end with an explicit permit-any.
"Write a prefix list that matches all /24 to /28 subnets inside 10.0.0.0/8, and explain why a prefix list is better than an ACL for this."
Strong answer: ip prefix-list SUBS permit 10.0.0.0/8 ge 24 le 28. The /8 fixes the network bits, ge and le set the length window. A standard ACL can only test the network address, not the route's mask, so it cannot tell 10.1.1.0/24 from 10.1.1.0/30. Mention sequence numbers for easy editing, the implicit deny, and hit counts in show ip prefix-list detail.
Key takeaways
- A prefix list tests network bits (first LEN bits) and prefix length (exact, or a ge/le window).
- Rule: LEN < ge ≤ le ≤ 32; no ge/le means exact length.
- First match wins, sequence numbers allow editing, and an implicit deny ends every list.
0.0.0.0/0is the default route only;0.0.0.0/0 le 32is everything.- Use
show ip prefix-list detailhit counts to prove which entry matches.
ACLs vs prefix lists for route matching
Imagine a wedding guest list that contains only first names. "Rahul" is on the list, so every Rahul at the gate walks in: the uncle, the cousin and the neighbour's son. That is a standard ACL used to match routes: it sees the network address and nothing about the mask. A prefix list is the guest list with first name and age, so it can tell the uncle from the son. Both tools still appear everywhere in real configs and in exam output, so you must read both fluently.
Packets versus routes
You learned ACLs for filtering packets: source, destination, protocol, ports. When an ACL is referenced by a routing feature (a distribute-list, a route map's match ip address, a distance command) it filters routes instead, and the fields take on new meanings.
- Standard ACL: the address and wildcard are compared with the route's network address only. The prefix length is ignored.
- permit means "this route matches"; deny means "this route does not match". Inside a route map, "does not match" sends the route to the next sequence; it does not necessarily drop it.
- The implicit deny at the end still exists: anything not permitted does not match.
A standard ACL compares only the network address of a route; a prefix list also checks its length.
Standard ACL examples
! matches every route whose network address starts with 10.200 access-list 10 permit 10.200.0.0 0.0.255.255 ! matches any route whose network address is exactly 192.168.50.0, any mask access-list 20 permit 192.168.50.0 0.0.0.0 ! "permit any" for routes access-list 30 permit any
ACL 10 matches 10.200.0.0/16, 10.200.10.0/24 and 10.200.10.128/25 alike. ACL 20 matches 192.168.50.0/24 but also a summary 192.168.50.0/23 or a host route 192.168.50.0/32 if one appeared.
Extended ACLs: two different meanings
Extended ACLs add a second address field, and Cisco uses it differently depending on the feature. This is a favourite trap.
- In BGP filtering and in route maps used by BGP, the source field matches the route's network and the destination field matches its mask. So an extended ACL can match length, just awkwardly.
- In an IGP distribute-list (EIGRP, RIP), the source field matches the router that sent the update and the destination field matches the network.
! BGP style: exactly 10.200.10.0/24 access-list 101 permit ip host 10.200.10.0 host 255.255.255.0 ! BGP style: every /24 inside 10.200.0.0/16 access-list 102 permit ip 10.200.0.0 0.0.255.255 host 255.255.255.0 ! EIGRP distribute-list style: 192.168.50.0 only when learned from 10.1.1.1 access-list 103 permit ip host 10.1.1.1 host 192.168.50.0
Compare ACL 102 with the prefix list 10.200.0.0/16 ge 24 le 24. Same result, far less readable. That is why modern configs prefer prefix lists, and why the neighbour side of a filter is usually written with distribute-list prefix LIST gateway GW-LIST instead.
Side-by-side comparison
| Feature | Standard ACL | Prefix list |
|---|---|---|
| Matches network bits | yes, with a wildcard | yes, with a length |
| Matches prefix length | no | yes, exact or ge/le range |
| Non-contiguous wildcards (for example odd third octets) | yes | no |
| Edit one line in place | named ACLs with sequence numbers | yes, always sequenced |
| Hit counters for routes | no useful counter | yes, hit count per entry |
Accepted by distance | yes (standard only) | no |
| Accepted by route maps and distribute-lists | yes | yes |
The distance command is the one place you still must use a standard ACL, as you saw in chapter 3. The other rare case is a wildcard that is not contiguous, such as "every odd /24", which a prefix list cannot express.
Worked example: rewriting a legacy filter. An old EIGRP config on BR1 contains distribute-list 10 out ospf 1 with access-list 10 permit 10.200.0.0 0.0.255.255, intended to redistribute only Bengaluru LANs of /24 or shorter. A new /30 link 10.200.99.0/30 appears in OSPF and leaks into EIGRP, because the ACL ignores length. The replacement is:
ip prefix-list BLR-LANS seq 10 permit 10.200.0.0/16 le 24 router eigrp 100 no distribute-list 10 out ospf 1 distribute-list prefix BLR-LANS out ospf 1
The /30 now fails the length test and stays out of EIGRP.
Other match clauses that take a list
match ip address {ACL | prefix-list NAME}: the route's network (and length, with a prefix list).match ip next-hop {ACL | prefix-list NAME}: the route's next-hop address.match ip route-source {ACL | prefix-list NAME}: the router that advertised the route.
Common mistake. Using a deny line in an ACL to "block" a route inside a route map permit entry and expecting the route to be dropped. The deny only means "no match here"; the route falls through to the next sequence, and if that sequence permits everything, the route goes through.
Exam trap. Given access-list 5 permit 172.16.0.0 0.0.255.255 in a distribute-list, the exam may ask whether 172.16.10.0/24 and 172.16.0.0/16 both pass. They do: a standard ACL ignores prefix length. Also expect questions about the extended ACL source and destination meanings.
Blocking a summary blocked a LAN
A team wanted to stop the summary 10.200.0.0/16 from entering EIGRP while keeping specific subnets, and added access-list 20 deny 10.200.0.0 0.0.0.0 plus access-list 20 permit any in a distribute-list. The summary disappeared, but so did the server LAN 10.200.0.0/24, because both routes share the network address 10.200.0.0. Replacing the ACL with ip prefix-list NO-SUM seq 5 deny 10.200.0.0/16 and seq 10 permit 0.0.0.0/0 le 32 removed only the /16.
Lesson: when two routes share a network address and differ only in length, only a prefix list can separate them.
"How does a standard ACL match routes, and when would you still use an ACL instead of a prefix list?"
Strong answer: in a routing context the standard ACL compares only the route's network address with the wildcard; permit means match, deny means no match, and the mask is ignored. Prefix lists add length matching, sequence editing and hit counts, so they are the default choice. I would still use an ACL where the command requires one, such as per-prefix distance, or for a non-contiguous wildcard. Bonus: explain the extended ACL network and mask trick in BGP.
Key takeaways
- In route filtering a standard ACL matches only the network address; the prefix length is ignored.
- ACL permit means match and deny means no match; in a route map a non-match moves to the next sequence.
- Extended ACLs: BGP uses source = network and destination = mask; IGP distribute-lists use source = update sender and destination = network.
- Prefix lists match length, are easy to edit and show hit counts; prefer them.
- The
distancecommand accepts only a standard ACL.
Route maps: match, set, sequence logic and continue
Picture a government office with numbered counters. You start at counter 10. The clerk checks your documents against a list of conditions. If everything is in order, he either stamps your form and sends you out (permit) or tears it up (deny). If your documents do not match his conditions, you walk to counter 20 and try again. If no counter accepts you, the guard at the exit turns you away. That office is a route map: an ordered list of entries, each with conditions (match) and actions (set), used to filter routes and change their attributes.
Anatomy
route-map NAME {permit | deny} SEQUENCE
match ... ! zero or more conditions
set ... ! zero or more actions, only used by permit entries
If you omit the action and sequence, IOS creates permit 10. Sequence numbers let you insert entries later (use gaps of 10).
The processing rules
- Entries are checked in ascending sequence order. The first entry whose conditions all succeed decides; later entries are not checked (unless
continueis used). - Different match commands in one entry are combined with AND:
match tag 90plusmatch ip address prefix-list OSPF-LANSmeans both must be true. - Several values in one match command are combined with OR:
match tag 90 110means tag 90 or tag 110. Typing the same match type twice makes IOS merge the values into one line, so it is still OR. - An entry with no match command matches every route. That is how you write "permit everything else".
- permit entry matched: the route is accepted and every
setis applied. deny entry matched: the route is rejected. - No entry matched: implicit deny.
Each route walks the entries in order; the first full match decides, and no match means implicit deny.
Four combinations people confuse
| Route map entry | Prefix list result for the route | Outcome |
|---|---|---|
| permit | permit (matches) | route accepted, sets applied |
| permit | deny or no entry (no match) | entry skipped, go to next sequence |
| deny | permit (matches) | route rejected |
| deny | deny or no entry (no match) | entry skipped, go to next sequence |
The list only answers "does it match?". The route map entry's own permit or deny decides the fate.
Useful match and set clauses
- match:
ip address prefix-list,ip address ACL,ip next-hop,ip route-source,tag,interface,metric,route-type internal | external type-1 | external type-2 | local | nssa-external, and in BGPas-pathandcommunity. - set:
metric(one value, or five EIGRP values),metric-type type-1 | type-2for OSPF,tag,ip next-hop, and in BGPlocal-preference,weight,as-path prepend,community.
Route maps are called from redistribute ... route-map, distribute-list route-map, default-information originate route-map, BGP neighbor ... route-map in|out and policy-based routing (ip policy route-map, covered in the PBR module).
The continue clause
Normally the first matching entry ends processing. continue [SEQ] inside a matched permit entry tells the router to keep going to the next entry, or to a specific later sequence, so several entries can each add attributes to the same route. It is a BGP policy tool on IOS (for example set a community in one entry and local preference in another). Do not build redistribution or PBR designs on it.
route-map FROM-ISP permit 10 match ip address prefix-list CUSTOMERS set community 65001:100 continue 20 route-map FROM-ISP permit 20 match as-path 10 set local-preference 200 route-map FROM-ISP permit 30
Worked example: three routes through OSPF-TO-EIGRP on BR1 (lab 2 before the fix).
- 10.200.1.0/24, O, no tag: seq 10 needs tag 90, no. Seq 20: prefix list seq 5 permits it, so it matches. Set tag 110. Redistributed into EIGRP.
- 192.168.50.0/24, O E2, tag 90: seq 10 matches, deny. Not redistributed. This is the loop protection.
- 10.200.10.0/24, O, no tag: seq 10 no, seq 20 prefix list has no entry for it, no. End of map: implicit deny. This is the missing-prefix ticket.
Verification
BR1#show route-map OSPF-TO-EIGRP
route-map OSPF-TO-EIGRP, deny, sequence 10
Match clauses:
tag 90
Set clauses:
Policy routing matches: 0 packets, 0 bytes
route-map OSPF-TO-EIGRP, permit, sequence 20
Match clauses:
ip address prefix-lists: OSPF-LANS
Set clauses:
tag 110
Policy routing matches: 0 packets, 0 bytes
The "Policy routing matches" counters count packets forwarded by PBR, so they stay at zero for redistribution. To prove what a redistribution route map did, check prefix-list hit counts and look for the tag in the destination protocol (show ip route on E1 shows "Tag 110").
Common mistake. Writing a deny entry to block a few routes and forgetting the final route-map NAME permit 30 with no match. The implicit deny then blocks everything else, and the destination protocol loses every redistributed route. A redistribution that references a route map name that does not exist also redistributes nothing.
Exam trap. AND versus OR. Two match lines of different types in one entry must both be true. If the question wants "tag 90 OR in prefix list X", you need two separate entries. And set lines in a deny entry are never applied.
The AND that should have been OR
An engineer wanted to stop routes tagged 90 or any 10.99.0.0/16 lab prefix from entering EIGRP, and wrote one deny entry with match tag 90 and match ip address prefix-list LAB. Lab routes kept leaking and so did tag-90 routes. Only routes that were both tag 90 and inside 10.99.0.0/16 were blocked, and there were none. Splitting the conditions into deny 10 (tag) and deny 20 (prefix list) followed by permit 30 fixed it.
Lesson: different match commands in one entry are AND; separate entries give you OR.
"Walk me through how a router processes a route map used for redistribution."
Strong answer: the route is compared with entries in ascending sequence; within an entry different match types are ANDed and values in one match are ORed; an entry without match matches all. The first full match decides: permit accepts the route and applies the sets (tag, metric, metric type), deny rejects it. If nothing matches, the implicit deny drops it. Mention that continue exists mainly for BGP, and that show route-map counters are PBR packet counters, not route counts.
Key takeaways
- Route maps are evaluated top-down by sequence; first full match wins; no match is an implicit deny.
- Different match commands are AND; multiple values in one match are OR; no match line matches all.
- The ACL or prefix list only decides "match or not"; the entry's permit or deny decides the route's fate.
- Sets run only in permit entries: tag, metric, metric-type, next hop, BGP attributes.
- End filtering maps with an empty permit entry;
continueis mainly a BGP tool.
Distribute-lists: filtering routes in and out
Two ways to share travel information. In an office, news about a road closure passes from desk to desk, and anyone can decide not to pass a story on: that is distance vector, like EIGRP and RIP. In a city, every driver carries the same printed map book: that is link state, like OSPF. You can refuse to repeat a rumour, but you cannot tear a page out of everyone's map book; at most you can decide not to drive down a road yourself. That single idea explains almost everything about distribute-lists.
What a distribute-list is
A distribute-list attaches a filter (ACL, prefix list or route map) to a routing process, in one direction:
distribute-list {ACL | prefix NAME | route-map NAME} in [interface]
distribute-list {ACL | prefix NAME | route-map NAME} out [interface | protocol process]
! EIGRP and RIP extra: match the advertising neighbour too
distribute-list prefix NAME gateway GW-NAME in [interface]
In EIGRP: real control over advertisements
EIGRP routers only know what neighbours tell them, so filters change what others learn.
out [interface]: the router does not advertise matching routes (on that interface or all). Downstream routers never hear them.in [interface]: the router ignores matching routes received (from that interface or all). It will not install them and will not advertise them onward.out ospf 1(a protocol name): filters which routes are redistributed from that source into EIGRP. It is an alternative to a route map on the redistribute command.
router eigrp 100 distribute-list prefix BRANCH-ONLY out GigabitEthernet0/1 distribute-list prefix BLR-LANS out ospf 1 distribute-list route-map NO-OSPF-BORN in GigabitEthernet0/0
In OSPF: only the local routing table
Every router in an area must hold an identical LSDB, so OSPF cannot simply drop LSAs.
distribute-list ... infilters between the LSDB and the RIB on this router only. The LSA stays in the database and is still flooded to neighbours.distribute-list ... outis valid only with a protocol name on an ASBR, for exampledistribute-list prefix EXPORT out eigrp 100. It controls which routes become type-5 LSAs.- Real OSPF filtering of what other routers see is done elsewhere:
area X filter-list prefix NAME in|outandarea X range ... not-advertiseon an ABR (type 3), andsummary-address ... not-advertiseon an ASBR (type 5). The ENARSI OSPF module covers these.
In EIGRP a distribute-list changes what neighbours learn; in OSPF an inbound distribute-list only hides routes from the local routing table.
Worked example: a safer AD design with a tag filter. In chapter 3 we rejected distance eigrp 90 105 because BR1 could install OSPF-born routes (tag 110) that came back through E1. A distribute-list removes that risk: BR1 refuses any EIGRP route carrying tag 110 from E1, because it already has the original in OSPF.
route-map NO-OSPF-BORN deny 10 match tag 110 route-map NO-OSPF-BORN permit 20 router eigrp 100 distribute-list route-map NO-OSPF-BORN in GigabitEthernet0/0
Now BR1 can never prefer an EIGRP copy of a Bengaluru route, whatever the AD. This "filter re-entering routes by tag" pattern is the most robust multi-point redistribution design, and chapter 11 builds on it.
Verification
BR1#show ip protocols | section eigrp
Routing Protocol is "eigrp 100"
Outgoing update filter list for all interfaces is not set
Redistributed ospf 1 filtered by BLR-LANS
Incoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
Redistributing: ospf 1
EIGRP-IPv4 Protocol for AS(100)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
Router-ID: 1.1.1.1
O1#show ip protocols | include filter
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is (prefix-list) NO-TEST
After adding or changing an EIGRP distribute-list, EIGRP resynchronises with neighbours (graceful restart of the affected peers on recent releases). For an OSPF inbound filter, compare show ip ospf database (the LSA is still there) with show ip route (the route is gone).
Common mistake. Using an OSPF inbound distribute-list on a transit router to hide a network. Other routers still have the LSA and still compute paths through that router, which now has no route and drops the traffic: a black hole. Filter at the ABR or ASBR where the LSA is created, not in the middle of an area.
Exam trap. "Router X has distribute-list prefix NO-TEST in under OSPF; what do its neighbours see?" Answer: everything, unchanged. The LSDB is untouched. Also, an EIGRP distribute-list ... out naming a protocol filters redistribution, not neighbour advertisements.
Filtered on O1, dropped on O1
The Bengaluru security team asked that users in 10.200.10.0/24 must not reach the Delhi partner network 192.168.50.0/24. An engineer added an OSPF inbound distribute-list on O1 denying 192.168.50.0/24. The route vanished from O1, so O1 dropped the traffic; mission accomplished, apparently. A week later a second Bengaluru router, O2, was added behind O1. O2 still had the O E2 route (the LSA was flooded normally), sent partner traffic to O1, and O1 dropped it with ICMP unreachables, confusing the application team. The clean fix was to deny the prefix in route map EIGRP-TO-OSPF on both boundary routers, so no LSA existed.
Lesson: in OSPF, filter where the LSA is born; inbound distribute-lists only hide routes locally.
"Why does a distribute-list behave differently in OSPF than in EIGRP?"
Strong answer: EIGRP is distance vector, so a router advertises only what it chooses and in or out filters change what neighbours learn. OSPF is link state; all routers in an area need identical LSDBs, so an inbound distribute-list only filters routes from the LSDB into the local RIB while the LSA is still flooded, and out works only with a source protocol on an ASBR to limit redistribution. For real OSPF filtering use ABR area filter-list or range not-advertise, or filter at redistribution.
Key takeaways
- A distribute-list attaches an ACL, prefix list or route map to a routing process, in or out, optionally per interface.
- EIGRP: in and out really change what is learned and advertised;
out PROTOCOLfilters redistribution. - OSPF:
infilters only the local RIB (LSAs still flood);out PROTOCOLworks only on an ASBR. - A distribute-list with a route map can filter by tag, the core of robust multi-point redistribution.
- Verify with
show ip protocolsand, for OSPF, compare the LSDB with the RIB.
Redistribution rules and seed metrics per protocol
At an airport currency desk, every country has its own rules. Some currencies convert automatically at a fixed rate, some need you to fill a form first, and some cannot be converted at all unless you insist. Redistribution works the same way. Each routing protocol has its own rule for the seed metric (the starting metric given to a redistributed route) and its own quirks about what it will take. This chapter is the rulebook; chapter 9 puts it to work.
Five rules that apply to every protocol
- Redistribution reads the routing table.
redistribute Xtakes routes that are installed in the RIB by source X, plus the connected networks of interfaces on which X is enabled. A route that lost the AD contest to another source is not taken. - It is per router and per direction.
redistribute ospf 1under EIGRP on BR1 moves routes one way on one router. The other direction and the other boundary router need their own commands. - It is not transitive on one router. If BR1 redistributes RIP into OSPF and OSPF into EIGRP, the RIP routes do not reach EIGRP, because they are not installed as OSPF routes on BR1.
- The router must run both sources and have routes from the source installed.
- Redistributed routes are external in the target. EIGRP marks them D EX (AD 170) and records the origin; OSPF creates type-5 LSAs (type-7 in an NSSA) seen as O E1 or O E2; BGP gives them origin "incomplete" (
?).
redistribute eigrp 100 on BR1 exports routes installed by EIGRP and EIGRP-enabled connected networks, never a prefix that OSPF won.
Seed metrics, protocol by protocol
| Into | Default seed metric | What you must know |
|---|---|---|
| EIGRP | infinite (unreachable) for routes from other routing protocols | Set metric BW DELAY REL LOAD MTU, default-metric, or set metric in a route map. Connected and static routes use the interface metric. Another EIGRP AS keeps its metric. |
| OSPF | 20, type E2 (BGP-learned routes get 1) | Change with metric, metric-type 1 or a route map. E2 cost stays fixed across the domain; E1 adds internal cost. |
| BGP | MED = the route's IGP metric | Next hop is the IGP next hop, origin is incomplete, local weight 32768. From OSPF, only internal routes are taken unless you add match internal external 1 external 2. |
| RIP | infinite for other routing protocols | Give a hop count (1 to 15) with metric or default-metric. |
Two more defaults: redistribute ospf into EIGRP or RIP takes internal and external OSPF routes; redistribute bgp into an IGP takes only eBGP routes unless bgp redistribute-internal is configured. That second default protects IGPs from a full iBGP table.
The EIGRP seed metric in numbers
The five values are bandwidth in kbit/s, delay in tens of microseconds, reliability out of 255, load out of 255, and MTU. With the classic formula (K1 = K3 = 1) only bandwidth and delay count: metric = 256 x (10,000,000 / min bandwidth + total delay / 10).
Worked example: the lab seed 100000 100 255 1 1500. On BR1, the redistributed route has bandwidth 100,000 kbit/s and delay 1000 microseconds (100 tens). Its metric is 256 x (100 + 100) = 51,200, which E1 sees as the reported distance. E1 adds its Gigabit link (bandwidth 1,000,000 kbit/s, delay 10 microseconds): minimum bandwidth stays 100,000, delay becomes 1010, so the feasible distance is 256 x (100 + 101) = 51,456.
E1#show ip eigrp topology 10.200.10.0/24 EIGRP-IPv4 Topology Entry for AS(100)/ID(5.5.5.5) for 10.200.10.0/24 State is Passive, Query origin flag is 1, 2 Successor(s), FD is 51456 Descriptor Blocks: 10.1.1.2 (GigabitEthernet0/0), from 10.1.1.2, Send flag is 0x0 Composite metric is (51456/51200), route is External Vector metric: Minimum bandwidth is 100000 Kbit Total delay is 1010 microseconds Reliability is 255/255 Load is 1/255 Minimum MTU is 1500 Hop count is 1 Originating router is 1.1.1.1 External data: AS number of route is 1 External protocol is OSPF, external metric is 2 Administrator tag is 110 (0x0000006E)
The External data block is gold for troubleshooting: it tells you which router redistributed the route, from which protocol and process, the original metric, and the tag.
The subnets keyword: a little history
On older IOS releases, redistribute eigrp 100 under OSPF without subnets redistributed only classful networks and printed "% Only classful networks will be redistributed". Networks like 172.16.10.0/24 silently stayed out. On recent IOS and IOS-XE releases subnets behaviour is the default and the keyword is added to the running configuration automatically. Always type it anyway: it documents intent and protects you on older code. OSPFv3 has no subnets keyword.
Connected, static and default routes
redistribute connected [route-map]injects interface networks. E1 uses this for Loopback1 (192.168.50.0/24), which is why that network is D EX everywhere else. Usematch interfacein a route map to pick interfaces.redistribute staticinjects static routes; into EIGRP they keep the outgoing interface metric.- A default route is special. OSPF will not advertise 0.0.0.0/0 through
redistribute; usedefault-information originate [always]. BGP needsdefault-information originateorneighbor ... default-originate.
Common mistake. Typing redistribute ospf 1 under EIGRP with no metric. IOS accepts it, prints nothing, and show ip protocols even shows "Redistributing: ospf 1", yet no route appears, because the seed is infinite. Always add metric or default-metric.
Exam trap. "Default metric of routes redistributed into OSPF?" 20, E2, except 1 for BGP. "Which OSPF routes go into BGP by default?" Internal only. "Which BGP routes go into an IGP by default?" eBGP only. "Why is 172.16.10.0/24 missing on an old router?" No subnets.
The data center routes that never reached the WAN
A company redistributed OSPF into BGP at its WAN edge with redistribute ospf 1. Campus networks appeared in BGP, but the data center networks, which were redistributed into OSPF from static routes on a DC firewall pair, did not. show ip route on the edge showed them as O E2; show bgp ipv4 unicast did not list them. The default for OSPF into BGP is internal routes only. Changing the command to redistribute ospf 1 match internal external 1 external 2, with a prefix-list route map, brought them in.
Lesson: every protocol pair has its own defaults; know them before assuming a filter is to blame.
"You redistribute OSPF into EIGRP and nothing shows up. What do you check first?"
Strong answer: the seed metric. EIGRP treats routes from another routing protocol as unreachable without metric, default-metric or a route-map set metric; connected, static and other EIGRP AS routes are the exceptions. Then confirm the routes are actually installed as OSPF on the redistributing router, check any route map or distribute-list, and verify with show ip eigrp topology where the External data shows protocol, originating router and tag.
Key takeaways
- Redistribution takes source-installed routes plus source-enabled connected networks, per router, per direction, not transitively.
- Seeds: EIGRP and RIP need a metric; OSPF defaults to 20 E2 (1 from BGP); BGP sets MED from the IGP metric.
- OSPF into BGP takes internal routes only by default; BGP into an IGP takes eBGP routes only.
- Type
subnetswhen redistributing into OSPF; older releases took only classful networks without it. - Default routes need
default-information originatein OSPF and BGP.
One-way and mutual redistribution: building lab 1
A small village joined to a highway by a single one-way slip road is easy to manage: cars can enter the highway, and for the way back the village simply follows a sign that says "everything else, this way". Connect a big city to the highway with two two-way junctions and you need traffic police, signs and rules, or cars will circle forever. Redistribution designs grow the same way, from one-way at one point to mutual (two-way) at several points.
Four designs, four risk levels
Risk grows with the number of redistribution points and directions; the module labs sit in the bottom-right corner.
- One-way, one point. Example: a small OSPF branch domain behind BR1. BR1 redistributes OSPF into EIGRP, and instead of redistributing EIGRP back, it sends a default route into OSPF with
default-information originate. No feedback is possible. - Mutual, one point. Both directions on one router. A route cannot come back through a second boundary, so feedback is impossible, but the single router is a single point of failure.
- One-way, two points. Redundant, but a route redistributed at one point can still be seen by the other point in the destination protocol and win on AD.
- Mutual, two or more points. Redundant and realistic, and home to every problem in chapter 10. You need tags, filters and AD planning.
Lab 1, step by step
Starting point: EIGRP 100 is up between E1, BR1 and BR2; OSPF area 0 is up between O1, BR1 and BR2; no redistribution yet.
Step 1: OSPF into EIGRP on both boundary routers.
! BR1 and BR2 router eigrp 100 redistribute ospf 1 metric 100000 100 255 1 1500 ! alternative: default-metric 100000 100 255 1 1500, then redistribute ospf 1
E1#show ip route eigrp | include EX D EX 10.200.10.0/24 [170/51456] via 10.1.2.2, 00:00:41, GigabitEthernet0/1 [170/51456] via 10.1.1.2, 00:00:41, GigabitEthernet0/0 D EX 10.200.1.0/24 [170/51456] via 10.1.2.2, 00:00:41, GigabitEthernet0/1 [170/51456] via 10.1.1.2, 00:00:41, GigabitEthernet0/0
Two equal next hops: both boundary routers redistribute with the same seed, so E1 load-shares.
Step 2: EIGRP into OSPF on both boundary routers.
router ospf 1 redistribute eigrp 100 subnets
O1#show ip route ospf | include E2 O E2 172.16.10.0/24 [110/20] via 10.2.2.2, 00:01:02, GigabitEthernet0/1 [110/20] via 10.2.1.2, 00:01:02, GigabitEthernet0/0 O E2 192.168.50.0/24 [110/20] via 10.2.2.2, 00:01:02, GigabitEthernet0/1
Notice the difference. 172.16.10.0/24 is an EIGRP internal route (AD 90) on both boundary routers, so both redistribute it. 192.168.50.0/24 is EIGRP external (AD 170). Whichever boundary router redistributed it first (here BR2) created an O E2 route; the other one (BR1) then preferred that O E2 copy (AD 110) over its own D EX route (AD 170), so BR1 has nothing to redistribute. You have just reproduced the suboptimal-routing problem that lab 2 fixes.
Step 3: feedback appears. BR1 now holds 192.168.50.0/24 as an OSPF route, and it redistributes OSPF into EIGRP, so it injects E1's own network back into EIGRP with the lab seed metric.
E1#show ip eigrp topology all-links | section 192.168.50.0
P 192.168.50.0/24, 1 successors, FD is 128256, serno 7
via Rconnected (128256/0)
via 10.1.1.2 (51456/51200), GigabitEthernet0/0
E1 still forwards with its connected route (AD 0), but EIGRP now holds a second path for this network pointing back through BR1, and that fake path even has the better metric. If Loopback1 went down, the fake path could keep the network alive in EIGRP and pull traffic into a loop.
Step 4: tag and filter. On both boundary routers, stamp routes on the way out and refuse the stamp on the way back (chapter 11 explains the design in depth).
route-map EIGRP-TO-OSPF deny 10 match tag 110 route-map EIGRP-TO-OSPF permit 20 set tag 90 route-map OSPF-TO-EIGRP deny 10 match tag 90 route-map OSPF-TO-EIGRP permit 20 set tag 110 router ospf 1 redistribute eigrp 100 subnets route-map EIGRP-TO-OSPF router eigrp 100 redistribute ospf 1 metric 100000 100 255 1 1500 route-map OSPF-TO-EIGRP
Step 5: verify.
E1#show ip eigrp topology all-links | section 192.168.50.0 P 192.168.50.0/24, 1 successors, FD is 128256, serno 9 via Rconnected (128256/0) O1#show ip route 172.16.10.0 Routing entry for 172.16.10.0/24 Known via "ospf 1", distance 110, metric 20 Tag 90, type extern 2, forward metric 1 Routing Descriptor Blocks: 10.2.2.2, from 2.2.2.2, 00:00:32 ago, via GigabitEthernet0/1 Route metric is 20, traffic share count is 1 Route tag 90 * 10.2.1.2, from 1.1.1.1, 00:00:32 ago, via GigabitEthernet0/0 Route metric is 20, traffic share count is 1 Route tag 90
The lab asks you to read that tag: 90. Finally, ping 10.200.10.10 from PCE succeeds, and PCO reaches 192.168.50.1.
Worked example: why the ping works in both directions. PCE (172.16.10.10) sends to 10.200.10.10. E1 has D EX 10.200.10.0/24 via BR1 and BR2 (seed from step 1). BR1 has O 10.200.10.0/24 via O1. The reply to 172.16.10.10 uses O1's O E2 172.16.10.0/24 via either boundary router, which has D 172.16.10.0/24 via E1. Every hop has a route in both directions: that is the definition of working redistribution.
Common mistake. Configuring the tag route maps on only one boundary router. The other one keeps redistributing untagged routes and will happily re-inject routes that the first router tagged. Mutual redistribution policy must be identical on every boundary router.
Exam trap. Mutual redistribution at a single point cannot cause route feedback between the two domains, because there is no second boundary for a route to come back through. Questions about feedback loops always involve two or more redistribution points.
The branch that only needed a default
A retail company ran mutual redistribution between its EIGRP core and every OSPF store router at two hubs. Every store change caused EIGRP churn and one hub sometimes routed store traffic through the other. The redesign made redistribution one-way: each hub redistributed OSPF store networks into EIGRP with tags, and sent only default-information originate into OSPF. The stores lost nothing (all non-store traffic went to the hubs anyway) and the feedback risk disappeared.
Lesson: the safest redistribution is the one you do not need; a default route often replaces the return direction.
"When would you choose one-way redistribution plus a default route instead of mutual redistribution?"
Strong answer: when one domain is a stub, such as branches or an acquired site whose only exit is the core. Redistribute the stub's prefixes into the core (tagged and filtered), and give the stub a default with default-information originate. It removes feedback and AD problems in the return direction and keeps the stub's tables small. Use mutual redistribution only when both domains need specific routes from each other, and then plan tags, filters and AD on every boundary router.
Key takeaways
- Risk grows from one-way at one point to mutual at several points.
- One-way plus a default route is the simplest safe design for stub domains.
- Lab 1: seed metric into EIGRP,
subnetsinto OSPF, then tag route maps on both boundary routers. - EIGRP externals redistributed at two points show both feedback and AD-based suboptimal routing.
- Verify with
show ip route(tags, next hops),show ip eigrp topology all-linksand end-to-end pings.
Multi-point redistribution problems: suboptimal paths and loops
Two villages are joined by two bridges. A story leaves village A over the north bridge, is told in village B, and walks back over the south bridge. Now village A hears its own story, but told by strangers from B, and some people believe the stranger's version more than the original. That is route feedback. With two or more redistribution points it is not a rare accident; it is the default behaviour unless you stop it. This chapter dissects every failure it causes, using the module topology.
Problem 1: suboptimal routing caused by AD
Follow the Delhi partner network 192.168.50.0/24, an EIGRP external route (E1 redistributes it from Loopback1).
- Both boundary routers learn it as D EX, AD 170 from E1.
- BR2 redistributes it into OSPF first. O1 floods a type-5 LSA; BR1 receives it as O E2, AD 110.
- BR1 compares AD: 110 beats 170. BR1 installs the OSPF copy and routes 192.168.50.0/24 via O1, BR2 and E1: three hops instead of one.
- Because BR1's RIB entry is now OSPF,
redistribute eigrp 100on BR1 no longer exports it. Only BR2 advertises it into OSPF; the redundancy you built exists only on paper.
BR1 trusts the OSPF copy of an EIGRP external route and sends traffic around the ring; hops 1, 2, 3 match the lab 2 traceroute.
BR1#traceroute 192.168.50.1
Type escape sequence to abort.
Tracing the route to 192.168.50.1
VRF info: (vrf in name/id, vrf out name/id)
1 10.2.1.1 1 msec 1 msec 1 msec
2 10.2.2.2 1 msec 2 msec 1 msec
3 10.1.2.1 2 msec * 2 msec
Hop 1 is O1 (10.2.1.1): the first answer in lab 2. Note that EIGRP internal routes such as 172.16.10.0/24 do not suffer, because AD 90 beats 110. The problem hits routes that are external in their home protocol: EIGRP externals, and in other designs RIP routes (120) versus OSPF or anything versus eBGP (20).
Problem 2: route feedback and a persistent loop
BR1 holds 192.168.50.0/24 as OSPF, and it redistributes OSPF into EIGRP. Without tags, it injects Delhi's own network back into Delhi. Now imagine Loopback1 on E1 goes down.
- E1 loses the connected route. EIGRP still has the feedback path via BR1 (chapter 9, step 3), so E1 installs D EX 192.168.50.0/24 via BR1.
- E1 advertises it to BR2 (split horizon only stops it towards BR1). BR2 keeps its D EX route and keeps redistributing it into OSPF.
- O1 keeps the LSA and forwards to BR2; BR1 keeps its O E2 route via O1 and keeps feeding EIGRP.
- Result: a network that no longer exists stays in both domains, and packets for it circle E1, BR1, O1, BR2, E1 until the TTL expires.
Without tags, a withdrawn network keeps circulating between the two domains and traffic loops until TTL expiry.
Problem 3: lost metrics and misleading seeds
A seed metric replaces the route's real cost. In lab 1 the feedback copy of 192.168.50.0/24 arrived at E1 with metric 51,456, better than the genuine connected route's 128,256. Any router that compares only EIGRP metrics could prefer a path through the other domain. Seed metrics should be worse than real internal paths; a common rule is to use a seed that looks like a slow link.
Problem 4: oscillation
Because a boundary router stops redistributing a prefix as soon as it installs the other protocol's copy, the two boundary routers can take turns: BR1 withdraws its type-5 LSA, BR2's copy wins everywhere, then a change on BR2 flips the preference again. debug ip routing shows the same prefix being added and deleted every few seconds. Stable AD and tag policy removes the cause.
Worked example: which prefixes are at risk? In the module topology, list each prefix with its AD at the boundary routers. 172.16.10.0/24: D (90) versus O E2 copy (110), safe. 192.168.50.0/24: D EX (170) versus O E2 copy (110), at risk. 10.200.10.0/24: O (110) versus D EX copy (170), safe. 10.200.1.0/24: O (110), safe. Only prefixes whose original AD is worse than the copy's AD in the other protocol can be pulled the wrong way. That quick table predicts the lab 2 ticket before you run a single command.
The toolbox
| Problem | Primary fix | Also useful |
|---|---|---|
| Feedback of routes into their origin | Tag on exit, deny tag on entry (chapter 11) | Prefix lists that deny the domain's own ranges |
| AD-based suboptimal routing | distance ospf external 171 or per-source distance | distribute-list by tag inbound on boundary routers |
| Misleading seed metrics | Seeds worse than internal paths | Filtering, E1 metric type for consistent OSPF costs |
| Oscillation | Consistent AD and tags on all boundary routers | Summarise at the boundary to reduce churn |
Common mistake. Fixing only the symptom router. The lab 2 ticket names BR1, but the policy (distance and tags) must be identical on BR1 and BR2. Otherwise the problem flips to BR2 the next time the redistribution race goes the other way, for example after a reload.
Exam trap. Tags stop feedback (re-redistribution) but not AD-based suboptimal routing: in lab 2 the tags are already in place and BR1 still takes the long path. The two problems need two different fixes.
The ghost subnet
A manufacturing plant decommissioned the 10.44.0.0/24 camera network, but the NOC still saw it in both RIP and OSPF a week later, and a ping to 10.44.0.1 produced "TTL expired in transit" from alternating routers. The two plant boundary routers ran mutual RIP and OSPF redistribution without tags. The route was feeding itself between the protocols. Adding tag-based deny route maps on both boundary routers made the ghost vanish within one update interval.
Lesson: a route that outlives its network, plus TTL-expired errors between boundary routers, means redistribution feedback.
"Describe the problems that appear with mutual redistribution at two points and how you would prevent them."
Strong answer: first, route feedback, where a route leaves a domain at one boundary and re-enters at the other, which can keep dead routes alive and form loops; prevent it with tags set on exit and denied on entry, or prefix lists. Second, suboptimal routing, where a boundary router prefers the other protocol's copy because of AD, for example O E2 110 over D EX 170; fix it with distance ospf external 171 or per-source distance. Mention lost metrics, oscillation, and applying the same policy on every boundary router.
Key takeaways
- With two or more mutual redistribution points, route feedback happens by default.
- Routes that are external in their home protocol (D EX 170) lose to the other protocol's copy (O E2 110): suboptimal routing.
- A boundary router that installs the other copy stops redistributing the original, weakening redundancy.
- Feedback can keep withdrawn networks alive and loop traffic; tags fix feedback, AD fixes the path choice.
- Build a quick AD table per prefix to predict which routes are at risk.
Loop prevention: tags, split horizon and route poisoning
Every culture has rules against gossip loops. You stamp a letter so it is not delivered twice. You do not repeat a story back to the person who told it to you. And when a road is really closed, you shout "closed!" loudly instead of just going quiet, so nobody keeps driving towards it. Routing has exactly these three rules: tags, split horizon and route poisoning. Blueprint item 1.3 asks you to troubleshoot all of them, plus filtering.
Route tags: the passport stamp
A route tag is a 32-bit number attached to a route. It does nothing by itself; it is metadata that a route map can later match. Where it lives:
- EIGRP external routes carry an administrator tag in the External data (named mode can also tag internal routes).
- OSPF type-5 and type-7 LSAs carry an External Route Tag, and every router in the domain sees it.
- RIPv2 has a route tag field. BGP has no tag field; it uses communities for the same purpose.
The key property: the tag survives the trip through the other protocol, because each redistribution can copy or set it. That lets the second boundary router recognise a route that originally came from the domain it is about to enter.
BR1 stamps the Delhi route with tag 90 on its way into OSPF; BR2 sees the stamp and refuses to send it back into EIGRP.
The lab tag design, line by line
route-map EIGRP-TO-OSPF deny 10 match tag 110 ! born in OSPF: never send it back to OSPF route-map EIGRP-TO-OSPF permit 20 set tag 90 ! everything else: stamp "born in EIGRP" route-map OSPF-TO-EIGRP deny 10 match tag 90 ! born in EIGRP: never send it back to EIGRP route-map OSPF-TO-EIGRP permit 20 set tag 110 ! everything else: stamp "born in OSPF"
The same four entries go on every boundary router. Each direction does two jobs: deny the other domain's stamp, and set its own stamp on everything it lets through.
O1#show ip ospf database external 172.16.10.0
OSPF Router with ID (9.9.9.9) (Process ID 1)
Type-5 AS External Link States
LS age: 312
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 172.16.10.0 (External Network Number )
Advertising Router: 1.1.1.1
LS Seq Number: 80000002
Checksum: 0x5A2C
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 90
Worked example: three or more boundary routers. With domain tags, any number of boundary routers can share the same two values. Some designs instead give each boundary router its own tag (BR1 sets 1, BR2 sets 2, BR3 sets 3) and every router denies all of them with one line, match tag 1 2 3 (OR logic). Per-router tags let you see in any routing table exactly which boundary router injected a route, which speeds up troubleshooting in large networks.
Tags to protect path choice
Tags plus deny stop re-redistribution. To also stop a boundary router from installing a route that originally came from its own other side, filter by tag inbound, as in chapter 7: distribute-list route-map NO-OSPF-BORN in under EIGRP (deny tag 110). OSPF can do the same for its RIB with distribute-list route-map matching tag 90. Combining tags with this inbound filter is the most robust multi-point design.
Split horizon and poison reverse
Split horizon: a distance-vector router never advertises a route out of the interface it uses to reach that route. It prevents two-router loops. RIP and EIGRP enable it by default. The classic exception is a hub-and-spoke network such as a DMVPN hub, where all spokes sit behind one tunnel interface; the hub must use no ip split-horizon eigrp 100 on the tunnel so spokes learn each other's networks (DMVPN module). Poison reverse is the stronger form: advertise the route back to where it came from, but with an infinite metric.
Route poisoning
When a route fails, the router advertises it immediately with an infinite metric instead of silently dropping it: hop count 16 in RIP, maximum delay in EIGRP (EIGRP then queries neighbours for an alternative). Neighbours remove it at once instead of waiting for timers. RIP adds hold-down timers and triggered updates; EIGRP relies on DUAL's feasibility condition, which only accepts backup paths that are guaranteed loop-free.
Other built-in guards worth knowing
| Protocol | Guard |
|---|---|
| EIGRP | Ignores external routes whose originating router ID equals its own; feasibility condition |
| OSPF | SPF on a shared LSDB; inter-area routes must pass through area 0; down bit and domain tag for PE-CE (VRF module) |
| BGP | Rejects routes containing its own AS in AS_PATH; iBGP routes are not re-advertised to iBGP peers |
| RIP | Split horizon, poison reverse, route poisoning, hold-down, maximum 15 hops |
Common mistake. Setting tags but never matching them. A route map with only set tag 90 stamps passports that nobody checks. Also, tag 0 is the default for untagged routes, so match tag 0 matches almost everything and is not a loop guard.
Exam trap. Duplicate EIGRP router IDs. Because EIGRP drops external routes that carry its own router ID as the originator, two routers with the same router ID silently ignore each other's redistributed routes while internal routes work fine. Symptom: only D EX routes missing.
The cloned router ID
A new Delhi branch router was built from E1's configuration template and kept eigrp router-id 5.5.5.5. It redistributed its static routes to a vendor network into EIGRP. Every router except E1 learned them; E1 did not. show ip eigrp topology on BR1 showed "Originating router is 5.5.5.5" for the vendor routes, the same as E1's own router ID, so E1 discarded them as its own looping externals. Changing the branch router ID to 5.5.5.6 fixed it.
Lesson: the originating router ID in EIGRP external data is a loop guard; duplicate router IDs trigger it falsely.
"How do route tags prevent redistribution loops, and what other loop-prevention mechanisms should a network engineer know?"
Strong answer: a boundary router sets a tag identifying the source domain when it redistributes; the tag travels in EIGRP external data or the OSPF type-5 LSA; the other boundary router's route map denies that tag, so the route cannot re-enter its origin. Tags can also drive inbound distribute-lists to prevent installing re-entered routes. Then list the built-ins: split horizon and poison reverse, route poisoning with infinite metrics, EIGRP feasibility condition and originating router ID check, OSPF's backbone rule, BGP AS_PATH.
Key takeaways
- A tag is a 32-bit stamp carried in EIGRP externals and OSPF type-5/7 LSAs; it survives redistribution.
- Set your domain's tag on exit and deny the other domain's tag on entry, identically on every boundary router.
- Inbound distribute-lists matching tags also protect path selection.
- Split horizon, poison reverse and route poisoning prevent distance-vector loops; disable split horizon only where needed, such as a DMVPN hub.
- Duplicate EIGRP router IDs make routers drop each other's external routes.
Troubleshooting workflow: walking lab 2
A good doctor does not start with surgery. She asks where it hurts, checks the pulse, orders one test, reads it, and only then treats. Redistribution problems deserve the same discipline, because the symptom (a missing route in Delhi) often appears far from the cause (one line in a prefix list in a boundary router). This chapter gives you a repeatable workflow and then walks the lab 2 tickets exactly as you would in the lab or the exam.
The workflow: follow the route from birth to destination
- Define the symptom precisely. Which prefix, seen from which router, and which of three types: missing, wrong path, or looping/flapping. Use
show ip route PREFIX,tracerouteandpingwith a source. - Birth: is the route installed from the intended source on the redistributing router?
show ip route PREFIXand read "Known via". If AD made another source win, nothing will be exported from the intended one. - The redistribute command.
show ip protocolsandshow running-config | section router: right process or AS number, seed metric into EIGRP or RIP,subnetsinto OSPF, the route-map name spelled exactly. - Policy.
show route-map NAME,show ip prefix-list detail NAME(hit counts), ACLs. Walk the route through the entries by hand. - The target database.
show ip eigrp topology PREFIX(External data, originating router, tag) orshow ip ospf database external PREFIX(advertising router, tag, metric type). - Propagation. Distribute-lists, summarisation, EIGRP stub, OSPF stub or totally stubby areas (which block type-5 LSAs), filtering on ABRs.
- Path choice. On each hop, compare AD and metric; check both boundary routers.
- Loops. TTL-expired messages,
debug ip routingshowing add and delete churn, missing tags.
Eight checks in order: most tickets are solved by step 4, but steps 7 and 8 catch the multi-point problems.
Lab 2, ticket 1: BR1 takes the long way to 192.168.50.0/24
Symptom. The lab asks for hop 1 of a traceroute from BR1.
BR1#traceroute 192.168.50.1
Tracing the route to 192.168.50.1
1 10.2.1.1 1 msec 1 msec 1 msec
2 10.2.2.2 1 msec 2 msec 1 msec
3 10.1.2.1 2 msec * 2 msec
Hop 1 is 10.2.1.1, O1: BR1 is sending Delhi traffic into Bengaluru. Check the RIB.
BR1#show ip route 192.168.50.0 Routing entry for 192.168.50.0/24 Known via "ospf 1", distance 110, metric 20 Tag 90, type extern 2, forward metric 2 Redistributing via eigrp 100 Routing Descriptor Blocks: * 10.2.1.1, from 2.2.2.2, 00:12:40 ago, via GigabitEthernet0/1 Route metric is 20, traffic share count is 1 Route tag 90
The route is O E2, tag 90 (born in EIGRP), advertised by 2.2.2.2 (BR2). The tags already prevent it going back into EIGRP, so this is not feedback. It is AD: 110 beats the D EX 170 still visible in show ip eigrp topology 192.168.50.0/24. Fix on both boundary routers:
router ospf 1 distance ospf external 171
BR1#show ip route 192.168.50.0 | include Known Known via "eigrp 100", distance 170, metric 130816, type external O1#show ip route 192.168.50.0 | include via * 10.2.2.2, from 2.2.2.2, 00:00:18 ago, via GigabitEthernet0/1 10.2.1.2, from 1.1.1.1, 00:00:18 ago, via GigabitEthernet0/0
BR1 now uses E1 directly, and because BR1's RIB entry is EIGRP again, it redistributes the prefix too: O1 load-shares across both boundary routers. Redundancy restored.
Lab 2, ticket 2: Delhi cannot reach the Bengaluru users
Symptom. E1 has only one Bengaluru prefix.
E1#show ip route | include 10.200
D EX 10.200.1.0/24 [170/51456] via 10.1.2.2, 00:14:02, GigabitEthernet0/1
[170/51456] via 10.1.1.2, 00:14:02, GigabitEthernet0/0
Source RIB: BR1 has O 10.200.10.0/24 and O 10.200.2.0/24, so birth is fine. Redistribute command: show ip protocols shows "Redistributing: ospf 1" and the running config shows route-map OSPF-TO-EIGRP with the seed metric. Policy:
BR1#show route-map OSPF-TO-EIGRP
route-map OSPF-TO-EIGRP, deny, sequence 10
Match clauses:
tag 90
route-map OSPF-TO-EIGRP, permit, sequence 20
Match clauses:
ip address prefix-lists: OSPF-LANS
Set clauses:
tag 110
BR1#show ip prefix-list detail OSPF-LANS
seq 5 permit 10.200.1.0/24 (hit count: 14, refcount: 1)
Walk 10.200.10.0/24 through the map: not tag 90, then no prefix-list entry matches, so implicit deny. Fix on both boundary routers, without touching the tagging:
ip prefix-list OSPF-LANS seq 10 permit 10.200.0.0/16 le 24
E1#show ip route 10.200.10.0 Routing entry for 10.200.10.0/24 Known via "eigrp 100", distance 170, metric 51456, type external Routing Descriptor Blocks: * 10.1.2.2, from 10.1.2.2, 00:00:25 ago, via GigabitEthernet0/1 Route metric is 51456, traffic share count is 1 Route tag 110 10.1.1.2, from 10.1.1.2, 00:00:25 ago, via GigabitEthernet0/0
Final check: PCE pings 10.200.10.10 and PCO pings 192.168.50.1. A ping sourced from O1 itself may still fail, because O1 sources it from a transit link (10.2.x.x) that the prefix list deliberately does not redistribute. That is expected, not a new fault.
Debugging, carefully
debug ip routing prints every RIB add and delete, and reveals AD fights and oscillation.
RT: add 192.168.50.0/24 via 10.1.1.1, eigrp metric [170/130816]
RT: closer admin distance for 192.168.50.0, flushing 1 routes
RT: add 192.168.50.0/24 via 10.2.1.1, ospf metric [110/20]
Use it on a lab router or with logging to the buffer and a short capture window, then undebug all.
Worked example: symptom to cause cheat table. Only D EX routes missing on one router: duplicate EIGRP router ID. Nothing redistributed into EIGRP: missing seed metric or missing route map. Only classful networks in OSPF: missing subnets on old code. Some prefixes missing: prefix list or route map implicit deny. Wrong path at a boundary: AD. Dead routes that stay alive and TTL expired: feedback without tags. Type-5 routes missing in one area: stub area.
Common mistake. Changing configuration before collecting evidence. Removing the tag route maps "to test" in lab 2 would re-open the feedback loop and make both tickets harder to read. Change one thing, on all boundary routers, and re-verify.
Exam trap. In troubleshooting questions the first command you choose matters. For "route missing after redistribution" the best first step is usually show ip route PREFIX on the redistributing router (is it installed from the source?), not a debug.
Missing only in the branches
After a migration, a hub correctly redistributed EIGRP into OSPF, and the core routers saw every O E2 route, but branch routers in area 20 did not. Steps 2 to 5 all checked out. Step 6 found area 20 stub on the ABR: stub areas block type-5 LSAs and replace them with a default route. The branches were fine with the default; the real fault was a monitoring server that polled for specific routes. The team documented the design instead of changing it.
Lesson: finish the workflow; sometimes "missing" is the design working as intended.
"A prefix redistributed from OSPF into EIGRP is missing on some EIGRP routers. Walk me through your troubleshooting."
Strong answer: confirm the symptom with show ip route on an affected and an unaffected router. On the boundary router, check the prefix is installed as OSPF, then check the redistribute command (seed metric, route-map name), the route map and prefix list hit counts, and whether the prefix is in show ip eigrp topology with the expected tag. Then look downstream for distribute-lists, summarisation or stub configuration, and check duplicate router IDs if only externals are missing. Apply fixes consistently on every boundary router and verify end to end.
Key takeaways
- Classify the symptom: missing, wrong path, or looping.
- Follow the prefix: source RIB, redistribute command, policy, target database, propagation, path choice, loops.
- Lab 2 ticket 1 is AD (fix with
distance ospf external 171); ticket 2 is a too-exact prefix list (fix withle 24). - Prefix-list hit counts, route tags and External data are the fastest evidence.
- Use
debug ip routingcarefully to catch AD fights and flapping.
Summary and exam checklist
Back at the border post from chapter 1. The officer now knows whom to trust (AD), how to convert currency (seed metrics), which goods may cross (prefix lists, route maps, distribute-lists) and how to stamp passports so nobody sneaks back in (tags). This chapter is your revision sheet: what you must be able to do, the words you must know, the facts the exam loves, and the commands in one place.
The four blueprint items meet at every boundary router.
Can-do checklist
- State the default AD of every source and explain why EIGRP external is 170 and iBGP 200.
- Separate metric (inside a protocol), AD (between sources for the same prefix) and longest match (per packet).
- Change AD with
distance eigrp,distance ospf,distance bgp, per source and per prefix with an ACL; know that OSPF per-source uses originating router IDs. - Write and read prefix lists with ge and le without hesitation, including permit-any and default-only entries.
- Explain how standard and extended ACLs match routes and why prefix lists are preferred.
- Trace any route through a route map: sequence order, AND/OR, implicit deny, set actions, continue.
- Apply distribute-lists in EIGRP and OSPF and predict exactly what neighbours see.
- Redistribute between EIGRP, OSPF, BGP, RIP, connected and static with the correct seed metrics and keywords.
- Build lab 1 (mutual redistribution with tags) and fix lab 2 (AD and prefix-list tickets) from memory.
- Recognise feedback, suboptimal routing, lost metrics and oscillation, and choose the right fix for each.
- Explain split horizon, poison reverse, route poisoning and the EIGRP originating router ID check.
Mini glossary
- Administrative distance
- Local trust value (0 to 255) used to choose between sources offering the same prefix; lower wins; never advertised.
- Seed metric
- The starting metric a redistributed route receives in the target protocol.
- Redistribution
- Copying routes installed by one source into another protocol on one router, in one direction.
- Mutual redistribution
- Redistribution in both directions between two domains.
- Route feedback
- A route re-entering the domain it came from through another redistribution point.
- Route tag
- 32-bit label on EIGRP external and OSPF external routes, used by route maps to recognise origin.
- Prefix list
- Ordered filter matching network bits and prefix length (ge, le).
- Route map
- Ordered permit/deny entries with match conditions and set actions.
- Distribute-list
- Filter applied to a routing process inbound or outbound, per interface or per redistributed protocol.
- Split horizon
- Never advertise a route out of the interface used to reach it.
- Route poisoning
- Advertising a failed route with an infinite metric so neighbours drop it at once.
Most tested facts
| Topic | Fact |
|---|---|
| AD | 0 connected, 1 static, 5 EIGRP summary, 20 eBGP, 90 EIGRP, 110 OSPF, 115 IS-IS, 120 RIP, 170 EIGRP external, 200 iBGP, 255 unusable |
| Into OSPF | E2, metric 20 (1 from BGP); subnets needed on old IOS |
| Into EIGRP | Seed metric required from other routing protocols; five values BW DLY REL LOAD MTU |
| Into BGP | MED = IGP metric; OSPF internal routes only by default |
| Out of BGP | eBGP routes only unless bgp redistribute-internal |
| Prefix list | LEN < ge ≤ le ≤ 32; implicit deny; 0.0.0.0/0 le 32 = any |
| Route map | Different match types AND, values OR, no match = all, implicit deny at end |
| OSPF distribute-list in | Filters local RIB only; LSAs still flood |
| Multi-point | Tags stop feedback; AD fixes suboptimal paths; apply to every boundary router |
Command cheat sheet
router eigrp 100
redistribute ospf 1 metric 100000 100 255 1 1500 route-map OSPF-TO-EIGRP
distance eigrp 90 170
distribute-list prefix NAME {in | out} [interface]
router ospf 1
redistribute eigrp 100 subnets route-map EIGRP-TO-OSPF
distance ospf intra-area 110 inter-area 110 external 171
distance 171 2.2.2.2 0.0.0.0 50
default-information originate
ip prefix-list OSPF-LANS seq 10 permit 10.200.0.0/16 le 24
route-map OSPF-TO-EIGRP deny 10
match tag 90
route-map OSPF-TO-EIGRP permit 20
match ip address prefix-list OSPF-LANS
set tag 110
show ip route PREFIX ! Known via, distance, Tag, Advertised by show ip protocols ! Redistributing, filters, Distance show ip eigrp topology PREFIX ! External data: protocol, originator, tag show ip ospf database external PREFIX ! Advertising Router, Metric Type, Tag show route-map NAME show ip prefix-list detail NAME ! hit counts debug ip routing ! RIB add/delete, AD fights
Worked example: a 60-second exam drill. Output: BR2 shows 10.99.1.0/24 as "Known via ospf 1, distance 110, Tag 90". Reasoning: tag 90 means born in EIGRP; OSPF won on AD; if BR2's OSPF-TO-EIGRP map lacks deny tag 90, feedback follows; if the EIGRP original was external, BR2 is taking a suboptimal path. Two checks, show route-map and show ip eigrp topology 10.99.1.0/24, confirm which.
Common mistake. Memorising commands without the rules. The exam rarely asks "type the command"; it shows output with one wrong value. Know why each default exists and you will spot the wrong line quickly.
Exam trap. Watch for answers that fix only one boundary router, lower EIGRP external AD without considering OSPF internals, or use an OSPF distribute-list to "stop advertisement". Each is a classic wrong option.
Handover checklist after the merger
When the Delhi and Bengaluru networks from our labs went into production, the senior engineer left a five-line handover note: seed metric 100000 100 255 1 1500 on both boundary routers; tags 90 (EIGRP-born) and 110 (OSPF-born) with deny entries; distance ospf external 171 on both; OSPF-LANS prefix list covers 10.200.0.0/16 up to /24; any new boundary router must copy all four. Six months later a third boundary router was added in a day without incident.
Lesson: a redistribution design is a policy; write it down and apply it identically everywhere.
"Design mutual redistribution between an EIGRP and an OSPF domain with two boundary routers. What goes into your checklist?"
Strong answer: seed metrics that are worse than internal paths; subnets into OSPF; prefix lists limiting what each side exports; tags on exit and tag denies on entry; AD adjustment such as distance ospf external 171, or inbound tag filters, so EIGRP externals are not replaced by their OSPF copies; identical policy on both routers; and a verification plan with show ip route, topology and LSDB checks, traceroutes from both domains, and a failure test.
Key takeaways
- Four jobs at every boundary: trust (AD), convert (seed), filter (maps and lists), stamp (tags).
- Know the defaults: AD table, OSPF 20 E2, EIGRP needs a seed, BGP MED and eBGP-only rules.
- Prefix lists and route maps are logic puzzles: practise until matching is automatic.
- Two or more redistribution points need tags and AD planning on every boundary router.
- Troubleshoot by following the prefix from birth to where it is missing.