​Connecting OSPF Non-Backbone Areas Part 1

What happens if you connect two OSPF areas together when neither of them is area 0?

Will routes be shared between the two areas, or will it simply not work?

I can think of two scenarios for this:

  • Two or more non-backbone areas connected together – area 1 to area 2 to area 3.
  • Two areas with both a connection to each other and a connection to the backbone – area 1 to area 0 to area 2 back to area 1.

In this post, we’re going to lab the first scenario out and see what happens. We’ll look at both Junos and IOS-XE.

Part 2 looks at the second scenario.

Before you read on, I want you to think about the following questions:

  • If two non-backbone OSPF areas are connected together, will they share routes?
  • What if three non-backbone areas are connected together?
  • Will this behavior differ between Junos and IOS-XE?

The Juniper Lab

The lab is going to be set up as per the following diagram. We’ll start with just area 1 and area 2. Area 3 will be added a little later.

  • A mix of device types is used to add a little variety
  • R4, R5, and R3 will be in area 2. Their loopback interfaces will be in this area too.
  • R1 and R2 will be in areas 1 and 3 respectively.
  • We’re using plain areas, no stub or NSSA area types.

Area 1 and 2 Configuration

Let’s start by configuring area 2 first.

R3

The OSPF stanza for R3 is configured as follows:

protocols {
    ospf {
        area 0.0.0.2 {
            interface lo0.0 {
                passive;
            }
            interface ge-0/0/1.0;
        }
        reference-bandwidth 100g;
    }
}

R5

R5 is configured similarly:

protocols {
    ospf {
        area 0.0.0.2 {
            interface lo0.0 {
                passive;
            }
            interface ge-0/0/0.0;
            interface ge-0/0/1.0;
        }
        reference-bandwidth 100g;       
    }
}

R4

For now, we’ll just configure the area 2 interface for R4.

protocols {
    ospf {
        area 0.0.0.2 {
            interface lo0.0 {
                passive;
            }
            interface ge-0/0/0.0;
        }
        reference-bandwidth 100g;
    }
}    

Verification of Area 2

Now that we’ve configured the routers in area 2, let’s just validate a few things. From R5 we check the routing table to ensure we have the loopbacks of R4 and R3, and check the OSPF database.

lab@vmx-R5> show route protocol ospf 

inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.0.3/32      *[OSPF/10] 00:07:39, metric 100
                    >  to 10.100.4.1 via ge-0/0/1.0
172.16.0.4/32      *[OSPF/10] 00:02:02, metric 100
                    >  to 10.100.5.1 via ge-0/0/0.0
224.0.0.5/32       *[OSPF/10] 00:07:49, metric 1
                       MultiRecv

inet6.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)

lab@vmx-R5> show ospf database 

    OSPF database, Area 0.0.0.2
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Router   172.16.0.3       172.16.0.3       0x80000004   468  0x22 0x1ef   48
Router   172.16.0.4       172.16.0.4       0x80000004   129  0x22 0x771a  48
Router  *172.16.0.5       172.16.0.5       0x80000004   133  0x22 0xc66b  60
Network  10.100.4.1       172.16.0.3       0x80000001   473  0x22 0x572e  32
Network  10.100.5.1       172.16.0.4       0x80000001   133  0x22 0x5032  32

lab@vmx-R5>

Everything looks as we would expect it to at this stage. The OSPF database shows three router LSAs and two Network LSAs for the link nets between the routers.

Adding Area 1

Now we can add area 1. We’ll start by configuring R1, and then updating the configuration for R4.

R1

protocols {
    ospf {
        area 0.0.0.1 {
            interface lo0.0 {
                passive;
            }
            interface ge-0/0/1.0;
        }
        reference-bandwidth 100g;
    }
}

R4

R4 is now updated to add area 1.

