RouterOS的流量控制(QoS/PCQ)

要在RouterOS上實作QoS是不難的

實作之前首先要先知道什麼是PCQ (Per Connection Queue)

說的白話一點,PCQ就是一個最佳化後的QoS系統

如果你對PCQ的詳細技後有興趣可以到這邊觀看技術文件

強烈建議一定要去看一下PCQ的技術文件,裡面有很多很好的觀念

如果要實作PCQ可以參考這篇文章PCQ Examples

如果你有在RouterOS上啟用Web-Proxy,而且要使用PCQ的話請參考
Queue with Masquerading and Internal Web-Proxy

0

PCQ除了可以實作一般的限流外,也可以配合Burst這個參數來讓網頁開啟更順暢

怎麼說呢?我舉個例子:

假設我們想讓使用者下載檔案時速度限制在10KB/s,但是如果連開網頁也限制在10KB/s,豈不是等到瘋掉。

這時候Burst這個參數就派上用場了。我們知道一般網頁的檔案都很小,下載不需要花費很多時間。而一般的檔案都很大,下載需要花很多時間。

這時候我們是不是可以多一個功能,在一開始的時候速度限制在50KB,

但是如果這個連線一直持續下載超過5MB時,就開始限速10KB/s,該怎麼做呢?就是用前面所說的Burst參數

在RouterOS中 Winbox 新增Queue Tree的介面如下

其中Queue Type 的設定如下圖示所

如果你需要更詳細的PCQ參數設定,可以參考這份文件 MikroTik RouterOS Workshop QoS Best Practice

20101114_1

0

這邊補充說明一下~~RouterOS裡 1M bits/s = 1,000,000 bits/s = 125,000 Bytes/s = 122KB/s

Max Limit :常態時的速度限制

Burst Limit:瞬時的最高速度限制

Burst Threshold:平均流量(需與Burst Time搭配使用)到達多少時開始停止使用Burst Limit

以上面這張圖片的設定檔來做說明的話

****************************************************************
一開始流量可以衝到4M bits/s

但是如果流量維持在 1Mbits/s 以上,而且在5秒內下載量達到 610KB (1M bits/s * 5)時

就停止使用Burst Limit而開始啟用Max Limit,此後速度會一直限速在2M bits/s
****************************************************************

以圖片來說明的話,流量會像下面的圖一樣

綠色的線就是使用者可以感受到的網路速度

24 thoughts on “RouterOS的流量控制(QoS/PCQ)

  1. 好文,敢问阁下实际使用效能如何?望不吝赐教
    鄙人在ros3.22上配置的pcq限速全无效果,是否pcq与htb不能相容?

    1. 使用上完全正常,限速也有實際上的效用
      無效果可能是ROS設置上有問題,可以再詳查看看
      我PCQ與HTB混用,也是正常的,但有序順優先的問題,要注意

    1. 目前RouterOS我僅用在家庭式的網路,大約3~4台PC。
      限度有動作時,CPU一定會往上,往上多少則看硬體的效能而定。
      PING如果有往上的話,建議可以調整ICMP的優先權為最高。

  2. 这个可以对不同的网络段做区分吗?有的IP段不限,有的限制。

    jason:
    可以,在mark packet時,就可以用網段來判斷要不要打上mark
    借此來讓QOS區別

  3. 如访问google不限流量,访问百度限制流量

    jason:
    一樣可以,只是難點在於google的ip區段與百度的ip區段要怎麼取得

  4. 請問如果是多線(二線),加上PCC負載平衡之後,PCQ 的上傳及下傳速率設
    定 MAX Limit 值,是兩線速率加總值,還是單線最大值?
    另外,Simple Queues及Queues Tree,都是在做限速的,這二個有什麼不同
    ,謝謝。

    1. 1.PCQ上設速限的話,原則上是設「整體」速限,即是流入ROS或流出ROS的整體流量,如果你有多條線的話,可能要考慮到單條上限的問題,因為有可能單條吃滿流量了,另一條還是空的,所以怎麼設定,可能要考量當時現場網路環境。
      需要更詳細的資料的話可以參考http://wiki.mikrotik.com/wiki/Manual:Queues_-_PCQ

      2.Simple Queues顧名思意,就是讓你做「簡單」的限速,不用搞一堆設定。
      而Queues Tree可以提供你更細膩的限速設定,像是依port、ip…等,透過mangle可以讓你有更多的條件判斷
      要注意的是如果你2個地方都有設定的話,則Queues Tree優先權大於Simple Queues

  5. :for chen from=2 to=253 do={/queue simple add name=(“chen” . $chen) dst-address=(“192.168.0.” . $chen) limit-at=256000/128000 interface=all max-limit=1000000/256000 burst-limit=2000000/512000 burst-threshold=1000000/256000 burst-time=10s/10s}

    Hi 我手邊有一個script,我想更改她,我的頻寬是50M/5M,用戶最小8人,最大16人。我的需求是所有p2p要限速成2M/256K,一般時候每個ip限速在8M/512K,但我想讓瞬間流量可以達到15M/512K,維持5S,我是不是要將script改成

    :for chen from=2 to=253 do={/queue simple add name=(“chen” . $chen) dst-address=(“192.168.0.” . $chen) limit-at=200000/256000 interface=all max-limit=8000000/512000 burst-limit=15000000/512000 burst-threshold=8000000/512000 burst-time=5s/5s}

  6. to lo:
    看起來是可行的,你可以實際測試看看。

    不過依你這個設定可能對P2P的封包沒有任何作用,
    設上去後是針對該IP所有的流量(含P2P)。

  7. 茶包大人,請問要對一特定ip,按週一至週五06:00-21:00頻寬正常, 21:00-06:00縮小剩10bps,週六日06:00-23:00頻寬正常, 23:00-06:00縮小剩10bps, 要如何撰寫script ?

  8. To Jim:
    只是單純針對特定ip這種情境下,我建議你使用Queue然後配合裡面的Time參數來達成就好。

    詳細的細節可以參考http://wiki.mikrotik.com/wiki/Manual:Queue#Simple_Queues

  9. 中華小烏龜 > RB450G > 室友PC*3
    沒有設定RB450G 的PPPoE撥接,使用者自行手動撥接
    問題來了,Queues不管怎麼設定,就是起不了任何作用
    也進去Queue Tree設定,完全沒有反應,有可能是這台RB450G晶片燒壞了嗎?

  10. to 新手:

    一但由使用者用PC自行撥接時,此時封包便不過經過RB450G了。

    RB450G充其量也只是個HUB的功能,自然設Queues也不會有任何作用了。

    要使用Queues的功能,一定要讓RB450G主控所有的網路,不要讓使用者自行撥接。

  11. ok,我設定PPPoe了,QoS有成功
    也順便建置PPPoE Server,但當使用者手動重新撥接,要如何抓取外網新ip?
    目前我建立PPPoE Server,使用者都必須輸入帳號,密碼,也就是跟一般家裡使用的PPPoE撥接一樣
    但問題來了,當中斷連線時,然後再度連線時,似乎不能像以前一般家庭用的那樣,自動去抓新的IP
    導致有某些論壇不能去,因為會鎖IP,我希望能夠像以前那樣,自動抓取外網的新IP
    請問這要如何設定?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *