国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

在Linux中實現流量控制

2024-07-21 02:37:17
字體:
來源:轉載
供稿:網友

  摘要: linux從kernel 2.1.105開始支持QOS,不過,需要重新編譯內核。運行make config時將EXPERIMENTAL _OPTIONS設置成y,并且將Class Based Queueing (CBQ), Token BUCket Flow, Traffic Shapers 設置為 y ,運行 make dep; make clean; make bzilo,生成新的內核。
  Linux從kernel 2.1.105開始支持QOS,不過,需要重新編譯內核。運行make config時將EXPERIMENTAL _OPTIONS設置成y,并且將Class Based Queueing (CBQ), Token Bucket Flow, Traffic Shapers 設置為 y ,運行 make dep; make clean; make bzilo,生成新的內核。
  
    在Linux操作系統中流量控制器(TC)主要是在輸出端口處建立一個隊列進行流量控制,控制的方式是基于路由,亦即基于目的ip地址或目的子網的網絡號的流量控制。流量控制器TC,其基本的功能模塊為隊列、分類和過濾器。Linux內核中支持的隊列有,Class Based Queue ,Token Bucket Flow ,CSZ ,First In First Out ,PRiority ,TEQL ,SFQ ,ATM ,RED。這里我們討論的隊列與分類都是基于CBQ(Class Based Queue)的,而過濾器是基于路由(Route)的。
  
    配置和使用流量控制器TC,主要分以下幾個方面:分別為建立隊列、建立分類、建立過濾器和建立路由,另外還需要對現有的隊列、分類、過濾器和路由進行監視。
  
    其基本使用步驟為:
  
    1) 針對網絡物理設備(如以太網卡eth0)綁定一個CBQ隊列;
  
    2) 在該隊列上建立分類;
  
    3) 為每一分類建立一個基于路由的過濾器;
  
    4) 最后與過濾器相配合,建立特定的路由表。
  
    先假設一個簡單的環境
  
    流量控制器上的以太網卡(eth0) 的IP地址為192.168.1.66,在其上建立一個CBQ隊列。假設包的平均大小為1000字節,包間隔發送單元的大小為8字節,可接收沖突的發送最長包數目為20字節。
  
    假如有三種類型的流量需要控制:
  
    1) 是發往主機1的,其IP地址為192.168.1.24。其流量帶寬控制在8Mbit,優先級為2;
  
    2) 是發往主機2的,其IP地址為192.168.1.26。其流量帶寬控制在1Mbit,優先級為1;
  
    3) 是發往子網1的,其子網號為192.168.1.0,子網掩碼為255.255.255.0。流量帶寬控制在1Mbit,優先級為6。
  
    1. 建立隊列
  
    一般情況下,針對一個網卡只需建立一個隊列。
  
    將一個cbq隊列綁定到網絡物理設備eth0上,其編號為1:0;網絡物理設備eth0的實際帶寬為10 Mbit,包的平均大小為1000字節;包間隔發送單元的大小為8字節,最小傳輸包大小為64字節。
  
    ·tc qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit avpkt 1000 cell 8 mpu 64
  
    2. 建立分類
  
    分類建立在隊列之上。一般情況下,針對一個隊列需建立一個根分類,然后再在其上建立子分類。對于分類,按其分類的編號順序起作用,編號小的優先;一旦符合某個分類匹配規則,通過該分類發送數據包,則其后的分類不再起作用。
  
    1) 創建根分類1:1;分配帶寬為10Mbit,優先級別為8。
  
    ·tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 10Mbit rate 10Mbit maxburst 20 allot 1514 prio 8 avpkt 1000 cell 8 weight 1Mbit
  
    該隊列的最大可用帶寬為10Mbit,實際分配的帶寬為10Mbit,可接收沖突的發送最長包數目為20字節;最大傳輸單元加MAC頭的大小為1514字節,優先級別為8,包的平均大小為1000字節,包間隔發送單元的大小為8字節,相應于實際帶寬的加權速率為1Mbit。
  
    2)創建分類1:2,其父分類為1:1,分配帶寬為8Mbit,優先級別為2。
  
    ·tc class add dev eth0 parent 1:1 classid 1:2 cbq bandwidth 10Mbit rate 8Mbit maxburst 20 allot 1514 prio 2 avpkt 1000 cell 8 weight 800Kbit split 1:0 bounded
  
    該隊列的最大可用帶寬為10Mbit,實際分配的帶寬為 8Mbit,可接收沖突的發送最長包數目為20字節;最大傳輸單元加MAC頭的大小為1514字節,優先級別為1,包的平均大小為1000字節,包間隔發送單元的大小為8字節,相應于實際帶寬的加權速率為800Kbit,分類的分離點為1:0,且不可借用未使用帶寬。

  
    3)創建分類1:3,其父分類為1:1,分配帶寬為1Mbit,優先級別為1。
  
    ·tc class add dev eth0 parent 1:1 classid 1:3 cbq bandwidth 10Mbit rate 1Mbit maxburst 20 allot 1514 prio 1 avpkt 1000 cell 8 weight 100Kbit split 1:0
  
    該隊列的最大可用帶寬為10Mbit,實際分配的帶寬為 1Mbit,可接收沖突的發送最長包數目為20字節;最大傳輸單元加MAC頭的大小為1514字節,優先級別為2,包的平均大小為1000字節,包間隔發送單元的大小為8字節,相應于實際帶寬的加權速率為100Kbit,分類的分離點為1:0。
  
    4)創建分類1:4,其父分類為1:1,分配帶寬為1Mbit,優先級別為6。
  
    ·tc class add dev eth0 parent 1:1 classid 1:4 cbq bandwidth 10Mbit rate 1Mbit maxburst 20 allot 1514 prio 6 avpkt 1000 cell 8 weight 100Kbit split 1:0
  
    該隊列的最大可用帶寬為10Mbit,實際分配的帶寬為 64Kbit,可接收沖突的發送最長包數目為20字節;最大傳輸單元加MAC頭的大小為1514字節,優先級別為1,包的平均大小為1000字節,包間隔發送單元的大小為8字節,相應于實際帶寬的加權速率為100Kbit,分類的分離點為1:0。
  
    3. 建立過濾器
  
    過濾器主要服務于分類。一般只需針對根分類提供一個過濾器,然后為每個子分類提供路由映射。
  
    1) 應用路由分類器到cbq隊列的根,父分類編號為1:0;過濾協議為ip,優先級別為100,過濾器為基于路由表。
  
    ·tc filter add dev eth0 parent 1:0 protocol ip prio 100 route
  
    2) 建立路由映射分類1:2, 1:3, 1:4
  
    ·tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 2 flowid 1:2
  
    ·tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 3 flowid 1:3
  
    ·tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 4 flowid 1:4
  
    4.建立路由
  
    該路由是與前面所建立的路由映射一一對應。
  
    1) 發往主機192.168.1.24的數據包通過分類2轉發(分類2的速率8Mbit)
  
    ·ip route add 192.168.1.24 dev eth0 via 192.168.1.66 realm 2
  
    2) 發往主機192.168.1.30的數據包通過分類3轉發(分類3的速率1Mbit)
  
    ·ip route add 192.168.1.30 dev eth0 via 192.168.1.66 realm 3
  
    3)發往子網192.168.1.0/24的數據包通過分類4轉發(分類4的速率1Mbit)
  
    ·ip route add 192.168.1.0/24 dev eth0 via 192.168.1.66 realm 4
  
    注:一般對于流量控制器所直接連接的網段建議使用IP主機地址流量控制限制,不要使用子網流量控制限制。如一定需要對直連子網使用子網流量控制限制,則在建立該子網的路由映射前,需將原先由系統建立的路由刪除,才可完成相應步驟。
  
    5. 監視
  
    主要包括對現有隊列、分類、過濾器和路由的狀況進行監視。
  
    1)顯示隊列的狀況
  
    簡單顯示指定設備(這里為eth0)的隊列狀況
  
  ·tc qdisc ls dev eth0
  qdisc cbq 1: rate 10Mbit (bounded,isolated) prio no-transmit
  
    具體顯示指定設備(這里為eth0)的隊列狀況
  
  ·tc -s qdisc ls dev eth0
  qdisc cbq 1: rate 10Mbit (bounded,isolated) prio no-transmit
  Sent 7646731 bytes 13232 pkts (dropped 0, overlimits 0)
  borrowed 0 overactions 0 avgidle 31 undertime 0
  
    這里主要顯示了通過該隊列發送了13232個數據包,數據流量為7646731個字節,丟棄的包數目為0,超過速率限制的包數目為0。
  
    2)顯示分類的狀況
  
    簡單顯示指定設備(這里為eth0)的分類狀況
  
  ·tc class ls dev eth0
  class cbq 1: root rate 10Mbit (bounded,isolated) prio no-transmit
  class cbq 1:1 parent 1: rate 10Mbit prio no-transmit #no-transmit表示優先級為8
  class cbq 1:2 parent 1:1 rate 8Mbit prio 2
  class cbq 1:3 parent 1:1 rate 1Mbit prio 1
  class cbq 1:4 parent 1:1 rate 1Mbit prio 6
  
    具體顯示指定設備(這里為eth0)的分類狀況
  
  ·tc -s class ls dev eth0
  class cbq 1: root rate 10Mbit (bounded,
isolated) prio no-transmit
  Sent 17725304 bytes 32088 pkts (dropped 0, overlimits 0)
  borrowed 0 overactions 0 avgidle 31 undertime 0
  class cbq 1:1 parent 1: rate 10Mbit prio no-transmit
  Sent 16627774 bytes 28884 pkts (dropped 0, overlimits 0)
  borrowed 16163 overactions 0 avgidle 587 undertime 0
  class cbq 1:2 parent 1:1 rate 8Mbit prio 2
  Sent 628829 bytes 3130 pkts (dropped 0, overlimits 0)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 水富县| 江油市| 会理县| 宁南县| 乐山市| 林口县| 土默特左旗| 增城市| 台州市| 永州市| 哈巴河县| 元谋县| 教育| 肇源县| 瑞安市| 东乌珠穆沁旗| 赞皇县| 乳源| 曲靖市| 南昌市| 延安市| 武宣县| 辽中县| 西宁市| 牙克石市| 海安县| 桂平市| 离岛区| 隆化县| 阳春市| 自治县| 阿克| 香格里拉县| 苍梧县| 大丰市| 剑川县| 宣武区| 永昌县| 鸡西市| 镇江市| 太仆寺旗|