作者 主題: 關於「技巧心得-- 達成頻寬控管!!」之疑問及研究...  (閱讀 6690 次)

0 會員 與 1 訪客 正在閱讀本文。

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
您好!

首先,先對先一步去幫忙開路的前輩,致上小弟的敬意!

不過,小弟對文章的內容,有幾個地方有些竟簸搳G

1.在文章的開頭,作者宣告了一行命令:
{
 tc qdisc add dev eth0 root handle 10: cbq bandwidth 64Kbit avpkt 1000
}  其中,請前輩們指導一下,為甚麼有  root handle 「10: 」 這是甚麼意思呢?
2. bandwidth 64Kbit 是在定義,全部的頻寬(不論上下傳)都是64KBPS嗎?  還是有其他的意涵?  avpkt 1000  又是在定義些甚麼??
3.tc class add dev eth0 parent 10:1 classid 10:300 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
在這一段中,作者宣告了 parent 10:1 classid 10:300,這裡意思,是否是定義說,限制這個 classid 為 10:300的人,所佔用資源為十分之一呢? 還有,後面bandwidth 64Kbit rate 18Kbit 這段的含意,好像跟我前面的想法有所衝突,這..??

4. 是否,你要管制多少IP,就要「成雙成對」的,分別宣告「上傳頻寬、管理佇列、核心宣告、下傳頻寬定義、管理佇列、下傳核心宣告」,這樣六個區塊呢?


請各位前輩,給小弟一點指引... 小弟先行謝過!

此致

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
大家好,好久沒有上來露臉了。
今天才做好某國小的每間教室有一個資訊插座,42間一半工程
要等幾天再做另一半,剛好有空來回答一下,順及交流一下吧。

tc qdisc add dev eth0 root handle 10: cbq bandwidth 64Kbit avpkt 1000

root handle 10:
這是宣告eth0最上層的佇列路徑名稱,為10:

而 bandwidth 64Kbit
則是宣告eth0這個介面的頻寬為64Kbit

上下傳的頻寬要分別設定,如要定義幾台電腦的話,可以用ip的範圍來設定。

avpkt 1000 是說最大的封包數量。

parent 10:1 classid 10:300 是說10:300這個類別,是從10:1所分出去的。

bandwidth 64Kbit rate 18Kbit  是說從64kbit 分出18kbit 給這個類別10:300用的。

4. 是否,你要管制多少IP,就要「成雙成對」的,分別宣告「上傳頻寬、管理佇列、核心宣告、下傳頻寬定義、管理佇列、下傳核心宣告」,這樣六個區塊呢?
答案是對的。

以上的答案是我參考netman大哥所翻的文章下去測試而成的。
如有問題錯誤麻煩糾正一下,順便交流一下,因為有某部份還是不很清楚呢。

而我的頻寬控制巳經運做了3個多月,不會因寄個信件而塞車。

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
您好!

小弟先說明一下,小弟的問題所在:
第一,您說到
tc qdisc add dev eth0 root handle 10: cbq bandwidth 64Kbit avpkt 1000
root handle 10:
這是宣告eth0最上層的佇列路徑名稱,為10:

為甚麼要設定「10冒號」呢?  10冒號代表的是甚麼意思呢?

第二,在而 bandwidth 64Kbit部分:
您說是「宣告eth0這個介面的頻寬為64Kbit」,那麼,像一般的網路卡,皆是100MBPS的,那我是否就可以設定為bandwidth 100Mbit呢?

或者,我想讓他這個地方,變成上下傳不對稱例如UP/DOWN比例為3 / 7,是否可行?

第三,您提到說,「avpkt 1000 」這個部分,解釋為最大的封包數量。那麼,跟MTU的設定,是否有衝突的地方?  還是說,這裡的參數,並不會引響網路卡本身的運作,而只是針對這個使用者所能操作的頻寬?  但是怎麼會在最上層做全域宣告呢??

第四,parent 10:1 classid 10:300 是說10:300這個類別,是從10:1所分出去的。但是,怎麼知道,我的網路類別是10:300,且是從10:1(我之前一直以為是以十比一的頻寬傳遞... 原來不是啊~),這個10:300與10:1,要去哪裡查詢?

第五,「bandwidth 64Kbit rate 18Kbit 是說從64kbit 分出18kbit 給這個類別10:300用的」,也就是說,實際上的頻寬分配,是由這裡的定義,而交由系統處理。換言之,假設我現在的目標是分配100Mbps,給使用者A為1Mbps,就應該定義成「bandwidth 100Mbit rate 1Mbit 」這樣嗎?  還有,如果最後總頻寬超過或不足整數,系統會怎樣處理呢?


感謝前輩不辭辛勞解答小弟問題,小弟在此感謝前輩...^_^

此致

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
 Re: 關於「技巧心得-- 達成頻寬控管!!」之疑問及研究...
作者: 日京三子 (---.hwayi.com)
日期:   02/01/14 12:53

您好!

小弟先說明一下,小弟的問題所在:
第一,您說到
tc qdisc add dev eth0 root handle 10: cbq bandwidth 64Kbit avpkt 1000
root handle 10:
這是宣告eth0最上層的佇列路徑名稱,為10:

為甚麼要設定「10冒號」呢? 10冒號代表的是甚麼意思呢?

