当前位置: 技术问答>linux和unix
请问小数据包转发的瓶颈是哪里
来源: 互联网 发布时间:2016-03-02
本文导语: 不到300字节的数据包转发的效率,远比4096数据转发的效率低下得多,这里的瓶颈到底是在哪里? send/recv系统调用? memcpy? TCP 20字节的包头? | 最近没有看过这方面的东西。只能大概讲一下自...
不到300字节的数据包转发的效率,远比4096数据转发的效率低下得多,这里的瓶颈到底是在哪里?
send/recv系统调用? memcpy? TCP 20字节的包头?
send/recv系统调用? memcpy? TCP 20字节的包头?
|
最近没有看过这方面的东西。只能大概讲一下自己的看法。有什么地方不对请见谅。
1、在数据量一定的前提下,数据包越小无用数据就会越多。认为包头是无用数据,因为包头对上层程序来说是没有用的。
2、我用的memcpy是采用DMA传输的,不知道你用的是不是。如果是的话,启动DMA传输是要花费一定时间的。如果你是按数据包的长度来做memcpy的话,在数据量一定的前提下,那么数据包越长效率越高。
1、在数据量一定的前提下,数据包越小无用数据就会越多。认为包头是无用数据,因为包头对上层程序来说是没有用的。
2、我用的memcpy是采用DMA传输的,不知道你用的是不是。如果是的话,启动DMA传输是要花费一定时间的。如果你是按数据包的长度来做memcpy的话,在数据量一定的前提下,那么数据包越长效率越高。
|
而且对于小分组,TCP的处理如下:
1.接收方接收到分组的时候并不马上返回确认.而是等到接收方产生发送数据的时候才返回确认.
2.Negal算法,允许网络上最多一个未被确认的分组,发送方只有接收到上个分组的确认以后才
发送下一个分组
对于成块数据,TCP的处理如下:
1.TCP允许发送多个分组,但也会产生经受时延的确认,确认是对收到的多个分组的确认.也就是
说一次可以确认多个分组.
1.接收方接收到分组的时候并不马上返回确认.而是等到接收方产生发送数据的时候才返回确认.
2.Negal算法,允许网络上最多一个未被确认的分组,发送方只有接收到上个分组的确认以后才
发送下一个分组
对于成块数据,TCP的处理如下:
1.TCP允许发送多个分组,但也会产生经受时延的确认,确认是对收到的多个分组的确认.也就是
说一次可以确认多个分组.
|
在TCP-IP详解一书上提到:小分组会增加拥塞出现的可能.