İçeriğe geç
academia.sh

Ders 17 / 17

Adres ve Ad Planlaması

Aynı topolojide özetlenebilir plan alt ağ sayısı dokuzdan otuz altıya çıkarken tablo satırını 73'te sabit tutar, büyüme sırasına göre dağıtılan plan aynı yolda 90 satırdan 335 satıra çıkar; taşınan tek bir ağ özeti sahip olmadığı adresi duyurur duruma sokar ve iki paket kara deliğe düşer.

İçindekiler

Önceki üç ders topolojiyi bir çizge olarak ölçtü ve tablo satırı her ölçümde bir sütun olarak göründü: üç katmanlı düzende 272, dört omurgalı düzende 468. Her seferinde satır sayısını belirleyen şey topolojiydi.

Satır sayısını belirleyen ikinci bir şey daha vardır ve topolojiyle hiç ilgisi yoktur: hedeflerin nasıl adlandırıldığı. Aynı cihazlarda, aynı bağlarla, aynı sayıda alt ağla iki ayrı adres planı aynı tabloyu bambaşka sayıda satırla doldurur. Bu dersin sorusu, planın tabloya ne yaptığıdır.

Planın Tek Koşulu

Bir yönlendirme tablosu, komşu adresleri tek bir satırda özetleyebilir. Buna yol özetleme denir ve tek bir koşulu vardır: özetlenen aralıktaki bütün adresler aynı bir sonraki düğümden ulaşılabilir olmalıdır. Aralık hizalı olmalı ve içine başka bir yöne giden bir adres düşmemelidir.

Alt ağ maskesi, hizalama ve blok adımı hesabı Alt Ağlara Bölme ve Değişken Uzunluklu Alt Ağlar derslerinde kuruldu; burada tekrarlanmaz. Ölçülen şey hesabın kendisi değil, hesabın tablo satırına etkisidir.

Bir plan bu koşulu ya sağlar ya sağlamaz. Sağlayan plan adres uzayını topolojiyle aynı biçimde böler: her bloğa hizalı bir aralık, her aralığın içinde her yaprağa hizalı bir alt aralık, ve her ikisinde büyüme payı. Sağlamayan plan adresleri tek bir havuzdan yaratılma sırasına göre dağıtır.

# ogretilen dokum , calistirilmamistir

hizalı plan — 64 yuvalık uzay, dört blok, üçü kullanılıyor
  blok 0   yuva  0-15      y1: 0-3   y2: 4-7   y3: 8-11   12-15 büyüme payı
  blok 1   yuva 16-31      blok 2   yuva 32-47      blok 3   48-63 ayrılmış
  c1'in tablosu:  0-15 -> d1     16-31 -> d3     32-47 -> d5

büyüme sırasına göre plan — tek havuz, yaratılma sırası
  yuva 0 -> y1   yuva 1 -> y2   yuva 2 -> y3   yuva 3 -> y4   ...
  ardışık iki yuva ayrı bloklara düşer; özetlenecek aralık doğmaz

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

  • TP27 — Topoloji birinci dersin üç katmanlı düzenidir: dokuz yaprak, üç blok, altı dağıtım ve iki çekirdek düğümü. Topoloji iki planda da aynıdır; değişen tek şey plandır.
  • TP28 — Adres uzayı 64 yuvadır ve yuva bir alt ağı temsil eder. Hizalı planda her blok 16, her yaprak 4 yuva alır; yaprak başına k yuva kullanılır, kalanı büyüme payıdır.
  • TP29 — Satır sayısı, bir düğümün tablosunu kaplayan en az sayıda hizalı önek olarak sayılır. Boş yuva bir öneğin içine düşebilir; başka yöne giden bir yuva düşemez.
  • TP30 — Kâhin topolojiyi biz kurduğumuz için bilinir ve her düğüm için her yaprağa giden en kısa yolun ilk adımıdır. Paket en uzun önek eşlemeyle yürütülür.
  • TP31 — Ad bölgesi sayısı, adlar plandaki sırayla dizildiğinde blok değiştirmeden sayılabilen en az aralık sayısıdır. Ad çözümlemenin kendisi Alan Adı Sistemi dersinin konusudur ve burada tekrarlanmaz.
  • TP32 — Kırk paketlik kümede ölçülebilen en küçük fark 1/40 = 0,025’tir.

Ölçüm

"""Adres ve ad plani: planin tablo satir sayisina etkisi.

Bolum 1 - hizali plan ile buyume sirasina gore plan, yaprak basina 1-4 alt ag.
Bolum 2 - ozetin sahip olmadigi adresi duyurmasi.
"""
TOHUM = 20260810
YUVA = 64
YAPRAK = [f"y{i}" for i in range(1, 10)]
BLOK = {0: YAPRAK[0:3], 1: YAPRAK[3:6], 2: YAPRAK[6:9]}
DAGITIM = {"d1": 0, "d2": 0, "d3": 1, "d4": 1, "d5": 2, "d6": 2}
DUGUMLER = YAPRAK + sorted(DAGITIM) + ["c1", "c2"]
BAGLAR = ([(y, d) for d, b in DAGITIM.items() for y in BLOK[b]]
          + [(d, c) for d in sorted(DAGITIM) for c in ("c1", "c2")]
          + [("c1", "c2")])


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

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


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


def kahin():
    """Her dugum icin her hedefe giden en kisa yolun ilk adimi."""
    k, tablo = komsuluk(), {}
    for kaynak in DUGUMLER:
        onceki, sira = {}, [kaynak]
        while sira:
            yeni = []
            for u in sira:
                for v in sorted(k[u]):
                    if v != kaynak and v not in onceki:
                        onceki[v] = u
                        yeni.append(v)
            sira = yeni
        for h in onceki:
            adim = h
            while onceki[adim] != kaynak:
                adim = onceki[adim]
            tablo[(kaynak, h)] = adim
    return tablo


def hizali(k):
    """Her blok 16, her yaprak 4 yuva; k tanesi dolu, kalani buyume payi."""
    return {16 * b + 4 * j + i: y for b, yapraklar in BLOK.items()
            for j, y in enumerate(yapraklar) for i in range(k)}


def buyume_sirasi(k):
    """Alt aglar yaratilma sirasina gore tek havuzdan verilir."""
    return {n: YAPRAK[n % 9] for n in range(9 * k)}


