[Mikrotik] 利用RouterOS v7.5的fq_codel緩解光世代的緩衝膨脹

首先,請先了解甚麼是緩衝膨脹(bufferbloat)↓
https://zh.wikipedia.org/zh-tw/%E7%BC%93%E5%86%B2%E8%86%A8%E8%83%80

再來,請了解甚麼是fq_codel↓
https://www.jianshu.com/p/3b2e701f61ea

測試bufferbloat↓
https://www.waveform.com/tools/bufferbloat

或是利用speedtest.net看上傳/下載滿載時的ping↓
https://www.speedtest.net

這邊給大家一個不用關閉fasttrack,不用mangle標記封包,並同時使用queue tree的方法,
那就是queue parent必須指定在"interface"上(e.g. ether1~5, pppoe_out, bridge...),
然後packet mark要指定為"no-mark" (因為開啟fasttrack就無法用mangle標記封包)。
這是RouterOS唯一可以同時使用fasttrack和queue tree的方法。
https://wiki.mikrotik.com/wiki/Manual:IP/Fasttrack

不管光世代是浮動IP、假固定IP,多數光世代用戶都是用PPPoE Client的方式撥接上網,所以通常WAN都是插在"ether1",而LAN區域網路是設在虛擬的"bridge"上。

先去queue type手動新增一個fq_codel,其餘參數保持預設即可。
[Mikrotik] 利用RouterOS v7.5的fq_codel緩解光世代的緩衝膨脹

再到queue tree新增兩條規則,
一條控制上傳,parent=ether1,並設定fq_codel、no-mark和你申請的光世代上傳頻寬(e.g. 40M,100M,250M...)。
[Mikrotik] 利用RouterOS v7.5的fq_codel緩解光世代的緩衝膨脹

另一條控制下載,parent=bridge,並一樣設定fq_codel、no-mark和下載頻寬(e.g. 100M, 300M, 500M...)。
[Mikrotik] 利用RouterOS v7.5的fq_codel緩解光世代的緩衝膨脹

這樣就完成了,可以再回去測試bufferbloat看看。
[Mikrotik] 利用RouterOS v7.5的fq_codel緩解光世代的緩衝膨脹

緩衝膨脹只發生在頻寬滿載時(不管是用戶端還是來自ISP端),
並且bufferbloat會發生在光世代線路經過的任一設備上,
所以使用fq_codel目的是"緩解"客戶端吃滿頻寬時的卡頓,
盡量在公平、不丟包下維持整體的低延遲,
(e.g. 有人在區網掛BT、看Netflix,而你玩遊戲不想lag爆ping),
所以這並不能解決來自中華電信那端造成的不穩定。

設備較好的(e.g. RB4011, RB5009),可以玩玩看cake,
因為cake更細緻但較吃資源。
一般入門設備的(e.g. ac2, ac3, RB450Gx4...IPQ-4018/4019),
建議保留Fasttrack並使用fq_codel,避免CPU被吃滿。

附記:
這兩天剛升級RouterOS v7.5 stable,
發現光世代附的白圓盤WE410443-TC WIFI5 4T4R可以正常取得DHCP,
目前已經可以正常使用了,也可利用win10 CMD內建的ssh把2.4G SSID和5G SSID拆開,
ssh方法請自行google,中華電信死都不肯更新韌體解決。

=============================================================
(注意!!) 還有不要把頻寬設定為測速出來的最大頻寬,
正確應該是設定頻寬的90%~95%(合約是500M,測速通常會多5%=525M),
但中華電信的QOS在尖峰時段(e.g. 9pm~12am)有時會偷吃掉那5%甚至10%頻寬,
這樣fq_codel就會失效了。

附上犧牲Fasttrack使用simple queue+fq_codel的方法
文末有提示:"但要注意滿負載時的 CPU 使用率。 FQ-CoDel 可能會佔用大量資源"↓
https://scoop.co.za/blog/set-up-simple-queues-with-fq-codel-and-mikrotik-routerosv7
大推啊!
人品是做人最好的底牌.
yuusuke wrote:
設備較好的(e.g. RB4011, RB5009),可以玩玩看cake,
因為cake更細緻但較吃資源。
一般入門設備的(e.g. ac2, ac3, RB450Gx4...IPQ-4018/4019),
建議保留Fasttrack並使用fq_codel,避免CPU被吃滿。


好像不是這樣吧?

sch_cake 的簡報裡寫著,在 archer c7 (QCA9558) 的機器上 htb + fq_codel 沒辦法對 115Mbps 的頻寬做到 shaping 但是 cake 可以: https://www.bufferbloat.net/projects/attachments/150817135028_cake-battlemesh-v8.pdf

sch_cake 可以說是偏傻瓜型的,基本上甚麼都不設定就可以動。但是真的想要去調整,也會有很多參數可以微調。但是以 cake 的開發初衷來說是希望設定越簡單越好

題外話,我不認為 IPQ4018 有比 MT7621 還要虛,我家裡的機器用 MT7621 跑 Openwrt + SQM scripts 一整個順暢
chiouss wrote:
好像不是這樣吧?sch(恕刪)
這樣比也蠻妙的,因為兩個不同的平台效果也不一樣,
fq_codel確實可以在Mikrotik上shaping >115M,
但RouterOS v7本身就已經比v6還吃cpu了,
而且我拿來測試的頻寬是PPPoE 500/250,
外加50條filter rules和2500筆address-list,
fq_codel預設+fasttrack開啟+多線下載已經吃掉50% cpu,
cake預設+fasttrack開啟+多線下載已經吃到60% cpu,
單純跑速不做shaping+fasttrack關閉........這樣直接吃掉95%以上的ipq-4019,
內建wifi還都是關閉的(因為wireless沒HW offloading還是要吃cpu)。

這是RouterOS預設的cake↓


Mikrotik關於cake的參數↓
https://help.mikrotik.com/docs/display/ROS/Queues#Queues-CAKE

這邊有個RB450gx4(ipq-4019)開啟跟關閉Fasttrack的cpu使用率比較,
裡面還有RB5009使用RouterOS v7.3關閉Fasttrack的彩蛋↓
https://www.openos.org/threads/mikrotik-rb450gx4.4370/#post-60569

關於Mikrotik v7 cake和fq_codel實測的討論串可以參考看看↓
https://forum.mikrotik.com/viewtopic.php?t=178812

更詳細的Mikrotik cake vs fq_codel測試↓
https://forum.mikrotik.com/viewtopic.php?t=179307#p939048
測完我較傾於FQ.而且我查找後發現這不是最近才討論的,在十年前就有人討論過了.
人品是做人最好的底牌.
yuusuke
還有就是國外建築環境本來就跟台灣有差,光建築密度、隔間材質、WIFI互相干擾低,台灣公寓要怎麼比?別過度神化Mikrotik,到現在它wireless region跟capsman+wave2都還沒好
NeverGiveUp!!
我不是指環境,也沒有過度神化,環境這些都不是問題,重點是內部問題,你沒遇過設定都OK後就遭遇到類似近於無線阻斷的內網阻斷,不只無線被阻斷,連同內網也被阻斷.也別把家用品牌看太重,因為我就是家用過來人.
"光世代假固定IP,PPPoE撥接,WAN插在"ether1",
而LAN區域網路是設在虛擬的"bridge"上。"
光世代用戶已依照原po方法成功使用fq_codel讓BUFFERBLOAT GRADE " B " 變" A+"
不知是否可以另外教學光世代CAKE設定方法?,感謝~
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!