Şimdiye kadar OSPF’i hep tek area’da, yani sadece Area 0’da kurdum. Bu yazıda eNSP’de kurduğum lab’ı büyütüp üç area yapıyorum ve OSPF’in area’lar arasında nasıl davrandığına çıktılarla bakıyorum. Hedef, “ABR ne yapar, Area 0 neden zorunlu, LSDB’de ne değişir” sorularına kendi lab’ımdan cevap vermek.

1. Neden birden fazla area?

Tek area’da her router, ağdaki tüm router’ların ve linklerin bilgisini tutar. Ağ büyüdükçe LSDB şişer, bir link her düştüğünde de herkes SPF’i baştan hesaplar. Küçük ağda sorun değil, büyük ağda ciddi yük.

Area’lar ağı bölgelere ayırır:

  • Bir bölgedeki link düşünce sadece o bölgede SPF tekrar çalışır.
  • Router’lar sadece kendi bölgesinin detayını tutar, diğer bölgeleri özet olarak görür.
  • Özetleme (summarization) mümkün olur, routing table küçülür.

Bunu bir hava yolu ağına benzetebilirim. İstanbul aktarma merkezi (Area 0). İzmir ve Ankara birer bölge (Area 1 ve Area 2). İzmir’den Ankara’ya direkt uçuş yok, her şey İstanbul üzerinden. İzmir’in uçuş tablosu sadece İzmir’in hatlarını ve “İstanbul’un ötesi için İstanbul’a git” bilgisini tutar. Ankara’daki bir pist kapanınca İzmir’in tablosu değişmez.

Parçalar:

  • Area 0 (backbone): Omurga. Diğer tüm area’ların bağlanması zorunlu.
  • ABR (Area Border Router): Bir ayağı Area 0’da, diğer ayağı başka bir area’da olan router. Her area için ayrı LSDB tutar ve aralarında özet taşır.
  • Type 1 (Router) LSA: Her router’ın kendi linklerini anlattığı LSA. Area dışına çıkmaz.
  • Type 2 (Network) LSA: Bir segmentin DR’ı üretir, area dışına çıkmaz.
  • Type 3 (Summary / Sum-Net) LSA: ABR’nin bir area’daki ağları başka area’ya özet olarak verdiği LSA. Area’lar arası bilgi sadece bununla taşınır.

2. Topoloji ve IP planı

Beş router var: Area 0’da R1, R2, R3; R3’ün arkasında Area 1’de R4; R1’in arkasında Area 2’de R5. R1 ve R3 ABR.

Çoklu area topolojisi

RouterLoopback0 (= Router ID)Link’ler
R11.1.1.1/32G0/0/1: 10.12.12.1/24 (R2), G0/0/0: 10.15.15.1/24 (R5)
R22.2.2.2/32G0/0/0: 10.12.12.2/24 (R1), G0/0/1: 10.23.23.1/24 (R3)
R33.3.3.3/32G0/0/0: 10.23.23.3/24 (R2), G0/0/1: 10.34.34.3/24 (R4)
R44.4.4.4/32G0/0/0: 10.34.34.4/24 (R3)
R55.5.5.5/32G0/0/0: 10.15.15.2/24 (R1)
AreaRouter’larAğlar
Area 0R1, R2, R310.12.12.0/24, 10.23.23.0/24, loopback’ler
Area 1R3 (ABR), R410.34.34.0/24, 4.4.4.4/32
Area 2R1 (ABR), R510.15.15.0/24, 5.5.5.5/32

R1 ve R3’ün loopback’leri Area 0’da, R4 ve R5’inkiler kendi area’larında.

3. Konfigürasyon

Area 0 (R1, R2, R3)

Üçünde de aynı kalıp: loopback, link IP’leri, sonra OSPF. Örnek olarak R3:

system-view
sysname R3
interface LoopBack0
 ip address 3.3.3.3 32
 quit
interface GigabitEthernet0/0/0
 ip address 10.23.23.3 24
 quit
ospf 1 router-id 3.3.3.3
 area 0.0.0.0
  network 3.3.3.3 0.0.0.0
  network 10.23.23.0 0.0.0.255
  quit
 quit

network satırlarında wildcard mask kullanılıyor, subnet mask değil: /24 için 0.0.0.255, /32 loopback için 0.0.0.0.

