做个假设,,一个简单的环境,,单线对称线路,上下10M/S的网速, 为了更直观的表示,时间,都量化到1S。。 策略做3个优先级, 高。。游戏,网页,需求是2M/S 中。。在线视频 需求 5M/S 低。。 下载 需求4M/s 也就是网络能力是10M/S,1秒的时间内, 游戏网页。只需要0.2S就已经完成转发了。 在线视频需要0.5S,就完成了。。还剩下0.3s,,只够转发下载3M的流量,还有1M,被丢弃(因为缓存已经满了多的数据做丢弃处理) 另一个例子 策略做3个优先级, 高。。游戏,网页,需求是5M/S 中。。在线视频 需求 5M/S 低。。 下载 需求4M/s 这样的话1S的时间内,,只够满足 游戏和在线视频做转发,下载的,就全被饿死了,这时候,是不是应该提高带宽了? |
不明觉厉,等待技术同事讨论。 |
本帖最后由 chq00123 于 2013-10-26 20:43 编辑 那当然了,这只是程序设计的思路,要是随随便便就可以的话,那程序也太不值钱了。。实际上,还有很多东西没考虑进去,我只是想说明,,单纯的低级给高级让路,并不是很难实现的!~ 其实就这个单纯优先级控制的设计图,还有2个问题点没提到 1.缓存的容量是固定的。数据,进进出出,要怎么排列? 2.如何判断缓存内的数据已经全部转发完。 解决方法。。1.缓存在内存中的实际物理地址,是固定的。缓存物理地址的利用,采用循环的办法,就可以,也就是,每存进缓存一个数据,就用堆栈把这个地址保存起来,下次数据在存进来,就从下个地址存起。 转发出去的,同理。同时,还必须对缓存的地址做校对,看是否超出设定的缓存范围,一旦超出还要从缓存的第一个地址循环起,还要加入,存入和取出的数据的地址做比较。一旦2个地址相同,后面的数据全部丢弃,否则就会发生,数据还没转发出去,又被存入的覆盖掉。 2.这个就比较容易了。每存入一个数据,就在后面加个结束符,后面再存,就把结束符覆盖掉。并继续在末尾加个结束符。转发完成时,只要判断,下个数据是否是结束符,就可以知道数据是否全部转发完。 |
看似强大,但实现起来会有问题的 |
用一个成语来形容一下我此刻的心情:不明觉厉。 |
|小黑屋|手机版|Archiver|论坛规章制度|iKuai Inc. ( 京ICP备13042604号 )
GMT+8, 2024-9-28 15:20
Powered by Discuz! X3.3
© 2001-2024 Comsenz Inc.