發表文章

目前顯示的是 七月, 2016的文章

TC流量控制 ingress

From http://dp2u.com/2014/tc-control.html Introduction Linux操作系統中的流量控制器TC(Traffic Control)用於Linux內核的流量控制,它利用隊列規定建立處理數據包的隊列,並定義隊列中的數據包被發送的方式,從而實現對流量的控制。 TC模塊實現流量控制功能使用的隊列規定分為兩類,一類是無類隊列規定,另一類是分類隊列規定。無類隊列規定相對簡單,而分類隊列規定則引出了分類和過濾器等概念,使其流量控制功能增強。 無類隊列規定是對進入網絡設備(網卡)的數據流不加區分統一對待的隊列規定。使用無類隊列規定形成的隊列能夠接受數據包以及重新編排、延遲或丟棄數據包。這類隊列規定形成的隊列可以對整個網絡設備( 網卡)的流量進行整形,但不能細分各種情況。常用的無類隊列規定主要有pfifo _fast (先進現出)、TBF(令牌桶過濾器)、SFQ(隨機公平隊列)、ID (前向隨機丟包)等等。這類隊列規定使用的流量整形手段主要是排序、限速和丟包。 分類隊列規定是對進入網絡設備的數據包根據不同的需求以分類的方式區分對待的隊列規定。數據包進入一個分類的隊列後,它就需要被送到某一個類中,也就是說需要對數據包做分類處理。對數據包進行分類的工具是過濾器,過濾器會返回一個決定,隊列規定就根據這個決定把數據包送入相應的類進行排隊。每個子類都可以再次使用它們的過濾器進行進一步的分類。直到不需要進一步分類時,數據包才進入該類包含的隊列排隊。除了能夠包含其它隊列規定之外,絕大多數分類的隊列規定還能夠對流量進行整形。這對於需要同時進行調度(如使用SFQ)和流量控制的場合非常有用。 Principle 一 内核处理流程示意图 用户级程序^|+---------------+-------------------------------------+| Y ||-------> IP 协议栈||||||| Y ||| Y ||^||||/ ------> 转发…