---
title: 'Hizmet Kalitesi'
source: 'https://academia.sh/tr/kurslar/ag-isletimi/hizmet-kalitesi'
course: 'Ağ İşletimi ve Otomasyon'
language: tr
updated: '2026-08-17T18:07:16+00:00'
license: 'CC BY-SA 4.0'
---

# Hizmet Kalitesi

Üç sıralama kuralı aynı kırk öznede koşturulur ve karşılanamayan 433 birim üçünde de aynı kalır; katı öncelik etkileşim sınıfının beklemesini 1,13 turdan 0,00'a indirirken yedek sınıfını 1,28'den 5,76 tura ve 433 birimlik kuyruğa gönderir, genel ortalama ise 1,19'dan 0,40'a inerek iyileşme gösterir.

Buraya kadarki dört kaldıraç aynı soruyu farklı biçimlerde sordu: iş **nereye** gitsin?
Dengeleyici hangi özneye, vekil kimin adına, kenar hangi kopyaya. Hiçbiri işlerin birbirinden
**farklı önemde** olabileceğini hesaba katmadı; kırk özne de aynı sırada bekliyordu.

**Hizmet kalitesi (quality of service)** bu varsayımı kaldırır. Trafik sınıflara ayrılır, bir
sınıf öne alınır, öteki bekletilir. Kaldıraç artık işin yerini değil **sırasını** ayarlar. Ve
sıra, kapasitenin yetmediği bir hatta, sıfır toplamlı bir şeydir: bir sınıfın kazandığı
gecikme başka bir sınıfın kuyruğundan alınır. Bu dersin kuralı, o iki sayının **her zaman
birlikte** yazılmasıdır.

## Üç Adım

Hizmet kalitesi tek bir düzenek değil, birbirini izleyen üç adımdır.

**Sınıflandırma**, gelen her birime bir sınıf etiketi verir. Etiket iletinin bir alanından,
bağlantı noktasından, gelen arayüzden ya da önceden konmuş bir imden okunabilir. Bu adım bir
karar vermez; yalnız kimin hangi kümede olduğunu söyler.

**Önceliklendirme**, sınıflar arasında bir sıra kurar. Hat boşaldığında hangi sınıfın
kuyruğundan alınacağını belirler. Kapasite talebin üstündeyse bu adımın hiçbir etkisi yoktur;
etkisi yalnız sıkışıklıkta görünür.

**Şekillendirme**, bir sınıfın alabileceği payı yukarıdan sınırlar. Önceliklendirmeden farkı
şudur: öncelik bir sınıfa **ne zaman** hizmet verileceğini söyler, şekillendirme **en çok ne
kadar** alabileceğini. İkisi birlikte kullanıldığında bir sınıf hem öncelikli hem sınırlı
olabilir — öne geçer ama hattı tümüyle yutamaz.

Üç adımın hiçbiri kapasite yaratmaz ve bu, hizmet kalitesinin en sık yanlış anlaşılan
yanıdır. Hat talebi karşılıyorsa üç adım da hiçbir şey yapmaz. Kuralların etkisi yalnız
**darboğazda** görünür; bu yüzden hizmet kalitesi kuralı trafiğin geçtiği her noktaya değil,
kapasitenin yetmediği noktaya yazılır. Başka bir yere yazılan kural yapılandırmada durur,
ölçümde hiç görünmez ve yanlış bir güven verir.

Yapılandırma tarafında üçü de aynı yerde durur:

```text
# öğretilen kural sözdizimi, çalıştırılmamıştır

siniflandir {
  etkilesim  im = ivedi
  toplu      im = toplu
  yedek      kalan
}

sirala {
  kural      kati-oncelik
  sira       etkilesim, toplu, yedek
}

sekillendir {
  etkilesim  en-cok %45
  toplu      en-cok %40
  yedek      en-cok %15
  artan      paylastir
}
```

## Sınıflandırmanın Kendi Kuyruğu

Ölçüme geçmeden önce bir uyarı gerekir. Aşağıdaki kurgu sınıfları **doğru bilir**: kırk
öznenin sınıfı kurgunun kendisinden gelir ve kâhin odur. İşletmede böyle değildir.

Sınıflandırıcı da bir kaldıraçtır ve kendi kuyruğu vardır. Etiketi iletide yazana bakarak
verir; yazanı doğrulayan bir şey yoktur — Uygulama Katmanı Protokolleri kursunun bıraktığı
gözlem burada da geçerlidir. Bir birim yanlış sınıflandırıldığında sonraki iki adım
**kusursuz çalışarak** yanlış sonucu üretir: öncelik kuralı doğru uygulanır, şekillendirme
doğru uygulanır, ama yanlış özneye. Ve bu, sonucun kendisinde bir belirti bırakmaz.

Kuyruğun iki ucu buradadır. Sınıflandırma dar yazılırsa gerçekten ivedi olan trafik kalan
sınıfına düşer ve öncelikten hiç yararlanamaz. Geniş yazılırsa ivedi sınıfı şişer;
önceliklendirmenin anlamı, ayırdığı kümenin küçük kalmasına bağlıdır. Herkesin öncelikli
olduğu bir sıralama, sıralamanın olmadığı durumla aynıdır.

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

- **TY28** — Kırk özne kursun sabit kümesidir; her öznenin sınıfı kurgudan gelir ve
  **sınıflandırma kusursuz kabul edilir**. Ölçülen şey sıralamanın sonucudur, etiketin
  doğruluğu değil.
- **TY29** — Yirmi tur koşturulur. Her turda her özne değişken bir talep üretir; talep
  büyüklüğü öznenin kapasitesine bağlıdır.
- **TY30** — Hat her turda **150** birim taşır. Toplam talep bu kapasitenin üstündedir;
  **karşılanamayacak birim sayısı kuraldan bağımsız olarak sabittir.**
- **TY31** — Bekleme, bir birimin geldiği tur ile hizmet aldığı tur arasındaki farktır ve tur
  cinsinden sayılır. Aynı turda hizmet alan birimin beklemesi sıfırdır.
- **TY32** — Sınıfsız kuralda tek bir kuyruk vardır ve birimler geliş sırasına göre hizmet
  alır. Katı öncelikte üst sınıfın kuyruğu boşalmadan alt sınıfa geçilmez.
- **TY33** — Şekillendirmede her sınıfa tur başına bir tavan ayrılır; tavanlardan artan
  kapasite ikinci geçişte sırayla dağıtılır, yani hat boş kalmaz.
- **TY34** — Ölçüm bir ağ ölçümü değildir; hiçbir paket gönderilmez. Sayılan şey kurgudaki
  sıralamanın kendisidir.

## Ölçüm

```python
"""Hizmet kalitesi: bir sinifin kazandigi gecikme baska bir sinifin kuyrugudur."""
TOHUM = 20260812
SINIFLAR = ("etkilesim", "toplu", "yedek")
TUR, HAT = 20, 150
PAY = {"etkilesim": 45, "toplu": 40, "yedek": 15}


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

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


def ozneler(sayi=40, tohum=TOHUM):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        liste.append({"no": i + 1, "kapasite": 20 + r(81), "gecikme": 5 + r(45),
                      "sinif": SINIFLAR[r(3)], "ozel": r(9) == 0})
    return liste


def talepler(oz, tohum=TOHUM + 31):
    """Her turda her ozne degisken bir talep uretir."""
    r, akis = uretec(tohum), []
    for _ in range(TUR):
        tur = []
        for o in oz:
            for _ in range(1 + r(o["kapasite"] // 8 + 1)):
                tur.append(o)
        akis.append(tur)
    return akis


def kosu(oz, akis, kural):
    """Tek bir siralama kurali kirk oznenin birimlerini hatta sokar."""
    kuyruk = {s: [] for s in SINIFLAR}
    bekleme = {s: [] for s in SINIFLAR}
    hizmet = {o["no"]: 0 for o in oz}
    ortak = []

    def gecir(liste, sinir):
        n = 0
        while n < sinir and liste:
            gelis, o = liste.pop(0)
            bekleme[o["sinif"]].append(t - gelis)
            hizmet[o["no"]] += 1
            n += 1
        return n

    for t in range(TUR):
        for o in akis[t]:
            (ortak if kural == "sinifsiz" else kuyruk[o["sinif"]]).append((t, o))
        kalan = HAT
        if kural == "sinifsiz":
            kalan -= gecir(ortak, kalan)
        elif kural == "kati oncelik":
            for s in SINIFLAR:
                kalan -= gecir(kuyruk[s], kalan)
        else:
            for s in SINIFLAR:
                kalan -= gecir(kuyruk[s], min(HAT * PAY[s] // 100, kalan))
            for s in SINIFLAR:
                kalan -= gecir(kuyruk[s], kalan)
    for gelis, o in ortak:
        kuyruk[o["sinif"]].append((gelis, o))
    return kuyruk, bekleme, hizmet


oz = ozneler()
akis = talepler(oz)
print(f"tur {TUR} | hat kapasitesi {HAT}/tur, toplam {TUR * HAT} birim | "
      f"toplam talep {sum(len(t) for t in akis)} | "
      f"karşılanamayacak {sum(len(t) for t in akis) - TUR * HAT}")
for s in SINIFLAR:
    print(f"  {s:10s} özne {sum(1 for o in oz if o['sinif'] == s):2d} "
          f"talep {sum(1 for t in akis for o in t if o['sinif'] == s):5d}")
print()
print(f"{'kural':<15s} {'sınıf':<11s} {'hizmet':>7s} {'ort. bekleme':>13s} "
      f"{'en uzun':>8s} {'kuyrukta':>9s} {'kuyruklu özne':>14s}")
for kural in ("sinifsiz", "kati oncelik", "sekillendirme"):
    kuyruk, bekleme, hizmet = kosu(oz, akis, kural)
    for s in SINIFLAR:
        b = bekleme[s]
        print(f"{kural:<15s} {s:<11s} {len(b):7d} "
              f"{sum(b) / len(b) if b else 0:13.2f} {max(b) if b else 0:8d} "
              f"{len(kuyruk[s]):9d} "
              f"{len({o['no'] for _, o in kuyruk[s]}):14d}")
    tum = [x for s in SINIFLAR for x in bekleme[s]]
    print(f"{'':<15s} {'-- genel':<11s} {len(tum):7d} "
          f"{sum(tum) / len(tum):13.2f} {max(tum):8d} "
          f"{sum(len(kuyruk[s]) for s in SINIFLAR):9d} "
          f"{len({o['no'] for s in SINIFLAR for _, o in kuyruk[s]}):14d}")
```

```
tur 20 | hat kapasitesi 150/tur, toplam 3000 birim | toplam talep 3433 | karşılanamayacak 433
  etkilesim  özne 11 talep   829
  toplu      özne 20 talep  1974
  yedek      özne  9 talep   630

kural           sınıf        hizmet  ort. bekleme  en uzun  kuyrukta  kuyruklu özne
sinifsiz        etkilesim       714          1.13        3       115             11
sinifsiz        toplu          1736          1.19        3       238             20
sinifsiz        yedek           550          1.28        3        80              9
                -- genel       3000          1.19        3       433             40
kati oncelik    etkilesim       829          0.00        0         0              0
kati oncelik    toplu          1974          0.03        1         0              0
kati oncelik    yedek           197          5.76       13       433              9
                -- genel       3000          0.40       13       433              9
sekillendirme   etkilesim       829          0.00        0         0              0
sekillendirme   toplu          1731          1.14        3       243             20
sekillendirme   yedek           440          2.85        7       190              9
                -- genel       3000          1.08        7       433             29
```

## Kimden Alındı

Tablonun okunması gereken ilk sütunu en sağdaki değil, üç `-- genel` satırının **kuyrukta**
değeridir. Üçü de **433**. Toplam talep **3433**, hat yirmi turda **3000** birim taşıyor ve
aradaki fark hiçbir kuralla kapanmıyor.

Bu, kursun ikinci iddiasının bu konudaki son biçimidir. **Sıralama kuralı karşılanamayan
birimi yok etmez; kimin taşıyacağını seçer.** Üç kuralın hiçbiri hattı büyütmedi, hiçbiri
talebi küçültmedi; yalnız aynı 433 birimi farklı öznelerin üstüne dağıttılar.

Dağıtımın kendisi doğrudan okunuyor. Sınıfsız kuralda kuyruk üçe bölünmüş: etkileşim **115**,
toplu **238**, yedek **80**. Katı önceliğe geçildiğinde etkileşimin **115**'i ve toplunun
**238**'i sıfırlanıyor, ikisi de yedek sınıfının üstüne biniyor: **80 + 115 + 238 = 433**.
Yedek sınıfının kuyruğu **80**'den **433**'e çıkıyor ve o sınıfın **630** birimlik talebinin
yalnız **197**'si hizmet alıyor.

Beklemede aynı hesap tur cinsinden görünüyor. Etkileşim sınıfının ortalama beklemesi
**1,13** turdan **0,00**'a iniyor — hiçbir birimi hiç beklemiyor, en uzun beklemesi de
**0**. Kazanç tam **1,13** turdur. Aynı hareketle yedek sınıfının ortalama beklemesi
**1,28**'den **5,76** tura, en uzun beklemesi **3**'ten **13** tura çıkıyor. **Etkileşimin
kazandığı 1,13 tur, yedeğin ödediği 4,48 turdur.** İki sayı ayrı ayrı yazıldığında ikisi de
doğrudur; yalnız biri yazıldığında kural ya kusursuz ya da felaket görünür.

Şekillendirme satırları ara noktayı veriyor ve tam olarak bir ara nokta olduğunu gösteriyor.
Etkileşim yine **0,00** bekliyor — yani üst sınıfın kazancı korunuyor. Ama yedeğin bekleme
süresi **5,76** yerine **2,85**, kuyruğu **433** yerine **190**. Fark, toplu sınıfının
üstlendiği paydadır: onun kuyruğu **238**'den **243**'e çıkmış ve beklemesi **1,19**'dan
**1,14**'e inmiş. Aynı 433 birim, bu kez **243 + 190** biçiminde bölünüyor.

Şekillendirmenin yaptığı şey, katı önceliğin tek bir sınıfa yıktığı yükü iki sınıfa
paylaştırmaktır. Kuyruğu kaldırmıyor; **kuyruğun kimde biriktiğini** ayarlıyor — kursun
başından beri her kaldıraçta çıkan sonucun aynısı.

## Bekletmek ile Atmak

Ölçümdeki şekillendirme, sınırı aşan birimi **bekletti**: birim kuyrukta kaldı ve sırası
gelince hizmet aldı. Bu, iki seçenekten yalnız biridir. İkincisi, sınırı aşan birimi
**atmaktır** — bu kursta ona **atarak sınırlama (policing)** denir. Kaldıraç aynı kaldıraç,
tavan aynı tavan; değişen tek şey tavanın üstündeki birime ne olduğudur.

Ayrımın kuyruğa etkisi doğrudandır. Bekleten kural, karşılanamayan **433** birimi kuyrukta
tutar; bu birimler geç de olsa hizmet alır ve tabloda bekleme süresi olarak görünür. Atan
kural onları hiç göstermez: kuyruk sütunu **0** okur, bekleme süreleri düşer, gösterge
temizlenir. Kaybolan birimler ise hiçbir sütunda yoktur.

Üstelik atmak, atılan birimi ortadan kaldırmayabilir. Üst katman kaybı fark edip yeniden
gönderirse aynı iş hatta **ikinci kez** gelir — bu kez daha geç ve ek yükle. Taşıma Katmanı
kursunda ölçülen yeniden iletim davranışı burada bir işletme sorunu hâline gelir: sınırı
atarak uygulamak, talebi azaltmak yerine artırabilir.

Ters yönde de bir sınır vardır. Bekletmek her zaman daha iyi görünse de kuyruğun kendisi bir
maliyettir. Kuyruk derinleştikçe bekleme büyür, ve derin bir ortak kuyrukta ivedi bir birim
kendisinden önce gelmiş çok sayıda toplu birimin arkasında oturur. Ölçümdeki sınıfsız kural
tam olarak bu durumdur: etkileşim sınıfının **1,13** turluk beklemesi, kendi trafiğinden
değil, **önündeki başka sınıfların birimlerinden** gelir. Sınıflandırmanın var olma nedeni
de budur — kuyruğu bölmeden, kuyruğun derinliği herkese aynı bedeli ödetir.

## Genel Ortalamanın Söylemediği

Son okuma `-- genel` satırlarındadır ve bir gösterge tablosu tuzağıdır.

Genel ortalama bekleme sınıfsız kuralda **1,19** tur, katı öncelikte **0,40** tur. Yalnız bu
sayıya bakan bir gösterge, katı önceliğe geçmenin genel gecikmeyi **üç kattan fazla**
iyileştirdiğini söyler. Sayı yanlış değildir: hizmet alan üç bin birimin ortalaması gerçekten
düşmüştür, çünkü ağırlığın çoğu artık hiç beklemeyen iki sınıftadır.

Aynı satırın yanındaki iki sütun tersini söylüyor. En uzun bekleme **3** turdan **13** tura
çıkmış; kuyruğu taşıyan özne sayısı **40**'tan **9**'a inmiş. Kırk özne biraz beklerken
dokuz özne çok bekliyor, ve ortalama tam da bu yüzden düşüyor.

Kuyruklu özne sütunundaki **40 → 9** düşüşü kendi başına bir iyileşme gibi okunabilir —
"kuyrukta bekleyen özne sayısı dörtte bire indi" cümlesi doğrudur ve tamamen yanıltıcıdır.
Kırk öznelik bir kümede ölçülebilen en küçük fark **1/40 = 0,025**'tir; buradaki değişim
bunun otuz bir katıdır ve yönü ölçüyle değil politikayla belirlenir.

Şekillendirme satırı bu tuzağı da yumuşatıyor: genel ortalama **1,08**, en uzun bekleme
**7**, kuyruğu taşıyan özne **29**. Üç sayının hiçbiri en iyisi değil, ama üçü birden hiçbir
sınıfı tek başına bırakmıyor. Hangi satırın seçileceği ölçünün kararı değildir — ölçüm
yalnız kimin ödediğini söyler.

## Özet

- Hizmet kalitesi üç adımdır: sınıflandırma etiketi verir, önceliklendirme sırayı kurar,
  şekillendirme tavanı koyar; ilk adım yanlışsa sonraki ikisi kusursuz çalışarak yanlış
  sonucu üretir.
- Toplam talep **3433**, hat kapasitesi **3000**; karşılanamayan **433** birim üç kuralın
  üçünde de aynıdır. Sıralama kuralı kuyruğu yok etmez, taşıyanı seçer.
- Katı öncelikte etkileşimin **115** ve toplunun **238** birimlik kuyruğu yedek sınıfına
  biner: **80 + 115 + 238 = 433**, ve yedeğin **630** birimlik talebinin yalnız **197**'si
  hizmet alır.
- Etkileşim sınıfının kazandığı **1,13** turluk bekleme, yedek sınıfının ödediği **4,48**
  turdur; iki sayı birlikte yazılmazsa aynı kural ya kusursuz ya felaket görünür.
- Şekillendirme aynı **433** birimi **243 + 190** biçiminde iki sınıfa böler; üst sınıfın
  **0,00** kazancını korur ama alt sınıfın beklemesini **5,76** yerine **2,85**'te tutar.
- Genel ortalama katı öncelikte **1,19**'dan **0,40**'a **iner** — aynı anda en uzun bekleme
  **3**'ten **13**'e çıkarken ve kuyruğu taşıyan özne **40**'tan **9**'a düşerken.

## Sonraki Adım

Bu beş derste kaldıraç trafiği gerçekten yönetti: dağıttı, sınırladı, yerleştirdi, sıraladı.
Her derste kuyruğu da sayabildik — kaç özne aştı, kaç birim boşta kaldı, kaç nesne hiç
görünmedi, kim kimin gecikmesini ödedi. Ama bu sayıların hepsini yazabilmemizin tek bir
nedeni vardı: kurguyu biz kurduk ve kâhin elimizdeydi. Kapasiteyi, popülerliği, sınıfı ve
gerçek talebi baştan biliyorduk.

İşletmede hiçbiri bilinmez. Son derste görüldüğü gibi, kaldıracın kendi göstergesi
iyileştiğini söylerken kuyruk büyümüş olabilir ve gösterge yalan söylemiyordur. Öyleyse
sıradaki soru kaldıraçla ilgili değildir: **kaldıracın ne yaptığını nereden biliyoruz?**
Sonraki konu bu soruyu üstlenir ve önce en temelinden başlar — ağın kendi durumunu hangi
kayıtlarla, hangi sayaçlarla bildirdiğini tanımlar.