protocols {
    router-advertisement {
        interface fxp0.0;
    }
    ospf {
        area 0.0.0.2 {
            interface lo0.0 {
                passive;
            }
            interface ge-0/0/0.0;
        }
        area 0.0.0.1 {
            interface ge-0/0/1.0;
        }                               
        reference-bandwidth 100g;
    }
}

Verification of Area 1 and Area 2

We’ve now connected areas 1 and 2 together using R4. Let’s see how things look from R5.

lab@vmx-R5> show route protocol ospf    

inet.0: 12 destinations, 12 routes (12 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.100.3.0/24      *[OSPF/10] 00:02:38, metric 200
                    >  to 10.100.5.1 via ge-0/0/0.0
172.16.0.1/32      *[OSPF/10] 00:02:37, metric 200
                    >  to 10.100.5.1 via ge-0/0/0.0
172.16.0.3/32      *[OSPF/10] 00:13:52, metric 100
                    >  to 10.100.4.1 via ge-0/0/1.0
172.16.0.4/32      *[OSPF/10] 00:08:15, metric 100
                    >  to 10.100.5.1 via ge-0/0/0.0
224.0.0.5/32       *[OSPF/10] 00:14:02, metric 1
                       MultiRecv

inet6.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)

lab@vmx-R5> show ospf database          

    OSPF database, Area 0.0.0.2
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Router   172.16.0.3       172.16.0.3       0x80000004   854  0x22 0x1ef   48
Router   172.16.0.4       172.16.0.4       0x80000005   182  0x22 0x7817  48
Router  *172.16.0.5       172.16.0.5       0x80000004   519  0x22 0xc66b  60
Network  10.100.4.1       172.16.0.3       0x80000001   859  0x22 0x572e  32
Network  10.100.5.1       172.16.0.4       0x80000001   519  0x22 0x5032  32
Summary  10.100.3.0       172.16.0.4       0x80000004   177  0x22 0x6c37  28
Summary  172.16.0.1       172.16.0.4       0x80000001   175  0x22 0x3b1f  28

lab@vmx-R5> ping 172.16.0.1 source 172.16.0.5 count 2 
PING 172.16.0.1 (172.16.0.1): 56 data bytes
64 bytes from 172.16.0.1: icmp_seq=0 ttl=63 time=55.517 ms
64 bytes from 172.16.0.1: icmp_seq=1 ttl=63 time=5.736 ms

--- 172.16.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 5.736/30.627/55.517/24.890 ms

lab@vmx-R5>

That is interesting. It appears that R4 is acting like a normal ABR and in area 2 we have a type 3 summaries for the area 1 LSAs. We can happily ping between loopbacks from R5 to R1.

On R1, we see similar results. There are routes for area 2 present in the routing table, and the OSPF database shows several summaries advertised by R4 into area 1.

lab@vsrx-R1> show route protocol ospf 

inet.0: 12 destinations, 12 routes (12 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.100.4.0/24      *[OSPF/10] 00:06:17, metric 210
                    >  to 10.100.3.2 via ge-0/0/1.0
10.100.5.0/24      *[OSPF/10] 00:06:17, metric 110
                    >  to 10.100.3.2 via ge-0/0/1.0
172.16.0.3/32      *[OSPF/10] 00:06:17, metric 210
                    >  to 10.100.3.2 via ge-0/0/1.0
172.16.0.4/32      *[OSPF/10] 00:06:17, metric 10
                    >  to 10.100.3.2 via ge-0/0/1.0
172.16.0.5/32      *[OSPF/10] 00:06:17, metric 110
                    >  to 10.100.3.2 via ge-0/0/1.0
224.0.0.5/32       *[OSPF/10] 00:07:31, metric 1
                       MultiRecv

inet6.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)

lab@vsrx-R1> show ospf database 

    OSPF database, Area 0.0.0.1
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Router  *172.16.0.1       172.16.0.1       0x80000004   382  0x22 0xde1a  48
Router   172.16.0.4       172.16.0.4       0x80000003   387  0x22 0x84e0  36
Network *10.100.3.1       172.16.0.1       0x80000001   386  0x22 0x4c3f  32
Summary  10.100.4.0       172.16.0.4       0x80000003   381  0x22 0x4fef  28
Summary  10.100.5.0       172.16.0.4       0x80000003   381  0x22 0x584a  28
Summary  172.16.0.3       172.16.0.4       0x80000001   388  0x22 0x13e0  28
Summary  172.16.0.4       172.16.0.4       0x80000001   388  0x22 0x318a  28
Summary  172.16.0.5       172.16.0.4       0x80000001   388  0x22 0x1343  28

lab@vsrx-R1>

This shows, on Junos at least, that connecting two OSPF areas together without using area 0 can work. I wouldn’t recommend this approach, but it does seem to work.

Time to add area 3 and see what happens.

Adding Area 3

R3

On R3 we update the OSPF configuration to the following:

protocols {
    ospf {
        area 0.0.0.2 {
            interface lo0.0 {
                passive;
            }
            interface ge-0/0/1.0;
        }
        area 0.0.0.3 {
            interface ge-0/0/0.0;
        }
        reference-bandwidth 100g;
    }                                   
}

R2

The R2 OSPF configuration looks as follows:

protocols {
    ospf {
        area 0.0.0.3 {
            interface lo0.0 {
                passive;
            }
            interface xe-0/0/1.0;
        }
        reference-bandwidth 100g;
    }
    igmp-snooping {
        vlan default;
    }
}

Verification Of Three Areas With No Backbone

First, let’s check R5 and see how the route table and OSPF database look.

lab@vmx-R5> show route protocol ospf    

inet.0: 14 destinations, 14 routes (14 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.100.2.0/24      *[OSPF/10] 00:03:22, metric 110
                    >  to 10.100.4.1 via ge-0/0/1.0
10.100.3.0/24      *[OSPF/10] 00:21:31, metric 200
                    >  to 10.100.5.1 via ge-0/0/0.0
172.16.0.1/32      *[OSPF/10] 00:21:30, metric 200
                    >  to 10.100.5.1 via ge-0/0/0.0
172.16.0.2/32      *[OSPF/10] 00:02:34, metric 110
                    >  to 10.100.4.1 via ge-0/0/1.0
172.16.0.3/32      *[OSPF/10] 00:32:45, metric 100
                    >  to 10.100.4.1 via ge-0/0/1.0
172.16.0.4/32      *[OSPF/10] 00:27:08, metric 100
                    >  to 10.100.5.1 via ge-0/0/0.0
224.0.0.5/32       *[OSPF/10] 00:32:55, metric 1
                       MultiRecv

inet6.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)

lab@vmx-R5> show ospf database 

    OSPF database, Area 0.0.0.2
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Router   172.16.0.3       172.16.0.3       0x80000005   207  0x22 0x2ec   48
Router   172.16.0.4       172.16.0.4       0x80000006   616  0x22 0x7618  48
Router  *172.16.0.5       172.16.0.5       0x80000004  1639  0x22 0xc66b  60
Network  10.100.4.1       172.16.0.3       0x80000001  1979  0x22 0x572e  32
Network  10.100.5.1       172.16.0.4       0x80000002   907  0x22 0x4e33  32
Summary  10.100.2.0       172.16.0.3       0x80000003   165  0x22 0xf709  28
Summary  10.100.3.0       172.16.0.4       0x80000004  1297  0x22 0x6c37  28
Summary  172.16.0.1       172.16.0.4       0x80000001  1295  0x22 0x3b1f  28
Summary  172.16.0.2       172.16.0.3       0x80000001   159  0x22 0xaf05  28

lab@vmx-R5> ping 172.16.0.2 source 172.16.0.5 count 2 
PING 172.16.0.2 (172.16.0.2): 56 data bytes
64 bytes from 172.16.0.2: icmp_seq=0 ttl=63 time=164.093 ms
64 bytes from 172.16.0.2: icmp_seq=1 ttl=63 time=540.605 ms

