İçeriğe geç
academia.sh

Ders 01 / 17

Yineleyici, Hub ve Anahtar

Üç cihaz sınıfı aynı kırk çerçevede ölçülür: yineleyici ve hub tek çarpışma alanı kurup 280 teslim ve 34 çakışma üretir, tablosuz anahtar çakışmayı sıfırlar ama 240 gereksiz kopyayı sürdürür, tablolu anahtar teslimi 40'a indirir.

İçindekiler

Önceki kurs bir aracının iletiden ne okuyabildiğini saydı. Orada karar iletide yazana bakılarak alınıyordu: yöntem alanı bir şey söylüyordu, durum kodu bir şey söylüyordu, ve aracı yalnız bunları okuyarak yürüyordu. İleti kapandığında aracı kör kalıyordu.

Bir anahtarın kararı böyle alınmaz. Çerçeveyi alan cihaz onu kendi tablosuna bakarak çıkışa verir; çerçevede yazan hedef adresi yalnız tabloya sorulan sorudur, yanıtın kendisi değil. Yanıt cihazın belleğindedir. Ve o bellekteki şey, paylaşılan bir gerçeğin kopyasıdır — kopya eskiyebilir, eksik olabilir, komşusununkiyle çelişebilir. Bu kursun tek konusu budur. Bu dersin sorusu ise daha önce gelir: karar veren bir cihaz ile karar vermeyen bir cihaz aynı trafikte nasıl ayrışır?

Karar Nereden Okunur

Kurs boyunca ölçülen şey tek bir düzenektir. Bir tablo vardır; tablo bir hedefi bir çıkışa eşler. Cihaz gelen çerçeveyi ya da paketi alır, hedefini tabloda arar ve bulduğu çıkışa verir. Tablonun kendisi cihazın icadı değildir: ağın gerçek biçiminden türer, ama o gerçeğin yerel bir kopyası olarak tutulur.

Kopyanın gerçekle uyuşup uyuşmadığını ölçebilmek için gerçeği ayrıca yazmak gerekir. Kurs boyunca buna kâhin denir: topolojiyi biz kurduğumuz için her hedefin nerede olduğu bilinir. Kâhin bir cihazın elindeki bilgi değildir; ölçümün elindeki cetveldir.

Kopya gerçeğe uymadığında paketin başına üç şeyden biri gelir ve kurs bu üç adı sonuna kadar kullanır. Ulaştı: paket hedefine vardı. Döngü: paket aynı bağdan ikinci kez geçti ya da atlama sınırını yaktı; ölmedi, dolaşıyor. Kara delik: çıkış tabloda yok ya da artık gerçek bir çıkış değil; paket orada bitti. Bu derste ölçülen tek kader ulaştı’dır, çünkü tek bir cihazın tablosu kendi başına bir döngü kuramaz. Döngü en az iki tablonun anlaşmazlığıdır ve iki tablo bu konunun sonraki derslerinde ortaya çıkar.

Üç Cihaz Sınıfı

Aynı yerel ağda duran üç cihaz sınıfı, kararı üç ayrı yerden okur.

Yineleyici (repeater) hiçbir yerden okumaz. İki bölütü birleştirir ve bir yandan gelen sinyali tazeleyip öbür yana basar. Çerçeveyi çözmez, adrese bakmaz, tablo tutmaz. Yaptığı iş sinyalin zayıflamasını gidermektir; mesafe kazandırır, karar kazandırmaz.

Hub çok bacaklı bir yineleyicidir. Bir bacaktan gelen sinyali kalan bütün bacaklara basar. Bacak sayısı ikiden büyüktür, ama karar düzeneği aynıdır: yoktur.

Anahtar (switch) kararı bir tablodan okur. Tablo donanım adresini bir bacağa eşler; çerçevenin hedef adresi tabloda varsa çerçeve yalnız o bacağa çıkar. Tabloyu nasıl doldurduğu — gelen çerçevenin kaynak adresini geldiği bacakla birlikte yazması ve hedefi bilinmeyen çerçeveyi taşırması (flooding) — Ağ Modelleri kursundaki Ethernet ve MAC Adresleri dersinde kuruldu ve burada tekrarlanmaz. Burada tablo hazır kabul edilir; ölçülen şey tablonun varlığının ne kazandırdığıdır.

