顯示具有 cake 標籤的文章。 顯示所有文章
顯示具有 cake 標籤的文章。 顯示所有文章

2026年10月31日 星期六

routeros x86 cake 相關 建議

 

 

cake 設定公司lan 網段

dns server 如果是非公司網段,那就不要設定

gemini SI 說明 這會比cake 更優先 ,而且不受限

2026年9月9日 星期三

routeros x86 使用cake 必須知道的問題

 

前提,這是以官方的資訊來設定,但也有些旁門,但我建議用官方的做法,旁門,有時候沒有被流量塑型到,也是設定不下300次的經驗


1. 

queue type 中

a. overhead and mpu 這二個選項,多問chatgpt ,gemin claucd 他們的答案有時候不一樣,要給你的環境,是fttb or pppoe . 固定ip 和 pppoe 封包不一樣. 

b.trr 要設定100 不然在臺灣,設定 30 會有youtube 上傳,變得至少慢10倍的問題

c. diffserv 設定diffserv4 的話,在mangle 也要設定相對,不然,你設定了,但沒有封包符合,等於沒意義,mangle 可以設定 dns or http的封包優先. 


nat 祖傳的部份, , wash 不打勾。

很多ai 都會給你答案

下載的部份,一樣,ai 給的大部份一樣

d.重點  bnadwidth limit 不要設定,這個 給 simple queues 這個設定來做

不然你會出現,設定了,沒有意義,把sqm 上傳會破,等於拿不到A 或是只是突然拿到A 


2.  simple 的設定。

1.上下頻寬就自己填,沒什麼大問題

2.重點。Dst. 的部份,AI 會告訴你有的沒有的,但你只要知道,通常網路設定,小企業等級,Dst. 設定是你的Wan port 

如果沒有設定,會造成你  winbox 只能使用mac address  的方式登入,而且至少5套AI 都找不到答案



gemin 剛好問對問題,給了我答案


【客觀事實:MikroTik 官方文件對 dst 屬性的規範】

在 MikroTik 官方文件(Manual:Queue / Simple Queues)中,關於 dst 的預設值與定義如下:

  1. 官方手冊預設值:

    • dst 的預設值是 留空(dst="")。

    • 官方範例在多數單純拓撲(如僅有單一 WAN、單一 LAN 的家用環境)中,確實通常不填寫 dst。

  2. 官方對「留空(未指定)」的行為定義:

    • 當 dst 留空時,代表目的地為 0.0.0.0/0(任意對象)。

    • Simple Queue 的方向性計算是:

      • 上行(Upload):來自 target 的封包(src = target)。

      • 下行(Download):送往 target 的封包(dst = target)。

【架構深度剖析:為什麼官方說可以不設,你在「xxxx」上不設卻會死鎖?】

官方「不需要設定 dst」的前提是:路由器只負責單純的轉發(Forwarding),不包含同網段本機服務與容器。而在你的主機「8964」上,不設定 dst 會直接引發嚴重的核心衝突:

1. 路由器本機管理流量(IP-WinBox)被誤判為「下載流量」

  • 你的路由器本機 IP 為 192.168.11.1,管理 PC 位於 192.168.11.x。

  • 當 PC 連線 WinBox(TCP 8291)時,路由器在 Local Output 鏈回傳 ACK 封包:

    $$\text{Source: } 192.168.11.1:8291 \quad\longrightarrow\quad \text{Destination: } 192.168.11.x$$
  • 這個封包的目的地是 192.168.11.x,完全符合 target=192.168.11.0/24!

  • 當 dst 留空時:排程器將這條內網的回應封包認定為「網際網路下載流量」,強行塞進 cake-veetime-down 佇列!

  • 後果:cake-veetime-down 配置了 cake-wash=yes、diffserv4 與 triple-isolate。內網極低延遲(<0.5ms)的高頻 TCP 8291 握手封包遭到 CAKE 洗刷標記並強制排隊,直接導致 TCP 握手超時破裂,IP-WinBox 斷線死鎖(只能走 L2 的 MAC-WinBox 逃生)。

2. LAN 存取本機 Docker 服務被外網頻寬限速(誤殺)

  • 你的「8964」運行了大量 Docker 容器(AdGuard Home 在 172.17.0.xx,Immich 在 192.168.11.xx,HA 在 192.168.11.xx)。

  • 當內網 PC 備份相片到 Immich 或串流 Jellyfin 時,若 dst 留空,這些本應在 LAN 內部以 2.5G/10G 線速傳輸的流量,全部會被扣進 CAKE 佇列,被限縮至 45M/90M。

【工程結論:為什麼必須設定 dst=ether3-wan?】

