HTB için minimum oran ve varsayılan sınıf problemi


29

Kullandığım bir HTB yapısı hakkında bazı şüphelerim var.

Amacım, yerel bir ağdaki kullanıcıların indirme ve yükleme hızlarını sınırlandırmak. Ağın her bir kullanıcısı, alamayacağı etki alanı için aşağı ve yukarı hızına sahip kişisel bir etki alanı listesine sahiptir.

Bu, kullanıcının1 slashdot.org üzerindeki erişimini indirme için 8KB ile ve yükleme için 3KB ile sınırlandırabileceği anlamına gelir ve kullanıcı2, slashdot.org'da 4KB ile 1KB arasında sınırlı erişim sağlayabilir.

Şimdilik harika çalışan bir iptables / tc çifti kurarım, ancak çok küçük bir ölçekte, aynı anda 2 veya 3 sanal konak kullanarak (Ne yazık ki, gerçek boyut testi yapamıyorum).

İşte benim şu anki yapım (LAN çıkışında sadece bir tane göstereceğim, yükleme için sadece bunun bir "kopyası" olacak)

Arayüze eklenmiş bir HTB qdisc (tanıtıcı 2 :), varsayılan trafik sınıfı FFFF sınıfıdır.

Kök sınıfı 2: 1, DOWNLINK kapasitesini oranlama ve tavana sahip doğrudan HTB qdisc altında.

Varsayılan sınıf 2: 1: Kbsp hızına ve İNDİRME kapasitesine sahip bir tavana sahip, 2: 1'lik bir çocuk olarak FFFF.

Daha sonra, belirli bir alandaki bir kullanıcı için yeni bir kısıtlama olduğunda dinamik olarak eklenen başka sınıflar vardır, indirme hızını alanından kontrol etmek için yeni bir tc sınıfı eklenir.

Şimdilik, işte yaptığım şey:

Benzersiz bir kimliğe sahip yeni bir tc sınıfı oluşturun (buradaki noktadan değil veritabanından alınmış), ebeveyn olarak sınıf 2: 1, oran değeri 1bps, tavan değeri sınırlı indirme hızına ayarlanmış.

İşte tc komutları:

-------------- BEGIN SCRIPT --------------
DOWNLINK=800

## Setting up the static tc qdisc and class

$tc qdisc add dev $LAN_IFACE root handle 2: htb default 0xFFFF

# Main class so the default class can borrow bandwith from the others
$tc class replace dev $LAN_IFACE parent 0x2: classid 0x2:0x1 htb rate $DOWNLINK ceil $DOWNLINKkbps

# add the default class of class id 2:a under the main class of classid 2:1
$tc class replace dev $LAN_IFACE parent 0x2:0x1 classid 0x2:0xFFFF htb rate 1kbps ceil $DOWNLINKkbps prio 0

# add to the leaf class 2:10 for default traffic a sfq qdisc
$tc qdisc add dev $LAN_IFACE parent 0x2:0xFFFF handle 0xFFFF: sfq perturb 10

## The dynamic part called each time a new restriction for a couple domain/user is added
$tc class replace dev $LAN_IFACE parent 0x2:0x1 classid 0x2:0x$idHex htb rate 1bps ceil $speedDownkbps prio 1

# Add the sfq at the leaf class 2:1$id
$tc qdisc add dev $LAN_IFACE parent 0x2:0x$idHex handle 0x$idHex: sfq perturb 10

# $id is the mark added by iptables for this couple domain/user
$tc filter replace dev $LAN_IFACE parent 0x2:0 protocol ip prio 3 handle 0x$id fw flowid 0x2:0x$idHex
-------------- END SCRIPT --------------

Tüm normal trafik (hız sınırlaması olmadan) varsayılan sınıfa gitmeli ve kısıtlanmış olanın karşılık gelen tc sınıfına gönderilmesi gerekmektedir.

Cidden şüphe ettiğim nokta, varsayılan sınıf ve kısıtlı sınıf için minimum 1bps hız oranının kullanılması. Oluşturulacak kısıtlanmış sınıfların sayısını kontrol edemiyorum ve sınırlandırılmış sınıfın toplam oranını, kök sınıftan birinin üzerinde tutmak istemiyorum.

Başka bir nokta, varsayılan prio 0 ve sınırlı sınıfa prio 1 ekledim, bu yüzden varsayılan sınıfın ödünç alması gerekiyorsa (hemen hemen her zaman çok yavaş oranına göre), bu sınıf diğer kısıtlı alandan önce sunulacaktır. Ancak, varsayılan sınıfın tavanını root sınıfından biri olarak tutarsam, bu alanlar aç kalmayacak mı?

Birkaç çift alan / kullanıcı için hızı sınırlarken, kullanıcıların sınırlı bir kullanım için iyi bir etkileşim ve bant genişliği sağlamalarına nasıl izin verebilirim?

Varsayılan sınıfın burada yararlı olup olmadığını da merak ediyorum, çünkü htb qdisc için varsayılan bir sınıf belirtmezsem, filtrelerle eşleşen paketler donanım hızında çıkarılacak. (ancak burada yine kısıtlı sınıfı aç bırakarak?)

Tc ve QoS ağında gerçekten yeniyim, bu yüzden herhangi bir öneri, eleştirmen (yapıcı olanlar);

Vincent.

Yanıtlar:


2

Sınıflandırıcıları dahil etmediğiniz için, her bir sınıfta tam olarak ne demek istediğinizi kesin olarak belirlemek zor. Örneğin, giden http veya ssh trafiği etkileşim için çok önemlidir, gelen http çok fazla değildir.

Her hizmet için belirli bir bant genişliğini garanti ederim : “Gelen httpd trafiği için x kbps'im var ve kullanıcılar arasında eşit olarak bölünüyor. 10 veya 100 kullanıcınız varsa, adil. "Bu hizmetlerin her birinde yüksek öncelikli veya düşük öncelikli kullanıcılarınız varsa, onlar için ek sınıflar ve sınıflandırıcılar olması gerekir.

(Ayrıca, gelen trafiği yalnızca bir arabirimden giden trafiği şekillendirebileceğinizi biliyorsunuzdur, gelenleri DEĞİLDİR. Bu, uplink'i sınırlamak istiyorsanız, ya giden arabirimle internete çalışmak zorundasınız veya Orta Sıra Aygıtını kullanmak zorundasınız demektir . lartc.org Guide çok iyi bir kaynaktır.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.