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.