---
title: 'Yedeklilik ve Devralma'
source: 'https://academia.sh/tr/kurslar/anahtarlama-ve-yonlendirme/yedeklilik-ve-devralma'
course: 'Anahtarlama ve Yönlendirme'
language: tr
updated: '2026-08-17T18:07:21+00:00'
license: 'CC BY-SA 4.0'
---

# Yedeklilik ve Devralma

Ağ geçidi yedekliliğinde devralma penceresi ölçülür: yukarı bağ koptuğunda ve kimse duymadığında kırk akışın kırkı bir adım sonra kara deliğe düşer, geçit devrettiğinde kara delik sıfırlanır ama eş bağı kırk geçiş taşır, iki geçit birbirini etkin sandığında kırk akış döngüye girer ve eş bağı seksen geçiş taşır.

Omurga–yaprak düzeninde yedeklilik yapısaldı: hiçbir cihaz bir yolun tek sahibi değildi ve bir
omurganın kaybı yalnız akışların dağılımını değiştiriyordu. Konak tarafında durum böyle
değildir. Konak, ağın dışına giden paketini bir yola değil bir **adrese** yollar — varsayılan
ağ geçidinin adresine. Adres tekildir ve bir anda tek bir cihazın üstünde durur.

Bu tekillik yedekliliği yapısal olmaktan çıkarır. Cihaz düştüğünde ikinci bir cihazın adresi
**devralması** ve devralmayı herkesin duyması gerekir. Bu dersin sorusu, duymanın sürdüğü o
kısa aralıkta paketin başına ne geldiğidir.

## Sanal Adres ve İki Rol

**Ağ geçidi yedekliliği (gateway redundancy)** iki cihazı tek bir adresin arkasına koyar. Bu
adrese **sanal adres** denir; konaklar onu varsayılan ağ geçidi olarak bilir ve iki cihazın
varlığından haberdar değildir.

Cihazlardan biri **etkin**, öteki **yedektir**. Etkin olan sanal adresi yanıtlar ve paketleri
yukarı iletir; yedek olan sessizce dinler. Etkin olanın düzenli aralıklarla gönderdiği
duyurular kesildiğinde yedek olan bir süre bekler ve sonra adresi devralır.

```text
# ogretilen dokum , calistirilmamistir

ağ geçidi çifti
  sanal adres     tek adres, konakların varsayılan ağ geçidi
  g1  öncelik 110 etkin  -> sanal adresi yanıtlar, yukarı iletir
  g2  öncelik 100 yedek  -> sessiz dinler, duyuru bekler
  eş bağı         g1 - g2, duyuruların ve durum bilgisinin taşındığı bağ

zamanlama
  duyuru aralığı  etkin olan her aralıkta bir kez duyurur
  ölü sayacı      yedek olan bu süre boyunca duyuru duymazsa devralır
  devralma anı    yedek olan sanal adresi yanıtlamaya başlar

yaprak tablosu (uzak ağlar için)
  hedef       bir sonraki düğüm
  u1 u2 u3    sanal adresin o an bulunduğuna inanılan geçit
```

Servis düzeyindeki devralma kalıpları — sağlık sınaması, yeniden deneme, devre kesici —
**Dayanıklılık Kalıpları** kursunda kuruldu ve burada tekrarlanmaz. Orada devralan şey bir
servis örneğiydi ve ölçülen şey isteğin akıbetiydi; burada devralan şey **ağ geçididir** ve
ölçülen şey paketin kaderidir.

## Pencere Nedir

Devralma anlık değildir. Ölü sayacı dolana kadar geçen süre, yedek olanın adresi ilan etmesi
ve yol üzerindeki anahtarların adresin yerini yeniden öğrenmesi — bunların toplamına
**devralma penceresi** denir. Pencere boyunca cihazlar sanal adresin nerede olduğu konusunda
anlaşmaz.

Pencerede iki ayrı soru vardır. Birincisi: **sanal adresi kim yanıtlıyor?** İkincisi:
**yanıtlayan cihaz paketi iletebiliyor mu?** Ölçüm tam bu ayrımı sayar: yukarı bağı kopmuş
bir geçit, adresi tuttuğu sürece paketleri toplamayı sürdürür.

Ölçümün dayandığı varsayımlar:

- **TP17** — Dokuz yaprak (`y1`–`y9`) bir ağ geçidi çiftine (`g1`, `g2`) bağlıdır; çift
  çekirdeğe (`c`), çekirdek üç uzak ağa (`u1`, `u2`, `u3`) bağlıdır. Kırk akışın kaynağı bir
  yaprak, hedefi bir uzak ağdır; ölçülen trafik tümüyle kuzey–güney yönlüdür.
