發表文章

目前顯示的是 七月 6, 2012的文章

TC (traffic control)

圖片
一、TC原理介紹 Linux操作系統中的流量控制器TC(Traffic Control)用於Linux內核的流量控制,主要是通過在輸出端口處建立一個隊列來實現流量控制。 Linux流量控制的基本原理如下圖所示。
接收包從輸入接口(Input Interface)進來後,經過流量限制(Ingress Policing)丟棄不符合規定的數據包,由輸入多路分配器(Input De-Multiplexing)進行判斷選擇:如果接收包的目的是本主機,那麼將該包送給上層處理;否則需要進行轉發,將接收包交到轉發塊(Forwarding Block)處理。轉發塊同時也接收本主機上層(TCP、UDP等)產生的包。轉發塊通過查看路由表,決定所處理包的下一跳。然後,對包進行排列以便將它們傳送到輸出接口(Output Interface)。一般我們只能限制網卡發送的數據包,不能限制網卡接收的數據包,所以我們可以通過改變發送次序來控制傳輸速率。Linux流量控制主要是在輸出接口排列時進行處理和實現的。 二、TC規則 1、流量控制方式 流量控制包括以下幾種方式: SHAPING(限制)
     當流量被限制,它的傳輸速率就被控制在某個值以下。限制值可以大大小於有效帶寬,這樣可以平滑突發數據流量,使網絡更爲穩定。shaping(限制)只適用於向外的流量。 SCHEDULING(調度)
     通過調度數據包的傳輸,可以在帶寬範圍內,按照優先級分配帶寬。SCHEDULING(調度)也只適於向外的流量。 POLICING(策略)
     SHAPING用於處理向外的流量,而POLICIING(策略)用於處理接收到的數據。 DROPPING(丟棄)
     如果流量超過某個設定的帶寬,就丟棄數據包,不管是向內還是向外。 2、流量控制處理對象 流量的處理由三種對象控制,它們是:qdisc(排隊規則)、class(類別)和filter(過濾器)。 QDISC(排隊規則)
     QDisc(排隊規則)是queueing discipline的簡寫,它是理解流量控制(traffic control)的基礎。無論何時,內核如果需要通過某個網絡接口發送數據包,它都需要按照爲這個接口配置的qdisc(排隊規則)把數據包加入隊列。然後,內核會儘可能多地從qdisc裏面取出數據包,把它們交給網絡適配器驅動模塊。最簡單的QDisc是pfifo…