• Tuong Lien's avatar
    tipc: improve TIPC throughput by Gap ACK blocks · 9195948f
    Tuong Lien authored
    During unicast link transmission, it's observed very often that because
    of one or a few lost/dis-ordered packets, the sending side will fastly
    reach the send window limit and must wait for the packets to be arrived
    at the receiving side or in the worst case, a retransmission must be
    done first. The sending side cannot release a lot of subsequent packets
    in its transmq even though all of them might have already been received
    by the receiving side.
    That is, one or two packets dis-ordered/lost and dozens of packets have
    to wait, this obviously reduces the overall throughput!
    
    This commit introduces an algorithm to overcome this by using "Gap ACK
    blocks". Basically, a Gap ACK block will consist of <ack, gap> numbers
    that describes the link deferdq where packets have been got by the
    receiving side but with gaps, for example:
    
          link deferdq: [1 2 3 4      10 11      13 14 15       20]
    --> Gap ACK blocks:       <4, 5>,   <11, 1>,      <15, 4>, <20, 0>
    
    The Gap ACK blocks will be sent to the sending side along with the
    traditional ACK or NACK message. Immediately when receiving the message
    the sending side will now not only release from its transmq the packets
    ack-ed by the ACK but also by the Gap ACK blocks! So, more packets can
    be enqueued and transmitted.
    In addition, the sending side can now do "multi-retransmissions"
    according to the Gaps reported in the Gap ACK blocks.
    
    The new algorithm as verified helps greatly improve the TIPC throughput
    especially under packet loss condition.
    
    So far, a maximum of 32 blocks is quite enough without any "Too few Gap
    ACK blocks" reports with a 5.0% packet loss rate, however this number
    can be increased in the furture if needed.
    
    Also, the patch is backward compatible.
    Acked-by: default avatarYing Xue <ying.xue@windriver.com>
    Acked-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: default avatarTuong Lien <tuong.t.lien@dektech.com.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9195948f
node.h 4.85 KB