Area 1: R3’ü ABR yapmak, R4’ü eklemek

R3’te Area 0 ayarlarına dokunmadan Area 1’i ekliyorum. R3’ün G0/0/1 interface’i artık R4’e bakıyor:

interface GigabitEthernet0/0/1
 ip address 10.34.34.3 24
 quit
ospf 1
 area 0.0.0.1
  network 10.34.34.0 0.0.0.255
  quit
 quit

R4’te:

system-view
sysname R4
interface LoopBack0
 ip address 4.4.4.4 32
 quit
interface GigabitEthernet0/0/0
 ip address 10.34.34.4 24
 quit
ospf 1 router-id 4.4.4.4
 area 0.0.0.1
  network 4.4.4.4 0.0.0.0
  network 10.34.34.0 0.0.0.255
  quit
 quit

Area 2: R1’i ABR yapmak, R5’i eklemek

R1’de:

interface GigabitEthernet0/0/0
 ip address 10.15.15.1 24
 quit
ospf 1
 area 0.0.0.2
  network 10.15.15.0 0.0.0.255
  quit
 quit

R5’te:

system-view
sysname R5
interface LoopBack0
 ip address 5.5.5.5 32
 quit
interface GigabitEthernet0/0/0
 ip address 10.15.15.2 24
 quit
ospf 1 router-id 5.5.5.5
 area 0.0.0.2
  network 5.5.5.5 0.0.0.0
  network 10.15.15.0 0.0.0.255
  quit
 quit

Kurulum bu kadar. Asıl iş çıktıları okumakta.

4. Doğrulama

ABR’ler kimler?

Saf Area 0 router’ı olan R2’den bakıyorum, iki ABR’yi birden görmesi lazım:

<R2>display ospf abr-asbr

         OSPF Process 1 with Router ID 2.2.2.2
         Routing Table to ABR and ASBR

 RtType      Destination     Area         Cost  Nexthop        Type
 Intra-area  1.1.1.1         0.0.0.0      1     10.12.12.1     ABR
 Intra-area  3.3.3.3         0.0.0.0      1     10.23.23.3     ABR

R1 ve R3, tam beklediğim gibi.

Area 0’ın defteri: R2’nin LSDB’si

<R2>display ospf lsdb

         OSPF Process 1 with Router ID 2.2.2.2
                 Link State Database

                         Area: 0.0.0.0
 Type      LinkState ID    AdvRouter       Age   Len   Sequence   Metric
 Router    2.2.2.2         2.2.2.2         1196  60    80000020   1
 Router    1.1.1.1         1.1.1.1         1535  48    80000016   1
 Router    3.3.3.3         3.3.3.3         1208  48    8000001C   0
 Network   10.12.12.2      2.2.2.2         1196  32    80000004   0
 Network   10.23.23.3      3.3.3.3         1208  32    80000003   0
 Sum-Net   10.34.34.0      3.3.3.3         164   28    80000004   1
 Sum-Net   5.5.5.5         1.1.1.1         80    28    80000001   1
 Sum-Net   4.4.4.4         3.3.3.3         180   28    80000001   1
 Sum-Net   10.15.15.0      1.1.1.1         1472  28    80000001   1

Bu tabloyu satır satır okuyalım:

  • Router LSA’lar (Type 1): Üç tane, Area 0’daki üç router. R4 ve R5 için Router LSA yok. R2, onların var olduğunu bilmiyor.
  • Network LSA’lar (Type 2): İki segment, iki DR. LinkState ID, DR’ın interface IP’si: 10.12.12.2 (DR R2), 10.23.23.3 (DR R3). Segment başına bir DR olduğu için iki satır var. İlk açılan router DR oluyor, preemption yok.
  • Sum-Net’ler (Type 3): Dört satır. 10.34.34.0 ve 4.4.4.4 Area 1’in özeti, Adv Router 3.3.3.3. 10.15.15.0 ve 5.5.5.5 Area 2’nin özeti, Adv Router 1.1.1.1. R2 bu ağlara “şu ABR’nin arkasında” diye bakıyor.

Yani topoloji area’nın içinde kalıyor. Dışarı sadece “bu ağa şu ABR üzerinden ulaşırsın” bilgisi çıkıyor.

Area 1’in defteri: R4’ün LSDB’si

