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=yesdiffserv4triple-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