• Marcelo Ricardo Leitner's avatar
    sctp: align MTU to a word · 3822a5ff
    Marcelo Ricardo Leitner authored
    SCTP is a protocol that is aligned to a word (4 bytes). Thus using bare
    MTU can sometimes return values that are not aligned, like for loopback,
    which is 65536 but ipv4_mtu() limits that to 65535. This mis-alignment
    will cause the last non-aligned bytes to never be used and can cause
    issues with congestion control.
    
    So it's better to just consider a lower MTU and keep congestion control
    calcs saner as they are based on PMTU.
    
    Same applies to icmp frag needed messages, which is also fixed by this
    patch.
    
    One other effect of this is the inability to send MTU-sized packet
    without queueing or fragmentation and without hitting Nagle. As the
    check performed at sctp_packet_can_append_data():
    
    if (chunk->skb->len + q->out_qlen >= transport->pathmtu - packet->overhead)
    	/* Enough data queued to fill a packet */
    	return SCTP_XMIT_OK;
    
    with the above example of MTU, if there are no other messages queued,
    one cannot send a packet that just fits one packet (65532 bytes) and
    without causing DATA chunk fragmentation or a delay.
    
    v2:
     - Added WORD_TRUNC macro
    Signed-off-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3822a5ff
sctp.h 18.2 KB