In the top diagram I have a non-standard OSPF network (only OSPF AS internal routes) that works well and optimized if all links and nodes are up.
I will show throughout this part some failing scenarios and how parts of the network can remain separated from each other even though there are physical paths.
Based on references from part 1 of this article, Juniper and Cisco have different behavior when it comes to acting as an ABR - more in depth RFC 3509.
Cisco approach: It needs one interface in area 0 - backbone to advertise it self in all areas that it is an ABR (B bit set) and to convert type 1 and type 3 LSAs from one area into type 3 LSA on another area. Without an interface in area 0, it will be a router inside both areas without sending summary LSAs with destinations from other non-backbone area.
Juniper approach: Juniper device will act as an ABR if it has two interfaces in two different areas, even two non-backbone areas. Thus, it will take Router and Summary LSAs from any area (let's say 20) and send Summary LSAs with those destinations to area 30.
Following information will be based on Juniper approach (part 3 will be based on a GNS lab).
In the picture above backbone area is the one on top and chained to it are Areas 10 and 20, next to these areas is chained area 40. Area 40 is isolated from the backbone.
Quiz 1: From Host A traffic to Host B will go via.... ? (remember this setup is based on Junos devices).
Answer: HostA - R3 - R4 - HostB
Code:
HostA# traceroute 10.43.4.2 traceroute to 10.43.4.2 (10.43.4.2), 128 hops max, 52 byte packets 1 10.43.3.1 (10.43.3.1) 2.284 ms 2.993 ms 5.547 ms 2 10.42.25.2 (10.42.25.2) 6.617 ms 5.657 ms 8.197 ms 3 10.43.4.2 (10.43.4.2) 11.866 ms 7.795 ms 5.978 ms
Why is that ? Let's look at OSPF database on R4 ( I prefer to start from destination ):
Code:
[edit] admin@R4# run show ospf database advertising-router self lsa-id 10.255.0.4 extensive area 20
OSPF database, Area 0.0.0.20 Type ID Adv Rtr Seq Age Opt Cksum Len Router *10.255.0.4 10.255.0.4 0x8000000c 201 0x22 0x3621 72 bits 0x1, link count 4 id 10.42.7.1, data 10.42.7.2, Type Transit (2) Topology count: 0, Default metric: 1 id 10.43.4.0, data 255.255.255.0, Type Stub (3) Topology count: 0, Default metric: 1 id 10.255.0.4, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 id 172.16.4.0, data 255.255.255.0, Type Stub (3) Topology count: 0, Default metric: 1 Topology default (ID 0) Type: Transit, Node ID: 10.42.7.1 Metric: 1, Bidirectional Gen timer 00:46:39 Aging timer 00:56:39 Installed 00:03:21 ago, expires in 00:56:39, sent 00:03:19 ago Last changed 00:46:21 ago, Change count: 5, Ours [edit] admin@R4# run show ospf database advertising-router self lsa-id 10.43.4.0 extensive area 40
OSPF database, Area 0.0.0.40 Type ID Adv Rtr Seq Age Opt Cksum Len Summary *10.43.4.0 10.255.0.4 0x80000003 523 0x22 0x688a 28 mask 255.255.255.0 Topology default (ID 0) -> Metric: 1 Gen timer 00:40:58 Aging timer 00:51:16 Installed 00:08:43 ago, expires in 00:51:17, sent 00:08:40 ago Last changed 00:47:40 ago, Change count: 1, Ours
R4 injects the destination subnet 10.43.4.0/24 in area 20 in a type 1 Router LSA (interface is added to area 20) - Notice Type 1 LSA bits 0x1 - Acting as ABR. R4 injects the destination subnet 10.43.4.0/24 in area 40 as a type 4 Summary LSA.
Both LSAs have Advertising Router ID R4 10.255.0.4.
Next we look at R3:
Code:
[edit] admin@R3# run show ospf database area 40 lsa-id 10.43.4.0 extensive
OSPF database, Area 0.0.0.40 Type ID Adv Rtr Seq Age Opt Cksum Len Summary 10.43.4.0 10.255.0.4 0x80000003 695 0x22 0x688a 28 mask 255.255.255.0 Topology default (ID 0) -> Metric: 1 Aging timer 00:48:24 Installed 00:11:31 ago, expires in 00:48:25 Last changed 00:50:31 ago, Change count: 1
Based on this type 3 LSA that R3 received from R4, it forwards traffic to R4.
Quiz 2: What if link between R3 and R4 is down ? From Host A traffic to Host B will go via.... ?
Answer: HostA - R3 - R1 - R2 - R4 - HostB
Code:
HostA# traceroute 10.43.4.2 traceroute to 10.43.4.2 (10.43.4.2), 128 hops max, 52 byte packets 1 10.43.3.1 (10.43.3.1) 5.586 ms 2.685 ms 4.955 ms 2 10.42.6.2 (10.42.6.2) 9.922 ms 6.287 ms 5.984 ms 3 10.42.4.1 (10.42.4.1) 7.919 ms 19.464 ms 12.181 ms 4 10.42.7.2 (10.42.7.2) 14.368 ms 9.715 ms 14.054 ms 5 10.43.4.2 (10.43.4.2) 10.119 ms 12.926 ms 13.783 ms
So far so good. Redundancy works and I'm happy. But why does it work ?
Again, I start looking at R4. We know R4 injects Type 1 - Router LSA into area 20 that reaches R1 (type 1 has area scope).
Code:
[edit] admin@R1# run show ospf database area 20 lsa-id 10.255.0.4 extensive
OSPF database, Area 0.0.0.20 Type ID Adv Rtr Seq Age Opt Cksum Len Router 10.255.0.4 10.255.0.4 0x8000000c 828 0x22 0x3621 72 bits 0x1, link count 4 id 10.42.7.1, data 10.42.7.2, Type Transit (2) Topology count: 0, Default metric: 1 id 10.43.4.0, data 255.255.255.0, Type Stub (3) Topology count: 0, Default metric: 1 id 10.255.0.4, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 id 172.16.4.0, data 255.255.255.0, Type Stub (3) Topology count: 0, Default metric: 1 Topology default (ID 0) Type: Transit, Node ID: 10.42.7.1 Metric: 1, Bidirectional Aging timer 00:46:12 Installed 00:13:42 ago, expires in 00:46:12 Last changed 00:56:46 ago, Change count: 5
Notice the bit 0x1, Advertising router R4 and network 10.43.4.0/24 Stub network. Now we look at information that R1 injects into Area 10 (towards VR1 and R3):
Code:
[edit] admin@R1# run show ospf database advertising-router self
[edit] admin@R1# run show ospf database advertising-router self lsa-id 10.255.0.1 extensive
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Router *10.255.0.1 10.255.0.1 0x8000000b 1497 0x22 0x5393 72 bits 0x1, link count 4 id 10.42.1.2, data 10.42.1.1, Type Transit (2) Topology count: 0, Default metric: 1 id 10.42.6.2, data 10.42.6.2, Type Transit (2) Topology count: 0, Default metric: 1 id 10.255.0.255, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 id 10.255.0.1, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 Topology default (ID 0) Type: Transit, Node ID: 10.42.6.2 Metric: 1, Bidirectional Type: Transit, Node ID: 10.42.1.2 Metric: 1, Bidirectional Gen timer 00:25:02 Aging timer 00:35:03 Installed 00:24:57 ago, expires in 00:35:03, sent 00:24:55 ago Last changed 03:10:43 ago, Change count: 4, Ours
OSPF database, Area 0.0.0.20 Type ID Adv Rtr Seq Age Opt Cksum Len Router *10.255.0.1 10.255.0.1 0x8000000a 747 0x22 0x524f 36 bits 0x1, link count 1 id 10.42.4.1, data 10.42.4.0, Type Transit (2) Topology count: 0, Default metric: 1 Topology default (ID 0) Type: Transit, Node ID: 10.42.4.1 Metric: 1, Bidirectional Gen timer 00:37:33 Aging timer 00:47:33 Installed 00:12:27 ago, expires in 00:47:33, sent 00:12:25 ago Last changed 00:40:23 ago, Change count: 3, Ours Summary *10.255.0.1 10.255.0.1 0x80000007 934 0x22 0x9090 28 mask 255.255.255.255 Topology default (ID 0) -> Metric: 0 Gen timer 00:34:25 Aging timer 00:44:25 Installed 00:15:34 ago, expires in 00:44:26, sent 00:15:32 ago Last changed 03:16:33 ago, Change count: 1, Ours
[edit] admin@R1# run show ospf database advertising-router self lsa-id 10.43.4.0 extensive
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Summary *10.43.4.0 10.255.0.1 0x80000002 189 0x22 0x9064 28 mask 255.255.255.0 Topology default (ID 0) -> Metric: 3 Gen timer 00:46:50 Aging timer 00:56:50 Installed 00:03:09 ago, expires in 00:56:51, sent 00:03:07 ago Last changed 00:40:27 ago, Change count: 1, Ours
R1 is present in Areas 10 and 20. It advertises it self in both Area 10 and area 20 as ABR (bit 0x1). In area 10 it sends a summary LSA with it's own ID as advertising router (send intra-area traffic for this network through me). This type 3 LSA reaches R3 R3 builds a route based on it.
Next questions will be more interesting as they start touching backbone area 0 .
Quiz 3: What if link between R1 and R2 is down ? From Host A traffic to Host B will go via.... ?
HostA# traceroute 10.43.4.2 traceroute to 10.43.4.2 (10.43.4.2), 128 hops max, 52 byte packets 1 10.43.3.1 (10.43.3.1) 10.864 ms 4.013 ms 6.928 ms 2 10.42.6.2 (10.42.6.2) 6.692 ms 8.018 ms 8.881 ms 3 10.42.1.2 (10.42.1.2) 10.131 ms 8.800 ms 6.316 ms 4 10.42.2.2 (10.42.2.2) 15.703 ms 10.183 ms 10.739 ms 5 10.42.3.1 (10.42.3.1) 17.160 ms 16.460 ms 19.429 ms 6 10.42.7.2 (10.42.7.2) 17.031 ms 11.959 ms 13.024 ms 7 10.43.4.2 (10.43.4.2) 16.934 ms 11.868 ms 15.137 ms
Interesting. Again I'm happy all works. But why does it work ?
This answer is obvious. It's traffic from area 10 via area 0 to area 20.
Quiz 4: What if all links are up except for link between VR2 and R2 ? From VR1 loopback traffic to Host B will go via.... ?
For curiosity sake, before this question is answered, I will show a traceroute from VR1 loopback to HostB:
Code:
[edit] admin@R1# run traceroute 10.43.4.2 routing-instance VR1 source 10.255.0.11 traceroute to 10.43.4.2 (10.43.4.2) from 10.255.0.11, 30 hops max, 40 byte packets 1 10.42.2.2 (10.42.2.2) 5.640 ms 8.252 ms 6.458 ms 2 10.42.3.1 (10.42.3.1) 8.924 ms 9.235 ms 5.363 ms 3 10.42.7.2 (10.42.7.2) 12.476 ms 10.405 ms 9.979 ms 4 10.43.4.2 (10.43.4.2) 8.910 ms 6.221 ms 6.266 ms
This path is VR1 - VR2 - R2 - R4 - HostB. Why ? Because VR1 has an idea about 10.43.4.0/24 network via a type 3 LSA - Summary which was injected into Area 0 by VR2 and in this case.
To satisfy even more curious minds: type 3 LSA reaches VR1 via Area 0 from VR2 and via area 10 from R1. VR1 also converts the LSA from area 0 and injects it into area 10. Result ? LSA loop. This LSA will be present in area 10 from R1 and from VR1:
Code:
[edit] admin@R1# run show ospf database instance VR1 lsa-id 10.43.4.0
OSPF database, Area 0.0.0.0 Type ID Adv Rtr Seq Age Opt Cksum Len Summary 10.43.4.0 10.255.0.12 0x80000001 159 0x22 0x509a 28
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Summary 10.43.4.0 10.255.0.1 0x80000001 275 0x22 0x9263 28 Summary *10.43.4.0 10.255.0.11 0x80000001 157 0x22 0x608a 28
Now, for the answer: They don't go anywhere and packets are dropped Finally I am trully happy (not because of this because we reached a point where this design starts to show flaws.
Let's see why. After link between VR2 and R2 fails, area 0 is isolated from area 20 (where this 10.43.4.0/24 subnet is present). Initially, my questions were: why ? What ? HM .. ?
Let's see, VR1 has a summary LSA for 10.43.4.0 via area 10:
Code:
[edit] admin@R1# run show ospf database instance VR1 lsa-id 10.43.4.0
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Summary 10.43.4.0 10.255.0.1 0x80000001 603 0x22 0x9263 28
Why isn't it using it to construct a route:
Code:
[edit] admin@R1# run show route 10.43.4.2 table VR1.inet.0
VR1.inet.0: 29 destinations, 45 routes (29 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both
0.0.0.0/0 *[Aggregate/130] 1w1d 18:52:03, metric2 0 > to 1.1.1.1 via ge-0/0/1.0 to 1.1.2.1 via ge-0/0/2.0
This points to outside the AS.
Since this network is received ONLY via non-backbone area by VR1 through a summary LSA (VR2 stopped sending the type 3 LSA from area 20 because link between VR2 and R2 failed) and VR1 has a full adjacency on the backbone still, it ignores these summaries. How do we fix this ? Virtual links (Control plane), tunnels (forwarding plane).
Code:
[edit] admin@R1# run show ospf neighbor instance VR1 Address Interface State ID Pri Dead 10.42.2.2 ge-0/0/6.0 Full 10.255.0.12 128 30 10.42.1.1 ge-0/0/5.0 Full 10.255.0.1 128 37
[edit] admin@R1# run show ospf neighbor instance VR1 Address Interface State ID Pri Dead 10.42.1.1 ge-0/0/5.0 Full 10.255.0.1 128 31 [edit] admin@R1# run show route 10.43.4.2
inet.0: 24 destinations, 24 routes (24 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both
10.43.4.0/24 *[OSPF/10] 00:31:50, metric 3 > to 10.42.4.1 via ge-0/0/7.0
VR1.inet.0: 36 destinations, 40 routes (36 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both
10.43.4.0/24 *[OSPF/10] 00:13:55, metric 4 > to 10.42.1.1 via ge-0/0/5.0
So now VR1 has no adjacency in area 0, Only in area 10 and doesn't ignore tye summary lsa from R1, but traffic is still not flowing:
Code:
[edit] admin@R1# run traceroute 10.43.4.2 routing-instance VR1 source 10.255.0.11 wait 1 traceroute to 10.43.4.2 (10.43.4.2) from 10.255.0.11, 30 hops max, 40 byte packets 1 10.42.1.1 (10.42.1.1) 10.165 ms 7.935 ms 9.783 ms 2 * * * 3 *
Hmm so it leaves VR1, R1 and nothig from R2. I look on R1 to see what does it's database contain:
So R1 has a Summary LSA ID 10.255.0.11 from VR1 on Area 10, but it does not send it to area 20.
Conclussion one: OSPF (I know Cisco and find out now also Juniper) does not use a type 3 LSA from non-backbone area to construct another type 3 lsa in another non-backbone area.
What if I move VR1 loopback from area 0 into area 10 ?
Code:
[edit] admin@R1# run show ospf database lsa-id 10.255.0.11 router extensive
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Router 10.255.0.11 10.255.0.11 0x80000009 23 0x22 0xb8b3 48 bits 0x1, link count 2 id 10.42.1.2, data 10.42.1.2, Type Transit (2) Topology count: 0, Default metric: 1 id 10.255.0.11, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 Topology default (ID 0) Type: Transit, Node ID: 10.42.1.2 Metric: 1, Bidirectional Aging timer 00:59:36 Installed 00:00:22 ago, expires in 00:59:37, sent 00:00:22 ago Last changed 00:00:22 ago, Change count: 3
After this change, VR1 injects it's Router LSA into area 10 with loopback 10.255.0.11 (after moving loopback from area 0 to area 10). Now R1 uses this destination and injects a Summary LSA into area 20.
Code:
admin@R1# run traceroute 10.43.4.2 routing-instance VR1 source 10.255.0.11 wait 1 traceroute to 10.43.4.2 (10.43.4.2) from 10.255.0.11, 30 hops max, 40 byte packets 1 10.42.1.1 (10.42.1.1) 3.893 ms 4.099 ms 4.096 ms 2 10.42.4.1 (10.42.4.1) 6.265 ms 6.445 ms 6.399 ms 3 10.42.7.2 (10.42.7.2) 10.237 ms 9.455 ms 8.363 ms 4 10.43.4.2 (10.43.4.2) 8.187 ms 8.460 ms 6.248 ms
Traffic from VR1 loopback to HostB now flows via non backbone area: area 10 and area 20.
Conclussion finale: A destination network is injected in area 1 via Router LSA, injected into area 2 as summary LSA and is not sent into any other area that is non transit area. Destinations local to an area (present in Router LSA) are sent to a non-backbone router as Summary LSA as well as to backbone.
OSPF: Dangers of having non-redundant backbone ABRs isolated areas
This is Part 2 of an OSPF story. Part 1 can be found here: [url]http://forum.ivorde.ro/ospf-multi-area-scenario-with-isolated-areas-cisco-juniper-part-1-t19221.html[/url]
In the top diagram I have a non-standard OSPF network (only OSPF AS internal routes) that works well and optimized if all links and nodes are up.
I will show throughout this part some failing scenarios and how parts of the network can remain separated from each other even though there are physical paths.
Based on references from part 1 of this article, Juniper and Cisco have different behavior when it comes to acting as an ABR - more in depth RFC 3509.
Cisco approach: It needs one interface in area 0 - backbone to advertise it self in all areas that it is an ABR (B bit set) and to convert type 1 and type 3 LSAs from one area into type 3 LSA on another area. Without an interface in area 0, it will be a router inside both areas without sending summary LSAs with destinations from other non-backbone area.
Juniper approach: Juniper device will act as an ABR if it has two interfaces in two different areas, even two non-backbone areas. Thus, it will take Router and Summary LSAs from any area (let's say 20) and send Summary LSAs with those destinations to area 30.
Following information will be based on Juniper approach (part 3 will be based on a GNS lab).
In the picture above backbone area is the one on top and chained to it are Areas 10 and 20, next to these areas is chained area 40. Area 40 is isolated from the backbone.
Quiz 1: From Host A traffic to Host B will go via.... ? (remember this setup is based on Junos devices).
Answer: HostA - R3 - R4 - HostB [code] HostA# traceroute 10.43.4.2 traceroute to 10.43.4.2 (10.43.4.2), 128 hops max, 52 byte packets 1 10.43.3.1 (10.43.3.1) 2.284 ms 2.993 ms 5.547 ms 2 10.42.25.2 (10.42.25.2) 6.617 ms 5.657 ms 8.197 ms 3 10.43.4.2 (10.43.4.2) 11.866 ms 7.795 ms 5.978 ms [/code]
Why is that ? Let's look at OSPF database on R4 ( I prefer to start from destination ): [code] [edit] admin@R4# run show ospf database advertising-router self lsa-id 10.255.0.4 extensive area 20
OSPF database, Area 0.0.0.20 Type ID Adv Rtr Seq Age Opt Cksum Len Router *10.255.0.4 10.255.0.4 0x8000000c 201 0x22 0x3621 72 bits 0x1, link count 4 id 10.42.7.1, data 10.42.7.2, Type Transit (2) Topology count: 0, Default metric: 1 id 10.43.4.0, data 255.255.255.0, Type Stub (3) Topology count: 0, Default metric: 1 id 10.255.0.4, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 id 172.16.4.0, data 255.255.255.0, Type Stub (3) Topology count: 0, Default metric: 1 Topology default (ID 0) Type: Transit, Node ID: 10.42.7.1 Metric: 1, Bidirectional Gen timer 00:46:39 Aging timer 00:56:39 Installed 00:03:21 ago, expires in 00:56:39, sent 00:03:19 ago Last changed 00:46:21 ago, Change count: 5, Ours [edit] admin@R4# run show ospf database advertising-router self lsa-id 10.43.4.0 extensive area 40
OSPF database, Area 0.0.0.40 Type ID Adv Rtr Seq Age Opt Cksum Len Summary *10.43.4.0 10.255.0.4 0x80000003 523 0x22 0x688a 28 mask 255.255.255.0 Topology default (ID 0) -> Metric: 1 Gen timer 00:40:58 Aging timer 00:51:16 Installed 00:08:43 ago, expires in 00:51:17, sent 00:08:40 ago Last changed 00:47:40 ago, Change count: 1, Ours [/code]
R4 injects the destination subnet 10.43.4.0/24 in area 20 in a type 1 Router LSA (interface is added to area 20) - Notice Type 1 LSA bits 0x1 - Acting as ABR. R4 injects the destination subnet 10.43.4.0/24 in area 40 as a type 4 Summary LSA.
Both LSAs have Advertising Router ID R4 10.255.0.4.
Next we look at R3: [code] [edit] admin@R3# run show ospf database area 40 lsa-id 10.43.4.0 extensive
OSPF database, Area 0.0.0.40 Type ID Adv Rtr Seq Age Opt Cksum Len Summary 10.43.4.0 10.255.0.4 0x80000003 695 0x22 0x688a 28 mask 255.255.255.0 Topology default (ID 0) -> Metric: 1 Aging timer 00:48:24 Installed 00:11:31 ago, expires in 00:48:25 Last changed 00:50:31 ago, Change count: 1 [/code]
Based on this type 3 LSA that R3 received from R4, it forwards traffic to R4.
Quiz 2: What if link between R3 and R4 is down ? From Host A traffic to Host B will go via.... ?
Answer: HostA - R3 - R1 - R2 - R4 - HostB [code] HostA# traceroute 10.43.4.2 traceroute to 10.43.4.2 (10.43.4.2), 128 hops max, 52 byte packets 1 10.43.3.1 (10.43.3.1) 5.586 ms 2.685 ms 4.955 ms 2 10.42.6.2 (10.42.6.2) 9.922 ms 6.287 ms 5.984 ms 3 10.42.4.1 (10.42.4.1) 7.919 ms 19.464 ms 12.181 ms 4 10.42.7.2 (10.42.7.2) 14.368 ms 9.715 ms 14.054 ms 5 10.43.4.2 (10.43.4.2) 10.119 ms 12.926 ms 13.783 ms [/code]
So far so good. Redundancy works and I'm happy. But why does it work ?
Again, I start looking at R4. We know R4 injects Type 1 - Router LSA into area 20 that reaches R1 (type 1 has area scope). [code] [edit] admin@R1# run show ospf database area 20 lsa-id 10.255.0.4 extensive
OSPF database, Area 0.0.0.20 Type ID Adv Rtr Seq Age Opt Cksum Len Router 10.255.0.4 10.255.0.4 0x8000000c 828 0x22 0x3621 72 bits 0x1, link count 4 id 10.42.7.1, data 10.42.7.2, Type Transit (2) Topology count: 0, Default metric: 1 id 10.43.4.0, data 255.255.255.0, Type Stub (3) Topology count: 0, Default metric: 1 id 10.255.0.4, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 id 172.16.4.0, data 255.255.255.0, Type Stub (3) Topology count: 0, Default metric: 1 Topology default (ID 0) Type: Transit, Node ID: 10.42.7.1 Metric: 1, Bidirectional Aging timer 00:46:12 Installed 00:13:42 ago, expires in 00:46:12 Last changed 00:56:46 ago, Change count: 5 [/code]
Notice the bit 0x1, Advertising router R4 and network 10.43.4.0/24 Stub network. Now we look at information that R1 injects into Area 10 (towards VR1 and R3):
[code] [edit] admin@R1# run show ospf database advertising-router self
[edit] admin@R1# run show ospf database advertising-router self lsa-id 10.255.0.1 extensive
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Router *10.255.0.1 10.255.0.1 0x8000000b 1497 0x22 0x5393 72 bits 0x1, link count 4 id 10.42.1.2, data 10.42.1.1, Type Transit (2) Topology count: 0, Default metric: 1 id 10.42.6.2, data 10.42.6.2, Type Transit (2) Topology count: 0, Default metric: 1 id 10.255.0.255, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 id 10.255.0.1, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 Topology default (ID 0) Type: Transit, Node ID: 10.42.6.2 Metric: 1, Bidirectional Type: Transit, Node ID: 10.42.1.2 Metric: 1, Bidirectional Gen timer 00:25:02 Aging timer 00:35:03 Installed 00:24:57 ago, expires in 00:35:03, sent 00:24:55 ago Last changed 03:10:43 ago, Change count: 4, Ours
OSPF database, Area 0.0.0.20 Type ID Adv Rtr Seq Age Opt Cksum Len Router *10.255.0.1 10.255.0.1 0x8000000a 747 0x22 0x524f 36 bits 0x1, link count 1 id 10.42.4.1, data 10.42.4.0, Type Transit (2) Topology count: 0, Default metric: 1 Topology default (ID 0) Type: Transit, Node ID: 10.42.4.1 Metric: 1, Bidirectional Gen timer 00:37:33 Aging timer 00:47:33 Installed 00:12:27 ago, expires in 00:47:33, sent 00:12:25 ago Last changed 00:40:23 ago, Change count: 3, Ours Summary *10.255.0.1 10.255.0.1 0x80000007 934 0x22 0x9090 28 mask 255.255.255.255 Topology default (ID 0) -> Metric: 0 Gen timer 00:34:25 Aging timer 00:44:25 Installed 00:15:34 ago, expires in 00:44:26, sent 00:15:32 ago Last changed 03:16:33 ago, Change count: 1, Ours
[edit] admin@R1# run show ospf database advertising-router self lsa-id 10.43.4.0 extensive
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Summary *10.43.4.0 10.255.0.1 0x80000002 189 0x22 0x9064 28 mask 255.255.255.0 Topology default (ID 0) -> Metric: 3 Gen timer 00:46:50 Aging timer 00:56:50 Installed 00:03:09 ago, expires in 00:56:51, sent 00:03:07 ago Last changed 00:40:27 ago, Change count: 1, Ours
[/code]
R1 is present in Areas 10 and 20. It advertises it self in both Area 10 and area 20 as ABR (bit 0x1). In area 10 it sends a summary LSA with it's own ID as advertising router (send intra-area traffic for this network through me). This type 3 LSA reaches R3 R3 builds a route based on it.
Next questions will be more interesting as they start touching backbone area 0 :).
Quiz 3: What if link between R1 and R2 is down ? From Host A traffic to Host B will go via.... ?
Answer: HostA - R3 - R1 - VR1 - VR2 - R2 - R4 - HostB [code] HostA# traceroute 10.43.4.2 traceroute to 10.43.4.2 (10.43.4.2), 128 hops max, 52 byte packets 1 10.43.3.1 (10.43.3.1) 10.864 ms 4.013 ms 6.928 ms 2 10.42.6.2 (10.42.6.2) 6.692 ms 8.018 ms 8.881 ms 3 10.42.1.2 (10.42.1.2) 10.131 ms 8.800 ms 6.316 ms 4 10.42.2.2 (10.42.2.2) 15.703 ms 10.183 ms 10.739 ms 5 10.42.3.1 (10.42.3.1) 17.160 ms 16.460 ms 19.429 ms 6 10.42.7.2 (10.42.7.2) 17.031 ms 11.959 ms 13.024 ms 7 10.43.4.2 (10.43.4.2) 16.934 ms 11.868 ms 15.137 ms [/code]
Interesting. Again I'm happy all works. But why does it work ?
This answer is obvious. It's traffic from area 10 via area 0 to area 20.
Quiz 4: What if all links are up except for link between VR2 and R2 ? From VR1 loopback traffic to Host B will go via.... ?
For curiosity sake, before this question is answered, I will show a traceroute from VR1 loopback to HostB: [code] [edit] admin@R1# run traceroute 10.43.4.2 routing-instance VR1 source 10.255.0.11 traceroute to 10.43.4.2 (10.43.4.2) from 10.255.0.11, 30 hops max, 40 byte packets 1 10.42.2.2 (10.42.2.2) 5.640 ms 8.252 ms 6.458 ms 2 10.42.3.1 (10.42.3.1) 8.924 ms 9.235 ms 5.363 ms 3 10.42.7.2 (10.42.7.2) 12.476 ms 10.405 ms 9.979 ms 4 10.43.4.2 (10.43.4.2) 8.910 ms 6.221 ms 6.266 ms [/code] This path is VR1 - VR2 - R2 - R4 - HostB. Why ? Because VR1 has an idea about 10.43.4.0/24 network via a type 3 LSA - Summary which was injected into Area 0 by VR2 and in this case.
To satisfy even more curious minds: type 3 LSA reaches VR1 via Area 0 from VR2 and via area 10 from R1. VR1 also converts the LSA from area 0 and injects it into area 10. Result ? LSA loop. This LSA will be present in area 10 from R1 and from VR1: [code] [edit] admin@R1# run show ospf database instance VR1 lsa-id 10.43.4.0
OSPF database, Area 0.0.0.0 Type ID Adv Rtr Seq Age Opt Cksum Len Summary 10.43.4.0 10.255.0.12 0x80000001 159 0x22 0x509a 28
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Summary 10.43.4.0 10.255.0.1 0x80000001 275 0x22 0x9263 28 Summary *10.43.4.0 10.255.0.11 0x80000001 157 0x22 0x608a 28 [/code]
Now, for the answer: They don't go anywhere and packets are dropped :) Finally I am trully happy (not because of this because we reached a point where this design starts to show flaws.
Let's see why. After link between VR2 and R2 fails, area 0 is isolated from area 20 (where this 10.43.4.0/24 subnet is present). Initially, my questions were: why ? What ? HM .. ?
Let's see, VR1 has a summary LSA for 10.43.4.0 via area 10: [code] [edit] admin@R1# run show ospf database instance VR1 lsa-id 10.43.4.0
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Summary 10.43.4.0 10.255.0.1 0x80000001 603 0x22 0x9263 28 [/code]
Why isn't it using it to construct a route: [code] [edit] admin@R1# run show route 10.43.4.2 table VR1.inet.0
VR1.inet.0: 29 destinations, 45 routes (29 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both
0.0.0.0/0 *[Aggregate/130] 1w1d 18:52:03, metric2 0 > to 1.1.1.1 via ge-0/0/1.0 to 1.1.2.1 via ge-0/0/2.0 [/code] This points to outside the AS.
Since this network is received ONLY via non-backbone area by VR1 through a summary LSA (VR2 stopped sending the type 3 LSA from area 20 because link between VR2 and R2 failed) and VR1 has a full adjacency on the backbone still, it ignores these summaries. How do we fix this ? Virtual links (Control plane), tunnels (forwarding plane).
[code] [edit] admin@R1# run show ospf neighbor instance VR1 Address Interface State ID Pri Dead 10.42.2.2 ge-0/0/6.0 Full 10.255.0.12 128 30 10.42.1.1 ge-0/0/5.0 Full 10.255.0.1 128 37
[edit] admin@R1# run show ospf neighbor instance VR1 Address Interface State ID Pri Dead 10.42.1.1 ge-0/0/5.0 Full 10.255.0.1 128 31 [edit] admin@R1# run show route 10.43.4.2
inet.0: 24 destinations, 24 routes (24 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both
10.43.4.0/24 *[OSPF/10] 00:31:50, metric 3 > to 10.42.4.1 via ge-0/0/7.0
VR1.inet.0: 36 destinations, 40 routes (36 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both
10.43.4.0/24 *[OSPF/10] 00:13:55, metric 4 > to 10.42.1.1 via ge-0/0/5.0 [/code]
So now VR1 has no adjacency in area 0, Only in area 10 and doesn't ignore tye summary lsa from R1, but traffic is still not flowing: [code] [edit] admin@R1# run traceroute 10.43.4.2 routing-instance VR1 source 10.255.0.11 wait 1 traceroute to 10.43.4.2 (10.43.4.2) from 10.255.0.11, 30 hops max, 40 byte packets 1 10.42.1.1 (10.42.1.1) 10.165 ms 7.935 ms 9.783 ms 2 * * * 3 * [/code]
Hmm so it leaves VR1, R1 and nothig from R2. I look on R1 to see what does it's database contain: [code] [edit] admin@R1# run show ospf database
So R1 has a Summary LSA ID 10.255.0.11 from VR1 on Area 10, but it does not send it to area 20.
Conclussion one: OSPF (I know Cisco and find out now also Juniper) does not use a type 3 LSA from non-backbone area to construct another type 3 lsa in another non-backbone area.
What if I move VR1 loopback from area 0 into area 10 ? [code] [edit] admin@R1# run show ospf database lsa-id 10.255.0.11 router extensive
OSPF database, Area 0.0.0.10 Type ID Adv Rtr Seq Age Opt Cksum Len Router 10.255.0.11 10.255.0.11 0x80000009 23 0x22 0xb8b3 48 bits 0x1, link count 2 id 10.42.1.2, data 10.42.1.2, Type Transit (2) Topology count: 0, Default metric: 1 id 10.255.0.11, data 255.255.255.255, Type Stub (3) Topology count: 0, Default metric: 0 Topology default (ID 0) Type: Transit, Node ID: 10.42.1.2 Metric: 1, Bidirectional Aging timer 00:59:36 Installed 00:00:22 ago, expires in 00:59:37, sent 00:00:22 ago Last changed 00:00:22 ago, Change count: 3
After this change, VR1 injects it's Router LSA into area 10 with loopback 10.255.0.11 (after moving loopback from area 0 to area 10). Now R1 uses this destination and injects a Summary LSA into area 20.
[code] admin@R1# run traceroute 10.43.4.2 routing-instance VR1 source 10.255.0.11 wait 1 traceroute to 10.43.4.2 (10.43.4.2) from 10.255.0.11, 30 hops max, 40 byte packets 1 10.42.1.1 (10.42.1.1) 3.893 ms 4.099 ms 4.096 ms 2 10.42.4.1 (10.42.4.1) 6.265 ms 6.445 ms 6.399 ms 3 10.42.7.2 (10.42.7.2) 10.237 ms 9.455 ms 8.363 ms 4 10.43.4.2 (10.43.4.2) 8.187 ms 8.460 ms 6.248 ms [/code]
Traffic from VR1 loopback to HostB now flows via non backbone area: area 10 and area 20.
Conclussion finale: A destination network is injected in area 1 via Router LSA, injected into area 2 as summary LSA and is not sent into any other area that is non transit area. Destinations local to an area (present in Router LSA) are sent to a non-backbone router as Summary LSA as well as to backbone.