Ayrım katman ayrımıdır. Yineleyici ile hub sinyal düzeyinde çalışır: taşıdıkları şey bit dizisidir, çerçeve değil. Anahtar bağlantı katmanında çalışır: çerçeveyi bir birim olarak tanır, adres alanlarını okur ve bir karar verir. Bir cihazın hangi katmanda durduğu, ne kadar hızlı olduğunu değil, neye bakabildiğini söyler.

İletme Kipleri

Anahtarın kararı zaman içinde bir noktada verilir ve bu noktanın seçimi iki kip doğurur.

Depola ve ilet kipinde anahtar çerçevenin tamamını alır, denetim dizisini doğrular ve ancak sonra bacağa verir. Bozuk bir çerçeve çıkışa hiç konmaz; bedeli, çerçevenin uzunluğuyla orantılı bir bekleyiştir.

Kes ve ilet kipinde anahtar hedef adresini okur okumaz çıkışı seçer ve kalan baytları akarken geçirir. Bekleyiş adres alanı kadardır, çerçeve uzunluğundan bağımsızdır. Bedeli şudur: denetim dizisi çerçevenin sonundadır, yani karar verildiğinde henüz görülmemiştir. Bozuk bir çerçeve de iletilir ve hatayı ancak alıcı bulur.

Seçim bir doğru–yanlış seçimi değil, neyin sayıldığına bağlı bir dengedir: birinde gecikme, öbüründe boşa harcanan iletim. Bu dersin ölçümü kipten bağımsızdır ve her iki kipte de aynıdır, çünkü sayılan şey kararın ne zaman verildiği değil, verilip verilmediğidir.

İki Alan

İki kapsam ayrılır ve bu ayrım üç cihazı birbirinden ayıran ilk ölçüdür.

Çarpışma alanı (collision domain), aynı anda gönderim yapıldığında sinyallerin çakışabileceği cihaz kümesidir. Yineleyici ve hub tek bir ortak ortam kurar: sekiz istasyon tek bir çarpışma alanındadır. Anahtarın her bacağı ayrı bir çarpışma alanıdır; bir bacaktaki gönderim öbür bacaktaki gönderimle çakışmaz.

Yayın alanı (broadcast domain), bir yayın çerçevesinin ulaştığı cihaz kümesidir. Üç cihazın hiçbiri yayın alanını bölmez. Anahtar da bölmez: hedefi bir grup adresi olan çerçeve her bacağa çıkar. Yayın alanını bölen düzenek bu konunun ilerleyen derslerinin konusudur.

Çift Yönlü Bacak ve Tampon

Anahtarın her bacağının ayrı bir çarpışma alanı olması, o alanda çarpışma olabileceği anlamına gelir. Bacakta tek bir istasyon varsa ve bacak çift yönlü çalışıyorsa, gönderme ile alma ayrı yollarda yürür ve çakışacak iki gönderim hiç doğmaz. Anahtarın çakışmayı sıfırlaması bu yapıdan gelir: çarpışma alanı küçültülmemiş, boşaltılmıştır.

Bunun bir bedeli vardır ve ölçümdeki kuyruk sütunu onu sayar. Ortak ortamda iki gönderim aynı anda olamaz; anahtarda olabilir, çünkü giriş bacakları birbirinden bağımsızdır. İki giriş aynı çıkışı istediğinde anahtar birini tutmak zorundadır ve tuttuğu yer bir tampondur. Tampon dolarsa çerçeve atılır — kaybın yeri ortamdan cihaza taşınmıştır.

Aynı gerekçe bacak hızları eşit olmadığında da işler. Hızlı bir bacaktan gelip yavaş bir bacağa çıkacak çerçeve, aradaki farkı tamponda bekler. Ortak ortamda böyle bir fark tanımsızdı: herkes aynı hızda konuşurdu, çünkü herkes aynı teldeydi.

Ölçümün kurgusu şudur: sekiz istasyon, tek bir cihaza sekiz bacaktan bağlıdır. Kırk çerçeve gönderilir; her çerçevenin bir kaynağı, bir hedefi ve bir zaman dilimi vardır. Cihazın tablosu şu dökümdeki gibi okunur.

# ogretilen dokum, calistirilmamistir

eslestirme tablosu (anahtar)
  adres   bacak
  a       1
  b       2
  ...
  h       8

bir cercevenin izi
  kaynak a, hedef e
    hub        -> 2,3,4,5,6,7,8   (yedi kopya, altisi gereksiz)
    anahtar    -> 5               (tek kopya)
  hedef tabloda yoksa
    anahtar    -> 2,3,4,5,6,7,8   (tasirma; hub ile ayni)

Ölçümün Varsayımları

  • AC1 — Sekiz istasyon tek bir cihaza sekiz bacaktan bağlıdır ve her istasyon tek bir bacaktadır. Kâhin bu yerleşimi biz kurduğumuz için bilinir: hangi adresin hangi bacakta olduğunu ölçüm bilir, cihaz bilmeyebilir.
  • AC2 — Kırk çerçeve üretilir. Kaynak ile hedef bir üreteçten, zaman dilimi ayrı bir üreteçten çekilir; her üreteç tek bir modülüsle çağrılır. Kaynak ile hedefin aynı olduğu çekiliş atılır.
  • AC3 — Zaman dilimi sayısı yirmidir. Kırk çerçevenin yirmi dilime dağılması yüklü bir ortam demektir; ölçülen şey mutlak çakışma sayısı değil, aynı yükün üç cihazda ne olduğudur.
  • AC4 — Ortak ortamda bir dilimde birden çok gönderen varsa o dilimdeki çerçevelerin hepsi çakışmış sayılır. Ayrı bacaklarda çakışma olmaz; aynı dilimde aynı çıkış bacağını isteyen fazladan her çerçeve kuyruğa yazılır.
  • AC5 — Dört rejim karşılaştırılır: yineleyici, hub, tablosu boş anahtar ve tablosu tam anahtar. Tablosu boş anahtar öğrenmeyen bir kurgudur; amacı bacak yalıtımının kazancını tablonun kazancından ayırmaktır.
  • AC6 — Yük ekseni dilim sayısıyla kurulur: aynı kırk çerçeve kırk, yirmi ve on dilime sığdırılır. Dilim sayısı değiştiğinde çekilişler baştan yapılır, bu yüzden yük satırları birbirinin alt kümesi değildir; karşılaştırılan şey aynı çerçeve dizisi değil, aynı yoğunluk kuralıdır.
  • AC7 — Kümenin çözünürlüğü kırk çerçevedir; ölçülebilen en küçük fark 1/40=0,0251/40 = 0{,}025’tir. Bundan küçük bir fark bu kümeyle savunulmaz.

Ölçüm

"""Uc cihaz sinifi ayni trafikte: alan sayisi ve iletilen cerceve.

Kaynak ile hedef bir uretecten, zaman dilimi ayri bir uretecten cekilir;
her uretec tek bir modulusle cagrilir.
"""
TOHUM = 20260810
ISTASYONLAR = ["a", "b", "c", "d", "e", "f", "g", "h"]
DILIM = 20


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

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


def cerceveler(sayi=40, dilim=DILIM):
    r, z, liste = uretec(TOHUM), uretec(TOHUM + 1), []
    while len(liste) < sayi:
        x, y = ISTASYONLAR[r(8)], ISTASYONLAR[r(8)]
        if x != y:
            liste.append({"kaynak": x, "hedef": y, "dilim": z(dilim)})
    return liste


def kahin():
    """Gercek: hangi istasyon hangi bacakta duruyor."""
    return {a: i + 1 for i, a in enumerate(ISTASYONLAR)}


def olc(C, tablo, ortak_ortam):
    yer, dolu, cikan = kahin(), {}, {}
    teslim = gereksiz = cakisan = 0
    for c in C:
        dolu[c["dilim"]] = dolu.get(c["dilim"], 0) + 1
    for c in C:
        bacak = tablo.get(c["hedef"])
        cikis = ([bacak] if bacak is not None
                 else [b for b in yer.values() if b != yer[c["kaynak"]]])
        teslim += len(cikis)
        gereksiz += sum(1 for b in cikis if b != yer[c["hedef"]])
        if ortak_ortam:
            cakisan += 1 if dolu[c["dilim"]] > 1 else 0
        else:
            for b in cikis:
                cikan[(c["dilim"], b)] = cikan.get((c["dilim"], b), 0) + 1
    kuyruk = sum(n - 1 for n in cikan.values() if n > 1)
    return teslim, gereksiz, cakisan, kuyruk


C, TAM = cerceveler(), kahin()
print(f"çerçeve {len(C)} | istasyon {len(ISTASYONLAR)} | zaman dilimi {DILIM}")
print()
print(f"{'cihaz':<18s} {'bacak':>5s} {'çarpışma':>8s} {'yayın':>5s} "
      f"{'teslim':>6s} {'gereksiz':>8s} {'çakışan':>7s} {'kuyruk':>6s}")
for ad, bacak, tablo, ortak in (("yineleyici", 2, {}, True),
                                ("hub", 8, {}, True),
                                ("anahtar, tablosuz", 8, {}, False),
                                ("anahtar, tablolu", 8, TAM, False)):
    t, g, ca, ku = olc(C, tablo, ortak)
    print(f"{ad:<18s} {bacak:5d} {1 if ortak else bacak:8d} {1:5d} "
          f"{t:6d} {g:8d} {ca:7d} {ku:6d}")
print()
print(f"{'dilim':>5s} {'hub çakışan':>11s} {'tablosuz kuyruk':>15s} "
      f"{'tablolu kuyruk':>14s}")
for d in (40, 20, 10):
    Cd = cerceveler(40, d)
    _, _, ca, _ = olc(Cd, {}, True)
    _, _, _, k0 = olc(Cd, {}, False)
    _, _, _, k1 = olc(Cd, TAM, False)
    print(f"{d:5d} {ca:11d} {k0:15d} {k1:14d}")
çerçeve 40 | istasyon 8 | zaman dilimi 20

cihaz              bacak çarpışma yayın teslim gereksiz çakışan kuyruk
yineleyici             2        1     1    280      240      34      0
hub                    8        1     1    280      240      34      0
anahtar, tablosuz      8        8     1    280      240       0    151
anahtar, tablolu       8        8     1     40        0       0      6

dilim hub çakışan tablosuz kuyruk tablolu kuyruk
   40          27             102              3
   20          34             151              6
   10          38             202             10

İki Ayrı Kazanç

İlk iki satır birbirinin aynıdır ve bu bir eksiklik değil, dersin ilk bulgusudur. Yineleyicinin iki bacağı, hubın sekiz bacağı vardır; ürettikleri alan sayısı da, teslim ettikleri kopya sayısı da, çakışan çerçeve sayısı da aynı çıkar. Bacak eklemek karar kazandırmaz. İkisi de kararı hiçbir yerden okumadığı için aynı cihazdır.

Üçüncü satır bacak yalıtımını yalnız başına ölçer. Tablosu boş anahtar hâlâ taşırıyor: 280 teslim, 240 gereksiz kopya — hubın verdiğinin aynısı. Değişen tek şey çakışmadır: 34’ten 0’a iner. Bacaklar ayrı çarpışma alanları olduğu için iki gönderim artık birbirini bozmaz. Bozulmayan gönderimler yok olmaz, kuyruğa girer: aynı dilimde aynı bacağa çıkmak isteyen 151 fazladan kopya sıra bekler. Çarpışma kaybolmadı, kuyruğa dönüştü.

Dördüncü satır tablonun kazancını ekler. Teslim 280’den 40’a, gereksiz kopya 240’tan 0’a iner: kırk çerçevenin her biri tam olarak bir bacağa çıkar. Kuyruk da 151’den 6’ya düşer, çünkü artık bir bacağı yalnız gerçekten oraya giden çerçeveler ister.

Ayrım şudur: bacak yalıtımı çakışmayı kaldırır, tablo gereksiz kopyayı kaldırır. İkisi ayrı düzenektir ve ayrı ölçülür. Tablosuz bir anahtar kablolamada hubdan iyidir, iş yükünde ondan farksızdır.

Sayılan farklar ölçüm bandının içindedir. Kırk çerçevelik bir kümede ölçülebilen en küçük fark 1/40=0,0251/40 = 0{,}025’tir; buradaki farklar bir çerçeve değil, onlarca çerçeve düzeyindedir. Çakışmadaki 34 çerçevelik düşüş kümenin 0,850’si, gereksiz kopyadaki 240 birimlik düşüş ise çerçeve başına altı kopyadır. Bu ölçekteki bir farkın işareti kurgunun ayrıntısına bağlı değildir.

Yük Arttığında

Alt tablo aynı kırk çerçeveyi üç ayrı yoğunlukta gönderiyor: kırk dilime yayıldığında hafif, on dilime sıkıştığında ağır bir yük.

Ortak ortamda çakışan çerçeve 27’den 34’e, oradan 38’e çıkıyor. Artış yavaşlıyor çünkü tavan bellidir: kırk çerçevenin kırkı da çakışabilir ve ötesi yoktur. Ortak ortamın yük altındaki davranışı budur — bozulma kaybedilen çerçeveyle ölçülür ve doyuma gider.

Anahtarda aynı yük kuyruk olarak görünür. Tablolu anahtarda kuyruk 3, 6, 10 girdiye çıkıyor; tablosuz anahtarda 102, 151, 202. İki gözlem çıkar. Birincisi, anahtarda yük kayıp değil bekleyiş üretir: çerçeve yok olmaz, sırasını bekler. İkincisi, taşırma kuyruğu yaklaşık yirmi katına çıkarıyor — çünkü her çerçeve bir bacak değil yedi bacak istiyor. Tablonun kazancı yük arttıkça büyüyor: hafif yükte aradaki fark 99 girdi, ağır yükte 192.

Bir uyarı da üst tablodan okunur. Yayın alanı sütunu dört satırda da 1’dir. Anahtar tabloyla ne kadar iyi karar verirse versin, hedefi bir grup adresi olan çerçeveyi bütün bacaklara vermek zorundadır — çünkü o çerçevenin hedefi tabloda hiçbir zaman tek bir bacağa düşmez. Sekiz istasyonluk bir alanda tek bir yayın çerçevesi yedi teslim üretir; alan büyüdükçe bu sayı alanla birlikte büyür.

Özet

  • Karar bu kursta iletide yazandan okunmaz; cihazın tablosundan okunur ve tablo paylaşılan bir gerçeğin yerel kopyasıdır.
  • Paketin üç kaderi vardır — ulaştı, döngü, kara delik; tek bir cihazın tablosu kendi başına döngü kuramaz, döngü en az iki tablonun anlaşmazlığıdır.
  • Yineleyici ile hub aynı cihazdır: kırk çerçevede ikisi de 1 çarpışma alanı, 280 teslim, 240 gereksiz kopya ve 34 çakışan çerçeve verir.
  • Bacak yalıtımı çakışmayı 34’ten 0’a indirir ama gereksiz kopyaya dokunmaz; çakışma yok olmaz, 151 kuyruk girdisine dönüşür. Tablo teslimi 280’den 40’a, gereksiz kopyayı 240’tan 0’a, kuyruğu 151’den 6’ya indirir.
  • Yük arttıkça ortak ortamda çakışma 27, 34, 38 ile kırka doyar; anahtarda aynı yük 3, 6, 10 kuyruk girdisi olur — kayıp değil, bekleyiş.
  • Üç cihazın hiçbiri yayın alanını bölmez; dört rejimde de yayın alanı sayısı 1 kalır.

Sonraki Adım

Bu ölçümde anahtarın tablosu hazır kabul edildi: sekiz adresin sekizi de doğru bacakla eşlenmişti. Gerçekte tablo öyle başlamaz ve öyle kalmaz. Bir anahtar açıldığında tablosu boştur; bir istasyon susarsa girdisi bir süre sonra silinir; bir istasyon başka bacağa taşınırsa girdisi bir süre boyunca yanlış kalır. Sonraki ders tablonun yaşını ölçer: öğrenilmemiş ve yaşlanmış girdinin kaç çerçeveyi taşırttığını, ve taşırmanın hangi alanı büyüttüğünü.

İ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