<R4>display ospf lsdb

         OSPF Process 1 with Router ID 4.4.4.4
                 Link State Database

                         Area: 0.0.0.1
 Type      LinkState ID    AdvRouter       Age   Len   Sequence   Metric
 Router    4.4.4.4         4.4.4.4         225   48    80000006   1
 Router    3.3.3.3         3.3.3.3         1466  36    8000000C   1
 Network   10.34.34.3      3.3.3.3         1466  32    80000004   0
 Sum-Net   5.5.5.5         3.3.3.3         126   28    80000001   3
 Sum-Net   3.3.3.3         3.3.3.3         210   28    80000004   0
 Sum-Net   10.12.12.0      3.3.3.3         1254  28    80000003   2
 Sum-Net   2.2.2.2         3.3.3.3         1254  28    80000003   1
 Sum-Net   10.15.15.0      3.3.3.3         1518  28    80000001   3
 Sum-Net   1.1.1.1         3.3.3.3         1247  28    80000003   2
 Sum-Net   10.23.23.0      3.3.3.3         1296  28    80000003   1

R4 sadece iki router görüyor (kendisi ve R3), geri kalan dünya yedi tane Sum-Net olarak geliyor ve hepsinin Adv Router’ı 3.3.3.3. R4 için dünya tek bir kapıdan ibaret.

R5’in LSDB’si bunun ayna görüntüsü: iki router (1.1.1.1 ve 5.5.5.5), geri kalan her şey Sum-Net ve Adv Router 1.1.1.1.

Sum-Net’teki Metric neyi anlatıyor?

Sum-Net’teki metric, ABR’den o ağa olan cost. R4’ün LSDB’sinden R3’ün gözüyle bakınca:

Sum-NetMetricR3’ten yol
3.3.3.30R3’ün kendisi
10.23.23.01doğrudan bağlı
2.2.2.21R3 → R2
10.12.12.02R3 → R2 → R1 tarafı
1.1.1.12R3 → R2 → R1
10.15.15.03R1’in arkası
5.5.5.53R3 → R2 → R1 → R5

Gigabit link’in cost’u varsayılan referans bant genişliğiyle 1 olduğu için sayılar hop sayısıyla örtüşüyor.

ABR’nin iki defteri: R1’in LSDB’si

R1 hem Area 0’da hem Area 2’de olduğu için çıktıda iki blok var:

R1’in LSDB’si…

Burada üç şey dikkatimi çekti:

  1. Router 1.1.1.1 iki kez var. Biri Area 0’da (Len 48, Seq 80000016), diğeri Area 2’de (Len 36, Seq 80000005). ABR her area için ayrı bir Router LSA üretiyor, yani her ayağı için ayrı defter tutuyor.
  2. Area 2’deki 4.4.4.4 ve 10.34.34.0 Area 1’den doğrudan gelmedi. R1, R4’ün Router LSA’sını hiç görmedi. Bu bilgiyi R3’ün Area 0’a bastığı Sum-Net’ten öğrendi ve kendi Area 2’sine tekrar bastı. Metric de bunu gösteriyor: Area 0’da R3’ün verdiği 4.4.4.4 metric 1, R1’in Area 2’ye verdiği ise 3 (R1→R2 1, R2→R3 1, artı R3’ün 1’i). Yani area’lar arası OSPF topolojiyi değil mesafeyi taşıyor, distance-vector gibi çalışıyor. Area 0 kuralının asıl sebebi bu: özetler hep omurgadan geçtiği için döngü oluşmuyor.
  3. Yerel ağlar kendi area’sında Sum-Net olmuyor. Area 2’de 10.15.15.0 için Sum-Net yok, çünkü zaten Router/Network LSA’dan biliyor. Sum-Net sadece “başka area’dan gelen” bilgi için üretiliyor.

Routing table: R4’ün OSPF rotaları

<R4>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
         Destinations : 7        Routes : 7

OSPF routing table status : <Active>
         Destinations : 7        Routes : 7

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        1.1.1.1/32  OSPF    10   3           D   10.34.34.3      GigabitEthernet0/0/0
        2.2.2.2/32  OSPF    10   2           D   10.34.34.3      GigabitEthernet0/0/0
        3.3.3.3/32  OSPF    10   1           D   10.34.34.3      GigabitEthernet0/0/0
        5.5.5.5/32  OSPF    10   4           D   10.34.34.3      GigabitEthernet0/0/0
      10.12.12.0/24 OSPF    10   3           D   10.34.34.3      GigabitEthernet0/0/0
      10.15.15.0/24 OSPF    10   4           D   10.34.34.3      GigabitEthernet0/0/0
      10.23.23.0/24 OSPF    10   2           D   10.34.34.3      GigabitEthernet0/0/0
  • Yedi rota = yedi Sum-Net. LSDB’deki her Sum-Net tabloya bir rota olarak girmiş.
  • Hepsinin next hop’u 10.34.34.3 (R3). R4 hangi hedefe giderse gitsin tek kapıyı kullanıyor.
  • Cost = R4’ün R3’e olan link cost’u (1) + Sum-Net metric’i. 5.5.5.5 için 1 + 3 = 4.
  • Pre 10: Huawei’de OSPF’in preference değeri 10. Cisco’da bu 110.
  • 4.4.4.4 ve 10.34.34.0 listede yok, çünkü R4’ün kendi bağlı ağları.

R5’in tablosu aynı mantıkla ayna: hepsi 10.15.15.1 (R1) üzerinden, cost’lar R1’den 1, R2’den 2, R3’ten 3, R4’ten 4.

Rotanın tipi: display ospf routing

Huawei, area’lar arası rotayı tabloda ayrıca işaretlemiyor, ama bu komut tipini gösteriyor:

R4’ün OSPF rotaları ve tipleri

Intra Area: 2 kendi area’sından, Inter Area: 7 başka area’lardan. Hepsinde AdvRouter 3.3.3.3.

Bağlantı ve yol testi

R4’ten R5’e, loopback’ten loopback’e:

<R4>ping -a 4.4.4.4 5.5.5.5
  PING 5.5.5.5: 56  data bytes, press CTRL_C to break
    Reply from 5.5.5.5: bytes=56 Sequence=1 ttl=252 time=40 ms
    Reply from 5.5.5.5: bytes=56 Sequence=2 ttl=252 time=20 ms
    Reply from 5.5.5.5: bytes=56 Sequence=3 ttl=252 time=50 ms
    Reply from 5.5.5.5: bytes=56 Sequence=4 ttl=252 time=40 ms

  --- 5.5.5.5 ping statistics ---
    4 packet(s) transmitted
    4 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 20/37/50 ms

ttl=252: cevap R5’te 255 ile çıkıp yolda üç router (R1, R2, R3) geçtiği için 252 geliyor. Hop sayısıyla uyumlu.

R4’ten R5’e tracert: yol Area 0 üzerinden

Yol R3 → R2 → R1 → R5. Area 1’den Area 2’ye trafik doğrudan değil, Area 0 üzerinden gidiyor.

5. Nerede takıldım

Router ID beklediğim gibi çıkmadı

R4’ün OSPF başlığında Router ID 10.34.34.4 yazıyordu, 4.4.4.4 değil. Loopback’i yazmadan ospf 1 açmıştım, router da interface IP’sinden birini seçti. Router ID elle verilmezse sırayla en yüksek loopback IP’sine, loopback yoksa en yüksek interface IP’sine bakılıyor ve bu seçim süreç açılırken yapılıp sonradan IP değişse bile kalıyor. Bu yüzden artık hep ID’yi elle veriyorum:

ospf 1 router-id 4.4.4.4

Process çalışırken yeni ID’nin devreye girmesi için süreci resetlemek gerekiyor.

router-id OSPF’in içinde çalışmadı

Nokia alışkanlığıyla ospf 1 yazıp içine girince router-id 4.4.4.4 yazdım, kabul etmedi. Huawei VRP’de OSPF görünümünde böyle bir komut yok. İki yol var: process’i açarken tek satırda ospf 1 router-id 4.4.4.4, ya da system-view’da genel router id 4.4.4.4.

reset ospf 1 process tanınmadı

Komutun kendisi doğruydu ama yanlış yerde yazıyordum. reset komutları Huawei’de kullanıcı görünümünde (<R4>) çalışıyor, [R4] içinde değil. Önce return yazıp çıkıyorum, sonra:

<R4>reset ospf 1 process
Warning: The OSPF process will be reset. Continue? [Y/N]:y

Aynı kural save için de geçerli.

LSDB’de 4.4.4.4 ve 5.5.5.5 yoktu

