• Gerrit Renker's avatar
    dccp: support for the exchange of NN options in established state 1/2 · d6916f87
    Gerrit Renker authored
    In contrast to static feature negotiation at the begin of a connection, this
    patch introduces support for exchange of dynamically changing options.
    
    Such an update/exchange is necessary in at least two cases:
     * CCID-2's Ack Ratio (RFC 4341, 6.1.2) which changes during the connection;
     * Sequence Window values that, as per RFC 4340, 7.5.2, should be sent "as
       the connection progresses".
    
    Both are non-negotiable (NN) features, which means that no new capabilities
    are negotiated, but rather that changes in known parameters are brought
    up-to-date at either end.
    
    Thse characteristics are reflected by the implementation:
     * only NN options can be exchanged after connection setup;
     * an ack is scheduled directly after activation to speed up the update;
     * CCIDs may request changes to an NN feature even if a negotiation for that
       feature is already underway: this is required by CCID-2, where changes in
       cwnd necessitate Ack Ratio changes, such that the previous Ack Ratio (which
       is still being negotiated) would cause irrecoverable RTO timeouts (thanks
       to work by Samuel Jero).	   
    Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    Signed-off-by: default avatarSamuel Jero <sj323707@ohio.edu>
    Acked-by: default avatarIan McDonald <ian.mcdonald@jandi.co.uk>
    d6916f87
dccp.h 16.7 KB