- **TP18** — Ölçülen arıza `g1–c` **yukarı bağının** kopmasıdır. `g1` sağdır, yapraklara
  bağlıdır ve sanal adresi tutmayı sürdürebilir.
- **TP19** — Her yaprağın bir **inancı** vardır: sanal adresin `g1`'de mi `g2`'de mi olduğu.
  Duyan yaprak `g2` der, duymayan `g1` der.
- **TP20** — Her geçidin de bir inancı vardır. Kendini etkin sanan geçit paketi yukarı iletir;
  eşini etkin sanan geçit paketi **eş bağından** eşine verir.
- **TP21** — Kâhin kurguyu biz kurduğumuz için bilinir: `g1–c` koptuktan sonra uzak ağlara
  giden tek yol `g2`'nin üstündedir.
- **TP22** — Rejimler yalnız inançta ayrılır; topoloji `g1–c` bağının varlığı dışında
  değişmez. Böylece ölçülen fark bilgi farkıdır, yapı farkı değil.
- **TP23** — "Eş bağı" sütunu kırk akışın `g1–g2` bağını toplam kaç kez geçtiğini sayar. Bu
  bağ denetim trafiği için boyutlandırılır; kullanıcı trafiği taşıması bir belirtidir.
- **TP24** — Bir paket aynı bağdan ikinci kez geçtiğinde ya da atlama sınırını (12) yaktığında
  **döngü** sayılır; bir sonraki düğümü artık komşu olmayan paket **kara delik** sayılır.
- **TP25** — Adım sütunu yalnız harcanan adımı sayar; kara deliğe düşen paket öldüğü yere
  kadarki adımı harcamış olur.
- **TP26** — Kırk akışlık kümede ölçülebilen en küçük fark 1/40 = 0,025'tir.

## Ölçüm

```python
"""Ag gecidi yedekliligi: devralma penceresinde paketin kaderi.

Bolum 1 - rejimler: yakinsamis, pencere, yukari bag izleme, ikiye bolunme.
Bolum 2 - duyan yaprak sayisi artarken kaderin degisimi.
"""
TOHUM = 20260810
ATLAMA_SINIRI = 12
YAPRAK = [f"y{i}" for i in range(1, 10)]
UZAK = ["u1", "u2", "u3"]
DUGUMLER = YAPRAK + ["g1", "g2", "c"] + UZAK
BAGLAR = ([(y, g) for y in YAPRAK for g in ("g1", "g2")]
          + [("g1", "g2"), ("g1", "c"), ("g2", "c")]
          + [("c", u) for u in UZAK])
KOPUK = [b for b in BAGLAR if b != ("g1", "c")]


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def komsuluk(baglar):
    k = {u: set() for u in DUGUMLER}
    for x, y in baglar:
        k[x].add(y)
        k[y].add(x)
    return k


def tablolar(yaprak_inanci, g1_inanci, g2_inanci):
    """Her dugumun uzak aglar icin tuttugu bir sonraki dugum."""
    t = {}
    for y in YAPRAK:
        for u in UZAK:
            t[(y, u)] = yaprak_inanci[y]
    for g, es, inanc in (("g1", "g2", g1_inanci), ("g2", "g1", g2_inanci)):
        for u in UZAK:
            t[(g, u)] = "c" if inanc == g else es
    for u in UZAK:
        t[("c", u)] = u
    return t


def ilet(kaynak, hedef, tab, baglar):
    k, u, gecilen, atlama = komsuluk(baglar), kaynak, [], 0
    while u != hedef:
        if atlama >= ATLAMA_SINIRI:
            return "dongu", atlama
        sonraki = tab.get((u, hedef))
        if sonraki is None or sonraki not in k[u]:
            return "kara delik", atlama
        if (u, sonraki) in gecilen:
            return "dongu", atlama
        gecilen.append((u, sonraki))
        u, atlama = sonraki, atlama + 1
    return "ulasti", atlama


def ciftler(sayi=40, tohum=TOHUM):
    r, liste = uretec(tohum), []
    while len(liste) < sayi:
        liste.append((YAPRAK[r(9)], UZAK[r(3)]))
    return liste


def es_gecisi(tab, baglar):
    """Kirk akisin g1-g2 es bagini kac kez gectigi."""
    k, say = komsuluk(baglar), 0
    for x, y in ciftler():
        u, gecilen, atlama = x, [], 0
        while u != y and atlama < ATLAMA_SINIRI:
            v = tab.get((u, y))
            if v is None or v not in k[u] or (u, v) in gecilen:
                break
            if {u, v} == {"g1", "g2"}:
                say += 1
            gecilen.append((u, v))
            u, atlama = v, atlama + 1
    return say


def olc(tab, baglar):
    sayim, adim = {"ulasti": 0, "dongu": 0, "kara delik": 0}, 0
    for x, y in ciftler():
        kader, a = ilet(x, y, tab, baglar)
        sayim[kader] += 1
        adim += a
    return sayim, adim


def inanc(duyan):
    return {y: ("g2" if y in duyan else "g1") for y in YAPRAK}


HEPSI, HIC = set(YAPRAK), set()
REJIM = [
    ("yakınsamış, g1 etkin", BAGLAR, inanc(HIC), "g1", "g1"),
    ("yukarı bağ koptu, kimse duymadı", KOPUK, inanc(HIC), "g1", "g1"),
    ("g1 devretti, yapraklar duymadı", KOPUK, inanc(HIC), "g2", "g2"),
    ("g1 devretti, dört yaprak duydu", KOPUK, inanc(set(YAPRAK[:4])), "g2", "g2"),
    ("g1 devretti, hepsi duydu", KOPUK, inanc(HEPSI), "g2", "g2"),
    ("ikisi de kendini etkin sanıyor", BAGLAR, inanc(set(YAPRAK[:5])), "g1", "g2"),
    ("ikisi de eşini etkin sanıyor", BAGLAR, inanc(set(YAPRAK[:5])), "g2", "g1"),
]

print(f"{'rejim':<32s} {'ulaştı':>6s} {'döngü':>6s} {'kara delik':>10s} "
      f"{'adım':>5s} {'eş bağı':>7s}")
for ad, bag, yi, a1, a2 in REJIM:
    tab = tablolar(yi, a1, a2)
    s, a = olc(tab, bag)
    print(f"{ad:<32s} {s['ulasti']:6d} {s['dongu']:6d} {s['kara delik']:10d} "
          f"{a:5d} {es_gecisi(tab, bag):7d}")

print()
print(f"{'duyan yaprak':>12s} {'g1 devretmedi':>30s} {'g1 devretti':>30s}")
print(f"{'':>12s} {'ulaştı kara delik adım eş':>30s}"
      f" {'ulaştı kara delik adım eş':>30s}")
for n in range(0, 10):
    yi, sutun = inanc(set(YAPRAK[:n])), []
    for g1i in ("g1", "g2"):
        tab = tablolar(yi, g1i, "g2")
        s, a = olc(tab, KOPUK)
        sutun.append(f"{s['ulasti']:9d}{s['kara delik']:11d}{a:5d}"
                     f"{es_gecisi(tab, KOPUK):5d}")
    print(f"{n:12d} {sutun[0]} {sutun[1]}")

print()
print(f"düğüm {len(DUGUMLER)}, bağ {len(BAGLAR)}, akış 40, "
      f"atlama sınırı {ATLAMA_SINIRI}")
```

```
rejim                            ulaştı  döngü kara delik  adım eş bağı
yakınsamış, g1 etkin                 40      0          0   120       0
yukarı bağ koptu, kimse duymadı       0      0         40    40       0
g1 devretti, yapraklar duymadı       40      0          0   160      40
g1 devretti, dört yaprak duydu       40      0          0   146      26
g1 devretti, hepsi duydu             40      0          0   120       0
ikisi de kendini etkin sanıyor       40      0          0   120       0
ikisi de eşini etkin sanıyor          0     40          0   120      80

duyan yaprak                  g1 devretmedi                    g1 devretti
                  ulaştı kara delik adım eş      ulaştı kara delik adım eş
           0         0         40   40    0        40          0  160   40
           1         4         36   48    0        40          0  156   36
           2         7         33   54    0        40          0  153   33
           3         9         31   58    0        40          0  151   31
           4        14         26   68    0        40          0  146   26
           5        18         22   76    0        40          0  142   22
           6        24         16   88    0        40          0  136   16
           7        29         11   98    0        40          0  131   11
           8        34          6  108    0        40          0  126    6
           9        40          0  120    0        40          0  120    0

düğüm 15, bağ 24, akış 40, atlama sınırı 12
```

## Yanıtlamak İletmek Değildir

İkinci satır dersin en önemli sayısıdır. `g1–c` koptuğunda ve kimse duymadığında kırk akışın
kırkı **kara deliğe** düşer. Harcanan adım **40**'tır — akış başına bir adım. Paket yaprağı
terk eder, sanal adresi tutan geçide varır ve orada ölür.

