首页
社区
课程
招聘
Windows WFP stream layer怎么限速用户态发送数据的速度
发表于: 2020-8-23 17:40 3856

Windows WFP stream layer怎么限速用户态发送数据的速度

2020-8-23 17:40
3856

最近,在Stream layer层做数据拦截然后异步注入,发现在Stream拦截数据后,由于数据还没有去到TCPIP协议栈层,所以发送窗口没有减少;

 

在Stream block数据后,用户态send会返回成功,当被拦截的程序上传文件时,因为用户态程序调send函数没有减小发送窗口,导致数据程序发送非常,实际上数据还在内核。发送速度太快,导致内核缓冲区不够用,造成数据block丢失;所以想要一种办法,怎么限制程序的发送速度。

 

对于Stream层,微软文档也只是提供了inbound流的限速方法,但是没有提供outbound流的限速方法。

 

我尝试过在outbund ippacket层做丢包(发送窗口会减少),从而想达到用户态减慢发送速度的目的。但是发现调用 FwpsStreamInjectAsync时,数据并不会马上去到outbound ippacket哪一层,它会聚集了一堆数据后才一次性达到outbound ippacket层。所以这个方案也没有办法。outbound transport也试过,效果差不多的。

 

求大神给点思路~


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
inbound流的限速方法 怎么弄的
2020-8-24 10:25
0
雪    币: 200
活跃值: (398)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
killpy inbound流的限速方法 怎么弄的
微软defer stream是延迟回复ACK实现的,,或者自己在inbound ippacket丢包都可以
2020-8-24 19:35
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
有代码吗 参考一下  
2020-8-28 15:09
0
游客
登录 | 注册 方可回帖
返回
//