--- 172.16.0.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 164.093/352.349/540.605/188.256 ms

lab@vmx-R5>

Once again, R5 has connectivity to another area without using a backbone area. This isn’t surprising as it is the same as the behavior when we connected in area 1.

What about R2, what does it see?

{master:0}
lab@vqfx-R2> show route protocol ospf 

inet.0: 14 destinations, 14 routes (14 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.100.4.0/24      *[OSPF/10] 00:04:34, metric 20
                    >  to 10.100.2.2 via xe-0/0/1.0
10.100.5.0/24      *[OSPF/10] 00:04:34, metric 120
                    >  to 10.100.2.2 via xe-0/0/1.0
172.16.0.3/32      *[OSPF/10] 00:04:34, metric 10
                    >  to 10.100.2.2 via xe-0/0/1.0
172.16.0.4/32      *[OSPF/10] 00:04:34, metric 120
                    >  to 10.100.2.2 via xe-0/0/1.0
172.16.0.5/32      *[OSPF/10] 00:04:34, metric 20
                    >  to 10.100.2.2 via xe-0/0/1.0
224.0.0.5/32       *[OSPF/10] 00:04:44, metric 1
                       MultiRecv

inet6.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)

{master:0}
lab@vqfx-R2> show ospf database 

    OSPF database, Area 0.0.0.3
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Router  *172.16.0.2       172.16.0.2       0x80000002   289  0x22 0x7f1   48
Router   172.16.0.3       172.16.0.3       0x80000004   294  0x22 0x2c95  36
Network  10.100.2.2       172.16.0.3       0x80000001   294  0x22 0x3950  32
Summary  10.100.4.0       172.16.0.3       0x80000004   288  0x22 0xdf1e  28
Summary  10.100.5.0       172.16.0.3       0x80000004   288  0x22 0xc0d7  28
Summary  172.16.0.3       172.16.0.3       0x80000001   335  0x22 0x417c  28
Summary  172.16.0.4       172.16.0.3       0x80000001   335  0x22 0x87c6  28
Summary  172.16.0.5       172.16.0.3       0x80000001   335  0x22 0x9120  28

{master:0}
lab@vqfx-R2>

This is where we start to see a difference in behavior. The routes and LSAs for area 1 are not present. So Area 2 is not exactly acting as a backbone area.

It seems that for Junos connecting two non-zero areas works, but when using three or more areas the summaries are not crossing the area boundaries.

IOS-XE Lab

The lab is going to be set up similar to the Juniper lab. We’ll start with just area 1 and area 2.

  • All routers are CSR1000v running IOS-XE 16.06.06
  • R4, R5, and R3 will be in area 2. Their loopback interfaces will be in this area too.
  • R1 and R2 will be in areas 1 and 3 respectively.
  • We’re using plain areas, no stub or NSSA area types.

Area 1 and 2 Configuration

Let’s start by configuring area 2 first.

R3

interface Loopback0
 ip address 172.16.0.3 255.255.255.255
!         
interface GigabitEthernet2
 ip address 10.100.4.1 255.255.255.0
 negotiation auto
 no mop enabled
 no mop sysid
!         
interface GigabitEthernet3
 ip address 10.100.2.2 255.255.255.0
 negotiation auto
 no mop enabled
 no mop sysid
!
router ospf 1
 network 10.100.4.0 0.0.0.255 area 2
 network 172.16.0.3 0.0.0.0 area 2

R4

interface Loopback0
 ip address 172.16.0.4 255.255.255.255
!
interface GigabitEthernet3
 ip address 10.100.3.2 255.255.255.0
 negotiation auto
 no mop enabled
 no mop sysid
!
interface GigabitEthernet4
 ip address 10.100.5.1 255.255.255.0
 shutdown
 negotiation auto
 no mop enabled
 no mop sysid
