
Ağ QoS: Trafik Şekillendirme ve Bant Genişliği Yönetimi
Linux tc komutu ile QoS, traffic shaping, HTB/HFSC disiplinleri, önceliklendirme ve bant genişliği garantisi yapılandırması.
Ağ QoS: Trafik Şekillendirme ve Bant Genişliği Yönetimi
VDS'inizde gece backup işi e-posta kuyruğunu boğdu, sabah müşteri SSH oturumu dondu — toplam kapasite bol ama paylaşım yok. İşte QoS (Quality of Service) tam bu sorunu çözer: kernel seviyesinde paketleri sınıflandırır, önceliklendirir ve her servise garantili bir "şerit" ayırır. Bu rehberde Linux tc komutu, HTB/HFSC disiplinleri, fq_codel/CAKE ile bufferbloat çözümü, BBR congestion control ve pratik VDS senaryoları saha komutlarıyla anlatılıyor.
Buyukweb notu: VDS paketlerimizde root erişimi standart;
tcdahil tüm Linux network stack size açık. Veri merkezinde L3+L4+L7 DDoS koruması altyapı tarafında çalışır; sunucu içi servis paylaşımı sizin sorumluluğunuzda. Destek: 0850 302 60 70.
QoS Neden Gerekli: Bant Genişliği Kıtlığı ve Gecikme Hassasiyeti
Ağ kaynakları sonsuza kadar artırılamaz. Aynı bağlantıyı VoIP, SSH, web ve bulk backup paylaştığında gecikmeye duyarlı trafik (VoIP, SSH, oyun) ile bulk trafik (yedekleme, büyük dosya transferi, BitTorrent) çakışır.
Sonuçlar:
- VoIP: 150ms üstü gecikme + yüksek jitter → konuşma kalitesi bozulur
- SSH: kuyrukta bekleyen paketler → yazmalar ekranda 1-2 sn gecikmeli görünür (bufferbloat)
- Web: ortalama görünüm, bulk trafik yokken hızlı; backup çalışırken yavaşlar
QoS bu dört mekanizmayla çalışır:
| Mekanizma | Ne yapar | Kullanım |
|---|---|---|
| Shaping | Trafiği sınırla ve düzleştir (çıkış) | Gönderme hızını kap |
| Policing | Sınırı aşan trafiği düşür (giriş) | Rate limiting |
| Scheduling | Paketleri sıraya koy, öncekileri öne al | HTB, fq_codel |
| Classification | Trafiği türüne göre etiketle | DSCP, port, mark |
Linux qdisc Kavramları: Classful vs Classless
Linux Traffic Control üç yapı taşına dayanır: qdisc (queueing discipline), class ve filter.
qdisc: paketler nasıl kuyruklanır, nasıl gönderilir
class: hiyerarşik bant bölme (sadece classful qdisc'lerde)
filter: paket → class eşleme kuralları (port, IP, DSCP, mark)
İki ana kategori:
Classless (tek şerit, kural yok):
pfifo_fast— Linux 2.x-3.x default, üç bantlı FIFO, basitfq— akış başına ayrı kuyruk, adil paylaşımfq_codel— FQ + CoDel anti-bufferbloat, Linux 4.x+ yaygın defaultCAKE— Modern, DiffServ-aware, ack-filter dahilTBF— Token Bucket Filter, sade hız sınırınetem— Network Emulation, lab/test gecikme simülasyonu
Classful (hiyerarşik, çoklu şerit):
HTB— Hierarchical Token Bucket; çoklu servis paylaşımı için standartHFSC— Hierarchical Fair Service Curve; latency-kritik, daha hassasCBQ— Class-Based Queueing; eski, artık HTB tercih edilir
Default qdisc Evrimi: pfifo_fast → fq_codel → CAKE
Linux kernel'daki default qdisc tarihi yavaş ama önemli bir gelişim izledi:
- pfifo_fast (Linux 2.x — 3.x): Üç öncelik bantlı basit FIFO. DSCP'yi okur ama flow isolation yok; bir akış diğerini kolayca boğar.
- fq_codel (Linux 3.14+, Ubuntu 16.04+): CoDel algoritması ile bufferbloat çözümü + FQ ile per-flow izolasyon. Modern dağıtımlarda
net.core.default_qdisc=fq_codelsysctl değeri. - CAKE (Linux 4.19+): fq_codel'in evrim hali; DiffServ sınıflandırma, ack-filter, tek satır bandwidth shaping. OpenWrt/router projelerinin tercihi; sunucularda da kabul görüyor.
# Sistemin mevcut default qdisc'i öğren
sysctl net.core.default_qdisc
# net.core.default_qdisc = fq_codel (Ubuntu 20.04+, RHEL 8+)
# Kernel versiyon — CAKE için 4.19+ gerekli
uname -r
tc Komutu Yapısı: qdisc, Class ve Filter Hiyerarşisi
tc komutunun temel sözdizimi:
# Root qdisc ekle
tc qdisc add dev ETH root handle 1: htb default 30
# Üst class (toplam kapasite)
tc class add dev ETH parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
# Alt class (garanti + üst sınır)
tc class add dev ETH parent 1:1 classid 1:10 htb rate 30mbit ceil 100mbit prio 1
# Filter: port → class
tc filter add dev ETH protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:10
# Durum izle
tc -s qdisc show dev ETH
tc -s class show dev ETH
tc filter show dev ETH
rate vs ceil: rate garanti edilen minimum bant genişliği; ceil diğer sınıflar boştaysa çıkılabilecek tavan. Sıkışıklıkta her sınıf en az rate kadarını alır. prio düşük sayı = yüksek öncelik.
HTB Kurulum: 100 Mbps Üzerinde Üç Servis Paylaşımı
Senaryo: 100 Mbps VDS. SSH/yönetim işlemleri öncelikli (30 Mbps garanti), web trafiği normal (50 Mbps garanti), backup gece kullanıcısı (20 Mbps garanti, fazlasını da alabilsin).
# Mevcut kural varsa temizle
tc qdisc del dev eth0 root 2>/dev/null
# Root HTB — eşleşmeyen paket class 30'a (backup/default)
tc qdisc add dev eth0 root handle 1: htb default 30
# Toplam 100 Mbps üst sınıf
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
# SSH / yönetim — 30 Mbps garanti, 100 Mbps burst, en yüksek öncelik
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 100mbit burst 15k prio 1
# Web (HTTP/HTTPS) — 50 Mbps garanti, orta öncelik
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 50mbit ceil 100mbit burst 15k prio 2
# Backup / bulk — 20 Mbps garanti, düşük öncelik, boşta tüm bandı alabilir
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 20mbit ceil 100mbit burst 15k prio 5
# Her class altına fq_codel (bufferbloat'a karşı)
tc qdisc add dev eth0 parent 1:10 handle 10: fq_codel
tc qdisc add dev eth0 parent 1:20 handle 20: fq_codel
tc qdisc add dev eth0 parent 1:30 handle 30: fq_codel
# Filtreler
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:10
tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip dport 443 0xffff flowid 1:20
tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:20
# Backup port rsync 873 → backup class
tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dport 873 0xffff flowid 1:30
HFSC: Gerçek Zamanlı Garanti ve Latency Eğrisi
HTB bandwidth garantisi verir; HFSC (Hierarchical Fair Service Curve) bir adım ileri giderek gecikme garantisi de verir. Her class için iki eğri tanımlanır:
- real-time (rt): Gecikmeye duyarlı trafik için sıkı garanti — sıkışıklıkta bile bu paketin kuyrukta bekleyeceği maksimum süre sınırlı
- link-share (ls): Kalan bant genişliği adil paylaşımı
tc qdisc del dev eth0 root 2>/dev/null
tc qdisc add dev eth0 root handle 1: hfsc default 30
# Toplam kapasite
tc class add dev eth0 parent 1: classid 1:1 hfsc sc rate 100mbit ul rate 100mbit
# VoIP/SSH — gerçek zamanlı garanti: 10ms içinde servis, 10 Mbps
tc class add dev eth0 parent 1:1 classid 1:10 hfsc rt m1 20mbit d 10ms m2 10mbit ls m1 30mbit d 10ms m2 10mbit
# Web — link-share yeterli, gecikme garantisi gerekmez
tc class add dev eth0 parent 1:1 classid 1:20 hfsc ls rate 50mbit
# Backup — düşük öncelik, link-share
tc class add dev eth0 parent 1:1 classid 1:30 hfsc ls rate 20mbit
# rt parametreleri: m1=burst hız, d=geçiş süresi, m2=sustained hız
# 10ms deadline ile VoIP paketleri en geç 10ms içinde kuyruğu terk eder
HFSC, VoIP veya gerçek-zamanlı oyun sunucusu barındıran VDS'lerde HTB'ye tercih edilir. Karmaşıklığı yüksek; çoğu senaryo için HTB yeterlidir.
fq_codel ve CAKE: Bufferbloat Çözümü ve ECN
Bufferbloat: ağ ekipmanlarındaki büyük buffer'lar sıkışıklık anında latency'yi 200-2000 ms'e fırlatır. Klasik FIFO buffer doldukça paketler bekler, ping uçar, SSH takılır.
fq_codel iki mekanizmayı birleştirir:
- Fair Queueing: Her TCP akışı ayrı kuyruğa girer; hiçbir akış diğerini boğamaz
- CoDel: Kuyrukta gereğinden uzun bekleyen paketi drop eder; TCP yavaşlar, gecikme düşer
# Tek satır fq_codel — interface varsayılan qdisc
tc qdisc replace dev eth0 root fq_codel
# ECN ile (paket drop yerine işaret — TCP ECN destekliyorsa)
tc qdisc replace dev eth0 root fq_codel ecn
# Parametreli
tc qdisc replace dev eth0 root fq_codel limit 10240 target 5ms interval 100ms ecn
CAKE daha kapsamlı:
# 1 Gbps VDS, DiffServ sınıflandırma, ack optimizasyonu
tc qdisc replace dev eth0 root cake bandwidth 1gbit diffserv4 ack-filter
# CAKE'in diffserv4 modu: Bulk / Best Effort / Video / Voice şeklinde dört sınıf
# DSCP EF → Voice kuyruğu, CS1 → Bulk, otomatik
ECN (Explicit Congestion Notification): TCP başlığındaki ECE/CWR bitleri ile sıkışıklık sinyali iletilir; paket drop yerine "yavaşla" mesajı gönderilir. Sender TCP stack destekliyorsa (Linux default destekler) kayıpsız yavaşlama sağlar. sysctl net.ipv4.tcp_ecn=1 ile kernel seviyesinde aktif edilir.
DSCP İşaretleme: iptables/nftables ile Trafik Etiketleme
DSCP (Differentiated Services Code Point), IP header'da 6-bit alan. Her paket bir sınıfa işaretlenir; tc filter veya CAKE otomatik tanır.
# iptables ile SSH trafiğini EF (Expedited Forwarding, 0x2e = 46) işaretle
iptables -t mangle -A POSTROUTING -p tcp --dport 22 -j DSCP --set-dscp 0x2e
# nftables — modern yaklaşım
# /etc/nftables.conf
table inet qos_mark {
chain postrouting {
type filter hook postrouting priority mangle;
# SSH etkileşimli → EF (öncelikli)
tcp dport 22 ip dscp set ef
# Web → AF21
tcp dport { 80, 443 } ip dscp set af21
# VoIP SIP/RTP → EF
udp dport { 5060, 5061, 16384-32767 } ip dscp set ef
# Bulk/backup → CS1 (Scavenger)
tcp dport { 873, 8730 } ip dscp set cs1
}
}
# Uygula
nft -f /etc/nftables.conf
DSCP sınıfları:
| DSCP | Değer | Kullanım |
|---|---|---|
| EF | 46 | VoIP, SSH, düşük gecikme kritik |
| AF41 | 34 | Video konferans |
| AF21 | 18 | Web, etkileşimli uygulama |
| CS1 | 8 | Bulk, scavenger (backup) |
| BE | 0 | Varsayılan, işaretsiz |
Internet üzerinde DSCP çoğunlukla ISP'nin edge'inde sıfırlanır. DSCP, kendi yönettiğiniz uçtan uca (VPN tunnel, özel hat) anlamlı; genel internet yolculuğunda korunma garantisi yok.
BBR: Google'ın TCP Congestion Control Algoritması
BBR (Bottleneck Bandwidth and Round-trip propagation time) Google tarafından geliştirilen TCP congestion control algoritması. Linux 4.9+ kernel'da mevcut. Klasik CUBIC algoritmaya göre yüksek latency veya paket kayıplı bağlantılarda önemli ölçüde daha iyi throughput sağlar.
CUBIC nasıl çalışır: paket kaybı olunca pencereyi küçült → kelebek etkisi. BBR ise gerçek bottleneck bant genişliğini ve RTT'yi ölçerek gönderim hızını belirler; kayıp olsa bile aşırı küçülmez.
# Kernel versiyonu kontrol (4.9+ gerekli)
uname -r
# Mevcut congestion control
sysctl net.ipv4.tcp_congestion_control
# net.ipv4.tcp_congestion_control = cubic
# BBR'yi aktif et (anlık, reboot sonrası kaybolur)
sysctl -w net.ipv4.tcp_congestion_control=bbr
# BBR'nin fq qdisc ile birlikte çalışması önerilir
sysctl -w net.core.default_qdisc=fq
# Kalıcı — /etc/sysctl.d/99-bbr.conf
cat > /etc/sysctl.d/99-bbr.conf << 'EOF'
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
EOF
sysctl -p /etc/sysctl.d/99-bbr.conf
# BBR aktif mi kontrol et
sysctl net.ipv4.tcp_congestion_control
# net.ipv4.tcp_congestion_control = bbr
# Yüklü modüller
lsmod | grep bbr
# tcp_bbr ...
Performans karşılaştırma (genel kural):
- LAN/düşük latency: CUBIC ile BBR benzer
- Yüksek RTT (100ms+) veya %1+ paket kaybı: BBR 2-10x daha iyi throughput
- CDN/yüksek trafik sunucu: BBR önerilir
Buyukweb VDS'lerde kernel 5.15+ standart; BBR için ekstra kurulum gerekmez, sysctl ile hemen aktif edilir.
Ingress Shaping: IFB Cihazı ile Gelen Trafik Kontrolü
tc doğrudan yalnızca egress (gönderilen) trafiği şekillendirebilir. Gelen trafik (ingress) için IFB (Intermediate Functional Block) sanal cihazı kullanılır: gelen paketler IFB'ye yansıtılır, orada egress olarak şekillendirilir.
# IFB modülü yükle
modprobe ifb numifbs=1
ip link set dev ifb0 up
# eth0 ingress'i ifb0'a yansıt
tc qdisc add dev eth0 handle ffff: ingress
tc filter add dev eth0 parent ffff: matchall action mirred egress redirect dev ifb0
# ifb0 üzerinde normal egress kuralları uygula
tc qdisc add dev ifb0 root handle 1: htb default 10
tc class add dev ifb0 parent 1: classid 1:10 htb rate 100mbit ceil 100mbit
# Durum
tc -s qdisc show dev ifb0
CAKE alternatif: tc qdisc add dev eth0 ingress cake bandwidth 100mbit — altta yine IFB benzeri mekanizma kullanır ama tek satır.
nftables ile QoS: meta priority ve mark
nftables, iptables'ın modern halefi. QoS için iki yol:
- DSCP işaretleme (yukarıda gösterildi) — tc filtresiyle sınıfa yönlendir
- meta priority — doğrudan tc class priority değerini set et
table inet tc_qos {
chain postrouting {
type filter hook postrouting priority mangle;
# Paket meta priority ile doğrudan tc class'a yönlendir
tcp dport 22 meta priority set 1:10
# Mark ile tc filter fw eşleştirmesi
tcp dport { 80, 443 } mark set 0x1
udp dport { 873 } mark set 0x5
}
}
# tc filter fw ile mark 1 → class 1:20
tc filter add dev eth0 protocol ip parent 1:0 prio 2 handle 0x1 fw flowid 1:20
tc filter add dev eth0 protocol ip parent 1:0 prio 5 handle 0x5 fw flowid 1:30
nftables + tc birlikte kullanımı, karmaşık sınıflandırma ihtiyaçlarında u32 filter'dan daha okunaklı.
Container ve Kubernetes Ortamında QoS
Container dünyasında QoS farklı katmanlarda ele alınır:
cgroup v1 (eski): net_cls controller ile container'a classid atanır, tc filtresi bu classid'i yakalar. cgroup v2'de net_cls kaldırıldı.
cgroup v2 (modern, Linux 5.x+): Ağ QoS için eBPF + tc birlikte kullanılır. systemd servisleri için:
# /etc/systemd/system/backup.service içine
[Service]
ExecStart=/usr/local/bin/backup.sh
# Ağ önceliği için cgroup + tc kombinasyonu
CPUWeight=10
IOWeight=10
Kubernetes QoS sınıfları (pod seviyesinde):
Guaranteed: requests == limits (CPU ve Memory) → en yüksek öncelikBurstable: requests < limits → orta öncelikBestEffort: requests/limits tanımsız → en düşük öncelik
Bu sınıflar OOM killer ve scheduler önceliğini etkiler; ağ bant genişliği direkt kontrol etmez.
Kubernetes ağ QoS için CNI plugin kullanılır. Örnek (Calico, bandwidth plugin):
# Pod annotation — bandwidth limit
annotations:
kubernetes.io/ingress-bandwidth: "100M"
kubernetes.io/egress-bandwidth: "50M"
Bu annotation'lar CNI bandwidth plugin tarafından işlenerek tc HTB kurallarına dönüştürülür. tc -s class show dev eth0 ile node üzerinde kurallar görülebilir.
Pratik Senaryo: VPS'de SSH Öncelik + Torrent Limit + Web Normal
Gerçek hayat senaryosu: kişisel VDS'inizde web sunucu, aktif SSH oturumları ve gece çekilen torrent/büyük dosya transferleri aynı 100 Mbps portu paylaşıyor. Torrent tüm bandı tüketince SSH donuyor.
#!/usr/bin/env bash
# /usr/local/sbin/tc-vds-qos.sh
# Kullanım: tc-vds-qos.sh start | stop | status
IFACE=eth0
TOTAL_RATE=100mbit
start() {
# Temizle
tc qdisc del dev $IFACE root 2>/dev/null
# Root HTB — eşleşmeyen → class 30 (default web)
tc qdisc add dev $IFACE root handle 1: htb default 20
# Toplam kapasite
tc class add dev $IFACE parent 1: classid 1:1 htb rate $TOTAL_RATE ceil $TOTAL_RATE
# SSH — 20 Mbps garanti, tüm bandı kullanabilir, en yüksek öncelik
tc class add dev $IFACE parent 1:1 classid 1:10 htb rate 20mbit ceil $TOTAL_RATE burst 32k prio 1
# Web — 60 Mbps garanti, orta öncelik (default class)
tc class add dev $IFACE parent 1:1 classid 1:20 htb rate 60mbit ceil $TOTAL_RATE burst 15k prio 2
# Torrent/bulk — 5 Mbps garanti, max 20 Mbps (asla web/SSH'yi boğmasın)
tc class add dev $IFACE parent 1:1 classid 1:30 htb rate 5mbit ceil 20mbit burst 8k prio 7
# fq_codel her class altına
tc qdisc add dev $IFACE parent 1:10 handle 10: fq_codel ecn
tc qdisc add dev $IFACE parent 1:20 handle 20: fq_codel ecn
tc qdisc add dev $IFACE parent 1:30 handle 30: fq_codel
# Filtreler
# SSH → class 10
tc filter add dev $IFACE protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:10
# Web → class 20
tc filter add dev $IFACE protocol ip parent 1:0 prio 2 u32 match ip dport 443 0xffff flowid 1:20
tc filter add dev $IFACE protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:20
# BitTorrent portları → class 30 (torrent/bulk)
tc filter add dev $IFACE protocol ip parent 1:0 prio 7 u32 match ip dport 6881 0xffff flowid 1:30
tc filter add dev $IFACE protocol ip parent 1:0 prio 7 u32 match ip sport 6881 0xffff flowid 1:30
echo "QoS rules applied on $IFACE"
}
stop() {
tc qdisc del dev $IFACE root 2>/dev/null
echo "QoS rules removed"
}
status() {
echo "=== qdisc ==="
tc -s qdisc show dev $IFACE
echo "=== class ==="
tc -s class show dev $IFACE
echo "=== filter ==="
tc filter show dev $IFACE
}
case "$1" in
start) start ;;
stop) stop ;;
status) status ;;
*) echo "Usage: $0 start|stop|status"; exit 1 ;;
esac
chmod +x /usr/local/sbin/tc-vds-qos.sh
tc-vds-qos.sh start
tc-vds-qos.sh status
Buyukweb VDS'de QoS: Bursa Tier 3 ve tc Desteği
Buyukweb veri merkezi Bursa'da Tier 3 standartında çalışır; Türkiye içi trafikte düşük gecikme (İstanbul ≈8ms, Ankara ≈10ms) ve TR-EU peering bağlantısı var.
VDS'de tc: KVM hipervizör üzerinde her VDS bağımsız ağ namespace'i alır; tc root yetkisiyle doğrudan çalışır. Kernel 5.15 standard; HTB, HFSC, fq_codel, CAKE, BBR hepsi desteklenir.
Hosting'de tc: Paylaşımlı cPanel/Plesk hosting paketlerinde shared kernel üzerinde çalışırsınız; root erişim yok, tc kullanamazsınız. Bant genişliği garanti paylaşımlı altyapı tarafında yönetilir.
BBR VDS'lerde: Kernel 5.15 üzerinde tcp_bbr modülü mevcut; sysctl -w net.ipv4.tcp_congestion_control=bbr ile anında aktif edilir, reboot sonrası kalıcı için /etc/sysctl.d/ kullanın.
DDoS koruması: Buyukweb altyapısında L3+L4+L7 DDoS koruması veri merkezi seviyesinde etkin. tc/QoS bu korumayı tamamlar: meşru trafik içinde servis önceliklendirme.
Troubleshooting: tc İstatistikleri ve iperf3 ile Doğrulama
# Detaylı qdisc istatistikleri (drop, backlog, overlimit sayaçları)
tc -s qdisc show dev eth0
# Class bazında byte/paket ve drop sayaçları
tc -s class show dev eth0
# Filtre listesi
tc filter show dev eth0
# Canlı bant genişliği izleme
bmon -p eth0 # apt install bmon
iftop -i eth0 # apt install iftop
# Bandwidth doğrulama — iperf3 server başka makinede
iperf3 -s # server
iperf3 -c SERVER_IP -t 30 -P 4 # 4 paralel stream, 30 sn
# -P 4: birden fazla akış — QoS'un gerçek yükü test eder
# Bufferbloat testi
flent -H 8.8.8.8 -t "qos-check" rrul # apt install flent
# Ping latency — QoS öncesi/sonrası karşılaştır
ping -c 30 8.8.8.8 # backup çalışırken test et
# tc class sıfırla (sayaçları değil, kuralları temizler)
tc qdisc del dev eth0 root
Yaygın hatalar:
- Inbound için tc direct — eth0 ingress'e shape etmek için IFB veya CAKE ingress modu şart
- Filter prio sırası — tc filter ilk match wins; özelden genele sıralayın
- rate toplamı > kapasite — class'ların rate toplamı interface hızını geçmemeli
- Default class unutmak —
htb default Xyoksa eşleşmeyen trafik yön bulamaz - HTB altına qdisc eklememek — HTB tek başına bufferbloat'a karşı çare değil; her class altına
fq_codelekleyin - Reboot sonrası kural kaybolması — systemd unit ile kalıcılaştırın
Sık Sorulan Sorular
tc kuralları kalıcı nasıl olur — systemd unit yöntemi nedir?
# /etc/systemd/system/tc-qos.service
[Unit]
Description=Traffic Control QoS rules
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/sbin/tc-vds-qos.sh start
ExecStop=/usr/local/sbin/tc-vds-qos.sh stop
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable tc-qos
systemctl start tc-qos
Alternatif: /etc/networkd-dispatcher/routable.d/50-tc-qos script (networkd kullananlar için) veya Netplan'ın run-changes hook'u.
Buyukweb VDS'te BBR aktif mi?
Kernel 5.15 üzerinde tcp_bbr modülü hazır ama varsayılan CUBIC. Aktif etmek için: sysctl -w net.ipv4.tcp_congestion_control=bbr. Kalıcı yapılandırma için /etc/sysctl.d/99-bbr.conf oluşturun (yukarıda gösterildi). Hosting paketlerinde (shared) kernel parametresi değiştirilemez.
Bant genişliği limiti cgroups ile yapılabilir mi?
cgroup v1'de net_cls ile tc classid atanır; cgroup v2'de bu kaldırıldı. Modern yöntem: eBPF + tc veya CNI bandwidth plugin (Kubernetes). Basit per-process limit için tc + iptables MARK kombinasyonu daha yaygın ve stabil.
Paylaşımlı hosting'de tc kullanabilir miyim?
Hayır. Shared hosting'de root erişim olmadığından tc çalıştıramazsınız. Sunucu tarafı bant genişliği paylaşımlı altyapı tarafından yönetilir. Tam tc kontrolü için VDS veya Dedicated sunucu gereklidir.
fq_codel mi, CAKE mi seçmeliyim?
Tek servisli, basit kurulum: CAKE tek satır (bandwidth parametresi yeterli). Çok servisli, per-class kontrol: HTB + fq_codel (her class altına). CAKE + HTB birlikte de kullanılabilir; CAKE HTB class içine inner qdisc olarak eklenebilir.
HFSC ne zaman HTB'ye tercih edilir?
VoIP, gerçek-zamanlı oyun veya milisaniye düzeyinde gecikme garantisi gereken servisler için HFSC. Tipik web/e-mail/backup paylaşımı için HTB yeterli ve daha kolay.
DSCP işareti VPN tunnel içinde korunur mu?
Evet. Tünel kapsüllenmiş iç paketteki DSCP, tünelin dış başlığından bağımsız. WireGuard veya OpenVPN tunnel içinde DSCP işaretleme anlam taşır; tunnel interface'inde tc uygulandığında iç DSCP'ye göre sınıflandırma yapılabilir.
Sonuç ve Buyukweb Tavsiyesi
QoS, internet hızlandırma sihri değil; kıt kaynağı planlı paylaştırma disiplini. Karar rehberi:
- Tek servis, yeterli kapasite: fq_codel default'unu koru, ek QoS gereksiz
- Birden fazla servis, sıkışıklık var: HTB ile sınıflara böl + her class altına fq_codel
- Bufferbloat sorun: fq_codel veya CAKE (tek satır)
- Latency-kritik (VoIP/oyun): HFSC ile milisaniye garantisi
- Yüksek throughput (yüksek RTT/kayıp): BBR congestion control etkinleştir
- Gelen trafik kontrolü: IFB cihazı veya CAKE ingress modu
Buyukweb VDS paketlerinde root erişimi, KVM izolasyonu ve kernel 5.15 ile bu rehberdeki tüm yapılandırmalar doğrudan uygulanabilir. Teknik mimari danışmanlığı için 7/24 destek hattı: 0850 302 60 70.
İlgili Büyükweb Hizmetleri
Ağ ve sunucu altyapısı için Türkiye lokasyonlu paketler:
- VDS Sunucu Paketleri
- Fiziksel Dedicated Sunucu
- VPN Paketleri
- Sunucu Barındırma
- Tüm hosting ve sunucu paketleri
Sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.
Ağ & Network İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:

