Ders 10 / 17
Sınır Ağ Geçidi Protokolü
Otonom sistem sınırında karar en kısa yola değil politikaya bakar: transit yasağı kırk paketin kırkını da hedefine ulaştırır ama toplam adımı 83'ten 92'ye çıkarır, sınır duyurusu kapandığında 14 paket kara deliğe düşer, tek bir düğümün yol sızıntısı ise adımı 83'e geri indirip 7 paketi sözleşme dışı yoldan geçirir.
İçindekiler
Önceki iki ders iki yönlendirme ailesini yan yana koydu. Uzaklık vektörü komşusunun uzaklık dizisini öğreniyordu, bağlantı durumu topolojinin kendisini taşıyordu; turları farklıydı, ama ikisi de aynı şeyi arıyordu ve sonunda aynı tabloya varıyordu: her hedefe giden en kısa yolun ilk adımı.
Bu dersin sorusu tam buradan başlar. Ya en kısa yol istenmiyorsa? Bir ağ, komşusunun trafiğini taşımak zorunda değildir; taşıdığında bunun bir bedeli ve bir sözleşmesi vardır. Sınır ağ geçidi protokolünün ölçüsü bu yüzden en kısa yol değil izin verilen yoldur ve izin verilen yol çoğu zaman daha uzundur.
Sınır Bir Karar Sınırıdır
Otonom sistem kavramı İnternet Nasıl Çalışır kursunda kuruldu; tanımı burada tekrarlanmaz. Burada önemli olan şu ayrımdır: bir otonom sistemin içinde tablo bir ölçüye göre kurulur — adım sayısı, bağ maliyeti, gecikme. Sınırın ötesinde ölçünün yerini sözleşme alır.
Sınırdan geçen şey bir uzaklık değil bir duyurudur. Duyuru üç şey söyler: hangi hedefe gidildiği, o hedefe hangi otonom sistemler üzerinden gidildiği, ve bir sonraki düğümün kim olduğu. Komşu bu duyuruyu kabul edebilir, değiştirebilir ya da atabilir. Kabul ederse kendi tablosuna bir satır yazar; atarsa o hedefe giden bir yolu hiç öğrenmemiş olur.
Ve duyuruyu doğrulayan hiçbir şey yoktur. Uygulama Katmanı Protokolleri kursu bunu iletide yazan için söylemişti; sınırda aynı boşluk duyuru için geçerlidir. Komşu ne bildirirse tablo onu yazar.
Duyurunun yolu taşıması iki işi birden görür. Birincisi politikadır: alan taraf yolun ara konumuna bakarak duyuruyu kabul eder ya da atar; bu dersin ölçtüğü şey budur. İkincisi döngü saptamasıdır ve kursun üçüncü iddiasıyla doğrudan ilgilidir. Kurs boyunca döngü en az iki tablonun anlaşmazlığı olarak sayıldı; hiçbir cihaz tek başına bir paketi döngüye sokamıyordu, çünkü hiçbir cihaz kendi tablosundan öteye bakamıyordu. Sınırda durum değişir: duyuru yolun kendisini taşıdığı için bir otonom sistem, gelen duyurunun yolunda kendi adını görebilir. Gördüğü an duyuruyu atar. Döngünün tek bir tabloya bakılarak saptanabildiği yer burasıdır ve içeride karşılığı yoktur — uzaklık vektörü ailesinin sonsuza sayma kusuru tam olarak bu bilginin eksikliğinden doğar.
Kurgu: Üç Otonom Sistem
Kursun sekiz düğümlü ağı üç otonom sisteme bölünür. Bölünme fiziksel bağları değiştirmez; yalnızca hangi bağın sınır bağı olduğunu belirler.
# ogretilen dokum, calistirilmamistir otonom sistem düğümler iç bağlar sınır bağları kuzey a b c d a-b b-c c-d d-e (orta), b-f (orta), h-a (güney) orta e f e-f d-e (kuzey), b-f (kuzey), f-g (güney) güney g h g-h f-g (orta), h-a (kuzey) güney -> kuzey duyurusu kuzey -> güney duyurusu hedef g hedef c yol güney yol kuzey bir sonraki düğüm h bir sonraki düğüm a orta -> kuzey duyurusu (güney'den öğrenilmiş, transit yasağıyla iletilmez) hedef g yol orta güney bir sonraki düğüm f
Üçüncü duyuru dersin çekirdeğidir. Orta otonom sistemi güney’e giden bir yolu biliyor ve kuzey’e duyurabilir. Duyurursa kuzey ile güney arasındaki trafiği taşımayı üstlenmiş olur. Taşımayacaksa duyuruyu iletmez ve kuzey o yolu hiç öğrenmez.
İzin Verilen Yol
Bir yolun otonom sistem dizisi, düğüm dizisinin otonom sistemlere çevrilip yinelemelerin
sıkıştırılmış hâlidir. g-f-b-c yolunun dizisi güney orta kuzey, g-h-a-b-c yolununki
güney kuzey’dir.
Kural tek satırdır: bir otonom sistem transit taşımayacağını bildirdiğinde, dizinin ara konumunda onun bulunduğu her yol elenir. Baştaki ve sondaki otonom sistem ara konumda sayılmaz — kendi trafiğini taşımak transit değildir.
Sonuç g’den c’ye giden pakette görünür. En kısa yol g-f-b-c, üç adımdır ve ortadan
geçer. Orta transit taşımıyorsa bu yol elenir; geriye kalan en kısa izin verilen yol
g-h-a-b-c, dört adımdır. Yol bir adım uzadı, paket yine ulaştı. Ölçülen şey budur.
Ölçümün varsayımları:
- YL61 — Sekiz düğüm, dokuz bağ: yedisi
a–b–c–d–e–f–g–h–ahalkasını kurar, sekizincisi halkayı kesenb–fkirişidir. Topoloji kurs boyunca aynıdır. - YL62 — Düğümler üç otonom sisteme bölünür: kuzey
a b c d, ortae f, güneyg h. Otonom sistemler numarayla değil kurgu adlarla anılır. - YL63 — Politika tek kuraldan ibarettir: transit yasağı. Kaynağın ve hedefin kendi otonom sistemi ara konumda sayılmaz.
- YL64 — Kâhin değişmez; gerçek her zaman en kısa yolun ilk adımıdır. Politika tablosu ayrı bir tablodur ve ölçülen şey ikisinin farkıdır.
- YL65 — Kırk kaynak–hedef çifti kurs çekirdeğinin üretecinden gelir. Aynı çift birden çok kez çıkabilir ve her çıkışı ayrı bir pakettir. Atlama sınırı 12.
- YL66 — Sızıntı tek bir düğümün yasağı tutmamasıdır:
f, orta otonom sisteminin transit taşımama sözüne karşın duyuruyu iletir. Öteki orta düğümüesözü tutar. - YL67 — Kırk paketlik kümede ölçülebilen en küçük fark
1/40 = 0,025’tir; bundan küçük bir fark iddia edilmez.
Ölçüm
"""Politika tabanli yonlendirme: en kisa yol degil izin verilen yol.""" TOHUM = 20260810 DUGUMLER = "abcdefgh" BAGLAR = [("a", "b"), ("b", "c"), ("c", "d"), ("d", "e"), ("e", "f"), ("f", "g"), ("g", "h"), ("h", "a"), ("b", "f")] OS = {"a": "kuzey", "b": "kuzey", "c": "kuzey", "d": "kuzey", "e": "orta", "f": "orta", "g": "guney", "h": "guney"} ATLAMA_SINIRI = 12 def uretec(tohum): d = tohum % 2147483646 + 1 def r(n): nonlocal d d = (d * 48271) % 2147483647 return d % n return r def ciftler(sayi=40): r, liste = uretec(TOHUM), [] while len(liste) < sayi: x, y = DUGUMLER[r(8)], DUGUMLER[r(8)] if x != y: liste.append((x, y)) return liste 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 tablo(tasimayan=(), kapali=(), sizdiran=()): """Her dugum icin her hedefe giden en kisa IZIN VERILEN yolun ilk adimi.""" kom, t = komsuluk(BAGLAR), {} for u in DUGUMLER: for h in DUGUMLER: if u == h: continue yasak = {v for v in DUGUMLER if OS[v] in tasimayan and OS[v] not in (OS[u], OS[h]) and v not in sizdiran} onceki, sira, gorulen = {}, [u], {u} while sira: yeni = [] for x in sira: for v in sorted(kom[x]): if tuple(sorted((x, v))) in kapali or v in gorulen: continue if v in yasak and v != h: continue gorulen.add(v) onceki[v] = x yeni.append(v) sira = yeni if h not in onceki: continue adim = h while onceki[adim] != u: adim = onceki[adim] t[(u, h)] = adim return t def ilet(kaynak, hedef, t): kom, u, yol, gecilen = komsuluk(BAGLAR), kaynak, [kaynak], [] while u != hedef: if len(yol) > ATLAMA_SINIRI: return "dongu", yol s = t.get((u, hedef)) if s is None or s not in kom[u]: return "kara delik", yol if (u, s) in gecilen: return "dongu", yol gecilen.append((u, s)) u = s yol.append(u) return "ulasti", yol def olc(t, tasimayan): sayim, adim, disi = {"ulasti": 0, "dongu": 0, "kara delik": 0}, 0, 0 for x, y in ciftler(): kader, yol = ilet(x, y, t) sayim[kader] += 1 adim += len(yol) - 1 if {OS[v] for v in yol[1:-1]} & (set(tasimayan) - {OS[x], OS[y]}): disi += 1 return sayim, adim, disi REJIM = (("politikasız", (), (), ()), ("orta taşımaz", ("orta",), (), ()), ("orta taşımaz, sınır kapalı", ("orta",), (("a", "h"),), ()), ("orta taşımaz, f sızdırıyor", ("orta",), (), ("f",))) print(f"{'rejim':<28s} {'satır':>5s} {'ulaştı':>7s} {'döngü':>6s} " f"{'kara delik':>11s} {'adım':>5s} {'politika dışı':>14s}") for ad, tas, kap, siz in REJIM: t = tablo(tas, kap, siz) s, a, d = olc(t, tas) print(f"{ad:<28s} {len(t):5d} {s['ulasti']:7d} {s['dongu']:6d} " f"{s['kara delik']:11d} {a:5d} {d:14d}") temel, dar, sizan = tablo(), tablo(("orta",)), tablo(("orta",), (), ("f",)) print() print(f"56 satırın politikayla ayrışanı " f"{sum(1 for k in temel if temel[k] != dar.get(k))}, " f"sızıntıyla ayrışanı {sum(1 for k in temel if temel[k] != sizan.get(k))}") print(f"{'çift':>7s} {'paket':>6s} {'politikasız':>12s} {'politikalı':>11s}" f" {'sızıntıda':>10s}") for x, y in sorted(set(ciftler())): y0, y1, y2 = (''.join(ilet(x, y, t)[1]) for t in (temel, dar, sizan)) if y0 == y1 == y2: continue n = sum(1 for c in ciftler() if c == (x, y)) print(f"{x+'->'+y:>7s} {n:6d} {y0:>12s} {y1:>11s} {y2:>10s}")
rejim satır ulaştı döngü kara delik adım politika dışı politikasız 56 40 0 0 83 0 orta taşımaz 56 40 0 0 92 0 orta taşımaz, sınır kapalı 40 26 0 14 48 0 orta taşımaz, f sızdırıyor 56 40 0 0 83 7 56 satırın politikayla ayrışanı 5, sızıntıyla ayrışanı 1 çift paket politikasız politikalı sızıntıda b->g 2 bfg bahg bfg g->b 1 gfb ghab gfb g->c 2 gfbc ghabc gfbc g->d 2 gfed ghabcd gfed
Uzayan Yol Bir Kusur Değildir
İkinci satır dersin ana ölçüsüdür. Transit yasağı yürürlüğe girdiğinde tablo yine 56 satırdır, kırk paketin kırkı da ulaşır, döngü 0, kara delik 0. Değişen tek şey toplam adımdır: 83’ten 92’ye, dokuz adım.
Alt tablo dokuz adımın nereden geldiğini gösteriyor. Elli altı satırın yalnız 5’i
ayrışıyor ve ölçülen kırk pakette bu ayrışma dört çifte, toplam yedi pakete
dokunuyor. g->d yolu üç adımdan beşe çıkıyor, g->c üçten dörde, b->g ve g->b ikiden
üçe. Öteki otuz üç paket politikayı hiç görmüyor, çünkü yolları zaten ara konumda ortadan
geçmiyordu.
Bu ders kursun ölçü ekseniyle birlikte okunmalıdır. Ekseni belirleyen şey paketin
kaderidir: ulaştı, döngü, kara delik. Politika bu üç sayının hiçbirini değiştirmedi.
Kırk paketlik kümede ölçülebilen en küçük fark 0,025’tir ve buradaki kader farkı tam
olarak sıfırdır. Adım, kaderin değil bedelin ölçüsüdür.
Bunun tersini söylemek de doğrudur: en kısa yol bir hedef değildir. Kiriş üzerinden geçen yol iki adım kısaydı, ama o kirişin iki ucu iki ayrı otonom sisteme aitti ve aradaki trafiği taşımanın bir bedeli vardı. Dokuz adım, o bedeli ödememenin karşılığıdır.
Politika Fazla Dar Kurulursa
Üçüncü satır ayrımı keskinleştiriyor. Bu rejimde transit yasağı duruyor ve buna ek olarak
kuzey ile güney arasındaki h–a sınır bağı duyurulmuyor — iki komşu birbirine hiçbir
hedef bildirmiyor.
Tablo 56 satırdan 40 satıra iniyor. Eksik kalan on altı satır için izin verilen yol
yoktur: kuzey’den güney’e giden her yol ya ortadan geçer (yasak) ya da h–a’dan geçer
(duyurulmuyor). Ölçümde bu 14 kara delik olarak görünüyor; kırk paketten yalnız 26’sı
ulaşıyor.
Adım sayısının 92’den 48’e inmesi bir iyileşme değildir. Ölen paket adım harcamayı bırakır; düşük adım burada tam olarak kaybın göstergesidir. Aynı sayının iki rejimde iki ayrı şey söylemesi, tek bir sayaca bakmanın neden yetmediğinin de yanıtıdır.
Ayrım şudur: yolu uzatan politika bir kusur değildir; hedefi ulaşılamaz kılan politika kusurdur. İkisi de aynı dille yazılır, ikisinin de sözdizimi doğrudur, ikisi de hatasız yürürlüğe girer. Farkı yalnız ölçüm gösterir.
Yol Sızıntısı ve Daraltmalar
Dördüncü satır bir yapılandırma kusurunu ölçüyor. Yol sızıntısı, bir otonom sistemin
bir komşusundan öğrendiği duyuruyu, sözleşmesi gereği iletmemesi gerekirken başka bir
komşusuna iletmesidir. Burada f düğümü orta otonom sisteminin transit yasağını tutmuyor;
e tutuyor. Yasağı bozan tek bir düğümdür.
Sonuç şaşırtıcı biçimde temiz görünüyor: 56 satır, 40 ulaştı, 0 döngü, 0 kara delik.
Toplam adım 92’den 83’e iniyor. Elli altı satırın yalnız 1’i politikasız tablodan
ayrılıyor — yani sızıntı, tabloyu bir satır kala politikasız hâline geri döndürüyor.
Ve 7 paket ara konumda ortadan geçiyor: alt tablonun sağ sütunu bu yolları veriyor,
bfg, gfb, gfbc, gfed.
Bu bir saldırı değil bir yapılandırma kusurudur: kural yazılmış, sözdizimi doğru, oturum ayakta, hiçbir alarm çalmıyor. Saldırı tarafı Ağ Güvenliği kursunun konusudur ve buraya taşınmaz. Sayılan yüzeyler ve her birini kapatan daraltma şunlardır.
Birinci yüzey — sözleşme dışı taşınan trafik. Yedi paket, taşınmayacağı bildirilmiş bir otonom sistemden geçiyor. Daraltma: bir komşudan öğrenilen duyurunun başka bir komşuya iletilmesi, komşu başına yazılmış bir önek süzgeciyle sınırlanır; süzgeçte olmayan önek duyurulmaz. İkinci daraltma, komşu başına duyuru sayısı üst sınırıdır — sızıntı çoğu kez duyuru sayısında ani bir artışla gelir ve sınır aşıldığında oturum kendiliğinden kapanır.
İkinci yüzey — sızıntının iyileşme gibi görünmesi. Adım 92’den 83’e indi, kaybolan paket
yok, tablo satırı 56’da kaldı. Gecikmeye bakan bir sayaç iyileşme bildirir. Daraltma:
izlenen şey adım değil otonom sistem dizisi olmalıdır; g->c yolunun dizisi
güney kuzey beklenirken güney orta kuzey çıkıyor. Bu fark tabloda görünür, sayaçta
görünmez.
Üçüncü yüzey — duyurunun doğrulanmaması. Duyuru “şu hedefe benden gidilir” der ve bunu doğrulayan bir şey yoktur. Daraltma: önekin sahibi ile duyurmaya yetkili otonom sistemi eşleştiren imzalı bir kayıt düzeni ve duyuruyu bu kayda karşı sınayan süzgeç. İkinci daraltma, kendi otonom sistemini yolunda taşıyan duyuruların reddedilmesidir — geri dönen duyuru bir döngü belirtisidir.
Dördüncü yüzey — fazla dar politika. Üçüncü rejimin 14 kara deliği bir yapılandırma kusurudur ve sızıntının tersidir. Daraltma: politika değişikliği yürürlüğe alınmadan önce her hedef için izin verilen yol sayısının sayılması; sayı sıfıra düşen hedef varsa değişiklik yayına alınmaz.
Özet
- Otonom sistem sınırında karar ölçüden politikaya geçer; sınırdan geçen şey uzaklık değil duyurudur ve duyuruyu doğrulayan hiçbir şey yoktur.
- Bir yol, otonom sistem dizisinin ara konumunda transit taşımayan bir otonom sistem bulunduğunda elenir; kaynağın ve hedefin kendi otonom sistemi ara konumda sayılmaz.
- Transit yasağı kırk paketin kırkını da ulaştırır ve toplam adımı 83’ten 92’ye çıkarır; 56 satırın 5’i ayrışır, ayrışma dört çifte ve yedi pakete dokunur. Uzayan yol bir kusur değildir.
- Sınır duyurusu kapandığında tablo 40 satıra iner ve 14 paket kara deliğe düşer; adımın 48’e inmesi kayıp göstergesidir, iyileşme değil.
- Tek bir düğümün yol sızıntısı tabloyu politikasız hâline bir satır kala geri döndürür: adım 83’e iner, 7 paket sözleşme dışı yoldan geçer ve hiçbir sayaç bunu bildirmez.
Sonraki Adım
Bu derste politika tek bir tablonun içinde uygulandı: her düğümün bir tablosu vardı ve bir hedefin o tabloda tek bir satırı. Politika, o satırın hangi bir sonraki düğümü göstereceğini değiştirdi. Peki aynı cihazın birden çok tablosu olsaydı? Sonraki ders aynı adresin aynı cihazda iki ayrı karara gitmesini ölçer: tablo ayrıştırıldığında hangi paket hangi tabloya düşer, ayrı tablolar aynı bağları paylaştığında ne olur, ve örnek sayısı tutulan satır sayısını nasıl büyütür.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.