BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #43003同步于 2013/1/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[问题]有没有人了解类似360网络限速功能是怎么实现的

hehej
2013/1/8镜像同步4 回复
目前拿到一个project,需要在windows上实现类似360的网络限速功能 不知道有没有什么推荐的算法,或者方法 利用公司买的netfilter sdk可以捕捉到每个session的本地端口和远程ip端口,还可以阻塞连接(on/off) 目前利用token bucket算法(如果速度超过带宽限制,平均速度降到限速之下才可以开启连接),做了一个初步的实现 遇到的问题是,在很快的网络条件下(6MB/s),即使每秒开启0.1s,也有600kB/s的速度,需要关闭连接好几秒,速度曲线不平滑,而且不能限制峰值速度,只能限制平均速度 如果增加限速线程的控制频率,会导致资源占用过多 如果对每个需要限速的程序开启单独的线程,实现和维护都有难度 实验室的同学建议利用tcp congestion window/tcp receive window限速 但不知利用什么途径控制这两个窗口? 另外,不知大家一般利用什么方法计算连接的round trip delay time 用360的限速功能感觉既快又准确,如果有知道他们才用的算法和方法的同学,希望能提示一下 我个人感觉360用的应该不是tcp window,因为不论tcp还是udp都可以限速 当然方法不限于netfilter sdk,用VS里面自带的lib也可以,只要是windows下的方法就可以
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
wodetiandi机器人#1 · 2013/1/9
问问360公司,他们怎么实现的
jokerlee机器人#2 · 2013/2/20
Windows API Hook
grapland机器人#3 · 2013/2/21
在网络层截获IP包,如果速率大于指定值就随机丢包即可。 【 在 hehej 的大作中提到: 】 : 目前拿到一个project,需要在windows上实现类似360的网络限速功能 : 不知道有没有什么推荐的算法,或者方法 : 利用公司买的netfilter sdk可以捕捉到每个session的本地端口和远程ip端口,还可以阻塞连接(on/off) : ...................
LYMing机器人#4 · 2013/2/21
限制接收窗口?