==>因為10:是代表最上層的入口類別名稱(只是標記,符號而巳)
   如果你巳經在運作這些程式時,下個顯示所有分類所分得到封包數量及Bit
   你就會發現從內部eth0介面出去的資料是從10: 這個佇列緩衝區進入,再分配給
   底下的個個再分類的佇列緩衝區內。
   例如:訊息是這樣的,
     tc -s class ls dev eth0
     class cbq 10:root rate 64Kbit(bounded)prio no-transmit sent 17725304
bytes 32088 pkts



第二,在而 bandwidth 64Kbit部分:
您說是「宣告eth0這個介面的頻寬為64Kbit」,那麼,像一般的網路卡,皆是100MBPS的,那我是否就可以設定為bandwidth 100Mbit呢?

===># 下例為上傳:宣告佇列戒律
抱歉了你那些資料有點比較舊的我忘記更新了
新的是這樣的:
tc qdisc add dev eth0 root handle 10: cbq bandwidth 100Mbit avpkt 10000
bandwidth 是代表網路卡頻寬,avpkt 是最大封包數量
                                                                               
# 宣告頂層的類別為:  10:0
tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 100Mbit
rate 60Kbit allot 1514 weight 3Kbit prio 8 maxburst 3 avpkt 60 bounded
而這是從10: 分一個頂層的類別名字為10:1的類別
介面頻寬為1000Mbit 封包數量為10000
也在這裏宣告這個類別所得到上傳頻寬是60kbit
封包為60個 不得借用別的頻寬


或者,我想讓他這個地方,變成上下傳不對稱例如UP/DOWN比例為3 / 7,是否可行?

==>那是看所設給它的值是多少它就是多少。

第三,您提到說,「avpkt 1000 」這個部分,解釋為最大的封包數量。那麼,跟MTU的設定,是否有衝突的地方? 還是說,這裡的參數,並不會引響網路卡本身的運作,而只是針對這個使用者所能操作的頻寬? 但是怎麼會在最上層做全域宣告呢??

===>就我所知是 10Mbit =1000 100Mbit=10000 不知道對不對,無從測試,
    那MTU 那還有測試到那裏。請參考netman 所翻的文章

第四,parent 10:1 classid 10:300 是說10:300這個類別,是從10:1所分出去的。但是,怎麼知道,我的網路類別是10:300,
且是從10:1(我之前一直以為是以十比一的頻寬傳遞... 原來不是啊~),這個10:300與10:1,要去哪裡查詢?

==>那只是類別名稱而巳,rate 是你所設定頻寬大小的值。

第五,「bandwidth 64Kbit rate 18Kbit 是說從64kbit 分出18kbit 給這個類別10:300用的」,也就是說,實際上的頻寬分配,是由這裡的定義,而交由系統處理。換言之,假設我現在的目標是分配100Mbps,給使用者A為1Mbps,就應該定義成「bandwidth 100Mbit rate 1Mbit 」這樣嗎?

===>那是對的。

還有,如果最後總頻寬超過或不足整數,系統會怎樣處理呢?

==>那是看所設定的最頂層10:1 給多少頻寬而定。
   以及每個類別的優先等級所分配的

感謝前輩不辭辛勞解答小弟問題,小弟在此感謝前輩...^_^

===>不用那麼文文謅謅呢?

此致

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
前輩您好~

看完前輩的解說,小弟終於敢放手拿公司的伺服器來開玩笑了... Ok, 先嘗試一下設定,如果有問題,再來跟您請教....

此致

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
您好~

 小弟嘗試了一下,發現,小弟的電腦,連執行tc -s class ls dev eth0都會發生困難! 系統會回應RTNETLINK answers: Invalid argument  Dump terminated,看起來像是訴說著,後面參數發生錯誤之類的訊息...

這下子怎麼辦呢?  小弟的電腦是RedHat 7.0的版本,安裝是everything....

此致

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
要red hat 7.1 以上及含7.1才可以
然後核心要重先編譯選QOS的選項內的所有小選項全部圈選
就可以執行頻寬刺管的程式

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
喔...

哇~  看樣子,小弟要先重新編譯核心了...^^    當初偷懶果然不是對的..

對了,他到底是需要甚麼套件呢?  能否告知小弟一下呢?

此致

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
要什麼套件不很清楚
我的核心是2.4.2-2

我在按裝red hat 7.1時,什麼服務都不選,只是選能夠編譯
的套 件, 例如:按裝到最後不是有讓你選詳細套件跟大方向的套件

我是勾選能編譯弁鄋漕滬蚇龠窗A我打算讓這主機控管頻寬,
所以只占300M多而巳

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
您好,我也去看了文件,也照做了,看樣子是有 work ,但是要如何才能,
確定,頻寬有受到管理
=========================
http://www.kuolung.net
==========================

Anonymous

  • 訪客
我執行到下列命令:
iptables -I PREROUTING -t mangle -s 192.6.1.43 -j MARK --set-mark 1
卻出現了下面錯誤!!
iptables: libiptc/libip4tc.c:384: do_check: Assertion `h->info.valid_hooks == (1 << 0 | 1 << 3)' failed.
Aborted

這已經困擾我好幾天了...

bil

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
那ADSL撥接的也可以用嗎!?ppp0?
« 回覆 #11 於: 2002-07-07 17:20 »
那ADSL撥接的也可以用嗎!?ppp0介面?
那就只需要一張網路卡!??

或者是有相關的文章! ^^讓我可以研究一下! ^^
如果512/64....用3台PC來衡量的話....
我上傳大改要切多少K左右?
才感覺不會很慢ㄋㄟ!? ^^

我是Linux新手! ^^以後還要跟前輩們多多學習!!