小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linux 的帶寬管理系統(tǒng)

 yeqiwei 2006-01-12
Linux 的帶寬管理系統(tǒng)
2001-11-06 09:10:00· 溫福才· 中國(guó)Linux論壇

  Linux 包含復(fù)雜的帶寬管理系統(tǒng) TC (流量控制,Traffic Control)。該系統(tǒng)支持分類(lèi)、優(yōu)先、共享和輸入、輸出流量限制等。這套系統(tǒng)可以與專(zhuān)用的帶寬管理系統(tǒng)相媲美。

  1. 基本的構(gòu)成塊

  tc 包括三個(gè)基本的構(gòu)成塊: 隊(duì)列規(guī)定(queueing discipline )、類(lèi)(class)和分類(lèi)器(Classifiers) 。

  隊(duì)列規(guī)定可以看作設(shè)備的流量/數(shù)據(jù)包管理器。 隊(duì)列規(guī)定內(nèi)封裝了其他兩個(gè)主要TC組件(類(lèi)和分類(lèi)器),控制數(shù)據(jù)的流動(dòng)。

  目前,有一些設(shè)備隊(duì)列規(guī)定可以用來(lái)管理設(shè)備,包括類(lèi)基隊(duì)列(CBQ),優(yōu)先級(jí)和CSZ (Clark-Shenker-Zhang)等。CBQ 是一種超級(jí)隊(duì)列,即它能夠包含其它隊(duì)列(甚至其它CBQ)。

  類(lèi)由設(shè)備隊(duì)列規(guī)定來(lái)管理。類(lèi)由若干規(guī)則(rule)構(gòu)成,這些規(guī)則用以管理那個(gè)類(lèi)所擁有的數(shù)據(jù)。例如,某類(lèi)里的全部數(shù)據(jù)包都受到 1 Mbps的速率限度,而在午夜和早上6點(diǎn)的一段時(shí)間段內(nèi)允許最高達(dá) 3 Mbps。

  一些隊(duì)列規(guī)定可以綁定到類(lèi)上,包括FIFO(先進(jìn)先出),RED(隨機(jī)早期探測(cè)),SFQ(隨機(jī)公平隊(duì)列)和令牌桶(Token Bucket)。

  如果設(shè)備上未綁定隊(duì)列規(guī)定,則使用基本的FIFO。另外, CBQ,CSZ和優(yōu)先級(jí)也能用于類(lèi),以及類(lèi)的子類(lèi)。這表明使用TC,可以輕松地建造非常復(fù)雜的流量控制。管理類(lèi)的隊(duì)列規(guī)定可以稱(chēng)為類(lèi)隊(duì)列規(guī)定(class queueing disciplines)。

  一般地,類(lèi)隊(duì)列規(guī)定管理該類(lèi)的數(shù)據(jù)和隊(duì)列,能決定延遲、丟掉或者重新分類(lèi)它管理的包。分類(lèi)器或過(guò)濾器描述包,并且把他們映射到隊(duì)列規(guī)定所管理的類(lèi)。

  這些過(guò)濾器通常都提供簡(jiǎn)單的描述語(yǔ)言,指定選擇包、把包映射到類(lèi)的方法。

  目前,TC可以使用的過(guò)濾器有:fwmark分類(lèi)器,u32分類(lèi)器,基于路由的分類(lèi)器和RSVP分類(lèi)器(分別用于IPV6、IPV4)等;其中,fwmark分類(lèi)器允許我們使用 Linux netfilter 代碼選擇流量,而u32分類(lèi)器允許我們選擇基于 ANY 頭的流量 。所有的防火墻過(guò)濾器, 例如,ipchains,都能用來(lái)分類(lèi)包。

  TC代碼位于內(nèi)核,不同的功能塊既能編譯為模塊,也能直接編進(jìn)內(nèi)核。 與內(nèi)核代碼或模塊的通信和配置由用戶(hù)級(jí)程序tc完成。

  2. 示例

  2.1 編譯內(nèi)核

  首先要確保選中 Kernel/User netlink socket,因?yàn)橹挥羞@樣 tc 才能通過(guò) netlink 與內(nèi)核通訊。

  然后,把隊(duì)列規(guī)定和分類(lèi)器都編進(jìn)內(nèi)核。這其中包括:

  QoS or fair queueing, CBQ packet scheduler, CSZ packet scheduler, the simplest PRIO pseudoscheduler, RED queue, SFQ queue, TBF queue, QoS support, rate estimator, packet classifier API, routing-tables-based classifier, U32 classifier, special RSVP classifier 和 special RSVP classifier for IPv6。

  然后就是大家熟知的編譯和安裝過(guò)程了。

  2.2 建立

  [因特網(wǎng)] ---〈E3、T3 等〉--- [Linux 路由器] --- [Office+ISP]

  eth1 eth0

  上圖中的 Linux 路由器有兩個(gè)接口,不妨稱(chēng)之為 eth0 和 eth1。eth1 連接到路由器, eth0 連接到包括公司防火墻在內(nèi)的子網(wǎng)上。

  由于我們只能限制發(fā)送的內(nèi)容,所以我們需要兩套獨(dú)立的、但可能非常相似的規(guī)則集。我們可以通過(guò)改變發(fā)送次序來(lái)控制傳輸速率。通過(guò)修改 eth0 上的隊(duì)列,我們可以確定客戶(hù) 的下載(download)速率;通過(guò)修改 eth1 上的隊(duì)列,我們可以確定我們公司自己的用 戶(hù)的上載(upload)速率。

  比如說(shuō),公司連接到因特網(wǎng)的線(xiàn)路帶寬為 10 兆,同時(shí)滿(mǎn)足外部客戶(hù)和公司自己用戶(hù)的需要;此時(shí),我們就需要一種策略,來(lái)進(jìn)行管理和協(xié)調(diào)。CBQ 就可以滿(mǎn)足我們的要求。

  我們有兩個(gè)主類(lèi):‘ISP‘ 和 ‘Office‘。我們可以決定,客戶(hù)有 8 兆的帶寬,Office用戶(hù)有 2 兆的帶寬。

  我們首先發(fā)布如下的命令:

  # tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000

  其含義是:我們配置了 eth0 的隊(duì)列規(guī)定,root 表示這是根(root)規(guī)定,其句柄 (handle)設(shè)定為 10:‘。 其類(lèi)型為 CBQ。帶寬為 10 M,平均包大小為 1000 字節(jié)。
