İçeriğe geç
academia.sh

Ders 08 / 13

Yaygın Arıza Kalıpları

Ad çözümleme, güvenlik duvarı ve yol arızalarının imzaları ile kanıtın kendiliğinden kaybolması: aralıklı arıza 600 saniyelik pencerede 84 saniye sürerken 300. saniyede başlayan kayıt 42/84, 500. saniyede başlayan 13/84 yakalıyor ve düşürülen paketin izi kayıt kapalıyken 0 satır kalıyor.

İçindekiler

Önceki dersin bütün ölçüsü tek bir varsayıma yaslanıyordu: yakalama, arıza başlamadan önce çalışır durumdaydı. Bu ders o varsayımı kaldırır ve kursun üçüncü iddiasını öder: kanıt beklemez. Bir arıza sürerken toplanmayan kayıt sonradan toplanamaz; kaydı olmayan bir olay tanı için hiç olmamıştır.

Dersin ilk yarısı ise geriye kalan pratik soruyu bitirir. Önceki üç ders sınamaları ve sıralarını ölçtü; elde bir yanıt demeti var. Şimdi ters yönden bakılır: belirli bir arıza hangi yanıt demetini üretir, yani imzası nedir. Üç kalıp ayrı ayrı ele alınır — ad çözümleme, güvenlik duvarı ve yol — çünkü üçü de sık görülür ve üçü de birbirine benzeyen belirtiler üretir.

Üç Kalıp ve İmzaları

Bir arızanın imzası, sınamaların ona verdiği yanıtların demetidir (SG17). İmza, tanının aradığı şeydir: aday kümesini adım adım daraltmak yerine, gözlenen demeti bilinen demetlerle karşılaştırmak.

Ad çözümleme kalıbı en belirgin imzaya sahiptir. Ad sorgusu yanıtsız kalır, ama adresle yapılan her şey çalışır: yankı döner, bağlantı kurulur, büyük paket geçer. Kullanıcı tarafında görüntü tuhaftır — hizmet “bazen” çalışır, çünkü önbellekte duran bir kayıt kullanıldığında sorgu hiç yapılmaz. Ad çözümleme protokolünün kendisi Bilgisayar Ağları müfredatının konusudur ve burada açılmaz; buradaki konu yalnız imzadır.

Güvenlik duvarı kalıbının imzası sessizliktir. Paket düşürüldüğünde karşı taraftan hiçbir yanıt gelmez ve bağlantı denemesi zaman aşımına uğrar. Reddedilmekten ayrıldığı yer tam da budur: reddetmek bir yanıt üretir, düşürmek üretmez. Sessizliğin kaynağı bu kez yolda değil, hedefin önündeki bir kuraldır ve yol sınamaları sağlam der.

Yol kalıbı üçünün en sinsisidir. Küçük paketler geçer, büyükler kaybolur. Yankı sağlam der, bağlantı kurulur, ilk alışveriş çalışır; iş büyük veri aktarımına gelince durur. Kullanıcı bunu “yavaş” ya da “bazen kopuyor” diye bildirir ve tanı, hızla ilgili bir yerde aranmaya başlanır.

# ornek dokum , calistirilmis degildir
$ getent hosts <sunucu-adi>              # ad cozumleme imzasi
$ nc -z -w 3 <hedef> <bag-noktasi>       # reddedildi mi , zaman asimi mi
$ ping -c 3 -M do -s 1400 <hedef>        # yol imzasi
$ nft list ruleset                       # kurallar ve sayaclar okunur
SAGLAM = {"arayuz_acik": True, "adres_var": True, "ag_gecidi_dogru": True,
          "rota_var": True, "cozumleyici_yanit": True, "servis_dinliyor": True,
          "guvenlik_duvari_gecirir": True, "yol_bozulmadan": True}
ARIZA = {
    "arayuz-kapali":      {"arayuz_acik": False, "adres_var": False},
    "adres-yok":          {"adres_var": False},
    "ag-gecidi-yanlis":   {"ag_gecidi_dogru": False},
    "rota-eksik":         {"rota_var": False},
    "cozumleyici-sessiz": {"cozumleyici_yanit": False},
    "servis-dinlemiyor":  {"servis_dinliyor": False},
    "guvenlik-duvari-dusuruyor": {"guvenlik_duvari_gecirir": False},
    "buyuk-paket-dusuyor": {"yol_bozulmadan": False},
}
ADAYLAR = tuple(ARIZA)


def durum(a=None):
    d = dict(SAGLAM)
    if a:
        d.update(ARIZA[a])
    return d


def yol(d):
    return (d["arayuz_acik"] and d["adres_var"]
            and d["ag_gecidi_dogru"] and d["rota_var"])


SINAMA = {
    "ad-cozumleme": lambda d: "cozuldu" if d["cozumleyici_yanit"] else "cozulemedi",
    "dinleyen": lambda d: "dinliyor" if d["servis_dinliyor"] else "dinlemiyor",
    "baglanti": lambda d: ("ulasilamaz" if not yol(d)
                           else "zaman-asimi" if not d["guvenlik_duvari_gecirir"]
                           else "reddedildi" if not d["servis_dinliyor"]
                           else "kuruldu"),
    "buyuk-paket": lambda d: ("geciyor" if yol(d) and d["yol_bozulmadan"]
                              else "gecmiyor"),
}
UST = list(SINAMA)                       # SG17: imza = sinama yanitlari demeti


def imza(a, kume=UST):
    return tuple(SINAMA[s](durum(a)) for s in kume)


def obekler(kume, adaylar=ADAYLAR):
    o = {}
    for a in adaylar:
        o.setdefault(imza(a, kume), []).append(a)
    return o


print("ariza                       ad-cozumleme  dinleyen    baglanti     buyuk-paket")
for a in ADAYLAR:
    i = imza(a)
    print(f"  {a:26s}{i[0]:14s}{i[1]:12s}{i[2]:13s}{i[3]}")
o = obekler(UST)
print("ayri imza:", len(o), "| ayrilamayan obek:",
      len([v for v in o.values() if len(v) > 1]),
      "| en buyuk obek:", max(len(v) for v in o.values()))
print()
print("bir sinamanin eleme gucu yanitina gore degisiyor")
for s in SINAMA:
    for yanit, uyan in sorted(obekler([s]).items()):
        print(f"  {s:13s} {yanit[0]:12s} elenen {len(ADAYLAR) - len(uyan)}  kalan {len(uyan)}")
print()


def aralikli(pencere=600, donem=45, sure=6):    # SG18
    return [t for t in range(pencere) if t % donem < sure]


def kayit_yakalar(olaylar, baslangic):          # SG19
    y = [t for t in olaylar if t >= baslangic]
    return len(y), round(len(y) / len(olaylar), 4)


def dusen_paket_izi(kayit_acik):                # SG20
    return 128 if kayit_acik else 0


