Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

Bölüm 9 · Yazılımın içi · Ders 48

DDoS saldırısı ve hız sınırı

Jeton kovası, filonun sunucusunu bot selinden korur

Veri. 50 teslimat robotu konumlarını ve görev isteklerini saniyede birer kez bulut sunucusuna yollar; sunucu saniyede 100 istek işleyebilir, bekleme kuyruğu 150 istek alır. 10. saniyede 20 bot saniyede toplam 400 istekle saldırır ve bu 30 s sürer. Kuyruk dolunca sunucu hangi isteğin robottan geldiğini ayırmadan düşürür: robotlar görev alamaz.

sunucu: 100 istek/s, kuyruk 150saldırı 400 istek/s · kova 5 jeton
1 / 130
hiz_siniri.pypython
  1. import numpy as np
  2. rng = np.random.default_rng(7)
  3. C, QMAX, DT = 100, 150, 0.1 # istek/s, kuyruk, s
  4. IYI, KOTU, SIDDET = 50, 20, 400 # robot, bot, saldırı istek/s
  5. KOVA, DOLUM = 5, 2.0 # jeton, jeton/s
  6. hiz = np.r_[np.ones(IYI), np.full(KOTU, SIDDET / KOTU)] # istemci başına istek/s
  7. def benzet(sinir):
  8. jeton = np.full(IYI + KOTU, float(KOVA)) # her istemcinin kovası
  9. kuyruk, gonder, ok = 0, 0, 0
  10. for k in range(300): # 30 s saldırı
  11. n = rng.poisson(hiz * DT) # bu 0,1 s içindeki istekler
  12. gonder += n[:IYI].sum() # meşru gönderilen
  13. jeton = np.minimum(KOVA, jeton + DOLUM * DT) # kova dolar
  14. if sinir:
  15. n = np.minimum(n, jeton.astype(int)); jeton -= n # jetonu olan geçer
  16. a, b = n[:IYI].sum(), n[IYI:].sum()
  17. kabul = int(min(a + b, QMAX - kuyruk)) # kuyrukta yer kadar
  18. ok += kabul and rng.hypergeometric(a, b, kabul) # kör seçim
  19. kuyruk = max(0, kuyruk + kabul - int(C * DT)) # sunucu 10 istek işler
  20. return ok / gonder # meşru başarı oranı
  21. print('sınır yok :', round(benzet(False), 3)) # ≈ 0,22
  22. print('jeton kovası:', round(benzet(True), 3)) # ≈ 1,00

Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.

Bu dersin kodu verisini kendi içinde üretir; indirilecek dosya yok. Kodu yine de aşağıda tarayıcında çalıştırabilirsin.

Kodu tarayıcıda çalıştırPython · NumPy · matplotlib · Pyodide

Python ve NumPy bu sayfada, tarayıcında çalışır (Pyodide). Kodu değiştirip yeniden çalıştırabilirsin; dersin veri setleri çalışma klasöründe hazır. Kod matplotlib kullanırsa grafikler çıktının altında görünür, yazdığı dosyalar (ör. egitim_gecmisi.csv) indirilebilir.

hiz_siniri.pypython

Çıktı

Çıktı burada görünecek.

Nasıl çalışır

  1. Sunucunun bir kapasitesi vardır. Gelen istek bunu aşarsa kuyruk dolar; dolu kuyruğa gelen istek düşer.
  2. Sınır yokken düşme kör olur: 450 isteğin 100'ü geçer, meşru robotlar da aynı oranda (yaklaşık %22) kaybeder.
  3. Jeton kovası: her istemcinin kovası saniyede 2 jetonla dolar; her istek bir jeton harcar, jetonu olmayanın isteği kapıda reddedilir. Robotlar saniyede 1 istekle hiç takılmaz, botlar saniyede 2'ye iner.
  4. Kova boyu ani patlamaya ne kadar izin verildiğini belirler: büyük kova saldırının ilk saniyesinde kuyruğu doldurur, çok küçük kova meşru robotları da keser.
  5. Şunu dene: kova boyunu 1 yap, robotların başarısı düşer; 40 yap, saldırının başında kuyruk dolup taşar.

Neden önemli

Bulut API'leri, harita sunucuları ve robot filosu yönetim panelleri istemci başına hız sınırıyla korunur; aynı kova, tek bir hatalı robotun döngüye girip sunucuyu boğmasını da önler. Botlar çok sayıda adresten yavaş yavaş gelirse istemci başına sınır yetmez; o zaman ağ düzeyinde süzme ve kapasite artışı gerekir.

ESOF 323, 11. hafta: robotlarda derin öğrenme →
Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç