OSPF komşuluğu kurulmuyor mu? Adım adım kontrol listesi

Komşuluk Init'te, ExStart'ta ya da hiç görünmüyorsa sebep genelde birkaç parametreden biridir. Huawei, Cisco, FortiGate ve MikroTik komutlarıyla sırayla kontrol ediyoruz.

OSPF komşuluğu kurulmadığında ilk refleks genelde konfigürasyonu baştan yazmak olur. Oysa komşuluğun hangi durumda takıldığı, sorunun nerede olduğunu neredeyse her zaman söyler. Bu yazıda önce durumu okuyacağız, sonra sırayla kontrol edeceğiz.

Örnek topoloji basit: R1 ve R2, 10.0.12.0/30 ağı üzerinden Area 0’da komşu olacak. R1’in router ID’si 1.1.1.1, R2’ninki 2.2.2.2.

Komutlar Huawei VRP V200R0xx, Cisco IOS 15.x, FortiOS 7.x ve RouterOS 7 esas alınarak yazıldı. Sürüme göre küçük farklar olabilir. Sekmelerden birini seçtiğinde sayfadaki tüm komutlar o üreticiye geçer.

1. Komşuluk hangi durumda takılı?

Önce iki taraftaki komşu tablosuna bak.

display ospf peer brief
show ip ospf neighbor
get router info ospf neighbor
/routing ospf neighbor print

Çıktıdaki durum sana nereye bakacağını söyler:

Takıldığı durum Ne anlama gelir İlk bakılacak yer
Hiç yok / Down Hello hiç gelmiyor ya da kabul edilmiyor Arayüz, area ve network tanımı, passive interface, hello parametreleri, ACL
Init Komşunun hello’su geliyor, bizimki ona ulaşmıyor Tek yönlü filtre (ACL, firewall), tek yönlü link
2-Way Broadcast ağda DROther’lar arasında normaldir Point-to-point olması gerekiyorsa network type
ExStart / Exchange Veritabanı (DBD) değişimi tamamlanmıyor MTU uyuşmazlığı, aynı router ID
Loading İstenen LSA’lar gelmiyor Nadir; MTU, bozuk LSA

2. Hello parametrelerini karşılaştır

İki router’ın komşu olabilmesi için hello paketindeki şu alanlar birebir aynı olmalı:

  • Area ID
  • Hello ve dead interval
  • Subnet maskesi (broadcast ağlarda)
  • Kimlik doğrulama tipi ve anahtarı
  • Area tipi (ör. bir taraf stub, diğeri normal olamaz)

Uymayan hello sessizce düşürülür; komşu tabloda hiç görünmez. Arayüz bazında değerleri iki tarafta da görüntüle:

display ospf interface GigabitEthernet0/0/1
show ip ospf interface GigabitEthernet0/1
get router info ospf interface port1
/routing ospf interface print detail

Çıktılarda area, network type, hello/dead değerleri ve DR/BDR durumunu yan yana koy. Farkı görmek çoğu zaman tek başına yeterli.

3. Zamanlayıcıları ve network type’ı eşitle

Point-to-point bir linkte iki tarafı da point-to-point yapmak DR/BDR seçimini ortadan kaldırır ve komşuluğu hızlandırır. Bir taraf broadcast, diğeri point-to-point kalırsa komşuluk kurulsa bile rotalar tabloya düzgün düşmeyebilir.

interface GigabitEthernet0/0/1
 ospf network-type p2p
 ospf timer hello 10
 ospf timer dead 40
interface GigabitEthernet0/1
 ip ospf network point-to-point
 ip ospf hello-interval 10
 ip ospf dead-interval 40
config router ospf
    config ospf-interface
        edit "port1-ospf"
            set interface "port1"
            set network-type point-to-point
            set hello-interval 10
            set dead-interval 40
        next
    end
end
/routing ospf interface-template add area=backbone \
    networks=10.0.12.0/30 type=ptp \
    hello-interval=10s dead-interval=40s

4. Hata sayaçlarına ve debug’a bak

Parametreler doğru görünüyorsa router’a neden paketi reddettiğini sor. Kimlik doğrulama, area ve zamanlayıcı uyuşmazlıkları burada açıkça görünür.

display ospf error
debug ip ospf adj
! işin bitince:
undebug all
diagnose ip router ospf all enable
diagnose ip router ospf level info
diagnose debug enable
! işin bitince:
diagnose debug disable
/system logging add topics=ospf,debug action=memory
/log print where topics~"ospf"

Üretim cihazında debug açık bırakma. Yoğun bir cihazda CPU’yu gereksiz yere yorar.

5. ExStart / Exchange’de takılıyorsa: MTU

Komşuluk ExStart ya da Exchange’de kalıyorsa ilk şüpheli MTU uyuşmazlığıdır. DBD paketleri arayüz MTU’sunu taşır; karşı taraf daha büyük bir MTU görürse değişimi tamamlamaz.

Doğru çözüm iki taraftaki arayüz MTU’sunu eşitlemektir. MTU kontrolünü kapatmak sorunu gizler, çözmez; geçici bir test için kullan.

display interface GigabitEthernet0/0/1 | include MTU

Huawei varsayılan olarak DBD paketlerinde MTU alanını 0 gönderir. Karşı tarafla gerçek MTU kontrolü yapmak için arayüzde ospf mtu-enable kullanılır.

show interfaces GigabitEthernet0/1 | include MTU
! yalnızca geçici test için:
interface GigabitEthernet0/1
 ip ospf mtu-ignore
config router ospf
    config ospf-interface
        edit "port1-ospf"
            set mtu-ignore enable
        next
    end
end

6. Router ID çakışması

İki router aynı router ID’yi kullanıyorsa komşuluk ExStart civarında döner ya da hiç oturmaz. Bu genelde bir konfigürasyonun kopyalanıp düzenlenmeden yapıştırılmasıyla olur.

display ospf brief
! ID değiştirdiysen etkin olması için:
reset ospf process
show ip ospf | include ID
! ID değiştirdiysen etkin olması için:
clear ip ospf process
get router info ospf status
/routing ospf instance print

Process’i sıfırlamak o cihazdaki tüm OSPF komşuluklarını düşürür. Bakım penceresinde yap.

7. Arada firewall ya da ACL var mı?

OSPF, TCP ya da UDP değil, IP protokol 89 kullanır. Hello’lar 224.0.0.5, DR/BDR’ye giden paketler 224.0.0.6 multicast adresine gider. Arada bir firewall ya da arayüz ACL’i varsa bu trafiğe açıkça izin ver. Init durumunda takılı bir komşuluk çoğu zaman tek yönde filtrelenen trafiğe işaret eder.

Özet kontrol listesi

  1. Komşuluk hangi durumda? Tabloya göre yön belirle.
  2. Area, hello/dead, maske, kimlik doğrulama ve area tipi iki tarafta aynı mı?
  3. Network type iki tarafta tutarlı mı?
  4. Hata sayaçları ve debug ne diyor?
  5. ExStart/Exchange’de ise MTU’ları karşılaştır.
  6. Router ID’ler benzersiz mi?
  7. Arada IP protokol 89 ve multicast’i engelleyen bir şey var mı?

Bu yedi adım, sahada karşılaşılan OSPF komşuluk sorunlarının büyük kısmını çözer. Kalanlar için ilgili üreticinin dokümantasyonuna ve debug çıktısına dön.