OLAY = aralikli()
print("aralikli ariza: pencere 600 sn , olay", len(OLAY), "saniye ,",
      len(OLAY) // 6, "atak x 6 saniye")
for bas in (0, 100, 300, 500):
    y, oran = kayit_yakalar(OLAY, bas)
    print(f"  kayit {bas:3d}. saniyede basliyor -> yakalanan {y:3d} / {len(OLAY)} = {oran}")
print("dusen paketin izi: kayit kapali ->", dusen_paket_izi(False),
      "satir , kayit acik ->", dusen_paket_izi(True), "satir")
print()
print("aday kumesi supurmesi: ad-cozumleme sinamasinin iki yaniti")
kume = ["cozumleyici-sessiz"]
for a in ADAYLAR:
    if a not in kume:
        kume.append(a)
        o = obekler(["ad-cozumleme"], tuple(kume))
        olumsuz = len(o[("cozulemedi",)])
        olumlu = len(o.get(("cozuldu",), []))
        print(f"  aday {len(kume)}  'cozulemedi' elenen {len(kume) - olumsuz} kalan {olumsuz}"
              f"   'cozuldu' elenen {len(kume) - olumlu} kalan {olumlu}")
ariza                       ad-cozumleme  dinleyen    baglanti     buyuk-paket
  arayuz-kapali             cozuldu       dinliyor    ulasilamaz   gecmiyor
  adres-yok                 cozuldu       dinliyor    ulasilamaz   gecmiyor
  ag-gecidi-yanlis          cozuldu       dinliyor    ulasilamaz   gecmiyor
  rota-eksik                cozuldu       dinliyor    ulasilamaz   gecmiyor
  cozumleyici-sessiz        cozulemedi    dinliyor    kuruldu      geciyor
  servis-dinlemiyor         cozuldu       dinlemiyor  reddedildi   geciyor
  guvenlik-duvari-dusuruyor cozuldu       dinliyor    zaman-asimi  geciyor
  buyuk-paket-dusuyor       cozuldu       dinliyor    kuruldu      gecmiyor
ayri imza: 5 | ayrilamayan obek: 1 | en buyuk obek: 4

bir sinamanin eleme gucu yanitina gore degisiyor
  ad-cozumleme  cozuldu      elenen 1  kalan 7
  ad-cozumleme  cozulemedi   elenen 7  kalan 1
  dinleyen      dinlemiyor   elenen 7  kalan 1
  dinleyen      dinliyor     elenen 1  kalan 7
  baglanti      kuruldu      elenen 6  kalan 2
  baglanti      reddedildi   elenen 7  kalan 1
  baglanti      ulasilamaz   elenen 4  kalan 4
  baglanti      zaman-asimi  elenen 7  kalan 1
  buyuk-paket   geciyor      elenen 5  kalan 3
  buyuk-paket   gecmiyor     elenen 3  kalan 5

aralikli ariza: pencere 600 sn , olay 84 saniye , 14 atak x 6 saniye
  kayit   0. saniyede basliyor -> yakalanan  84 / 84 = 1.0
  kayit 100. saniyede basliyor -> yakalanan  66 / 84 = 0.7857
  kayit 300. saniyede basliyor -> yakalanan  42 / 84 = 0.5
  kayit 500. saniyede basliyor -> yakalanan  13 / 84 = 0.1548
dusen paketin izi: kayit kapali -> 0 satir , kayit acik -> 128 satir

aday kumesi supurmesi: ad-cozumleme sinamasinin iki yaniti
  aday 2  'cozulemedi' elenen 1 kalan 1   'cozuldu' elenen 1 kalan 1
  aday 3  'cozulemedi' elenen 2 kalan 1   'cozuldu' elenen 1 kalan 2
  aday 4  'cozulemedi' elenen 3 kalan 1   'cozuldu' elenen 1 kalan 3
  aday 5  'cozulemedi' elenen 4 kalan 1   'cozuldu' elenen 1 kalan 4
  aday 6  'cozulemedi' elenen 5 kalan 1   'cozuldu' elenen 1 kalan 5
  aday 7  'cozulemedi' elenen 6 kalan 1   'cozuldu' elenen 1 kalan 6
  aday 8  'cozulemedi' elenen 7 kalan 1   'cozuldu' elenen 1 kalan 7

Kâhin, Sınama, Elenen Aday

Üç sayı yan yana durur. Kâhin: gerçek arıza cozumleyici-sessiz. Sınama: ad çözümleme sorgusu cozulemedi yanıtını veriyor. Elenen aday: bu yanıt 7 adayı eliyor ve geriye 1 aday bırakıyor; imza tektir ve tanı biter.

Aynı sınama, kâhin guvenlik-duvari-dusuruyor olduğunda cozuldu der ve yalnız 1 aday eler. Yani ad çözümleme sınaması bir derste en zayıf araçtı, burada en güçlüsü. Değişen şey araç değil, yanıt.

İmza tablosu dört üst katman sınamasıyla sekiz arızayı 5 ayrı imzaya ayırır. Ayrılamayan tek öbek alt katmandaki dörttür: arayüz, adres, ağ geçidi ve rota arızalarının dördü de bu dört sınamada aynı demeti üretir. Bu, ikinci derste ölçülen sonucun tersidir; orada erişilebilirlik sınamaları üst dörtlüyü tek öbekte bırakıyordu. Sonuç simetriktir: her sınama kümesi kendi katmanının dışını körleştirir ve ayrım ancak iki katmandan da sınama alındığında tamamlanır.

Olumsuz Yanıt Eler, Olumlu Yanıt Elemez

İkinci tablo dersin en genellenebilir bulgusudur. Bir sınamanın eleme gücü sabit bir sayı değildir; yanıtına göre değişir ve fark büyüktür. Ad çözümleme cozulemedi derse 7, cozuldu derse 1 aday eler. Dinleyen listesi dinlemiyor derse 7, dinliyor derse 1. Bağlantı denemesinin dört yanıtı sırasıyla 6, 7, 4 ve 7 aday eler.

Kalıbın nedeni kurgunun yapısındadır: her arıza sağlam durumun tek bir alanını bozduğu için, bir alanın bozuk çıkması o tek arızayı işaret eder; sağlam çıkması ise geri kalan yedisiyle uyumludur. Pratik karşılığı doğrudan bir öğüttür: iyi haber az bilgidir. “Ad çözümleme çalışıyor” satırı tanıyı neredeyse hiç ilerletmez; “ad çözümleme çalışmıyor” satırı tanıyı bitirir.

Bu, sınama seçimini de değiştirir. Bir sınamanın beklenen eleme gücü, yanıtlarının aday kümesi üzerindeki dağılımına bağlıdır. Yanıtları dengeli dağılan bir sınama her durumda benzer iş görür; yanıtları çok dengesiz dağılan bir sınama nadiren çok, çoğunlukla az iş görür. Bağlantı denemesinin dört yanıtı bu bakımdan en dengelisidir ve en kötü durumda bile 4 aday eler.

Aralıklı Arıza: Kanıt Beklemez

Buraya kadar bütün sınamalar arıza sürerken yapıldı. Aralıklı arızada bu garanti yoktur. Kurguda arıza her 45 saniyede bir 6 saniye sürüyor; altı yüz saniyelik pencerede 14 atak ve toplam 84 saniye arıza var (SG18). Kayıt bir anda başlar ve pencerenin sonuna kadar sürer (SG19).

Sayılar açıktır. Kayıt sıfırıncı saniyede başlarsa 84 olayın 84’ü görülür. Yüzüncü saniyede başlarsa 66 (0,7857). Üç yüzüncü saniyede başlarsa 42 (0,5000). Beş yüzüncü saniyede başlarsa 13 (0,1548). Kayıt penceresinin yarısında başlamak olayların yarısını, altıda beşinde başlamak altıda beşini götürür.

Buradan iki sonuç çıkar. Birincisi, geç başlayan kayıt yanlış bir sıklık ölçer. Beş yüzüncü saniyede başlayan bir kayda bakan operatör on üç saniyelik arıza görür ve olayı “ara sıra” diye niteler; gerçek süre seksen dört saniyedir. Yanlış olan gözlem değil, gözlemin ne kadarlık bir pencereyi temsil ettiği varsayımıdır.

Aralıklı arızanın imza yöntemine verdiği zarar daha da ağırdır. İmza, ancak arıza sürerken alındığında doğrudur. Kurguda arıza pencerenin 84 saniyesini kaplar, yani 600 saniyenin 0,1400’ünü; rastgele bir anda yapılan tek bir sınamanın arızaya denk gelme payı budur. Geri kalan yüzde seksen altıda sınama sağlam yanıtını verir ve o yanıt, önceki bölümde ölçülen kurala göre gerçek nedeni eler. Aday kümesinden elenen aday doğru adaydır ve bu, tanı boyunca hiçbir yerde belirti vermez: bütün sınamalar tutarlıdır, imza sağlıklı bir sistemin imzasıdır, yine de hizmet çalışmamaktadır.

Bu yüzden aralıklı arıza karşısında yapılacak şey sınamayı yinelemektir, ama önceki derste yazılan uyarı burada geçerliliğini yitirir: orada aynı sınamanın yinelenmesi yeni aday elemiyordu, çünkü sistemin durumu sabitti. Durum zamanla değişiyorsa yineleme yeni bilgi üretir ve üretilen bilgi artık bir yanıt değil, bir yanıt dağılımıdır. Üç denemenin ikisinde sağlam, birinde bozuk çıkan bir sınama, hiçbir tek yanıtın söyleyemeyeceği şeyi söyler.

İkincisi, kaydın başlama anı bir tanı kararıdır ve arıza bildirilmeden önce verilir. Bir arıza duyulduğunda kayıt açmak, o andan sonrasını görmeyi sağlar; o ana kadarki on dört atağın hiçbiri geri gelmez. Sistem yönetimi kursunda günlük döndürmesi kanıtı silerken ölçülmüştü; burada kanıt silinmiyor, hiç yazılmıyor. İkisinin ortak sonucu aynıdır ve ikisinin de çaresi aynı yerdedir: karar arızadan önce verilmiş olmalıdır.

Düşürülen Paketin İzi

Son sayı en kısa olanıdır. Güvenlik duvarı bir paketi düşürdüğünde varsayılan davranış iz bırakmamaktır: kayıt kapalıyken düşen paketin izi 0 satır, açıkken 128 satırdır (SG20). Arıza her iki durumda da aynı arızadır; değişen tek şey bir ayardır.

Bu, üçüncü iddianın en sert biçimidir. Sessiz düşürme, tanının en pahalı arızasıdır çünkü hiçbir sınama onu doğrudan görmez; yalnız zaman aşımı imzasından çıkarsanır. İz açıkken aynı arıza tek satırda okunur. Yani 128 satırlık fark, altı sınamalık bir çıkarımın yerine geçer.

İzin bedeli de yazılmalıdır. Her düşen paket satır üretiyorsa, yoğun bir düşürme kaydı kendisi bir yük hâline gelir ve günlük döndürmesini hızlandırarak başka kanıtı siler. Doğru kurulum sürekli iz değil, sınırlı iz: belirli bir kural için, belirli bir süre boyunca ve sayısı sınırlanmış biçimde. Bu, arıza öncesinde alınmış bir karardır; arıza sırasında alındığında geç kalmıştır.

Aynı hesap aralıklı arızayla birleştiğinde en kötü durum ortaya çıkar: sessizce düşürülen bir paket, arıza da aralıklıysa ne izde ne de imzada görünür. Böyle bir arıza yalnız yinelenen sınamanın yanıt dağılımından okunur ve o dağılım, kimse yinelemediği sürece hiç oluşmaz.

Aday Kümesi Süpürmesi

Süpürme, olumsuz ve olumlu yanıt arasındaki açığın kümeyle nasıl büyüdüğünü gösterir. İki adaylı kümede iki yanıt da 1 aday eler; fark yoktur. Küme sekize çıktığında cozulemedi 7 aday eler, cozuldu hâlâ 1 aday eler. Olumsuz yanıtın gücü küme büyüdükçe doğrusal artar, olumlu yanıtınki sabit kalır.

Bu, kurguya bağlı olmayan bir sonuçtur ve nedeni yapısaldır: bir alanı yalnız tek bir arıza bozduğu için, o alanın bozuk çıkması aday sayısından bağımsız olarak tek adayı gösterir. Aday listesine yeni bir arıza eklemek olumlu yanıtın değerini düşürür, olumsuz yanıtınkini yükseltir. Listeyi genişletmek bu yüzden “daha dikkatli olmak” değildir; ölçünün kendisini değiştirir ve hangi sınamanın işe yarayacağını da değiştirir.

Özet

  • Bir arızanın imzası, sınamaların ona verdiği yanıtların demetidir; dört üst katman sınaması sekiz arızayı 5 imzaya ayırır ve alt katmandaki dört arıza tek öbekte kalır.
  • Bir sınamanın eleme gücü yanıtına göre değişir: ad çözümleme cozulemedi derse 7, cozuldu derse 1 aday eler. İyi haber az bilgidir.
  • Aralıklı arıza 600 saniyelik pencerede 84 saniye sürer; kayıt 300. saniyede başlarsa 42/84 (0,5000), 500. saniyede başlarsa 13/84 (0,1548) yakalanır.
  • Geç başlayan kayıt yalnız az görmez, yanlış sıklık ölçer; on üç saniyelik gözlemden “ara sıra” sonucu çıkar.
  • Düşürülen paketin izi kayıt kapalıyken 0 satır, açıkken 128 satırdır; arıza aynı arızadır, görünürlük bir ayardır ve o ayar arızadan önce açılmış olmalıdır.
  • Olumsuz yanıtın eleme gücü aday kümesiyle birlikte büyür, olumlu yanıtınki 1’de sabit kalır.

Sonraki Adım

Bu konu tanının ne kadarının önceden verilmiş kararlara bağlı olduğunu gösterdi: kaydın açık olması, izin sınırlı tutulması, aday listesinin yazılmış olması. Aynı soru erişim tarafında daha sert biçimde geri gelir. Bir sunucuya uzaktan bağlanmanın kendisi bir yapılandırma kararıdır ve o karar yanlışsa tanı yapacak kanal da kapanır. Sonraki konu güvenli kabuğu, anahtar tabanlı kimlik doğrulamayı ve yerel sertleştirmeyi ele alır; ardından paket filtreleme çerçevesine geçer ve dışarıya açık yüzeyin büyümesini sayarak ölçer.

İ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