OSPF Area 0

Egyik olvasóm küldött egy labor feladatot, és segítséget kért, miért nem érik el egymást az eszközei a hálózatban. Az ábrára rápillantva tipikus Cisco vizsgakérdés volt:

 

 

Hiába gondolnánk, hogy R2 ABR (Area Border Router), mert két Area között áll, mégsem az: az ABR-nek kapcsolata KELL hogy legyen Area 0-val.

De miért is olyan fontos az OSPF-nél az Area 0 (vagy 0.0.0.0, ugyanaz a kettő)?

 

Még mielőtt ebbe belemennénk, egy érdekesség: ha csak egy OSPF area van, annak nem kell a 0-nak lenni, lehet bármi. A Type 1 LSA-k (és Type2 ha van DR) úgyis csak area-n belül látszanak, és mivel ki nem akarunk lépni az area-ból, ezért nem kell backbone kapcsolat.

 

Mindenki megtanulta, hogy az OSPF egy link-state protocol. Area-n belül teljesen mindegy melyik eszközön nézzük a database-t, ugyanazt látjuk. Pont ezért tud az SPF (Shortest Path First) algoritmus működni.

De mi van, ha több area-nk van?

Mivel a teljes LSDB (Link State Database) csak area-n belül van meg, itt jön képbe az ABR: az area-n belüli információkból Type3 (summary) LSA-kat csinál, és azt hirdeti be a backbone area-ba (vagy a backbone area-ból a másik area-ba), tehát egyfajta fordítást csinál a backbone és a többi area között. Mindjárt megnézzük OSPF database-ből, hogy mit is jelent ez, és hogyan működik.

Az Area 0-ra azért van szükség, mert az OSPF area-k között már nem link-state protocol-ként viselkedik., hanem igazából distance vector protokollként. Az Area 0 feladata, hogy megelőzze a routing loop-ot. Nem fordulhat elő olyan nem-backbone area-k közötti forgalom, amely nem megy át az area 0-n (vagyis előfordulhat, ezt hívjuk area transit capability-nek, de ezt most hagyjuk 🙂 ).

Ennyi bevezető után lássuk  a medvét. A fenti topológiához a konfigurációk (minden router Loopback 1 interface-e a router száma, pl. R1: 1.1.1.1):

 

=====
R1
=====

!
!
interface Loopback1
 ip address 1.1.1.1 255.255.255.255
 ip ospf 1 area 1
!
interface Ethernet0/0
 ip address 10.10.12.1 255.255.255.0
 ip ospf 1 area 1
!
router ospf 1
 router-id 1.1.1.1
!
!


=====
R2
=====

!
!
!
!
interface Loopback1
 ip address 2.2.2.2 255.255.255.255
!
interface Ethernet0/0
 ip address 10.10.12.2 255.255.255.0
 ip ospf 1 area 1
!
interface Ethernet0/1
 ip address 10.10.23.2 255.255.255.0
 ip ospf 1 area 2
!
router ospf 1
 router-id 2.2.2.2
!
!


=====
R3
=====

!
!
!
interface Loopback1
 ip address 3.3.3.3 255.255.255.255
 ip ospf 1 area 2
!
interface Ethernet0/0
 ip address 10.10.23.3 255.255.255.0
 ip ospf 1 area 2
!
router ospf 1
 router-id 3.3.3.3
!

 

OSPF kapcsolataink szépen állnak, ezt az area 0 hiánya természetesen nem befolyásolja.

 

R2#sh ip ospf ne

Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 1 FULL/DR 00:00:35 10.10.12.1 Ethernet0/0
3.3.3.3 1 FULL/BDR 00:00:37 10.10.23.3 Ethernet0/1
R2#

 

R1 azonban valóban nem tudja pingelni R3-t, fogalma sincs, merre küldje a csomagot:

 

R1#ping 3.3.3.3 source lo1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
.....
Success rate is 0 percent (0/5)
R1#sh ip route 3.3.3.3
% Network not in table

 

