Linux流量控制的基本實(shí)現(xiàn)和具體使用
一般企業(yè)內(nèi)部網(wǎng)絡(luò)有足夠的帶寬可以使用。但是,在企業(yè)接入Internet的部分都是一個(gè)有限的流量。為了提高網(wǎng)絡(luò)的使用質(zhì)量,保證用戶按照網(wǎng)絡(luò)中業(yè)務(wù)設(shè)計(jì)的要求來(lái)使用整個(gè)網(wǎng)絡(luò)的帶寬,可以從流量控制服務(wù)器的角度分析、優(yōu)化Linux系統(tǒng),給企業(yè)服務(wù)帶來(lái)便利和高效。下面一起來(lái)看看Linux 流量控制的實(shí)現(xiàn)和具體使用情況。
Linux流量控制的基本實(shí)現(xiàn)
Linux操作系統(tǒng)中的流量控制器(TC)主要是通過(guò)在輸出端口處建立一個(gè)隊(duì)列來(lái)實(shí)現(xiàn)流量控制。Linux從2.1.105版內(nèi)核開(kāi)始支持流量控制,使用時(shí)需要重新編譯內(nèi)核。Linux流量控制的基本實(shí)現(xiàn)可簡(jiǎn)單地由圖1來(lái)描述。從圖1可以看出,內(nèi)核是如何處理接收包、如何產(chǎn)生發(fā)送包,并送往網(wǎng)絡(luò)的。

圖1 Linux流量控制的基本實(shí)現(xiàn)
接收包進(jìn)來(lái)后,由輸入多路分配器(Input De-Multiplexing)進(jìn)行判斷選擇:如果接收包的目的是本主機(jī),那么將該包送給上層處理;否則需要進(jìn)行轉(zhuǎn)發(fā),將接收包交到轉(zhuǎn)發(fā)塊(Forwarding Block)處理。轉(zhuǎn)發(fā)塊同時(shí)也接收本主機(jī)上層(TCP、UDP等)產(chǎn)生的包。轉(zhuǎn)發(fā)塊通過(guò)查看路由表,決定所處理包的下一跳。然后,對(duì)包進(jìn)行排列以便將它們傳送到輸出接口(Output Interface)。Linux流量控制正是在排列時(shí)進(jìn)行處理和實(shí)現(xiàn)的。

圖2 流量控制基本框架
如圖2所示,Linux流量控制主要由三大部分來(lái)實(shí)現(xiàn):
◆ 隊(duì)列規(guī)則(Queue Discipline)
◆ 分類(lèi)(Classes)
◆ 過(guò)濾器(Filters)
因此,Linux流量控制主要分為建立隊(duì)列、建立分類(lèi)和建立過(guò)濾器三個(gè)方面。其基本實(shí)現(xiàn)步驟為:
(1)針對(duì)網(wǎng)絡(luò)物理設(shè)備(如以太網(wǎng)卡eth0)綁定一個(gè)隊(duì)列;
(2)在該隊(duì)列上建立分類(lèi);
(3)為每一分類(lèi)建立一個(gè)基于路由的過(guò)濾器。
【編輯推薦】