下面生成根類(lèi)(root class):

  # tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 10Mbit rate \
  10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000

  這條命令其實(shí)不比前一條命令有更多的含義。其中,1514 是 MTU 的值。

  下面生成 ISP 類(lèi):

  # tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 10Mbit rate \
  8Mbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 1000 bounded

  我們分配了 8 兆的帶寬給它,其中 bounded 表示該類(lèi)不能超過(guò)該閥值。

  下面生成 Office 類(lèi):

  # tc class add dev eth0 parent 10:1 classid 10:200 cbq bandwidth 10Mbit rate \
  2Mbit allot 1514 weight 200Kbit prio 5 maxburst 20 avpkt 1000 bounded

  為了更清晰起見(jiàn),我們的類(lèi)可以用下圖表示:

  我們已經(jīng)向內(nèi)核通知了我們的類(lèi),我們還需要告訴內(nèi)核如何管理隊(duì)列,如下所示:

  # tc qdisc add dev eth0 parent 10:100 sfq quantum 1514b perturb 15
  # tc qdisc add dev eth0 parent 10:200 sfq quantum 1514b perturb 15

  這里,我們使用了隨機(jī)公平隊(duì)列(sfq),在消耗 CPU 周期較少的情況下,其性能還是可以接受的。其它一些隊(duì)列規(guī)定可能更好,但要占用較多的 CPU 資源。令牌桶過(guò)濾器也經(jīng)常使用。

  下面還有一件事要作:告訴內(nèi)核網(wǎng)絡(luò)包和類(lèi)的映射關(guān)系。

  # tc filter add dev eth0 parent 10:0 protocol ip prio 100 u32 match ip dst \
150.151.23.24 flowid 10:200
  # tc filter add dev eth0 parent 10:0 protocol ip prio 25 u32 match ip dst \
150.151.0.0/16 flowid 10:100

  這里,我們假定 Office 位于防火墻 150.151.23.24 的后面,其它 IP 地址都屬于 ISP。 u32 匹配是一種比較簡(jiǎn)單的匹配,我們可以使用 netfilter 生成更加復(fù)雜的匹配規(guī)則。

  我們已經(jīng)分配了下載帶寬,下面是上載帶寬的分配:

  # tc qdisc add dev eth1 root handle 20: cbq bandwidth 10Mbit avpkt 1000

  # tc class add dev eth1 parent 20:0 classid 20:1 cbq bandwidth 10Mbit rate \
  10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000

  # tc class add dev eth1 parent 20:1 classid 20:100 cbq bandwidth 10Mbit rate \
  8Mbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 1000 \
  bounded

  # tc class add dev eth1 parent 20:1 classid 20:200 cbq bandwidth 10Mbit rate \
  2Mbit allot 1514 weight 200Kbit prio 5 maxburst 20 avpkt 1000 \
  bounded

  # tc qdisc add dev eth1 parent 20:100 sfq quantum 1514b perturb 15
  # tc qdisc add dev eth1 parent 20:200 sfq quantum 1514b perturb 15

  # tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip src \
  150.151.23.24 flowid 20:200

  # tc filter add dev eth1 parent 20:0 protocol ip prio 25 u32 match ip src \
  150.151.0.0/16 flowid 20:100

  這與前面的描述基本一致,所以就不做更多的解釋了。

  注:

  在前面的例子中,我們注意到:即使 ISP 客戶(hù)多數(shù)離線(xiàn),我們的 Office 用戶(hù)也仍然只 有 2 M 的帶寬,這是相當(dāng)浪費(fèi)的。我們可以刪掉 ‘bounded‘ 參數(shù),這樣,各類(lèi)之間就可以相互借用帶寬了。
但是,某些類(lèi)也許不希望向其它類(lèi)借用帶寬;比如,一條線(xiàn)路上的兩個(gè)互為競(jìng)爭(zhēng)對(duì)手的 ISP 的情況。在這種情況下,我們可以加上關(guān)鍵字 ‘isolated‘。

  3. 結(jié)束語(yǔ)

  目前,Linux 所提供的 QoS(服務(wù)質(zhì)量)是所有操作系統(tǒng)中最復(fù)雜、最完善的。另外, BSD 的 ALTQ 應(yīng)該說(shuō)也相當(dāng)不錯(cuò);但是,在復(fù)雜性、靈活性和可擴(kuò)展性等方面要落后 Linux 一大截。我不太清楚微軟的產(chǎn)品是否提供了這方面的功能。Sun 的 Solaris 提供 了 CBQ 和 RSVP 的功能。

  Linux 也支持 IETF diffserv 特征。Linux 在 QoS 方面眾多的特征,將極大提升 Linux 的市場(chǎng)占有率。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多