TC ile yavaş bir bağlantının simülasyonu


9

Üzerinde ağ trafiğini sınırlamak istiyorum bir linux kutusu (Centos 5.5) var. İstemcilere dağıttığımız bir uygulamam var ve 256Mbit / sn'lik minimum önerilen bant genişliğinde test etmek istiyorum. Şimdiye kadar gördüğüm tc öğreticileri, bant genişliğini belirli kriterlere göre sınırlandırmanıza izin veriyor gibi görünüyor, ancak tüm durumlarda bant genişliğini sınırlamak istiyorum (IP başlığının nasıl göründüğüne bakılmaksızın, tüm IP adreslerine / adreslerinden).

Bir öğretici kullanmamı önerdi:

tc filter add dev eth0 protocol ip parent 10: prio 2 flowid 10:2

ama aşağıdaki hatayı alıyorum:

Unknown filter "flowid", hence option 10:2 is unparsable

Her koşulda eth0'a giren / çıkan bant genişliğini nasıl sınırlandıracağınız konusunda herhangi bir fikriniz var mı?

Yanıtlar:


11

Tüm giden trafiğe sınırlama uygulamak istiyorsanız, filtrelere ihtiyacınız yoktur. Sadece qdisc'inizi arayüz kök tutamağına şu şekilde ekleyin:

tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

Gelen trafiği şekillendirmek / polis yapmak istiyorsanız, biraz daha karmaşıktır. Örneğin bir IFB arayüzü kullanmanız gerekir:

modprobe ifb
ip link set dev ifb0 up
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
#  ^- this is a dummy filter, match u32 0 0 matches all traffic
tc qdisc add dev ifb0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

İşte iki basit filtre kullanarak farklı bir yaklaşım:

tc qdisc add dev eth0 ingress
tc filter add dev eth0 root         protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1

Çözümünüzü hackledim ama işe yarayamıyorum. Komutlarınızı çalıştırıyorum, Firefox'u açıyorum, bir indirme işlemi başlatılır ve çok hızlı bir şekilde indirilir. Bir ifconfig yaptığımda ben ifb0 altında bazı RX ve TX paketleri görmek gerekiyor muyum (çünkü değil)? Teşekkürler.
rancidfishbreath

Bir ifb arayüzü olmadan çalışan farklı bir yaklaşım ekledim.
al.

İki basit filtreyi kullanan ikinci yaklaşım harika çalışıyor! Çok teşekkürler. Bu çözümü gerçekten seviyorum çünkü basit ve anlaşılması kolay.
rancidfishbreath

Harika teşekkürler, yeni soru, çalıştırdıktan sonra sınırı nasıl kaldırabilirim tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540? Teşekkürler!
SSH Bu

Kısma nasıl kapatılır ve eski haline geri döndürülür? Pls "iki basit filtre kullanarak farklı yaklaşım" sürümüne çok nazik olursanız yanıt verir. "Man tc" ... her zamanki gibi ezici.
Geoffrey Anderson


0

Bunun gibi 1 cetvel eklediniz tc qdisc add dev eth0 root handle 10: htb default 20

senin gibi acı

tc filtre dev eth0 protokolü eklemek ip ebeveyn 10: prio 2 akışkan 10: 2

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.