Ha belenézünk az OSPF database-be, akkor láthatjuk, hogy R1 semmit nem tud az Area 2-ben lévő subnetekről, csak intra-area route-kat lát:

 

R1#sh ip ospf database

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

Router Link States (Area 1)

Link ID ADV Router Age Seq# Checksum Link count
1.1.1.1 1.1.1.1 1505 0x80000003 0x0008C0 2
2.2.2.2 2.2.2.2 1501 0x80000002 0x00A035 1

Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum
10.10.12.1 1.1.1.1 1505 0x80000001 0x007E8A
R1#

 

Itt jön képbe az ABR szerepe, akinek a feladata, hogy Type 3 (Summary) LSA-kat küldjön a többi area-ba. R2 ezt nem tudja megtenni, mert technikailag nem ABR, nincs Area 0 kapcsolata.

Hogy tudjuk ezt megoldani? Adhatnánk a topológiához még egy routert, és csinálhatnánk R2 és az új eszköz között egy Area 0 kapcsolatot, de erre nem feltétlenül van szükség, a CCIE trükk még mindig működik 🙂 .

 

R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#int lo2
*Apr 29 10:28:46.441: %LINK-3-UPDOWN: Interface Loopback2, changed state to up
*Apr 29 10:28:47.441: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback2, changed state to up
R2(config-if)#ip add 22.22.22.22 255.255.255.255
R2(config-if)#ip ospf 1 area 0
R2(config-if)#

 

Nézzük most R1-n az OSPF database-t.

 

R1#sh ip ospf data

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

Router Link States (Area 1)

Link ID ADV Router Age Seq# Checksum Link count
1.1.1.1 1.1.1.1 322 0x80000004 0x0006C1 2
2.2.2.2 2.2.2.2 68 0x80000006 0x009B35 1

Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum
10.10.12.1 1.1.1.1 322 0x80000002 0x007C8B

Summary Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum
3.3.3.3 2.2.2.2 68 0x80000001 0x0031EC
10.10.23.0 2.2.2.2 68 0x80000001 0x00B847
22.22.22.22 2.2.2.2 63 0x80000001 0x005F7C
R1#

 

Hasonló a helyzet R3-n is, aki így már szintén tud Area 1 subneteiről:

 

R3#sh ip ospf data summary

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

Summary Net Link States (Area 2)

LS age: 184
 Options: (No TOS-capability, DC, Upward)
 LS Type: Summary Links(Network)
 Link State ID: 1.1.1.1 (summary Network Number)
 Advertising Router: 2.2.2.2
 LS Seq Number: 80000001
 Checksum: 0x8D98
 Length: 28
 Network Mask: /32
 MTID: 0 Metric: 11

LS age: 184
 Options: (No TOS-capability, DC, Upward)
 LS Type: Summary Links(Network)
 Link State ID: 10.10.12.0 (summary Network Number)
 Advertising Router: 2.2.2.2
 LS Seq Number: 80000001
 Checksum: 0x32D8
 Length: 28
 Network Mask: /24
 MTID: 0 Metric: 10

LS age: 179
 Options: (No TOS-capability, DC, Upward)
 LS Type: Summary Links(Network)
 Link State ID: 22.22.22.22 (summary Network Number)
 Advertising Router: 2.2.2.2
 LS Seq Number: 80000001
 Checksum: 0x5F7C
 Length: 28
 Network Mask: /32
 MTID: 0 Metric: 1

R3#

 

Ezután próbáljuk ki ismét a pingelést.

 

R1#ping 3.3.3.3 source lo1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/5 ms
R1#

 

Ha érdekel az OSPF története, és túl száraznak találod az RFC-t, amit teljesen megértek 🙂  (RFC 2328), ajánlom figyelmedbe az “OSPF: Anatomy of an Internet Routing Protocol” c. könyvet, érdekes olvasmány.