利用数据通道控制流量是常用的控速手段之一,下面我们详细介绍Panabit数据通道的运用。
1.数据通道
首先建立一个数据通道
数据通道建立好以后,在编辑策略的动作时,就会多一个”通道一”的动作
在策略中运用通道
如图中的策略,我们可以把应用放到这个通道内,这些应用共用”通道一”的带宽。”视频”、”下载”、”网页”它们下行速度之和,最终不能超过”通道一”的大小。
2.优先级
相信很多朋友在这里有个疑问,”视频”、”下载”、”网页”都在这个通道,如果这些应用都有流量的时候,带宽怎么分配呢?答案就是:抢!
数据包流量超过通道大小,就会有数据包被丢弃。这个时候通道对待每个数据包都是公平的,超过的数据包会被随机丢弃。在实际应用中,P2P数据包数量远远大于单点传输的数据包数量,P2P流量通过通道的几率就会大于单点传输的流量,因此P2P抢占通道的能力远胜于单点传输的应用。
事实上我们并不希望P2P抢占全部的通道,于是Panabit设计了优先级,给通道内的数据包不同优先级,来决定数据包抢占通道带宽的能力,而不是以数量取胜。
在策略中,我们给了”视频”、”下载”、”网页”不同的优先级,来决定它们抢占通道带宽的能力。优先级可设置1-6,1的能力最强,2其次,依次减弱,6最弱。
设置了优先级后,抢占通道带宽的能力完全由优先级决定,”网页”这类的单点传输的应用都能完胜”迅雷”这类P2P的应用。
3.保证带宽
在人为干预各种应用抢占通道带宽的能力后,新的问题产生了。优先级高的总是能抢占到通道带宽,优先级低的总被丢弃。例如,我想从服务器上下载一个500K的小文件,此时”网页”和”视频”也有在使用这个通道,而且它们的流量还把通道带宽占完了,于是优先级最低的”下载”完全得不到带宽,连500K的小文件都下载不了。这似乎对”下载”不公平。
为了解决这类不公平的问题。Panabit又加入了”带宽保证”。
建立好数据通道后,通过”编辑”按钮,我们能进一步的完善通道的设置。在这里可以给1-6的优先级设置保证带宽。如图,即使是优先最低的”下载”在通道满时也至少能抢占1000K的带宽,这样就避免了优先级低完全抢不到通道带宽的尴尬。
这1000K并不是优先级3的”下载”独占,当”下载”没流量时,”网页”和”视频”还是能使用这1000K的。当”下载”需要使用通道的带宽时,首先会使用这1000k的保证带宽,超过的部分就得排队了。
4.优先级0
现在我们对数据通道的介绍做一个回顾。为了方便控制整体流量,Panabit设计了数据通道;为了人为控制应用抢占数据通道带宽的能力,Panabit给通道增加了优先级;为了体现公平性,Panabit给优先级加上了保证带宽。到这里似乎数据通道表现得非常强大了。但是有个不可忽略的问题,那就是性能!
优先级其实的通过数据包排队来实现的,CPU指挥数据通道内的数据包排队并把排好队的数据包调度出数据通道。但是CPU还有很多活要干,比如收发数据接口的包等等。如果进入通道的数据包太多,CPU其它事情还没处理完,就会来不及指挥和调度优先级的队伍,就会导致延迟甚至丢包。目前通道优先级性能在200M—1G之间。注意!这是数据通道优先级的性能,不要和数据通道的性能搞混了。当优先级是0时,数据包进入数据通道是不排队的。数据通道最大是支持3G吞吐。
最开始的时候,数据通道没优先级概念,因此只是单纯使用通道来做限制时,请使用优先级0,让CPU轻松一些。
当数据通道中既有优先级1-6也有0的时候会发生什么事情呢?
1)通道没满,大家各行其道,互不影响;
2)通道满,数据通道首先保证有优先级的数据包通过,优先级0的数据包首先被丢弃;
3)通道没满,但是性能跟不上时,优先级0的能自由通过数据通道,有优先级的数据包就可能被丢弃了;
5.总结
1)数据通道是用来限制带宽的,是整体的限制。
2)实现优先,首先得保证数据包能到达Panabit。如果数据包在到达Panabit之前就被丢弃掉了,再如何设置优先级都是没用的。所有首要条件就是控制带宽不满。比如20M的线路,那么就要控制实际使用的带宽小于20M。否则数据包可能就会被ISP的限速设备丢弃。
3)每个数据通道是独立的,不同通道内的优先级互不相干。因此,设置了优先级的数据包必须在同一个通道内才有效果。
4)优先级的性能根据CPU的性能和使用环境而定,数据包调度不及时,会造成延迟或丢包,即使通道没满。所以在大流量的环境下并不适用。优先级的性能在200M-1G。
5)每个优先级可以设置一个保证带宽,保证带宽之和不能大于通道值。每个优先级在抢占通道带宽时,首先会使用自己优先级的保证带宽。各个优先级的保证带宽没用完的部分不占用通道的带宽。
6)规则使用通道时,如果规则使用了”继续”,则流量有可能被匹配多次,同一流量有可能会多次占用通道。
本文链接地址: https://danteng.org/panabit-flow-control-data-tunnel/