當明確宣告 dst=ether3-wan 時:

  • 上行:只有從 target 發出、且確定從 ether3-wan 出口路由至外網的封包才算上行。

  • 下行:只有從 ether3-wan 進入、送達 target 的封包才算下載。

  • 本地與內網旁路:內網 PC 與路由器本機(192.168.11.x)通訊時,出口介面是 bridge-lan 而非 ether3-wan,完全不符合佇列條件,直接 Bypass 繞過 CAKE。IP-WinBox 恢復微秒級原生線速,連線穩定不斷線。

總結:官方文件說「不需設定」是針對最陽春的拓撲;在具備本機容器、高頻本機服務與多介面轉發的專業環境下,dst=ether3-wan 是劃定外網邊界的關鍵參數。


重點

1. Dst 要設定 wan port 

2.頻寬要在 max limit ,即 simple queues 的選項中設定,不然沒意義

3. types設定 設定 diffserv4  在mangle 也要有相對的設定,不然設定也沒有意義。

exp 設定tos  ef 是 adguardhome 的 ip 或是也可以設定port  ,或是設定 tcp syn













 

2025年11月12日 星期三

routeros cake 封包最佳化


 簡單 實用

 

 

/queue type
add name=cake-down kind=cake cake-bandwidth=95M cake-diffserv=diffserv4 cake-mpu=64 cake-overhead=18
add name=cake-up kind=cake cake-bandwidth=48M cake-diffserv=diffserv4 cake-mpu=64 cake-overhead=18
 

 cake-bandwidth:略低於實際 ISP 速度,避免 bufferbloat

cake-diffserv=diffserv4:小封包優先(DNS/VoIP/遊戲)

cake-mpu=64:保護小封包低延遲

cake-overhead=18:補正 Ethernet/PPPoE 標頭  

  95m 和48m 是我這邊的,你自己要改

 

mss clamp  wan/lan  

# LAN → WAN
add action=change-mss chain=forward out-interface=wanport protocol=tcp tcp-flags=syn new-mss=clamp-to-pmtu comment="LAN→WAN Auto MSS"

# WAN → LAN
add action=change-mss chain=forward in-interface=wanport protocol=tcp tcp-flags=syn new-mss=clamp-to-pmtu comment="WAN→LAN Auto MSS"


  • 雙向 LAN ↔ WAN 自動調整 MSS

    放在 forward chain 最上方

    重要,二條不能合併成一條。chatgpt 原本說能,後來設定沒有效果 

     




  • 2.3 Packet Marking(上下行封包標記給 queue tree) 

     

    /ip firewall mangle 

    add action=mark-packet chain=forward in-interface=wanport new-packet-mark=download passthrough=yes comment="download: WAN→LAN"
    add action=mark-packet chain=forward out-interface=wanport new-packet-mark=upload passthrough=yes comment="upload: LAN→WAN"
     

     

    passthrough=yes 確保封包能被後續規則處理

    download/upload 對應 queue tree 的 packet-mark

    in-interface 要改你們自己的

     

     

    邏輯

    a.建立 mangle 

     b.建立 queue types

    使用 Kind cake 自動智慧化 "SQM"  

    c.用 queues > tree 設定 global 上下




    更新

     /queue type
    add cake-ack-filter=filter cake-autorate-ingress=yes cake-diffserv=diffserv8 cake-mpu=64 cake-overhead=18 \
        kind=cake name=cake-down
    add cake-ack-filter=filter cake-autorate-ingress=yes cake-diffserv=diffserv8 cake-mpu=64 cake-overhead=18 \
        kind=cake name=cake-up

    前提 cpu 效能高


    以上是 chatgpt 

    以下是 G3 最佳化

    cake-flowmode 是 CAKE 演算法的核心,決定了路由器如何將流量分類並進行「隔離」。

    簡單來說,這決定了是「讓每台電腦公平」,還是「讓每個應用程式(連線)公平」。

    以下是各個模式的詳細說明與適用場景:

    1. triple-isolate (三重隔離) —— ★★★ 強烈推薦 (預設值)

    這是 CAKE 最強大的模式,也是我建議您使用的模式。

    • 運作方式:它會同時檢查「來源 IP」、「目的 IP」以及「通訊協定 (5-tuple)」。它將流量分為「大流量 (Bulk)」和「小流量 (Sparse)」。

    • 效果:

      • 即使是同一台電腦,正在全速下載 BT (大流量),同時在玩遊戲或 Ping (小流量)。

      • CAKE 會識別出這兩個是不同的「流」,並讓遊戲的小封包優先通過,不被自己的下載塞住。

    • 適合:您的需求(極限使用 + 保護小流星)。它能防止單一應用程式霸佔所有頻寬。


    2. dual-srchost (雙重來源主機)

    • 運作方式:主要根據 來源 IP (Source IP) 來進行公平分配,同時也會看目的 IP。

    • 效果:強制讓發送端「每台設備」獲得公平的頻寬,不管該設備開了多少條連線。

    • 適合:上傳 (Upload) 方向。

      • 防止家中某一台手機在備份照片到雲端時,把其他人的上傳頻寬全部吃光。

    3. dual-dsthost (雙重目的主機)

    • 運作方式:主要根據 目的 IP (Destination IP) 來進行公平分配,同時也會看來源 IP。

    • 效果:強制讓接收端「每台設備」獲得公平的頻寬。

    • 適合:下載 (Download) 方向。

      • 防止某一台電腦在下載 Steam 遊戲時,導致其他人在看 Netflix 變模糊。它會強迫下載者讓出一部分頻寬給其他人。


    4. flowblind (流量盲) —— ❌ 不推薦

    • 運作方式:不區分流量是誰發的、去哪裡的。先進先出 (FIFO) 或簡單的隨機分配。

    • 後果:如果有一個 BT 下載開了 500 個連線,它就會搶贏只有 1 個連線的網頁瀏覽。

    • 適合:幾乎不適合現代家用/商用網路,除非你想節省極微小的 CPU 資源。


    5. src-ip (僅來源 IP) & dst-ip (僅目的 IP)

    • 運作方式:這是 dual- 模式的簡化版,只看單一方向的 IP hash。

    • 缺點:在大量 NAT 環境下,雜湊 (Hash) 可能會碰撞,導致某些運氣不好的 IP 被誤判在一起排隊。

    • 建議:既然你是 x86,效能足夠,直接用 dual- 系列或 triple-isolate 即可,不需要用這種簡化版。


    總結:針對您的選擇建議

    您提到**「不需要平均分配,極限使用網路即可,但不要塞住小流星」**。

    這句話的技術翻譯就是:不要針對「設備 (Host)」做死板的公平限制,而是要針對「連線行為 (Flow)」做智慧管理。

    • 最佳選擇:triple-isolate

      • 原因:它允許單一設備跑滿 100% 頻寬(如果沒有其他人在用)。但只要有新的「小流星」(例如遊戲封包)進來,它會被識別為一個新的「稀疏流 (Sparse Flow)」,直接插隊優先處理。

    指令再次確認 (針對您的需求):

    Mikrotik
    /queue type
    set [ find name=cake-aggressive-down ] cake-flowmode=triple-isolate
    set [ find name=cake-aggressive-up ] cake-flowmode=triple-isolate

     

    /queue type
    add cake-diffserv=diffserv4 cake-memlimit=256.0MiB cake-mpu=64 cake-nat=yes cake-overhead=18
    cake-rtt-scheme=internet kind=cake name=cake-aggressive-down
    add cake-ack-filter=filter cake-diffserv=diffserv4 cake-memlimit=256.0MiB cake-mpu=64 cake-nat=
    yes cake-overhead=18 cake-rtt-scheme=internet cake-wash=yes kind=cake name=cake-aggressive-up

     

    套用在 simple 就可以了
    記得 overhead 每個都不一樣,pppoe 我的是 dhcp server 配發 wan ip


    這部份設定好,就已經有SQM 最佳了,不用管其他

     

     

    配合 mangle 小封包優先  
    add action=change-dscp chain=postrouting comment="Boost Small TCP ACK \E5\8A\A0\E9\80\9F TCP ACK (
    \E5\B0\8F\E5\B0\81\E5\8C\85) - \E9\98\B2\E6\AD\A2\E4\B8\8A\E5\82\B3\E6\BB\BF\E8\BC\89\E6\99\82
    \E4\B8\8B\E8\BC\89\E5\B4\A9\E7\9B\A4" new-dscp=46 out-interface-list=WAN packet-size=0-128
    protocol=tcp tcp-flags=ack


    Boost TCP SYN 加速 TCP SYN - 優先處理連線建立 (Handshake)
    add action=change-dscp chain=postrouting comment="Boost TCP SYN \E5\8A\A0\E9\80\9F TCP SYN - \E5

    \84\AA\E5\85\88\E8\99\95\E7\90\86\E9\80\A3\E7\B7\9A\E5\BB\BA\E7\AB\8B (Handshake)" new-dscp=
    46 out-interface-list=WAN protocol=tcp tcp-flags=syn

    沒得改了
    小封包優先 不塞車

    花了大概6小時一斷測試