iKuai爱快流控路由

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2873|回复: 13
打印 上一主题 下一主题

[其他] 数据转发低优先级给高优先级让道的程序设计图

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-26 14:58:27 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 chq00123 于 2013-10-26 22:52 编辑

如图,同时,为了防止高优先级的一直占用网络,可以加入一个接口,用来手动设置每个优先级的最低保证带宽和最大占用带宽(最好是百分比的)

当然,cpu的运行速度很快,应该没有必要,每转发一个包就立马判断高优先级的是否还有数据,,这样cpu的转发效率会比较低,可以转发一定的数量,再判断。

新建位图图像.jpg (172.22 KB, 下载次数: 30)

新建位图图像.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
14#
 楼主| 发表于 2013-10-26 23:35:04 | 只看该作者
小C 发表于 2013-10-26 22:32
不明觉厉,等待技术同事讨论。

:$  我1.不是做网络的,2.不是程序员。这些不过是课堂学的皮毛,看到论坛挺活跃的,就发出来让大家有点谈资而已!~~~
13#
 楼主| 发表于 2013-10-26 23:10:55 | 只看该作者
GFree_Wind 发表于 2013-10-26 22:56
不需要占满,就可以饿死。

做个假设,,一个简单的环境,,单线对称线路,上下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的时间内,,只够满足 游戏和在线视频做转发,下载的,就全被饿死了,这时候,是不是应该提高带宽了?
12#
发表于 2013-10-26 22:56:50 | 只看该作者
chq00123 发表于 2013-10-26 22:44
保证带宽,1%~100% 手动设置,当然,策略可以自己调整,没人会把大流量的p2p,下载,网页视频,做到高优 ...

不需要占满,就可以饿死。
11#
 楼主| 发表于 2013-10-26 22:44:25 | 只看该作者
GFree_Wind 发表于 2013-10-26 22:31
实现低级给高级让路,确实不难。

难的是,实现完成以后的实际效果。你这个设计中,怎么保证低优先级不被 ...

保证带宽,1%~100% 手动设置,当然,策略可以自己调整,没人会把大流量的p2p,下载,网页视频,做到高优先级吧,,要是,游戏,网页浏览什么的高优先级,都会把带宽占满,导致低优先级的饿死,那也该升级带宽了。。
10#
发表于 2013-10-26 22:32:23 | 只看该作者
不明觉厉,等待技术同事讨论。
9#
发表于 2013-10-26 22:31:40 | 只看该作者
chq00123 发表于 2013-10-26 20:22
那当然了,这只是程序设计的思路,要是随随便便就可以的话,那程序也太不值钱了。。实际上,还有很多东西 ...

实现低级给高级让路,确实不难。

难的是,实现完成以后的实际效果。你这个设计中,怎么保证低优先级不被饿死呢?如果用保证带宽,这个带宽是多少呢?这些都是要考虑的。另外真的使用最小带宽保证的话,确实浪费。
8#
 楼主| 发表于 2013-10-26 20:22:24 | 只看该作者
本帖最后由 chq00123 于 2013-10-26 20:43 编辑
GFree_Wind 发表于 2013-10-26 19:41
看似强大,但实现起来会有问题的

那当然了,这只是程序设计的思路,要是随随便便就可以的话,那程序也太不值钱了。。实际上,还有很多东西没考虑进去,我只是想说明,,单纯的低级给高级让路,并不是很难实现的!~


其实就这个单纯优先级控制的设计图,还有2个问题点没提到
                                                     1.缓存的容量是固定的。数据,进进出出,要怎么排列?
                                                     2.如何判断缓存内的数据已经全部转发完。
          解决方法。。1.缓存在内存中的实际物理地址,是固定的。缓存物理地址的利用,采用循环的办法,就可以,也就是,每存进缓存一个数据,就用堆栈把这个地址保存起来,下次数据在存进来,就从下个地址存起。  转发出去的,同理。同时,还必须对缓存的地址做校对,看是否超出设定的缓存范围,一旦超出还要从缓存的第一个地址循环起,还要加入,存入和取出的数据的地址做比较。一旦2个地址相同,后面的数据全部丢弃,否则就会发生,数据还没转发出去,又被存入的覆盖掉。
                            2.这个就比较容易了。每存入一个数据,就在后面加个结束符,后面再存,就把结束符覆盖掉。并继续在末尾加个结束符。转发完成时,只要判断,下个数据是否是结束符,就可以知道数据是否全部转发完。
7#
发表于 2013-10-26 19:41:27 | 只看该作者
看似强大,但实现起来会有问题的
6#
发表于 2013-10-26 19:27:55 | 只看该作者
用一个成语来形容一下我此刻的心情:不明觉厉。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|论坛规章制度|iKuai Inc. ( 京ICP备13042604号 )

GMT+8, 2024-11-11 19:00

Powered by Discuz! X3.3

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表