Arızanın biçimi budur: cihaz ayaktadır, bağlantı noktaları çalışır, sanal adres yanıtlanır ve
konak varsayılan ağ geçidini erişilebilir bulur. Yalnız paket yukarı çıkmaz. **Sanal adresin
sahibi ile paketi iletebilen ayrı sorulardır** ve konak yalnız birincisini sorabilir.

## Devretmek Kara Deliği Eş Bağına Çevirir

Üçüncü satır arızayı kapatıyor: `g1` yukarı bağının koptuğunu fark edip devrettiğinde kırk
akışın kırkı **ulaşır**, kara delik **0**'a iner. Yapraklar hâlâ hiçbir şey duymamıştır;
`g1` onların paketini alıp eşine verir.

Bedel iki sütunda birden görünür. Adım **120**'den **160**'a çıkar — akış başına bir fazladan
adım. Ve `eş bağı` sütunu **0**'dan **40**'a çıkar: denetim trafiği için kurulmuş olan bağ,
kullanıcı trafiğinin tamamını taşır.

Alt tablo bu bedelin nasıl eridiğini gösteriyor. Duyan yaprak sayısı sıfırdan dokuza
çıkarken, `g1 devretti` sütununda ulaşan **40**'ta sabit kalıyor; değişen şey adımın
**160**'tan **120**'ye, eş bağı geçişinin **40**'tan **0**'a inmesidir. Devralma penceresi
paketleri kaybettirmiyor; onları **eş bağı üzerinden** taşıtıyor ve pencere kapandıkça bu yük
kalkıyor.

Sol sütun aynı pencereyi devretme olmadan gösteriyor: duyan yaprak sayısı arttıkça ulaşan
**0**'dan **40**'a, kara delik **40**'tan **0**'a doğrusal olarak akıyor. Sekiz yaprak
duymuşken bile **6 akış** hâlâ ölü geçide gidiyor.

## Kısmî Bilgi Yine Döngü Üretiyor

Son satır kursun ikinci iddiasını ikinci kez ödüyor. `g1` ve `g2` **birbirini etkin
sandığında** kırk akışın kırkı **döngüye** girer: kara delik **0**, ulaşan **0**.

Bu durum uydurma değildir. `g1` düşerken "artık etkin olan eşimdir" bilgisini almıştır; `g2`,
`g1` döndüğünde "önceliği yüksek olan eşimdir" bilgisini almıştır. **İkisi de doğru bir şey
duydu, ama farklı anlarda.** Yanlış olan ikisinin **birlikte** söylediğidir.

İki sayı karşılaştırılmalıdır. Hiç bilginin olmadığı rejimde (`kimse duymadı`) kırk paket
kara deliğe düşer, **40 adım** harcanır ve eş bağı **0** geçiş taşır: arıza ucuzdur ve
bellidir. Kısmî bilginin olduğu rejimde kırk paket döngüye girer, **120 adım** harcanır ve eş
bağı **80** geçiş taşır — akış başına iki geçiş. **Döngü kara delikten üç kat pahalıdır ve
kara delik gibi değil, tıkanıklık gibi görünür:** yönetici boş bir bağ değil, dolu bir eş bağı
görür.

Üçüncü iddia da burada okunur. Döngüye giren kırk akışın yaprakları iki gruba ayrılmıştı;
beşi `g1`'e, dördü `g2`'ye yolluyordu. Hangi grupta olduğu **hiç fark etmedi** — kırkı da
döngüye girdi. Yaprağın tablosu doğruydu ve paketi öldü. **Hiçbir cihaz tek başına bir paketi
döngüye sokamaz;** döngü çiftin ortak ürünüdür.

Altıncı satır bir uyarı taşır. **İkisi de kendini etkin sandığında** — yani sanal adres iki
cihazda birden yanıtlandığında — kader tablosu tertemiz görünür: **40 ulaştı, 0 döngü, 0 kara
delik, 120 adım.** Bu ölçü **ikiye bölünmeyi göremez**, çünkü paketler gerçekten varır.
Görülebileceği yer başka bir tablodadır: aynı adres iki bağlantı noktasından duyulduğunda
eşleştirme tablosu iki kayıt arasında salınır. O tablo **Eşleştirme Tabloları** dersinin
konusudur ve burada tekrarlanmaz.

## Sayılan Yüzeyler ve Daraltmaları

Bu bölüm arızaların nasıl **göründüğünü** ve nasıl **daraltıldığını** yazar; bir yordam
vermez. Saldırı tarafı **Kablosuz Ağlar ve Ağ Güvenliği** kursuna aittir.

**Birinci yüzey — pencerenin uzunluğu.** Ölçümde devretme olmadan sekiz yaprak duymuşken hâlâ
**6 akış** ölüyor. **Daraltma:** duyuru aralığının ve ölü sayacının kısaltılması pencereyi
daraltır; bedeli, geçici bir aksamanın gereksiz bir devralma başlatmasıdır. İkinci daraltma
yedek yolun **önceden** hesaplanmış olmasıdır: tablo devralma anında hesaplanmaz, hazır
bekletilir.

**İkinci yüzey — yanıtlayan ama iletemeyen geçit.** Ölçümde **40 kara delik** ve akış başına
tek adım. **Daraltma: yukarı bağ izleme** — geçidin önceliği, yukarı bağının durumuna
bağlanır; bağ düşünce öncelik düşer ve eş devralır. Ölçüm bu daraltmanın tam kazancını
veriyor: kara delik **40**'tan **0**'a iner, karşılığında eş bağı **40** geçiş taşır.

**Üçüncü yüzey — iki geçidin birbirini etkin sanması.** Ölçümde **40 döngü** ve eş bağında
**80** geçiş. **Daraltma:** önceliklerin kesin ve eşitsiz sıralanması, ve **önceliğin geri
alınmasının (preemption)** kapatılması — dönen cihaz adresi geri istemezse iki taraflı
bekleyiş doğmaz. Ayrıca atlama sınırı döngüyü sonlandırır, ama sınır bir çözüm değil bir
tavandır: bedeli ölçümde **120 adım** olarak durur.

**Dördüncü yüzey — eş bağının tek olması.** Eş bağı hem duyuruyu hem devralma sırasında bütün
kullanıcı trafiğini taşır; ölçümde bu yük **40** geçiş. Bağ koptuğunda iki cihaz birbirini
göremez ve ikiye bölünme doğar. **Daraltma:** eş bağının kendisinin yedeklenmesi ve eşin
sağlığının **ikinci bir yoldan** doğrulanması — tek bir bağın sessizliği ölüm kanıtı sayılmaz.

**Beşinci yüzey — duyuruların doğrulanmadan kabul edilmesi.** Devralma duyurusu bir
bildirimdir; bildirimi doğrulayan bir şey yoksa geçidi hangi cihazın devraldığı bildirene
kalır. **Daraltma:** duyuruların kimlik doğrulamasına bağlanması ve yalnız geçit çiftinin
bulunduğu bağlantı noktalarında kabul edilmesi.

## Özet

- Ağ geçidi yedekliliği iki cihazı tek bir sanal adresin arkasına koyar; konak adresi bilir,
  cihazları bilmez ve yalnız "adres yanıtlıyor mu" sorusunu sorabilir.
- Yukarı bağ koptuğunda ve kimse duymadığında kırk akışın kırkı bir adım sonra kara deliğe
  düşer: **yanıtlamak iletmek değildir.**
- Geçit devrettiğinde kara delik **0**'a iner ama adım **120**'den **160**'a, eş bağı geçişi
  **0**'dan **40**'a çıkar; duyan yaprak sayısı arttıkça ikisi de geri iner.
- İki geçit birbirini etkin sandığında kırk akış döngüye girer: **120 adım** ve eş bağında
  **80** geçiş — hiç bilginin olduğu rejimin **üç katı** ve tıkanıklık görünümlü.
- Yaprakların yarısı bir geçide, yarısı ötekine yollarken kırkı da döngüye girdi; döngü çiftin
  ortak ürünüdür ve **ikisi de kendini etkin sandığında** ölçü hiçbir şey göremez.

## Sonraki Adım

Buraya kadarki üç ders topolojiyi bir çizge olarak ölçtü: düğümler, bağlar, adımlar, turlar.
Tablo satırı sayısı her ölçümde bir sütun olarak göründü ve her seferinde topolojiden çıktı —
üç katmanlı düzende 272, dört omurgalı düzende 468. Ama satır sayısını belirleyen ikinci bir
şey daha vardır ve topolojiyle hiç ilgisi yoktur: hedeflerin **nasıl adlandırıldığı**. Aynı
topolojide, adresleri bir düzene göre dağıtan bir plan ile büyüme sırasına göre dağıtan bir
plan aynı tabloyu farklı sayıda satırla doldurur. Sonraki ders bu farkı sayar ve kursu kapatır.
