首页 > 代码库 > 网络传输流量控制策略小结

网络传输流量控制策略小结


    这里所说的流量控制策略,适用于TCP可靠传输协议,可能不适合UDP传输协议。
一般来说,流量控制策略可分为应用层流量控制、传输层流量控制两种。
1、应用层流量控制
    也就是,在应用程序内部开发逻辑实现流量控制,根据带宽控制策略来决定是否进一步发送或接收。
    网络传输时,通过回调机制来动态显示带宽大小。动态显示带宽的时机或指标(固定以秒/毫秒为单位显示速率都会对性能有影响,也肯定不是最优的),根据需要动态显示速率:
    1》时间采样周期(如250毫秒)越细,流量控制越准确,但可能造成传输性能的降低。采样周期适当,能显示带宽变化的连续性,能满足使用者视觉上的需求;
    2》传输百分比采样,百分比发生变化后,才进行显示和处理。
    传输百分比发生变化后,能有带宽的变化;
    3》对传输控制事件的响应,如停止、暂停等
     应用开发中,因带宽限制要进行传输的停顿时,一般要使用sleep或时钟中断(定时器)。相对来说,sleep方法实现起来简单点,时钟中断方式会复杂一些,根据个人情况而定。
    sleep要精确到毫秒,最好不超过50毫秒,避免出现多sleep情况;sleep后,一定要实施校对时间,如果是多sleep了,则需要在下一个时间段内扣除,使得带宽控制平稳;
    另外,一定要注意,流量控制可能仅仅是一个传输可选项,不要因为流量控制的逻辑代码,而导致不需要流量控制时的传输性能的影响
2、传输层控制
    通过对网卡等硬件设备进行流量控制,实现TCP信息流的流量控制。前提时,没有对硬件设备有控制权,并且能区分出流经网络的应用流量

    带宽大小的计算策略:时间段内传输量/所花费时间,以250毫秒为单位,进行衡量。如1M/S,则每250毫秒,应该传输256K大小。如果超过256K,则将250毫秒剩余的时间sleep掉;再接着进行衡量下一个周期,经过几轮后,就会按照250毫秒对齐。

    使用带宽控制策略时,如果单次传输块大小固定,则可能会出现两种的策略对应机制:
    a)单次发送块大小>带宽控制大小
    b)单次发送块大小>带宽控制大小
    如果每次传输的块大小是实时计算(不固定)的,则对流量控制策略比较有利,不会出现这种情况,推荐使用这种方式,优点是灵活、可控、可扩展。