def onekler(u, plan, bas=0, boy=YUVA):
    """u dugumunun tablosunu kaplayan en az sayida hizali onek."""
    ic = {("yerel" if y == u else T[(u, y)])
          for yuva, y in plan.items() if bas <= yuva < bas + boy}
    if len(ic) < 2:
        return [(bas, boy, ic.pop())] if ic else []
    return (onekler(u, plan, bas, boy // 2)
            + onekler(u, plan, bas + boy // 2, boy // 2))


def ilet(kaynak, yuva, onek, komsu, gercek):
    """En uzun onek eslemeyle yurutur; varis gercek eve bakilarak sinanir."""
    u, atlama = kaynak, 0
    while atlama < 12:
        aday = [o for o in onek[u] if o[0] <= yuva < o[0] + o[1]]
        if not aday:
            return "kara delik"
        v = min(aday, key=lambda o: o[1])[2]
        if v == "yerel":
            return "ulasti" if gercek.get(yuva) == u else "kara delik"
        if v not in komsu[u]:
            return "kara delik"
        u, atlama = v, atlama + 1
    return "dongu"


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


def bolge(plan):
    """Ad dizisinde blok degistirmeden sayilabilen en az bolge sayisi."""
    onceki, say = None, 0
    for _, y in sorted(plan.items()):
        b = next(i for i, ys in BLOK.items() if y in ys)
        if b != onceki:
            say, onceki = say + 1, b
    return say


def olc(plan, hedef=None, gercek=None):
    """Satirlar plandan, hedefler adres planindan, varis gercek evden."""
    hedef, gercek = hedef or plan, gercek or plan
    komsu = komsuluk()
    onek = {u: onekler(u, plan) for u in DUGUMLER}
    ilk, sayim = {}, {"ulasti": 0, "dongu": 0, "kara delik": 0}
    for yuva, y in sorted(hedef.items()):
        ilk.setdefault(y, yuva)
    for x, y in ciftler():
        sayim[ilet(x, ilk[y], onek, komsu, gercek)] += 1
    return sum(len(o) for o in onek.values()), len(onek["c1"]), sayim


T = kahin()
print(f"{'plan':<14s} {'yaprak başına':>13s} {'alt ağ':>6s} "
      f"{'toplam satır':>12s} {'c1':>3s} {'ad bölgesi':>10s} {'ulaştı':>6s}")
for ad, kur in (("hizalı", hizali), ("büyüme sırası", buyume_sirasi)):
    for k in (1, 2, 3, 4):
        plan = kur(k)
        satir, c1, s = olc(plan)
        print(f"{ad:<14s} {k:13d} {len(plan):6d} {satir:12d} {c1:3d} "
              f"{bolge(plan):10d} {s['ulasti']:6d}")

print()
ev = hizali(4)
tasinan = {yuva: ("y1" if y == "y9" else y) for yuva, y in ev.items()}
print(f"{'durum':<32s} {'toplam satır':>12s} {'c1':>3s} {'ulaştı':>6s} "
      f"{'kara delik':>10s}")
for ad, plan, ger in (("plan yerinde", ev, None),
                      ("taşındı, özet güncellenmedi", ev, tasinan),
                      ("taşındı, ayrı satır eklendi", tasinan, tasinan)):
    satir, c1, s = olc(plan, ev, ger)
    print(f"{ad:<32s} {satir:12d} {c1:3d} {s['ulasti']:6d} "
          f"{s['kara delik']:10d}")
plan           yaprak başına alt ağ toplam satır  c1 ad bölgesi ulaştı
hizalı                     1      9           73   3          3     40
hizalı                     2     18           73   3          3     40
hizalı                     3     27           73   3          3     40
hizalı                     4     36           73   3          3     40
büyüme sırası              1      9           90   6          3     40
büyüme sırası              2     18          171  12          6     40
büyüme sırası              3     27          249  17          9     40
büyüme sırası              4     36          335  24         12     40

durum                            toplam satır  c1 ulaştı kara delik
plan yerinde                               73   3     40          0
taşındı, özet güncellenmedi                73   3     38          2
taşındı, ayrı satır eklendi                76   4     40          0

Satır Sayısı Alt Ağ Sayısından Bağımsız Olabilir

Üst tablonun ilk dört satırı dersin tamamıdır. Hizalı planda alt ağ sayısı 9’dan 36’ya çıkarken toplam tablo satırı 73’te kalıyor. Dört katına çıkan bir ağ, tablosuna tek bir satır eklemiyor. Çekirdeğin tablosu 3 satırda duruyor: blok başına bir önek.

Alt dört satır aynı topolojiyi büyüme sırasına göre dağıtılmış adreslerle gösteriyor. Toplam satır 90, 171, 249, 335 diye tırmanıyor — alt ağ sayısıyla doğrusal. Otuz altı alt ağda fark 73’e karşı 335, yani 4,6 kat. Çekirdeğin tablosu 3 yerine 24 satır tutuyor.

Aradaki farkın kaynağı tek bir koşuldur. Hizalı planda bir bloğun bütün adresleri aynı bir sonraki düğümden ulaşılır, bu yüzden tek önek hepsini kaplar. Büyüme sırasına göre dağıtılan planda ardışık iki adres ayrı bloklara düşer; kaplanabilecek hiçbir aralık kalmaz ve tablo adres başına bir satıra iner.

ad bölgesi sütunu aynı hesabı adlarda tekrarlıyor. Hizalı planda adlar plandaki sırayla dizildiğinde 3 aralık çıkıyor — blok başına bir bölge. Büyüme sırasına göre dizilen adlarda sayı 3, 6, 9, 12 diye büyüyor. Ad planı ayrı bir tasarım değildir; adres planının aynı sorusudur ve aynı hesapla ölçülür.

Bir şey değişmiyor: ulaştı sütunu sekiz satırın sekizinde de 40. Plan paketi kaybettirmez, yalnız tabloyu büyütür. Planın bedeli gecikmede değil, taşınan durumdadır.

Özetin Sahip Olmadığı Adres

Alt tablo özetin tek zayıf noktasını ölçüyor. y9’a bağlı ağlar başka bir yaprağa taşınmış ve adresleri değişmemişse tablolar hiç değişmez — toplam satır yine 73, çekirdek yine 3. Ama kırk paketin 2’si kara deliğe düşer.

Sebep şudur: çekirdeğin 32-47 -> d5 satırı artık sahip olmadığı bir adresi duyuruyor. Özet, kapsadığı her adresin o yönde olduğunu söyler; taşınan ağ o yönde değildir. Özet yanlış değil, fazla kapsayıcıdır — ve fazla kapsayan bir doğru, bir yanlıştır.

Onarım son satırdadır. Taşınan ağ için ayrı ve daha dar bir satır eklenirse kırk paketin kırkı ulaşır; bedeli toplam 73’ten 76’ya, çekirdekte 3’ten 4’e çıkan satırdır. Üç satır küçük görünür, ama kural bellidir: her istisna bir satırdır ve istisnalar birikir. Plan, tabloyu büyümekten koruyan tek şeydir; korumayı sürdürmenin yolu ise taşınan ağı yeniden numaralandırmaktır.

Özet

  • Yol özetlemenin tek koşulu, özetlenen aralıktaki bütün adreslerin aynı bir sonraki düğümden ulaşılabilir olmasıdır; plan bu koşulu ya sağlar ya sağlamaz.
  • Hizalı planda alt ağ sayısı 9’dan 36’ya çıkarken toplam satır 73’te, çekirdeğin tablosu 3’te kalır.
  • Büyüme sırasına göre dağıtılan planda aynı topoloji 90, 171, 249, 335 satır tutar; otuz altı alt ağda fark 4,6 kattır.
  • Ad planı ayrı bir tasarım değildir: ad bölgesi sayısı hizalı planda 3’te kalır, büyüme sırasına göre dizilen adlarda 3’ten 12’ye çıkar.
  • Taşınan tek bir ağ özeti sahip olmadığı adresi duyurur hâle getirir ve 2 paket kara deliğe düşer; ayrı satır eklemek onarır ama satırı 73’ten 76’ya çıkarır.

Kurs Kapanışı

Kurs tek bir soruyla açıldı: karar iletide yazandan değil cihazın kendi tablosundan okunuyorsa, ve o tablo paylaşılan bir gerçeğin kopyasıysa, kopyalar anlaşmadığı sürede pakete ne olur? On yedi ders bu soruyu on yedi ayrı anlaşmazlıkla sordu ve hepsinde aynı üç kaderi saydı.

ders ölçülen anlaşmazlık ulaşan döngü ya da kara delik
Yineleyici, Hub ve Anahtar tablonun hiç olmaması 40 çerçeve, 280 teslim yok; 240 gereksiz kopya, 34 çakışma
Eşleştirme Tabloları girdinin yaşı 110 teslim, ömür kısalınca 278 3 kara delik, ömür kısalınca 0
Sanal Yerel Ağlar bölütün sınırı ile tablonun kapsamı taşırma teslimi 280, 51, 8 kara delik 0, 23, 29, 32
Kapsayan Ağaç Protokolü ağaç yenilendi, tablolar eski ağaçta 40/40, 106 ve 129 adım 19 ve 20 kara delik; iki anahtar tazeleyince 10 döngü
Bağlantı Toplama bacak eşlemesi ile bacağın durumu 8 akış bölünmeden dağıtılır beş çerçevelik pencerede 2 kara delik
Yönlendirme Kararı kopyanın yaşı ve okuma kuralı yakınsamış 40/40, 83 ve 99 adım kopma anında 14 kara delik
Statik ve Dinamik Yönlendirme statik tablo kopmayı hiç duymaz dinamikte iki turda 40 statikte 14 kara delik altı tur sabit; iki düğüm duyunca 6 döngü
Uzaklık Vektörü Protokolleri komşunun kararının yaşı 0, 9, 20, 32, 40 — dört tur erişilemez hedefte 60 paketin altmışı döngü; geri bildirmeme 5’e indirir
Bağlantı Durumu Protokolleri veritabanının eksik girdisi 9, 20, 32, 40 — üç tur döngü yok; yanlış tablo yalnız eksik girdiden
Sınır Ağ Geçidi Protokolü politika ile en kısa yol transit yasağında 40/40, 92 adım duyuru kapanınca 14 kara delik; sızıntıda 7 paket sözleşme dışı
Yönlendirme Örnekleri aynı hedefin iki örnekteki iki kararı üç örnekte 40/40, 83, 99, 91 adım tek tabloya indirgenince 14 kara delik
MPLS ve Etiket Anahtarlama etiket yolu ile alttaki bağın durumu 40 tam bakış ve 43 etiket bakışı kiriş kopup yol yenilenmeyince 14 kara delik
Kaplama Ağları kaplamanın tablosu ile alt ağ düzeninin tablosu iki katman yakınsamışken 40/40, kaplama 74 adım alt ağ düzeni eskiyken 21 tünel kara deliği; tünel kalkıp iki uç duyunca 12 kaplama döngüsü
Katmanlı Tasarım soğuk başlangıç ve en yoğun bağın kopması üç tasarımda 40/40; 121, 80, 138 adım düz zincirde 21 kalıcı kara delik
Omurga–Yaprak Tasarımı bir yaprak–omurga bağının kaybı 40/40, 80 adım, her yol 2 adım tek omurgada 14 kalıcı kara delik, ikiden itibaren 0
Yedeklilik ve Devralma sanal adresin kimde olduğu devretme varken 40/40 kimse duymayınca 40 kara delik; ikisi de eşini etkin sanınca 40 döngü
Adres ve Ad Planlaması özetin kapsadığı ile sahip olduğu 73 satırla 40/40 taşınan ağda 2 kara delik

Tablo üç şeyi tekrar tekrar söylüyor. Kısmî bilgi, hiç bilgiden pahalı bir arıza üretir: kimsenin duymadığı kopma kara delik verir ve arıza bellidir; birkaç düğümün duyduğu kopma döngü verir ve tıkanıklık gibi görünür. Hiçbir cihaz tek başına bir paketi döngüye sokamaz: döngü en az iki tablonun anlaşmazlığıdır ve tablosu doğru olan bir düğümden çıkan paket de ölebilir. Ve yakınsama bir hız değil bir tur sayısıdır: kaç turda bittiği, bilginin ne kadar uzaktan taşındığına bağlıdır.

Bütün bu ölçümlerin ortak bir sessiz kabulü vardı. Bir bağ ya vardır ya yoktur; komşu ya duyar ya duymaz; çerçeve ya iletilir ya iletilmez. İki cihaz arasında bir kablo varsa o kablonun taşıdığı şey karşı tarafa ulaşır — kurs boyunca kopma dışında bunun tersi hiç düşünülmedi. Sonraki kurs bu kabulü kaldırır: kablosuz bir bağda iletilen çerçevenin varması bir kesinlik değil bir olasılıktır, ortam paylaşılır ve dinleyenin kim olduğu bilinmez. Kablolu bağın verili saydığı her şey orada yeniden sorulacak.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat