手机流量共享 linux,linux – 通过HTB共享带宽和优先处理实时流量,哪种方案更好?...
我想在我們的互聯(lián)網(wǎng)線路上添加一些流量管理.在閱讀了大量文檔之后,我認(rèn)為HFSC對(duì)我來說太復(fù)雜了(我不了解所有曲線的東西,我擔(dān)心我永遠(yuǎn)不會(huì)把它弄好),CBQ不推薦,基本上HTB就是通往適合大多數(shù)人.
我們的內(nèi)部網(wǎng)絡(luò)有三個(gè)“段”,我想在這些段之間或多或少地分享帶寬(至少在開始時(shí)).此外,我必須根據(jù)至少三種流量(實(shí)時(shí)流量,標(biāo)準(zhǔn)流量和批量流量)確定流量的優(yōu)先級(jí).帶寬共享并不像實(shí)際流量應(yīng)盡可能始終被視為高級(jí)流量那樣重要,但當(dāng)然也沒有其他流量類別可能會(huì)餓死.
問題是,什么更有意義,也保證更好的實(shí)時(shí)吞吐量:
>每個(gè)段創(chuàng)建一個(gè)類,每個(gè)具有相同的速率(根據(jù)HTB開發(fā)人員,優(yōu)先級(jí)對(duì)于沒有葉子的類沒有關(guān)系),并且這些類中的每一個(gè)都有3個(gè)子類(葉子)用于3個(gè)優(yōu)先級(jí)(具有不同的優(yōu)先事項(xiàng)和不同的費(fèi)率).
>每個(gè)優(yōu)先級(jí)有一個(gè)類,每個(gè)具有不同的速率(再次優(yōu)先級(jí)無關(guān)緊要),每個(gè)具有3個(gè)子類,每個(gè)段一個(gè),而實(shí)時(shí)類中的所有3個(gè)具有最高的prio,最低的prio批量類,等等.
我將嘗試使用以下ASCII藝術(shù)圖像使其更清晰:
Case 1:
root --+--> Segment A
| +--> High Prio
| +--> Normal Prio
| +--> Low Prio
|
+--> Segment B
| +--> High Prio
| +--> Normal Prio
| +--> Low Prio
|
+--> Segment C
+--> High Prio
+--> Normal Prio
+--> Low Prio
Case 2:
root --+--> High Prio
| +--> Segment A
| +--> Segment B
| +--> Segment C
|
+--> Normal Prio
| +--> Segment A
| +--> Segment B
| +--> Segment C
|
+--> Low Prio
+--> Segment A
+--> Segment B
+--> Segment C
案例1似乎大多數(shù)人都會(huì)這樣做,但除非我沒有正確閱讀HTB實(shí)施細(xì)節(jié),否則案例2可能會(huì)提供更好的優(yōu)先級(jí).
HTB手冊(cè)說,如果一個(gè)類已經(jīng)達(dá)到它的速率,它可以從其父級(jí)借用,并且在借用時(shí),具有更高優(yōu)先級(jí)的類總是首先獲得帶寬.但是,它還說,無論優(yōu)先級(jí)如何,在較低樹級(jí)別上具有可用帶寬的類總是優(yōu)先于較高樹級(jí)別的類.
讓我們假設(shè)以下情況:段C不發(fā)送任何流量.段A只能盡可能快地發(fā)送實(shí)時(shí)流量(足以使鏈路單獨(dú)飽和),而段B只發(fā)送大量流量,速度盡可能快(再次,足以使單獨(dú)的完整鏈路飽和).會(huì)發(fā)生什么?
情況1:
段A->高Prio和段B-> Low Prio都有要發(fā)送的數(shù)據(jù)包,因?yàn)锳-> High Prio具有更高的優(yōu)先級(jí),它將始終首先被調(diào)度,直到它達(dá)到其速率.現(xiàn)在它試圖從A段借款,但由于A段處于較高水平而且B段> Low Prio尚未達(dá)到其速率,因此該類現(xiàn)在首先服務(wù),直到它也達(dá)到該速率并且想要借入從B段開始.一旦兩者都達(dá)到了他們的費(fèi)率,兩者都再次處于同一水平,現(xiàn)在A – >&High Prio將再次獲勝,直到它達(dá)到A段的速度.現(xiàn)在它試圖從根借(由于段C沒有使用任何保證的流量,因此它有足夠的流量備用,但同樣,它必須等待段B->低Prio也達(dá)到根級(jí)別.一旦發(fā)生這種情況,將再次考慮優(yōu)先級(jí),此時(shí)段A-> High Prio將獲得段C留下的所有帶寬.
案例2:
高Prio->段A和低Prio->段B都有要發(fā)送的數(shù)據(jù)包,再次高Prio->段A將獲勝,因?yàn)樗哂懈叩膬?yōu)先級(jí).一旦它達(dá)到它的速率,它試圖借用具有帶寬備用的High Prio,但是在更高的水平上,它必須再次等待低Prio-> B段B也達(dá)到它的速率.一旦兩者都達(dá)到了他們的速度并且都必須借用,高Prio-> A段將再次獲勝,直到它達(dá)到High Prio級(jí)別的速度.一旦發(fā)生這種情況,它會(huì)嘗試從root中借用,這又剩下足夠的帶寬(此時(shí)Normal PRo的所有帶寬都沒有使用),但它必須再次等待,直到低Prio-> B段達(dá)到速率限制為止Low Prio類,也試圖從root借用.最后,兩個(gè)類都試圖從root中借用,優(yōu)先級(jí)被考慮在內(nèi),而High Prio-> Segment A獲得所有帶寬已經(jīng)剩下的.
這兩種情況看起來都是次優(yōu)的,因?yàn)閷?shí)時(shí)流量有時(shí)必須等待大量流量,即使有足夠的帶寬可以借用.但是,在情況2中,實(shí)時(shí)流量似乎必須等于情況1,因?yàn)樗恍枰鹊竭_(dá)到批量流量速率,這很可能小于整個(gè)流量的速率(以防萬一) 1這是它必須等待的速度).或者我在這里完全錯(cuò)了?
我想到了更簡(jiǎn)單的設(shè)置,使用優(yōu)先級(jí)qdisc.但優(yōu)先隊(duì)列有一個(gè)很大的問題,即如果它們不受某種限制,就會(huì)導(dǎo)致饑餓.饑餓是不可接受的.當(dāng)然,可以將TBF(令牌桶過濾器)放入每個(gè)優(yōu)先級(jí)以限制速率,從而避免饑餓,但是這樣做時(shí),單個(gè)優(yōu)先級(jí)類不能再自行飽和鏈接,即使所有其他優(yōu)先級(jí)類別也是如此是空的,TBF將防止這種情況發(fā)生.這也是次優(yōu)的,因?yàn)槿绻麤]有其他類目前需要其中任何一個(gè)類,為什么一個(gè)類不能獲得100%的線路帶寬?
有關(guān)此設(shè)置的任何意見或想法?使用標(biāo)準(zhǔn)的tc qdiscs似乎很難.作為程序員,如果我可以簡(jiǎn)單地編寫自己的調(diào)度程序(我不允許這樣做),這是一項(xiàng)非常容易的任務(wù).
總結(jié)
以上是生活随笔為你收集整理的手机流量共享 linux,linux – 通过HTB共享带宽和优先处理实时流量,哪种方案更好?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打电话怎么能不显示电话号码
- 下一篇: linux shell ls -l,li