-
-
Windows WFP stream layer怎么限速用户态发送数据的速度
-
发表于:
2020-8-23 17:40
3856
-
Windows WFP stream layer怎么限速用户态发送数据的速度
最近,在Stream layer层做数据拦截然后异步注入,发现在Stream拦截数据后,由于数据还没有去到TCPIP协议栈层,所以发送窗口没有减少;
在Stream block数据后,用户态send会返回成功,当被拦截的程序上传文件时,因为用户态程序调send函数没有减小发送窗口,导致数据程序发送非常,实际上数据还在内核。发送速度太快,导致内核缓冲区不够用,造成数据block丢失;所以想要一种办法,怎么限制程序的发送速度。
对于Stream层,微软文档也只是提供了inbound流的限速方法,但是没有提供outbound流的限速方法。
我尝试过在outbund ippacket层做丢包(发送窗口会减少),从而想达到用户态减慢发送速度的目的。但是发现调用 FwpsStreamInjectAsync时,数据并不会马上去到outbound ippacket哪一层,它会聚集了一堆数据后才一次性达到outbound ippacket层。所以这个方案也没有办法。outbound transport也试过,效果差不多的。
求大神给点思路~
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!