İlk baktığımda R2’nin LSDB’sinde sadece link ağları (10.34.34.0, 10.15.15.0) vardı, loopback’ler yoktu. Sebep, R4 ve R5’e loopback’i hiç yazmamam, yani Router ID ile adres ayrımını karıştırmamdı. Router ID sadece router’ın kimliği. LSDB’de “5.5.5.5 diye bir ağ var” görünmesi için o IP’nin bir interface’te olması ve OSPF’e network satırıyla verilmesi gerekiyor. Loopback’i ve network 5.5.5.5 0.0.0.0 satırını ekledikten sonra Sum-Net’ler geldi.

Area 0 kuralının bir istisna yolu var. Bir area fiziksel olarak Area 0’a bağlanamıyorsa, aradaki area’nın (transit area) üzerinden Area 0’a sanal bir bağ çekilebilir. Fiziksel kablo aynı kalır, ama OSPF o iki router’ı Area 0 komşusu sayar.

Lab’da R3 ile R4 arasında denedim. Komut, Hello’ların geçeceği transit area’nın içinde yazılıyor ve karşı ucu Router ID ile tanımlıyor:

R3’te:

ospf 1
 area 0.0.0.1
  vlink-peer 4.4.4.4

R4’te:

ospf 1
 area 0.0.0.1
  vlink-peer 3.3.3.3

İki uçta da girilmesi gerekiyor. İlk denemede komutu Area 0’ın içine yazmıştım:

[R3-ospf-1-area-0.0.0.0]vlink-peer 4.4.4.4
Error: Virtual-link can not be configured in backbone area.

Virtual-link Area 0’ı uzatmak için kullanıldığından Area 0’ın içinde değil, transit area’nın (burada Area 1) içinde yazılıyor. Karşı uca giden yolu R3, Area 1’in iç yönlendirmesinden buluyor. R4’ün loopback’inin Area 1’de duyurulmuş olması bu yüzden önemliydi.

Komutu doğru yere yazınca log, sıradan bir komşuluktaki aynı geçişleri gösterdi:

VirtualLinkNeighborAddress=4.4.4.4, NeighborEvent=HelloReceived, PreviousState=Down, CurrentState=Init
VirtualLinkNeighborAddress=4.4.4.4, NeighborEvent=2WayReceived, PreviousState=Init, CurrentState=ExStart
VirtualLinkNeighborAddress=4.4.4.4, NeighborEvent=NegotiationDone, PreviousState=ExStart, CurrentState=Exchange

Sanal bağ da sıradan bir OSPF komşuluğu gibi LSDB değişimine geçiyor.

Kurallar:

  • Transit area stub olamaz. LSA’lar o area’dan geçtiği için tam LSDB taşıması gerekiyor.
  • Kırılgan: Sanal bağ, transit area’nın fiziksel hattına bağlı. O hat giderse virtual-link de düşer.
  • İlk tercih değil. Doğru tasarım, area’yı gerçekten bir ABR üzerinden Area 0’a bağlamak. Virtual-link genelde geçici çözüm olarak ya da bir link koptuğunda omurgayı tekrar bağlamak için kullanılıyor.

7. Özet

  • Area’lar ağı bölgelere ayırır: SPF hesabı küçülür, LSDB küçülür, özetleme mümkün olur.
  • ABR, bir ayağı Area 0’da olan router. Her area için ayrı defter (LSDB) tutar.
  • Area 0 zorunlu: area’lar arası bilgi sadece omurgadan, Type 3 (Sum-Net) LSA’larla taşınır.
  • Area’lar arası OSPF topolojiyi değil mesafeyi taşır, distance-vector gibi. Bu yüzden döngü olmaz.
  • Bir router dışarıdaki area’nın detayını görmez: LSDB’de sadece Sum-Net’ler ve hepsinin Adv Router’ı ABR.
  • Routing table’da cost = bağlandığın ABR’ye cost + Sum-Net metric’i, display ospf routing ile rota tipini (Intra-area, Inter-area) görürsün.
  • Router ID kimliktir, loopback ise adres. LSDB’de ağ görünmesi için network satırı şart.
  • Huawei’de reset ve save kullanıcı görünümünde, router-id ise ospf 1 router-id X.X.X.X olarak yazılır.
  • Virtual-link, Area 0’a bağlanamayan area için yama çözümdür ve transit area’nın içinde yazılır.