ROS QOS流量質量控制(轉貼)

/ ip firewall mangle
add chain=forward p2p=all-p2p action=mark-connection           new-connection-mark=p2p_conn passthrough=yes comment="" disabled=no
add chain=forward connection-mark=p2p_conn action=mark-packet           new-packet-mark=p2p passthrough=yes comment="" disabled=no
add chain=forward connection-mark=!p2p_conn action=mark-packet           new-packet-mark=general passthrough=yes comment="" disabled=no
add chain=forward packet-size=32-512 action=mark-packet new-packet-mark=small           passthrough=yes comment="" disabled=no
add chain=forward packet-size=512-1200 action=mark-packet new-packet-mark=big           passthrough=yes comment="" disabled=no
/ queue tree
add name="p2p1" parent=TEL packet-mark=p2p limit-at=2000000 queue=default           priority=8 max-limit=6000000 burst-limit=0 burst-threshold=0 burst-time=0s           disabled=no
add name="p2p2" parent=LAN packet-mark=p2p limit-at=2000000 queue=default           priority=8 max-limit=6000000 burst-limit=0 burst-threshold=0 burst-time=0s           disabled=no
add name="ClassA" parent=LAN packet-mark="" limit-at=0 queue=default priority=8           max-limit=100000000 burst-limit=0 burst-threshold=0 burst-time=0s           disabled=no
add name="ClassB" parent=ClassA packet-mark="" limit-at=0 queue=default           priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s           disabled=no
add name="Leaf1" parent=ClassA packet-mark=general limit-at=0 queue=default           priority=7 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s           disabled=no
add name="Leaf2" parent=ClassB packet-mark=small limit-at=0 queue=default           priority=5 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s           disabled=no
add name="Leaf3" parent=ClassB packet-mark=big limit-at=0 queue=default           priority=6 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s           disabled=no
1-8級優先級控制,數字越小優先級越高
LAN內網接口
TEL 外網接口
SMALL 小包 32-512字節        5級優先級
BIG 大包        512-1200字節         6級優先級
general 其它包 1200-1500字節        7級優先級
P2P類         8級優先,全侷限速 600KB/S下載
Leaf 子類
網絡

 

分層的令牌桶HTBapp

HTB (Hierarchical Token Bucket) is a classful queuing discipline that is useful for
applying different handling for different kinds of traffic. Generally, we can set only
one queue for an interface, but in RouterOS queues are attached to the main
Hierarchical Token Bucket (HTB) and thus have some properties derived from that
parent queue. For example, we can set a maximum data rate for a workgroup and
then distribute that amount of traffic between the members of that workgroup.
less

HTB是用於流量分類控制的經典理論。一般只對一個接口進行流量控制,但ROS使用了HTB理論,
好比說,能夠先限制一個工做組的流量而後在此工做組內部再一次細分流量。流量控制還挺複雜
的,神仙以爲。
tcp

Each class in the hierarchy can prioritize and shape traffic. There are 2 main
parameters in RouterOS :
* limit-at - data rate that is guaranteed to a class (CIR)
* max-limit - maximal data rate that is allowed for a class to reach (MIR)
ide

兩個主要參數
limit-at : 穩定速率
max-limit : 最大速率
性能

* CIR(Committed Information Rate) - the guaranteed data rate. It means that traffic
rate, not exceeding this value should always be delivered
* MIR(Maximal Information Rate) - the maximal data rate router will provide
大數據

CIR:保底速率。不超過這個的速率老是容許的
MIR:最大速率
網站

Each HTB class can be in one of 3 states, depending on data rate that it consumes:
每一個HTB層級都有三種狀態:綠、黃、紅(winbox中queue能夠看到三種顏色的圖標)
ui

* green - a class the actual rate of which is equal or less than limit-at. At this state,
the class is attached to self slot at the corresponding priority at its level, and is
allowed to satisfy its limit-at limitation regardless of what limitations its parents
have. For example, if we have a leaf class with limit-at=512000 and its parent has
max-limit=limit-at=128000, the class will get its 512kbps!
this

綠色:指當前速率小於或等於穩定速率(limit-at)。這個狀態下,當前層級由本身自行控制,不受
上級層級控制。好比說,若是某個層級設定的穩定速率爲512kbps,其上級層級的穩定速率設定爲
128kbps,那麼此層級在綠色狀態下享受512kbps的速率

* yellow - a class the actual rate of which is greater than limit-at and equal or less
than max-limit. At this state, the class is attached to the inner slot of the
corresponding priority of its parent's inner feed, which, in turn, maybe attached
to either its parent's inner slot of the same priority(in case the parent is also yellow),
or to its own level self slot of the same priority (in case the parent is green). Upon
the transition to this state, the class 'disconnects' from self feed of its level,
and 'connects' to its parent's inner feed

×××:批當前速率大於穩定速率但不大於最大速率。這個狀態下,當前層級由其上級層級控制(其
上級若是也處於×××狀態則繼續此規則,即由上級的上級控制)。

* red - a class the actual rate of which exceeds max-limit. This class cannot borrow
rate from its parent class

紅色:指當前速率超過了最大速率。此層級不能從其上級層級分得任何流量

Bursts
突發速率

Bursts are used to allow higher data rates for a short period of time. Every second,
the router calculates the average data rate of each class over the last burst-time
seconds. If this average data rate is less than burst-threshold, burst is enabled
and the actual data rate reaches burst-limit bps, otherwise the actual data rate falls
to max-limit or limit-at.

突發速率用於短期內的超高速率數據傳送。路由器每秒種都在計算前一時間段(burst-time)的平
均速率。若是平均速率低於設定的閥值(burst-threshold),就容許其使用突發速率(burst-
limit),不然就會下降到穩定速率或最大速率

Let us consider that we have a setup, where max-limit=256000, burst-time=8, burst-
threshold=192000 and burst-limit=512000. When a user is starting to download a
file via HTTP,we can observe such a situation: At the beginning the average data
rate over the last 8 seconds is 0bps because before applying the queue rule no
traffic was passed, using this rule. Since this average data rate is less than burst-
threshold (192kbps), burst is allowed. After the first second, the average data rate
is (0+0+0+0+0+0+0+512)/8 = 64kbps, which is under burst-threshold. After the
second second, average data rate is (0+0+0+0+0+0+512+512)/8 = 128kbps. After
the third second comes the breakpoint when the average data rate becomes larger
than burst-threshold. At this moment burst is disabled and the current data rate falls
down to max-limit(256kbps).


舉例說明:

假設咱們設置最大速率(max-limit)爲256k,時間段(burst-time)爲8秒,閥值爲192k,突發速率
(burst-limit)爲512k,當用戶下載文件時能夠觀察到:
開始下載的前8秒速率爲0,小於閥值192,因此容許達到突發速率即512;
1秒鐘後,前8秒的平均速率爲64(0+0+0+0+0+0+0+512)/8=64,仍然小於閥值192,因此繼續
使用突發速率512;
2秒鐘後,前8秒的平均速率爲(0+0+0+0+0+0+512+512)/8=128;
3秒鐘後,再次計算平均速率爲(0+0+0+0+0+512+512+512)/8=192,達到了閥值192,因此,
3秒鐘後此用戶已再也不容許使用突發速率,只能使用容許的最大速率了,即256kbps

設置最多3秒的突發速率
limit-at burst-threshold max-limit burst-limit burst-time
128 192 256 512 8s
128 384k 512 2048 16s

mss和MTU2008-03-03 23:53先說一段話。。

MTU與MSS值到底設置爲多少?
MTU: Maxitum Transmission Unit 最大傳輸單元

MSS: Maxitum Segment Size 最大分段大小

PPPoE: PPP Over Ethernet(在以太網上承載PPP協議)

[分析過程]
先說說這MTU最大傳輸單元,這個最大傳輸單元實際上和鏈路層協議有着密切的關係,讓咱們先仔細回憶一下EthernetII幀的結構DMAC+SMAC+Type+Data+CRC因爲以太網傳輸電氣方面的限制,每一個以太網幀都有最小的大小64bytes最大不能超過1518bytes,對於小於或者大於這個限制的以太網幀咱們均可以視之爲錯誤的數據幀,通常的以太網轉發設備會丟棄這些數據幀。(注:小於64Bytes的數據幀通常是因爲以太網衝突產生的「碎片」或者線路干擾或者壞的以太網接口產生的,對於大於1518Bytes的數據幀咱們通常把它叫作Giant幀,這種通常是因爲線路干擾或者壞的以太網口產生)。

因爲以太網EthernetII最大的數據幀是1518Bytes這樣,刨去以太網幀的幀頭(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗部分4Bytes(這個部門有時候你們也把它叫作FCS),那麼剩下承載上層協議的地方也就是Data域最大就只能有1500Bytes這個值咱們就把它稱之爲MTU。這個就是網絡層協議很是關心的地方,由於網絡層協議好比IP協議會根據這個值來決定是否把上層傳下來的數據進行分片。就比如一個盒子無法裝下一大塊麪包,咱們須要把麪包切成片,裝在多個盒子裏面同樣的道理。當兩臺遠程PC互聯的時候,它們的數據須要穿過不少的路由器和各類各樣的網絡媒介才能到達對端,網絡中不一樣媒介的MTU各不相同,就比如一長段的水管,由不一樣粗細的水管組成(MTU不一樣 )經過這段水管最大水量就要由中間最細的水管決定。

對於網絡層的上層協議而言(咱們以TCP/IP協議族爲例)它們對水管粗細不在乎它們認爲這個是網絡層的事情。網絡層IP協議會檢查每一個從上層協議下來的數據包的大小,並根據本機MTU的大小決定是否做「分片」處理。分片最大的壞處就是下降了傳輸性能,原本一次能夠搞定的事情,分紅屢次搞定,因此在網絡層更高一層(就是傳輸層)的實現中每每會對此加以注意!有些高層由於某些緣由就會要求我這個麪包不能切片,我要完整地面包,因此會在IP數據包包頭裏面加上一個標籤:DF(Donot Fragment)。這樣當這個IP數據包在一大段網絡(水管裏面)傳輸的時候,若是遇到MTU小於IP數據包的狀況,轉發設備就會根據要求丟棄這個數據包。而後返回一個錯誤信息給發送者。這樣每每會形成某些通信上的問題,不過幸運的是大部分網絡鏈路都是MTU1500或者大於1500。

對於UDP協議而言,這個協議自己是無鏈接的協議,對數據包的到達順序以及是否正確到達不甚關心,因此通常UDP應用對分片沒有特殊要求。

對於TCP協議而言就不同了,這個協議是面向鏈接的協議,對於TCP協議而言它很是在乎數據包的到達順序以及是否傳輸中有錯誤發生。因此有些TCP應用對分片有要求---不能分片(DF)。

花開兩朵,各表一枝,說完MTU的故事咱們該講講今天的第二個豬腳---PPPoE所謂PPPoE就是在以太網上面跑PPP協議,有人奇怪了,PPP協議和Ethernet不都是鏈路層協議嗎?怎麼一個鏈路層跑到另一個鏈路層上面去了,難道升級成網絡層協議了不成。其實這是個誤區:就是某層協議只能承載更上一層協議。爲何會產生這種奇怪的需求呢?這是由於隨着寬帶接入(這種寬帶接入通常爲Cable Modem或者xDSL或者以太網的接入)因爲以太網缺少認證計費機制而傳統運營商是經過PPP協議來對撥號等接入服務進行認證計費的,因此就出了這麼一個怪胎:PPPoE。(有關PPPoE的詳細介紹參見V大以及本站其餘成員的一些介紹文章,我就不囉裏囉唆的了)。

PPPoE帶來了好處,也帶來了一些壞處,好比:二次封裝耗費資源,下降了傳輸效能等等,這些壞處俺也很少說了,最大的壞處就是PPPoE致使MTU變小了以太網的MTU是1500,再減去PPP的包頭包尾的開銷(8Bytes),就變成1492。若是兩臺主機之間的某段網絡使用了PPPoE那麼就會致使某些不能分片的應用沒法通信。這個時候就須要咱們調整一下主機的MTU,經過下降主機的MTU,這樣咱們就可以順利地進行通信了。

固然對於TCP應用而言還有另外的解決方案。立刻請出今天第三位豬腳:MSS。MSS最大傳輸大小的縮寫,是TCP協議裏面的一個概念。MSS就是TCP數據包每次可以傳輸的最大數據分段。爲了達到最佳的傳輸效能TCP協議在創建鏈接的時候一般要協商雙方的MSS值,這個值TCP協議在實現的時候每每用MTU值代替(須要減去IP數據包包頭的大小20Bytes和TCP數據段的包頭20Bytes)因此每每MSS爲1460。通信雙方會根據雙方提供的MSS值得最小值肯定爲此次鏈接的最大MSS值。

介紹完這三位豬腳,咱們回過頭來看前言裏面的那個問題,咱們試想一下,若是咱們在中間路由器上把每次TCP鏈接的最大MSS進行調整這樣使得經過PPPoE鏈路的最大MSS值加上數據包頭包尾不會超過PPPoE的MTU大小1492這樣就不會形成沒法通信的問題,因此上面的問題能夠經過ip tcp adjust-mss 1452來解決,固然問題也能夠經過修改PC機的MTU來解決。

不改MSS會如何?有可能會出現部分網站打不開,例如陶寶,在線銀行什麼的。或者開網頁慢,均可能和MSS有關係的。
修改辦法(2927版本)
IP==>>Firwwall==>>Mangle==>>點+號==>>
General頁
Chain:forward
Protocol:tcp

Advanced頁
Tcpflags選SYN

Action頁
action:Change mss
new tcpmss:1472

關於MSS數值的多少,以及取值辦法~
ping 目標網站 -f -l 1500   而後看可否PING通,若是PING不通,就以4爲單位往下減,目標網站能夠是
你想訪問,但訪問不了,也能夠是其餘一些網站,這個要求很少。。
好比我PING 百度
ping www.baidu.com -f -l 1500
獲得如下提示:
程序代碼
C:\>ping www.baidu.com -f -l 1500

Pinging www.a.shifen.com [202.108.22.5] with 1500 bytes of data:

Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.

Ping statistics for 202.108.22.5:      Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), 這就說明,1500這個MSS數值不可取,須要往下了換,那麼就以4位單位往下減,減到通爲止,就是1500-4=???本身去算了。我這裏是1472才通的,因此我改的就是1472 程序代碼

相關文章
相關標籤/搜索