Tbf cinsinden kova boyutu


11

Linux'un token kova filtresi (tbf) hakkında birçok kez okudum ve hala burstve latencyparametreleri nasıl hesaplamam gerektiğini tam olarak anlamıyorum , utanç:

Sanırım makul bir gecikme yaklaşık 50 ms'dir. Tamam, ama patlamanın değeri ne olmalı?

Manpage diyor ki:

İkinci hesaplama, kepçenin boyutunu, oranı ve muhtemelen zirve oranını (ayarlanmışsa) dikkate alır. Bu iki parametre birbirini dışlar.

Peki gecikme, kova ve filtreyle nasıl ilişkilidir? Hesaplamak için bir formül var mı? Yoksa "Tamam, X baytlık patlama ve Y saniye gecikme benim için iyi" midir?


1
Bunu belirsiz bulan herkes için: tbfLinux trafik kontrol çerçevesinin bir parçasıdır. man tbfveya man tc-tbfbelgeleri getirmelidir.
derobert

1
Düzenlemenizden, kavramsal olarak bir token kova filtresinin ne olduğu hakkında bir açıklamaya ihtiyacınız olduğu anlaşılıyor. Bir bilgisayarın
önündeyken cevabıma bir tane ekleyeceğim

Sonunda kavramsal açıklama eklendi
derobert

Yanıtlar:


16

Manpage'de, tek kısıtlama burstyapılandırılmış oranınıza izin verecek kadar yüksek olması gerektiğidir: en azından oran / HZ olmalıdır. HZ bir çekirdek yapılandırma parametresidir; çekirdek yapılandırmanızı kontrol ederek sisteminizde ne olduğunu anlayabilirsiniz. Örneğin, Debian'da şunları yapabilirsiniz:

$ egrep '^CONFIG_HZ_[0-9]+' /boot/config-`uname -r`
CONFIG_HZ_250=y

Bu yüzden sistemimdeki HZ 250'dir. 10mbps'lik bir hıza ulaşmak burstiçin en az 10.000.000 bit / sn ÷ 250 Hz = 40.000 bit = 5000 bayt gerekir. (Kılavuzdaki daha yüksek değerin, HZ = 100 varsayılan değer olduğuna göre değişir).

Ancak bunun ötesinde burstbir politika aracıdır. İleride kullanmak üzere "kaydetmek" için şimdi daha az bant genişliği kullanabileceğiniz boyutlarda yapılandırır. Buradaki yaygın bir şey, büyük indirmeleri kısıtlarken küçük indirmelerin (örneğin bir web sayfası) çok hızlı gitmesine izin vermek isteyebilmenizdir. Bunu burst, küçük bir indirmeyi düşündüğünüz boyuta artırarak yaparsınız . (Yine de, htb gibi sınıflı bir qdisc'e geçersiniz, böylece farklı trafik türlerini segmentlere ayırabilirsiniz.)

Yani: patlamayı en az istenen seviyeye ulaşacak kadar büyük olacak şekilde yapılandırırsınız rate. Bunun ötesinde, elde etmeye çalıştığınız şeye bağlı olarak onu daha da artırabilirsiniz.

Token Kova Filtresinin Kavramsal Modeli

Jeton Kovası Filtresi

"Kepçe" mecazi bir nesnedir. Temel özellikleri, belirteçleri tutabilmesi ve tutabileceği belirteç sayısının sınırlı olmasıdır - daha fazla eklemeye çalışırsanız, "taşar" ve ekstra belirteçler kaybolur (tıpkı bir gerçek kova). Kepçenin boyutu denir burst.

Bir paketi ağa gerçekten iletmek için, bu paket bayt cinsinden veya mpu(hangisi daha büyükse) boyutuna eşit jetonlar edinmelidir .

Belirteçleri bekleyen bir paket (sıra) var (veya olabilir). Bu, kova boş olduğunda veya alternatif olarak paketin boyutundan daha az jeton olduğunda oluşur. Kovanın önündeki kaldırımda sadece çok fazla yer vardır ve oda miktarı (bayt cinsinden) doğrudan tarafından belirlenir limit. Alternatif olarak, dolaylı olarak ayarlanabilir latency(ideal bir dünyada, hesaplama rate× olacaktır latency).

Çekirdek, filtrelenen arabirimden bir paket göndermek istediğinde, paketi satırın sonuna yerleştirmeye çalışır. Kaldırımda herhangi bir yer yoksa, bu paket için talihsiz bir durumdur, çünkü kaldırımın sonunda dipsiz bir çukur vardır ve çekirdek paketi düşürür.

Son parça kovaya her tik takan rate/ belirten bir belirteç yapma makinesidir HZ. (Bu nedenle kepçeniz en azından bu kadar büyük olmalıdır, aksi takdirde yeni basılmış bazı jetonlar hemen atılır).


Patlamanın bunun tersi olduğunu düşündüm, bir an için oranın üzerine çıkmanıza izin verdiniz, daha sonra ortalama orana ulaşmak için daha düşük bir oranla telafi edildi ...
sebelk

@sebelk RTFS olmadan emin değilim, ancak şu anda üzerinde çalışan bir arabirime tbf eklendiğinde aynı sonuca varır rate. Ya da değil, sadece kova dolu başladığını söyleyebiliriz ...
derobert

@sebelk: Bu da doğru. 1000 baytlık (seri çekim boyutu) bir kovaya sahip olduğumuzu ve token oranının 10 bayt pr olduğunu varsayalım. ikinci. Dolayısıyla, 100 saniye boyunca hiçbir paket gelmezse, kova doldurulacaktır. Daha sonra gelen 1000 baytlık paket sıraya alınmadan derhal iletilir, diğer bir deyişle. belirteç oluşturma oranının üzerinde olabilen veri hızında bir patlama.
Bjarke Freund-Hansen

5

Derobert'in tamamlayıcısı için başka bir cevap.

Öncelikle modern Intel CPU'larda kullanım kılavuzu güncel değil. Modern CPU'ların yüksek çözünürlüklü zamanlayıcıları vardır ve modern Linux daha az tıkır - kelimenin tam anlamıyla zamanlayıcı keneleri yoktur. Bu nedenle, kepçeleri bir zamanlayıcıda tutacak kadar büyük yapan tüm yorumlar önemsizdir. Aslında, kova benzetmesi yalnızca kullanıcının zamanlayıcı ayrıntı düzeyi ile gönderme hızı arasındaki etkileşimi anlamasına yardımcı olmak için oradaydı. Artık Linux modern donanımda nanosaniye zamanlayıcılara sahip olduğundan, kullanışlılığını kaybediyor.

TBF için, burst parametresi, hız sınırlaması ( oranla belirtilir ) devreye girmeden sınırsız hızda gönderilebilen bayt sayısıdır. Hız sınırlaması tekrar patlamanın tek yoluna geldiğinde, göndermenizi bu hızın altına sınırlamaktır. .

Örneğin, tbf burst parametrenizin 10K bayt olduğunu ve tbf rate parametrenizin 2K bayt / saniye olduğunu ve şu anda oran sınırlı olduğunuzu varsayalım (yani, patlama tükendi, bu nedenle 2kbps'de gönderme ile sınırlısınız). Gönderdiğiniz hızı 10 saniye boyunca 1Kbps'ye gönüllü olarak düşürdüyseniz, 10K baytlık patlama ödeneğinizi tekrar geri toplarsınız (= (2000 [bayt / sn] - 1000 [bayt / sn]) * 10 sn). 10 saniyeden daha uzun süre 1 kb / sn'nin altında tutmanın bir etkisi olmaz çünkü tbf, burst parametresinden daha fazla biriktirmenize izin vermez .

Harcamaları tamamen durdurduysanız, patlama ödeneğinizi 5 saniye içinde tekrar alırsınız (= 100000 [bayt] / 2000 [bayt / sn]).

Tüm patlama izninizi kullanmak için geri almak zorunda değilsiniz, biriktirdiğiniz kadar kullanabilirsiniz.

Bu bakmanın bir başka yolu şudur: göndermesine izin verilen patlama sınırsız hızda bayt, bundan sonra uzun vadeli ortalama hızı aşmak asla oranı . Bu uzun vadeli bir ortalama olduğu için altına düşer Ancak, oran ama o zaman bile yalnızca en az tam olarak göndermesine izin verilen - Eğer tam hızda göndererek yetişmek için izin verilen patlama olduğunu yapmazsa (bayt ve yakalamanıza izin veremezsiniz).

Diğer kırışıklık TBF sahiptir ikisini bu miktar sınırlayıcı ve trafik hem geçmek zorunda. İkincisinde, burst parametresine mtu denir ve hıza pikrat denir . İlkini gönderebileceği hızı sınırlamak için bu ikincisini kullanmanız gerekiyor. Bu ikincisini kullanmak isteğe bağlıdır ve eğer kullanmazsanız, patlamalar cihaz hızında gönderilir.

Son olarak, tbf bir limit parametresine sahiptir. Program sürekli olarak hızdan daha hızlı gönderirse , paketler kuyrukta birikecektir. Sonsuz çekirdek belleği yoktur, bu nedenle sınır , çekirdek paketleri atmadan önce kaç bayt birikebileceğini belirtir.

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.