!         
router ospf 1
 network 10.100.5.0 0.0.0.255 area 2
 network 172.16.0.4 0.0.0.0 area 2

R5

interface Loopback0
 ip address 172.16.0.5 255.255.255.255
!
interface GigabitEthernet2
 ip address 10.100.4.2 255.255.255.0
 negotiation auto
 no mop enabled
 no mop sysid
!
interface GigabitEthernet4
 ip address 10.100.5.2 255.255.255.0
 shutdown
 negotiation auto
 no mop enabled
 no mop sysid
!         
router ospf 1
 network 10.100.4.0 0.0.0.255 area 2
 network 10.100.5.0 0.0.0.255 area 2
 network 172.16.0.5 0.0.0.0 area 2

Verification Of Area 2

Now that we’ve set up area 2, let’s quickly validate it looks OK.

CSR-R5#show ip route ospf
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      172.16.0.0/32 is subnetted, 3 subnets
O        172.16.0.3 [110/2] via 10.100.4.1, 00:08:29, GigabitEthernet2
O        172.16.0.4 [110/2] via 10.100.5.1, 00:08:24, GigabitEthernet4
CSR-R5#show ip ospf database

            OSPF Router with ID (172.16.0.5) (Process ID 1)

		Router Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum Link count
172.16.0.3      172.16.0.3      513         0x80000004 0x0046B2 2         
172.16.0.4      172.16.0.4      508         0x80000004 0x006E85 2         
172.16.0.5      172.16.0.5      503         0x80000005 0x00DF17 3         

		Net Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum
10.100.4.1      172.16.0.3      513         0x80000001 0x00572E
10.100.5.1      172.16.0.4      508         0x80000001 0x005032
CSR-R5#

From R5 we can see two OSPF routes for the loopbacks of R3 and R5. We can also see three router LSAs and two network LSAs. This all looks good so we can continue setting up area 1.

Adding Area 1

We will configure R1 and modify R4.

R1

interface Loopback0
 ip address 172.16.0.1 255.255.255.255
!
interface GigabitEthernet3
 ip address 10.100.3.1 255.255.255.0
 negotiation auto
 no mop enabled
 no mop sysid
!
router ospf 1
 network 10.100.3.0 0.0.0.255 area 1
 network 172.16.0.1 0.0.0.0 area 1

R4

router ospf 1
 network 10.100.3.0 0.0.0.255 area 1
 network 10.100.5.0 0.0.0.255 area 2
 network 172.16.0.4 0.0.0.0 area 2

Verification Of Area 1 and Area 2

Time to see what has happened now we’ve added Area 1. Let’s start by looking at R5 again.

CSR-R5#show ip route ospf   
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      172.16.0.0/32 is subnetted, 3 subnets
O        172.16.0.3 [110/2] via 10.100.4.1, 00:14:30, GigabitEthernet2
O        172.16.0.4 [110/2] via 10.100.5.1, 00:14:25, GigabitEthernet4
CSR-R5#show ip ospf database

            OSPF Router with ID (172.16.0.5) (Process ID 1)

		Router Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum Link count
172.16.0.3      172.16.0.3      873         0x80000004 0x0046B2 2         
172.16.0.4      172.16.0.4      868         0x80000004 0x006E85 2         
172.16.0.5      172.16.0.5      864         0x80000005 0x00DF17 3         

		Net Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum
10.100.4.1      172.16.0.3      873         0x80000001 0x00572E
10.100.5.1      172.16.0.4      868         0x80000001 0x005032
CSR-R5#ping 172.16.0.1 source 172.16.0.5
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.0.1, timeout is 2 seconds:
Packet sent with a source address of 172.16.0.5 
.....
Success rate is 0 percent (0/5)
CSR-R5#

This looks the same. Not surprisingly R5 cannot ping R1’s loopback address.

Time to look at R1.

CSR-R1#show ip route ospf
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

CSR-R1#show ip ospf database 

            OSPF Router with ID (172.16.0.1) (Process ID 1)

		Router Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum Link count
172.16.0.1      172.16.0.1      258         0x80000005 0x0038C6 2         
172.16.0.4      172.16.0.4      253         0x80000003 0x008E3A 1         

		Net Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum
10.100.3.2      172.16.0.4      266         0x80000001 0x002463
CSR-R1#

R1 has only information from area 1. Note that because the loopback of R4 is in area 2, not area 1, R1 does not have information for that route.

Finally, let’s look at R4.

CSR-R4#show ip route ospf
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
O        10.100.4.0/24 [110/2] via 10.100.5.2, 00:19:10, GigabitEthernet4
      172.16.0.0/32 is subnetted, 4 subnets
O        172.16.0.1 [110/2] via 10.100.3.1, 00:06:40, GigabitEthernet3
O        172.16.0.3 [110/3] via 10.100.5.2, 00:19:10, GigabitEthernet4
O        172.16.0.5 [110/2] via 10.100.5.2, 00:19:10, GigabitEthernet4
CSR-R4#show ip ospf database

            OSPF Router with ID (172.16.0.4) (Process ID 1)

		Router Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum Link count
172.16.0.1      172.16.0.1      406         0x80000005 0x0038C6 2         
172.16.0.4      172.16.0.4      399         0x80000003 0x008E3A 1         

		Net Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum
10.100.3.2      172.16.0.4      412         0x80000001 0x002463

		Router Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum Link count
172.16.0.3      172.16.0.3      1169        0x80000004 0x0046B2 2         
172.16.0.4      172.16.0.4      1162        0x80000004 0x006E85 2         
172.16.0.5      172.16.0.5      1160        0x80000005 0x00DF17 3         

		Net Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum
10.100.4.1      172.16.0.3      1169        0x80000001 0x00572E
10.100.5.1      172.16.0.4      1163        0x80000001 0x005032
CSR-R4#
CSR-R4#ping 172.16.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
CSR-R4#ping 172.16.0.1 source 172.16.0.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.0.1, timeout is 2 seconds:
Packet sent with a source address of 172.16.0.4 
.....
Success rate is 0 percent (0/5)
CSR-R4#

Because R4 is connected to both area 1 and area 2 it sees information from both areas. Unlike the Junos example, R4 is not advertising summaries from one area to another.

R4 can ping R1’s loopback address when we don’t specify a source address. This causes R4 to source the traffic from the outgoing interface, which R1 knows how to reach. If we make the source of the traffic R4’s loopback address, then the ping fails. This is due to R1 not having a route back to R4’s loopback.

Since R4 in this case is not advertising summaries between areas, there is no need to add area 3 to this lab. R3 will behave the same as R4.

Conclusions

I want you to think again about the questions I asked at the start of this post:

  • If two non-backbone OSPF areas are connected together, will they share routes?
  • What if three non-backbone areas are connected together?
  • Will this behavior differ between Junos and IOS-XE?

Junos and IOS-XE differ in their behavior. Junos will share routes between non-zero areas and IOS-XE won’t.

But what else can we take away from this information?

What we now know is that two reasonable people can have opposite answers to this question and both be right, depending on which vendor they are familiar with. If you only work with one vendor, it is easy to assume that equipment or software from other vendors will work the same because a standard is a standard, isn’t it?

It also has implications for how we study and learn. When studying a new topic we often try to configure things the “right way”, as the book or example shows us. I think this post shows the importance of trying something out the “wrong way” and seeing what happens. I hope you’ll keep this in mind next time you try something out in your own lab.

And finally, I should add that I don’t recommend configuring multiple OSPF areas without an area 0 backbone. It may work and do what you need, but it adds a complication that most Ops staff won’t thank you for.

The next logical question is what if I directly connect two areas that already have a connection to a backbone area? We’ll look at that in part 2.

Leave a Comment

Your email address will not be published. Required fields are marked *