Re: Sequence Number Validation Bug Fixes 0/2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



| > With regard to not updating the Ack Number, I remember having seen something
| > related earlier. There is a relationship between the current sending rate, the
| > Ack Ratio, the cwnd, and the Sequence Window. The Ack window is advanced by the
| > GSS and depends on the local value of the Sequence Window. RFC 4340, 7.5.2
| > recommends 5 * max_packets_per_RTT as guideline for Sequence Window.
| > 
| > When I looked at this earlier I noted that the dynamic update of Ack Ratio,
| > cwnd, and Sequence Window (which are all inter-related, but are controlled
| > by different code paths) does not produce the expected interaction, therefore
| > Ack Ratio is currently always 1 and Sequence Window is also static and does
| > not change throughout the connection. 
| > 
| > It may be that both these shortcuts cause the behaviour you observed. The
| > Ack Ratio update is disabled in net/dccp/feat.c:dccp_hdlr_ack_ratio(), but
| > there is currently no code to predict (guess) what the sending rate will
| > be for the next 5 RTTs -- if such a heuristic is possible.
| 
| Interesting, but I don't think that's what I'm seeing.
| 
| What I'm noticing is that the DCCP sender doesn't update it's ack
| numbers very often. In examining packet captures, it is typical for DCCP
| to send 20-60 packets with the same ack number (If I increase the ack
| and seq validity windows to 1000, I've seen 200 packets with the same
| ack number).
| 
Depending on the type of link (duplex or half-duplex as in WiFi) and the 
application sending rate, this might even be normal.

In 7.5.2, it is suggested to set the Sequence Window to 5 * packets/RTT where
packets/RTT is the expected maximum number of packets to be sent in one RTT. If
the Sequence Window value is very much larger than this guideline, it could be
that there are no big chances in the acknowledgment number.

But this is only a guess - I think it requires to spend some time with your
tool and/or wireshark traces to see what is going on.


| Since the receiver should ack every packet it gets, I would think that
| we should see very few packets (1-2) sent before a new ack packet comes
| and updates the GSR and hence the outgoing packet's ack numbers.
| 
I think this implicitly refers to cwnd/pipe in CCID-2 which take care of the
window flow control. There is a relationship between cwnd and Ack Ratio (there
are already some comments in ccid2_change_l_ack_ratio, which resulted from
earlier tests which showed that Ack Ratio and cwnd have a relationship.

Since cwnd and rtt determine packets/RTT, this should also allow to derive the
right value for Sequence Window. But this has not been worked out satisfactorily
yet, there is indeed room for more work here.

| Some debugging output (printk at every send and receive) seems to
| indicate that the sending and receiving are happening in large chunks
| and not in small slices (we send 50 packets, then receive 20 packets,
| etc).
| 
Nowadays multiple packets are serviced per interrupt. I have seen similar things
in CCID-3, but these things seem to depend on the link-layer and perhaps also
the network driver, comparing different configurations helps.
--
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [IETF DCCP]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux